一种高精度复数求模近似算法的设计及实现

时间:2022-08-06 01:12:00

一种高精度复数求模近似算法的设计及实现

摘 要 为快速高精度的完成信号处理过程中近似复数求模运算,本文提出了一种高精度复数求模近似算法的设计和FPGA实现方法,其结合了三种具有不同误差特性的近似求模算法,并采用了简单的加法和移位操作,实现了0.878%的相对误差,精度是同类型其他近似算法的1.57-3.4倍。该算法在XC7VX690T FPGA上实现,与基于坐标旋转数字计算方法(CORDIC,Coordinate Rotation Digital Computer)的求模IP核相比,逻辑资源降至约50.1%,乘法器资源零消耗,输出延迟仅3个时钟周期,流水运算最高频率可达240MHz。

【关键词】近似求模 高精度 FPGA

1 引言

信号是信息的载体,物理上传输或观测的信号总是实的,但为了便于处理,在雷达、通信等领域信号处理过程中常采用信号的复数形式:

(1)

其中,为信号实部,为信号虚部,信号的幅度即可通过复数求模运算得到:

(2)

常规的求模运算是非线性的,硬件实现较为复杂,且输出延迟大,消耗资源多,为此,在很多应用场合常采用近似求模算法,通过牺牲一定的精度来获得更快的计算速度和更少的资源消耗。

文献[4-6]中对近似求模的算法进行了较为全面的理论分析,但对具体实现讨论较少,文献[7]中详细介绍了近似求模算法的硬件实现,但精度较低,相对误差仅能达到3%。本文提出了一种三段式高精度近似求模算法,结合了三种不同误差特性的近似求模公式,将相对误差控制在0.88%以内,能够满足大部分应用的精度需求。同时,以Xilinx的XC7VX690T FPGA为目标器件,采用Verilog HDL语言完成该算法的硬件实现,综合结果显示,与FPGA自身的基于CORDIC的IP核相比,逻辑资源仅50.1%,乘法器资源零消耗,输出延迟仅3个时钟周期,流水运算时最高频率可以达到240MHz。

2 算法设计

2.1 原理分析

设时刻复信号实部和虚部的两个数据分别为和,并令k为其中大数和小数绝对值的比值,,不失一般性,设,则有(若则可设,可以得到同样的相对误差特性),于是数据的模值为:

(3)

近似求模运算一般具有如下的线性结构,且和需满足的形式以便于硬件实现。

(4)

由式(2)、(3)可以计算得到近似求模算法的相对误差如下:

(5)

对式(4)求导得到:

(6)

可见,在且仅在

时有极值,通常和均为正数,

当时,,为单调减函数,

当时,,为单调增函数。因此若设要求误差不超过δ,则、、三个数据需同时≤δ。三个不等式分别对应于图1中的三个区域,不等式组的解即位于三个区域的重合区,如图中阴影部分所示。可以看到,三个区域重合的极限情况在于直线1、圆2和直线3相交于同一点,此时,δ若继续减小,则不等式组将无解。

因此,通过一组、值能得到最大相对误差仅3.96%,不能满足系统需求,为了获得更高的精度,本文采用了分段方式,将k所在的区间分为三段,每一段使用不同的、值组合,以充分利用其不同的误差特性,同时保证其值满足

的形式以便硬件实现。设,,该三段式高精度近似求模算法如下:

(7)

(8)

(9)

(10)

其误差曲线如图2所示,可以看到,t1、t2、t3所对应的误差曲线在整个区间内的最大相对误差值均远超1%,但分段来看,在区间内,t3的最大相对误差仅0.77%;在区间内,t2的最大相对误差仅-0.874%;在区间内,t1的最大相对误差仅0.61%。又根据式(5)可以得到,相对误差越小,表明当前近似模值越大,于是在区间内始终从t1、t2、t3中选出最大值作为最终的近似模值,即相当于在每一个k值上始终选择相对误差最小的曲线,如图2中虚线所示,可以看到,该曲线正向最大相对误差0.77%,负向最大相对误差-0.874%,总相对误差(正、负向相对误差绝对值的大值)为0.874%。

2.2 方案设计

上述高精度近似求模算法的FPGA实现框图如图3所示,主要使用了4个二输入加法器、2个三输入加法器,并通过6个寄存器进行3级流水处理,具体流程如下:

(1)绝对值比较。由于输入信号通常用有符号数表示,故需要先对信号的实部和虚部分别求绝对值,然后再通过比较器选出大数和小数存入寄存器1和寄存器2。

(2)移位相加。①大数寄存器的输出直接作为t1送入寄存器3;②对大数寄存器的输出进行移位,分别右移5位、1位、2位、4位后将得到、、和;③对小数寄存器的输出进行移位,分别右移2位、5位、1位、4位后将得到、、和;④将取反后和送入加法器1,后送入加法器3,两者的结果再送入加法器5,得到的和值t2送入寄存器4;⑤将、和送入加法器2,、和送入加法器4,两者的结果再送入加法器6,得到的和值t3送入寄存器5;

(3)比较选大。对寄存器4、5、6中的三个数据t1、t2、t3进行比较,选出最大值,该最大值即为所需的近似模值,其将通过寄存器6寄存一拍后输出。

3 实验结果

3.1 仿真分析

本文采用Verilog HDL语言实现了上述高精度近似求模算法,其中,输入信号的实部和虚部均为16bit有符号定点正数,考虑到其模值的最大值为,故最终计算得到的近似模值用16bit无符号定点数表示即可。本文共构造了模值恒为1但相位随时间渐变的正弦信号以及模值和相位均随机的随机信号两种激励,其实部和虚部波形分别如图4所示。

通过ISim工具进行两种激励信号下的仿真,并将仿真得到的近似模值结果与matlab计算得到的精确模值进行比较,求出的相对误差如图5示。

从图5可以看到,无论是正弦信号还是随机信号输入,本文算法计算近似模值的总相对误差始终保持在0.878%以下,与文献[7]中3%的相对误差比较,精度提高到3.4倍,与文献[6]中最高1.379%的相对误差比较,精度提高到1.57倍。其超出理论值0.874%的原因在于FPGA中移位相加时对定点数的多次舍入截位所带来的精度损失。

3.2 FPGA实现

本文以Xilinx Virtex7 XC7VX690T FPGA为目标器件,通过ISE 14.5得到的综合结果及资源使用情况及其与基于CORDIC的求模IP核的比较如表1所示。基于CORDIC的求模IP核使用了174个Slices,2个DSP48E1s,输出延迟17个时钟周期,相比之下,本文算法的逻辑资源消耗仅50.1%,乘法器资源零消耗,为信号处理过程中其他关键算法留出了充裕的运算资源,且输出延迟仅3个时钟周期,流水运算最高频率可达240MHz。

4 结语

本文提出了一种三段式高精度近似求模算法的设计及FPGA实现方法,其将输入复数实部与虚部绝对值中大数与小数的比值k所在的区间范围分成三段,每一段采用了具有不同误差特性的近似求模公式,通过将三段近似求模公式结合起来,实现了不超过0.878%的相对误差,是同类型其他近似算法的1.57~3.4倍。该算法在XC7VX690T FPGA上实现,与基于CORDIC的求模IP核相比,逻辑资源仅50.1%,乘法器资源零消耗,且输出延迟仅3个时钟周期,流水运算最高频率可达240MHz,目前已成功在雷达信号处理过程中推广应用。

参考文献

[1]张贤达,保铮.通信信号处理[M].北京:国防工业出版社,2000.

[2]吴顺君,梅晓春.雷达信号处理与数据处理技术[M].北京:电子工业出版社,2008.

[3]祁建海,贺知明.基于FPGA的16位定点复数的快速求模[J].电视技术,2006,6:210-212.

[4]Filip A.A baker's dozen magnitude approximations and their detection statistics[J].Aerospace & Electronic Systems IEEE Transactions on aes-12,1976(1):86-89.

[5]Filip A.Linear approximations to having equiripple error characteristics[J].Audio & electro acoustics IEEE Transactions on AU-21,1973,21(6):554-556.

[6]王波.关于复数模值近似计算的探讨[J].西北电讯工程学院学报,1983,2:59-68.

[7]朱荣新,耿富录.复数信号模值近似计算及硬件实现[J].火控雷达技术,1992,1:31-37.

作者单位

南京电子技术研究所 江苏省南京市 210039

上一篇:借精产女后遭遗弃,女子怒诉丈夫判离婚 下一篇:融入生活资源 构建开放课堂