正交幅度調(diào)制解調(diào)器的FPGA設(shè)計(jì)與仿真
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:正交幅度調(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開發(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
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)。通過這種方法雖然可以輸出一組完全正交的載波信號(hào),但它主要用于精度要求不是很高的場(chǎng)合,如果精度要求高,查找表就很大,相應(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)過兩個(gè)乘法器可以獲得互為正交的平衡調(diào)幅波,即不帶載頻的雙邊帶調(diào)幅波。假設(shè)乘法器的乘法系數(shù)為1,則經(jīng)過加法器產(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):
[!--empirenews.page--]
2 正交信號(hào)發(fā)生器的設(shè)計(jì)
2.1 CORDIC算法原理
CORDIC算法是由J.Volder于1959年提出的。該算法適用于解決一些三角學(xué)的問題,如平面坐標(biāo)的旋轉(zhuǎn)和直角坐標(biāo)到極坐標(biāo)的轉(zhuǎn)換等。 CORDIC算法的基本思想是通過一系列固定的、與運(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)位來決定,即δi=sign(zi);為每一級(jí)的校正因子,也就是每一級(jí)旋轉(zhuǎn)時(shí)向量模長(zhǎng)發(fā)生的變化,對(duì)于字長(zhǎng)一定的運(yùn)算,總的校正因子是一個(gè)常數(shù)。迭代n次(n→∞)后可以得到如下結(jié)果:
當(dāng)給定的初始輸入數(shù)據(jù)為x0=1/k,y0=0時(shí),z0=θ,則輸出為:
由上可知,xn,yn分別為輸入角θ的余弦和正弦值,故基于CORDIC算法可產(chǎn)生正交信號(hào)。
2.2 CORDIC算法流水線結(jié)構(gòu)
由式(5)可以看出,CORDIC算法的實(shí)現(xiàn)只需要基本的加減法和移位操作,因此很容易用硬件實(shí)現(xiàn)。該硬件的實(shí)現(xiàn)可以通過圖2所示的基本單元級(jí)聯(lián)成流水線結(jié)構(gòu)實(shí)現(xiàn)。在經(jīng)過n(迭代次數(shù))個(gè)時(shí)鐘的建立時(shí)間之后,每隔一個(gè)時(shí)鐘便能輸出一個(gè)運(yùn)算結(jié)果。輸出精度由CORDIC算法中的迭代次數(shù)決定。如需提高精度,只需簡(jiǎn)單地增加流水單元即可,擴(kuò)展性很好,而且這并不會(huì)大量增加FPGA的資源耗費(fèi)。
[!--empirenews.page--]
3 FIR低通濾波器設(shè)計(jì)
FIR低通濾波器設(shè)計(jì)可以采用分布式算法,利用FPGA查找表代替乘法器來實(shí)現(xiàn)。為便于理解分布式算法的原理,考慮“乘積和”內(nèi)積如下:
式(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ù)乘法可以通過左移b位實(shí)現(xiàn)。濾波器的系數(shù)h(n)可以使用Matlab的FDATool設(shè)計(jì)工具來獲得。
[!--empirenews.page--]
4 調(diào)制解調(diào)器的FPGA設(shè)計(jì)
DSP Builder是美國(guó)Altera公司推出的一個(gè)面向DSP開發(fā)的系統(tǒng)級(jí)工具,作為Matlab的一個(gè)Simulink工具箱,可以幫助設(shè)計(jì)者完成基于FPGA的DSP系統(tǒng)設(shè)計(jì)的整個(gè)流程。更為重要的是基于Simulink平臺(tái)利用DSP Builder庫進(jìn)行FPGA設(shè)計(jì)時(shí),能利用DSP Builder庫的HDL Import模塊將HDL文本設(shè)計(jì)轉(zhuǎn)變成為DSP Builder元件,在系統(tǒng)的模型設(shè)計(jì)中使用,為系統(tǒng)的FPGA設(shè)計(jì)提供很大的方便。因此,調(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庫進(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庫的HDL Import模塊將設(shè)計(jì)的CORDIC算法及低通濾波器子模塊對(duì)應(yīng)的文本文件導(dǎo)入,將文本設(shè)計(jì)轉(zhuǎn)變成為DSP Builder元件模塊,然后按圖3調(diào)用DSP Builder和Simulink庫中的其他圖形模塊建立系統(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)仿真,即通過Simulink中的示波器Scope查看仿真結(jié)果(見圖4)。仿真結(jié)果表明,設(shè)計(jì)電路實(shí)現(xiàn)了調(diào)制解調(diào)功能。然后雙擊SignalCompiler模塊,將模型設(shè)計(jì)轉(zhuǎn)換成可綜合的RTL級(jí)VHDL代碼,并對(duì)其進(jìn)行綜合、配置下載。
5 結(jié)語
本文采用了一種基于流水線CORDIC算法設(shè)計(jì)正交幅度調(diào)制解調(diào)器的方法,能有效節(jié)省硬件資源,提高運(yùn)算精度和速度。由于采用了FPGA來設(shè)計(jì),可適應(yīng)軟件無線電的要求,設(shè)計(jì)稍作修改即可適應(yīng)更多的調(diào)制方式。