当您在始终阻止敏感度列表中使用通配符@*时,我对什么被视为输入感到有些困惑。例如,在以下示例中,哪些信号被解释为导致重新评估 always 块的输入?据我了解,不包括clk和reset,因为它们不会出现在 always 块中任何程序语句的右侧。 包括a和b是因为它们都出现在 always 块中程序语句的右侧。但是我真正感到困惑的是en和mux。因为它们被用作if和case中的测试条件语句是否被视为输入?每次en和mux更改值时,总是重新评估块吗?我几乎是个菜鸟,在我拥有的 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