|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
我做一个单精度浮点加减法器,modelsim仿真结果出来一个不正确的地方,我找到了问题代码的位置,可是这里逻辑和语法根本没有问题,求大神看看,下面是问题verilog代码: always@(posedgeclk or negedge rst)
if(!rst)
C<=0;
else if(C_m==0) C<=0;
else if(sum_w[24]==1)
C<={C_f,(C_m+1),sum_w[23:1]};
else if(sum_w[23]==1)
C<={C_f,C_m,sum_w[22:0]};
else if(sum_w[22]==1)
C<={C_f,(C_m-1),sum_w[21:0],1'b0};
else if(sum_w[21]==1)
C<={C_f,(C_m-2),sum_w[20:0],2'b00};
else if(sum_w[20]==1)
C<={C_f,(C_m-3),sum_w[19:0],3'b000};
else if(sum_w[19]==1)
C<={C_f,(C_m-4),sum_w[18:0],4'b0000};
else if(sum_w[18]==1)
C<={C_f,(C_m-5),sum_w[17:0],5'b00000};
else if(sum_w[17]==1)
C<={C_f,(C_m-6),sum_w[16:0],6'b000000};
else if(sum_w[16]==1)
C<={C_f,(C_m-7),sum_w[15:0],7'b0000000};
else if(sum_w[15]==1)
C<={C_f,(C_m-8),sum_w[14:0],8'b00000000};
else if(sum_w[14]==1)
C<={C_f,(C_m-9),sum_w[13:0],9'b000000000};
else if(sum_w[13]==1)
C<={C_f,(C_m-10),sum_w[12:0],10'b0000000000};
else if(sum_w[12]==1)
C<={C_f,(C_m-11),sum_w[11:0],11'b00000000000};
else if(sum_w[11]==1)
C<={C_f,(C_m-12),sum_w[10:0],12'b000000000000};
else if(sum_w[10]==1)
C<={C_f,(C_m-13),sum_w[9:0],13'b0000000000000};
else if(sum_w[9]==1)
C<={C_f,(C_m-14),sum_w[8:0],14'b00000000000000};
else if(sum_w[8]==1)
C<={C_f,(C_m-15),sum_w[7:0],15'b000000000000000};
else if(sum_w[7]==1)
C<={C_f,(C_m-16),sum_w[6:0],16'b0000000000000000};
else if(sum_w[6]==1)
C<={C_f,(C_m-17),sum_w[5:0],17'b00000000000000000};
else if(sum_w[5]==1)
C<={C_f,(C_m-18),sum_w[4:0],18'b000000000000000000};
else if(sum_w[4]==1)
C<={C_f,(C_m-19),sum_w[3:0],19'b0000000000000000000};
else if(sum_w[3]==1)
C<={C_f,(C_m-20),sum_w[2:0],20'b00000000000000000000};
else if(sum_w[2]==1)
C<={C_f,(C_m-21),sum_w[1:0],21'b000000000000000000000};
else if(sum_w[1]==1)
C<={C_f,(C_m-22),sum_w[0],22'b0000000000000000000000};
else if(sum_w[0]==1)
C<={C_f,(C_m-23),23'b00000000000000000000000}; 下面是仿真结果有问题的截图:
C是输出结果32bit,C_m是8bit,C_f是1bit,sum_w是23bit,代码里讲C_f复制给C的最高位(输出结果的符号位),700ns时C_f明明是1,为什么700ns后我的C的最高位是0?源代码的其他地方对C均无任何操作,我百思不得其解,求解答~~~ |
|