周 侃,金松坡
(中國電子科技集團公司第五十四研究所,河北石家莊 050081)
乘積碼是1954年由Elias提出,但當時的硬件水平限制了它的應用。1993年由C.Berrou等人提出Turbo碼的概念。1994年Pyndiah等人在Chase譯碼算法的基礎上稍加修改,提出了對乘積碼的軟輸入/軟輸出次優(yōu)迭代譯碼算法,由于這種算法類似于Turbo卷積碼的譯碼算法,不同的是構成碼由原來的系統(tǒng)卷積碼替換為分組碼。
Turbo乘積碼在高碼率(例如R>0.9)可以逼近仙農限,適合于高碼率應用;在低碼率應用時其性能已接近Turbo卷積碼;在實現(xiàn)上較Turbo卷積碼具有明顯的優(yōu)勢。Turbo乘積碼還具有延時短、譯碼算法能充分利用軟判決、能夠同時糾正隨機錯誤和突發(fā)錯誤、即使在信道條件較差時仍有較好的糾錯能力等優(yōu)越性,都是RS碼等其他編碼所不擁有的。
乘積碼按照構成子碼種類的不同,可分成RS乘積碼、BCH乘積碼、擴展Hamming乘積碼和奇偶校驗乘積碼。假設乘積碼的子碼為 C1(n1,k1,δ1)和 C2(n2,k2,δ2),其中 n、k 和 δ分別為碼長、信息位長和最小漢明距離。乘積碼P=C1?C2可以通過下面的方法得到。
①將k1*k2位信息比特按列(或者行)的方式填入k1行*k2列的數(shù)組;
②用C2碼對k1行信息進行編碼;
③用C1碼對k2列信息進行編碼。
乘積碼P的參數(shù)為n=n1*n2,k=k1*k2,δ=δ1*δ2,編碼效率R=k/n。乘積碼的編碼結構如圖1所示。
圖1 乘積碼的編碼結構
通常的查表譯碼法屬于代數(shù)譯碼,代數(shù)譯碼也叫硬判決譯碼。硬判決譯碼器的輸入只有“0”和“1”兩個值,這種判決結果會損失掉接收信號中所包含的有用信息。為了充分利用接收信號波形的信息,使譯碼器能以更大的正確概率判決接收到的碼字,應把解調器輸出的抽樣電壓的量化值送給譯碼器,這種譯碼算法稱為軟判決譯碼。
軟判決的準則就是根據(jù)接收序列R,在所有碼字中尋找與R歐幾里得距離最小的碼字作為輸出。歐氏距離的計算公式為:
式中,R為具有模擬值的接收序列;C為碼字(ci∈{-1,+1})。
但是隨著信息位的增加,碼字的數(shù)量成指數(shù)增加,譯碼的過程中要想搜索所有的碼字將很不容易實現(xiàn)。Chase在1972年提出了一種簡化碼字搜索范圍的譯碼算法。
Chase譯碼算法基于這樣的思想:假設二元加性高斯白噪聲(AWGN)信道中傳輸(n,k,δ)線性分組碼字 C= (c1,…cj…cn),經調制后的發(fā)送信號為X= (x1,…xj,…xn),xj∈ {+1,-1},接收信號為R= {r1,…rj,…rn},信道噪聲為均值為0、方差為 σ2的加性高斯白噪聲,N=(n1,…nj,…nn),三者滿足:R=X+N。對接收信號R進行最大似然譯碼,產生的碼字以極大的概率落于以Y={y1,…yj,…yn}為中心、(d-1)為半徑的球域中,d為該編碼的最小漢明距離,Y為接收信號的硬判決值。
Chase譯碼算法的步驟如下:
①根據(jù)接收序列R,計算硬判決序列Y,其中yj=(1+sign(rj))/2,yj∈{0,1}。
②確定序列Y中的p個最不可靠位。其中p一般取2,3,4(增加p,可以提升Chase譯碼的效果,但是計算量會急劇增加)。序列Y中每一位的可靠度根據(jù)接收序列R計算。
式中,∧(yj)表示序列Y中第j位的可靠度。
③ 產生2p個測試圖樣Tq。Tq定義為一組n維向量,包括“0”和“1”在p個位置上的所有組合。
④ 構造測試序列Zq,Zq=Y⊕Tq,⊕表示按位異或。
⑤用代數(shù)譯碼器對Zq進行譯碼,也就是上述提到的查表譯碼法,得到輸出碼字Ci,并將其做如下映射:0→-1,1→+1,然后歸入集合Ω。
⑥根據(jù)式(1)分別求集合Ω中的碼字Di與接收信號R之間的歐幾里得距離,距離最小的碼字D作為判決序列輸出。
為了實現(xiàn)對TPC的高性能譯碼,必須采用迭代方式,這就要求譯碼器的輸出為軟數(shù)據(jù),即帶有可靠度度量值的數(shù)據(jù)。而Chase算法是一種針對線性分組碼的軟輸入硬輸出(Soft-Input Hard-Output,SIHO)譯碼算法,譯出的碼字為硬輸出(dj∈{-1,+1})。1994年R.Pyndiah對 Chase算法做了修改,提出了Turbo乘積碼的“軟輸入軟輸出”的迭代譯碼算法,這是一種近似的最大似然譯碼,能大大降低譯碼的復雜度。
對于軟輸入信號R,可以通過上述的Chase譯碼算法得到硬判決碼字D,然后可以根據(jù)式(3)計算碼字D中第j位dj的可靠度,也就是軟輸出。
從式(3)可以看出,計算rj'時需要2個碼字C_C和D。硬判決值D是其中一個,因此需要找到另外一個碼字C_C,稱為D的競爭碼字。C_C為碼字集合Ω中與接收信號R具有最小歐氏距離并且c_cj≠dj的碼字。
如果找不到競爭碼字,也就是說集合Ω中所有的碼字在第j位都相同,那么必須采用其他方法計算軟輸出信息。式(4)是一種有效的計算方法:
式中,m為迭代的次數(shù);β為一個大于0的常數(shù),隨著迭代次數(shù)的增加而增大。β的經驗取值為:
Turbo乘積碼的一次完整的串行迭代譯碼的結構如圖2所示,圖中“SISO譯碼”表示軟輸入軟輸出譯碼。
圖2 Turbo乘積碼迭代譯碼器結構
圖2中,[R]表示具有模擬值的接收矩陣;R[m]為外部信息矩陣,m為迭代次數(shù)。迭代譯碼算法的步驟如下:
①計算“行SISO譯碼器”的軟輸入值。
式中,α(m)為第m次迭代時的反饋系數(shù),可以根據(jù)子碼的碼型和迭代次數(shù)進行調整,一般取經驗值。W[m]為“列SISO譯碼”器經虛線反饋回來的外部信息,初始值[W(0)]=0。
②譯碼器對軟輸入矩陣[R(m)]按Chase算法逐行進行譯碼,計算軟輸出矩陣[R'(m)],并計算下一次迭代的外部信息:
③利用外部信息矩陣[W(m+1)],按式(6)計算[R(m+1)]的值,并輸入“列SISO譯碼”器。列譯碼器同樣按Chase算法對[R(m+1)]逐列進行譯碼,并計算軟輸出矩陣[R'(m+1)]和外部信息矩陣[W(m+2)],然后將外部信息矩陣[W(m+2)]通過虛線反饋給“行 SISO譯碼”器。這樣就完成了二維乘積碼的一次完整的迭代譯碼。
迭代次數(shù)達到設定值時,將列譯碼器的軟輸出值[R'(m)]做硬判決(符號判決)后輸出即可完成譯碼。
針對無人機信號參數(shù),對信號調制方式和信道模型做如下假設:信號調制方式為BPSK;信道模型為衰落信道。在仿真中,采取C1=C2的編碼方法,也就是n1=n2,k1=k2,δ1=δ2。調節(jié)參數(shù)的經驗取值:α(m)=[0.0 ,0.2 ,0.3,0.5,0.7,0.9,1.0,1.0], β(m)=[0.2,0.4,0.6,0.8,1.0,1.0,1.0,1.0]。
Turbo乘積碼子碼選取3種,分別為:
① BCH[63,51,5]*BCH[63,51,5],碼率0.66;
② BCH[63,57,3]*BCH[63,57,3],碼率0.82;
③ BCH[127,113,5]*BCH[127,113,5],碼率0.79。
不同碼率下的Turbo乘積碼的譯碼性能如圖3所示。在仿真中,采用試探序列的數(shù)目為q=24。
圖3 3種碼率乘積碼的信噪比—誤碼率曲線
可以看出,碼率越低TPC譯碼的性能越好。這是因為BCH碼的碼率越低,則監(jiān)督位相對越多,從而可以實現(xiàn)更好的譯碼性能。譯碼性能對比如表1所示。
表1 誤碼率在10-5量級時的譯碼性能對比
Chase譯碼選用的試探序列數(shù)目q=2p選擇了3種情況進行仿真,p分別為4、3和2。圖4、圖5和圖6分別為不同碼率情況下試探序列數(shù)目對誤碼性能的影響仿真曲線。
圖4 BCH[63,51,5]乘積碼的信噪比—誤碼率曲線
圖5 BCH[63,57,3]乘積碼的信噪比—誤碼率曲線
圖6 BCH[127,113,5]乘積碼的信噪比—誤碼率曲線
可以得出,測試序列越多Turbo乘積碼的譯碼性能越好。但是,如果p取值過大,計算量就會很大,不易于硬件實現(xiàn);p取值太小,譯碼器的譯碼性能變差。一般情況下p的取值為3或4即可。
上述對Chase算法、基于Chase算法的軟輸入軟輸出的算法進行了介紹,分析了基于Chase算法的Turbo乘積碼迭代譯碼算法的基本結構,最后通過仿真分析了碼率、測試序列個數(shù)對Turbo乘積碼譯碼性能的影響。
Turbo乘積碼在衰落信道可以獲得6.0 dB左右的編碼增益,測試序列選用16較合適,可以兼顧增益損失小和硬件實現(xiàn)簡單雙重要求。由于其簡單的硬件實現(xiàn)以及較高的編碼增益,如果可以應用在無人機測控領域,可以緩解機載設備資源緊張的情況?!?/p>
[1]PYNDIAH R,GLAVIEUX P A.Near Potimum Decoding of Product Codes.IEEE GLOBECOM,1994(1):339 -343.
[2]PYNDIAH R.Near Potimum Decoding of Foduct Codes:Block Turbo Codes[J].IEEE Transaction on Communications,1998,46(8):1003 -1010
[3]KIM S,OH D.Reduced-search SOVA for Block Turbo Codes[C].IEEEICC’03,2003:3076-3079.
[4]朱光喜,何業(yè)軍,王 峰,等.Turbo乘積碼的兩種迭代譯碼器的比較[J].電訊技術,2004,44(6):30-34.
[5]徐友云,郭閱樂,宋文濤.次最佳軟輸入軟輸出譯碼算法[J].上海交通大學學報,2000(2):169-172.
[6]任衛(wèi)紅,葉宇煌.Turbo乘積碼的軟譯碼研究[J].通信技術,2003,36(5):44-45.