傅蕾+王雷+王亮
摘要摘要:BCJR算法是一種最優(yōu)譯碼算法,但是計(jì)算量大、譯碼復(fù)雜;SOVA算法譯碼簡單,但是性能稍差。針對這兩種算法的缺點(diǎn),在連續(xù)相位調(diào)制信號系統(tǒng)中,提出一種基于減少搜索T-BCJR與SOVA算法的改進(jìn)譯碼算法。該算法能在減少迭代譯碼時(shí)的搜索路徑數(shù)量、降低譯碼復(fù)雜度的同時(shí)達(dá)到比較好的譯碼性能。經(jīng)過實(shí)驗(yàn)仿真,驗(yàn)證了該算法的可行性與優(yōu)越性。
關(guān)鍵詞關(guān)鍵詞:SOVA;T-BCJR;連續(xù)相位調(diào)制;迭代譯碼
DOIDOI:10.11907/rjdk.162309
中圖分類號:TP312文獻(xiàn)標(biāo)識碼:A文章編號文章編號:16727800(2017)001003503
引言
連續(xù)相位調(diào)制CPM(Continuous Phase Modulation)信號是一種恒包絡(luò)且相位連續(xù)的調(diào)制信號,與其它調(diào)制方法相比,具有很高的頻譜和功率利用率。由于信號的包絡(luò)恒定,對功放的非線性特性不敏感,可以使用C類(非線性)功率放大器。另外,信號相位連續(xù),帶外輻射小,產(chǎn)生的鄰道干擾也比較小。
因此,CPM調(diào)制技術(shù)近年來受到廣泛關(guān)注。G.Ungerboeck[1]提出了網(wǎng)格編碼調(diào)制TCM(Trellis Coded Modulation)的設(shè)計(jì)方法,將線性調(diào)制技術(shù)與信道編碼結(jié)合,很大程度上提高了系統(tǒng)的性能。C.Berrou[2]提出了Turbo碼,迭代解碼的結(jié)構(gòu)被應(yīng)用到串行級聯(lián)CPM系統(tǒng)的譯碼中。孫錦華[3]提出了一種基于RSSD思想的減狀態(tài)譯碼算法,降低了譯碼復(fù)雜度。
本文主要探討連續(xù)相位調(diào)制信號在高斯白噪聲信道下的譯碼算法,并提出一種基于Turbo譯碼算法的改進(jìn)結(jié)構(gòu),該算法結(jié)合了Turbo碼譯碼的SOVA與BCJR算法的優(yōu)點(diǎn)。通過仿真實(shí)驗(yàn),驗(yàn)證了該算法的可行性,可以在減少算法復(fù)雜度的同時(shí)改善系統(tǒng)的譯碼性能。
1基本概念
1.1CPM概念與分解模型
CPM信號的一般表達(dá)式為: S(t,α)=2ETcos(2πfct+φ(t,α)+φ0)(1)其中,fc是載波頻率,φ0是載波的初始相位,T為碼元周期,E是一個(gè)碼元周期T內(nèi)的信號能量,φ(t,α)是攜帶信息的相位,表示如下:φ(t,α)=2πh∑nk=-∞αkq(t-kT)
nT≤t≤(n+1)T(2)其中,αk是M進(jìn)制的信息符號,取值范圍是αk∈{±1,±3,…,±(M-1)};h=K/P(K,P為互斥正整數(shù))是調(diào)制指數(shù);q(t)為相位響應(yīng)函數(shù),定義為脈沖函數(shù)g(t)的積分:q(t)=∫τ0g(τ)dτ(3)常見的脈沖函數(shù)有L-REC方波、L-RC升余弦和L-GMSK高斯成形脈沖。
令φ(t,α)=φ(t,α)+πh(M-1)t/T,Ui=[αi+(M-1)]/2,t=τ+nT,可得:φ(t,U)=R2π[2πhRP∑n-Li=0Ui+
4πh∑L-1i=0Un-iq(t-(n-i)T)+W(τ)](4)其中,0≤t≤T,R2π[]和RP[]分別表示模2π和模P操作,W(τ)是與輸入信息序列無關(guān)的項(xiàng)。
代入CPM信號的表達(dá)式,可以得到傾斜相位的CPM信號表達(dá)式[4]:S(t,U)=2ETcos(2πft+φ(t,U)+φ0)(5)其中,f=fc-h(M-1)/2T。
從式(4)可看出,任意一個(gè)符號周期T內(nèi),CPM信號可以由當(dāng)前輸入U(xiǎn)n、前L-1個(gè)輸入U(xiǎn)n-L+1,…,Un-1、累加和Vn=RP[∑n-Li=0Ui]確定。
因此,CPM可以分解為一個(gè)連續(xù)相位編碼器CPE與無記憶調(diào)制器MM的組合,CPE具有遞歸和記憶特性,可以將CPE看作是碼率為1的卷積編碼器[5]。
連續(xù)相位編碼器CPE(Continuous Phase Encode)的輸出為Xn=[Vn,Un-L+1,...,Un],作為無記憶調(diào)制器MM(Memoryless Modulator)的輸入,然后MM選擇對應(yīng)的信號波形發(fā)送到接收端。CPM的分解模型[6]如圖1所示。
SOVA算法,即軟輸出的維特比算法,是維特比算法的改進(jìn)類型。這種算法不僅能得出最大似然路徑,而且能計(jì)算出每個(gè)信息比特的后驗(yàn)概率[7]。假設(shè)網(wǎng)格圖上每個(gè)節(jié)點(diǎn)有2個(gè)分支,狀態(tài)數(shù)為2v,v是編碼器的移位寄存器個(gè)數(shù)。在k時(shí)刻,狀態(tài)為Sk,計(jì)算路徑的距離度量,度量最小的作為SOVA算法的幸存路徑。同時(shí),狀態(tài)Sj還對應(yīng)一條待選路徑。將幸存路徑的度量定為M1,相應(yīng)的待選路徑定為M2,可以得到幸存路徑的錯(cuò)選概率為:PSK=exp(-M2)exp(-M1)+exp(-M2)
=11+exp(M2-M1)
=1exp(Δ)(6)其中,Δ=M2-M1≥0,表示傳輸?shù)牟豢尚哦取?/p>
已經(jīng)存儲的幸存路徑的錯(cuò)誤概率為:Pj←Pj(1-PSK)+(1-Pj)PSK
j=j1,…,jn(7)子譯碼器之間迭代的對數(shù)似然比為:Lj=lg1-PjPj(8)SOVA算法是基于序列的譯碼算法,譯碼延遲和計(jì)算復(fù)雜度較低,在硬件上易于實(shí)現(xiàn),但性能與BCJR算法有較大差距。
1.3BCJR算法
BCJR算法因?yàn)槠溆?jì)算量大和硬件實(shí)現(xiàn)高復(fù)雜性而一直沒有得到重視,直到1993年Turbo碼的發(fā)明者在其最初的Turbo迭代譯碼方案中采用了修正的BCJR算法,人們才重新開始研究該算法,并證明了此算法是實(shí)現(xiàn)Turbo迭代譯碼最好的次最優(yōu)算法[8]。
BCJR算法是基于碼字格圖的軟輸出譯碼算法,目的是使比特錯(cuò)誤概率最小[9]。根據(jù)MLD原理,譯碼器的主要任務(wù)是計(jì)算在接收采樣條件下不同發(fā)送符號的概率,即P(uk=u|r),r為接收序列,然后將概率值最大的信息符號判決為譯碼值。=arg{max(P(uk=u|r))}(9)其中,后驗(yàn)概率:P(uk=u|Y)=∑(s',s),uk∈Up(s',s,r)(10)其中,s',s分別表示k-1和k時(shí)刻的狀態(tài)。將p(s',s,r)分解成下面的格式:p(s',s,r)=αk-1(s')βk(s)γ(s',s)(11)前向遞推αk(s)、后向遞推βk-1(s')以及分支度量γ(s',s)的計(jì)算公式如下:αk(s)=∑s'αk-1(s')γk(s',s)
βk-1(s')=∑sβk(s)γk(s',s)(12)
γ(s',s)=P(s,r/s')=P(uk)*P(r/uk)通常,為了降低計(jì)算量,實(shí)際中會采用對數(shù)域的BCJR算法,即Log-MAP算法。
算法復(fù)雜度比較如表1所示,v是寄存器個(gè)數(shù)。
1.4改進(jìn)的減少搜索T-BCJR算法
T-BCJR算法是廣度優(yōu)先算法,其基本思想是在BCJR算法的基礎(chǔ)上疊加閾值計(jì)算[10]。如果在計(jì)算前向度量的過程中得到的值很小,則對路徑的選擇作用不大,因此可以預(yù)先設(shè)定閾值,度量小于閾值的狀態(tài)節(jié)點(diǎn)可以舍棄,而度量大于閾值的狀態(tài)節(jié)點(diǎn)則保留,遞推搜索沿著被保留下來的節(jié)點(diǎn)進(jìn)行運(yùn)算。同樣,后向遞推也沿著保留的節(jié)點(diǎn)進(jìn)行運(yùn)算。這樣減少了需要搜索的路徑,達(dá)到節(jié)省運(yùn)算量的目的。
T-BCJR算法并不能根據(jù)信道的具體條件進(jìn)行調(diào)整,針對算法的局限對T-BCJR算法進(jìn)行改進(jìn),即在原算法的閾值T中添加與信道相關(guān)的量ΔT,使得閾值T達(dá)到自適應(yīng)的目的。文獻(xiàn)[10]中提出了一種刪除糾錯(cuò)算術(shù)碼解碼樹中狀態(tài)節(jié)點(diǎn)的方法,將這種思想運(yùn)用到刪除BCJR算法中路徑貢獻(xiàn)小的狀態(tài)節(jié)點(diǎn)上。由文獻(xiàn)[10]得到如下表達(dá)式:Δ T≈C21N0(13)在高斯白噪聲信道條件下: Δ T=12C21 [1-log2 (1-ε)]·10-SNR10(14)其中,信噪比SNR=Eb/N0,常數(shù)C1與正確狀態(tài)被刪除的概率Prc有關(guān)。實(shí)驗(yàn)中,假定Prc=0.001,則C1=2.185,單位是dB。在對數(shù)BCJR(Log-MAP)中,取ΔT的對數(shù)。
2基于SOVA與改進(jìn)T-BCJR算法的組合譯碼算法SOVA算法與BCJR算法的輸出都需要計(jì)算概率的對數(shù)似然比。因此,這兩種算法的軟輸出信息都可以作為另一種算法的輸入來進(jìn)行計(jì)算,兩種算法交互使得整體計(jì)算量降低,并且系統(tǒng)的性能也可以得到保證。算法流程如圖2所示。
如果錯(cuò)誤數(shù)據(jù)數(shù)量大于N,就將SOVA譯碼得到的錯(cuò)誤數(shù)據(jù)幀信息輸入到改進(jìn)的T-BCJR算法中,并且將SOVA迭代產(chǎn)生的外部軟輸出信息作為T-BCJR算法的先驗(yàn)信息,進(jìn)一步迭代譯碼,否則進(jìn)行BCJR譯碼。由于該算法是在SOVA算法上疊加少量的錯(cuò)誤幀信息的T-BCJR譯碼,復(fù)雜度與BCJR算法相比小很多,譯碼的性能也與BCJR算法接近。
3仿真結(jié)果分析
本文仿真實(shí)驗(yàn)所用的連續(xù)相位調(diào)制信號是四進(jìn)制L=2、h=1/2的信號,脈沖函數(shù)為升余弦信號,仿真信道為高斯白噪聲信道。
誤比特率隨信噪比變化的曲線,圖4則是幀長為1 024時(shí)誤比特率隨信噪比變化的曲線。可以看出,在相同信噪比條件下,改進(jìn)的譯碼算法誤碼率要優(yōu)于SOVA算法。在誤比特率達(dá)到10-4時(shí),改進(jìn)譯碼的信噪比只比BCJR算法低0.15 dB左右。另外,由圖3、圖4對比可以看出,隨著數(shù)據(jù)幀長的增加,算法整體性能會變好。
另外,在低信噪比時(shí),SOVA譯碼的誤碼率低,得到的錯(cuò)誤幀數(shù)據(jù)較多,此時(shí)改進(jìn)譯碼算法的復(fù)雜度是在SOVA