1
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はどのような値になりますか?説明的な答えを教えてください。

また、割り当てと常にの機能を教えてください。私は少し混乱しています。

4

1 に答える 1

8
c = 4'b0101      // Output, implicitly a wire

「assign」はネットタイプ宣言(Wire、Triなど)に使用されます。ワイヤはそれらを駆動する値に応じて値を変更するため、RHSのオペランドが変更されるたびに、値が評価されてLHSに割り当てられます(ワイヤのシミュレーション)。

常に-レジスタ+組み合わせロジックに使用されます。それがalways(@ posedge clk)の場合-イベントposedge clkがalwaysブロックをトリガーし、ブロック内のロジックが評価されて割り当てられます。

always @(*)-alwaysブロックのRHS内の何かが変更された場合、その特定の式が評価され、割り当てられます。

それらの動作が同じであるため、ワイヤとして割り当て、常にレジスタとしてブロックすることを想像してください(今のところ)。

于 2013-03-26T00:22:42.990 に答える