微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于DSP实现的插值查找表的简便方法

基于DSP实现的插值查找表的简便方法

时间:05-08 来源:3721RD 点击:

注意X1和X0是这个小容量LUT的相邻地址,它们之间只隔了一个最低有效位。由于这个小容量LUT的地址空间为nb位,那么该LSB的值为 2-nb。内插步骤见图3。"Reinterpret"模块在不改变二进制表示法的情况下,可改变dx=x-x0信号。其重置了二进制小数点(从 UFix_6_0到UFix_6_6格式),并输出nx-nb位二进制数的一个分数,从而计算出(x-x0)/2-nb的值。

从硬件角度来看,这些模块什么都不占用。总的来说(且根据我们通过ILUT方法应用的函数类型),如果y1=0且y0=0,我们可以强制y1- y0=1,这样我们就可以得到1/2-nb而不是0。我们采用Mux、Rational、Constant和Constant1模块来执行这项工作。剩下的Mult、Add和Sub模块则执行线性内插公式。在本例中,我强制Mult模块的输出信号为17位分辨率,而非理论上要求的23位,因为总体数值精度对本试验来说已经足够。此外,由于y=sqrt(x)函数呈单调递增,因此所有结果都无符号。换句话说,不同的函数需要对数据类型进行不同的精心调整,但不会与图3所示的原理相去甚远。

线性化非线性传感器

目前许多企业在工业控制系统中使用"智能传感器",以满足低占用空间、低功耗、高性能、最低成本以及最短开发时间等要求。通用智能传感器可视为一个由传感器及其信号控制线路、模数转换器(ADC)、带或不带嵌入式处理器的相关DSP子系统组成的功能组件,所有这些功能块都集成在的同一器件上,如图4所示。

智能传感器的目的是将物理量(如电机中的电流)转化为数字电路能够处理的数字信号。构建这类传感器所采用的技术及组件的某些特性通常会导致诸如失调、增益和非线性等误差,进而导致总体传递函数呈非线性。

一般来说,客户会校正他们产品中运行的DSP子系统所出现的上述误差。如果y=f(x)是来自传感器和ADC级联的数字输出信号,那么DSP必须执行其反函数 g(y)=f-1(y)来补偿非线性函数,这样总体输出z即为:

这是直线方程,其斜率为m,纵截距为b。

最简单的线性化方法是LUT法,采用存储在ROM中的传感器校准点。不过,对16位的ADC来说,ROM显得过大了,且需要64个BRAM单元。而内插LUT则不然,是一个良好的解决方案。

举例来说,我们假定非线性传递函数是一条抛物线。下一MATLAB分段码说明了如何生成最终直线的m和b参数,以及如何计算g(y)(即 f(x)的反函数)。图5用三种颜色显示了三条不同曲线。请注意在计算f(x)的反函数g(y)过程中会丢失一些值。这是因为有几个y值相同的点对应着不同的x点。因此,需要对g(y)进行平滑化,填补所有缺失的点。为精确起见,我没有把这部分运算包括在MATLAB分段码中,见代码清单。

我采用非常类似于图3的设计,在SystemGeneratorforDSP中运行基于定点周期的仿真,在非线性传感器的总体输出范围内得到了92.48dB的信噪比。

斑点噪声消除

跟踪高速运动系统的目标物体(比如导弹)是一项极富挑战性的工作,需要非常复杂的DSP算法以及诸如合成孔径雷达(SAR)等各种不同类型的探测介质。作为典型的相干电磁源(如激光),SAR成像器件也受斑点噪声的影响。因此,任何基于SAR的DSP链的第一级都是二维(2D)自适应FIR滤波器,用以降低这种噪声(但不可能完全消除)。

斑点噪声是一种倍增噪声,呈指数分布,完全由其方差值σ决定。因此,广泛使用的抗斑点噪声的方法就是Frost滤波器(由发明者 V.S.Frost的名字命名而来)。在一个3x3的矩阵中,可以用下列公式进行建模:

其中xij和yij分别代表Frost滤波器的输入和输出采样。K是控制滤波强度的增益系数(为方便起见,下面假定K=1),m1和s分别是 2D内核的平均值和方差值,Tij是中心输出像素(系数ij=22)及所有周边像素的距离矩阵。下面的等式说明实施这个滤波器的关键因素是R1,即3×3 矩阵中的一阶m1和二阶m2之间的比值:

R1的取值范围在0和1之间。根据实验发现要取得良好的数值精度,R1可以使用16位至20位二进制数来表示。

我在system Generator for DSP中设计R1计算步骤后,我决定通过内插LUT来实施滤波系数的归一化。LUT的内容以下列MATLAB代码表示:

图6显示的是归一化后的系数沿R1输入信号分布的曲线。这里只有三条曲线,因为Tij矩阵在系数ij=22的中心像素周围呈对称分布。根据曲线,与纯浮点参考模型相比,数值结果显示信噪比介于81.28至83.38dB之间。

简言之,这些例子说明插值查找表是实施赛灵思FPGA的DSP功能的简便而强大的方法。插值查找表可帮助您在保持空间占用相对较低的情况下实现极高数值精度(SNR)和高数据速率。

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

网站地图

Top