2
{a + b}
と(a + b)
のVerilogの違いは何ですか?私は何をするシミュレーションを使用した:Verilogでビット幅が異なる
reg [3:0] a = 4'b0001;
reg [3:0] b = 4'b1111;
reg [4:0] c = (a + b); give the result c = 5'b1_0000
しかし
reg [4:0] c = {a + b}; give c = 5'b0_0000;
それは(A + B)結果を与えることができる5ビットを意味するが、{A + B} 4ビットを与えます。どうしてか分かりません。私を助けてください。
ありがとうございました
なぜ連結演算子を使用しますか? – toolic
私は、連結演算子を使用するとなぜ出力が異なるのかという疑問があると思います。これは決して答えではありませんが、aとbの両方が4ビット幅であるという事実は、使用されている連結演算子に関連する問題の一部です。 aとbを5ビット幅にすることで期待される動作が得られることを証明することは価値があるかもしれません。その時点で、連結演算子が結果幅をどのようにスライスするかがわかります。 –
私には分かりませんが、連結によって結果は4ビットになります、私はこれを使って4ビット信号に割り当てます。 –