电子技术与软件工程官方 国内统一刊号:CN 10-1108/TP
国际标准刊号:ISSN 2095-5650
* 投稿网站
电子技术与软件工程
《 电子技术与软件工程 》
级别:国家级     分类:科技    周期:半月刊
主管单位:中国科学技术协会
主办单位:中国电子学会
国内刊号:CN 10-1108/TP
国际刊号:ISSN 2095-5650
收稿编辑:QQ /电话2880067970 / 0531-85701017
投稿邮箱:dzjszazhi@163.com
期刊名称 (*)投稿期刊名称
文章标题 (*)投稿论文的题目
作者姓名 (*)只需填写通讯作者
作者电话 (*)方便编辑及时沟通
作者邮箱 (*)方便编辑做详细用稿答复
上传稿件 (*)限word文件
投稿附言   
期刊信息
期刊名称:电子技术与软件工程
主      编:宋俊龙
出版周期:半月刊
出版地区:北京市
定      价:25.00元
收      录:知网、万方、维普、龙源
社      址:北京市海淀区北洼路9号世纪新景园四号楼一单元12B
邮政编码:100036
范文-一种高精度复数求模近似算法的设计及实现-电子技术与软件工程

 一种高精度复数求模近似算法的设计及实现(本文仅作写作选题参考,部分字符、公式、图表未上传)

李世平
(南京电子技术研究所,210039)
摘要:为快速高精度的完成信号处理过程中近似复数求模运算,本文提出了一种高精度复数求模近似算法的设计和FPGA实现方法,其结合了三种具有不同误差特性的近似求模算法,并采用了简单的加法和移位操作,实现了0.878%的相对误差,精度是同类型其他近似算法的1.57~3.4倍。该算法在XC7VX690T FPGA上实现,与基于坐标旋转数字计算方法(CORDIC,Coordinate Rotation Digital Computer)的求模IP核相比,逻辑资源降至约50.1%,乘法器资源零消耗,输出延迟仅3个时钟周期,流水运算最高频率可达240MHz。
关键词:近似求模、高精度、FPGA
 
1 引言
信号是信息的载体,物理上传输或观测的信号总是实的,但为了便于处理,在雷达、通信等领域信号处理过程中常采用信号的复数形式[1,2]:
1.jpg         (1)
其中, 为信号实部, 为信号虚部,信号的幅度即可通过复数求模运算得到:
2.jpg            (2)
常规的求模运算是非线性的,硬件实现较为复杂,且输出延迟大,消耗资源多[3],为此,在很多应用场合常采用近似求模算法,通过牺牲一定的精度来获得更快的计算速度和更少的资源消耗。
文献[4~6]中对近似求模的算法进行了较为全面的理论分析,但对具体实现讨论较少,文献[7]中详细介绍了近似求模算法的硬件实现,但精度较低,相对误差仅能达到3%。本文提出了一种三段式高精度近似求模算法,结合了三种不同误差特性的近似求模公式,将相对误差控制在0.88%以内,能够满足大部分应用的精度需求。同时,以Xilinx的XC7VX690T FPGA为目标器件,采用Verilog HDL语言完成该算法的硬件实现,综合结果显示,与FPGA自身的基于CORDIC的IP核相比,逻辑资源仅50.1%,乘法器资源零消耗,输出延迟仅3个时钟周期,流水运算时最高频率可以达到240MHz。
 
2 算法设计
2.1 原理分析
设 时刻复信号 实部和虚部的两个数据分别为 和 ,并令 为其中大数和小数绝对值的比值, ,不失一般性,设 ,则有 (若 则可设 ,可以得到同样的相对误差特性),于是数据 的模值为:
3.jpg  (3)
近似求模运算一般具有如下的线性结构,且 和 需满足 的形式以便于硬件实现。
4.jpg      (4)
由式(2)、(3)可以计算得到近似求模算法的相对误差如下:
5.jpg(5)
对式(4)求导得到:
6.jpg  (6)
可见, 在且仅在 时有极值,通常 和 均为正数,当 时, , 为单调减函数,当 时, , 为单调增函数。因此若设要求误差不超过 ,则 、 、 三个数据需同时≤ 。三个不等式分别对应于图1中的三个区域,不等式组的解即位于三个区域的重合区,如图中的红色部分。可以看到,三个区域重合的极限情况在于直线1、圆2和直线3相交于同一点,此时 , 若继续减小,则不等式组将无解。
 11.jpg
图1 通过不等式组求解a、b值组合示意图
因此,通过一组 、 值能得到最大相对误差仅3.96%,不能满足系统需求,为了获得更高的精度,本文采用了分段方式,将 所在的区间 分为三段,每一段使用不同的 、 值组合,以充分利用其不同的误差特性,同时保证其值满足 的形式以便硬件实现。设 , ,该三段式高精度近似求模算法如下:
22.jpg                                (7)
                          (8)
                          (9)
                         (10)
其误差曲线如图2所示,其中,黑色、蓝色、绿色分别代表 、 、 所对应的误差曲线,可以看到,这三条曲线在整个 区间内的最大相对误差值均远超1%,但分段来看,在区间 内, 的最大相对误差仅0.77%;在 区间内, 的最大相对误差仅-0.874%;在 区间内, 的最大相对误差仅0.61%。又根据式(5)可以得到,相对误差 越小,表明当前近似模值 越大,于是在 区间内始终从 、 、 中选出最大值 作为最终的近似模值,即相当于在每一个 值上始终选择相对误差最小的曲线,如图1中红色虚线所示,可以看到,该曲线正向最大相对误差0.77%,负向最大相对误差-0.874%,总相对误差(正、负向相对误差绝对值的大值)为0.874%。
 33.jpg
图2 三段式高精度近似求模算法相对误差曲线
 
2.2 方案设计
上述高精度近似求模算法的FPGA实现框图如图3所示,主要使用了4个二输入加法器、2个三输入加法器,并通过6个寄存器进行3级流水处理,具体流程如下:
33.jpg 
图3 三段式高精度近似求模算法FPGA实现框图
1) 绝对值比较
由于输入信号通常用有符号数表示,故需要先对信号的实部和虚部分别求绝对值,然后再通过比较器选出大数 和小数 存入寄存器1和寄存器2。
2) 移位相加
a) 大数寄存器的输出 直接作为 送入寄存器3; 
b) 对大数寄存器的输出 进行移位,分别右移5位、1位、2位、4位后将得到 、 、 和 ;
c) 对小数寄存器的输出 进行移位,分别右移2位、5位、1位、4位后将得到 、 、 和 ;
d) 将 取反后和 送入加法器1, 后 送入加法器3,两者的结果再送入加法器5,得到的和值 送入寄存器4;
e) 将 、 和 送入加法器2, 、 和 送入加法器4,两者的结果再送入加法器6,得到的和值 送入寄存器5;
3) 比较选大
对寄存器4、5、6中的三个数据 、 、 进行比较,选出最大值,该最大值即为所需的近似模值,其将通过寄存器6寄存一拍后输出。
3 实验结果
3.1 仿真分析
本文采用Verilog HDL语言实现了上述高精度近似求模算法,其中,输入信号的实部和虚部均为16bit有符号定点正数,考虑到其模值的最大值为 ,故最终计算得到的近似模值用16bit无符号定点数表示即可。本文共构造了模值恒为1但相位随时间渐变的正弦信号以及模值和相位均随机的随机信号两种激励,其实部和虚部波形分别如图4所示。
通过ISim工具进行两种激励信号下的仿真,并将仿真得到的近似模值结果与matlab计算得到的精确模值进行比较,求出的相对误差如图5示。
 
55.jpg
图4 正弦信号和随机信号激励的实部、虚部波形
66.jpg 
(a) 正弦信号相对误差                  (b)随机信号相对误差
图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。
表1 FPGA综合结果和资源使用情况及其与基于CORDIC的求模IP的对比
特性 本文近似算法 基于CORDIC的求模IP
Used(Available) Utilization Used
Number of occupied Slices 88(108300) 0.081% 174
Number of Slice Registers 102(866,400) 0.012% 434
Number of Slice LUTs 226(433200) 0.052% 441
Number of DSP48E1s 0(3600) 0% 2
Number of RAMB36E1/FIFO36E1s 0(1470) 0% 0
Number of RAMB18E1/FIFO18E1s 0(2940) 0% 0
Output Latency/ clock 3 17
 
4 结语
本文提出了一种三段式高精度近似求模算法的设计及FPGA实现方法,其将输入复数实部与虚部绝对值中大数与小数的比值 所在的区间范围 分成三段,每一段采用了具有不同误差特性的近似求模公式,通过将三段近似求模公式结合起来,实现了不超过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] 王波,关于复数模值近似计算的探讨,西北电讯工程学院学报,1983, 2:59- 68
[7] 朱荣新,耿富录,复数信号模值近似计算及硬件实现[J],火控雷达技术,1992, 1: 31-37.