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