0 引言
正交頻分復用(OFDM)是一種正交多載波調(diào)制技術,它將寬帶頻率選擇性衰落信道轉(zhuǎn)換成一系列窄帶平坦衰落信道,在克服信道多徑衰落所引起的碼間干擾,實現(xiàn)高數(shù)據(jù)傳輸?shù)确矫婢哂歇毺氐膬?yōu)勢。但是由于OFDM信號頻譜重疊,對信道變化很敏感,在高速移動下,信道的時變特性更加明顯,此時OFDM系統(tǒng)載波間的正交性會遭到破壞,出現(xiàn)載波間干擾(ICI),這會導致系統(tǒng)性能明顯降低。為了消除ICI,必須采用適當?shù)木饧夹g以補償ICI。國內(nèi)外許多學者對這些問題進行了大量的研究,提出了各種不同的方法,得到了一些階段性成果。文獻提出了一種低復雜度的迭代MMSE均衡器算法,在保證均衡效果的同時把運算量成功降低到o(N),為該均衡器算法的實際運用奠定了基礎。
現(xiàn)場可編程門陣列(Field Programmable Gate Array,FPGA)器件近年來取得了飛速的發(fā)展,已經(jīng)具有強大的計算性能和邏輯實現(xiàn)能力。特別是Xilinx公司的FPGA具有豐富的IP資源,容量大且具有強大的軟件支持,在各個領域得到了廣泛的應用。本文主要討論基于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ù))的循環(huán)前綴(CP)。在去除了循環(huán)前綴CP以后第i個數(shù)據(jù)幀收到的數(shù)據(jù)矢量為:


式中:





由于在高速移動的環(huán)境下,接收信號會受到ICI的影響,故在整個系統(tǒng)中添加均衡模塊,假設均衡器用E(i)來表示,則均衡后的信號可以表示為:

把上面式中的i去掉,根據(jù)最小均方誤差的規(guī)則,可以簡寫得到均衡矩陣為:





當載波數(shù)比較大時,OFDM均衡算法所要計算的矩陣比較龐大,計算量大,很難保證實時性的要求。于是人們很自然地會想到用實時性很強的FPGA來實現(xiàn)均衡器的設計,但是均衡本身所需要處理的數(shù)據(jù)量和運算量都非常大,即使使用FPGA實現(xiàn)也很困難。
若采用文獻中的算法運算量是o(N2),假如當載波數(shù)N=128時,運算量還是很大的,無法保證實時性。從均衡效果和運算量兩方面考慮,采用了文獻中的算法。這是一種典型的迭代算法,效果與文獻算法相接近,但是在計算中避免了求一個很大的矩陣的逆運算,而是從頻域轉(zhuǎn)移矩陣G中提取出了不大的有效矩陣,這樣就減少了大量運算。
2.1 硬件設計思想
在對均衡器算法進行FPGA設計之前,先用Matlab仿真該均衡器浮點算法,通過分析程序可以發(fā)現(xiàn),該算法的核心部分是迭代求逆矩陣的過程。該算法的瓶頸主要是求解由復數(shù)元素組成的矩陣的逆的計算量巨大,而且是浮點數(shù)會占用很大的存儲空間。為盡量減少需要使用的邏輯資源,在進行ISE設計時,數(shù)據(jù)用16位定點數(shù)表示,其中高8位是整數(shù)部分,低8位是小數(shù)部分。
2.1.1 硬件設計框圖
實現(xiàn)該均衡器的硬件設計框圖如圖2所示,其中G為從Matlab中產(chǎn)生的頻域轉(zhuǎn)移矩陣,控制模塊完成從G中取出對應的有效值得到Ak,并且控制當一組運算完成后運用上一組產(chǎn)生的



CIR模塊完成矩陣迭代運算過程,它從輸入端口讀入Ak以及對應的



其中,CLK為時鐘;γ是模擬信道的信噪比;Ak是頻域轉(zhuǎn)移矩陣G中取出的有效矩陣;trag是控制信號,當一次運算結(jié)束產(chǎn)生一個有效的




Xilinx的FPGA芯片中集成了硬核的乘加器DSP48,可以方便、高速地進行乘加運算。但是本算法中涉及到的復數(shù)運算比較靈活,還包括一些減法運算,直接使用DSP48不是很方便的控制。故設計了一種乘加器,使用了乘法器的IP Core,按照要求設置輸入輸出數(shù)據(jù)位數(shù),其中的一個乘加運算中設置乘法器的兩路輸入為8位,輸出為16位,調(diào)用IP Core如下所示,算法中其他的矩陣運算也都與此類似。


2.2 系統(tǒng)驗證仿真
本系統(tǒng)采用Xilinx公司Virtex-2實驗板進行仿真驗證,該實驗板采用的是XC2VP30芯片,它有30 816個邏輯單元,136個18位乘法器,2 448 KbRAM,資源豐富。開發(fā)軟件為該公司的集成開發(fā)軟件平臺ISE
9.2,HDL語言采用Verilog,使用Matlab輔助ISE完成FPGA設計的方法。通過實驗板上的RS 232串口與PC機進行通信,用Matlab從計算機中傳輸數(shù)據(jù)到FPGA芯片中,運算后再通過串口回傳均衡后的信號數(shù)據(jù)到Matlab中仿真驗證星座圖,以判斷該均衡器的效果。
2.2.1 均衡過程
CIR中使用迭代算法避免了并行大向量和大矩陣的運算,而是分步運算。所以對輸入信號進行均衡,首先要進行并串變換,但是不需要變成真正的串行信號。當Q=2時,實際上對需要均衡的輸入信號Y(i)每次取出5個數(shù)據(jù),用yk表示,暫且將這樣的變換叫作分組并串變換(P/GS),然后均衡矩陣ek與yk分組完成乘法運算得到一個zk,zk是一個數(shù)據(jù)不是向量,最后進行串并變換就得到均衡后的信號向量Z(i)。整個均衡的過程如圖5所示。

實現(xiàn)該算法的重要一步是所設計的乘加器可以正常使用,并且實時性好。對其進行仿真如圖6所示,可以發(fā)現(xiàn)當clk發(fā)生上升沿跳變時進行計算,圖中信號(a,b)表示輸入的數(shù)據(jù)信號;fcl表示相乘的結(jié)果;c表示進行乘加以后的運算結(jié)果,其計算準確,基本上沒有延遲。


3 結(jié)語
在ISE軟件平臺上使用Verilog語言實現(xiàn)了一種基于時變OFDM系統(tǒng)的低復雜度MMSE均衡器算法。在Xilinx公司Virtex-2實驗板(XC2V930芯片)上對其進行驗證,基本達到該算法在Matlab上仿真的均衡效果。但是由于浮點數(shù)計算量太大,選用定點數(shù)對其進行截取,還是有一定的局限性,在進行大量數(shù)據(jù)的運算中還是會有些數(shù)據(jù)不太準確,造成整體的誤碼率效果不是太好,故還需要進一步改進算法和FPGA的實現(xiàn)方法,以期達到更好的均衡效果。