微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 关于verilog加法运算溢出的问题

关于verilog加法运算溢出的问题

时间:10-02 整理:3721RD 点击:

有一个3bits的寄存器cnt,如果cnt此时的值为3'b111,那么当cnt+1执行后,cnt应该是3'b000吧?
假设此时有一个reg [2:0] temp=3'b000;
那么if( temp == cnt+1 )的判定结果是否应该是真?
为何我用modelsim进行function simulation时,发现if此时的判定是假

问题就出在小编的+1上。
不指明位宽的1默认是32位的,也就是32'h0000_0001。
cnt+1是一个3比特加32比特的加法,会将cnt扩展为32比特后相加,因此结果是32'h0000_1000。
最后,tmp==cnt+1,是一个3比特数和32比特数的比较,会将3比特熟扩展成32比特,也就是比较32'h0000_0000与32'h0000_1000。这个当然是假的。
所以小编应该用+1'b1。

解答犀利~学习了

2楼正解,在verilog中位宽相当的重要。要好不要使用整型的,因为用工具来扩展位宽太危险了。

2楼高人也。

明白了,多谢楼上赐教

以后提问的朋友,请把你们的源码都放上来....
这个一看就是位宽问题...
不要大家讨论半天,结果是你信号申明的时候没做...
当然,如果你非常确定你能表述清楚问题以及清楚问题一定不是在XXX地方的除外...

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top