摘 要:正交幅度調制技術(QAM)是一種功率和帶寬相對高效的信道調制技術,因此在信道調制技術中得到了廣泛的應用。它的載波信號的FPGA 實現一般采用查找表的方法,為了達到高精度要求,需要耗費大量的ROM 資源。提出了一種基于流水線CORDIC 算法的實現方案,可有效地節省FPGA 的硬件資源,提高運算速度,并根據DSP 開發工具DSP Builder的優點,采用VHDL文本與Simulink模型圖相結合的方法進行了設計。仿真結果驗證了設計的正確性及可行性。
關鍵詞:正交幅度調制; 調制解調器; CORDIC算法; FPGA; DSP Builder
Design and Simulation of QAM Modem Based on FPGA
LEI Neng-fang
(Department of Physics and Electronic Engineering, Weinan Teachers University, Weinan 714000, China)
Abstract: Quadrature amplitude modulation(QAM) is efficient in power and bandwidth, so it has been used widely in the field of channel modulation. The common approach to implement carrier signal of QAM is based on a look-up table, which requires a huge volume of ROM to achieve high resolution. This paper proposes a CORDIC algorithm-based pipelined architecture for implementation of QAM on FPGA, which can save considerable hardware resources and improve the speed performance. According to advantages of DSP Builder, the system is designed by utilizing VHDL and Simulink module. The correctness and feasibility of this design is verified by simulation result.
Keywords: QAM; modem; CORDIC algorithm; FPGA; DSP Builder
0 引 言
正交幅度調制是頻率利用率很高的一種調制技術。與其他調制技術相比,具有能充分利用帶寬、抗噪聲能力強等優點,在移動通信、有線電視傳輸和ADSL 中均有廣泛應用。它的載波信號的FPGA實現一般采用DDS(直接數字頻率合成)技術,即在兩塊ROM 查找表中分別放置一對正交信號。通過這種方法雖然可以輸出一組完全正交的載波信號,但它主要用于精度要求不是很高的場合[1],如果精度要求高,查找表就很大,相應的存儲器容量也要很大,使系統的運行速度受到限制,不適合現代通信系統的發展。本文基于CORDIC(Coordinate Rotation Digital Computer)算法,研究正交幅度調制解調器的FPGA 實現方法。該方法不僅能夠節省大量的FPGA 邏輯資源,而且能很好地兼顧速度、精度、簡單及高效等各個方面。
1 正交幅度調制解調器工作原理
正交幅度調制解調器系統框圖如圖1所示。其中,a(t)和b(t)為兩路相互獨立的待傳送基帶信號,正交信號發生器輸出兩路互為正交的正弦載波信號,經過兩個乘法器可以獲得互為正交的平衡調幅波,即不帶載頻的雙邊帶調幅波。假設乘法器的乘法系數為1,則經過加法器產生的調制信號為:
對調制信號X(t)進行解調,采用了正交同步解調方法。已調正交調幅信號X(t)分別與正交信號發生器產生的余弦信號和正弦信號相乘后產生兩路輸出信號:
2 正交信號發生器的設計
2.1 CORDIC算法原理
CORDIC 算法[2]是由J.Volder于1959年提出的。該算法適用于解決一些三角學的問題,如平面坐標的旋轉和直角坐標到極坐標的轉換等。CORDIC 算法的基本思想是通過一系列固定的、與運算基數有關的角度的不斷偏擺,以逼近所需的旋轉角度。從廣義上講,CORDIC 方法就是一種數值計算的逼近方法。該算法實現三角函數的基本原理如下:
設初始向量(x0,y0)逆時針旋轉角度θ后得到向量(xn,yn),則:
式中:θi表示第i次旋轉的角度,并且tanθi=2-i;zi表示第i次旋轉后與目標角度的差;δi表示向量的旋轉方向由zi的符號位來決定,即δi=sign(zi);ki=1/1+2-2i為每一級的校正因子,也就是每一級旋轉時向量模長發生的變化,對于字長一定的運算,總的校正因子是一個常數。迭代n次(n→∞)后可以得到如下結果:
由上可知,xn,yn分別為輸入角θ的余弦和正弦值,故基于CORDIC算法可產生正交信號。
2.2 CORDIC 算法流水線結構
由式(5)可以看出,CORDIC算法的實現只需要基本的加減法和移位操作,因此很容易用硬件實現。該硬件的實現可以通過圖2 所示的基本單元級聯成流水線結構[3]實現。在經過n(迭代次數)個時鐘的建立時間之后,每隔一個時鐘便能輸出一個運算結果。輸出精度由CORDIC算法中的迭代次數決定。如需提高精度,只需簡單地增加流水單元即可,擴展性很好,而且這并不會大量增加FPGA 的資源耗費[4]。
3 FIR低通濾波器設計
FIR 低通濾波器設計可以采用分布式算法,利用FPGA查找表代替乘法器來實現。為便于理解分布式算法的原理,考慮“乘積和”內積如下[5]:
式(10)的形式被稱為分布式算法,分布式算法是一種以實現乘累加運算為目的的運算方法。如果建立一個查找表,表中數據由所有固定系數的所有加的組合構成,那么用N位輸入數據構成的N位地址去尋址查找表。如果N位都為1,則查找表的輸出為N位系數之和;如果N位中有0,則其對應的系數將從和中去掉。這樣乘法運算就成了查找操作,整數乘法可以通過左移b位實現。濾波器的系數h(n)可以使用Matlab 的FDATool 設計工具來獲得。
4 調制解調器的FPGA設計
DSP Builder是美國Altera公司推出的一個面向DSP開發的系統級工具,作為Matlab的一個Simulink工具箱,可以幫助設計者完成基于FPGA的DSP系統設計的整個流程。更為重要的是基于Simulink平臺利用DSP Builder庫進行FPGA設計時,能利用DSP Builder庫的HDL Import模塊將HDL文本設計轉變成為DSP Builder元件,在系統的模型設計中使用,為系統的FPGA設計提供很大的方便[6]。因此,調制解調器的設計采用VHDL文本與Simulink模型圖設計相結合的方法。
4.1 子模塊的VHDL設計
CORDIC算法和FIR低通濾波器兩個子模塊可以在QuartusⅡ環境中采用VHDL代碼進行設計,也可以基于Simulink平臺利用DSP Builder庫進行模型圖設計。但是用模型圖設計時,設計圖會顯得非常復雜、龐大,不利于閱讀和排錯,而VHDL代碼直接描述會比Simulink模型圖描述更為簡便。故以上兩個模塊均在QuartusⅡ環境中,采用VHDL代碼進行設計描述及編譯。
4.2 系統模型建立
圖3為基于Simulink平臺建立的調制解調器系統模型圖。首先利用Altera DSP Builder庫的HDL Import模塊將設計的CORDIC算法及低通濾波器子模塊對應的文本文件導入,將文本設計轉變成為DSP Builder元件模塊,然后按圖3調用DSP Builder和Simulink庫中的其他圖形模塊建立系統模型圖,并設置相應模塊參數。
4.3 系統仿真驗證與實現
完成模型設計之后,可以基于Simulink平臺對模型進行系統仿真, 即通過Simulink中的示波器Scope查看仿真結果(見圖4)。仿真結果表明,設計電路實現了調制解調功能。然后雙擊SignalCompiler模塊,將模型設計轉換成可綜合的RTL級VHDL代碼,并對其進行綜合、配置下載。
圖3 調制解調器系統模型圖
圖4 仿真波形
5 結 語
本文采用了一種基于流水線CORDIC算法設計正交幅度調制解調器的方法,能有效節省硬件資源,提高運算精度和速度。由于采用了FPGA來設計,可適應軟件無線電的要求,設計稍作修改即可適應更多的調制方式。
參 考 文 獻
[1]周曉青,李合生,陶榮輝.基于CORDIC算法的雙曲正余弦函數FPGA實現[J].信息與電子工程,2010,8(2):211-214.
[2]VOLDER J E. The CORDIC trigonometric computing technique \\. IRE Trans. on Electronic Computers, 1959, 8(3): 330-334.
[3]Uwe Meyer-Baese.數字信號處理的FPGA實現[M].劉凌,譯.2版.北京:清華大學出版社,2006.
[4]盧貴主.基于CORDIC算法的DDFS實現研究[J].廈門大學學報:自然科學版,2004,43(5):636-639.
[5]雷能芳.基于分布式算法有限脈沖響應(FIR)濾波器的FPGA設計[J].科學技術與工程,2010,10(11):743-746.
[6]潘松,黃繼業,王國棟,等.現代DSP技術[M].西安:西安電子科技大學出版社,2003.