Что включено в список чувствительности verilog always @*?

Я немного запутался в том, что считается входными данными, когда вы используете подстановочный знак @*в списке всегда блокируемой чувствительности . Например, в следующем примере, какие сигналы интерпретируются как входные данные, вызывающие повторную оценку блока 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
5
задан Frank Dejay 12 March 2012 в 20:38
поделиться