【问题标题】:Adding delay to each logic gate为每个逻辑门添加延迟
【发布时间】:2021-06-29 12:43:18
【问题描述】:

我正在学习和构建一些 Verilog 代码,但现在对我来说重要的是了解逻辑门中的延迟。我正在尝试编写这个简单的组合电路,每个逻辑门都有 5ns 延迟,但我不知道是不是这样:

`timescale 1ns/1ps

module comb_circuit(input wire A, B, C, D, output wire Z);
  wire E, F;

  assign #5 E = (A & B & C) | D;
  assign #5 F = (B ~| C) ~& A;

  assign #5 Z = E ^ ~F;

endmodule

在上面的代码中,每个逻辑门都有 5ns 延迟还是只有导线(E、F、Z)?

【问题讨论】:

    标签: verilog


    【解决方案1】:

    你有一个行为 verilog 代码,其中没有结构门。因此,延迟将在行为意义上起作用。

    来自标准:

    对连续赋值的延迟应指定右侧操作数值更改与对左侧进行赋值之间的持续时间。

    在您的代码中,评估 lhs (E, F, Z) 值会有 5 ns 的延迟。它将相对于右侧表达式的值的最后一次更改有所延迟。

    always 块中的延迟表现不同。

    这是一种仅在模拟中的行为,不会在硬件中合成。

    【讨论】:

    • 感谢您的帮助,我的朋友!所以逻辑门的延迟看起来像这样对吗? "and #5(E, A, D)",其中 E 为输出线,A 和 D 为输入线。
    • 是的,您需要以结构化的方式指定每个逻辑门。
    【解决方案2】:

    延迟仅出现在您编写的代码中的 E、F 和 Z 线上。此时您的描述中没有逻辑门,因为您尚未综合到硬件表示中。这些延迟仅用于仿真,综合忽略。实际延迟需要根据用于实现方程的目标技术重新计算。

    【讨论】:

      猜你喜欢
      • 2013-04-28
      • 2012-09-22
      • 2011-12-06
      • 1970-01-01
      • 2018-04-18
      • 1970-01-01
      • 1970-01-01
      • 2015-03-04
      • 1970-01-01
      相关资源
      最近更新 更多