verilog 运算中 溢出检测的问题
时间:10-02
整理:3721RD
点击:
二进制加法中 如果出现溢出的情况,应该怎么处理?
例如: 1111 + 0001 = 10000 运算结果的位数 要求与输入相同, 即10000要用4位数来表示。
请问有什么办法来检测 加法的输出结果是否溢出?溢出的话,在不增加位数的条件下,如何尽可能的保证数据精度?
例如: 1111 + 0001 = 10000 运算结果的位数 要求与输入相同, 即10000要用4位数来表示。
请问有什么办法来检测 加法的输出结果是否溢出?溢出的话,在不增加位数的条件下,如何尽可能的保证数据精度?
进位链吧,我记得好像是这个
”进位链“百度了下 貌似不想关呢 =。=
溢出保护,进行截位处理就行,判断最高位的符号位,对应的截位就可以了
改变换编码方式
这是你的Coding style 不是很严密,比较严密的做法是参与运算的结果定义的时候要比运算的多一位。如reg [4:0]result;reg [3:0]a,b;如果你要检测溢出的问题,用nLint可以检测出来报warnning!
我有个帖子:http://bbs.eetop.cn/viewthread.php?tid=130245&highlight=
3x,不增加位数的话,只有你这种办法了。 不过感觉这种方法 误差会很大呢。
