次のコードがラッチを推測しないのはなぜですか?次のロジックでラッチが推論されないのはなぜですか?
dとrstが両方とも "0"の場合、ツールは "e"に割り当てられるものをどのように知っていますか?
module tmp(input d,
input clk,
input rst,
output reg o,
output reg e);
[email protected](posedge clk)
if(rst) begin
o <=0;
e <= 1;
end
else if(d) begin
o<=1;
e<=0;
end
else
o <=1;
endmodule
if/elseが優先順位ロジックです。 rst = 0、d = 1の場合、eに0が代入されます。rst = 0かつd = 0の場合、eは最後の値を保持します。これはラッチではなくフリップフロップを表します。 – toolic
'e'は最後の値を保持します。レベルセンシティブではなく、エッジセンシティブなデザインなので、ラッチではなくFFが推論されます。 –