葉新生,劉國忠
(山西科泰航天防務(wù)技術(shù)有限公司,山西 太原 030006)
信道編碼是無線通信系統(tǒng)中的重要組成部分[1],而Turbo乘積碼不僅具有良好的糾錯性能,而且其編碼算法簡單,使用的資源較少,較為適合遙測領(lǐng)域的應(yīng)用環(huán)境[2]。
信道編碼技術(shù)會在遙測數(shù)據(jù)中增加糾錯碼,利用糾錯碼可對傳輸過程中的錯誤位進行糾錯,可有效地降低遙測數(shù)據(jù)誤碼率。
使用信道編碼可在不加大發(fā)射功率、不增加接收天線尺寸的情況下獲得更遠的遙測距離。
信道編碼雖好,但需要遙測發(fā)射機與遙測接收機匹配使用,以及遙測發(fā)射機在發(fā)射數(shù)據(jù)時需要進行信道編碼,遙測接收機在接收數(shù)據(jù)時需要進行信道解碼。
遙測接收機一般屬于接收設(shè)備,其更新?lián)Q代的速度遠不及遙測發(fā)射機。本文擬基于VC++研發(fā)一種TPC解碼算法,基于算法可構(gòu)建事后TPC解碼軟件,也可構(gòu)建實時解碼軟件。通過這些方式可使原本不具備TPC解碼的遙測接收站實現(xiàn)TPC解碼能力,且可在不增加任何預(yù)算的情況下提高原遙測站的接收能力。
TPC為分組乘積碼,常用的結(jié)構(gòu)為二維結(jié)構(gòu),分別進行縱向和橫向編碼。利用此種結(jié)構(gòu),可在2個維度上進行糾錯,相比1維糾錯碼可極大地提高糾錯能力。
Turbo乘積碼是由兩個或兩個以上的短分組碼C(n,k,δ)構(gòu)成,其中n,k,δ分別表示分組碼的長度、信息長度和最小漢明距離[3-4]。
本文使用目前應(yīng)用最為廣泛的二維乘積碼,采用(64,57)×(64,57)擴展?jié)h明乘積碼[4],即在漢明碼的基礎(chǔ)上增加一位奇偶校驗位,該編碼可糾錯一位,發(fā)現(xiàn)二位錯誤,兩個維度均使用相同的分組碼。二維乘積碼的結(jié)構(gòu)如圖1所示。
圖1 二維乘積碼的結(jié)構(gòu)
在進行TPC編碼時,先對信息位逐行編碼,生成57×64的行編碼矩陣。然后對行編碼矩陣進行逐列編碼,最終生成64×64的編碼矩陣。
在完成編碼后,輸出時一個編碼塊為一幀,每幀前面添加4字節(jié)同步字1ACFFC1D,編碼塊輸出時按先行后列順序輸出。
TPC解碼算法有2類,一類為軟解碼,一類為硬解碼。
其中軟解碼常用算法為ChaseII算法,其基本原理為將位同步輸出的軟信息(判決前信息)向量,作為TPC解碼輸入,根據(jù)信息的幅值,選取最不可靠的N位(一般N=2),形成錯誤樣本集合,從錯誤樣本集合中找出與接收向量歐氏距離最小的子碼為判決子碼,同時將距離次小的子碼為候選子碼。同時利用外信息向量記錄各位的軟判決可靠度,進行迭代。經(jīng)過多輪次(一般3次即可)迭代后完成解碼[5-6]。
硬解碼使用判決后的信息,利用漢明糾錯算法直接進行糾錯,根據(jù)擴展?jié)h明碼可以發(fā)現(xiàn)2位錯位糾錯1位的特性。當(dāng)發(fā)現(xiàn)2位錯位時,可不進行糾錯,而是等下一輪次再行糾錯,可在一定程度上提高糾錯性能。
相對來說軟解碼要比硬解碼具備更好的性能表現(xiàn)[7],但是軟解碼需要更多的信息。如在接收機內(nèi)部實現(xiàn),可以使用軟解碼信息。本文是在接收機外部實現(xiàn),接收機一般只輸出判決后的信息,因此無法使用軟解碼算法,只能使用硬解碼算法實現(xiàn)。
硬解碼算法在FPGA中實現(xiàn)時,一般使用邏輯電路實現(xiàn)[7];在VC上實現(xiàn)時,為加快軟件的運行速度,本文采用查表法以加快解碼速度。在計算前提前計算好每一位置對應(yīng)的校驗值數(shù)組(X1~X57),在解碼時對每一位進行歷遍,當(dāng)該位為1時將該位置對應(yīng)的校驗值與校驗位進行異或計算,具體原理見圖2所示。
圖2 查表法譯碼原理
當(dāng)最后計算值為0則校驗正確,如計算值不為0則說明數(shù)據(jù)有錯位。
尋找錯位位置方法的原理是,當(dāng)數(shù)據(jù)無錯位時其校驗和應(yīng)為0;當(dāng)某位出現(xiàn)錯誤時,整個校驗和必然會多異或了一次該位對應(yīng)的校驗值,下面推導(dǎo)該結(jié)論。
對數(shù)據(jù)位進行校驗計算的公式如下,其中求和符號實際中為模二相加(同異或),式中ai為數(shù)據(jù)位(取值為0或1)。
(1)
又,基于異或的原理有:
1=0⊕1,0=1⊕1
.
從上式可以看出,任何數(shù)(0或1)取反(誤碼相當(dāng)于,原數(shù)據(jù)位取反),均可看為其原值與1異或。
結(jié)合式(1),可以得出如下結(jié)論,當(dāng)某位am出現(xiàn)錯位時,可以將表達式寫成如下形式:
(2)
又根據(jù)原編碼信息,有:
(3)
所以有:
y=Xm
.
(4)
從中可以看出,根據(jù)式(1)對編碼數(shù)據(jù)進行計算,其計算結(jié)果非零時,其對應(yīng)值為某位對應(yīng)的校驗值。因此在實際中,可以根據(jù)校驗計算結(jié)果反查是哪位出錯,即在{X1~X57}集合中查找Xm,當(dāng)查到時其下標(biāo)即為錯誤位的位置。
上節(jié)給出了查表法實現(xiàn)TPC譯碼的基本原理,下面根據(jù)原理進行具體設(shè)計實現(xiàn)。
實際數(shù)據(jù)傳輸時,發(fā)射機會在數(shù)據(jù)幀中間插入同步字節(jié),接收機利用同步字節(jié)識別數(shù)據(jù)幀,TPC解碼程序同樣要利用同步字節(jié)識別TPC數(shù)據(jù)幀,在識別完成后,按行列依次進行糾錯處理,處理流程如圖3所示。整個糾錯流程包括行糾錯及列糾錯,整個糾錯過程包括3輪,分別進行行糾錯和列糾錯。在糾錯時如果確認是一位錯則修正,若是兩位錯或無錯位則不進行任何處理。
在糾錯時,需要按位取出數(shù)據(jù)進行處理,為便于取數(shù)據(jù)位,使用了一個位模板數(shù)組。
m[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
在實際運行時,需要對字節(jié)中不同數(shù)據(jù)位進行判定操作,取位模板數(shù)組中不同數(shù)進行判定與操作,即可取出對應(yīng)位信息,具體見公式(5)所示。
a=x∧m[i]
.
(5)
因此測試某位是否為1時,只要按公式(5)計算,取其結(jié)果,當(dāng)結(jié)果非0時,即可判定該位為1,否則為0,使用該方法可實現(xiàn)數(shù)據(jù)位的快速判定。
本文使用的是擴展型漢明碼,即在編碼時,除漢明糾錯碼外,還有一位表示全部的奇偶校驗,因此可以利用該特性實現(xiàn)發(fā)現(xiàn)2位錯的能力,其判定方式可參考表1。
圖3 數(shù)據(jù)解碼流程
序號漢明糾錯奇偶校驗判定1111位錯2102位錯301奇偶位錯400無錯位
從表1可以看出綜合漢明糾錯信息和奇偶校驗信息,可實現(xiàn)1位錯的判定及2位錯的發(fā)現(xiàn),在實現(xiàn)時僅當(dāng)判定位1位錯時進行糾錯。通過該方式可有效避免錯誤糾錯。
在實際實現(xiàn)時還需要考慮行列數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),本文采用二維數(shù)組來進行數(shù)據(jù)幀的存儲。
因TPC數(shù)據(jù)幀結(jié)構(gòu)固定,因此實現(xiàn)時采用64行8列的數(shù)組進行數(shù)據(jù)存儲,具體如下:
char dat[64][8];
圖4 數(shù)據(jù)存儲方式
在完成TPC幀同步后,將幀數(shù)據(jù)按圖4方式整理成二維數(shù)組,需要注意的是因TPC數(shù)據(jù)每行有57位,因此TPC幀中的數(shù)據(jù)并非按字節(jié)對齊。在完成處理后還需要重新進行對齊處理,如果TPC幀中數(shù)據(jù)本身并非按字節(jié)對齊則還要重新進行同步處理,從其中還原出字節(jié)數(shù)據(jù)。
在糾錯過程中,先進行逐行糾錯處理,然后進行逐列糾錯處理,總共進行3輪次行列糾錯即可。
利用Visual Studio平臺,并基于VC++實現(xiàn)了TPC信道解碼軟件,軟件界面如圖5所示。
該軟件不僅完成了TPC信道解碼,還完成了解碼后數(shù)據(jù)幀的提取。為實現(xiàn)數(shù)據(jù)幀提取,需要設(shè)置數(shù)據(jù)幀頭、幀頭長度、反碼副幀長、錯誤容量等信息。
圖5 TPC信道解碼軟件界面
為測試其性能,利用具備TPC編碼功能的發(fā)射機,發(fā)射仿真數(shù)據(jù)以進行解析驗證,從驗證情況看該TPC解碼算法運行正常,從圖6可以看出,數(shù)據(jù)糾錯正常。
打開解析完的數(shù)據(jù)幀可以看到EB90前面的幀計數(shù)連續(xù),數(shù)據(jù)幀無丟失。
經(jīng)過驗證后,該軟件已經(jīng)在實際遙測活動中得到推廣應(yīng)用,實際使用反饋情況良好,通過該軟件使原先不具備TPC解碼能力的遙測站,具備接收對TPC遙測幀的解析能力,還可利用TPC糾錯算法提高數(shù)據(jù)質(zhì)量。
圖6 TPC信道解碼軟件
圖7 TPC信道解碼數(shù)據(jù)
本文利用VC++平臺,實現(xiàn)了TPC信道編解碼,可在不增加預(yù)算的情況下擴展原有遙測設(shè)備的功能,提高其接收性能,已在相關(guān)實際項目中得以應(yīng)用,并取得良好的實用效果。
并且實現(xiàn)時考慮了實時應(yīng)用和事后數(shù)據(jù)處理2種情況,使用簡便且可以廣泛應(yīng)用,可在各遙測設(shè)備中推廣使用。
但是為適應(yīng)目前遙測設(shè)備,目前僅僅實現(xiàn)了TPC的硬解碼,為進一步提升性能,后續(xù)考慮增加軟解碼能力,但軟解碼如要推行需要遙測設(shè)備進行相應(yīng)改進,使其輸出可供軟解碼的額外信息。
信道編解碼,通過在遙測數(shù)據(jù)中增加校驗信息,以實現(xiàn)信息糾錯,從而獲得編碼增益,是無線通信領(lǐng)域的一個重要技術(shù)手段,如何通過后期改造使早期遙測設(shè)備提升能力,也是一個重要課題,本文提出的思路可在此領(lǐng)域進行推廣應(yīng)用。