基于流水線(xiàn)CORDIC算法的正交幅度調制解調在FPGA上的設計實(shí)現
0 引言
正交幅度調制是頻率利用率很高的一種調制技術(shù)。與其他調制技術(shù)相比,具有能充分利用帶寬、抗噪聲能力強等優(yōu)點(diǎn),在移動(dòng)通信、有線(xiàn)電視傳輸和ADSL中均有廣泛應用。它的載波信號的FPGA實(shí)現一般采用DDS(直接數字頻率合成)技術(shù),即在兩塊ROM查找表中分別放置一對正交信號。通過(guò)這種方法雖然可以輸出一組完全正交的載波信號,但它主要用于精度要求不是很高的場(chǎng)合,如果精度要求高,查找表就很大,相應的存儲器容量也要很大,使系統的運行速度受到限制,不適合現代通信系統的發(fā)展。本文基于CORDIC(Coordinate Rotation Digital Computer)算法,研究正交幅度調制解調器的FPGA實(shí)現方法。該方法不僅能夠節省大量的FPGA邏輯資源,而且能很好地兼顧速度、精度、簡(jiǎn)單及高效等各個(gè)方面。
1 正交幅度調制解調器工作原理
正交幅度調制解調器系統框圖如圖1所示。其中,a(t)和b(t)為兩路相互獨立的待傳送基帶信號,正交信號發(fā)生器輸出兩路互為正交的正弦載波信號,經(jīng)過(guò)兩個(gè)乘法器可以獲得互為正交的平衡調幅波,即不帶載頻的雙邊帶調幅波。假設乘法器的乘法系數為1,則經(jīng)過(guò)加法器產(chǎn)生的調制信號為:
對調制信號X(t)進(jìn)行解調,采用了正交同步解調方法。已調正交調幅信號X(t)分別與正交信號發(fā)生器產(chǎn)生的余弦信號和正弦信號相乘后產(chǎn)生兩路輸出信號:
2 正交信號發(fā)生器的設計
2.1 CORDIC算法原理
CORDIC算法是由J.Volder于1959年提出的。該算法適用于解決一些三角學(xué)的問(wèn)題,如平面坐標的旋轉和直角坐標到極坐標的轉換等。 CORDIC算法的基本思想是通過(guò)一系列固定的、與運算基數有關(guān)的角度的不斷偏擺,以逼近所需的旋轉角度。從廣義上講,CORDIC方法就是一種數值計算的逼近方法。該算法實(shí)現三角函數的基本原理如下:
設初始向量(x0,y0)逆時(shí)針旋轉角度口后得到向量(xn,yn),則:
式中:θi表示第i次旋轉的角度,并且tanθi=2-i;zi表示第i次旋轉后與目標角度的差;δi表示向量的旋轉方向由zi的符號位來(lái)決定,即δi=sign(zi);為每一級的校正因子,也就是每一級旋轉時(shí)向量模長(cháng)發(fā)生的變化,對于字長(cháng)一定的運算,總的校正因子是一個(gè)常數。迭代n次(n→∞)后可以得到如下結果:
當給定的初始輸入數據為x0=1/k,y0=0時(shí),z0=θ,則輸出為:
由上可知,xn,yn分別為輸入角θ的余弦和正弦值,故基于CORDIC算法可產(chǎn)生正交信號。
2.2 CORDIC算法流水線(xiàn)結構
由式(5)可以看出,CORDIC算法的實(shí)現只需要基本的加減法和移位操作,因此很容易用硬件實(shí)現。該硬件的實(shí)現可以通過(guò)圖2所示的基本單元級聯(lián)成流水線(xiàn)結構實(shí)現。在經(jīng)過(guò)n(迭代次數)個(gè)時(shí)鐘的建立時(shí)間之后,每隔一個(gè)時(shí)鐘便能輸出一個(gè)運算結果。輸出精度由CORDIC算法中的迭代次數決定。如需提高精度,只需簡(jiǎn)單地增加流水單元即可,擴展性很好,而且這并不會(huì )大量增加FPGA的資源耗費。
3 FIR低通濾波器設計
FIR低通濾波器設計可以采用分布式算法,利用FPGA查找表代替乘法器來(lái)實(shí)現。為便于理解分布式算法的原理,考慮“乘積和”內積如下:
式(10)的形式被稱(chēng)為分布式算法,分布式算法是一種以實(shí)現乘累加運算為目的的運算方法。如果建立一個(gè)查找表,表中數據由所有固定系數的所有加的組合構成,那么用N位輸人數據構成的N位地址去尋址查找表。如果N位都為1,則查找表的輸出為N位系數之和;如果N位中有0,則其對應的系數將從和中去掉。這樣乘法運算就成了查找操作,整數乘法可以通過(guò)左移b位實(shí)現。濾波器的系數h(n)可以使用Matlab的FDATool設計工具來(lái)獲得。
4 調制解調器的FPGA設計
DSP Builder是美國Altera公司推出的一個(gè)面向DSP開(kāi)發(fā)的系統級工具,作為Matlab的一個(gè)Simulink工具箱,可以幫助設計者完成基于FPGA的DSP系統設計的整個(gè)流程。更為重要的是基于Simulink平臺利用DSP Builder庫進(jìn)行FPGA設計時(shí),能利用DSP Builder庫的HDL Import模塊將HDL文本設計轉變成為DSP Builder元件,在系統的模型設計中使用,為系統的FPGA設計提供很大的方便。因此,調制解調器的設計采用VHDL文本與Simulink模型圖設計相結合的方法。
4.1 子模塊的VHDL設計
CORDIC算法和FIR低通濾波器兩個(gè)子模塊可以在QuartusⅡ環(huán)境中采用VHDL代碼進(jìn)行設計,也可以基于Simulink平臺利用DSP Builder庫進(jìn)行模型圖設計。但是用模型圖設計時(shí),設計圖會(huì )顯得非常復雜、龐大,不利于閱讀和排錯,而VHDL代碼直接描述會(huì )比Simulink模型圖描述更為簡(jiǎn)便。故以上兩個(gè)模塊均在QuartusⅡ環(huán)境中,采用VHDL代碼進(jìn)行設計描述及編譯。
4.2 系統模型建立
圖3為基于Simulink平臺建立的調制解調器系統模型圖。首先利用Altera DSP Builder庫的HDL Import模塊將設計的CORDIC算法及低通濾波器子模塊對應的文本文件導入,將文本設計轉變成為DSP Builder元件模塊,然后按圖3調用DSP Builder和Simulink庫中的其他圖形模塊建立系統模型圖,并設置相應模塊參數。
4.3 系統仿真驗證與實(shí)現
完成模型設計之后,可以基于Simulink平臺對模型進(jìn)行系統仿真,即通過(guò)Simulink中的示波器Scope查看仿真結果(見(jiàn)圖4)。仿真結果表明,設計電路實(shí)現了調制解調功能。然后雙擊SignalCompiler模塊,將模型設計轉換成可綜合的RTL級VHDL代碼,并對其進(jìn)行綜合、配置下載。
5 結語(yǔ)
本文采用了一種基于流水線(xiàn)CORDIC算法設計正交幅度調制解調器的方法,能有效節省硬件資源,提高運算精度和速度。由于采用了FPGA來(lái)設計,可適應軟件無(wú)線(xiàn)電的要求,設計稍作修改即可適應更多的調制方式。
評論