在verilog中使用negedge时钟有什么好处?
现在我想了解我们在verilog中使用negedge时钟的优点。 我在谷歌中遇到了下面的verilog代码。在verilog中使用negedge时钟有什么好处?
module negedgecapture
(
input clk,
input rst_n,
input din,
output wire dout
);
reg neg_dout ;
assign dout = neg_dout;
always @(negedge clk or negedge rst_n)
if (~rst_n) neg_dout <= 0;
else neg_dout <= din;
endmodule
并且在我知道的情况下,建立时间至少需要数据在时钟沿之前变得稳定的时间。 并且保持时间至少需要数据在时钟边沿之后变得稳定。
但我不知道那里有什么好处?为什么我们使用这些技术?
使用时钟的下降沿而不是上升沿对寄存器进行计时没有特别的好处。事实上,我所做过的大多数设计都是利用一切的上升缘。有几种情况下,我已经看到负边缘使用:
- 当使用外部接口使用否定由于某种原因。我似乎回想起很久以前,即在双极性TTL逻辑的日子里,I/O驱动器在上升和下降时间方面可能是不对称的,下降时间更快。在某些情况下,这种行为已经进入界面设计。
- 在一些较旧的ASIC设计中,设计人员会在块之间移动时从一个时钟边切换到另一个时钟边,以避免时钟偏移问题。然而,从那以后,布局工具在使用时钟偏移管理方面做得更好,因此这个过程不再使用。
- 在DDR(双倍数据速率)接口上,数据在正和负时钟边沿都发生变化。您将在基于LVDS的I/O和DDR存储器接口中看到这一点。
谢谢,但是,在违反保留时间的观点呢?如果我使用上面的代码,那么有没有什么优点? – grander3
您可以告诉我更多关于“在一些较旧的ASIC设计中,设计人员在块之间移动时会从一个时钟边切换到另一个时钟边,以避免时钟偏移问题。” TECHNIC? – grander3
@ gander3在良好的静态时序分析工具和时钟树综合工具可用之前,已经使用了这种技术。那时,时钟偏移在逻辑块内是非常可控的(物理上局限于布局中的矩形区域),但在模块之间有些不可预知。因此设计人员会在其输入端使用一个相反的边沿触发器来校正时钟偏斜。这些工具现在好多了,时钟速度要快得多,所以我从20世纪90年代后期就没有见过这种技术。 –
如果你在posedge上书写,阅读对于一个神经来说是有用的。这将在读操作上节省一个完整的时钟周期。
为了避免DUT和Testbench之间的竞争状态,在测试平台中也使用了内部时钟操作,因为它们都在不同的时钟边沿被驱动。
感谢您的回答,有没有任何例子可以锻炼? – grander3
您是否在询问安装和保持时间?请澄清你的问题。 –
i2c,spi,mdio等将在一个边缘上具有一个侧面输出,因此另一侧可以在相反侧进行采样。在下降读取上升或上升时读取,下降读取...... –