利用CORDIC算法提取脉内特征在FPGA上的实现

时间:2022-09-29 10:05:00

利用CORDIC算法提取脉内特征在FPGA上的实现

摘 要: 介绍了坐标旋转数字计算(CORDIC)算法的原理,给出了利用cordic算法提取信号脉内特征的迭代公式,在此基础上实现了用该算法的流水型迭代结构提取瞬时幅度、相位和频率的fpga电路,解决了电路中的时钟与寄存器配置、数据的补码格式和相位累加等问题。通过在硬件芯片上的下载验证,表明电路结构合理、测试有效,满足设计要求。

关键词: 坐标旋转数字计算; 脉内特征; FPGA设计; 补码

中图分类号: TN79?34 文献标识码: A 文章编号: 1004?373X(2016)09?0001?05

Abstract:The principle of the coordinated rotation digital computer (CORDIC) algorithm is introduced. The iterative formula of the signal in?pulse characteristics extracted by CORDIC algorithm is proposed. On this basis, the FPGA circuit of extracting the instantaneous amplitude, phase and frequency by pipeline iterative structure of the algorithm was realized. The problems of clock and register configuration, data′s complementary code format and phase accumulation in the circuit were solved. The downloading verification on hardware chip shows that the circuit structure is reasonable, and test is effective. The circuit can satisfy the design requirement.

Keywords: coordinated rotation digital computor; in?pulse characteristics; FPGA design; complementary code

0 引 言

现代电子战中,提取辐射源信号脉内特征已成为许多电子侦查设备必备的功能,在此,仅以针对辐射源的测向技术为例,如比幅法需要知道脉冲的幅度信息、干涉仪法需要知道高精度的脉内瞬时相位和频率等。坐标旋转数字计算(Coordinated Rotation Digital Computer,CORDIC)算法是各种用来提取脉内特征的方法中较为常见的一种。该算法最早由J.Volder等人在1959年提出[1],最初用它进行坐标变换。其基本思想是通过多次的迭代实现方向反复摇摆、数值逐次递减以逼近最终需要到达的角度,同时计算出与该角度有关的某些复杂函数运算结果。统一的CORDIC算法由J.S.Walther在1971年提出[2],他将圆周、线性、双曲线三种算法和旋转、矢量两种模式统一到一个迭代方程中,为实现多模式共存的CORDIC算法硬件结构奠定了理论基础。CORDIC因能通过简单的移位和加减操作就能实现乘除、开方、三角变换、对数、指数等原本需要大量乘法器的运算,所以非常适合用FPGA设计实现[3?5]。

本文在分析圆周CORDIC算法原理的基础上,给出了利用CORDIC算法提取信号脉内特征的迭代公式,实现了用该算法的流水型迭代结构提取瞬时幅度、相位和频率的FPGA电路,在电路的设计过程中解决了电路中的时钟与寄存器配置、数据的补码格式和相位累加等问题。在信号分选、脉冲识别、辐射源定位等技术领域有一定的实用价值。

1 圆周CORDIC算法原理

两种方法的主要区别在于:前者计算的瞬时频率仍在[-π,π]之间,但要加入判断电路;而后者的计算结果在[0,2π]之间,但在硬件电路中实现取模运算非常简单,有时甚至都不需要运算。由于圆周矢量模式CORDIC算法是对同相正交分量的计算,因此检测输出的频率可能出现负频率。这在硬件电路中用补码表示负数的方法即可解决,因为正余弦函数的周期对称特性使弧度在[0,2π]之间的取值本身就是其在[-π,π]之间取值的补码形式。分别利用式(9)和式(10)对2.1节仿真得到的瞬时相位求瞬时角频率,Matlab仿真结果如图3所示,其中图3(a)是存在相位卷绕的结果,图3(b)是用第二种方法解相位卷绕并将补码换算为正常负数的结果。从图3可见仿真结果正确地检测出了瞬时角频率,且符合上行LFM规律。

3 流水型CORDIC电路在FPGA上的实现

3.1 CORDIC算法迭代结构分析

CORDIC算法原理简单且易于理解和仿真,其难点在于如何设计合理的迭代结构来实现运算过程。迭代类算法通常有两种结构实现,即循环反馈型迭代结构(简称循环结构)和流水型迭代结构(流水结构)。循环结构是指通过单级算法单元实现多次迭代计算,将每次的计算结果反馈回本级进行下一次计算,如此循环[L]次以得到最终结果。流水结构是指通过多级算法单元实现多次迭代计算,将每级的计算结果输入到次级进行下一次计算,经过[L]级后得到最终结果。两种结构都必须在延迟[L]个时钟后完成计算。循环结构的优点是相对简单、硬件资源需求低;而流水结构恰恰相反。循环结构的缺点是每隔[L]个时钟才能进行一次计算,其运算速率是时钟频率的[1L;]流水结构没有此问题,其运算速率等于时钟频率。在实际应用中,应根据设计要求、结构特点,选择适当的实现结构[4]。圆周矢量模式CORDIC算法循环迭代结构如图4所示,其中符号“>>”表示移位。CORDIC算法的循环结构稍作改进即可作为流水结构的单级计算单元使用。

对比图9、图10可看出,图10中当[xi=0]且[yi=0]时,Aout输出为0,用其控制pnout输出为1(用于调试测试数据,使用时可设为0或其他值,阈值的选取视拟抑制的噪声幅度决定)。图10中当[xi=0]且[yi=0]时,输出补码格式的相位值为-495 666,折算成归一化弧度相位为-0.945 4π,这与式(12)一致。

4 结 论

本文设计的流水型结构电路实现了利用圆周矢量模式CORDIC算法检测中频脉冲信号的瞬时幅度、相位和频率,解决了时钟与寄存器配置、数据的补码格式和相位累加等问题。通过在硬件芯片上的下载验证,表明电路结构合理、测试有效,满足设计要求。

参考文献

[1] VOLDER J E. The CORDIC trigonometric computing technique [J]. IEEE transactions on computers, 1959, 8: 330?334.

[2] WALTHER J S. A unified algorithm for elementary function [C]// Proceedings of 1971 Spring Joint Computer Conference. [S.l.]: ACM, 1971: 379?385.

[3] 阎啸,秦开宇,高援开,等.基于CORDIC算法的频谱分析技术研究[J].电子科技大学学报,2006,36(3):335?338.

[4] 张俊涛,王红仓.基于FPGA的CORDIC算法通用IP核设计[J].微计算机信息,2008,24(7):238?240.

[5] 陈婧.改进型CORDIC算法的研究与实现[J].现代电子技术,2011,34(24):165?167.

[6] 孔德元.针对正弦余弦计算的CORDIC算法优化及其FPGA实现[D].长沙:中南大学,2008.

[7] 金锋,佘世刚,王锴,等.基于System Generator的PM信号CORDIC算法鉴相的仿真与实现[J].现代电子技术,2013,36(5):96?98.

[8] 闫温合,胡永辉,李瑾琳.应用于数字下变频中CORDIC算法的FPGA实现[J].时间频率学报,2014,37(1):34?40.

[9] 胡爱明,胡可欣.一种雷达信号类型识别方法[J].现代电子技术,2006,29(14):123?126.

[10] 张文旭.被动雷达导引头数字信道化接收机研究及实现[D].哈尔滨:哈尔滨工程大学,2009.

[11] 维纳 K 英格尔,约翰 G 普罗克斯.数字信号处理(Matlab版)[M].刘树棠,陈志刚,译.3版.西安:西安交通大学出版社,2013.

[12] 杜勇.数字滤波器的Matlab与FPGA实现[M].北京:电子工业出版社,2012.

[13] 陈欣波.Altera FPGA工程师成长手册[M].北京:清华大学出版社,2012.

上一篇:反馈教学法在电路课程中的应用 下一篇:基于计算机视觉的实时车辆运动速度检测算法研...