verilog

时间:2016-09-16 15:39:19

标签: verilog fpga asic

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

谢谢

1 个答案:

答案 0 :(得分:3)

串联中的每个表达式都是自我确定的。 tns install。在您的示例中,只有一个表达式,它恰好是{expr1,expr2, ...}。根据IEEE 1800-2012 LRM中的 11.6表达式比特长度,自定义上下文中的L(a + b)是Max(L(a),L(b)),这是4位。否则,它在赋值的上下文中是5位。