郭強勝,鄭 重,肖 飛,楊建平
(中國電子科技集團公司第三十研究所,四川 成都 610041)
正交頻分復(fù)用[1](Orthogonal Frequency Division Multiplexing,OFDM)技術(shù)是適用于在無線信道環(huán)境下的高速數(shù)據(jù)傳輸技術(shù),其具有高傳輸速率、強抗干擾能力等優(yōu)點,既可用于民用移動通信,也可應(yīng)用于軍事高速專網(wǎng)通信。但是,OFDM系統(tǒng)在設(shè)計原理上就注定存在其固有的缺陷,即多個子載波的相互疊加會產(chǎn)生峰均比較高的時域信號。在這種情況下,系統(tǒng)的功率放大器就需要有較大的線性區(qū)間,使該功放的線性工作范圍大于OFDM系統(tǒng)峰值功率和平均功率的占據(jù)區(qū)間,從而滿足OFDM系統(tǒng)中信號的無失真?zhèn)鬏擺2],但這種做法會導(dǎo)致功率放大器的效率會大大降低,其中絕大部分能量成為熱能浪費掉。另外擴大功率放大器的線性區(qū)間也將引起設(shè)備成本的增加,在移動通信設(shè)備中都是絕對不允許的。因此,必須找到有效的方法來降低OFDM系統(tǒng)的峰均比。峰值脈沖抵消削峰(Pulse Cancellation Crest Factor Reduction,PC-CFR)是限幅削峰法[3]中的一種,該算法首先找出待削峰值,然后與系統(tǒng)的削峰脈沖相減,最終達到削峰的目的。其中削峰脈沖是頻率響應(yīng)與待削峰時域信號具有相同帶寬的濾波器的沖擊響應(yīng),該削峰方法可最大限度的保持被削峰值信號的相位不發(fā)生偏轉(zhuǎn)。該算法不會降低系統(tǒng)的誤比特率(BER),且數(shù)據(jù)子載波數(shù)據(jù)不會產(chǎn)生失真,是一種較好的降低峰均比的方法。
在大部分系統(tǒng)中,基于波峰因子的削峰算法都是將待削峰值信號與削峰修正信號相減,其實現(xiàn)原理如圖1所示。
圖1 CFR算法基本原理
算法中修正信號的頻率響應(yīng)與待削峰峰值信號在頻率響應(yīng)上是相同的。在PC-CFR算法[4]中,修正信號是一些相互獨立的對消脈沖的和集。其中,每一個獨立的對消脈沖是與被削峰信號頻譜相同的濾波器的沖擊響應(yīng)產(chǎn)生而成。
圖2表明了峰值對消CFR算法的峰值檢測過程,尋找到系統(tǒng)超過設(shè)定閾值的峰值后,計算出幅度超過設(shè)定門限值的部分(A-Ath)。
圖2 峰值檢測過程
圖3表示的是該削峰算法中使用的抵消脈沖,該脈沖是由單位幅度信號的沖擊響應(yīng)與(A-Ath)×eθ相乘而生成,θ是信號峰值相位。由此看出,抵消脈沖是由信號峰值減去削峰門限部分的信號幅度與信號相位共同產(chǎn)生而成[5]。實際系統(tǒng)中每個發(fā)送信號都是復(fù)信號,抵消脈沖須具備與相應(yīng)峰值信號相一致的相位。
圖3 削峰脈沖
如圖4所示,用原始峰值信號減去相對應(yīng)的抵消脈沖,可將峰值信號的幅度降低到門限值以下,同時保持了信號的相位不變,具有較低的失真度。
圖4 峰值抵消
在硬件實現(xiàn)中,抵消脈沖是通過抵消脈沖生成器(Cancellation Pulse Generator,CPG)產(chǎn)生的,如圖5所示。當(dāng)檢測到信號峰值到來時,控制地址計數(shù)器產(chǎn)生單位削峰脈沖,同時將此峰值信號與削峰門限的幅度差值和相位輸入到復(fù)數(shù)乘法器,從而產(chǎn)生與該峰值相匹配的削峰脈沖[4]。
一般情況下,削峰算法經(jīng)過一次削峰后并不能把系統(tǒng)所有的超過門限值的峰值都削除到閾值以下,此時需要算法進行多次迭代削峰來消除系統(tǒng)所有的峰值信號[6]。算法的復(fù)雜程度和資源占用情況取決于需要進行的迭代削峰次數(shù)。
一個典型峰值脈沖抵消算法的詳細(xì)實現(xiàn)結(jié)構(gòu)如圖6所示。
圖5 抵消脈沖生成器
圖6 峰值脈沖抵消算法原理框圖
(1)峰值檢測
峰值檢測模塊完成在一個設(shè)定區(qū)間內(nèi)查找出超出設(shè)定閾值幅度的信號峰值,這些設(shè)定區(qū)間和設(shè)定閾值都保存在特定寄存器中。
在PC-CFR算法中,有兩種峰值檢測的方法。第一種方法是比較當(dāng)前數(shù)據(jù)點與前一時刻數(shù)據(jù)點的幅度值,如果當(dāng)前數(shù)據(jù)點幅度大于前一時刻數(shù)據(jù)點的幅度值,并且大于系統(tǒng)設(shè)定的削峰門限值,那么就可判斷當(dāng)前數(shù)據(jù)點就是檢測到的信號峰值;第二種方法是,在一個特定的門限區(qū)間內(nèi)尋找信號幅度的最大值作為檢測到的信號峰值。假如一個特定的門限區(qū)間為[x1,x2],此時的信號幅度曲線與系統(tǒng)設(shè)定的削峰門限值相交于x1和x2兩個點,同時x1和x2之間的信號幅度均大于系統(tǒng)設(shè)定的削峰門限值。
第一種峰值檢測方法具有實現(xiàn)簡單、檢測延時較固定的優(yōu)點;但是當(dāng)系統(tǒng)時域信號峰值點出現(xiàn)很密集時,算法對該密集信號峰值點進行削峰處理時的噪聲可能會相互疊加增強,出現(xiàn)信號峰值再生的不好現(xiàn)象。第二種峰值檢測方法,由于其在一個特定的門限區(qū)間內(nèi)只會檢測到一個峰值,在削峰處理時只有該點會引入削峰噪聲,沒有出現(xiàn)噪聲疊加從而形成峰值再生的可能性,但該檢測方法在工程實現(xiàn)中較第一種復(fù)雜。
圖7為兩種峰值檢測過程的示意圖[6]。采用第一種峰值檢測方法,可以在兩個限幅區(qū)間檢測到A、B和C共3個峰值;采用第二種峰值檢測方法,可以在兩個限幅區(qū)間檢測到A和C共2個峰值,此時B不能成為峰值。
圖7 第二種峰值點的定義
(2)削峰因子
削峰因子模塊主要是為算法抵消脈沖生成幅度和相位的復(fù)數(shù)調(diào)整因子。該復(fù)數(shù)因子用來修正削峰脈沖的幅度和相位,保證經(jīng)過削峰后的信號與原始信號具有相同的相位。為了滿足上述要求,將檢測到的峰值信號的削峰因子作用于與該峰值相對應(yīng)的削峰脈沖系數(shù)。該模塊將峰值檢測模塊檢測到的超過設(shè)定門限值的峰值信號的幅度和相位作為輸入,信號峰值與門限值的差值就是削峰因子的幅度,信號峰值的相位就是削峰因子的相位。可用下式的數(shù)學(xué)式表示。
式中,θ是峰值信號的相位,|x|是信號峰值的幅度,γ是削峰門限值,a就是峰值因子。
(3)抵消脈沖發(fā)生器
抵消脈沖發(fā)生器是整個削峰算法的核心,主要用來產(chǎn)生與峰值信號相匹配的削峰處理抵消脈沖。抵消脈沖實質(zhì)是濾波器,可通過在MATLAB軟件內(nèi)的濾波器設(shè)計方法得到,其設(shè)計頻帶寬度與峰值信號相同。算法將已設(shè)計好的濾波器系數(shù)預(yù)先放置在存儲器中。
在設(shè)計抵消脈沖濾波器[5]時,需要在濾波器系數(shù)長度和性能之間達到平衡。如果濾波器的過渡帶設(shè)計得很陡峭,此時濾波器的系數(shù)長度就較長,這樣設(shè)計的后果就會導(dǎo)致算法的削峰密度降低,容易遺漏峰值。如果濾波器的過渡帶設(shè)計過長,將會造成嚴(yán)重帶外泄露。因此,在設(shè)計濾波器的時候,考慮鄰道泄露比[7](Adjacent Channel Leak-age Ratio,ACLR)在滿足系統(tǒng)要求的前提下,采用盡可能短的濾波器系數(shù)。
(4)脈沖分配器
算法在進行削峰處理時,脈沖分配器主要負(fù)責(zé)CPG的分配使用。在初始狀態(tài),所有的CPG都處于空閑態(tài)。當(dāng)算法檢測到第1個峰值信號到來時,脈沖分配器為該峰值分配一個空閑的CPG用于削峰處理,同時算法把該CPG由空閑態(tài)標(biāo)記為占用態(tài),直到此峰值的削峰過程結(jié)束后才釋放;算法繼續(xù)檢測其他峰值信號到來,并為其分配剩下的空閑CPG,直到所有空閑的CPG分配出去。
如果檢測到超門限值的信號峰值過于密集,可能出現(xiàn)可分配的CPG的數(shù)量不能滿足峰值需求。針對此種情況,在實際的系統(tǒng)中通常需要設(shè)置CPG分配間距參數(shù),只有大于該參數(shù)間距的峰值才會被分配CPG。小于該參數(shù)間距的峰值將不會被分配CPG,當(dāng)前的峰值不會被處理。
峰值脈沖抵消算法可根據(jù)實際系統(tǒng)削峰門限值設(shè)置的高低來決定采用幾次迭代削峰,經(jīng)過多次迭代后基本都可達到預(yù)期的抑制效果。該算法采用兩次迭代實現(xiàn),為達到更好的抑制效果,可以根據(jù)實際需要增加迭代次數(shù),其中每個迭代模塊是相同模塊的重復(fù)調(diào)用。其頂層設(shè)計如圖8所示。
圖8 算法實現(xiàn)頂層設(shè)計
峰值脈沖抵消算法的實現(xiàn)是參照算法的原理框圖來逐一實現(xiàn)的。算法首先將數(shù)據(jù)進行cordic坐標(biāo)轉(zhuǎn)換,計算出當(dāng)前數(shù)據(jù)的幅值和相位;然后使用峰值檢測模塊來檢測時域數(shù)據(jù)流超過設(shè)定門限值的峰值,同時根據(jù)檢測到的峰值數(shù)據(jù)計算出削峰因子(幅度差值和相位);利用削峰因子參數(shù)實時產(chǎn)生與待削峰值相匹配的抵消脈沖;最后將該峰值信號經(jīng)過適當(dāng)?shù)难訒r后與相匹配的削峰脈沖相減得到削峰后的數(shù)據(jù)。
(1)cordic模塊:主要完成信號的幅值和相位的計算。信號的幅值主要用來峰值檢測,信號的相位主要為生成削峰脈沖提供相位參數(shù)。
(2)峰值檢測模塊:該模塊采用上述提到的第二種檢測方法,在超過門限閾值的多個信號中,最大的那個峰值初判定為該區(qū)間的峰值,此時要等到信號幅值下降到門限閾值下面才能真正的確定區(qū)間峰值是真正的峰值。
該模塊主要由比較器實現(xiàn),實時的比較超過設(shè)定門限值和信號的幅值。該模塊把內(nèi)部控制信號為new_peak和search_start信號。在初始狀態(tài),new_peak為低電平,search_start為高電平。當(dāng)檢測到信號的幅值大于設(shè)定門限值,search_start信號變?yōu)榈碗娖?,?biāo)志開始峰值檢測過程;在檢測過程中,如果新的信號的幅值大于當(dāng)前記錄的信號幅值的最大值,new_peak信號變?yōu)楦唠娖?,并將新的信號的幅值更新為記錄的信號幅值的最大值,如果新的信號的幅值低于?dāng)前記錄的信號幅值的最大值,new_peak信號變?yōu)榈碗娖?;如果新的信號的幅值重新低于設(shè)定門限值,search_start信號變?yōu)楦唠娖?,?biāo)志一次峰值檢測過程結(jié)束。
(3)削峰因子模塊:該模塊將檢測到的峰值信號與系統(tǒng)設(shè)定的門限值相減,計算出二者的差值,同時根據(jù)檢測到的峰值信號的相位計算出二者差值的相位,得到削峰因子的虛部和實部參數(shù)。
(4)抵消脈沖生成器模塊:該模塊是整個設(shè)計實現(xiàn)的核心模塊。如圖9所示,整個模塊包括復(fù)數(shù)乘法器(Complex MAC)、乘前延時器(pre_mac_delay)、CPG系數(shù)存儲器(filter_ram)、CPG復(fù)用器(CPG Multiplexing)和CPG分配器(CPG_allocator)組成。
圖9 抵消脈沖生成器
該模塊采用分時復(fù)用的工作方式。削峰脈沖的沖擊響應(yīng)濾波器參數(shù)預(yù)先存放在系數(shù)寄存器中。當(dāng)峰值信號到來時,CPG分配器根據(jù)削峰脈沖發(fā)生器的使用情況來為其分配削峰脈沖。CPG復(fù)用器模塊完成CPG地址值和削峰因子的時分多路切換,其中CPG地址用于讀出保存在ROM中的濾波器系數(shù),削峰因子作用于復(fù)數(shù)乘法器。復(fù)數(shù)乘法器模塊利用削峰因子對完成對濾波器系數(shù)的縮放和相位處理。乘前延時器模塊將進入復(fù)數(shù)乘法器的數(shù)據(jù)進行延時處理來對齊待削峰數(shù)據(jù)。最后將對齊后的數(shù)據(jù)相減,完成一次削峰處理。
利用MATLAB軟件對模塊進行仿真,仿真環(huán)境為OFDM多載波系統(tǒng),信道帶寬20 MHz,子載波數(shù)為1 200個。在正常情況下,峰均比抑制門限值設(shè)置的越低,采用相同迭代次數(shù)的算法對峰均比抑制的效果越差,同時對系統(tǒng)性能造成的惡化更大。
(1)抑制門限值為5 dB
當(dāng)峰均比抑制門限值設(shè)置為5 dB時,算法采用兩次迭代后的抑制效果如圖10所示。
圖10 門限值為5 dB的峰均比抑制效果
對信噪比的惡化影響如圖11所示。從仿真的結(jié)果看,該抑制算法可將大部分輸入信號的峰值抑制到5 dB以下,但是仍有少部分信號只被抑制到9 dB,并且此種情況下的信噪比損失[8]約在1 dB左右。
圖11 峰均比抑制模塊對信噪比的影響(TH=5)
(2)抑制門限值為7 dB
當(dāng)峰均比抑制門限值設(shè)置為7 dB時,算法采用兩次迭代后的抑制效果如圖12所示。
圖12 門限值7 dB的峰均比抑制效果
對信噪比的惡化影響如圖13所示。從仿真的結(jié)果看,該抑制算法可將絕大部分輸入信號的峰值抑制到7 dB以下,只有極少部分信號可到達到8 dB,并且此時的信噪比損失小于0.1 dB。
圖13 峰均比抑制模塊對信噪比的影響(TH=7)
從上述仿真結(jié)果來看,該削峰算法能夠?qū)FDM多載波系統(tǒng)進行峰均比抑制。當(dāng)峰均比抑制門限設(shè)置為5~6 dB時,該抑制算法通過兩次迭代削峰后仍有部分峰值信號沒有被有效抑制掉,同時對系統(tǒng)的信噪比有較大的惡化;當(dāng)抑制門限設(shè)為7 dB時,該算法只有極少數(shù)的峰值信號沒有被抑制掉,此種情況下信噪比幾乎無惡化。總體來看,對具有1 200個子載波的OFDM系統(tǒng),將峰均比抑制到7 dB是完全可行的。
將采用兩次迭代的抑制算法在FPGA內(nèi)進行了設(shè)計實現(xiàn),同時用ModelSim軟件進行了仿真驗證。在MATLAB和ModelSim仿真時采用相同的數(shù)據(jù)流作為算法的激勵,比較MATLAB和ModelSim的輸出數(shù)據(jù)流,以此來判斷FPGA算法實現(xiàn)的正確性。在進行FPGA模塊的仿真驗證時,同樣將抑制門限值設(shè)置為5 dB和7 dB。
(1)抑制門限值為5 dB
門限為5 dB時的MATLAB仿真結(jié)果如圖14和圖15所示。其中圖14(a)是該抑制算法經(jīng)過第1次迭代后的時域數(shù)據(jù)仿真圖,圖14(b)是該抑制算法經(jīng)過第2次迭代后的時域數(shù)據(jù)仿真圖。從圖中可以看出,輸入數(shù)據(jù)在經(jīng)過抑制算法第1次迭代后仍有大量的峰值信號未被抵消掉;在經(jīng)過第2次迭代抑制后,超過門限閾值的峰值雖有減少,但仍然很多。這就意味著門限值設(shè)置為5 dB,算法采用2次迭代是不能完全將峰值信號抑制在門限值以下的。圖15是MATLAB仿真輸出的部分?jǐn)?shù)據(jù)值。
圖14 門限值為5 dB時MATLAB時域仿真圖
圖15 門限值為5 dB時MATLAB仿真輸出數(shù)據(jù)
該算法的FPGA實現(xiàn)模塊采用ModelSim軟件仿真的結(jié)果如圖16、圖17所示。在圖16中,上面的時域數(shù)據(jù)圖是算法在第1次迭代后的輸出數(shù)據(jù)流,下面的時域數(shù)據(jù)圖算法在在第2次迭代的輸出數(shù)據(jù)流。可明顯的看出,算法在第2次迭代削峰抑制后超過設(shè)定門限值的峰值比第1次迭代后的峰值要減少很多,但仍然有少部分峰值超過設(shè)定的門限值,該ModelSim仿真結(jié)果與Matlab仿真結(jié)果是一致的。
FPGA算法模塊經(jīng)過ModelSim仿真后的部分?jǐn)?shù)據(jù)如圖17所示,通過對比圖15和圖17中的數(shù)據(jù)值,發(fā)現(xiàn)兩者完全相同,這樣就可以證明算法在FPGA中的實現(xiàn)與MATLAB仿真達到了相同的效能,驗證了FPGA實現(xiàn)的正確性。
圖16 門限值為5 dB時ModelSim輸出時域圖
圖17 門限值為5 dB時ModelSim輸出數(shù)據(jù)
(2)峰均比抑制門限為7 dB
門限為7 dB時的MATLAB仿真結(jié)果如圖18和圖19所示。其中圖18(a)是該抑制算法經(jīng)過第1次迭代后的時域數(shù)據(jù)仿真圖,圖18(b)是該抑制算法經(jīng)過第2次迭代后的時域數(shù)據(jù)仿真圖。從圖中可以看出,算法在第1次迭代后就幾乎將超過門限值的信號完全抑制掉了;算法在經(jīng)過第2次迭代后,未有超過門限閾值的峰值信號出現(xiàn)。所以,算法采用2次迭代,是完全將峰值信號抑制在7 dB門限值以下的。同時多次迭代后也未出現(xiàn)峰值再生的問題,對系統(tǒng)的信噪比幾乎沒有任何影響[8],不會惡化整個系統(tǒng)的性能。圖19是MATLAB仿真輸出的部分?jǐn)?shù)據(jù)。
圖18 門限值為7 dB時MATLAB時域仿真圖
圖19 門限值為7 dB時MATLAB仿真輸出數(shù)據(jù)
該算法的FPGA實現(xiàn)模塊采用ModelSim軟件仿真的結(jié)果如圖20、圖21所示。在圖20中顯示的時域數(shù)據(jù)圖是第1次迭代和第2次迭代后的算法輸出結(jié)果。從圖20中可看出,7 dB抑制門限的削峰算法在第2次迭代后沒有超過7 dB的峰值出現(xiàn)。該結(jié)論與MATLAB仿真結(jié)果是一致的。
圖21是ModelSim仿真輸出的部分?jǐn)?shù)據(jù),通過對比圖19和21中的數(shù)據(jù),發(fā)現(xiàn)兩組數(shù)據(jù)完全相同,從而證明了算法FPGA實現(xiàn)與MATLAB仿真達到了完全一致的效果,從而證明了實現(xiàn)的正確性。
圖20 門限值為7 dB時ModelSim輸出時域圖
圖21 門限值為7 dB時ModelSim輸出數(shù)據(jù)
通過對PC-CFR算法進行原理分析、仿真和FPGA設(shè)計實現(xiàn),證明了該算法的可實現(xiàn)性。使用MATLAB和ModelSim仿真軟件,對算法按照設(shè)定的不同抑制門限值進行了仿真驗證,同時將Modelsim仿真的結(jié)果與MATLAB仿真結(jié)果進行了對比。從比較的結(jié)果可看出,該算法的FPGA實現(xiàn)與MATLAB仿真達到了相同的抑制效果。該算法以較低的失真度,通過多次迭代可有效的將OFDM系統(tǒng)中的峰均比抑制到設(shè)定的門限值以下,該算法具有優(yōu)秀的峰均比抑制效果,在實際工程中具有廣泛的應(yīng)用前景。