FPGA中定点数的处理方法

时间:2025-04-28  作者:Diven  阅读:0

FPGA中最常用的还是定点化数据处理方法,本文对定点化数据处理方法进行简要探讨,并给出必要的代码例子。

FPGA中定点数的处理方法

1、一般扩位原则:

1) 加减法运算:扩位位宽=ceil(log2(加法个数))

如:两个加法扩1位,三个四个加法扩2位…

2)乘法运算:结果扩位位宽=两个乘数位宽的和

如:15bit数与14bit相乘结果位宽应为29bit。

3)除法运算:结果扩位位宽=被除数位宽与除数位宽的差

扩位时对于有符号数,高位扩展时扩展符号位,对于无符号数高位扩展时直接补零。因为有符号数高位是符号位,扩位补零会将负数扩展为错误的正数,而无符号数没有符号位,对位最高bit为1的无符号数,扩展符号位同样会导致数据异常。

符号位扩展:

2、高位截位,分为饱和截位和直接截位:

1)高位直接截位,直接抛掉高位保留低位,在确认信号不会溢出的模块使用直接截位的方法,节省资源;

2)高位饱和截位:对计算后的数据进行判断,如果超出位宽,正数输出为最大值,负数输出为最小值;判断方法就是看高位是否完全相同。

3、低位截位:

1)直接截位:功率计算等统计模块会使用,数字信号处理中不会使用,因为这种方式,频域会出现直流。

2)四舍五入:如下所示,上一篇文章中说了数据的表示(FPGA数字信号处理之数据的表示),看一看到对于补码,verilog中只针对负数的0.5进行特殊处理即可。

代码如下,代码中会判断信号是否是-n.5,进行处理。

3)近似四舍五入,对于真四舍五入来说,对-0.5的判断逻辑较为复杂,而且有的数据处理对-0.5的要求也不高,此时可以采用近似四舍五入的方法,之前的代码中最常出现的就是这种处理方式:

可以看到这种处理方式下-0.5的值是偏大的。

另外,要注意上一篇文章中多次提到的IEEE 754浮点数标准里面,对于浮点数取整的规定如下

1.就近舍入Round to nearest (even)

2. 向零舍入(Truncate)

3.朝正无穷舍入Round up (toward +∞)

4.朝负无穷舍入Round down (toward −∞)

python等默认使用的就是 就近舍入Round to nearest (even) 处理方法,python中的计算结果为:

round(0.5)= 0

round(1.5)=2

这一点大家做算法时要注意一下。

猜您喜欢

红外遥控接收头(IRM)是应用于家庭电器、玩具、安防系统等设备中的重要电子元件。主要功能是接收来自遥控器发出的红外信号,并将其转换为电信号,以便设备能够识别和执...
2011-04-22 00:00:00

现代电子产品中,小型化趋势愈发明显,而SIP(系统集成封装)作为一种有效的封装技术,逐渐受到电子工程师的青睐。特别是SIP_16.6x6mm,这种尺寸的封装不仅...
2025-02-24 15:58:39

电子元器件的设计与应用中,封装形式是一个不可忽视的因素。SOIC-8(SmallOutlineIntegratedCircuit)封装因其紧凑的设计和良好的电气...
2025-04-26 04:01:52

模拟前端(AFE)是电子系统中一个非常重要的组成部分,主要负责将模拟信号转换为数字信号,以便后续的处理与分析。AFE通常包括多个关键模块,如放大器、滤波器和模数...
2024-01-29 00:00:00

测量贴片电阻两端的电压大小,需要用到万用表。操作步骤如下:选择电压档位: 将万用表旋转开关拨至合适的直流电压档位 (DCV)。由于不知道电压大小,可以先从最高的...
2024-11-26 11:29:53

贴片电阻,就是表面贴装型的电阻器。体积小、重量轻,适用于高密度印刷电路板,在现代电子产品中是很重要的配件。贴片电阻的主要作用是限制电流的流动。通过在电路中引入特...
2024-11-29 10:26:18


万向接头是应用于机械传动系统的重要部件,其主要优势体现在以下几个方面。万向接头能够实现不同轴线之间的传动,解决了设备因轴线不对齐而导致的传动困难。这种灵活性使得...
2011-09-14 00:00:00

新手机到手,总是令人兴奋。迫不及待想要体验各种新功能,但在这之前,你是否了解如何正确地为新手机电池充电?别担心,第一次充电并没有那么复杂,遵循以下几个简单步骤,...
2024-04-19 00:00:00

NTC热敏电阻(Negative Temperature Coefficient Thermistor)是一种对温度变化敏感的电阻元件,其电阻值随温度的升高而降...
2025-03-17 10:30:34