在弹载遥测系统中加入RS级联CRC信道编码的实现方法
2018-05-31冯玉洁朱党杰
冯玉洁 朱党杰
(中国空空导弹研究院 河南 洛阳 471009)
0 引言
遥测系统规定,系统误码率为10-4时作为接收信号的解调门限来计算系统作用距离。在遥测系统发射及接收设备不变的情况下,遥测码速率的不断提高将造成系统作用距离的下降。而随着弹载遥测技术的发展,不断提高的测试数据量需要高码率传输,这就要求在系统中加入适合的信道编码来降低系统误码率,提高系统作用距离。空空导弹遥测系统体积紧张,空间有限,要求在不增加硬件资源的基础上实现数据纠错。RS码构造简单、实现容易,符合遥测系统要求。同时RS码也是国军标推荐使用的一种遥测系统编码,纠错能力非常强,不仅能够纠正突发错误,而且能够纠正随机错误。采用在遥测系统中加入RS 纠错编码级联CRC 检错编码的综合编码方式,在实现强大纠错能力的同时,大幅提高了遥测接收端解码的效率,满足各遥测信号实时解算的需求[1]。
1 总体设计
RS信道编码技术的实现,分编码发送和接收解码两部分组成。在遥测舱采编器中用FPGA电路实现RS编码,遥测地面站进行数据接收后由软件对接收遥测数据进行译码,完成纠错过程。本文在设计中把RS及CRC的编码电路综合到弹载遥测舱采编器的FPGA中。而RS的解码及CRC的对错检验则借助VC++6.0开发平台,使用C++语言实现解码算法,并封装为动态链接库,至于人机接口则另行开发一个RS译码软件,然后在此软件中调用动态链接库库函数实现对遥测数据的译码。
弹载遥测舱把原始遥测数据进行RS编码及CRC编码,并把编码后形成的附加码与原始数据按照协商好的帧格式排列组帧,通过遥测发射机向空间辐射。遥测地面接受设备接受到遥测信号后,通过信号同步解调得到遥测数据,提供给RS译码软件进行译码解算,对遥测数据进行RS纠错能力范围内的纠错,如数据的错误字节数超出了RS的纠错范围,则原数不变直接输出,并给出错误报告。
本项目的工作流程图如图1所示。
图1 工作流程图
1.1 RS编码实现
本设计采用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编码实现电路
1.2 CRC编码实现
CRC编码程序接受一个长度为(n-16)比特的数据块,此例中n=754。然后将经过运算所得到的一个16比特的帧校验序列FCS附加在数据块之后,这样就生成了一个(n,n-16)的二元分组码,16比特的帧校验序列FCS插入在传送帧尾部的帧差错控制字的位置上。
帧校验序列FCS的生成多项式为:G(X)=X16+X12+X5+1。
1.3 RS译码软件
RS译码软件主要完成的功能有:提供友好的用户操作界面,进行CRC校验,如CRC校验结果有错,控制数据流,调用底层动态链接库接口实现RS的编码和译码功能,将译码结果生成纠错报告等。本设计的CRC检验部分采用查表法实现,减少实时计算量。CRC校验码校验结果为错误时,RS软件会将交错的RS数据帧挑出重组后送入RS译码计算模块,此功能使用多线程实现。下面对RS译码算法的实现做详细介绍。
1.4 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]。
2 系统性能测试与结果
在进行系统性能测试时,借助遥测舱模拟源生成一组具有固定特性的数据作为数据源,经由遥测舱发出,人为调整发射端与接收端之间的遥测无线信号强度,适当增大信号接收误码率,然后将遥测地面设备接收到的二进制遥测文件作为输入,提供给RS译码软件,查看译码后软件的生成报告及输出的二进制文件,对译码算法进行验证[6]。实施效果如表1所示。
表1 RS级联CRC实施效果
由表1可以得出,将RS与CRC进行级联编码后加入遥测系统发送端,有助于提高遥测数据可靠性,降低系统误码率,提高遥测系统作用距离。
3 结束语
文中详细描述了在某弹载遥测系统中加入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.