完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
SDRAM数据手册有如张时序要求图。 如何使SDRAM满足时序要求? 方法1:添加时序约束。由于TPCB和时钟频率是固定的,我们可以添加时序约束,让FPGA增加寄存器延时、寄存器到管脚的延时,从而使上述满足建立时间和保持时间要求。 方法2:添加随路时钟
如上图所示,信号a是在时钟clk时钟域产生的信号。sdram_clk是与clk同源、频率相同、相位不同的时钟信号。当sdram_clk输出作为sdram的工作时钟,通过调整sdram_clk的相位就能调整时序,从而满足建立时间和保持时间的要求。 那么sdram_clk如何产生呢?可以通过PLL来产生,PLL可以保证频率相同、相位偏移量,所以该系统的结构如图:
晶振过来的fpga_clk经过PLL,产生两个时钟clk和sdram_clk,clk作为sdram接口模块的工作时钟,而sdram_clk则直接送给SDRAM,作为SDRAM的工作时钟。 以上2种方法有什么优缺点?如何取舍? 方法1是比较正规的传统方法,不用再产生时钟。但调试起来麻烦,这是由于时钟约束是比较飘渺的东西,不知道有没有起作用(也有可能自己约束错了而不知道,也有可能约束太紧而满足不了)。 方法2调试起来简单,PLL设置简单,出错可能性小。通过不断调整相位,最终肯定可以正确通信。缺点也明显,接口一多,每个都要做随路时钟就浪费了。 最近一直在做时序约束,总结一下时序约束过程。 (1)根据时序约束报告找到相关路径。看是什么原因导致的违规。违规的原因有可能是路径本身需要多周期约束,或者程序代码if嵌套太多,判断条件太长,组合逻辑乱用等。如果是代码问题,看是否能优化设计。能够通过timeQuest发现时序的不足,重新优化自己的设计,而不是一味的改变约束命令,这才是TimeQuest存在的最大意义 (2)像SDRAM,DDR,MAC核这种设计,可以通过PLL位移时钟,达到改变输入输出延时的效果 其他总结: get_registers 对应多周期约束; get_ports 对应时钟约束 get_nets 对应IO约束 get_clocks 对应跨时钟约束 做时序约束还是要多参考官方文档,多做一些官方的参考设计,细心,耐心优化自己的设计。做了时序约束,才发现自己原来的设计有很多不合理的地方,有些逻辑设计一定要注意。 |
||
相关推荐
|
||
838 浏览 0 评论
矩阵4x4个按键,如何把识别结果按编号01-16(十进制)显示在两个七段数码管上?
1040 浏览 0 评论
871 浏览 0 评论
1906 浏览 0 评论
482 浏览 0 评论
1290 浏览 28 评论
5473 浏览 113 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 17:51 , Processed in 0.647383 second(s), Total 78, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号