摘 要:在高速移動(dòng)下,OFDM系統(tǒng)載波間正交性被破壞,出現(xiàn)載波間干擾(ICI),嚴(yán)重影響系統(tǒng)性能,必須采用適當(dāng)?shù)木饧夹g(shù)以補(bǔ)償ICI。為了保證通信的有效性和實(shí)時(shí)性要求,使用FPGA實(shí)現(xiàn)了一種低復(fù)雜度的最小均方誤差(MMSE)OFDM均衡器算法。在ISE軟件平臺(tái)上使用Verilog語言編寫程序,并在Xilinx公司Virtex-2實(shí)驗(yàn)板(XC2V930芯片)上對(duì)設(shè)計(jì)進(jìn)行了驗(yàn)證。
關(guān)鍵詞:OFDM; MMSE均衡器; ISE; FPGA
中圖分類號(hào):TN911.5 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1004-373X(2010)11-0071-04
FPGA Implementation for OFDM Equalizer in High Mobile Environment
WANG Huan, YANG Yang
(South-Central University for Nationalities, Wuhan 430073, China)
Abstract: The orthogonality between subcarriers in OFDM system was destroied in high mobility of the terminals, which produced itercarrier interference (ICI) and caused severe performance degradations, an appropriate equalization technology is used to compensate the ICI. A low complexity minimum mean squared error(MMSE) equalizer for OFDM systems is implemented by FPGA, in order to ensure the effectiveness and real-time communication requirements. Verilog language is used to write program in the ISE software platform, and it is verified by Xilinx's Virtex-2 experiment board(XC2V930 chip).
Keywords: OFDM; MMSE equalizer; ISE; FPGA
0 引 言
正交頻分復(fù)用(OFDM)是一種正交多載波調(diào)制技術(shù),它將寬帶頻率選擇性衰落信道轉(zhuǎn)換成一系列窄帶平坦衰落信道,在克服信道多徑衰落所引起的碼間干擾,實(shí)現(xiàn)高數(shù)據(jù)傳輸?shù)确矫婢哂歇?dú)特的優(yōu)勢。但是由于OFDM信號(hào)頻譜重疊,對(duì)信道變化很敏感,在高速移動(dòng)下,信道的時(shí)變特性更加明顯,此時(shí)OFDM系統(tǒng)載波間的正交性會(huì)遭到破壞,出現(xiàn)載波間干擾(ICI),這會(huì)導(dǎo)致系統(tǒng)性能明顯降低[1-5]。為了消除ICI,必須采用適當(dāng)?shù)木饧夹g(shù)以補(bǔ)償ICI。國內(nèi)外許多學(xué)者對(duì)這些問題進(jìn)行了大量的研究, 提出了各種不同的方法, 得到了一些階段性成果。文獻(xiàn)[1]提出了一種低復(fù)雜度的迭代MMSE均衡器算法,在保證均衡效果的同時(shí)把運(yùn)算量成功降低到o(N),為該均衡器算法的實(shí)際運(yùn)用奠定了基礎(chǔ)。
現(xiàn)場可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA) 器件近年來取得了飛速的發(fā)展,已經(jīng)具有強(qiáng)大的計(jì)算性能和邏輯實(shí)現(xiàn)能力[6]。特別是Xilinx公司的FPGA具有豐富的IP資源,容量大且具有強(qiáng)大的軟件支持,在各個(gè)領(lǐng)域得到了廣泛的應(yīng)用[7]。本文主要討論基于Xilinx公司Virtex-2 FPGA硬件平臺(tái)的均衡器算法中矩陣求逆的運(yùn)算過程實(shí)現(xiàn)。將程序下載到FPGA,并通過RS 232將結(jié)果數(shù)據(jù)回送到主機(jī)查看和驗(yàn)證。
1 時(shí)變信道中OFDM系統(tǒng)均衡器
1.1 時(shí)變信道中的OFDM系統(tǒng)結(jié)構(gòu)
考慮一個(gè)載波數(shù)為N的OFDM系統(tǒng)如圖1所示,假設(shè)完全同步,并且有足夠長(不小于信道階數(shù))的循環(huán)前綴(CP)[8]。在去除了循環(huán)前綴CP以后第i個(gè)數(shù)據(jù)幀收到的數(shù)據(jù)矢量為:
r(i)=H(i)FHNS(i)+n(i)
(1)
式中:S(i)=si,0,si,1,…,si,N-1T是OFDM第i個(gè)數(shù)據(jù)幀的輸出數(shù)據(jù)矢量;FHN為N點(diǎn)快速傅里葉逆變換矩陣;n(i)為信道噪聲矢量,定義方差是σ2的高斯白噪聲(AWGN);H(i)是一個(gè)N×N的時(shí)域轉(zhuǎn)移矩陣,其元素為H(i)(k,n)=h(i)(k,(k,n)N),其中h(i)(k,n)是描述信道特性的沖擊響應(yīng)[1]。在接收端,對(duì)r(i)進(jìn)行N點(diǎn)快速傅里葉變換,其輸出為:
Y(i)=FNr(i)=G(i)S(i)+W(i)
(2)
式中:W(i)=FNn(i),G(i)=FNH(i)FHN。
由于在高速移動(dòng)的環(huán)境下,接收信號(hào)會(huì)受到ICI的影響,故在整個(gè)系統(tǒng)中添加均衡模塊,假設(shè)均衡器用E(i)來表示,則均衡后的信號(hào)可以表示為:
Z(i)=Y(i)E(i)
(3)
圖1 OFDM系統(tǒng)結(jié)構(gòu)
1.2 MMSE均衡器算法
把上面式中的i去掉,根據(jù)最小均方誤差的規(guī)則,可以簡寫得到均衡矩陣為:
E=GH(GHG+σ2IN)-1
(4)
在時(shí)變信道中,G不是對(duì)角矩陣,則矩陣求逆的直接算法的運(yùn)算量為o(N3),利用文獻(xiàn)[2]給出的結(jié)論:ICI主要來自相鄰的幾個(gè)子載波,并且每個(gè)子載波的符號(hào)能量主要泄漏至鄰近的少數(shù)子載波上,也就是說,G中的很大一部分元素是可以忽略的。然后再采用迭代的方法對(duì)矩陣求逆,把運(yùn)算量降為o(N2),但是在實(shí)際應(yīng)用中,N是一個(gè)較大的數(shù)值,這個(gè)方法計(jì)算量仍然很大,所以很多算法在考慮均衡效果的同時(shí)也盡量減少運(yùn)算量,以增強(qiáng)算法的可實(shí)現(xiàn)性和最終均衡的實(shí)時(shí)性。
根據(jù)Chen[1]等驗(yàn)證\\得到G可以被進(jìn)一步簡化成如下Ak來描述:
Ak=
G((k-Q)N,ρk-N),01×2Q
0G((k-Q+1)N,ρk-Q+1)01×(2Q-1)
01×QG(k,ρk)01×Q
01×(2Q-1)G((k+Q-1)N,ρk+Q-1),0
01×2QG((k+Q)N,ρk+Q)
(5)
式中:ρn是一個(gè)由ρni=(n-Q+i)N構(gòu)成的1×(2Q+1)的矩陣,i=0,1,…,2Q。MMSE均衡器可以描述為ek=AHk(:,2Q+1)R-1k,其中Rk=γAkAHk+I2Q+1;γ為該信道的信噪比,且γ=E{sk2}/σ2。Ak是一個(gè)(2Q+1)×(4Q+1)的矩陣, 再利用文獻(xiàn)[2]中迭代的方法來計(jì)算矩陣的逆。對(duì)于一個(gè)OFDM模塊來說,該算法的總計(jì)算量是o((2Q+1)2N),由于QN,所以整個(gè)計(jì)算的復(fù)雜度就降低了很多。
2 均衡器算法的FPGA實(shí)現(xiàn)
當(dāng)載波數(shù)比較大時(shí),OFDM均衡算法所要計(jì)算的矩陣比較龐大,計(jì)算量大,很難保證實(shí)時(shí)性的要求。于是人們很自然地會(huì)想到用實(shí)時(shí)性很強(qiáng)的FPGA來實(shí)現(xiàn)均衡器的設(shè)計(jì),但是均衡本身所需要處理的數(shù)據(jù)量和運(yùn)算量都非常大,即使使用FPGA實(shí)現(xiàn)也很困難。
若采用文獻(xiàn)[2]中的算法運(yùn)算量是o(N2),假如當(dāng)載波數(shù)N=128時(shí),運(yùn)算量還是很大的,無法保證實(shí)時(shí)性。從均衡效果和運(yùn)算量兩方面考慮,采用了文獻(xiàn)[1]中的算法。這是一種典型的迭代算法,效果與文獻(xiàn)[2]算法相接近(參看文獻(xiàn)[1]中圖1),但是在計(jì)算中避免了求一個(gè)很大的矩陣的逆運(yùn)算,而是從頻域轉(zhuǎn)移矩陣G中提取出了不大的有效矩陣,這樣就減少了大量運(yùn)算。
2.1 硬件設(shè)計(jì)思想
在對(duì)均衡器算法進(jìn)行FPGA設(shè)計(jì)之前,先用Matlab仿真該均衡器浮點(diǎn)算法,通過分析程序可以發(fā)現(xiàn),該算法的核心部分是迭代求逆矩陣的過程。該算法的瓶頸主要是求解由復(fù)數(shù)元素組成的矩陣的逆的計(jì)算量巨大,而且是浮點(diǎn)數(shù)會(huì)占用很大的存儲(chǔ)空間[9]。為盡量減少需要使用的邏輯資源,在進(jìn)行ISE設(shè)計(jì)時(shí),數(shù)據(jù)用16位定點(diǎn)數(shù)表示,其中高8位是整數(shù)部分,低8位是小數(shù)部分。
2.1.1 硬件設(shè)計(jì)框圖
實(shí)現(xiàn)該均衡器的硬件設(shè)計(jì)框圖如圖2所示,其中G為從Matlab中產(chǎn)生的頻域轉(zhuǎn)移矩陣,控制模塊完成從G中取出對(duì)應(yīng)的有效值得到Ak,并且控制當(dāng)一組運(yùn)算完成后運(yùn)用上一組產(chǎn)生的R-1k+1進(jìn)行下一組運(yùn)算,CIR是該算法的核心,即矩陣迭代求逆的運(yùn)算,CPE模塊是一個(gè)簡單的矩陣運(yùn)算模塊完成ek=AHk(:,2Q+1)R-1k的運(yùn)算。
圖2 均衡器硬件設(shè)計(jì)框圖
2.1.2 CIR模塊介紹
CIR模塊完成矩陣迭代運(yùn)算過程,它從輸入端口讀入Ak以及對(duì)應(yīng)的R-1k,采用迭代的方法計(jì)算出R-1k+1,用FPGA實(shí)現(xiàn)這個(gè)模塊的端口如圖3所示。
其中,CLK為時(shí)鐘;γ是模擬信道的信噪比;Ak是頻域轉(zhuǎn)移矩陣G中取出的有效矩陣;trag是控制信號(hào),當(dāng)一次運(yùn)算結(jié)束產(chǎn)生一個(gè)有效的R-1k后,只有trag被置為高電平才會(huì)進(jìn)行下一次運(yùn)算。取Q=2時(shí),R-1k是一個(gè) 5×5的矩陣。整個(gè)求逆矩陣的迭代過程就是從前一個(gè)5×5的逆矩陣(即R-1k)和從頻域轉(zhuǎn)移矩陣G中對(duì)應(yīng)區(qū)域取得的5×9的矩陣Ak運(yùn)算出下一個(gè)5×5逆矩陣(即R-1k+1)的過程。
圖3 CIR模塊輸入/輸出端口圖
分析其矩陣求逆的迭代算法[1]可以發(fā)現(xiàn),其中大部分完成的是復(fù)數(shù)矩陣的乘加運(yùn)算,所有數(shù)據(jù)是復(fù)數(shù),雖然復(fù)雜很多,但是實(shí)際運(yùn)算中有許多是多余的。Rk是共軛對(duì)稱矩陣,上三角部分和下三角部分的實(shí)部相同,虛部也只是正負(fù)相反,所以只需要算出上三角矩陣的數(shù)據(jù),下三角的部分直接對(duì)虛部取反就可以了。
Xilinx的FPGA芯片中集成了硬核的乘加器DSP48,可以方便、高速地進(jìn)行乘加運(yùn)算[8]。但是本算法中涉及到的復(fù)數(shù)運(yùn)算比較靈活,還包括一些減法運(yùn)算,直接使用DSP48不是很方便的控制。故設(shè)計(jì)了一種乘加器,使用了乘法器的IP Core,按照要求設(shè)置輸入輸出數(shù)據(jù)位數(shù),其中的一個(gè)乘加運(yùn)算中設(shè)置乘法器的兩路輸入為8位,輸出為16位,調(diào)用IP Core如下所示,算法中其他的矩陣運(yùn)算也都與此類似[10]。
reg[7:0] a,b;
wire[15:0] out1, f1, nf1,;
reg[15:0] fc1;
multiply M1(.clk(clk),.a(a),.b(b),.p(out1));
assign f1=out1+fc1;
assign nf1=17′h10000-f1;
a,b作為兩個(gè)寄存器儲(chǔ)存參與運(yùn)算的數(shù)據(jù),out1是乘法器計(jì)算的結(jié)果,用fc1進(jìn)行存放,相累加得到f1,再按照共軛復(fù)數(shù)運(yùn)算的規(guī)律得到nf1。實(shí)現(xiàn)一個(gè)8位×8位的乘加器共消耗了56個(gè)Slice,32個(gè)LUT和49個(gè)IOB。該乘加器綜合后的RTL結(jié)構(gòu)圖如圖4所示。
圖4 乘加器綜合后的RTL結(jié)構(gòu)圖
為了能最大限度地提高運(yùn)算速度,所有數(shù)據(jù)都用可編程邏輯單元構(gòu)成的分布式存儲(chǔ)器存儲(chǔ)并列存儲(chǔ),并且根據(jù)算法的要求實(shí)現(xiàn)的是多個(gè)乘加器同時(shí)運(yùn)算,這樣雖然使用了很多邏輯資源,但任何數(shù)據(jù)都可以即取即用,便于進(jìn)行大量的并行運(yùn)算,以提高運(yùn)算速度。
2.2 系統(tǒng)驗(yàn)證仿真
本系統(tǒng)采用Xilinx公司Virtex-2實(shí)驗(yàn)板進(jìn)行仿真驗(yàn)證,該實(shí)驗(yàn)板采用的是XC2VP30芯片,它有30 816個(gè)邏輯單元, 136個(gè)18位乘法器,2 448 Kb RAM, 資源豐富[7]。開發(fā)軟件為該公司的集成開發(fā)軟件平臺(tái)ISE 9.2,HDL語言采用Verilog,使用Matlab輔助ISE完成FPGA設(shè)計(jì)的方法[9]。通過實(shí)驗(yàn)板上的RS 232串口與PC機(jī)進(jìn)行通信,用Matlab從計(jì)算機(jī)中傳輸數(shù)據(jù)到FPGA芯片中,運(yùn)算后再通過串口回傳均衡后的信號(hào)數(shù)據(jù)到Matlab中仿真驗(yàn)證星座圖,以判斷該均衡器的效果。
2.2.1 均衡過程
CIR中使用迭代算法避免了并行大向量和大矩陣的運(yùn)算,而是分步運(yùn)算。所以對(duì)輸入信號(hào)進(jìn)行均衡,首先要進(jìn)行并串變換,但是不需要變成真正的串行信號(hào)。當(dāng)Q=2時(shí),實(shí)際上對(duì)需要均衡的輸入信號(hào)Y(i)每次取出5個(gè)數(shù)據(jù),用yk表示,暫且將這樣的變換叫作分組并串變換(P/GS),然后均衡矩陣ek與yk分組完成乘法運(yùn)算得到一個(gè)zk,zk是一個(gè)數(shù)據(jù)不是向量,最后進(jìn)行串并變換就得到均衡后的信號(hào)向量Z(i)。整個(gè)均衡的過程如圖5所示。
圖5 均衡步驟圖
2.2.2 仿真結(jié)果
實(shí)現(xiàn)該算法的重要一步是所設(shè)計(jì)的乘加器可以正常使用,并且實(shí)時(shí)性好。對(duì)其進(jìn)行仿真如圖6所示,可以發(fā)現(xiàn)當(dāng)clk發(fā)生上升沿跳變時(shí)進(jìn)行計(jì)算,圖中信號(hào)(a,b)表示輸入的數(shù)據(jù)信號(hào);fc1表示相乘的結(jié)果;c表示進(jìn)行乘加以后的運(yùn)算結(jié)果,其計(jì)算準(zhǔn)確,基本上沒有延遲。
圖6 乘加器仿真結(jié)果
ISE中設(shè)計(jì)的傳輸模塊實(shí)現(xiàn)波特率為19 200 b/s的串口通信控制器,把數(shù)據(jù)通過RS 232完成FPGA與PC機(jī)的雙向通信。把均衡后的信號(hào)Z(i)傳回Matlab中,采用QPSK的星座圖進(jìn)行分析,選擇子載波的數(shù)目N=128,循環(huán)前綴CP的長度為8,并且在認(rèn)為信噪比被準(zhǔn)確估計(jì)的情況下均衡的結(jié)果,如圖7所示。
圖7 QPSK星座圖
由此星座圖可以看出,在均衡前接收到的信號(hào)因?yàn)槎嗥绽疹l移和噪聲的影響,偏離星座點(diǎn)向周圍發(fā)散,使用FPGA中均衡以后傳回的數(shù)據(jù)基本沒有發(fā)散現(xiàn)象。
3 結(jié) 語
在ISE軟件平臺(tái)上使用Verilog語言實(shí)現(xiàn)了一種基于時(shí)變OFDM系統(tǒng)的低復(fù)雜度MMSE均衡器算法。在Xilinx公司Virtex-2實(shí)驗(yàn)板(XC2V930芯片)上對(duì)其進(jìn)行驗(yàn)證,基本達(dá)到該算法在Matlab上仿真的均衡效果。但是由于浮點(diǎn)數(shù)計(jì)算量太大,選用定點(diǎn)數(shù)對(duì)其進(jìn)行截取,還是有一定的局限性,在進(jìn)行大量數(shù)據(jù)的運(yùn)算中還是會(huì)有些數(shù)據(jù)不太準(zhǔn)確,造成整體的誤碼率效果不是太好,故還需要進(jìn)一步改進(jìn)算法和FPGA的實(shí)現(xiàn)方法,以期達(dá)到更好的均衡效果。
參考文獻(xiàn)
[1]CHEN Shao-ping, DAI Guang-fa, TANGHong-wen. A low complexity MMSE equalizer for OFDM systems over time-varying channels[J]. IEICE, Trans. on Commun., 2008, 91-B(1): 330-333.
[2]CAI X, GIANNAKIS G B. Bounding performance and suppressing intercarrier interference in wireless mobile OFDM[J]. IEEE Trans.on Commun.,2003, 51(12): 2047-2056.
[3]HU D, HE L, YANG L. Estimation of rapidly time-varying channels for OFDM systems[J]. Proc.ICASSP′06, 2006: 357-360.
[4]WAN Ping, MCGUIRE M. An iterative decision feedback algorithm using the cholesky update for OFDM with fast fading[J]. Commun., Computers and Signal Processing, IEEE Pacific Rim Conference, 2007: 522 – 525, 22-24.
[5]CHOI Y S, VOLTZ P J, CASSARA F A. On channel estimation and detection for multicarrier signals in fastand selective Rayleigh fading channels[J]. IEEE Trans.on Commun., 2001, 49(8): 1375-1387.
[6]田耘,徐文波,張延偉,等.無線通信FPGA設(shè)計(jì)[M].北京:電子工業(yè)出版社,2008.
[7]Xilinx. XUP Virtex-Ⅱ pro user guide[M].\\: Xilinx, 2007.
[8]史治國,洪少華,陳抗生.基于Xilinx FPGA的OFDM通信系統(tǒng)基帶設(shè)計(jì)[M].杭州:浙江大學(xué)出版社,2009.
[9]田耘,徐文波.Xilinx FPGA開發(fā)實(shí)用教程[M].北京:清華大學(xué)出版社,2008.
[10]夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程[M].北京:北京航空航天大學(xué)出版社,2008.