【发布时间】:2012-03-11 21:27:26
【问题描述】:
当您在始终阻止敏感度列表中使用通配符 @* 时,我对将什么视为输入感到有些困惑。例如,在以下示例中,哪些信号被解释为导致重新评估 always 块的输入?据我了解,不包括 clk 和 reset,因为它们不会出现在 always 块中任何程序语句的右侧。 a 和 b 被包括在内,因为它们都出现在 always 块中程序语句的右侧。但我真正感到困惑的是 en 和 mux。因为它们被用作 if 和 case 语句中的测试条件,它们是否被视为输入?每次 en 和 mux 更改值时,always 块是否都会重新评估?我几乎是个菜鸟,在我拥有的 3 本书中,我还没有找到令人满意的解释。我一直觉得这里的解释很有帮助。谢谢
module example
(
input wire clk, reset, en, a, b,
input wire [1:0] mux,
output reg x,y, z
);
always @*
begin
x = a & b;
if (en)
y= a | b;
case(mux)
2'b00: z = 0;
2'b01: z = 1;
2'b10: z = 1;
2'b11: z = 0;
endcase
end
endmodule
【问题讨论】:
标签: verilog digital-logic