馮玉潔 朱黨杰
(中國空空導彈研究院 河南 洛陽 471009)
遙測系統規定,系統誤碼率為10-4時作為接收信號的解調門限來計算系統作用距離。在遙測系統發射及接收設備不變的情況下,遙測碼速率的不斷提高將造成系統作用距離的下降。而隨著彈載遙測技術的發展,不斷提高的測試數據量需要高碼率傳輸,這就要求在系統中加入適合的信道編碼來降低系統誤碼率,提高系統作用距離。空空導彈遙測系統體積緊張,空間有限,要求在不增加硬件資源的基礎上實現數據糾錯。RS碼構造簡單、實現容易,符合遙測系統要求。同時RS碼也是國軍標推薦使用的一種遙測系統編碼,糾錯能力非常強,不僅能夠糾正突發錯誤,而且能夠糾正隨機錯誤。采用在遙測系統中加入RS 糾錯編碼級聯CRC 檢錯編碼的綜合編碼方式,在實現強大糾錯能力的同時,大幅提高了遙測接收端解碼的效率,滿足各遙測信號實時解算的需求[1]。
RS信道編碼技術的實現,分編碼發送和接收解碼兩部分組成。在遙測艙采編器中用FPGA電路實現RS編碼,遙測地面站進行數據接收后由軟件對接收遙測數據進行譯碼,完成糾錯過程。本文在設計中把RS及CRC的編碼電路綜合到彈載遙測艙采編器的FPGA中。而RS的解碼及CRC的對錯檢驗則借助VC++6.0開發平臺,使用C++語言實現解碼算法,并封裝為動態鏈接庫,至于人機接口則另行開發一個RS譯碼軟件,然后在此軟件中調用動態鏈接庫庫函數實現對遙測數據的譯碼。
彈載遙測艙把原始遙測數據進行RS編碼及CRC編碼,并把編碼后形成的附加碼與原始數據按照協商好的幀格式排列組幀,通過遙測發射機向空間輻射。遙測地面接受設備接受到遙測信號后,通過信號同步解調得到遙測數據,提供給RS譯碼軟件進行譯碼解算,對遙測數據進行RS糾錯能力范圍內的糾錯,如數據的錯誤字節數超出了RS的糾錯范圍,則原數不變直接輸出,并給出錯誤報告。
本項目的工作流程圖如圖1所示。

圖1 工作流程圖
本設計采用RS(255,231)的截短碼RS(244,220),參數指標如下:
碼長:n=244;
信息符號個數:k=220;
糾錯能力:t=12;
本原多項式:x8+x7+x2+x+1(391 decimal);
生成多項式:
注:g(x)的系數由MATLAB中的genpoly=rsgenpoly(255,239,391)函數得到。
本設計對RS進行符號交錯,交錯深度為3[2]。符號交錯按圖2表示的方式完成。圖2中開關S1、S2同步工作,按1、2、3……1、2、3的順序循環的從一個編碼器轉到另一個編碼器。每個編碼器占用一個RS符號時間。

圖2 R-S交錯表示
由于開關S2與S1同步工作,在編碼器組的總輸出端,把各編碼器輸出的244個碼符號重新組合成與總輸入端相同的形式,并把編碼器產生的全部24個校驗符號接續其后。
進入編碼器組總輸入端的符號序列為:
D11D12D13……D2201D2202D2203;
產生的24×3的校驗符號序列為:
P11P21……P241…… P13P23……P243;
總輸出端的碼塊為:
D11D12D13……D2201D2202D2203P11P21……P241…… P13P23……P243;
對編碼器組的某一RS編碼電路的輸入是待編碼的數據data,時鐘clk,輸出是編碼數據data_encoder。編碼的實現電路如圖3所示,其中g0…g2t-1即為生成多項式的系數[3]。
當數據data以字節為單位在clk時鐘下輸入時,開關閉合,MUX21倒向2,輸入數據一方面直接輸出,另一方面送入編碼電路進行運算。在數據全部送入編碼電路后,開關斷開,MUX21倒向1,這時輸出端接到移位寄存器輸出端,將移位寄存器中存儲的余項依次輸出即完成了對數據的編碼,這樣生成的碼為系統碼,即數據位在前,監督位在后。在該編碼電路中對data的操作是以字節為單位的。

圖3 RS編碼實現電路
CRC編碼程序接受一個長度為(n-16)比特的數據塊,此例中n=754。然后將經過運算所得到的一個16比特的幀校驗序列FCS附加在數據塊之后,這樣就生成了一個(n,n-16)的二元分組碼,16比特的幀校驗序列FCS插入在傳送幀尾部的幀差錯控制字的位置上。
幀校驗序列FCS的生成多項式為:G(X)=X16+X12+X5+1。
RS譯碼軟件主要完成的功能有:提供友好的用戶操作界面,進行CRC校驗,如CRC校驗結果有錯,控制數據流,調用底層動態鏈接庫接口實現RS的編碼和譯碼功能,將譯碼結果生成糾錯報告等。本設計的CRC檢驗部分采用查表法實現,減少實時計算量。CRC校驗碼校驗結果為錯誤時,RS軟件會將交錯的RS數據幀挑出重組后送入RS譯碼計算模塊,此功能使用多線程實現。下面對RS譯碼算法的實現做詳細介紹。
RS的譯碼算法分五個步驟[4],譯碼算法工作框圖如圖4所示。

圖4 RS譯碼算法工作框圖
用VC開發平臺,使用C++語言實現動態鏈接庫時主要劃分三大功能模塊,包括:解華羅庚域碼元的初始化模塊,基礎運算模塊,譯碼算法實現模塊。
1.4.1 解華羅庚域碼元的初始化模塊
初始化模塊的主要功能是根據本原多項式解華羅庚域的所有符號,轉換為十進制數,存儲在全局變量中。圖5為初始化模塊的算法流程圖,主旨思想是將多項式用二進制表示(對應關系為:X的最高次冪對應二進制數的最高位,以下各位對應多項式的各次冪,有此冪次項對應1,無此冪次項對應0)。設本原多項式G(x)=0,解出華羅庚域中所有符元值(用整形數組存儲的0、1序列,代表多項式),再將此序列化為十進制形式,存儲在全局變量中,方便后續運算使用。

圖5 初始化模塊流程圖
1.4.2 基礎運算模塊
基礎運算模塊由符元加法、符元乘法、符元除法三個基礎運算函數單元組成。譯碼算法的所有運算都由此三項基礎運算組成。
符元加法的算法流程圖如圖6所示,符元乘法的算法流程圖如圖7所示,符元除法的算法流程圖如圖8所示。

圖6 符元加法的算法流程圖

圖7 符元乘法的算法流程圖

圖8 符元除法的算法流程圖
1.4.3 譯碼算法實現模塊
如圖4所示譯碼算法實現模塊主要由五個步驟組成[4]。
1) 由接收到的碼多項式求伴隨式的值Sj;
RS碼si的計算方法有直接代入si=R(αi)計算和利用最小多項式兩種。本設計使用直接代入法,將αi,i∈[0,2t-1] 直接帶入輸入多項式R(x)進行多項式計算。圖9為計算伴隨多項式流程圖。

圖9 計算伴隨多項式流程圖
已知si后求解2t個未知數的計算分兩步進行,先求差錯位置βj再求差錯幅值ejj。
2) 由伴隨式的值求錯誤位置多項式σ(x);
圖10是求差錯位置多項式σ(x)系數的迭代算法流程圖。

圖10 求σ(x)的迭代算法流程圖
3) 用錢搜索求σ(x)的根,得到錯誤位置βj;
σ(x)的根的倒數即是錯誤位置。錢搜索算法即把所有符元都帶入多項式,求得多項式σ(x)的根,錢搜索算法實現流程圖如圖11所示。

圖11 錢搜索算法實現流程圖
4) 由伴隨式sj和σ(x)的系數求出錯誤幅值ejj。
其具體的計算公式如下:
σj0=σ0=1
σji=σi+σj(i-1)βji=1,2,...,t-1
然后由錯誤位置、錯誤幅值和接收碼字得到譯碼輸出,完成糾錯過程[5]。
在進行系統性能測試時,借助遙測艙模擬源生成一組具有固定特性的數據作為數據源,經由遙測艙發出,人為調整發射端與接收端之間的遙測無線信號強度,適當增大信號接收誤碼率,然后將遙測地面設備接收到的二進制遙測文件作為輸入,提供給RS譯碼軟件,查看譯碼后軟件的生成報告及輸出的二進制文件,對譯碼算法進行驗證[6]。實施效果如表1所示。

表1 RS級聯CRC實施效果
由表1可以得出,將RS與CRC進行級聯編碼后加入遙測系統發送端,有助于提高遙測數據可靠性,降低系統誤碼率,提高遙測系統作用距離。
文中詳細描述了在某彈載遙測系統中加入RS級聯CRC信道編碼的實現方法,對如何采用C程序實現可配置參數的RS碼譯碼算法實現進行了詳細介紹。加入RS級聯CRC信道編碼后,遙測系統擁有了自糾錯能力,對提高遙測系統的可靠性和實效性降低系統誤碼率,提高遙測系統作用距離有很大幫助。設計采取軟件譯碼形式實現,軟件的可配置設計,不僅節約成本,而且易于推廣,后期能夠滿足各型號遙測信號實時解算的現實需求。該設計已在某型空空導彈的研制中進行應用,并取得了滿意的效果。
參考文獻:
[1] 李英麗,劉春亭.空空導彈遙測系統設計[M].北京:國防工業出版社,2006.
[2] 竇高奇,高俊.RS碼的軟判決譯碼及DSP實現[J].微計算機信息.2006,22( 4-2) : 121-123.
[3] 楊殿亮,賀衛亮.一種無人飛行器測控信道初步設計[J].航空兵器,2015(1):45-48.
[4] 王新梅,肖國鎮.糾錯碼:原理與方法(修訂版)[M].西安:西安電子科技大學出版社,2001.
[5] 林舒.差錯控制編碼[M].北京:機械工業出版社,2007.
[6] 朱黨杰,孫江輝,蔣學東.RS級聯CRC編碼在遙測系統中的應用[J].電子科技,2013,26(7):40-42.