- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于CORDIC算法的OFDM 系统载波同步实现
0 引言
OFDM正交频分复用技术是一种特殊的多载波传输方案,它可以看作是一种调制技术,也可以看作是一种复用技术。OFDM正交频分复用技术具有许多其他无线通信技术所无法比拟的优越性,其中一个主要原因就在于它能很好的对抗频率选择性衰落或窄带干扰。同时,它也是一种并行技术,可通过将一个高速数据流分割成许多低速的数据流并在多个子载波上并行传输,从而实现数据的高速传输。
OFDM正交频分复用技术与一般的多载波传输技术的不同之处在于,该技术允许子载波频谱相互重叠,只要满足子载波间的相互正交就可以从混叠的子载波中分离出数据信息,从而使得频谱利用率大大提高。由此可见,OFDM正交频分复用技术对本来无线资源就十分贫乏的无线通信来说,是一种高效的传输技术。然而,OFDM系统对频率偏移又非常敏感,这是因为,频偏会破坏子载波间的正交性,并引入子信道间干扰(I-CD,从而导致各子信道不能正确解调。因此频偏估计算法的设计与实现是OFDM系统中的一个重要问题。
本文首先分析了残余频偏估计和校正的系统原理,然后重点介绍了双模CORDIC算法的原理与FPGA设计。最后给出了基于FPGA的整个系统实现方案。
1 OFDM系统与载波频偏对系统的影响
OFDM正交频分复用系统的结构如图1所示。在无线通信系统中,由于接收端和发送端的载波振荡器之间不可避免地存在着差异,同时由于移动信道中的多普勒频移和相位噪声的影响,使得接收机本地的载波和接收到的OFDM正交频分复用信号的载波之间不可避免的存在着偏差。事实上,与单载波系统相比,OFDM系统对载波频偏更加敏感。
图2所示是小数倍载波频率偏差对FFT之后各个子载波的影响。可见,小数部分频偏会使子载波间不再正交。从而发生能量泄漏并产生ICI,使系统性能急剧恶化。
2 载波频偏方案设计
本文介绍的设计方法采用的是Schmidl同步方案,其同步方案框图如图3所示,并在每一个OFDM数据帧前加入由重复的PN序列组成的OFDM训练符号。[p]
在接收端,通过对训练序列的延迟相关,可以得到如下公式:
然后对上式求相角,可以得到:
如果|ψ|的值能够保证小于π,那么,其频偏估计值为:
对于载波频率偏移的计算与补偿,一般需要实现的两个最重要的功能:第一是求相角的功能,第二是需要产生纠正频偏用的和函数。求相角函数的实现有许多可行的方法。其中最直观的就是通过复数虚部对实部的比值,也就是求反正切来得到角度值。这样就引入了除法运算,并且需要在RAM里建立一个反正切函数的查找表。另一种方法是使用CORDIC算法,该算法在多次迭代的情况下,只需要很少的硬件资源,但由于迭代计算的特点,所以会有几个时钟周期的时延。由于相角的计算在每一个帧到来时只需要计算一次,所以,这个很小的时延不会对系统的性能造成影响。由于采用查找表的方法计算反正切函数需要大量的RAM空间,所以,设计时可采用CORDIC算法来实现角度的计算。
3 CORDIC算法原理与FPGA实现
3.1 CORDIC算法
计算三角函数和其它一些硬件不易实现的函数,一般可使用查表法、多项式展开或近似的方法。这些方法均不能兼顾速度、精度、简单性等方面的要求。CORDIC算法则是为解决这种问题而产生的。它从算法本身人手,可将复杂的算法分解成一些在硬件中容易实现的基本算法,如加法、移位等,从而使这些算法在硬件上可以得到较好的实现。由于该算法是一种规则化的算法,它满足硬件对算法的模块化、规则化要求,因此,CORDIC算法是可以充分发挥硬件优势并利用硬件资源来实现硬件与算法相结合的一种优化方案。
3.2 用于频偏校正的CORDIC算法的旋转模式
假设直角坐标系内有一个向量a(xa,ya),逆时针旋转θ角度后得到另一个向量b(xb,yb),那么,这个过程可以表示为:
如果向量a(xa,ya)经过n次旋转才到达向量b(xb,yb),其中第i次旋转的角度为θi,那么,第i次旋转的表达式为:
CORDIC算法的旋转示意图如图4所示。图中,若取旋转的角度总和
这里的Si={-1;+1}。其中Si=+1表示向量是逆时针旋转,Si=-1表示向量是顺时针旋转。式中:
随着旋转次数的增加,该式将收敛为一个常数k:
如果暂时不考虑这个增益因子k,则有:
这就是CORDIC的迭代式,它只需要通过移位和相加就可以完成矢量的旋转。其向量a向向量b逼近的精度由迭代的次数决定,迭代的次数越多,逼近的精度越高。而引入变量z则表示进行i次旋转后与目标角度之差。这样,迭代n次所得到的最终结果为:
可以看出,此模式下,便可求出给定角度的三角函数值。[p]
3.3 用于频偏估计的CORDIC算法的向量模式
另外一种工作模式是向量工作模式,向量模式就是不断地使yi趋近于0。在向量模式下,CORDIC迭代n次得到的最终结果为:
可以看出,此模式下可以求出给定向量的模值和角度。
4 仿真结果
仿真设计中的CORDIC框图如图5所示。其中输入和输出的位宽均为可变的参数,并可根据系统的实际需要进行调整。输入和输出均为二进制有符号的补码形式。这里需要注意的是,z的取值范围为[-π,π],假设z的位宽为z_bits,则π=2z_bits-1,-π=-2z_bits-1。图6所示是其仿真波形图
5 结束语
本文介绍了OFDM中频偏估计和校正的基本原理,及频偏对OFDM系统的影响。重点介绍了CORDIC算法的两种模式在频率同步中的应用。并在FPGA中对系统进行了仿真验证,结果证明:本设计的数据位宽可以跟据系统对误差的要求来确定,并可根据实际项目的需求来设置。
射频工程师养成培训教程套装,助您快速成为一名优秀射频工程师...
天线设计工程师培训课程套装,资深专家授课,让天线设计不再难...
上一篇:基于FPGA的电动机微机保护实现方法
下一篇:单交叉路口半感应控制器设计
闂傚倸鍊搁崐鎼佸磹瀹勬噴褰掑炊椤掑鏅悷婊冪箻楠炴垿濮€閵堝懐鐤€濡炪倖妫佸Λ鍕償婵犲洦鈷戠憸鐗堝笒娴滀即鏌涢悩鍐叉诞鐎规洘鍨块獮姗€骞囨担鐟板厞婵$偑鍊栭崝鎴﹀垂閸︻厾鐭堟い鏇楀亾婵﹥妞藉Λ鍐ㄢ槈濞嗘ɑ顥i梻浣呵归敃銈夆€﹂悜鐣屽祦闁硅揪绠戠粈瀣亜閹烘垵鈧骞婂┑鍡╂富闁靛牆妫涙晶顒傜棯閺夎法孝闁宠绉电换婵嬪炊閵娿垺瀚藉┑鐐存尰閸╁啴宕戦幘瀵哥濞达絽鍟垮ú锕傚疾椤掑嫮鍙撻柛銉e妿閳藉鏌i幒鎴犱粵闁靛洤瀚伴獮鎺楀箣濠垫劒鎮i梻浣芥閸熶即宕伴弽顓炶摕闁哄洢鍨归柋鍥ㄧ節閸偄濮堥弫鍫ユ⒒娴e懙褰掝敄閸愵喖绀夌€广儱顦闂佸憡娲﹂崹浼村礃閳ь剟姊洪棃娑掑悍濠碘€虫搐閳绘捇濡堕崱娆戠槇闂佸啿鐨濋崑鎾绘煕閺囥劌澧版い锔垮嵆濮婃椽宕崟顓犲姽缂傚倸绉崇欢姘舵偘椤斿槈鐔煎礂閻撳孩鐎梻浣告啞濞诧箓宕㈣ぐ鎺戠劦妞ゆ巻鍋撻柨鏇ㄤ簻椤繐煤椤忓懎浠梺鍝勵槹鐎笛傜昂濠碉紕鍋戦崐鏍垂閻㈡潌鍥偨缁嬭銉ッ归敐鍛棌婵炵鍔戦弻宥堫檨闁告挾鍠栭悰顕€宕橀纰辨綂闂侀潧鐗嗛幊搴g玻濞戞瑧绡€闁汇垽娼у瓭闁诲孩鍑归崢濂稿煝閹炬椿鏁婇柛鎾楀拑绱抽梻浣呵归張顒勬嚌妤e啫鐒垫い鎺戝濡垹绱掗鑲╁缂佹鍠栭崺鈧い鎺戝閳ь兛绶氬浠嬵敇閻愭鍚呴梻浣瑰濞插秹宕戦幘鍓佺<闁绘瑢鍋撻柛銊ョ埣瀵濡搁埡鍌氫簽闂佺ǹ鏈粙鎴︻敂閿燂拷 | More...
闂傚倸鍊搁崐鎼佸磹瀹勬噴褰掑炊椤掑鏅悷婊冪箻楠炴垿濮€閵堝懐鐤€濡炪倖妫佸Λ鍕償婵犲洦鈷戠憸鐗堝笒娴滀即鏌涢悩鍐叉诞鐎规洘鍨块獮姗€骞囨担鐟板厞婵$偑鍊栭崝鎴﹀垂閸︻厾鐭堟い鏇楀亾婵﹥妞藉Λ鍐ㄢ槈濞嗘ɑ顥i梻浣呵归敃銈夆€﹂悜鐣屽祦闁硅揪绠戠粈瀣亜閹烘垵鈧骞婂┑鍡╂富闁靛牆妫涙晶顒傜棯閺夎法孝闁宠绉电换婵嬪炊閵娿垺瀚藉┑鐐存尰閸╁啴宕戦幘瀵哥濞达絽鍟垮ú锕傚疾椤掑嫮鍙撻柛銉e妿閳藉鏌i幒鎴犱粵闁靛洤瀚伴獮鎺楀箣濠垫劒鎮i梻浣芥閸熶即宕伴弽顓炶摕闁哄洢鍨归柋鍥ㄧ節閸偄濮堥弫鍫ユ⒒娴e懙褰掝敄閸愵喖绀夌€广儱顦闂佸憡娲﹂崹浼村礃閳ь剟姊洪棃娑辨Ф闁稿寒鍣e畷鎴﹀箻鐠囨彃鍞ㄥ銈嗗姉閸犲孩绂嶉悙顒佸弿婵☆垳鍘ф禍楣冩倵濮樼偓瀚�婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柟闂寸绾惧鏌i幇顒佹儓闁搞劌鍊块弻娑㈩敃閿濆棛顦ョ紓浣哄Т缂嶅﹪寮诲澶婁紶闁告洦鍓欏▍锝夋⒑缁嬭儻顫﹂柛鏃€鍨垮濠氭晲婢跺﹦鐤€闂傚倸鐗婄粙鎴﹀煕閹烘垟鏀介柣鎰皺婢ф梻绱掗鐣屾噰鐎殿喖顭锋俊鎼佸煛閸屾矮绨介梻浣呵归張顒傜矙閹达富鏁傞柨鐕傛嫹闂傚倸鍊搁崐鎼佸磹閹间礁纾归柣鎴eГ閸ゅ嫰鏌涢幘鑼妽闁稿繑绮撻弻娑㈩敃閿濆棛顦ラ梺姹囧€楅崑鎾舵崲濠靛顥堟繛鎴濆船閸擃參姊洪柅鐐茶嫰閸樻悂鏌i幒鐐差洭闁瑰箍鍨归埞鎴犫偓锝庝簽閸婄偤姊洪懖鈹e綊鎮樺顑芥瀺闁瑰墽绮埛鎺懨归敐鍛暈闁哥喓鍋炵换娑氭嫚瑜忛悾鐢碘偓瑙勬礃缁矂鍩ユ径鎰潊闁抽敮鍋撻柟绋垮暣濮婃椽宕ㄦ繝鍐槱闂佺ǹ绻戠粙鎾诲箲閵忋倕骞㈡繛鎴炵懅閸橆亪姊洪崜鎻掍簼缂佽鍟村畷宕囨喆閸曗晙绨婚棅顐㈡处閹搁箖骞楅悩鐫酣宕惰闊剚銇勯姀鈩冪妞ゃ垺顨嗛幏鍛村礈闊厾澶�
闂傚倸鍊搁崐鎼佸磹瀹勬噴褰掑炊椤掑鏅悷婊冪箻楠炴垿濮€閵堝懐鐤€濡炪倖妫佸Λ鍕償婵犲洦鈷戠憸鐗堝笒娴滀即鏌涢悩鍐叉诞鐎规洘鍨块獮姗€骞囨担鐟板厞婵$偑鍊栭崝鎴﹀垂閸︻厾鐭堟い鏇楀亾婵﹥妞藉Λ鍐ㄢ槈濞嗘ɑ顥i梻浣呵归敃銈夋倶濠靛鍋╅梺鍨儑闂勫嫮绱掔€n亞浠㈢€规挸妫濆铏圭磼濡搫顫嶅銈嗘⒐閻楁洖宓勫┑鐐叉▕娴滄繈鎮¢悢鍏肩厽闁哄倹瀵ч幉鎼佹煟椤撶偠瀚版い顓″劵椤﹁櫕銇勯妸銉уⅵ鐎殿噮鍋婇、姘跺焵椤掑嫮宓侀柟鐑橆殔缁秹鏌嶈閸撶喎顕i崘娴嬪牚闁割偆鍠撻崢鐢告⒑鐠団€崇仭婵犮垺枪椤e潡姊绘担铏瑰笡闁规悂绠栧畷浼村箛閺夎锕傛煕閺囥劌鐏遍柡浣稿暞閵囧嫰骞囬埡浣轰患缂備胶濮惧畷鐢垫閹惧瓨濯撮柣銈庡灠閸橈繝姊虹粙璺ㄧ闁挎洏鍨归锝嗙節濮橆厽娅滄繝銏e煐钃遍柡鍜冪秮濮婅櫣绱掑Ο鍝勵潔缂備椒鐒﹂幐鎶界嵁閹版澘绀冩い鏃囆掗幏娲⒑閼姐倕鏋戞繝銏∶嵄缂備焦菧娴滄粓鏌熺€涙ḿ绠ユ俊顖楀亾闂備胶绮笟妤呭闯閿濆宓侀悗锝庡枟閺呮繈鏌嶈閸撴稓鍒掔拠娴嬫闁靛繆妾ч幏濠氭⒑閸撴彃浜為柛鐘虫崌閸╁﹪寮撮姀锛勫幈婵犵數濮撮崐鍧楀矗閸曨剚鍙忓┑鐘插鐢盯鏌熷畡鐗堝殗闁圭厧缍婇悰顔芥償閹惧厖澹曟繝鐢靛Т濞诧箓鎮″☉銏$厱婵炴垵宕弸銈囩磼閻橀潧浠遍柡灞炬礋瀹曢亶寮撮悩鎻掝瀴缂傚倷鑳剁划顖滄崲閸繄鏆﹂柛顐f礃閸ゅ鏌涢…鎴濅簼闁绘繐绠撳濠氬磼濞嗘埈妲梺瑙勭ゴ閳ь剝绉ú顏呮櫇闁稿本鑹鹃崑宥夋⒑娴兼瑧鍒板璺烘喘瀹曟垿骞橀幇浣瑰兊濡炪倖鎸鹃崑娑㈠箺閻㈠憡鈷戦柛婵嗗濠€浼存煟閳哄﹤鐏﹂柣娑卞枛铻e〒姘煎灡鐎靛矂鏌i悩鍙夌┛鐎殿喗鎸荤粩鐔煎即閵忊檧鎷绘繛杈剧到閹诧繝骞嗛崼銉︾厽妞ゆ挾鍎愬Ο鈧Δ鐘靛仜缁绘﹢寮幘缁樻櫢闁跨噦鎷�
闂傚倸鍊搁崐鎼佸磹閹间礁纾瑰瀣捣閻棗霉閿濆牊顏犵紒鈧繝鍌楁斀闁绘ɑ褰冮埀顒€顕槐鎾愁潩鏉堛劌鏋戦梺鍝勫暙閻楀嫰鍩€椤戣法绐旂€殿喕绮欓、姗€鎮欓懠鍨涘亾閸喒鏀介柨娑樺娴犙呯磼椤曞懎鐏︾€殿噮鍋婇幃鈺冪磼濡攱瀚奸梻鍌欑贰閸嬪棝宕戝☉銏″殣妞ゆ牗绋掑▍鐘炽亜閺傛娼熷ù婊勭矋閵囧嫰骞樼捄杞版勃闂佺ǹ顑冮崕鎶藉焵椤掑喚娼愭繛鍙夌矒楠炲﹪骞樼拠鑼弨婵犮垼娉涜墝闁哄閰i弻鐔兼焽閿曗偓閺嬫稓绱掗幓鎺撳仴婵﹤顭峰畷鎺戔枎閹存繂顬夐梻浣筋嚃閸犳牠鎮ラ悡搴f殾闁圭増婢橀崡鎶芥煟韫囨凹鍤欑紓宥咃躬楠炲啫饪伴崼鐔风檮婵犮垼娉涢惌鍫ュ船閻㈠憡鈷戦悹鍥ㄥ絻閸よ京绱撳鍛棦鐎规洑鍗冲浠嬵敃閵堝嫮鐟濋梻浣告惈鐞氼偊宕曢弻銉﹀亗婵炲棗绶疯ぐ鎺撳亗閹艰揪绲鹃幉鐓庘攽閻愭潙姣嗛柛銉e妿閸橀潧顪冮妶鍡橆梿鐎规洜鏁哥划锝夊籍閳ь剟骞堥妸锔剧瘈闁告侗鍣禒鈺呮⒑閸涘﹦澧柣妤冨Т椤曪綁骞橀钘変簻闂佸憡绺块崕杈╁緤閸喒鏀介柨娑樺娴滃ジ鏌涙繝鍐ㄧ伌鐎规洜顢婇妵鎰板箳閹惧瓨鐝栨俊鐐€曠换鎰版偋閸曨垰鐒垫い鎴f硶椤︼箓鏌嶇拠鏌ュ弰妤犵偞锚閻g兘宕堕懜鏁屟冣攽閿涘嫬浜奸柛濠冪墵楠炴劖銈i崘銊х崶闁瑰吋鐣崝宥夊磻閻旇褰掓偂鎼达絾鎲奸梺鎶芥敱閸ㄥ潡寮诲☉妯锋婵鐗婇弫楣冩煟鎼达紕浠涢柣鐔叉櫊瀵顓奸崼顐n€囬梻浣告啞閹搁箖宕版惔顭戞晪闁挎繂妫涚弧鈧┑顔斤供閸樿棄鈻嶉姀銈嗏拺閻犳亽鍔屽▍鎰版煙閸戙倖瀚�
婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柛娑橈攻閸欏繐霉閸忓吋缍戦柛銊ュ€婚幉鎼佹偋閸繄鐟查梺绋匡工閻栧ジ寮诲☉銏╂晝闁绘ɑ褰冩慨搴ㄦ⒑濮瑰洤鈧宕戦幘鑸靛床婵犻潧顑嗛ˉ鍫熺箾閹存繂鑸归柛鎾插嵆濮婃椽宕ㄦ繝鍛棟缂傚倸绉撮敃顏堟偘椤曗偓瀵粙濡搁敂鍓ら梻浣告啞閹稿棝宕ラ柨瀣仸缂佺粯绻傞埢鎾诲垂椤斿彞鍝楅梻渚€娼ч悧濠囧箖閸屾凹鍤曞┑鐘崇閸嬪嫰鏌i幋鐏活亪寮搁崒鐐粹拺闁告稑锕ユ径鍕煕鐎n亜顏い銈呭€垮濠氬磼濞嗘埈妲梺纭咁嚋缁绘繂鐣峰ú顏勭妞ゆ棁鍋愰敍娑㈡⒑閻熸澘鈷旂紒顕呭灦閹繝鎮㈤悡搴n啇濠电儑缍嗛崜娆撳焵椤戞儳鈧洖鐜婚崸妤€绠涢柣妤€鐗忛崢闈涱渻閵堝棙顥嗛柛瀣姍瀹曟椽鏁愰崶锝呬壕閻熸瑥瀚粈鍐╃箾閼碱剙鏋涢柣娑卞枟閹棃濡搁敃鈧惂鍕節閵忥絾纭鹃柤娲诲灦閻涱噣骞掑Δ浣叉嫽婵炶揪绲挎灙闁诡喗鍨圭槐鎺撴媴鐟欏嫬鍞夐悗娈垮枟瑜板啴銈导鏉戦唶婵犻潧娲╃欢銏$節閻㈤潧孝闁挎洏鍊濋幃褎绻濋崶銊ヤ簵闂佸搫娲ㄩ崰鍡樼濠婂牊鐓欓柡澶婄仢椤f娊鏌熼鍨汗缂佽鲸甯¢幃鈺冪驳绾應鍋撻崸妤佺厸閻忕偛澧介埥澶嬨亜椤愶絿绠炴い銏★耿閹晠宕橀崣澶屽酱闂傚倸鍊峰ù鍥敋閺嶎厼绐楁繛鎴緛缂嶆牕顭跨捄铏圭伇缂佺姵妫冮弻锝夊籍閸屾艾浠橀梺缁樺姇閿曪箓骞夌粙娆惧悑闁搞儮鏅欑粭澶愭⒑閼姐倕鏋涢柛瀣工閵嗘帗绻濆顓犲帾闂佸壊鍋呯换鍌炲汲濞嗗繆鏀介柨娑樺濞呮洜绱掓潏銊ユ诞妞ゃ垺鐟︾缓鐣岀矙閸喖寮峰┑掳鍊楁慨鐑藉磻濞戔懞鍥敍濠靛牅绨烽梻鍌欑閹测剝绗熷Δ鍛獥婵°倐鍋撻柍璇茬Ч婵偓闁靛牆妫岄幏娲煟閻樺厖鑸柛鏂胯嫰閳诲秹骞囬悧鍫㈠幍闂佸憡鍨崐鏍偓姘炬嫹