1.引言
在移動(dòng)通信和高速無(wú)線數(shù)據(jù)通信中,多徑效應(yīng)和信道帶寬的有限性以及信道特性的不完善性導(dǎo)致數(shù)據(jù)傳輸時(shí)不可避免的產(chǎn)生碼間干擾,成為影響通信質(zhì)量的主要因素,而信道的均衡技術(shù)可以消除碼間干擾和噪聲,并減少誤碼率。其中判決反饋均衡器(DFE)是一種非常有效且應(yīng)用廣泛得對(duì)付多徑干擾得措施。目前DFE大致有以下幾種實(shí)現(xiàn)方法:1)采用多片通用數(shù)字濾波器集成電路級(jí)聯(lián)方式,但同時(shí)由與多片帶來(lái)的體積和功耗的增加,在實(shí)際中運(yùn)用不多。2)采用DSP來(lái)實(shí)現(xiàn),如MotorolaSC140就是單片的可編程均衡器,采用軟件來(lái)實(shí)現(xiàn)算法,但由于受器件功能限制,在實(shí)時(shí)性要求極高的場(chǎng)合中受到限制。3)采用可編程邏輯器件實(shí)現(xiàn),隨著可編程邏輯器件邏輯門數(shù)量和速度的不斷增加,在單片上實(shí)現(xiàn)系統(tǒng)集成已經(jīng)成為可能,而且FPGA特別適合實(shí)現(xiàn)可配置的判決反饋均衡器。
2.判決反饋均衡器的基本原理
判決反饋均衡器(DFE)是一種非線性均衡器。如圖1所示,由前饋部分(由FIR濾波器組成)和反饋部分(由IIR濾波器組成)組成,前饋部分可以抵消在時(shí)間上超前的碼間干擾和在時(shí)間是滯后的碼間干擾(由中心抽頭的位置決定),反饋部分可以抵消在時(shí)間上滯后的碼間干擾。
均衡器的輸出為:
式中M,N分別為前饋濾波器和反饋濾波器的長(zhǎng)度。抽頭系數(shù)更新采用DD_LMS(directdecisionleastmeansquare)和CMA(constantmodulusalgorithm)算法,CMA是一種盲自適應(yīng)算法,即不需要訓(xùn)練序列,可以讓均衡器收斂到較低的MSE水平,但由于CMA的誤差量較大,從而步長(zhǎng)較小,CMA的跟蹤能力有限,因而,在DFE設(shè)計(jì)中,CMA常常作為均衡器的初始化算法,即對(duì)多徑信號(hào)的時(shí)延和幅度進(jìn)行粗略估計(jì)。而DD_LMS算法相對(duì)于CMA有更低的MSE水平,并且DD_LMS具有較低的誤差量,從而步長(zhǎng)更大,跟蹤能力強(qiáng),因而,在DFE設(shè)計(jì)中,DD_LMS常常作為均衡器穩(wěn)定后的自適應(yīng)算法。
3.設(shè)計(jì)思想
由于我們?cè)O(shè)計(jì)的DFE是一個(gè)比較復(fù)雜的系統(tǒng),我們?cè)谠O(shè)計(jì)中根據(jù)功能塊自下而上分層次進(jìn)行,這樣可以節(jié)省設(shè)計(jì)時(shí)間,減少設(shè)計(jì)輸入的錯(cuò)誤,消除重復(fù)的電路元件,并能簡(jiǎn)化校驗(yàn)于進(jìn)行修改,在實(shí)際設(shè)計(jì)中,按照模塊的大小和功能分成三部分:如圖二所示,PARTI包括接口和DFE均衡器,PARTII包括判決器和誤差控制函數(shù)運(yùn)算模塊,PARTIII為抽頭系數(shù)調(diào)整部分。
出于靈活性的考慮,系統(tǒng)采用類似于集散控制而非集中控制的方案,也就是系統(tǒng)沒有一個(gè)中心控制器,這樣可以保持三個(gè)部分的相對(duì)獨(dú)立,若要改變?cè)O(shè)計(jì),比如改變算法,只需要改變誤差控制函數(shù)運(yùn)算模塊即可。各模塊的恰當(dāng)分割大大增加了系統(tǒng)的靈活性。
4.各模塊的FPGA實(shí)現(xiàn)
4.1接口模塊
本系統(tǒng)并未涉及具體的A/D器件,僅根據(jù)常用的A/D器件的工作信號(hào)設(shè)計(jì)系統(tǒng)接口模塊。
在轉(zhuǎn)換完成后,一般A/D器件輸出一個(gè)低電平信號(hào)作為A/D的允許信號(hào)。該信號(hào)在系統(tǒng)中為輸入信號(hào)ad_end,接口模塊系統(tǒng)時(shí)鐘始終監(jiān)控ad_end的電平變化,當(dāng)檢測(cè)到ad_end的低電平時(shí),接口模塊產(chǎn)生一個(gè)“開始”脈沖作為允許信號(hào),允許DFE的延遲環(huán)節(jié)接收輸入數(shù)據(jù),并開始移位。其實(shí)現(xiàn)如圖三所示。
4.2DFE模塊
均衡器分為FFE(FeedforwardEqualizer)和FBE(FeedBackwardEqualizer)兩部分,結(jié)構(gòu)類似,前饋濾波器為32階的FIR濾波器,反饋濾波器為64階的IIR濾波器,濾波器系數(shù)寬度都為16位,精度為15位,輸入數(shù)據(jù)寬度為12位,精度為10位,判決器輸出數(shù)據(jù)為2位,精度為0位,該模塊主要由輸入移位寄存器和卷積模塊組成。
(1)輸入移位寄存器
對(duì)于前饋濾波器,由于共有32階,因此輸入寄存器的長(zhǎng)度為32。定義一個(gè)32×12的二維數(shù)組FFF[32][12],復(fù)位信號(hào)有效時(shí),F(xiàn)FF清零。復(fù)位信號(hào)無(wú)效,而輸入使能信號(hào)有效時(shí),每來(lái)一個(gè)時(shí)鐘上升沿,就從輸入端進(jìn)入一個(gè)數(shù)據(jù),上一時(shí)刻的數(shù)據(jù)分別前移一位,最前面的數(shù)據(jù)被第二個(gè)數(shù)據(jù)覆蓋。
對(duì)于反饋濾波器,由于有64階,因此輸入寄存器的長(zhǎng)度為64,定義一個(gè)64×12的二維數(shù)組FFF[64][12],數(shù)據(jù)輸入方式和前饋濾波器相同。
(2)卷積部分的實(shí)現(xiàn)
對(duì)于前饋濾波器,輸入數(shù)據(jù)寬度是12位,精度為10位,濾波器系數(shù)寬度為16位,精度為15位,輸入數(shù)據(jù)為帶符號(hào)數(shù),數(shù)據(jù)的高位為符號(hào)位,為實(shí)現(xiàn)相乘運(yùn)算,設(shè)計(jì)12×16位的乘法器,分別從前饋輸入移位寄存器和前饋系數(shù)移位寄存器中取出數(shù)據(jù)和系數(shù)作為12×16的輸入,這樣32個(gè)乘法器就分別得到32個(gè)乘積,乘積的寬度為11+15,精度為10和15的數(shù)據(jù)相乘后得到的數(shù)據(jù)精度為25位,因此結(jié)果的小數(shù)點(diǎn)在第25位和26位之間。為減少系統(tǒng)的硬件開銷,把乘法器的輸出結(jié)果進(jìn)行合理的截取,取精度為15位,低10位丟棄,這樣乘法器的輸出就變?yōu)閺牡?1位到第27位的數(shù)據(jù),寬度為17位,精度為15位。反饋濾波器實(shí)現(xiàn)與之類似。
4.3誤差控制函數(shù)運(yùn)算模塊
誤差控制函數(shù)運(yùn)算模塊主要完成判決輸出以及誤差控制函數(shù)的運(yùn)算。不同的抽頭更新算法在于誤差控制函數(shù)的不同。判決器的功能是進(jìn)行誤差判決,判決器判決部分比較簡(jiǎn)單,由于二進(jìn)制數(shù)采用補(bǔ)碼表示,判決和誤差的計(jì)算都可以用組合電路來(lái)實(shí)現(xiàn)。
4.4抽頭系數(shù)調(diào)整模塊
本模塊完成抽頭系數(shù)的自適應(yīng)調(diào)整,模塊主要由系數(shù)移位寄存器和系數(shù)調(diào)整運(yùn)算模塊組成。
(1)系數(shù)移位寄存器
對(duì)于前饋寄存器,相應(yīng)的輸入移位寄存器有32節(jié),則系數(shù)移位寄存器也有32節(jié)。設(shè)置一個(gè)初始系數(shù)裝入輸出端,32個(gè)系數(shù)輸入端,32個(gè)系數(shù)輸出端,復(fù)位信號(hào)有效時(shí),所有寄存器清零,初始系數(shù)串行裝入,裝入7個(gè)初始系數(shù)需要7個(gè)時(shí)鐘周期,在裝入使能有效時(shí),每來(lái)一個(gè)時(shí)鐘上升沿,裝入一個(gè)系數(shù),先裝入的系數(shù)右移動(dòng)一個(gè)寄存器,如果系數(shù)調(diào)整使能有效,則每來(lái)一個(gè)時(shí)鐘上升沿就把來(lái)自系數(shù)調(diào)整運(yùn)算模塊調(diào)整后的系數(shù)并行裝入到系數(shù)移位寄存器中。
對(duì)于反饋系數(shù),移位寄存器有64節(jié),移位原理同前饋濾波器。
(2)系數(shù)運(yùn)算調(diào)整
抽頭系數(shù)的調(diào)整可按上式來(lái)計(jì)算,其中為時(shí)刻前抽頭系數(shù)向量,為時(shí)刻反饋抽頭系數(shù)向量,為輸入數(shù)據(jù)向量,為判決器輸出向量,為誤差控制函數(shù)計(jì)算模塊的輸出。
對(duì)于前饋抽頭系數(shù),輸入的前一個(gè)時(shí)刻的系數(shù)來(lái)自前饋系數(shù)移位寄存器輸出的系數(shù),每來(lái)一個(gè)時(shí)鐘,系數(shù)調(diào)整一次。為寬度12位,精度為10位的數(shù)據(jù),為寬度為九位,精度為0位的數(shù)據(jù),兩者輸入到一個(gè)12×9乘法器相乘后,得到寬度為11+8+1=20位,精度為10位的數(shù)據(jù)。由于在誤差控制模塊中計(jì)算時(shí),只取了低9位,小數(shù)點(diǎn)右移了15位,現(xiàn)在把小數(shù)點(diǎn)左移15位得到寬度為26,精度為25的數(shù)據(jù)。截取高16位,得到寬度為16、精度為15的系數(shù)調(diào)整量。前一個(gè)時(shí)刻的系數(shù)和這個(gè)調(diào)整量輸入到一個(gè)16位減法器,這里系數(shù)極小,所以不必考慮進(jìn)位,得到一個(gè)寬度為16位、精度為15位的差,即調(diào)整后的系數(shù),輸出到前饋系數(shù)移位寄存器。
對(duì)于反饋抽頭系數(shù),輸入的前一個(gè)時(shí)刻的系數(shù)來(lái)自反饋系數(shù)移位寄存器輸出的系數(shù)。每來(lái)一個(gè)時(shí)鐘,系數(shù)調(diào)整一次。為寬度為2、精度為0的數(shù)據(jù),為寬度9位、精度0位的數(shù)據(jù),兩者輸入到一個(gè)2×9乘法器相乘后,得到寬度為1+8+1=10位、精度為0位的乘積。同樣把小數(shù)點(diǎn)左移15位,得到系數(shù)調(diào)整量。前一個(gè)時(shí)刻的系數(shù)和這個(gè)調(diào)整量輸入到一個(gè)16位減法器,得到一個(gè)調(diào)整后的系數(shù),寬度16位、精度15位。
4.5FPGA實(shí)現(xiàn)
整個(gè)設(shè)計(jì)全部用verilogHDL語(yǔ)言實(shí)現(xiàn),F(xiàn)PGA芯片采用XC2VP70,采用SynplifyPro7.7進(jìn)行綜合,ncverilog5.0進(jìn)行功能仿真,ISE6.3生成布線文件。根據(jù)綜合結(jié)果對(duì)設(shè)計(jì)進(jìn)行了優(yōu)化,最后系統(tǒng)顯示最高頻率可到80M,上板測(cè)試功能正常,系統(tǒng)延遲控制在35us范圍以內(nèi),可以滿足絕大多數(shù)高速無(wú)線數(shù)據(jù)通訊系統(tǒng)對(duì)均衡器的要求。
5總結(jié)
本文作者創(chuàng)新點(diǎn):針對(duì)高速無(wú)線數(shù)據(jù)通訊的實(shí)時(shí)性要求,提出采用FPGA來(lái)實(shí)現(xiàn)可配置均衡器的設(shè)計(jì),在設(shè)計(jì)過程中采用自頂而下劃分的設(shè)計(jì)方式,即方便了設(shè)計(jì)的需要,同時(shí)又滿足了性能的要求,在實(shí)際項(xiàng)目中收到很好的效果。