微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 如何用FPGA实现10ms的延时?

如何用FPGA实现10ms的延时?

时间:10-02 整理:3721RD 点击:
使用的CLK=100MHz,在FPGA实现延时一般就是计数,10ms的话就得从0计到999999。---这是我的想法。
可是我看到某位高手是这么做的:先对100MHz工作时钟分频,产生1MHz的时钟,再对1MHz的时钟计数来实现10ms的延时。综合时出现下面的警告:
Warning: Found 1 node(s) in clock paths which may be acting as ripple and/or gated clocks -- node(s) analyzed as buffer(s) resulting in clock skew
Info: Detected ripple clock "INT_Control:INT_Control_inst|clk_1M" as buffer
但是高手的做法占用的逻辑资源小一些。
哪位高高手给分析一下?

用1MHz的时钟做使能,仍然采用100M时钟做计数

高手的说法是:用1MHz的时钟计数产生的counter小一些,用100MHz的时钟产生的counter很大,counter的位数过多的话可能综合的时候会出问题,比如综合不过去,时序不满足。
另外此处的延时是用来滤波的,用1MHz的话,本身就会滤掉一些杂波。

经验不足 对这些还没有较深刻的体会   我现在的原则是只能实现功能就行 要学习的东西还好多啊

呵呵,100M和1M的时钟就差7bit,影响应该没那么大。如果考虑时序的话,可分成2级counter来实现。

5# pptiger
哦 2级counter  谢谢

学习了,我现在对时序还是很模糊

学习了。

时钟使能,学习

无所谓吧,看你要什么精度了

学习了,呵呵

100M到1M一般也是counter降下来的。分不分级差别不大。分得不好占资源更多。

二级counter不会减少资源的
相反跟一级的比起来还会增加一定的延迟吧

学习了

在资源充足的情况下,一般的设计中不要将同步的全局时钟进行简单分频。
按照某位台湾老大的说法: 时钟和reset是神圣的信号,一般不要乱碰。呵

学习中

可分成2级counter来实现。用1MHz的时钟做使能,仍然采用100M时钟做计数.
受教了.
我总结一下吧:
方案一,高速时钟计数
方案二,时钟分频,低速时钟计数.
方案三,2级counter来实现,等于时钟分频,低速时钟用作第二级计数器使能信号.
方案一,是代码简明,但有高时钟运行时,多位处理的问题.逻辑出错的可能性加大.
方案二,第二计数器时钟占用时钟布线资源.但好处也是明显的,减少了高时钟运行的位数,逻辑出错的可能性可能性减少.
方案三,单一时钟,逻辑出错的可能也减少了,但也占用了使能信号的布线资源(当然这个比时钟布线要求低一点).
并且第二计数器也是高时钟运行,相对逻辑出错比第二个方案可能性大一点.

学习了。谢谢

学习了

1# psd0208
学习

学习了,呵呵

路过,学习。

用1MHz的时钟做使能,仍然采用100M时钟做计数!
正解,就不会有warning了!

学习学习

学习了,有收获

用1MHz的时钟做使能,仍然采用100M时钟做计数!
这个是正解

100Mhz到1Mhz,怎么分的频?计数器分频的话,还是比较大。资源分频后的1Mhz的信号当时钟,应该当成ripper时钟。所以会有警告。

PLL to implement

那种分频成异步电路了

计数所用的寄存器数目是一定的

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top