使用できるようになったシミュレーションで何かを実行するにはinitial
、これは合成可能ではありません。
reg x;
initial begin
if(condition) begin
x = 1'b0 ;
end
else begin
x = 1'b1 ;
end
end
一般的な質問に答えるためにalways @(**what I should add here**)
ほとんどの最新のVerilogシミュレーターでは、*
右側の引数が選択ロジックの条件を変更したときに、ブロックをトリガーします(常に終了し始めます)。
always @* begin
if(condition)
x = y ;
else
x = ~y ;
end
古いシミュレーターでは、トリガーする必要のある変数をリストにリストする必要があります。always @(condition, y)
選択されている変数が1つしかない場合は、ワイヤタイプに割り当てる方がよい場合がありますが、これは「1回実行」に限定することはできませんが、質問から適切な選択になります。FPGAへの適合性についてはよくわかりませんが
wire [3:0] x ; //4 bit wire
//(condition) ? value if true : value if false ;
assign x = (condition) ? 4'b1010 : 4'b0100 ;