现在我试图了解我们在verilog中使用negedge时钟的优点。 我在谷歌中看到了下面的verilog代码。
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
如果我知道,建立时间至少是数据在时钟边沿之前变得稳定所需的时间。 保持时间至少是时钟边沿后数据稳定所需的时间。
但我不知道那里有什么好处?为什么我们使用这些技术?
答案 0 :(得分:2)
如果你是在写一个假装,那么阅读对于一个人来说是有用的。这将在读操作中节省一个完整的时钟周期。
在测试平台中也使用了Negedge时钟操作,以避免DUT和Testbench之间的竞争条件,因为两者都是在不同的时钟边沿驱动。
答案 1 :(得分:1)
使用时钟的下降沿而不是上升沿来为寄存器提供时钟没有特别的优势。事实上,大多数设计都是使用上升边缘来处理所有事情。在某些情况下,我已经看到了使用的负边缘: