【问题标题】:How to introduce delay in structural verilog?如何在结构 Verilog 中引入延迟?
【发布时间】:2018-03-14 19:46:46
【问题描述】:

信号“ADDR”相对于信号“WR”的上升沿有 1ns 的建立时间限制。

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

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

【问题讨论】:

  • 您需要提供您的代码示例。

标签: verilog digital digital-logic


【解决方案1】:

有很多方法。我会使用:

`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 的 slack。

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

无论 wr 的波形是什么,两秒的传输延迟都是 1.2ns。 (就像脉冲通过的一串门延迟)


我来自一个我们确实改变结果门的世界,但如果你想给一个门添加延迟,它非常相似:

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

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

【讨论】:

  • 这看起来像行为 Verilog。我正在用结构化 Verilog 开发代码。
  • 但是那种情况下你必须在最后一个输出信号的门中添加一个组件或设置一个延迟:buf #(1,1) delaybuf (out,in); 我会将其添加到答案中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-23
相关资源
最近更新 更多