FPGA中最常用的还是定点化数据处理方法,本文对定点化数据处理方法进行简要探讨,并给出必要的代码例子。 1、一般扩位原则: 2、高位截位,分为饱和截位和直接截位: 1)高位直接截位,直接抛掉高位保留低位,在确认信号不会溢出的模块使用直接截位的方法,节省资源; 2)高位饱和截位:对计算后的数据进行判断,如果超出位宽,正数输出为最大值,负数输出为最小值;判断方法就是看高位是否完全相同。 3、低位截位: 2)四舍五入:如下所示,上一篇文章中说了数据的表示(FPGA数字信号处理之数据的表示),看一看到对于补码,verilog中只针对负数的0.5进行特殊处理即可。 代码如下,代码中会判断信号是否是-n.5,进行处理。 3)近似四舍五入,对于真四舍五入来说,对-0.5的判断逻辑较为复杂,而且有的数据处理对-0.5的要求也不高,此时可以采用近似四舍五入的方法,之前的代码中最常出现的就是这种处理方式: 可以看到这种处理方式下-0.5的值是偏大的。 另外,要注意上一篇文章中多次提到的IEEE 754浮点数标准里面,对于浮点数取整的规定如下 这一点大家做算法时要注意一下。 |
|