连接verilog中的奇怪事情
我在连接verilog中的奇怪事情,verilog,Verilog,我在verilog中有一个模块,它获取两个64位数字。这些数字是随机的。奇怪的是,当我调试它时,fa是正确的,以1开头,但是fb意外地以0开头 怎么了 module adder(sum,a, b); input [63:0] a; input [63:0] b; reg one; output reg [63:0] sum; reg [63:0] fa,fb; always @(a or b) begin one=1'b1;
verilog
中有一个模块,它获取两个64位数字。这些数字是随机的。奇怪的是,当我调试它时,fa
是正确的,以1开头,但是fb
意外地以0开头
怎么了
module adder(sum,a, b);
input [63:0] a;
input [63:0] b;
reg one;
output reg [63:0] sum;
reg [63:0] fa,fb;
always @(a or b) begin
one=1'b1;
fb={one,b[51:0],12'b0};
fa={one,a[51:0],12'b0};
sum=64'b1;
end
endmodule
此分配中存在位宽度不匹配:
fb={one,b[51:0],12'b0};
左侧(LHS)宽64位,而右侧(RHS)宽65位
LHS:
是64位宽[63:0]fb
为1位宽1
的宽度为52位b[51:0]
是12位宽12'b0
one
被忽略,因为fb[11:0]=12'b0和fb[63:12]=b[51:0]。因此,如果b[51]=0,那么fb[63]=0
这同样适用于fa