reg [7:0] x;
wire [7:0] y;
assign y= {1'b0, x[6:0]}; 这样子没问题;
assign y= {1'b0, ~x[6:0]};也没问题;
但是:
assign y={1'b0,~x[6:0]+1} ; 企图保证最高为一直为0 ,但不行;
这样就会出问题,拼接符号{}中不能用+?这句话应该怎么理解?乘法器最后一步有很多人用到这句话。
解决办法就是分开写成下面这样:
assign y[6:0] = ~x[6:0]+1;
assign y[7] = 1'b0;
另外:负数赋值给无符号reg时,值为补码的值;
测试过程代码如下所示:
仿真结果如下:
其中z为出问题的情况,t为解决方法,其他均为测试对比用;
原因目前未知,有时间看一下原理图