2

{a + b}verilog和(a + b)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 位。我不知道为什么。请帮我。

谢谢

4

1 回答 1

3

串联中的每个表达式都是自行确定的。{expr1,expr2, ...}. 在您的示例中,只有一个表达式,它恰好是a + b. 根据 IEEE 1800-2012 LRM 中的第11.6 节 Expression bit lengths,L(a+b) 在自定上下文中为 Max(L(a),L(b)),即 4 位。否则,在分配的上下文中它是 5 位。

于 2016-09-16T20:04:45.173 回答