2778|0

114

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【转】FPGA寄存器自动化配置核心设计技巧 [复制链接]

本博文设计思想采用明德扬至简设计法。之前都是通过一些完整的案例来分享设计心得,而这篇文章以需要配置多个寄存器的场景讲述核心设计技巧。

    在设计案例时发现,经常会配置比较复杂的IP核或驱动一些接口进而操作外设。此时,为了让外设或IP核正常工作,需要对其内部多个寄存器进行适当配置来保证在所需模式下正常工作。我们一般先设计接口模块或IP核顶层文件,之后通过控制模块按照先后顺序自动给出所需指令,如读写等(下面的讲述以只有读写指令为例)。接口模块或IP核顶层模块收到指令后完成相应的操作。

    第一个问题:如何实现多个寄存器且每个寄存器多个指令的自动化配置?

    我们可以在控制模块中建立一个“配置表”,把读写指令以及相应的地址和待写入数据保存其中,然后通过计数器进行指令扫描。这里需要两级计数器,第一级计数一个寄存器的指令数,第二级计数器记录已经操作过的寄存器个数。配置表以always组合逻辑中case语句块形式给出,使用寄存器计数值区分不同寄存器。区分出待操作寄存器后根据操作计数器解析出读写指令。

    第二个问题:当控制模块给出指令时,接口模块或IP核一定能有时间响应么?

    这是我们设计时需要深思熟虑的问题:如何才能保证给出的指令一定会被下一模块有效地响应?为了实现这一目的,可以在控制(配置)模块和时序接口模块或IP核顶层模块之间放置一个接口衔接模块,结构如下:



    根据上述需求定义衔接模块功能:在下游模块准备好后才让上游模块ctrl给出下一命令,否则等待。并完成读出的有效数据送到上游模块的任务。很简单,下游模块输出给控制模块一个信号rdy,当它为高电平时代表当前没有指令或者上一指令已响应完成。控制模块中指令计数器的原有计数条件和rdy==1条件逻辑与就完成了上述功能。这里需要特别注意的是:rdy信号必须以组合逻辑形式给出,否则由于rdy信号晚一拍输出,上游模块会出现误认情况。核心代码如下:

    控制模块中:







    衔接模块中:





    到此,寄存器自动化配置中两个重点问题已然解决。本文是我在设计摄像头图像采集和以太网两个案例过程中总结所得。本人认为这种设计思想非常具有通用性,并不仅仅局限于这两个案例,因此单独提出,以备今后回顾和重用。


转自:博客园-没落骑士

    想要了解更多技术文章,欢迎关注www.mdy-edu.com/product/list/35


此帖出自FPGA/CPLD论坛
点赞 关注
个人签名官网:www.mdy-edu.com
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表