2
verilog中的{a + b}
和(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位。我不知道为什么。请帮帮我。
谢谢
为什么要在那里使用连接运算符? – toolic
我认为问题是为什么输出不同,如果使用连接运算符。这绝不是答案,但我认为a和b都是4位宽的事实是与使用concat操作符相关的问题的一部分。证明让a和b变成5位宽可能是值得的,可以得到预期的行为。在那一点上,我认为这取决于连接运算符如何切割结果宽度。 –
我不知道,但连接的结果将是4位,我用它来分配给4位信号。 –