为每个逻辑门添加延迟
Adding delay to each logic gate
我正在学习和构建一些 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 代码,其中没有结构门。因此,延迟将在行为意义上发挥作用。
来自标准:
A delay given to a continuous assignment shall specify the time duration between a right-hand operand value change and the assignment made to the left-hand side.
在您的代码中,计算 lhs (E, F, Z) 值时会有 5 ns 的延迟。它会相对于右侧表达式值的最后一次更改有所延迟。
always 块中的延迟表现不同。
它是一种仅在模拟中的行为,不会在硬件中综合。
延迟仅出现在您编写的代码中的线路 E、F 和 Z 上。此时您的描述中没有逻辑门,因为您尚未综合为硬件表示。这些延迟仅在仿真中使用,而被综合忽略。需要根据用于实现方程式的目标技术重新计算实际延迟。
我正在学习和构建一些 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 代码,其中没有结构门。因此,延迟将在行为意义上发挥作用。
来自标准:
A delay given to a continuous assignment shall specify the time duration between a right-hand operand value change and the assignment made to the left-hand side.
在您的代码中,计算 lhs (E, F, Z) 值时会有 5 ns 的延迟。它会相对于右侧表达式值的最后一次更改有所延迟。
always 块中的延迟表现不同。
它是一种仅在模拟中的行为,不会在硬件中综合。
延迟仅出现在您编写的代码中的线路 E、F 和 Z 上。此时您的描述中没有逻辑门,因为您尚未综合为硬件表示。这些延迟仅在仿真中使用,而被综合忽略。需要根据用于实现方程式的目标技术重新计算实际延迟。