微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > FPGA里面怎么处理signed与unsigned相加的问题呢?

FPGA里面怎么处理signed与unsigned相加的问题呢?

时间:10-02 整理:3721RD 点击:
比如5 + (-6)
   0101
   1010
--------------
   1111
系统是怎么知道这个答案是15还是-1 ?

处理的数据是正负数的补码,我这里假设你的数据位宽为4位,但是最高位是符号位,0代表正数,1代表负数。
+5的补码为0 101,至于-6,1 110,它的反码是 1 001,补码是 1 010(1 110取反加1得到,符号位不变),然后0 101+1 010=1 111,根据符号位判断必然是负数,将它-1再取反得到1 001,就是-1呦。希望帮到了你。

0101+1010=1111;那么1111既可以是5+6=15,也可以认为5-6=-1,这一点不矛盾啊。
fpga是不会处理unsigned+signed的情况的。



    对,我就是想问signed和unsigned相加会怎么样


FPGA默认不会这样处理;编写程序可以强制处理,也是没问题的。
比如:C<=unsigned(A)+signed(B);只要注意C的位宽即可。

3楼正解

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

网站地图

Top