摘 要: 提出了一种改进的向量模式下的CORDIC算法——MV-CORDIC算法,可以用来实现通信系统中频偏估计幅角的计算。仿真结果表明,该算法相比传统的CORDIC算法,可以大幅度减少CORDIC算法的迭代次数。算法输出幅角的误差小,可以利用其实现频偏估计中幅角的计算。
关键词: CORDIC;频偏估计;OFDM
正交频分复用(OFMD)技术具有抗多径、频谱利用率高等特点,在宽带无线传输领域中得到广泛的应用。无线局域网(WLAN)标准802.11a/b/g均将OFDM技术作为其物理层的标准。然而在OFDM系统中,系统对载波频偏极为敏感。载波频偏会破坏载波间的正交性,引入的子信道间的干扰(ICI),导致各子信道不能正确解调,带来严重的误码,使系统的性能大幅度下降。因此,频偏估计算法的设计和实现是OFDM系统中一个重要的问题。采用基于训练符号的时域相关算法计算频偏时,需要在小数倍频偏估计阶段对频偏的幅角进行计算[1]。一般采用CORDIC(Coordinate Rotation Digital Compute)[2]算法实现幅角的计算,这种算法的显著特点是用硬件实现该算法时只需要加法器和移位寄存器,因此在现代通信系统中得到了广泛使用。但是,CORDIC算法的迭代次数和输入数据的字长相同,对于输入字长为N的数据需要迭代N次才能得到最精确的幅角值。
随着超大规模集成电路VLSI(Very Large Scale Integrated Circuites)的发展,提高CORDIC算法的速度和精度,已经提出了很多改进的CORDIC算法[3-6],但主要集中在旋转模式中对CORDIC算法的改进。参考文献[7]提出一种类CORDIC算法来计算幅角值,但没有减少CORDIC算法的迭代次数。本文提出了一种改进的向量模式下的CORDIC算法——MV-CORDIC算法,在满足一定输出精度的条件下能有效减少算法的迭代次数。
1 CORDIC算法
CORDIC是一种在直线、圆弧和双曲坐标系统下进行复杂计算的迭代算法。CORDIC只用移位和加法操作就可以完成复杂运算的实现。在直角坐标系统中,它包括旋转模式(Rotation Mode)和向量模式(Vector Mode)两种操作模式。旋转模式指的是用一对初始向量(x0,y0)和一组角度序列{?兹i}去逼近一个目标向量(xn,yn)。向量模式用来计算初始向量(x0,y0)的模和幅角。该算法的统一算法模式[8]如式(1)和表1所示。
2 MV-CORDIC算法
CORDIC将简单的运算分解为加法和移位运算,大大减少了运算量,适合FPGA以及硬件逻辑的实现。但是CORDIC算法是一个线性收敛和顺序执行的迭代算法,即对N位精度至少需要N次迭代,第i次迭代只有在第i+1次迭代完成后才能执行。这些特性限制了CORDIC算法的计算速度。提高CORDIC计算速度的方法主要有:(1)减少CORDIC算法每次迭代所用的时间;(2)减少CORDIC算法的迭代次数。在旋转模式下有很多算法采用并行方法来加速CORDIC的计算。比如并行CODIRC旋转算法[9]和MVR-CORDIC算法[10]。
本设计借鉴MVR-CORDIC[10]算法在旋转模式下对角度处理的思想,改进向量模式下CORDIC的计算,提出MV-CORDIC算法,使算法在保证一定输出精度的前提下迭代次数变少。
2.1 算法思路
基于MVR-CORDIC的思想,本设计中的算法改变了传统CORDIC算法中的微循环,算法的主要特点如下。
(1)跳过某些微循环。这样不仅能减少迭代次数,还可以提高角度循环的精度,比如:X0=1,Y0=1,按照传统CORDIC算法迭代7次,最终的幅角值的残余误差为0.015;如果采用本设计的算法只需要进行一次?琢i=π/4的微循环,而跳过其他微循环,所得幅角的残余误差为0;
(2)重复某些微旋转。传统CORDIC算法对基本角度的集合中的每个元素只能使用一次,对某些特殊的X0、Y0,其幅角为基本角度集的整数倍时,本算法进行多次相同基本角度的微旋转,这样也能减少幅角的残余误差;
(3)大大减少了迭代次数。传统的CORDIC算法为能达到一定的精度一般要求迭代次数Rm等于字长W,而在本算法中,迭代次数Rm<<W。如上所述,本算法的迭代方程式可以改写为:
3.3 仿真测试
MATLAB仿真测试分别使用16 bit定点数来表示输入的辐角。对10万组X0,Y0随机数据采用不同的迭代次数,得到MV-CORDIC算法和原始CORDIC算法对比结果及真实值的平均精度差,分别如图1和表2所示。可以看到,MV-CORDIC算法大大降低了算法的迭代次数,使得系统可以根据输出数据精度的要求,选择更少的迭代次数来实现频偏估计幅角的计算。
本文提出了MV-CORDIC算法来实现通信系统中频偏估计幅角的计算,以减少CORDIC算法的迭代次数。通过仿真实验可以看到,在保证一定精度的情况下,采用MV-CORDIC算法对比传统模式下的CORDIC可以大大地减少迭代次数。采用MV-CORDIC算法优于原始CORDIC算法,可以用于频偏估计,提高通信系统的信噪比。
参考文献
[1] MOOSE P H. A technique for orthogonal frequency division multiplexing frequency offset correction[C]. IEEE Transactions on communications, 1994.
[2] VOLDER J E. The CORDIC trigonometric computing technique[J]. IRE Transactions on Electronic Computers,1959,EC-8(3):330-334.
[3] Wu Chengshing, Wu Anyue. Modified vector rotational CORDIC(MVR-CORDIC) algorithm and its application to FFT[J]. IEEE Transactions on Circuits and Systems, 2001, 48(6):548-561.
[4] JUANG T B, HSIAO S F, TSAI M Y. Para-CORDIC: Parallel CORDIC rotation Algorithm[J]. IEEE Transactions on Circuits and Systems, 2004,51(8):1515-1524.
[5] HU Y H. CORDIC-based VLSI architecture for digital signal processing[C]. IEEE Signal Processing,1992.
[6] KUHLMANN M, PARHI K K. A high-speed CORDIC algorithm and architecture for DSP application[C]. IEEE Workshop Signal Processing Systems(Sips), Taipei, Taiwan, 1999.
[7] MAHARATNA K, TROYA A, KRSTI?譩 M, et al. A CORDIC like processor for computation of arctangent and absolute magnitude of a Vector[C]. IEEE ISCAS ′04, Vancouver (Canada), May 2004.
[8] WALTHER J S. A unified algorithm for elementary functions[C]. Spring joint computer conference, May 18-20, 1971.
[9] 雷元武,周杰,葛颖增,等.并行CORDIC算法的研究及FPGA实现[J].计算机工程与科学,2008(8):259-261.
[10] 甘露,吴国纲,徐政五,等.改进型MVR-CORDIC算法研究[J].电子科大学报,2004,33(5):489-491.