摘 要:在高速移動下,OFDM系統(tǒng)載波間正交性被破壞,出現(xiàn)載波間干擾(ICI),嚴(yán)重影響系統(tǒng)性能,必須采用適當(dāng)?shù)木饧夹g(shù)以補償ICI。為了保證通信的有效性和實時性要求,使用FPGA實現(xiàn)了一種低復(fù)雜度的最小均方誤差(MMSE)OFDM均衡器算法。在ISE軟件平臺上使用Verilog語言編寫程序,并在Xilinx公司Virtex-2實驗板(XC2V930芯片)上對設(shè)計進行了驗證。
關(guān)鍵詞:OFDM; MMSE均衡器; ISE; FPGA
中圖分類號:TN911.5 文獻標(biāo)識碼:A
文章編號: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)換成一系列窄帶平坦衰落信道,在克服信道多徑衰落所引起的碼間干擾,實現(xiàn)高數(shù)據(jù)傳輸?shù)确矫婢哂歇毺氐膬?yōu)勢。但是由于OFDM信號頻譜重疊,對信道變化很敏感,在高速移動下,信道的時變特性更加明顯,此時OFDM系統(tǒng)載波間的正交性會遭到破壞,出現(xiàn)載波間干擾(ICI),這會導(dǎo)致系統(tǒng)性能明顯降低[1-5]。為了消除ICI,必須采用適當(dāng)?shù)木饧夹g(shù)以補償ICI。國內(nèi)外許多學(xué)者對這些問題進行了大量的研究, 提出了各種不同的方法, 得到了一些階段性成果。文獻[1]提出了一種低復(fù)雜度的迭代MMSE均衡器算法,在保證均衡效果的同時把運算量成功降低到o(N),為該均衡器算法的實際運用奠定了基礎(chǔ)。
現(xiàn)場可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA) 器件近年來取得了飛速的發(fā)展,已經(jīng)具有強大的計算性能和邏輯實現(xiàn)能力[6]。特別是Xilinx公司的FPGA具有豐富的IP資源,容量大且具有強大的軟件支持,在各個領(lǐng)域得到了廣泛的應(yīng)用[7]。本文主要討論基于Xilinx公司Virtex-2 FPGA硬件平臺的均衡器算法中矩陣求逆的運算過程實現(xiàn)。將程序下載到FPGA,并通過RS 232將結(jié)果數(shù)據(jù)回送到主機查看和驗證。
1 時變信道中OFDM系統(tǒng)均衡器
1.1 時變信道中的OFDM系統(tǒng)結(jié)構(gòu)
考慮一個載波數(shù)為N的OFDM系統(tǒng)如圖1所示,假設(shè)完全同步,并且有足夠長(不小于信道階數(shù))的循環(huán)前綴(CP)[8]。在去除了循環(huán)前綴CP以后第i個數(shù)據(jù)幀收到的數(shù)據(jù)矢量為:
r(i)=H(i)FHNS(i)+n(i)
(1)
式中:S(i)=si,0,si,1,…,si,N-1T是OFDM第i個數(shù)據(jù)幀的輸出數(shù)據(jù)矢量;FHN為N點快速傅里葉逆變換矩陣;n(i)為信道噪聲矢量,定義方差是σ2的高斯白噪聲(AWGN);H(i)是一個N×N的時域轉(zhuǎn)移矩陣,其元素為H(i)(k,n)=h(i)(k,(k,n)N),其中h(i)(k,n)是描述信道特性的沖擊響應(yīng)[1]。在接收端,對r(i)進行N點快速傅里葉變換,其輸出為:
Y(i)=FNr(i)=G(i)S(i)+W(i)
(2)
式中:W(i)=FNn(i),G(i)=FNH(i)FHN。
由于在高速移動的環(huán)境下,接收信號會受到ICI的影響,故在整個系統(tǒng)中添加均衡模塊,假設(shè)均衡器用E(i)來表示,則均衡后的信號可以表示為:
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)
在時變信道中,G不是對角矩陣,則矩陣求逆的直接算法的運算量為o(N3),利用文獻[2]給出的結(jié)論:ICI主要來自相鄰的幾個子載波,并且每個子載波的符號能量主要泄漏至鄰近的少數(shù)子載波上,也就是說,G中的很大一部分元素是可以忽略的。然后再采用迭代的方法對矩陣求逆,把運算量降為o(N2),但是在實際應(yīng)用中,N是一個較大的數(shù)值,這個方法計算量仍然很大,所以很多算法在考慮均衡效果的同時也盡量減少運算量,以增強算法的可實現(xiàn)性和最終均衡的實時性。
根據(jù)Chen[1]等驗證\\得到G可以被進一步簡化成如下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是一個由ρ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是一個(2Q+1)×(4Q+1)的矩陣, 再利用文獻[2]中迭代的方法來計算矩陣的逆。對于一個OFDM模塊來說,該算法的總計算量是o((2Q+1)2N),由于QN,所以整個計算的復(fù)雜度就降低了很多。
2 均衡器算法的FPGA實現(xiàn)
當(dāng)載波數(shù)比較大時,OFDM均衡算法所要計算的矩陣比較龐大,計算量大,很難保證實時性的要求。于是人們很自然地會想到用實時性很強的FPGA來實現(xiàn)均衡器的設(shè)計,但是均衡本身所需要處理的數(shù)據(jù)量和運算量都非常大,即使使用FPGA實現(xiàn)也很困難。
若采用文獻[2]中的算法運算量是o(N2),假如當(dāng)載波數(shù)N=128時,運算量還是很大的,無法保證實時性。從均衡效果和運算量兩方面考慮,采用了文獻[1]中的算法。這是一種典型的迭代算法,效果與文獻[2]算法相接近(參看文獻[1]中圖1),但是在計算中避免了求一個很大的矩陣的逆運算,而是從頻域轉(zhuǎn)移矩陣G中提取出了不大的有效矩陣,這樣就減少了大量運算。
2.1 硬件設(shè)計思想
在對均衡器算法進行FPGA設(shè)計之前,先用Matlab仿真該均衡器浮點算法,通過分析程序可以發(fā)現(xiàn),該算法的核心部分是迭代求逆矩陣的過程。該算法的瓶頸主要是求解由復(fù)數(shù)元素組成的矩陣的逆的計算量巨大,而且是浮點數(shù)會占用很大的存儲空間[9]。為盡量減少需要使用的邏輯資源,在進行ISE設(shè)計時,數(shù)據(jù)用16位定點數(shù)表示,其中高8位是整數(shù)部分,低8位是小數(shù)部分。
2.1.1 硬件設(shè)計框圖
實現(xiàn)該均衡器的硬件設(shè)計框圖如圖2所示,其中G為從Matlab中產(chǎn)生的頻域轉(zhuǎn)移矩陣,控制模塊完成從G中取出對應(yīng)的有效值得到Ak,并且控制當(dāng)一組運算完成后運用上一組產(chǎn)生的R-1k+1進行下一組運算,CIR是該算法的核心,即矩陣迭代求逆的運算,CPE模塊是一個簡單的矩陣運算模塊完成ek=AHk(:,2Q+1)R-1k的運算。
圖2 均衡器硬件設(shè)計框圖
2.1.2 CIR模塊介紹
CIR模塊完成矩陣迭代運算過程,它從輸入端口讀入Ak以及對應(yīng)的R-1k,采用迭代的方法計算出R-1k+1,用FPGA實現(xiàn)這個模塊的端口如圖3所示。
其中,CLK為時鐘;γ是模擬信道的信噪比;Ak是頻域轉(zhuǎn)移矩陣G中取出的有效矩陣;trag是控制信號,當(dāng)一次運算結(jié)束產(chǎn)生一個有效的R-1k后,只有trag被置為高電平才會進行下一次運算。取Q=2時,R-1k是一個 5×5的矩陣。整個求逆矩陣的迭代過程就是從前一個5×5的逆矩陣(即R-1k)和從頻域轉(zhuǎn)移矩陣G中對應(yīng)區(qū)域取得的5×9的矩陣Ak運算出下一個5×5逆矩陣(即R-1k+1)的過程。
圖3 CIR模塊輸入/輸出端口圖
分析其矩陣求逆的迭代算法[1]可以發(fā)現(xiàn),其中大部分完成的是復(fù)數(shù)矩陣的乘加運算,所有數(shù)據(jù)是復(fù)數(shù),雖然復(fù)雜很多,但是實際運算中有許多是多余的。Rk是共軛對稱矩陣,上三角部分和下三角部分的實部相同,虛部也只是正負相反,所以只需要算出上三角矩陣的數(shù)據(jù),下三角的部分直接對虛部取反就可以了。
Xilinx的FPGA芯片中集成了硬核的乘加器DSP48,可以方便、高速地進行乘加運算[8]。但是本算法中涉及到的復(fù)數(shù)運算比較靈活,還包括一些減法運算,直接使用DSP48不是很方便的控制。故設(shè)計了一種乘加器,使用了乘法器的IP Core,按照要求設(shè)置輸入輸出數(shù)據(jù)位數(shù),其中的一個乘加運算中設(shè)置乘法器的兩路輸入為8位,輸出為16位,調(diào)用IP Core如下所示,算法中其他的矩陣運算也都與此類似[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作為兩個寄存器儲存參與運算的數(shù)據(jù),out1是乘法器計算的結(jié)果,用fc1進行存放,相累加得到f1,再按照共軛復(fù)數(shù)運算的規(guī)律得到nf1。實現(xiàn)一個8位×8位的乘加器共消耗了56個Slice,32個LUT和49個IOB。該乘加器綜合后的RTL結(jié)構(gòu)圖如圖4所示。
圖4 乘加器綜合后的RTL結(jié)構(gòu)圖
為了能最大限度地提高運算速度,所有數(shù)據(jù)都用可編程邏輯單元構(gòu)成的分布式存儲器存儲并列存儲,并且根據(jù)算法的要求實現(xiàn)的是多個乘加器同時運算,這樣雖然使用了很多邏輯資源,但任何數(shù)據(jù)都可以即取即用,便于進行大量的并行運算,以提高運算速度。
2.2 系統(tǒng)驗證仿真
本系統(tǒng)采用Xilinx公司Virtex-2實驗板進行仿真驗證,該實驗板采用的是XC2VP30芯片,它有30 816個邏輯單元, 136個18位乘法器,2 448 Kb RAM, 資源豐富[7]。開發(fā)軟件為該公司的集成開發(fā)軟件平臺ISE 9.2,HDL語言采用Verilog,使用Matlab輔助ISE完成FPGA設(shè)計的方法[9]。通過實驗板上的RS 232串口與PC機進行通信,用Matlab從計算機中傳輸數(shù)據(jù)到FPGA芯片中,運算后再通過串口回傳均衡后的信號數(shù)據(jù)到Matlab中仿真驗證星座圖,以判斷該均衡器的效果。
2.2.1 均衡過程
CIR中使用迭代算法避免了并行大向量和大矩陣的運算,而是分步運算。所以對輸入信號進行均衡,首先要進行并串變換,但是不需要變成真正的串行信號。當(dāng)Q=2時,實際上對需要均衡的輸入信號Y(i)每次取出5個數(shù)據(jù),用yk表示,暫且將這樣的變換叫作分組并串變換(P/GS),然后均衡矩陣ek與yk分組完成乘法運算得到一個zk,zk是一個數(shù)據(jù)不是向量,最后進行串并變換就得到均衡后的信號向量Z(i)。整個均衡的過程如圖5所示。
圖5 均衡步驟圖
2.2.2 仿真結(jié)果
實現(xiàn)該算法的重要一步是所設(shè)計的乘加器可以正常使用,并且實時性好。對其進行仿真如圖6所示,可以發(fā)現(xiàn)當(dāng)clk發(fā)生上升沿跳變時進行計算,圖中信號(a,b)表示輸入的數(shù)據(jù)信號;fc1表示相乘的結(jié)果;c表示進行乘加以后的運算結(jié)果,其計算準(zhǔn)確,基本上沒有延遲。
圖6 乘加器仿真結(jié)果
ISE中設(shè)計的傳輸模塊實現(xiàn)波特率為19 200 b/s的串口通信控制器,把數(shù)據(jù)通過RS 232完成FPGA與PC機的雙向通信。把均衡后的信號Z(i)傳回Matlab中,采用QPSK的星座圖進行分析,選擇子載波的數(shù)目N=128,循環(huán)前綴CP的長度為8,并且在認為信噪比被準(zhǔn)確估計的情況下均衡的結(jié)果,如圖7所示。
圖7 QPSK星座圖
由此星座圖可以看出,在均衡前接收到的信號因為多普勒頻移和噪聲的影響,偏離星座點向周圍發(fā)散,使用FPGA中均衡以后傳回的數(shù)據(jù)基本沒有發(fā)散現(xiàn)象。
3 結(jié) 語
在ISE軟件平臺上使用Verilog語言實現(xiàn)了一種基于時變OFDM系統(tǒng)的低復(fù)雜度MMSE均衡器算法。在Xilinx公司Virtex-2實驗板(XC2V930芯片)上對其進行驗證,基本達到該算法在Matlab上仿真的均衡效果。但是由于浮點數(shù)計算量太大,選用定點數(shù)對其進行截取,還是有一定的局限性,在進行大量數(shù)據(jù)的運算中還是會有些數(shù)據(jù)不太準(zhǔn)確,造成整體的誤碼率效果不是太好,故還需要進一步改進算法和FPGA的實現(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è)計[M].北京:電子工業(yè)出版社,2008.
[7]Xilinx. XUP Virtex-Ⅱ pro user guide[M].\\: Xilinx, 2007.
[8]史治國,洪少華,陳抗生.基于Xilinx FPGA的OFDM通信系統(tǒng)基帶設(shè)計[M].杭州:浙江大學(xué)出版社,2009.
[9]田耘,徐文波.Xilinx FPGA開發(fā)實用教程[M].北京:清華大學(xué)出版社,2008.
[10]夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計教程[M].北京:北京航空航天大學(xué)出版社,2008.