沈俞園,孫發(fā)魚,2,艾冬生
(1.西安機電信息技術(shù)研究所,陜西 西安 710065;2.機電動態(tài)控制重點實驗室,陜西 西安 710065)
隨著兵器靶場彈箭試驗任務復雜程度的提高,對遙測系統(tǒng)的數(shù)據(jù)傳輸速率、通信距離和頻帶利用率提出了更高的要求。在高碼速率和遠距離無線遙測傳輸中,大氣和地面等環(huán)境會對遙測信號產(chǎn)生干擾和多徑等影響,因此需要對遙測發(fā)射的數(shù)字信號進行差錯控制。信道編碼是對數(shù)字信號進行差錯控制的有效方法,可以提高傳輸質(zhì)量,降低數(shù)據(jù)傳輸誤碼率。常用的信道編碼包括TPC編碼、RS編碼、卷積編碼、Turbo碼等[1]。TPC編碼是一種逼近香農(nóng)極限的差錯控制編碼技術(shù),比RS編碼、卷積編碼的編碼增益更高,與Turbo碼相比,編碼增益不會隨著碼速率的提升而迅速下降。TPC編譯碼使用簡便,碼長靈活,不僅能夠糾正由隨機信道引起的錯誤,而且能夠糾正由突發(fā)信道引起的錯誤,可適用于彈箭高碼速率遙測數(shù)據(jù)的傳輸。
Chase2算法是一種TPC譯碼中使用較廣泛的算法,但在實時性要求高的遙測系統(tǒng)中,存在譯碼過程繁瑣、處理延時較大等問題。如何在譯碼性能與復雜度這兩者間找到最佳平衡點是必須要解決的實際問題,對原始算法的改進勢在必行[2]。
本文在探究TPC Chase2迭代譯碼算法的基礎上,提出了軟信息迭代簡化算法,可以減少迭代譯碼次數(shù),減少FPGA實現(xiàn)時的資源消耗。
TPC碼是一種將線性分組碼進行串行級聯(lián),達到長碼糾錯的編碼方式。常用子碼類型有(擴展)漢明碼、BCH碼等。下面討論最為常用的二維TPC碼編碼過程。
編碼過程如圖1所示。圖1中,將待編碼信息組成k2×k1的矩陣;用分組碼C1(n1,k1),對各行進行編碼;用分組碼C2(n2,k2),對各列進行編碼;結(jié)果得到二維n2×n1的數(shù)據(jù)矩陣,其中右下角為校驗位的校驗,且先行后列的編碼方式與先列后行的編碼方式是等效的。實際應用中,大多優(yōu)先選擇C1與C2相同的分組碼。
圖1 TPC編碼過程Fig.1 TPC encoding process
TPC 譯碼主要包括硬判決和軟判決兩種。硬判決譯碼是利用解調(diào)器判決輸出的單比特信息1或0進行譯碼的過程,而軟判決譯碼則能利用傳輸信道產(chǎn)生的軟信息進行譯碼。
TPC 軟判決譯碼算法通常比硬判決譯碼有更好的差錯控制表現(xiàn)。研究表明,采用軟判決的似然譯碼比硬判決譯碼高出2~3 dB的編碼增益。軟判決譯碼的優(yōu)勢是充分利用了解調(diào)軟信息,并因此獲得了較高的增益和較低的誤碼率[3]。
軟判決譯碼通常是SISO譯碼,有別于硬判決譯碼的單比特信息碼字輸入,軟判決譯碼的輸入信息是解調(diào)后的多個比特表示的數(shù)值,習慣上稱其為軟信息。如圖2(a)所示,解調(diào)輸出的多比特信息經(jīng)硬判決處理后轉(zhuǎn)為單比特數(shù)據(jù),再送入硬判決譯碼模塊中;圖2(b)給出了軟判決譯碼的輸入示意圖,解調(diào)模塊輸出的軟信息直接送入到軟判決譯碼模塊中。軟判決譯碼充分利用了前級解調(diào)模塊輸出的軟信息,因此避免了多比特數(shù)據(jù)判決成單比特數(shù)據(jù)所造成的信息損失,相對于硬判決譯碼而言具有更好的譯碼性能。
TPC 譯碼原理主要使用軟判決譯碼,在軟判決譯碼算法中Chase2算法是一種很經(jīng)典的算法。該算法是一種針對線性分組碼的軟入硬出譯碼算法,譯出的碼字為硬輸出。
圖2 硬判決與軟判決輸入示意圖Fig.2 Schematic diagram of hard decision and soft decision input
Chase2 算法的譯碼性能接近最大似然譯碼,是一種次優(yōu)譯碼算法,復雜度比較低,可以使得譯碼的誤碼率降到很低。Chase 算法分為 Chase1、Chase2 和 Chase3 三類算法,它們的主要區(qū)別是測試序列產(chǎn)生的方式不同。Chase2是 Chase1 和 Chase3 算法的折中,它的譯碼復雜度和譯碼性能介于 Chase1和 Chase3之間,適用范圍也比較廣泛[4]。因此實際應用中,我們針對 Chase2軟判決譯碼進行改進。
Chase2算法的工作原理:將未同步輸出的軟信息(判決前的信息)向量作為TPC解碼輸入,根據(jù)信息幅值,選取最不可靠的n位,形成錯誤樣本集合;從錯誤樣本集合中找出與接收向量歐式距離最小的子碼為候選子碼,同時利用外信息向量記錄各位的軟判決可靠度,進行迭代,經(jīng)過多輪次迭代后完成解碼。Chase2譯碼算法實現(xiàn)步驟如圖3所示。
圖3 Chase2譯碼算法步驟Fig.3 Chase2 decoding algorithm steps
1) 對接收序列R(即軟信息)進行硬件判決(當軟信息大于0時,令其對應試探序列為1,否則為0),得到碼字Y。
2) 確定可靠性最低的p個碼元(計算接收信息的絕對值|rj|即可,|rj|的絕對值越大可信度越高);
計算R與Y的歐氏距離,得到Y(jié)中p個可靠性最差的碼元,并產(chǎn)生q=2p個測試圖樣Tq,p=2時錯誤圖樣如圖4所示,其中A、B即為選出的低可靠度碼元。
3) 產(chǎn)生測試序列Zi=xor(Y,Ti)。
4) 確定候選碼字集合
對序列Zq采用硬判決譯碼方式進行處理,所得結(jié)果形成一個集合,叫做候選碼字集合,可用Ω表示。
5) 尋找似然碼字
6) 計算軟輸出信息和外信息
譯碼得到r′j,必須要找到兩個碼字C+1(j)和C-1(j),似然碼字D必是其中之一,需要找到另一個碼字。具體方法是,在Ω中尋找與D第j位不同的候選碼字搜索完成后,比較這些碼字與R間的歐氏距離,此時距離最近的碼字被稱作競爭碼字,記為C。
TPC譯碼就是將上述譯碼過程,經(jīng)過多次行譯碼迭代和列譯碼迭代,最終得到譯碼結(jié)果[4]。
圖4 錯誤圖樣p=2Fig.4 Error pattern p=2
傳統(tǒng)的Chase2軟判決譯碼算法是一種軟輸入硬輸出(SIHO)算法,糾錯能力不能得到保證[5]。為了提高TPC譯碼性能,需要采用迭代方法。自TPC碼提出后,一直采用迭代譯碼的方法。
由此,可考慮對軟信息更新方式的簡化。
由式(1)和式(2)分析可知,軟信息的更新會極大地占用硬件空間,不利于硬件的實現(xiàn)。另外,原Chase2算法迭代方式確實會使精度增加,但是同時會極大地增加譯碼復雜度[6]。本文對軟信息更新方式及譯碼迭代次數(shù)兩個方面進行Chase2算法的簡化,達到降低算法復雜度及硬件實現(xiàn)的目的。
軟判決譯碼時需要從信道獲得軟信息,一般通過解調(diào)同步等步驟后產(chǎn)生軟判決譯碼的輸入信息。譯碼過程中,軟信息的更新方式為
R(m)=R+α(m)·W(m),
(3)
式(3)中,m為行/列譯碼時數(shù)據(jù)序列的編號,R是TPC譯碼器接收到的原始信息比特,R(m)是輸入行/列譯碼器的軟信息,α(m)是基于經(jīng)驗值的縮放因子,W(m)是外信息矩陣。下一次輸入行/列譯碼器的軟信息,可由上一次軟信息與外信息矩陣元素相加來獲得。
需要指出的是,由于在歷次迭代時,均需要使用R矩陣,故其需要從譯碼開始保存至譯碼結(jié)束[7-8]。在FPGA實現(xiàn)時,需要開辟一個固定的RAM空間,大小為n2×n1×L(L為量化位寬)。同時,每次更新得到的R(m)也需要存儲,大小亦為n2×n1×L[9]。
考慮到隨著迭代次數(shù)的增加,R(m)逐漸收斂到正確的軟信息矩陣,可以用一次迭代生成的軟信息矩陣R(m-1)替代R矩陣,進行軟件信息更新。
由此,軟信息的更新方式可改寫為
R(m)=R(m-1)+α(m)·W(m),且有R(0)=R。
(4)
在硬件實現(xiàn)時,R(m)與R(m-1)可以共用同一塊RAM,節(jié)省的RAM資源為n2×n1×L比特[10]。
在對k2行進行譯碼時,對k2×k1信息位進行糾錯;在k1列進行譯碼時,k2×k1信息位進行二次糾錯,保證了信息位的糾錯能力。對(n2-k2)行和(n1-k1)列進行譯碼,是對校驗位進行糾錯,進一步提升了糾錯能力。
因此,在信噪比較高的情況下,可以省略(n2-k2)行和(n1-k1)列的譯碼,只進行前k2和k1列的譯碼。由此,每次完整迭代需要進行的譯碼由(n2+n1)減少至(k2+k1),則譯碼完成減少的總迭代次數(shù)為(n2+n1-k2-k1)×N,其中N為TPC譯碼需要的總的迭代次數(shù)[11]。
結(jié)合上述對于TPC譯碼Chase2譯碼算法的簡化方法,提出一種同時采用減少譯碼迭代次數(shù)和優(yōu)化軟信息更新方式的簡化Chase2譯碼算法。
對原算法進行軟信息更新方式與迭代次數(shù)的雙重簡化,公式R(m)=R+α(m)·W(m)可變?yōu)镽(m)=R(m-1)+α(m)·W(m),且有R(0)=R;另外,省略行校驗列與列校驗行的譯碼,只進行k2和k1的譯碼,譯碼完成減少的總迭代次數(shù)為(n2+n1-k2-k1)×N。
軟信息迭代簡化法彌補了原算法步驟復雜、硬件復雜度高的問題,雖然會使軟信息矩陣精度變差,但是可以使迭代次數(shù)減少,減少譯碼算法運算量、降低存儲要求 ,即只付出了一點代價就可以極大地提高譯碼性能。
表1列出了未經(jīng)改進的原算法、簡化軟信息更新法、簡化迭代次數(shù)法及軟信息迭代簡化法各自減少的迭代次數(shù)。簡化軟信息更新法用一次迭代生成的軟信息矩陣R(m-1)替代R矩陣,進行軟件信息更新,所減少的迭代次數(shù)為N-1;簡化迭代次數(shù)法減少了行校驗與列校驗的重復迭代,從而減少了(n2+n1-k2-k1)×N次迭代;軟信息迭代簡化法迭代次數(shù)減少了(n2+n1-k2-k1)×N+N-1次。與簡化軟信息更新法相比,軟信息迭代簡化法更容易硬件實現(xiàn),與簡化迭代次數(shù)法相比,降低算法復雜度的同時,誤碼率降低,提高了譯碼性能。
表1 四種算法復雜度比較Tab.1 Four algorithms complexity comparison
本文在高斯白噪聲條件下,對QPSK調(diào)制和二維TPC譯碼器進行仿真,分量碼選擇為(64,57)的擴展?jié)h明碼,簡記為TPC(64,57)×(64,57)。仿真涉及到的具體參數(shù)有:縮放因子α=[0, 0.2, 0.3, 0.5, 0.7,0.9,1,1];可靠因子β=[0.2, 0.4, 0.6, 0.8,1, 1,1,1];不可靠碼元個數(shù)p=4;完整譯碼迭代次數(shù)N=4(行列各進行4次迭代譯碼);信息位個數(shù)為2×107;信噪比Eb/N0取值范圍為2~6 dB,步進0.2 dB。
算法性能對比如圖5所示,no FEC曲線為不使用信道編碼時QPSK的誤碼率曲線,TPC曲線為原始TPC譯碼算法的誤碼率曲線,TPC_Modified1是簡化軟信息更新方式后譯碼算法的誤碼率曲線,TPC_Modified1是簡化譯碼次數(shù)后的譯碼算法誤碼率曲線,TPC_Modified_both是同時使用兩種簡化方法后的譯碼算法誤碼率曲線。
圖5 Chase算法以及簡化算法性能對比圖Fig.5 Performance comparison chart of Chase algorithm and simplified algorithm
由圖5可知,使用TPC編譯碼后,在誤碼率10-5處,有5.5 dB左右的編碼增益。相較于Chase2算法,TPC_Modified1約有0.2 dB的性能損失,TPC_Modified2約有0.4 dB的性能損失,TPC_Modified_both約有0.6 dB的性能損失。各改進算法的性能損失,分別相當于原始算法編碼增益的3.6%、7.3%和10.9%。因此,從數(shù)據(jù)上看,簡化算法對譯碼性能影響不大。
從仿真結(jié)果上看,簡化軟信息更新方式的影響更小,這是因為,隨著迭代次數(shù)的增加,軟信息矩陣逐漸收斂,更加趨近于真實值,與接收到的原始信息矩陣也更為接近。而改進次數(shù)的算法中,每次迭代省略了2·(N-K)(此處為2·(64-57)=14)次迭代,且沒有利用信息矩陣右下角部分(校驗位的校驗),因此性能損失更大。當同時利用兩種簡化算法時,軟信息矩陣精度變差,同時迭代次數(shù)減少,導致性能損失最大。
由此,本文改進算法在減少譯碼算法運算量、降低存儲要求的同時,性能損失小于1 dB。因此,兩種改進算法均實現(xiàn)了譯碼性能與運算量、資源消耗量的折中平衡,降低了硬件實現(xiàn)的復雜度。本文改進算法復雜度更低,而譯碼性能只是略有下降。
本文針對TPC譯碼中經(jīng)典的Chase2算法,結(jié)合了軟信息更新與譯碼迭代次數(shù)的改進辦法,提出一種軟信息迭代簡化法。仿真結(jié)果表明,軟信息迭代簡化法可以在適度降低譯碼性能的條件下,降低譯碼算法的復雜度、運算量和硬件資源消耗。