2

{a + b}Verilogとの違い(a + b)。シミュレーションを使用して、次のことを行いました。

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 ビットを与えることを意味します。どうしてか分かりません。私を助けてください。

ありがとうございました

4

1 に答える 1

3

連結内の各式は自己決定されます。{expr1,expr2, ...}. あなたの例では、式は 1 つしかなく、たまたまa + b. IEEE 1800-2012 LRM のSection 11.6 Expression bit lengthsによると、自己決定コンテキストの L(a+b) は Max(L(a),L(b)) であり、これは 4 ビットです。それ以外の場合、割り当てのコンテキストでは 5 ビットです。

于 2016-09-16T20:04:45.173 に答える