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