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