FPGA有符号数,定点小数表示及计算机数值表示规则 和 FPGA浮点数表示及计算机数值表示规则 介绍了FPGA内部表示正负数,小数的规则。两者相比之下,定点数实现简单,表达更为直观,所以在很多时候FPGA通常使用定点数表示小数。但在各种运算下,定点数的位宽会不断增大,为了节省资源,这个时候必须进行取舍,进行一定的截位。
截位的规则比较简单,但在FPGA内部使用广泛。
首先,在讲截位之前,我们需要了解FPGA定点数运算的扩位规则,规则如下:两个有符号定点数相加减,位宽大的数需要扩展一位符号位,位宽小的数扩展符号位至两数位宽一致。然后再进行加减,防止溢出。
比如,两个数,A数m位,C数n位,m > n;
A在最高位补充一个符号位,位宽变为m+1; B在最高位补充符号位,使位宽变为m+1,A+C最终运算结果为m+1位;
2. 两个无符号定点数相加减,位宽大的数需要扩展一位,扩展位为0,;然后再进行加减,防止运算结果溢出。
比如,1111 + 1 转变为:0 1111 + 1 = 1 0000;
A数m位,C数n位,m > n;
A在最高位补充一个符号位,位宽变为m+1; A+C最终运算结果为m+1位;
3. 两个定点数做乘法,运算结果位宽为两数位宽之和。
A数m位,C数n位,