您的当前位置:首页正文

基于CORDIC算法的高速高精度NCO的FPGA设计

2021-01-05 来源:钮旅网
维普资讯 http://www.cqvip.com

2007年12月 文章编号:1008—8652(2007)04—068—05 火控雷达技术 第36卷 基于CORDIC算法的高速高精度 NCO的FPGA设计 孙 健 汪彦彦 (西安电子工程研究所 西安710100) 【摘要】介绍一种利用矢量旋转的CORDIC(Coordination Rotation Dlgital Computer)算法, 相比较传统NCO采用的查找表算法,证明查找表算法运算速度已不适用于高速宽带数字接收机 以及扩频通信的应用,为了实现高速正交数字混频器中的数控振荡器(NCO),采用C0RDIC算法 产生正余弦信号的实现过程,给出采用ALTERA的stratix系列FPGA中设计数控振荡器的项层 设计结构以及仿真结果,证明基于此算法采用FPGA的可行性设计。 关键词:数控振荡器(NCO);CORDIC算法;FPGA 中图分类号:TN958 文献标识码:A Design of FPGA for High Speed High、Accuracy NCO Based on CORDIC Algorithm Sun Jian Wang Yanyan (Xi’a11 Electronic Engineering Research Institute,Xi’an 710100) Abstract:A coordination rotation digital computer(CORDIC)algorithm using vector rotation is pro— vided.Comparing with look-up table algorithm used generally by traditional numeric controlled oscillator (NCO),it is proved that low operating speed of look—up table algorithm can not meet requirement of high_ speed wide—band digital receiver and spread—spectrum communication.In order to archive NC0 used in high-speed quadrature digital mixer,generation process of sine and cosine signals by using of CORDIC algorithm is presented;and top—layer circuit structure designed with Stratix series of field programmable gate arrays(FPGAs)manufactured by ALTERA company is given.Simulation results show feasibility of the design by way of the CORDIC algorithm and FPGAs. Keywords:numeric controlled oscillator(NCO);coordination rotation digital computer(CORDIC) algorithm ̄field programmable gate array(FPGA) 引言 数控振荡器的作用是产生正交的正弦和余弦样本。传统方法是采用查表法(LUT),即事先根据各个正 余弦波相位计算好相位的正余弦值,并按相位角度作为地址存储该相位的正余弦值,构成一个幅度相位转换 电路(即波形存储器)。在系统时钟的控制下,由相位累加器对输入频率字不断累加,得到以该频率字为步进 的数字相位,再通过相位相加模块进行初始相位偏移,得到要输出的当前相位,将该值作为取样地址值送入 *收稿日期:2007--06--08 作者简介。孙健。男。1972年生.工程师。研究方向为电子对抗。 68 维普资讯 http://www.cqvip.com 第4期 孙 健等 基于CORDIC算法的高速高精度NCO的FPGA设计 幅度相位转换电路,查表获得正余弦信号样本。对于一个相位位数为N,输出信号幅度位数为M的数控振 荡器,所需查找表大小为M・2 ,为了提高数控振荡器的频率分辨率,往往需要扩大波形存储器的容量,造 成存储资源的大量消耗。而且,当需要外挂RAM来存储波形时,由于受到RAM读取速度的影响,数控振 荡器的输出速率必然受到制约。因此,当需要设计高速、高精度的数控振荡器时,不宜采用查表法。 2 CORDIC算法原理 为了避免使用大容量存储器,可以考虑利用算法来产生正余弦样本。基于矢量旋转的CORDIC算法正 好满足了这一需求,该算法主要用于计算三角函数、双曲函数及其它一些基本函数运算。它有线性的收敛域 和序列的特性,只要迭代次数足够,即可保证结果有足够的精度。假定初始向量V1(x ,Y )旋转角度0后得 到向量V2(X,,Yj),其旋转式框图见图1。 [ [ (1) 如果是多次步进旋转,其表达式也可写成: [ ]一[C OinS  ̄n--sin0,l EX ̄] (2) 可将上式转化为如下形式: [Yx]一c。s口 [ nI 一 an (3) 图1 旋转式图 ,  ̄-i on][ ] 其中: 一arctan( ) (4) 所有迭代角度的总和>:S 0 一0 (5) 这里S 一{一1;+1),这时矩阵中的tanO,,一S 2 (6) 3 式 [ ]COS ̄n[S,t2I~一 ][妻] 其中(7)式中的c。s —c。s arctan(方)) 8) 随着迭代次数的增加,该式收敛为一个常数。我们定义这个常数为K,称之为模校正因子,对于字长一定 的运算,因子是一个常数,以16位字长为例,则: ”一 、0 cos( arctan(、 )一 ,),  ̄o・s 2弱 为了完成旋转过程,还要定义一个剩余角度记录量Z斗 ,表示完成第i次旋转后的角度误差,该量决定 着第i+1次旋转的方向(逆时针或顺时针)。由于迭代运算不能使幅值比例因子恒为1。为了抵消因迭代产生 的比例因子的影响,可将输人数据XY校正后再参与运算,以避免在迭代运算中增加校正运算,降低 CORDIC算法的速度。由此运算迭代式可以简化成: fX,一K(X cos0一Y sin0) I Yj—K(yfcos0+Xfsin0) 若用Z 表示第 次旋转时与目标角度之差,则: z 一0一>:0 (11) 若想使z旋转到0,则S, 的符号由Z, 确定,如下: 5”一{r一+11  iif Z H≥<00  (12) l69 维普资讯 http://www.cqvip.com 2007年12月 经过 次旋转后最终结果为: 火控雷达技术 第36卷 [XJ,yJ, ]一[-P(X cos(Z )~Y sin(X )),P(Y cos(Z )+x sin(Z )),0] 对于一组特殊的初始值,若: 1 (13) Xi:吉:K≈0.60725 Y =0 Zi一 我们得到[ ,yJ, ]一[cosO,sinO,0],这种工作模式称为旋转工作模式。还有另外一种旋转,就是不断 地使Y趋近0,则旋转后得到的结果为: [XJ, ,ZJ]一[P厕汶时.这时 : ,O'Z +arctan( )] ) (15) s.一』,+ if y <0 s”一{一1 Y:≥0 X —X Y —Y Z 一0 如果对于给定的初始化值,例如: 得到结果: [Xj, ,ZJ]一P ,。,arctan( )] 16) 这样就求得了幅值和相角。这种工作模式称之为向量工作模式。 3 CORDIC算法设计NCO的方法 本文介绍的NCO的设计就是在原理介绍部分的式(13)的基础上采用FPGA实现。 由图2可以看到,频率控制字寄存器将接收到的频率控制字送人相位累加器,相位累加器对系统时钟进 行计数,每到达输入频率控制字的值,即对相位进行累加,随后将累加值送人相位相加器,与相位控制字寄存 器接收到的初始相位进行相加,得到当前的相位值。其中相位累加器是决定NCO性能的一个关键模块,可 以利用FPGA器件的进位链实现快速、高效的电路结构。然而由于进位链必须位于临近的逻辑阵列块CLB 和逻辑单元LC内,所以长的进位链会减少其他逻辑使用的布线资源,这种基于迭代结构的进位链也称为串 并结构,串并结构的移位寄存器不能很好的应用于FPGA,因为这个结构需要较大的扇人能力。如果用FP— GA实现,可能会造成很大的延时,处理速度上不去。 山 出 图2 NCO的项层电路 70 维普资讯 http://www.cqvip.com 第4期 孙 健等 基于CORDIC算法的高速高精度NCO的FPGA设计 针对迭代结构的缺点,我们设计中可以采用进位链和流水线技术相结合的办法。所谓流水线技术,即把 在一个时钟内要完成的逻辑操作分成几步较小的操作,并插入几个时钟周期来提高系统的数据吞吐率,采用 以上做法实现的相位累加器既能保证具有较高的资源利用率,又能大幅提高系统的性能和速度。 CORDIC算法流水线型设计,采用FPGA实现原理框图如图3所示,该结构有如下优点:第一,它的移 位寄存器进行迭代法比可变移位寄存器简单的多。第二,它没有在角计算中存储常量的ROM,可以用硬件 直接来实现。因此在实际设计中,采用的是图3所示的由16级CORDIC运算单元组成的流水线结构,正常 工作时只需一个时钟周期就能输出一个数据,为数据实现高速实时处理提供了前提。 4 基于CORDIC的NCO设计的FPGA的逻辑实现 利用Ahera公司的Quartus1I软件,采用VHDL硬件描述语言,对上述数控振荡器结构进行描述,通过 功能仿真。 本设计采用VHDL设计,其层次图见图4。 根据公式:Xi=2¨・1/K一19898(dec)一4DBA(hex) 首先计算出角度值,例如: 36O 三2 .。 2 36O 30。 ‘30≈5461(dec) 555(hex) 由Zi=5461(30。)计算相应的正余弦值: sin:16380(dec)=3FFC(hex) COS:28381(dec)=6EDD(hex) 输出的幅度范围为一1到+1的范围,输出结果由以下推出: 2 0三1.0 16380 ̄ 1.0・2 0三1.0 16380=0.4999 28381 ̄ 1.0・28381一O.8661 图3 CORDIC流水线型 同理相应其它角度典型值也可以计算出其值,如表1所示。 法设计沆程图 仿真时可以通过Quartus 1I软件自身仿真模块或者第三方仿真软件Modelsim进行,仿真时采用 50MHz时钟,设定幅度值输入后在时钟驱动下即可得到仿真结果,将仿真结果带入上面介绍的公式中进行 验证,结果正确。但是结果为二进制数据,很不直观,也难以发现设计中存在的错误,为了直观的观察仿真结 果也可以采用Verilog语言设计,将结果通过写语句输出到文件中,利用Matlab或者Labview进行模拟信 号显示的仿真,直观又利于查错。仿真结果如图5所示。其中Ain为角度值输入,sin和COS表示的幅度值 输出。 图4 采用VHDH的层次图 表1 0。 { 角 度 值 30。 45。 60。 9O。 ‘ sin COS Sln COS 0x01CC Ox8OOO O.O1403 1.00000 0x3FFC 0x6EDD 0.49998 O.866l2 0x5A82 0x5A83 0.70709 0.70712 0x6EDC Ox4000 O.866O9 O.50000 Ox8OOO 0x01CC 1.00000 O.O1403 71 维普资讯 http://www.cqvip.com 2007年12月 火控雷达技术 第36卷 由于仿真设计中采用了Stratix器件,该器件的32位加减器工作频率可以达到90MHz以上,为产生高 速的正交信号提供高速可靠的工作时钟。考虑到NCO的工作时钟瓶颈是在相位累加器,因此可以根据具 体需要缩减相位累加器的位数来提高NCO的工作时钟。本文设计的NCO工作时钟为50MHz(工作速度 仿真可以达到160MHz以上),相位累加器的位数为16位,当然NCO输出频率的上限要受到Nyquist定律 的限制,即fout的最大值为fclk/2,实际设计一般不大于0.4fclk,这一点需要注意。 图5 CORDIC仿真图 结束语 本文着重分析了如何在FPGA器件中,利用CORDIC迭代算法产生正余弦信号。结果表明,基于 CORDIC算法的数控振荡器,其简单的流水线结构,使得整个FPGA的资源耗费大为减少,仅用移位寄存器 和加法器就可产生正余弦信号,特别是在资源受限的条件下可明显提高NCO的精度,保留了一般数控振荡 器频率分辨率高、频率变化速度快、相位可连续线性变化、生成的正弦余弦信号正交特性好等特点,非常适用 于在正交数字混频器中进行高速高精度的数字调制解调。 参考文献: Ell杨小牛,楼才义,徐建良.软件无线电原理与应用[M].北京:电子工业出版社. 、 [2-I胡国荣,孙允恭.CORDIC算法及其应用[M].信号处理,1991.12. [3]CORDIC Core Specifications DATASHEET. [43 卓兴旺.基于Verilog HDL的数字系统应用设计[M].北京:国防工业出版社. E53张进,苏凯雄.基于CORDIC算法的高速直接数字频率合成技术的ASIC实现[J-1.现代电子技术, 2005。(12). (上接第43页) 4 结论 根据以上分析,利用橡胶良好的缓冲特性,以整体模压橡胶缓冲器替代原弹簧缓冲器,可以很好地消除 由撞击而产生轴的偏离。不仅实验结果满足使用要求,也完全符合力学原理。该跟踪座其它产品均按此方 法改进,经过半年国家靶场的实弹工作测试,证明该措施有效、可靠、简单、经济。 参考文献: E13 吴凤高.天线座结构设计[M].北京:国防工业出版社,1979. E23龚振邦、陈守春.伺服机械传动装置EM].北京:国防工业出版社,1979. [3] F.S.谢等.机械振动——理论及应用[M].北京:国防工业出版社,1986. [4] 阎以通等.理论力学[M].上海:同济大学出版社,1989. 72 

因篇幅问题不能全部显示,请点此查看更多更全内容