摘 要: 隨著無線技術(shù)的發(fā)展,,人們對無線網(wǎng)絡(luò)的需求越來越大,。特別是近幾年來,在局域網(wǎng)通信中,,WiFi技術(shù)的引入以及其地位的不斷提高,,引起人們對無線局域網(wǎng)通信中傳輸速度的研究不斷深入,。而在對其探索與設(shè)計中,對于信號的偏移角度值的計算(CORDIC)也一直進行著調(diào)整與優(yōu)化,。因此,,本文以無線局域網(wǎng)中利用CORDIC算法實現(xiàn)數(shù)字控制振蕩器(NCO)作為研究重點,并利用FPGA對其進行實現(xiàn)與分析,。
關(guān)鍵詞: 無線局域網(wǎng),;CORDIC算法;NCO,;FPGA
0 引言
1957年J.Volder引入了坐標旋轉(zhuǎn)數(shù)字計算機(Coordinate Rotation Digital Computer)算法,,從而開始利用CORDIC算法[1]計算角度的偏移。在上個世紀,,由于技術(shù)上的限制與落后,,利用普通方法去計算角度比較困難,所以使用CORDIC變得非常必要,,從而使CORDIC算法得到了推廣與應(yīng)用,。
現(xiàn)如今,WiFi技術(shù)已成為人們生活中不可或缺的一部分,,人們對它的依賴使得更多的人開始不斷地對其進行研究與創(chuàng)新,。在WiFi通信中,所需信息由于一些噪音干擾會丟失理想的同步特性,,角度偏移是其中最大的問題,,因此如何能夠快速準確地得到需要的角度偏移信息,進一步消除偏移帶來的負面影響是這項技術(shù)的關(guān)鍵,,從而將CORDIC算法引入NCO[2]中變得非常必要,。
1 CORDIC算法的原理
設(shè)一個矢量(Xi,Yi)旋轉(zhuǎn)一個角度?茲可以得到一個新的矢量(Xj,,Yj),。那么這種旋轉(zhuǎn)關(guān)系可以用如下式(1)表示:
旋轉(zhuǎn)示意圖如圖1所示。通過迭代的方式,,可以用式(2)表示迭代過程:
取每個累加步進值為:,,那么總的選擇角度為:
,其中Sn={-1,,+1},,這里假設(shè)Sn為每次迭代所產(chǎn)生的小角度旋轉(zhuǎn)的方向。通過這個步驟,,上面的式(2)可以表示為下式(3):
2 CORDIC算法在無線局域網(wǎng)中的應(yīng)用
在無線局域網(wǎng)通信中,,接收信息的準確無誤是無線技術(shù)的前提,但是在傳輸過程中,,信息會受到白噪聲等一些因素的干擾,,變得延遲與失真,,因此解決這些不利影響得到通信需要的正確信息便成了無線技術(shù)的核心。
在信息進行無線傳輸時,,時頻同步有效地解決了信息失真延遲帶來的影響,,特別是在所需信息發(fā)生角度偏移時,能有效地去除偏移角度的影響,,從而達到同步效果,。而同步的關(guān)鍵就在于是否能夠正確求得偏移的角度,因此CORDIC算法的使用無疑是無線通信中必不可少的一部分,。在此基礎(chǔ)上,,既要實現(xiàn)占用資源的減少,又要達到精度與速度的要求,,偽旋轉(zhuǎn)方法從而得到廣泛應(yīng)用,。
利用CORDIC算法[3]求得的偏移角度值,可以用來實現(xiàn)數(shù)字下變頻中的數(shù)字控制振蕩器(NCO)[4]的設(shè)計,,通過逐次逼近的方法實現(xiàn)三角函數(shù)的計算,,從而便可以在后續(xù)設(shè)計中去除掉偏移載波帶來的影響,達到時頻同步的要求,。用此方法實現(xiàn)NCO的最大優(yōu)勢在于僅做加減和移位運算,,結(jié)合流水線,便可以在每一個時鐘周期輸出一個經(jīng)過n次迭代的結(jié)果,,而對于旋轉(zhuǎn)的精度要求,,一般情況下,旋轉(zhuǎn)10次便可以滿足無線局域網(wǎng)傳輸?shù)木纫?,旋轉(zhuǎn)次數(shù)越高,,精度越高,得到的結(jié)果更加趨近于真實值,。
3 算法在FPGA上的實現(xiàn)
利用上述CORDIC方法[5],,可以將乘以的正切項變成移位操作,通過一次次的移位與疊加逐漸逼近最終需要達到的旋轉(zhuǎn)角度,。該算法僅利用加法和移位兩種運算通過迭代方式進行矢量旋轉(zhuǎn)[6],,因此很適合在FPGA中實現(xiàn),它可以用來實現(xiàn)數(shù)字下變頻中的NCO,、混頻器和坐標變換等功能[7],。
通過對式(5)的算法實現(xiàn),采用流水線的設(shè)計方式,,在FPGA中進行設(shè)計,,利用FPGA自身內(nèi)部的BRAM資源進行存儲,最后利用Verilog語言進行實現(xiàn),,從而達到NCO設(shè)計的目的,。
其主要硬件資源占用如圖2所示。
從圖2可以看到,,使用CORDIC算法,,基本不占用FPGA內(nèi)部的BRAM資源,大大節(jié)約了硬件資源,。
4 驗證
RTL電路的仿真結(jié)果如圖3所示,。
在MATLAB上進行仿真,并與RTL電路仿真結(jié)果進行比對,。MATLAB仿真結(jié)果如圖4所示,。
如圖3,在輸入周期性三角波后,,通過CORDIC方法可以得到兩個周期性波形,,分別是所需要的sin與cos周期函數(shù),通過此NCO的產(chǎn)生,,可以在后續(xù)設(shè)計中去除掉頻偏帶來的影響,;在圖4中,通過MATLAB的仿真可以產(chǎn)生對應(yīng)的sin和cos波形,,與圖3相比,,仿真結(jié)果一致,可以證明利用FPGA設(shè)計的方案是正確可行的,。
5 結(jié)論
NCO的設(shè)計是基于查找表的NCO,,這種方式的固有特點決定了不僅需要大量的FPGA資源,而且混頻器在實現(xiàn)過程中需要占用一定的乘法器資源,,這對乘法器資源有限的FPGA而言很不利,。
基于CORDIC算法的NCO,通過一系列固定的與運算基數(shù)相關(guān)的角度不斷偏擺來逼近所需的旋轉(zhuǎn)角度,,其硬件結(jié)構(gòu)簡單,,易于并行化處理。所以,,在無線局域網(wǎng)通信中,,利用CORDIC算法實現(xiàn)NCO是非常高效的,并且通過這種算法,,可以有效快速地達到預(yù)期目的,,從而證明本方案是正確可行的。
參考文獻
[1] 楊宏,,李國輝,,劉立新.基于FPGA的CORDIC算法的實現(xiàn)[J].西安郵電學院學報,2008,,13(1):75-77.
[2] 陸鵬威,,梅杓春.基于CORDIC算法實現(xiàn)三角函數(shù)的運算[J].國外電子測量技術(shù),,2008,27(1):10-11.
[3] 姚亞峰,,付東兵,,楊曉非.高速CORDIC算法的電路設(shè)計與實現(xiàn)[J].半導(dǎo)體技術(shù),2008,,33(4):346-348.
[4] 曹劍英.基于擴展CORDIC算法的正切余切函數(shù)的設(shè)計[J].赤峰學院學報,,2013(22):5-6.
[5] 耿丹.CORDIC算法研究與實現(xiàn)[J].遙測遙控,2007,,28(Z1):39-42.
[6] TIEMEY J,, RADER C M, GOLD B. A digital frequency synthesizer[C]. IEEE Transactions on Audio Electroacoustics,, 1971:48-57.
[7] 鄭辛星,,余紅英,楊杰.基于FPGA的CORDIC算法研究[J].蕪湖職業(yè)技術(shù)學院學報,,2013,,15(3):38-39.