【发布时间】:2018-03-14 19:46:46
【问题描述】:
信号“ADDR”相对于信号“WR”的上升沿有 1ns 的建立时间限制。
在每个新的时钟周期中,我需要为“ADDR”分配一个值,然后在 1ns 后使“WR”为 0->1。
时钟周期为 10ns。我如何在结构 Verilog 中做到这一点?
【问题讨论】:
-
您需要提供您的代码示例。
标签: verilog digital digital-logic
信号“ADDR”相对于信号“WR”的上升沿有 1ns 的建立时间限制。
在每个新的时钟周期中,我需要为“ADDR”分配一个值,然后在 1ns 后使“WR”为 0->1。
时钟周期为 10ns。我如何在结构 Verilog 中做到这一点?
【问题讨论】:
标签: verilog digital digital-logic
有很多方法。我会使用:
`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);
您可以添加这样一个带延迟的缓冲区,或者您必须找到设计中输出信号的最后一个门并在那里添加延迟。
【讨论】: