如何引入结构verilog的延迟?

时间:2018-03-14 19:46:46

标签: verilog digital digital-logic

信号" ADDR"相对于信号的上升沿,设置时间约束为1ns" WR"。

在每个新的时钟周期中,我需要为" ADDR"分配一个值。然后制作" WR" 1ns后0-> 1。

时钟周期为10ns。我如何在结构verilog中做到这一点?

1 个答案:

答案 0 :(得分:0)

有很多方法。我会用:

`timescale 1ns/1ps
...
assign #1.2 wr_out = wr; // (wr_out is a wire)
   or
always @(wr)
  wr_out <= #1.2 wr;  // (wr_out is a reg)

1.2是200ps松弛。

第一个是惯性延迟,它更符合大多数真实逻辑的行为。 (如果信号变化快于1.2ns,则看不到。就像被电容滤除的信号一样)

无论wr的波形是什么,第二个都会产生1.2ns的传输延迟。 (就像一连串的门延迟脉冲传播的地方)

我来自一个我们做 NOT 更改结果门的世界,但如果你想在门上增加延迟,它就非常相似:

buf #(1.2,1.2) delaybuf (out,in);

你可以添加这样一个延迟缓冲区,另外你必须找到设计中输出信号的最后一个门并在那里加一个延迟。