在verilog中使用negedge时钟的优点是什么?

时间:2017-03-08 06:25:59

标签: verilog

现在我试图了解我们在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 

如果我知道,建立时间至少是数据在时钟边沿之前变得稳定所需的时间。 保持时间至少是时钟边沿后数据稳定所需的时间。

但我不知道那里有什么好处?为什么我们使用这些技术?

2 个答案:

答案 0 :(得分:2)

如果你是在写一个假装,那么阅读对于一个人来说是有用的。这将在读操作中节省一个完整的时钟周期。

在测试平台中也使用了Negedge时钟操作,以避免DUT和Te​​stbench之间的竞争条件,因为两者都是在不同的时钟边沿驱动。

答案 1 :(得分:1)

使用时钟的下降沿而不是上升沿来为寄存器提供时钟没有特别的优势。事实上,大多数设计都是使用上升边缘来处理所有事情。在某些情况下,我已经看到了使用的负边缘:

  1. 使用由于某种原因使用否定的外部接口时。我似乎记得很久以前,即在双极TTL逻辑时代,I / O驱动器在上升和下降时间方面可能是不对称的,下降时间更快。在某些情况下,这种行为已经融入到界面设计中。
  2. 在一些较旧的ASIC设计中,设计人员在块之间移动时会从一个时钟边沿切换到另一个时钟边沿,以避免时钟偏差问题。但是,从那时起,布局工具在管理时钟偏差方面做得更好,因此不再使用此过程。
  3. 在DDR(双倍数据速率)接口上,正负时钟边沿的数据发生变化。您将在基于LVDS的I / O和DDR存储器接口中看到这一点。