有谁能解释此程序的运行结果吗?

[复制链接]
2310|3
 楼主| stoneymumu 发表于 2007-5-18 10:48 | 显示全部楼层 |阅读模式
module&nbsp;exc2;<br />&nbsp;&nbsp;&nbsp;&nbsp;reg[7:0]&nbsp;c;<br />&nbsp;&nbsp;&nbsp;&nbsp;initial&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c=8`d250*8`d2;&nbsp;&nbsp;&nbsp;&nbsp;//结果分析<br />&nbsp;&nbsp;&nbsp;&nbsp;#1000&nbsp;$stop;<br />&nbsp;&nbsp;&nbsp;&nbsp;end<br />&nbsp;&nbsp;&nbsp;&nbsp;endmodule<br /><br />运行结果是c=64<br />这是为什么呀?我的分析是250*2=500=111110100B,取低八位c=11110100B=244。哪里分析错了,谁能解释一下吗?
yb840311 发表于 2007-5-18 11:15 | 显示全部楼层

&nbsp;&nbsp;&nbsp;&nbsp;reg[7:0]&nbsp;c;把前的范围放大,如reg[15:0]&nbsp;c;再试一下,哪样计算结果已经溢出了。
 楼主| stoneymumu 发表于 2007-5-18 12:43 | 显示全部楼层

c定义8位的话指定会溢出<br />但溢出后应该是244吧,为什么会变成64呢,就是这点搞不明白……
yb840311 发表于 2007-5-19 10:01 | 显示全部楼层

哪我也就不明白了

也许在Verilog中,值溢出后,c是随机给的,和C语言中不一样了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部