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


式中:





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

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





2 均衡器算法的FPGA實(shí)現(xiàn)
當(dāng)載波數(shù)比較大時(shí),,OFDM均衡算法所要計(jì)算的矩陣比較龐大,,計(jì)算量大,很難保證實(shí)時(shí)性的要求,。于是人們很自然地會(huì)想到用實(shí)時(shí)性很強(qiáng)的FPGA來(lái)實(shí)現(xiàn)均衡器的設(shè)計(jì),,但是均衡本身所需要處理的數(shù)據(jù)量和運(yùn)算量都非常大,即使使用FPGA實(shí)現(xiàn)也很困難,。
若采用文獻(xiàn)中的算法運(yùn)算量是o(N2),,假如當(dāng)載波數(shù)N=128時(shí),運(yùn)算量還是很大的,,無(wú)法保證實(shí)時(shí)性,。從均衡效果和運(yùn)算量?jī)煞矫婵紤],采用了文獻(xiàn)中的算法,。這是一種典型的迭代算法,,效果與文獻(xiàn)算法相接近,,但是在計(jì)算中避免了求一個(gè)很大的矩陣的逆運(yùn)算,而是從頻域轉(zhuǎn)移矩陣G中提取出了不大的有效矩陣,,這樣就減少了大量運(yùn)算,。
2.1 硬件設(shè)計(jì)思想
在對(duì)均衡器算法進(jìn)行FPGA設(shè)計(jì)之前,先用Matlab仿真該均衡器浮點(diǎn)算法,,通過(guò)分析程序可以發(fā)現(xiàn),,該算法的核心部分是迭代求逆矩陣的過(guò)程。該算法的瓶頸主要是求解由復(fù)數(shù)元素組成的矩陣的逆的計(jì)算量巨大,,而且是浮點(diǎn)數(shù)會(huì)占用很大的存儲(chǔ)空間,。為盡量減少需要使用的邏輯資源,在進(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)生的



CIR模塊完成矩陣迭代運(yùn)算過(guò)程,,它從輸入端口讀入Ak以及對(duì)應(yīng)的



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




Xilinx的FPGA芯片中集成了硬核的乘加器DSP48,,可以方便,、高速地進(jìn)行乘加運(yùn)算。但是本算法中涉及到的復(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)算也都與此類似,。


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 KbRAM,資源豐富,。開(kāi)發(fā)軟件為該公司的集成開(kāi)發(fā)軟件平臺(tái)ISE
9.2,,HDL語(yǔ)言采用Verilog,使用Matlab輔助ISE完成FPGA設(shè)計(jì)的方法,。通過(guò)實(shí)驗(yàn)板上的RS 232串口與PC機(jī)進(jìn)行通信,,用Matlab從計(jì)算機(jī)中傳輸數(shù)據(jù)到FPGA芯片中,運(yùn)算后再通過(guò)串口回傳均衡后的信號(hào)數(shù)據(jù)到Matlab中仿真驗(yàn)證星座圖,,以判斷該均衡器的效果,。
2.2.1 均衡過(guò)程
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è)均衡的過(guò)程如圖5所示,。

實(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),;fcl表示相乘的結(jié)果,;c表示進(jìn)行乘加以后的運(yùn)算結(jié)果,其計(jì)算準(zhǔn)確,,基本上沒(méi)有延遲,。


3 結(jié)語(yǔ)
在ISE軟件平臺(tái)上使用Verilog語(yǔ)言實(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á)到更好的均衡效果,。