馮玉潔 朱黨杰
(中國(guó)空空導(dǎo)彈研究院 河南 洛陽(yáng) 471009)
遙測(cè)系統(tǒng)規(guī)定,系統(tǒng)誤碼率為10-4時(shí)作為接收信號(hào)的解調(diào)門(mén)限來(lái)計(jì)算系統(tǒng)作用距離。在遙測(cè)系統(tǒng)發(fā)射及接收設(shè)備不變的情況下,遙測(cè)碼速率的不斷提高將造成系統(tǒng)作用距離的下降。而隨著彈載遙測(cè)技術(shù)的發(fā)展,不斷提高的測(cè)試數(shù)據(jù)量需要高碼率傳輸,這就要求在系統(tǒng)中加入適合的信道編碼來(lái)降低系統(tǒng)誤碼率,提高系統(tǒng)作用距離??湛諏?dǎo)彈遙測(cè)系統(tǒng)體積緊張,空間有限,要求在不增加硬件資源的基礎(chǔ)上實(shí)現(xiàn)數(shù)據(jù)糾錯(cuò)。RS碼構(gòu)造簡(jiǎn)單、實(shí)現(xiàn)容易,符合遙測(cè)系統(tǒng)要求。同時(shí)RS碼也是國(guó)軍標(biāo)推薦使用的一種遙測(cè)系統(tǒng)編碼,糾錯(cuò)能力非常強(qiáng),不僅能夠糾正突發(fā)錯(cuò)誤,而且能夠糾正隨機(jī)錯(cuò)誤。采用在遙測(cè)系統(tǒng)中加入RS 糾錯(cuò)編碼級(jí)聯(lián)CRC 檢錯(cuò)編碼的綜合編碼方式,在實(shí)現(xiàn)強(qiáng)大糾錯(cuò)能力的同時(shí),大幅提高了遙測(cè)接收端解碼的效率,滿(mǎn)足各遙測(cè)信號(hào)實(shí)時(shí)解算的需求[1]。
RS信道編碼技術(shù)的實(shí)現(xiàn),分編碼發(fā)送和接收解碼兩部分組成。在遙測(cè)艙采編器中用FPGA電路實(shí)現(xiàn)RS編碼,遙測(cè)地面站進(jìn)行數(shù)據(jù)接收后由軟件對(duì)接收遙測(cè)數(shù)據(jù)進(jìn)行譯碼,完成糾錯(cuò)過(guò)程。本文在設(shè)計(jì)中把RS及CRC的編碼電路綜合到彈載遙測(cè)艙采編器的FPGA中。而RS的解碼及CRC的對(duì)錯(cuò)檢驗(yàn)則借助VC++6.0開(kāi)發(fā)平臺(tái),使用C++語(yǔ)言實(shí)現(xiàn)解碼算法,并封裝為動(dòng)態(tài)鏈接庫(kù),至于人機(jī)接口則另行開(kāi)發(fā)一個(gè)RS譯碼軟件,然后在此軟件中調(diào)用動(dòng)態(tài)鏈接庫(kù)庫(kù)函數(shù)實(shí)現(xiàn)對(duì)遙測(cè)數(shù)據(jù)的譯碼。
彈載遙測(cè)艙把原始遙測(cè)數(shù)據(jù)進(jìn)行RS編碼及CRC編碼,并把編碼后形成的附加碼與原始數(shù)據(jù)按照協(xié)商好的幀格式排列組幀,通過(guò)遙測(cè)發(fā)射機(jī)向空間輻射。遙測(cè)地面接受設(shè)備接受到遙測(cè)信號(hào)后,通過(guò)信號(hào)同步解調(diào)得到遙測(cè)數(shù)據(jù),提供給RS譯碼軟件進(jìn)行譯碼解算,對(duì)遙測(cè)數(shù)據(jù)進(jìn)行RS糾錯(cuò)能力范圍內(nèi)的糾錯(cuò),如數(shù)據(jù)的錯(cuò)誤字節(jié)數(shù)超出了RS的糾錯(cuò)范圍,則原數(shù)不變直接輸出,并給出錯(cuò)誤報(bào)告。
本項(xiàng)目的工作流程圖如圖1所示。
圖1 工作流程圖
本設(shè)計(jì)采用RS(255,231)的截短碼RS(244,220),參數(shù)指標(biāo)如下:
碼長(zhǎng):n=244;
信息符號(hào)個(gè)數(shù):k=220;
糾錯(cuò)能力:t=12;
本原多項(xiàng)式:x8+x7+x2+x+1(391 decimal);
生成多項(xiàng)式:
注:g(x)的系數(shù)由MATLAB中的genpoly=rsgenpoly(255,239,391)函數(shù)得到。
本設(shè)計(jì)對(duì)RS進(jìn)行符號(hào)交錯(cuò),交錯(cuò)深度為3[2]。符號(hào)交錯(cuò)按圖2表示的方式完成。圖2中開(kāi)關(guān)S1、S2同步工作,按1、2、3……1、2、3的順序循環(huán)的從一個(gè)編碼器轉(zhuǎn)到另一個(gè)編碼器。每個(gè)編碼器占用一個(gè)RS符號(hào)時(shí)間。
圖2 R-S交錯(cuò)表示
由于開(kāi)關(guān)S2與S1同步工作,在編碼器組的總輸出端,把各編碼器輸出的244個(gè)碼符號(hào)重新組合成與總輸入端相同的形式,并把編碼器產(chǎn)生的全部24個(gè)校驗(yàn)符號(hào)接續(xù)其后。
進(jìn)入編碼器組總輸入端的符號(hào)序列為:
D11D12D13……D2201D2202D2203;
產(chǎn)生的24×3的校驗(yàn)符號(hào)序列為:
P11P21……P241…… P13P23……P243;
總輸出端的碼塊為:
D11D12D13……D2201D2202D2203P11P21……P241…… P13P23……P243;
對(duì)編碼器組的某一RS編碼電路的輸入是待編碼的數(shù)據(jù)data,時(shí)鐘clk,輸出是編碼數(shù)據(jù)data_encoder。編碼的實(shí)現(xiàn)電路如圖3所示,其中g(shù)0…g2t-1即為生成多項(xiàng)式的系數(shù)[3]。
當(dāng)數(shù)據(jù)data以字節(jié)為單位在clk時(shí)鐘下輸入時(shí),開(kāi)關(guān)閉合,MUX21倒向2,輸入數(shù)據(jù)一方面直接輸出,另一方面送入編碼電路進(jìn)行運(yùn)算。在數(shù)據(jù)全部送入編碼電路后,開(kāi)關(guān)斷開(kāi),MUX21倒向1,這時(shí)輸出端接到移位寄存器輸出端,將移位寄存器中存儲(chǔ)的余項(xiàng)依次輸出即完成了對(duì)數(shù)據(jù)的編碼,這樣生成的碼為系統(tǒng)碼,即數(shù)據(jù)位在前,監(jiān)督位在后。在該編碼電路中對(duì)data的操作是以字節(jié)為單位的。
圖3 RS編碼實(shí)現(xiàn)電路
CRC編碼程序接受一個(gè)長(zhǎng)度為(n-16)比特的數(shù)據(jù)塊,此例中n=754。然后將經(jīng)過(guò)運(yùn)算所得到的一個(gè)16比特的幀校驗(yàn)序列FCS附加在數(shù)據(jù)塊之后,這樣就生成了一個(gè)(n,n-16)的二元分組碼,16比特的幀校驗(yàn)序列FCS插入在傳送幀尾部的幀差錯(cuò)控制字的位置上。
幀校驗(yàn)序列FCS的生成多項(xiàng)式為:G(X)=X16+X12+X5+1。
RS譯碼軟件主要完成的功能有:提供友好的用戶(hù)操作界面,進(jìn)行CRC校驗(yàn),如CRC校驗(yàn)結(jié)果有錯(cuò),控制數(shù)據(jù)流,調(diào)用底層動(dòng)態(tài)鏈接庫(kù)接口實(shí)現(xiàn)RS的編碼和譯碼功能,將譯碼結(jié)果生成糾錯(cuò)報(bào)告等。本設(shè)計(jì)的CRC檢驗(yàn)部分采用查表法實(shí)現(xiàn),減少實(shí)時(shí)計(jì)算量。CRC校驗(yàn)碼校驗(yàn)結(jié)果為錯(cuò)誤時(shí),RS軟件會(huì)將交錯(cuò)的RS數(shù)據(jù)幀挑出重組后送入RS譯碼計(jì)算模塊,此功能使用多線(xiàn)程實(shí)現(xiàn)。下面對(duì)RS譯碼算法的實(shí)現(xiàn)做詳細(xì)介紹。
RS的譯碼算法分五個(gè)步驟[4],譯碼算法工作框圖如圖4所示。
圖4 RS譯碼算法工作框圖
用VC開(kāi)發(fā)平臺(tái),使用C++語(yǔ)言實(shí)現(xiàn)動(dòng)態(tài)鏈接庫(kù)時(shí)主要?jiǎng)澐秩蠊δ苣K,包括:解華羅庚域碼元的初始化模塊,基礎(chǔ)運(yùn)算模塊,譯碼算法實(shí)現(xiàn)模塊。
1.4.1 解華羅庚域碼元的初始化模塊
初始化模塊的主要功能是根據(jù)本原多項(xiàng)式解華羅庚域的所有符號(hào),轉(zhuǎn)換為十進(jìn)制數(shù),存儲(chǔ)在全局變量中。圖5為初始化模塊的算法流程圖,主旨思想是將多項(xiàng)式用二進(jìn)制表示(對(duì)應(yīng)關(guān)系為:X的最高次冪對(duì)應(yīng)二進(jìn)制數(shù)的最高位,以下各位對(duì)應(yīng)多項(xiàng)式的各次冪,有此冪次項(xiàng)對(duì)應(yīng)1,無(wú)此冪次項(xiàng)對(duì)應(yīng)0)。設(shè)本原多項(xiàng)式G(x)=0,解出華羅庚域中所有符元值(用整形數(shù)組存儲(chǔ)的0、1序列,代表多項(xiàng)式),再將此序列化為十進(jìn)制形式,存儲(chǔ)在全局變量中,方便后續(xù)運(yùn)算使用。
圖5 初始化模塊流程圖
1.4.2 基礎(chǔ)運(yùn)算模塊
基礎(chǔ)運(yùn)算模塊由符元加法、符元乘法、符元除法三個(gè)基礎(chǔ)運(yùn)算函數(shù)單元組成。譯碼算法的所有運(yùn)算都由此三項(xiàng)基礎(chǔ)運(yùn)算組成。
符元加法的算法流程圖如圖6所示,符元乘法的算法流程圖如圖7所示,符元除法的算法流程圖如圖8所示。
圖6 符元加法的算法流程圖
圖7 符元乘法的算法流程圖
圖8 符元除法的算法流程圖
1.4.3 譯碼算法實(shí)現(xiàn)模塊
如圖4所示譯碼算法實(shí)現(xiàn)模塊主要由五個(gè)步驟組成[4]。
1) 由接收到的碼多項(xiàng)式求伴隨式的值Sj;
RS碼si的計(jì)算方法有直接代入si=R(αi)計(jì)算和利用最小多項(xiàng)式兩種。本設(shè)計(jì)使用直接代入法,將αi,i∈[0,2t-1] 直接帶入輸入多項(xiàng)式R(x)進(jìn)行多項(xiàng)式計(jì)算。圖9為計(jì)算伴隨多項(xiàng)式流程圖。
圖9 計(jì)算伴隨多項(xiàng)式流程圖
已知si后求解2t個(gè)未知數(shù)的計(jì)算分兩步進(jìn)行,先求差錯(cuò)位置βj再求差錯(cuò)幅值ejj。
2) 由伴隨式的值求錯(cuò)誤位置多項(xiàng)式σ(x);
圖10是求差錯(cuò)位置多項(xiàng)式σ(x)系數(shù)的迭代算法流程圖。
圖10 求σ(x)的迭代算法流程圖
3) 用錢(qián)搜索求σ(x)的根,得到錯(cuò)誤位置βj;
σ(x)的根的倒數(shù)即是錯(cuò)誤位置。錢(qián)搜索算法即把所有符元都帶入多項(xiàng)式,求得多項(xiàng)式σ(x)的根,錢(qián)搜索算法實(shí)現(xiàn)流程圖如圖11所示。
圖11 錢(qián)搜索算法實(shí)現(xiàn)流程圖
4) 由伴隨式sj和σ(x)的系數(shù)求出錯(cuò)誤幅值ejj。
其具體的計(jì)算公式如下:
σj0=σ0=1
σji=σi+σj(i-1)βji=1,2,...,t-1
然后由錯(cuò)誤位置、錯(cuò)誤幅值和接收碼字得到譯碼輸出,完成糾錯(cuò)過(guò)程[5]。
在進(jìn)行系統(tǒng)性能測(cè)試時(shí),借助遙測(cè)艙模擬源生成一組具有固定特性的數(shù)據(jù)作為數(shù)據(jù)源,經(jīng)由遙測(cè)艙發(fā)出,人為調(diào)整發(fā)射端與接收端之間的遙測(cè)無(wú)線(xiàn)信號(hào)強(qiáng)度,適當(dāng)增大信號(hào)接收誤碼率,然后將遙測(cè)地面設(shè)備接收到的二進(jìn)制遙測(cè)文件作為輸入,提供給RS譯碼軟件,查看譯碼后軟件的生成報(bào)告及輸出的二進(jìn)制文件,對(duì)譯碼算法進(jìn)行驗(yàn)證[6]。實(shí)施效果如表1所示。
表1 RS級(jí)聯(lián)CRC實(shí)施效果
由表1可以得出,將RS與CRC進(jìn)行級(jí)聯(lián)編碼后加入遙測(cè)系統(tǒng)發(fā)送端,有助于提高遙測(cè)數(shù)據(jù)可靠性,降低系統(tǒng)誤碼率,提高遙測(cè)系統(tǒng)作用距離。
文中詳細(xì)描述了在某彈載遙測(cè)系統(tǒng)中加入RS級(jí)聯(lián)CRC信道編碼的實(shí)現(xiàn)方法,對(duì)如何采用C程序?qū)崿F(xiàn)可配置參數(shù)的RS碼譯碼算法實(shí)現(xiàn)進(jìn)行了詳細(xì)介紹。加入RS級(jí)聯(lián)CRC信道編碼后,遙測(cè)系統(tǒng)擁有了自糾錯(cuò)能力,對(duì)提高遙測(cè)系統(tǒng)的可靠性和實(shí)效性降低系統(tǒng)誤碼率,提高遙測(cè)系統(tǒng)作用距離有很大幫助。設(shè)計(jì)采取軟件譯碼形式實(shí)現(xiàn),軟件的可配置設(shè)計(jì),不僅節(jié)約成本,而且易于推廣,后期能夠滿(mǎn)足各型號(hào)遙測(cè)信號(hào)實(shí)時(shí)解算的現(xiàn)實(shí)需求。該設(shè)計(jì)已在某型空空導(dǎo)彈的研制中進(jìn)行應(yīng)用,并取得了滿(mǎn)意的效果。
參考文獻(xiàn):
[1] 李英麗,劉春亭.空空導(dǎo)彈遙測(cè)系統(tǒng)設(shè)計(jì)[M].北京:國(guó)防工業(yè)出版社,2006.
[2] 竇高奇,高?。甊S碼的軟判決譯碼及DSP實(shí)現(xiàn)[J].微計(jì)算機(jī)信息.2006,22( 4-2) : 121-123.
[3] 楊殿亮,賀衛(wèi)亮.一種無(wú)人飛行器測(cè)控信道初步設(shè)計(jì)[J].航空兵器,2015(1):45-48.
[4] 王新梅,肖國(guó)鎮(zhèn).糾錯(cuò)碼:原理與方法(修訂版)[M].西安:西安電子科技大學(xué)出版社,2001.
[5] 林舒.差錯(cuò)控制編碼[M].北京:機(jī)械工業(yè)出版社,2007.
[6] 朱黨杰,孫江輝,蔣學(xué)東.RS級(jí)聯(lián)CRC編碼在遙測(cè)系統(tǒng)中的應(yīng)用[J].電子科技,2013,26(7):40-42.