在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1890|回复: 2

[求助] modelsim仿真结果出问题,求大神帮忙

[复制链接]
发表于 2014-12-3 12:12:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

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均无任何操作,我百思不得其解,求解答~~~
发表于 2014-12-4 09:47:20 | 显示全部楼层
把你的C_m-23 等等换成C_m-8'd23 试试。就是把你程式中的常数前面都加上位宽表示。
 楼主| 发表于 2014-12-4 10:47:47 | 显示全部楼层
回复 2# muzilinvkouyue


    谢谢回复,我试试。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

X

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-6-24 05:54 , Processed in 0.023686 second(s), 9 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表