module circuit_1 (a, b, c);
input [1:0J a,b;
output [3:0J c;
assign c = a + b;
入力a=2'b11および入力b=2'b10の場合、
出力cはどのような値になりますか?説明的な答えを教えてください。
また、割り当てと常にの機能を教えてください。私は少し混乱しています。
c = 4'b0101 // Output, implicitly a wire
「assign」はネットタイプ宣言(Wire、Triなど)に使用されます。ワイヤはそれらを駆動する値に応じて値を変更するため、RHSのオペランドが変更されるたびに、値が評価されてLHSに割り当てられます(ワイヤのシミュレーション)。
常に-レジスタ+組み合わせロジックに使用されます。それがalways(@ posedge clk)の場合-イベントposedge clkがalwaysブロックをトリガーし、ブロック内のロジックが評価されて割り当てられます。
always @(*)-alwaysブロックのRHS内の何かが変更された場合、その特定の式が評価され、割り当てられます。
それらの動作が同じであるため、ワイヤとして割り当て、常にレジスタとしてブロックすることを想像してください(今のところ)。