Я немного запутался в том, что считается входными данными, когда вы используете подстановочный знак @*в списке всегда блокируемой чувствительности . Например, в следующем примере, какие сигналы интерпретируются как входные данные, вызывающие повторную оценку блока always? Насколько я понимаю, clkи resetне включены, потому что они не появляются в правой части любого процедурного оператора в блоке always. aи bвключены, потому что они оба появляются в правой части процедурных операторов в блоке always. Но что меня действительно смущает, так это enи mux. Поскольку они используются в качестве тестовых условий в операторах ifи case, считаются ли они входными данными? Пересчитывается ли всегда блок каждый раз, когда enи muxизменяют значение? Я в значительной степени нуб, и в трех книгах Verilog, которые у меня есть, я не нашел удовлетворительного объяснения. Я всегда находил объяснения здесь действительно полезными. Спасибо
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