[Actel FPGA] FPGA实现信号延时的方法

[复制链接]
 楼主| 蹦蹦车 发表于 2009-3-20 10:51 | 显示全部楼层 |阅读模式
FPGA实现信号延时的方法汇总:<br />1、门延时数量级的延时(几个ns),可用逻辑门来完成,但告诉综合器不要将其优化掉(不精确,误差大,常常不被推荐)。比如用两个非门(用constraint&nbsp;来告诉synthesizer&nbsp;不要综合掉这些逻辑)。<br />2、使用delay&nbsp;cell,lcell。<br />3、采用更快的时钟,通过计数器来实现,对于比较小的延时,用两个DFF&nbsp;级联就可以。<br />4、用fifo&nbsp;或ram&nbsp;实现。<br />5、通过移位寄存器实现,延迟的时间和移位寄存器的位数有关。<br />6、使用负时钟驱动DFF来获得半个时钟周期的延时。<br />7、使用合适的buffer甚至用几个buffer的串联。<br />8、VHDL&nbsp;Component&nbsp;Declaration:<br />COMPONENT&nbsp;LCELL<br />PORT&nbsp;(a_in&nbsp;:&nbsp;IN&nbsp;STD_LOGIC;<br />a_out:&nbsp;OUT&nbsp;STD_LOGIC);<br />END&nbsp;COMPONENT;<br />9、在寄存器赋值时加一点延时对仿真有好处,可以完全消除竞争现象。<br />比如这样的逻辑:<br />always&nbsp;@(posedge&nbsp;clk)<br />abc_r&nbsp;&lt=&nbsp;#`HOLD_DELAY&nbsp;abc_nxt;<br />是有利于仿真的。<br />编辑注:对这点持保留态度。<br />10、在综合时将忽略所有的延时语句。<br /><br />Westor:<br />&nbsp;&nbsp;&nbsp;&nbsp;异步电路产生延时的一般方法是插入一个Buffer、两级非门等,这种延时调整手段是不适用于同步时序设计思想的。首先要明确一点HDL语言中的延时控制语法,例如:&nbsp;#5&nbsp;a&lt=4'b0101;其中的延时5个时间单位,是行为级代码描述,常用于仿真测试激励,但是在电路综合是会被忽略,并不能启动延时作用。同步时序电路的延时一般是通过时序控制完成的。换句话说,同步时序电路的延时被当作一个电路逻辑来设计。对于比较大的和特殊定时要求的延时,一般用高速时钟产生一个计数器,根据计数器的计数,控制延时;对于比较小的延时,可以用D触发器打一下,这种做法不仅仅使信号延时了一个时钟周期,而且完成了信号与时钟的初次同步,在输入信号采样和增加时序约束余量中使用。<br /><br />Cherrydu:<br />&nbsp;&nbsp;&nbsp;&nbsp;如果要实现一个“可综合”的信号延时(若干个时钟周期),比如给信号reset&nbsp;让其下降沿延时若干周期,以用什么方法实现呢?我是用Verilog&nbsp;来编这个程序的,我曾经试过在reset&nbsp;上升沿到来时,用数时钟数目的方法实现延时,可是在Verilog&nbsp;下,异步方法无法实现这个功能,同步的方法,if&nbsp;语句不能嵌套两个沿的情况.<br /><br />Rush:<br />&nbsp;&nbsp;&nbsp;&nbsp;不用嵌套两个沿,触发条件只有CLK&nbsp;即可,然后在下面检测RESET&nbsp;信号,等他下降沿也就是由1&nbsp;变为0&nbsp;时(IF&nbsp;RESET=&quot;0&quot;)开始转入另外一个状态,然后在新状态中计数。<br /><br />Darkage:<br />&nbsp;&nbsp;&nbsp;&nbsp;altera&nbsp;的一个lcell&nbsp;的延时并不是固定的,而是要看你将lcell&nbsp;的位置放在那里,两个lcell&nbsp;的距离越远,延时就越大,不同的类型芯片,不同的级别,不同的温度都是不一样的,这些是要考虑到的。两个lcell&nbsp;的延时可以从1&nbsp;个多的ns&nbsp;都10&nbsp;多个ns&nbsp;都可以做到的,要是对于环境条件要求不是很严格的时候,可以考虑这种方法,否则就要考虑其他的方案,或者做一些折中了。<br /><br />丁丁:<br />&nbsp;&nbsp;&nbsp;&nbsp;用Xilinx&nbsp;器件中的LUT&nbsp;实现SRL16&nbsp;的功能,也就是1&nbsp;个查找表实现16&nbsp;级时延,替代16&nbsp;个寄存器,可以大大节省资源。<br />
ntkernel 发表于 2009-4-16 23:28 | 显示全部楼层

学习了

感谢楼主分享
usber 发表于 2009-5-9 12:53 | 显示全部楼层

见过了,不粗

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

本版积分规则

23

主题

106

帖子

0

粉丝

23

主题

106

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部