基于流水线结构的cordic算法的实现
- 格式:docx
- 大小:407.75 KB
- 文档页数:10
专利名称:基于并行流水线设计的CORDIC加速器专利类型:发明专利
发明人:毕卓,戴益君,韩冰,王镇,张莹
申请号:CN201210234809.1
申请日:20120709
公开号:CN102799412A
公开日:
20121128
专利内容由知识产权出版社提供
摘要:本发明涉及一种基于并行流水线设计的CORDIC加速器。
它包括一个角度预处理模块、一个CORDIC内核模块、一个数据后端处理模块和一个控制器模块。
本发明先将外部数据线,控制线读入相关的数据信号和控制信号至控制器模块,随后将待求的角度传输至角度预处理模块,然后将处理好的角度与从控制器模块读入的初值一起传送至CORDIC内核模块,其中CORDIC内核模块采用并行16级流水线结构,快速计算出通过角度预处理模块后角度的正弦和余弦这两个数值,随后将计算出的数据和从控制器模块输出的相位控制信号一同传送至后端数据处理模块,判定出所对应初始相位的正余弦值的正负,最后将正弦值,余弦值传送至控制器模块,根据外部控制信号需要正弦值或余弦值,给出相关的结果。
申请人:上海大学
地址:200444 上海市宝山区上大路99号
国籍:CN
代理机构:上海上大专利事务所(普通合伙)
代理人:何文欣
更多信息请下载全文后查看。
ChinalntegratedCircult1.引言数字控制振荡器(NCO,numericalcontrolledos-cillator)是软件无线电、直接数据频率合成器(DDS,Directdigitalsynthesizer)、快速傅立叶变换(FFT,FastFourierTransform)等的重要组成部分,同时也是决定其性能的主要因素之一,随着芯片集成度的提高,在信号处理、数字通信领域、调制解调、变频调速、制导控制、电力电子等方面得到越来越广泛的应用。
图1为NCO的基本图示。
在系统时钟的控制下,相位寄存器以频率控制字(步长)累加,相位寄存器的输出与相位控制字相加,然后输入到函数发生器,产生期望的函数样值。
实现NCO的关键部分是相位-幅度变换电路,即图1中的函数发生器。
传统的实现方法是使用查找表,其优点是简单,准确,但是缺点也是显而易见的,存放相位-幅度的查找表ROM的大小和相位精度的位数成指数关系。
当精度要求很高的时候需要使用外部的ROM来扩展,这样将会降低系统的处理速度。
虽然也有人提出一些改进的查找表方式,来压缩ROM空间[1][2],但是,随着微电子技术的发展,使用实时计算来替代查找表的方式是一大趋势,其能有效的提高系统的处理速度。
在实时算法中,相比较泰勒级数法和反函数求值法两种方法,泰勒级数法的实西安电子科技大学电路设计研究所田力冯琦基于CORDIC算法的NCO实现摘要:NCO在信号处理方面有着广泛的应用。
而函数发生器是NCO中的关键部分,本文基于FPGA用状态机和流水线方法实现了CORDIC算法,并取代了传统的ROM查找表法。
最后通过QuartusII软件给出仿真结果,验证了理论的正确性。
关键字:数字控制振荡器CORDIC现场可编程门阵列TheimplementationofNCObasedonCORDICalgorithmLITian,QIFeng(InstituteofElectronicCAD,XidianUniversity)ABSTRACT:FunctiongeneratoristhemainpartofNCOwhichiswidelyusedinsignalprocessing.AnewCORDICalgorithmimplementedbythestatemachineandpipelinebasedonFPGAisproposedtoreplacethetraditionallook-uptableROMmethodinthispaper.ThesimulatedresultofQuartusIIshowsthatthegiventheoryisefficient.KEYWORDS:NCOCORDICFPGA图1数字控制振荡器结构图现需要乘法器,在硬件的复杂性和速度上受到一些限制;反函数求值法在速度上要比坐标旋转数字计算机(CORDIC,COordinateRotationsDIgitalComput-er)算法慢。
课程设计零:Cordic 算法的流水线结构设计1.1 CORDIC 算法的基本原理假设直角坐标系内有一个向量a ,记作()00,x y ,向量b 是向量a 旋转0z 角度后得到的向量,记作(),n n x y ,如图所示:00,)a y x,n x y图1-1 向量旋转示意图由向量旋转的几何关系,可以得到以下的方程:00000000cos [tan ]cos [tan ]n nx z x y z y z y x z =-⎧⎨=+⎩ (0-1)从a 旋转到b 可以通过多次旋转来逐步逼近。
例如依次旋转45°、26.57°、14.04°……。
假设向量b 是向量a 通过n 次旋转以后得到的,其中第i 次旋转的角度为i θ,那么第i 次旋转的表达式为:11cos [tan ]cos [tan ]i i i i i i i i i i x x y y y x θθθθ++=-⎧⎨=+⎩ (0-2)为了便于硬件实现,规定第i 次旋转的角度1tan (2)i i θ--=±,即45°、26.57°、14.04°……,这样,每次旋转的tan i θ的值可以通过移位实现,每旋转一次,i 加1,由于在[/2,/2]ππ-内,无论i θ正负,cos i θ始终是正值,所以将式(0-2)改写为下式,即:11111[2][2]tan (2)()cos(tan 2)i i i i i i i i i i i i i i i i i i ii x K x y d y K y x d z z d d sign z K -+-+--+--⎧=-⋅⋅⎪=+⋅⋅⎪⎪=-⋅⎨⎪=⎪⎪=⎩ (0-3)其中,i K 是第i 次旋转后产生的增益,化简后得到:1/i K =1i z +是每次旋转后,向量a 与向量b 之间的夹角。
若0i z >,则说明向量a 还需要进行逆时针旋转才能更接近b ,1i d =;若0i z <,则1i d =-。
文章编号:1001-893X (2008)04-0076-04一种基于CO R D I C 算法的高速高精度数字鉴相器3严 平,汪学刚,钱 璐(电子科技大学电子工程学院,成都610054)摘 要:提出了一种基于CORD I C 算法的高速、高精度数字鉴相器。
该数字鉴相器根据正交解调原理测相,采用高速全流水线结构在FPG A 上实现,利用CORD I C 算法实现了数字下变频(DDC )和相角的计算。
本方法不需要正交本振信号与参考信号严格同步,并且允许输入信号的频率与DDC 的NCO 频率存在一定频偏,便于工程实现。
经时序仿真验证,系统工作时钟可达100MHz,在30dB 的信噪比条件下,测相误差小于0.004rad,样本标准差小于0.03rad 。
关键词:正交解调;数字鉴相器;CORD I C 算法;频偏;流水线结构;FPG A 中图分类号:T N763.3;T N953 文献标识码:AA Hi gh -speed and Hi gh -accuracy D i git al Phase De modul atorBased on COR D I C Algor ith mYAN Ping,WAN G Xue -gang,Q I AN Lu(School of Electr onic Engineering,University of Electr onic Science and Technol ogyof China,Chengdu 610054,China )Abstract:An i m p r oved structure of digital phase de modulat or based on CORD I C algorithm is p resented .Phase -shift is measured according t o the p rinci p le of quadrature de modulati on .D igital down converti on (DDC )and calculati on of angle are realized by CORD I C algorith m.The l ocal oscillati on need not be syn 2chr onous with the reference signal,and the frequency of input signal is all owed t o deviate fr om the frequen 2cy of NCO t o a certain extent .Si m ulati on with FPG A shows that phase -shift measure ment is at high -s peed and high -accuracy:it can work at 100MHz syste m cl ock,the err or of phase de modulati on is less than 0.004rad,and the sa mp le standard deviati on is less than 0.03rad when S NR is 30dB.Key words:quadrature de modulati on;digital phase de modulat or;CORD I C algorithm;frequency deviati on;p i p line structure;FPG A1 引 言数字式鉴相器在雷达、通信系统中广泛应用,如雷达系统中的数字式干涉仪测向、高精度高速相位测距等,通信系统中的BPSK 、QPSK 等。
流水线CORDIC算法的FPGA实现作者:赵林军来源:《电脑知识与技术·学术交流》2008年第30期摘要:从CORDIC算法的基本原理出发,讨论其工作过程以及旋转角的覆盖范围,在此基础上,给出了具有流水线结构的FPGA实现结构以及增益因子的大小与流水线级数的确定关系,给出了VHDL实现算法,经程序设计与Quartus6.0调试与仿真,结果表明采用FPGA实现的CORDIC算法具有较好的运算精度。
关键词:CORDIC;VHDL;实现;流水线中图分类号:TP391文献标识码:A文章编号:1009-3044(2008)30-0716-02The Implementation of Pipeline CORDIC Algorithm Based on VHDLZHAO Lin-jun(Shanxi University of Technology, Hanzhong 723003, China)Abstract: From the basal principle of CORDIC algorithm, this paper discusses the algorithmic course of work and its coverage range of revolution angle. Based on this, the article gives a pipelined structure which realized by FPGA and a VHDL program. Compiled and simulated by QuartusⅡ6.0, its operational results has a higher precision. Finally, the essential way to improve the CORDIC performance has been pointed out.Key words: CORDIC; VHDL; Implementation; Pipeline1 引言CORDIC(Coordinate Rotation Digital Computer)算法是J.Vocder[1]于1959年在美国航空控制系统的设计中提出来的一种用于计算平面直角坐标系和极坐标系下函数值的循环迭代算法,J.S Walther[2]将其推广了CORDIC算法,将圆周旋转、线性旋转与双曲线旋转均包括到了同一个CORDIC迭代方程之中,由于该算法仅涉及移位与加减运算,便于软硬件实现,因而受到了人们的广泛关注。
基于CORDIC算法的流水线型FFT处理器设计李靖宇;许江宁;李豹;曹可劲【期刊名称】《电视技术》【年(卷),期】2012(36)23【摘要】首先分析了基二FFT算法的原理以及在FPGA上实现FFT处理器的硬件结构.其次详细研究了在FPGA上实现FFT的具体过程,利用CORDIC算法实现了旋转因子乘法器,解决了整体设计过程中主要面对的几个关键问题,最终利用Verilog编程实现了基二流水线型FFT处理器,利用MATLAB与MODELSIM结合仿真结果表明该设计满足FFT处理器的基本要求,在10 MHz的采样率下完成32点FFT只需要14.45 μs,设计方法也简单易行,具有一定的推广价值.%Firstly, the radix-2 FFT theory and hardware structure on FPGA is analyzed. Next, detailed FFT realization process on FPGA is studied, twiddle factor multiplier is realized by using CORDIC, several crucial questions in the implementation is solved. At last, the pipeline FFT processor is realized by using verilog hardware description language. The simulation resuls by using MODELSIM and MATLAB show that the design basically meets the requirements. In 10 MHz sample rate, 32-point FFT need only 14.45 μs, the method is very simple and worth popularization.【总页数】5页(P61-64,145)【作者】李靖宇;许江宁;李豹;曹可劲【作者单位】海军工程大学导航工程系,湖北武汉430033;海军91821部队,广东潮州515700;海军工程大学导航工程系,湖北武汉430033;海军工程大学导航工程系,湖北武汉430033;海军工程大学导航工程系,湖北武汉430033【正文语种】中文【中图分类】TN962【相关文献】1.OFDM系统中流水线型FFT(IFFT)处理器设计 [J], 钟会新;戴宇杰;张小兴;吕英杰2.基于CORDIC算法的基4DIT-FFT处理器的设计 [J], 李晓彤;李欣3.基于CORDIC算法的FFT处理器设计 [J], 彭清兵;李方军4.基于CORDIC算法的高速基-4FFT处理器设计 [J], 张晓鹏;段哲民;彭彬;霍健5.基于CORDIC算法2K点FFT处理器的硬件设计 [J], 赵宇翔; 陈咏恩因版权原因,仅展示原文概要,查看原文内容请购买。
基于CORDIC算法2FSK调制器的FPGA设计雷能芳【摘要】频移键控(FSK)是用不同频率的载波来传递数字信号,并用数字基带信号控制载波信号的频率.提出一种基于流水线CORDIC算法的2FSK调制器的FPGA实现方案,可有效地节省FPGA的硬件资源,提高运算速度.最后,给出该方案的硬件测试结果,验证了设计的正确性.%The frequency-shift keying (FSK) transmits the digital signal with different frequency carrier, and controls the frequency of carrier with the digital basedand signal. The implementation scheme of2FSK modulator based on pipeltne CORDIC algorithm and FPGA is porposed. It can save the hardware resources and improve the operating speed efficiently.The design was verified by the practical testing result.【期刊名称】《现代电子技术》【年(卷),期】2011(034)009【总页数】3页(P77-79)【关键词】移频键控;调制器;CORDIC算法;FPGA【作者】雷能芳【作者单位】渭南师范学院物理与电子工程系,陕西渭南714000【正文语种】中文【中图分类】TN911-340 引言频移键控(FSK)是用不同频率的载波来传送数字信号,并用数字基带信号控制载波信号的频率。
具有抗噪声性能好、传输距离远、误码率低等优点。
在中低速数据传输中,特别是在衰落信道中传输数据时,有着广泛的应用。
传统上以硬件实现载波的方法都是采用直接频率合成器(DDS)实现。
基于CORDIC算法的数控振荡器的FPGA设计数控振荡器在数字信号处理中有着广泛的应用。
本文研究并实现了基于CORDIC 算法的流水线型数控振荡器。
仿真和验证结果表明,该方法较之查找表法精度高,且结构简单、耗费资源少,非常易于FPGA实现。
引言由于具有频率精度高、转换时间短、频谱纯度高以及频率相位易编程等特点,数控振荡器(NCO)被广泛应用于软件无线电数字上、下变频以及各种频率和相位数字调制解调系统中。
NCO传统的实现方法主要有查表法、多项式展开法或近似法,但这些方法在速度、精度、资源方面难以兼顾。
而采用CORDIC算法来实现超函数时,则无需使用乘法器,它只需要一个最小的查找表(LUT),利用简单的移位和相加运算,即可产生高精度的正余弦波形,尤其适合于FPGA的实现。
数控振荡器原理NCO的目标是产生频率可变的正、余弦波样本,(n=0,1,2...)。
式中,fLO 为本地振荡频率, fS为输入信号的采样频率。
如图1 所示,NCO主要包括3个模块:1. 相位累加器对输入频率控制字M不断累加,得到以该频率字为步进的数字相位。
2. 相位相加器将相位寄存器中的数字相位与相位控制字相加,得到偏移后的当前相位。
设系统的时钟频率为fc,频率控制字为M,相位寄存器位数为N,则数控振荡器输出信号频率为。
根据Nyquist抽样定理,fs最大值为1/2fc,而在实际设计中,一般不应大于时钟频率的1/4。
其频率分辨率为,根据此式,在系统时钟频率不变的情况下,相位寄存器位数N越大,产生信号的频率分辨率越高。
图1 数字控制振荡器结构图3. 函数发生模块,对当前相位进行对应幅度转换后,可以输出任意函数的波形。
函数发生模块最直接的实现方法是只读存储器查找表(ROM LUT)法,将正、余弦波形的抽样存放在ROM中,并通过一个DAC周期地进行输出,从而产生输出波形。
如输出信号幅度位数为a,相位地址位数n所需查找表的大小为a×2n。
测试系统与组件 电 子 测 量 技 术 EL ECTRON IC M EASU REM EN T TECHNOLO GY 第30卷第9期2007年9月 流水线双模COR D IC算法的FPGA实现王梦源 王书省 陈 星(北京航空航天大学电子信息工程学院 北京 100083)摘 要:CORDIC算法将复杂的算术运算转化为简单的加法和移位操作,然后逐次逼近结果。
这种方法很好地兼顾了精度、速度和硬件复杂度,它与VL SI技术的结合对DSP算法的硬件实现具有极大的意义,因而在数字信号处理领域得到了广泛应用。
本文首先简要介绍了CORDIC算法的原理,然后详细描述了双模CORDIC算法的模式控制和范围扩展,并且基于FP GA实现了流水线双模CORDIC算法,给出了综合结果,最后下载到FP GA开发板中验证通过。
这些结果表明,本算法具有良好的性能,并且已经应用到OFDM系统的频率偏移校正中。
关键词:CORDIC算法;FP GA;频率偏移校正;OFDM中图分类号:P613 文献标识码:AImplementation of pipelined dual2mode COR DIC based on FPGAWang Mengyuan Wang Shusheng Chen Xing(School of Elect ronics and Information,Beijing University of Aeronautics&Astronautics,Beijing100083)Abstract:By converting complex arithmetic into simple operations such as adding and shift then gradually approach the exact result,CORDIC algorithm keep s balance between precision,speed and hardware complexity,and whose combination with VL SI performs a great role in the hardware implementation of DSP algorithm,enhance CORDIC has been widely used in the field of digital signal processing.We studied the principle of CORDIC algorithm,and described the mode control and range extension,then the pipelined dual2mode CORDIC algorithm is implemented based on FP GA,results of synthesis is achieved.Eventually the results are downloaded into FP GA development board,which verify the favourable performance of the algorithm which can be used to the f requency off set correction in OFDM system.K eyw ords:CORDIC;FP GA;f requency off set correction;OFDM0 引 言CORDIC(COordinate Rotation DIgital Computer)算法由J.Volder[1]在1959年发表,它通过一系列移位和加法运算实现二维向量的旋转。
CORDIC算法硬件电路实现及改进李庆锋【摘要】文章提出了一种新的基于CORDIC算法的硬件电路实现方法。
首先介绍CORDIC算法及其原理,然后介绍了CORDIC算法的16级流水线结构硬件电路实现,最后介绍了一种新的改进型实现方法,可以有效在兼顾16级流水线结构的高实时性优点的同时,解决CORDIC算法本身对角度范围的限制问题,同时在某种意义上也降低了电路的复杂度。
%The article proposes a new hardware circuit realization method based on CORDIC algorithm. First, it introduces the CORDIC algorithm and its principle. Then it presents the hardware circuit implementation of the CORDIC algorithm using 16 level pipeline structure. At last it recommends a new better method, which can include the high real-time performance and at the same time solve the limits on angle range of CORDIC algorithm. And it also reduces the complexity of the circuit in a certain sense.【期刊名称】《电子与封装》【年(卷),期】2014(000)001【总页数】3页(P31-33)【关键词】NCO;CORDIC算法;16级流水线结构【作者】李庆锋【作者单位】同济大学电子科学与技术系,上海201804【正文语种】中文【中图分类】TN402数字控制振荡器(NCO,Numerical Controlled Oscillator)是软件无线电、直接数字频率合成器(DDS,Direct Digital Synthesizer)、快速傅里叶变换(FFT,Fast Fourier Transform)等的重要组成部分,同时也是决定其性能的主要因素之一。
基于流水线CORDIC结构的DDS实现
邓芳芳; 王厚军; 李力
【期刊名称】《《可编程控制器与工厂自动化(PLC FA)》》
【年(卷),期】2011(000)010
【摘要】CORDIC(Coordinate Rotation Digital Computer)算法只需要通过迭代简单的移位相加操作来完成包括三角函数、双曲函数、对数函数在内的大量函数的计算,因此被广泛应用于信号和图像处理、通信系统、机器人技术等多种领域。
本文在FPGA中实现了一种新型的直接数字频率合成器(Direct Digital Synthesis,DDS),采用流水线结构的MV-CORDIC算法代替了传统DDS中的ROM查找表,用以实现相位到幅度的转换。
从仿真结果可知该方法是可行的。
最后简单地进行了误差分析。
【总页数】4页(P99-101,47)
【作者】邓芳芳; 王厚军; 李力
【作者单位】电子科技大学自动化工程学院
【正文语种】中文
【中图分类】TN4
【相关文献】
1.基于CORDIC算法的流水线型DDS设计 [J], 阮园;谢建华;孙锋
2.基于改进型CORDIC算法和FPGA的DDS实现 [J], 聂伟;饶金玲
3.基于FPGA的流水线CORDIC算法的DDFS设计 [J], 王佳琪;熊先越
4.基于类流水线结构FDDI适配器的设计与实现 [J], 孙利民;李子木;窦文华
5.基于CORDIC算法的流水线型DDS设计 [J], 谢建华;阮圆;孙锋
因版权原因,仅展示原文概要,查看原文内容请购买。
cordic算法的实现结构
CORDIC算法是一种用于计算各种数学函数(如三角函数、指数函数、对数函数等)的迭代算法。
该算法可以在硬件和软件上高效实现,并且不需要存储预先计算的值或使用外部函数库。
CORDIC算法的基本原理是使用迭代的方式逼近所需函数的值。
在每次迭代中,算法通过一系列简单的加法、减法和移位操作来更新计算值。
CORDIC算法的实现结构可以根据具体的应用场景和性能要求进行选择。
以下是几种常见的CORDIC算法实现结构:
1. 串行结构:串行结构是最简单的CORDIC算法实现方式。
在这种结构中,每次迭代只处理一个数据样本,并依次进行迭代直到达到所需的精度。
由于每次迭代都需要计算所有的函数值,因此串行结构需要大量的计算资源。
2. 并行结构:并行结构是一种更高效的CORDIC算法实现方式。
在这种结构中,多个数据样本同时进行迭代,并且每个迭代步骤都由不同的计算单元完成。
这种结构可以显著减少计算时间,但需要更多的硬件资源。
3. 并行流水线结构:并行流水线结构是一种折衷的CORDIC算法实现方式。
在这种结构中,多个数据样本同时进行迭代,但每个迭代步骤都由相同的计算单元完成。
这种结构可以在硬件资源有限的情况下获得较好的性能。
无论选择哪种CORDIC算法实现结构,都需要根据具体的应用场景和性能要求进行权衡和优化。
例如,对于需要处理大量数据的应用场景,并行结构可能更适合;而对于需要高精度计算的应用场景,串行结构可能更适合。
邮局订阅号:82-946360元/年技术创新PLDCPLDFPGA应用《PLC技术应用200例》您的论文得到两院院士关注1引言多进制数字相位调制又称多相制,它是利用载波的多种不同相位(或相位差)来表征数字信息的调制方法。
这样的调制技术比单独使用幅度或相位调制表示更多的信号。
在多进制信号方案中,两个或多个比特组合成符号,在每一个符号期间TS传输一个多进制信号,有较高的传信率;在相同的传信率下,比一般的调制方法更能减小由于信道特性引起的码间干扰的影响,但其调制精度受载频制约。
直接数字频率合成器(DDS)是一种全数字、从相位概念出发直接合成所需波形的一种新的频率合成技术,具有较高的频率分辨率,可以实现快速的频率切换,并且在改变时能够保持相位连续,很容易实现频率、相位和幅度的控制。
传统DDS采用查找表实现相位与幅度值的映射,该方法结构简单、准确度高,并且易于实现,由于查找表在FPGA上实现DDS占据大量的逻辑资源,当设计的系统较大时,需要采用更大容量的FPGA,因此导致其开发成本过高,甚至无法实现,不适合现代通信系统的发展。
本文提出了应用CORDIC实时计算正弦值的方案,可以节省了大量的FPGA逻辑资源。
2MPSK工作原理在多进制相移键控中,载波相位取M个可能值中的一个,即θi=2(i-1)π/M,调制后的波形表达式如下:(1)式中:Es=(1bM)Eb为符号位的能值,Ts=(1bM)Tb为时隙周期。
上面的表达式可以用正交象限形式表述:(2)通过选择基带信号和,MPSK信号可表达如下:(3)3基于CORDIC的DDS结构3.1基于查找表DDS的结构一个基于查找表DDS的结构包括:相位累加器、相位调制器和正弦ROM查找表三部分。
相位累加器完成相位累加功能,产生正弦或余弦载波的相位;相位调制器接收相位累加器的相位输出实现相位调制;ROM查找表固化与相位一一对应的幅值,只要在存储器的输出端加上一个D/A转换器完成数模转换,可直接获得所需的正弦信号。
基于流水线结构的cordic算法的实现摘要系统在处理数据的时候,一个指令周期含有多个时钟脉冲,每个脉冲周期由不同的部件完成不同的操作。
非流水线结构是指一个指令周期完成以后再接受下一条处理数据的指令;而流水线结构,每个时钟脉冲都接受下一条处理数据的指令,只是不同的部件做不同的事情,就象生产线流水操作一样,并不是等一个或一批产品做完,再接受下一批生产命令,而是每个工序完成以后,立即接受下一批生产任务。
这样提高了系统处理数据的速度。
随着超大规模集成电路(Very Large Scale Integrated circuits , VLSI)技术的飞速发展,经常需要用硬件快速和精确地进行三角函数值的计算,而坐标旋转算法(Coordinate Rotational Digital Computer, CORDIC)能够将多种难以用硬件电路直接实现的复杂的三角函数运算分解为统一的加减、移位操作,极大地降低了硬件设计的复杂性。
在现代信号处理中,经常会遇到三角函数、超越函数和坐标转化等问题。
传统的实现方法有查找表多项式展开等方法,但是这些方法在精度、速度、简单性和效率方面往往不能兼顾。
CORDIC 算法则可以很好地兼顾这几方面的要求。
CORDIC算法只使用移位和加减运算,硬件实现简单。
使用流水线结构,每级CORDIC使用独立的单元,这样使运算速度非常快。
当流水线填满之后,每个时钟周期就会得到一个结果。
从CORDIC算法的基本原理出发,讨论其工作过程以及旋转角的覆盖范围,在此基础上,给出具有流水线结构的FPGA实现方法以及增益因子的大小与流水线级数的确定关系,给出了verilog实现算法,在Quartus6.0调试与仿真,验证采用FPGA实现的CORDIC算法的有效性。
关键词: CORDIC 算法 旋转 迭代 verilog 语言 流水线一、 CORDIC 算法原理CORDIC ,即坐标旋转算法(Coordinate Rotations Digital Computr ),是由Voider J 等人于1959 年在设计美国航空导航控制系统的过程中提出来的算法。
其基本思想是通过一系列固定的、与运算基数相关的角度不断偏摆以逼近所需的旋转角度。
由于这些固定的角度与计算基数有关,运算只有移位和加减。
这在FPGA 实现上就有了很大的优势,可以大大的节约硬件资源。
CORDIC 算法包括圆周系统、线性系统、双曲系统,利用三种系统可以实现多种超越函数,再利用函数之间的关系就可以实现更广泛的函数运算。
该算法可以把某个坐标在直角坐标系(x, y)和极坐标系(,)R θ之间进行坐标变换。
1971 年Walter J 提出了统一CORDIC 算法,引入参数m 将CORDIC 算法实现的三种迭代模式圆周、线性和双曲线变换都包括了进来。
统一于一个表达式下,形成目前所用到的CORDIC 算法最基本的数学基础。
如图1-1,初始角为向量1V 旋转角度θ后得到新的向量2V ,根据简单的几何关系有:211211cos sin (1) cos sin (2)x x y y y x θθθθ=-⎧⎨=+⎩经过整理式(1)和式(2),可以得到:211211cos (tan ) (3)cos (tan ) (4)x x y y y x θθθθ=-⎧⎨=+⎩ 从上述分析可知,假设向量经过i 次旋转,每次旋转的角度记作i θ,每一次旋转的角度方向记作i d (−1或+1) ,这样经过n 次旋转后,总共转过的角度为1n i ii d ϕθ==∑我们可将cos θ去除,就得到了伪旋转公式如下:*2*21111tan tan x y y x x y θθ⎧=-⎪⎨=+⎪⎩ 即旋转所得到的(y,x)较真实的值变大-1cos θ倍,但是这样可以简化cordic 过程。
正是通过每次旋转的角度的累积来接近所需要旋转的角度,这样就需要一个因子来判断下一步的旋转向什么方向,即应该加上还是应该减去新旋转的角度。
所以,上述旋转方程应该添加一个旋转因子,即:-1-1-22i i i i i i i i i ix x d y y y d x ++⎧=⎪⎨=+⎪⎩ 在这里,引入一个角度累加器,来判别旋转因子1-i i i i z z d θ+=下面写出经过推广的CORDIC 算法:1/21/21/21/21/211()(0)1tan()cos() (5)()(0)tan()1()(0) n i i i i i i ni i i x n x m d m m y n y m d m z n z d θθθθ==⎛⎫-⎡⎤⎡⎤= ⎪⎢⎥⎢⎥-⎣⎦⎣⎦⎝⎭=+∏∑ (6)其中m =1对应图(1)的圆周旋转运算,而m = −1或0分别对应双曲旋转运算和线性旋转运算,i d 表示旋转的方向,i d =-1表示顺时针旋转,i d =1表示逆时针旋转。
为了表示方便,对式(5)中的1/2tan()i m θ做强制约束,使其等于2i -,这样带来的好处是1/2tan()i m θ就转换成了硬件中的移位运算。
---() (7)-() arctan(2) 12 0 (8)arctan (-2) -1i i i i i i i sign z d sign y m m h m θ⎧=⎨⎩⎧=⎪==⎨⎪=⎩旋转模式向量模式 式(6)和式(5)等价于以下的迭代公式:-1-11-22 (9)-i i i i i i i i i i i i i i x x d y y y d x z z d θ+++⎧=⎪=+⎨⎪=⎩使结果0n z →的旋转称为旋转模式,使0n y →的旋转称为向量模式,旋转过程会带来系数的变换,为了校正,引入校正系数K 。
-1-2-1/20-2-1/21(12)110 (10)-1(1-2)n i i n i i m K m m ==⎧+⎪=⎪⎪==⎨⎪=⎪⎪⎩∏∏ 经过计算,当n 趋近于无穷大时, 1.6467K ≈,1/0.6073K ≈,最终可以通过乘以1/K 来矫正旋转得到的数据。
根据推导,式(9)的n 次迭代可以得到如下结果(m=1,旋转模式)00000000cos -sin cos sin (11)0n n n x x z y z y y z x z z =⎧⎪=+⎨⎪→⎩给定初始条件00,0x K y ==,迭代结果为00cos sin 0n n nx z y z z =⎧⎪=⎨⎪→⎩所以,将所需产生的角度值作为0z 输入,迭代结果输出n x 和n y 就是需要的三角函数值。
采用的迭代方程组为式(9)。
二、 设计分析与实验过程因为角度测定范围要覆盖~ππ-,确定数据格式为 ***.****,****,****,*共计16位,最高位是符号位,而后是两个整数位,低13位为小数位。
按照上面提及的迭代序列:0,1,2,…n-1,所覆盖的角度只有99.9~99.9-+ ,而一般都要求覆盖~ππ-,所以我们采用增加迭代的方法来扩大角度覆盖范围,即增加两个i = 0的迭代,则移位序列为0,0,0,1,2,…n-1。
系统采用流水线结构,总计有18(16+两个0)级流水单元,示意图如图2所示。
图2中的加法单元实际可以完成加减运算,移位器所执行的移位操作则与移位序列对应,角度序列i θ选用如下序列,需存储的角度值(弧度)为下表(1)表1:计算正余弦时的初始弧度值图2:按照图2的结构,用VHDL 描述流水线结构,各流水单元功能简单描述如下表2:各流水单元功能描述在圆周系统中,旋转模式下判决因子:=()di sign zi ,因此,我们输入0x 和0z ,通过迭代,使0z 趋近于0,就可以计算0cos()z 和0()sin z 。
当要计算的角度为30度时,每次旋转的值如下:三、硬件实现使用的主要工具是quartus ii和modelSim SE6.5,其中验证的时候还使用了matlab程序加以验证。
我们的仿真结果如下:其中定标方式采用如下:角度值:8Q , 三角函数值:14Q 计算正余弦值,输入的角度依次是20°30°40°50°60°70°,得到的结果如下:由上述结果可以看出,cordic 算法的精度很高,完全能够满足工程需要。
流水线结构的cordic 速度快,当流水线填满后,每次时钟周期都能够输出一个结果。
只使用移位和加减运算,方便硬件电路的实现。
利用不同的旋转模式和不同的坐标系统以及各种函数之间的关系,coridc 还可以完成更多的超越函数运算,我们完成了三角函数、乘除法、双曲函数、指数、对数的运算。
四、 实验心得与体会大学期间,学习和实践都很重要,实践是为了将我们的理论知识运用到现实生活中。
只有学以致用,才能到达我们学习的目的。
只有不断地付诸实践,才可能会有回报。
在这次科研训练中,我们加强了自己的思考能力和动手能力,对所学的知识有了更深刻的认识。
大学里的学习专业性很强,所以我们要开阔自己的视野,在实践中锻炼自我,发现自己各方面的不足,只有这样才能够提高自己的思考问题的能力和解决问题的能力。
此次科研训练,我们尽力使其完善,也得到了各方面的帮助,但由于经验及专业方面的知识不是很充足,所以也会存在一些不可避免的问题。
我们经常说“学以致用”,很多人感慨在大学里学到的很多知识在工作的时候无法应用。
但是从这次科研训练的过程和结果来看,实践的过程是运用理论知识的最佳时机。
在此要非常感谢在科研训练中给我们提供了很大指导和帮助的老师,我们正是有了你们的细心教导,才能顺利完成了任务。
五、参考文献[1] 杨宏, 李国辉, 刘立新. 基于FPGA的CORDIC算法的实现[J]. 西安邮电学院学报, 2008年1月, 13(1).[2] 李滔, 韩月秋. 基于流水线CORDIC算法的三角函数发生器[J]. 系统工程与电子技术, 2000, 22(4).。