FPGA设计略讲
来源:互联网 发布:php去除重复数组值 编辑:程序博客网 时间:2024/05/17 17:56
问:就是我们在 延时效率 上没有什么经验,后时序仿真时由于不同步的问题也产生了0的输出,所以我们不知道如何对其进行时间、面积、功耗上的一个优化及其权衡 ?
答:fpga一般前仿就行了,后仿结果和前仿结果应该一致。如果不一致,则可能是代码中有些不可实现的语句(例如测试语句),属于设计错误。timing和area是一对矛盾:为
了优化timing,需要了解如何适当地插入寄存器,将一个复杂的组合逻辑变成pipeline。如果你的fpga型号逻辑资源够用,暂时不需要优化area。至于功耗,老实说在FPGA设
计时你省不了多少,设计好坏功耗区别不大,不信你可以用ise自带的功耗仿真软件看看。所以,重点关注timing(即性能),timing满足后可以适当地优化area和power。
问:1、我们在后仿真时出现了一个如下的警告:
at 2.750 (3): Warning: /X_FF SETUP High VIOLATION ON I WITH RESPECT TO CLK;Expected := 0.115 ns; Observed := 0.1 ns; At : 2.75 ns,这个就应该是时钟不同步产生
的,而这个代码的逻辑在前仿真里面验证了是正确的,现在的问题可能是时序方面没有达到设计的要求,我们所想的是添加时钟约束来达到这个数据输入和时钟的同步。做时序
约束的时候有什么好的建议,如何才能让我的设计在时序方面达到一个比较好的效果 2、另外我们觉得timing这个问题应该核心就在于延时上,而这个延时则要求代码的一些设
计技巧以减少延时,如如何设计才能尽可能减少LUT个数,降低逻辑级数等,以及IO输入输出上的延迟,而我们的问题就在于不熟悉代码和具体物理映射之间的关系,当然我们
也在尽可能找寻相关的知识,所以就只能一步步的摸索,而没有一个明确的标准或者说方向?
答:1. 如果你的目标是跑100MHz(周期10ns),你就把“周期约束”改成8~9ns(留点余量)
问:第一个问题我能不能理解成实际值会略小于理论值,所以通过留点余量来保证实际效果,余量具体是多少则是经验所得或者大量测试所得了?
答:是的。余量根据经验设置就可以了,80-90%的余量就行。
问:第二个问题我们也主要就是在时序逻辑上的延迟,触发器和寄存器他们之间的逻辑级数上有点不知所措,我们可以通过pipeline来解决这里面的问题?另外除了周期约束,
应该还会跟偏移约束有关吧~
答:跟offset约束没有太大关系,offset约束一般加在输入输出io上。你们的ip lookup逻辑,数据包是从mac过来,mac都是xilinx自己的core,你们不太可能涉及修改io部分的逻
辑,所以不会有io部分的timing问题。自己写的逻辑,频率跑不上去,一般都是组合逻辑延时太大,加pipeline就行了。
问:物理器件上的频率和我们设置的频率应该只是一种映射上的关系吧,具体到时候要在物理器件上跑的话,它的频率还是按照fpga板子上的来?
答:是的。fpga上跑的时钟是你板子上输入时钟的倍频或者分频(通过DCM or pll)。如果你的逻辑跑出来的频率小于系统用的主时钟频率,逻辑就会出现时序问题,根本跑不
通;必须保证逻辑实现达到的时钟频率,高于所用的系统时钟。
总结:(参考http://www.21ic.com/app/eda/201203/109947_3.htm)
如何提高电路工作频率
我们电路的工作频率主要与寄存器到寄存器之间的信号传播时延及clock skew有关。在FPGA内部如果时钟走长线的话,clock skew很小,基本上可以忽略, 在这里为了简
信号的传播时延包括寄存器的开关时延、走线时延、经过组合逻辑的时延(这样划分或许不是很准确,不过对分析问题来说应该是没有可以的),要提高电路的工作频率
我们先来看开关时延,这个时延是由器件物理特性决定的,我们没有办法去改变,所以我们只能通过改变走线方式和减少组合逻辑的方法来提高工作频率。
1.通过改变走线的方式减少时延。
上面我们讲了可以通过加约束来提高工作频率,但是我们在做设计之初可万万不可将提高工作频率的美好愿望寄托在加约束上,我们要通过合理的设计去避免出现大的组合逻
状态机就是这么一个例子,我们不能通过往状态译码组合逻辑中加入流水。如果我们的设计中有一个几十个状态的状态机,它的状态译码逻辑将非常之巨大,毫无疑问,这极有
总结:提高工作频率的本质就是要减少寄存器到寄存器的时延,最有效的方法就是避免出现大的组合逻辑,也就是要尽量去满足四输入的条件,减少LUT级联的数量。我们可以
- FPGA设计略讲
- 略讲类型转换
- 略讲BeautifulSoup
- 略讲基于cnn的人脸识别模型的网络结构和度量设计
- 设计模式略谈
- 第三章:主要讲了FPGA设计的功耗优化方法
- Java 执行全流程略讲
- Java中策略设计模式
- 讲设计
- 利用FPGA着手设计
- fpga的vhdl设计
- FPGA设计流程
- FPGA设计经验教训杂谈
- FPGA 5 分频设计
- FPGA数据传输模块设计
- FPGA设计 问题一
- FPGA设计小结
- xilinx FPGA设计流程
- EditText的高度跟随输入法改变
- 【转载】C# winform在两个子窗体间传递参数
- 空结构体大小问题,0 or 1!
- LeetCode OJ | Two Sum(java版)
- 把自己做的程序放在Tomcat里面的3种方法
- FPGA设计略讲
- Android核心分析 之二方法论探讨之概念空间篇
- Knockout.js随手记(2)
- mini2440 驱动ds18b20
- Web Service
- opencv 宏
- 在StringGrid中每行添加一个选择框(checkbox)
- 谷歌技术"三宝"之BigTable
- 【android开发】手机应用管理器的实现之获取应用列表(一)