引信装定编码译码方法分析*
2015-03-14霍智杰
霍智杰 周 浩
(海军工程大学兵器工程系 武汉 430033)
引信装定编码译码方法分析*
霍智杰 周 浩
(海军工程大学兵器工程系 武汉 430033)
引信的装定过程需要对时间信息进行数字编码,以保证数据传输的有效性和抗干扰能力,而在接收时需要对编码信号进行译码和纠错。介绍了GF(7,4)Hamming码的理论基础,分析了其编码译码过程,利用Matlab编程对编码、译码过程进行了仿真分析,并验证了Hamming码实现检错和纠错的能力,从而证明了其作为信道编码方法的有效性。
引信装定; Hamming码; 编码译码; 纠错
Class Number TN911.3
1 引言
电子时间引信装定单元与引信之间的通信是通过信号的编码、调制、传输、解调、译码和识别等过程完成的[1~2]。引信装定单元采用高频调制的循环GF(7,4) Hamming码对发送信号进行编码,引信接收装定信号并对接收信号进行解码和反馈。Hamming码是一种可以纠正单个随机错误的线性分组码[3~4],是一种编码效率很高的完备码,它具有抗干扰能力强、编译码简单易于实现的优点[5]。
2 Hamming码编码
引信装定单元采用循环(7,4) Hamming码进行编码。编码位数有三位:十位、个位、十分位。如图1所示。
图1 十位、个位、十分位Hamming码编码
对于每一位,将十进制设定数据转换为4位的二进制数据,然后利用Hamming码对二进制数据进行编码、发送、译码、接收和纠错。对于(7,4) Hamming码,其码组长度为n=7,信息码元的位数为k=4,监督码元的位数为r=n-k=3,最小码距为d0=3,纠错能力为t=1,共24=16码字[3],编码效率η=1-r/n=57.1%。
现用A=(a6a5a4a3a2a1a0)表示(7,4) Hamming码的一个码字,其中前四位a6a5a4a3为信息码元,后三位a2a1a0为监督码元,它们之间的关系可用下面的监督方程[5]表示:
(1)
式(1)等价于
(2)
其中,“⊕”表示逻辑“异或”运算。由以上监督方程可得(7,4) Hamming码的16个许用码组,如表1所示。
表1 (7,4) Hamming码的许用码组
监督方程也可用矩阵的形式表示为
(3)
式(3)可简记为HAT=0T,其中,将H称为监督矩阵,它可以分块为
(4)
式中,P为r×k阶矩阵,Ir×r为r×r阶单位矩阵。
此外,也可将式(2)表示为
=(a6a5a4a3)Q
(5)
上式中,Q为k×r阶矩阵,且Q=PT。在Q的左边加上一个k×k阶单位方阵,可构成矩阵
(6)
G成为生成矩阵,由它可得到整个码组[6]。
简单地讲,(7,4) Hamming码的编码是通过加入三位监督位将位数为四位的信息编码成位数为七位的Hamming码[7],得到码组A=(a6a5a4a3a2a1a0)。其流程图如图2所示。
图2 编码流程图
在编码时,采用的是循环(7,4) Hamming码。所谓循环码就是具有循环特性的线性分组码,根据码组长度n及生成多项式g(x)可完全确定循环码。在引信的编码设计中,采用生成多项式为g(x)=x3+x+1的循环码[3]。上述循环(7,4) Hamming码编码过程可用下面的Matlab程序[8]实现:
clear all;
close all;
H = hammgen(3, [1 0 1 1]) % 根据生成多项式求监督矩阵H
G=gen2par(H) % 调用函数gen2par()求H的生成矩阵G
Msg=[0 0 0 0;0 0 0 1;0 0 1 0;0 0 1 1;0 1 0 0; 0 1 0 1;0 1 1 0;0 1 1 1;1 0 0 0;1 0 0 1; 1 0 1 0;1 0 1 1;1 1 0 0;1 1 0 1;1 1 1 0; 1 1 1 1]; % 输入16组信息码
Code=rem(Msg*G,2); % 求异或和,得到Hamming编码disp( '(7,4)Hamming码的编码结果: ' ) % 结果显示
disp(Code)
程序运行结果如下
H =
1 0 0 1 1 1 0
0 1 0 0 1 1 1
0 0 1 1 1 0 1
G =
1 0 1 1 0 0 0
1 1 0 1 0 0 0
1 1 0 0 0 1 0
0 1 1 0 0 0 1
(7,4)Hamming码的编码结果:
0 0 0 0 0 0 0
0 1 1 0 0 0 1
1 1 0 0 0 1 0
1 0 1 0 0 1 1
1 1 1 0 1 0 0
1 0 0 0 1 0 1
0 0 1 0 1 1 0
0 1 0 0 1 1 1
1 0 1 1 0 0 0
1 1 0 1 0 0 1
0 1 1 1 0 1 0
0 0 0 1 0 1 1
0 1 0 1 1 0 0
0 0 1 1 1 0 1
1 0 0 1 1 1 0
1 1 1 1 1 1 1
由以上程序所得结果与表1一致。
3 Hamming码译码
发送码组A=(a6a5a4a3a2a1a0)在信道传输过程中由于受到干扰或噪声等因素的影响可能会产生错码。假定接收到的码组为B=(b6b5b4b3b2b1b0),则接收码组与发送码组之差称为错误图样[9],即
E=B-A=(e6e5e4e3e2e1e0)
(7)
其中ei为B与A的对应位之差,令
(8)
式(7)表示,若接收无误,则ei为0;接收有误,ei为1。
定义伴随式(也称校正子)[5]为
S=BHT=(A+E)HT=AHT+EHT=EHT
(9)
由于(7,4) Hamming码有三个监督位r,故有三个伴随式,记为S1、S2、S3,共有八种组合,可以表述七种错误情形和一种正确情形[3],如表2所示。
表2 伴随式与误码位置的对应关系
由表2可知,当误码位置在a6、a5、a4、a2时,伴随式S1=0;否则,S1≠0;从而有S1=a6⊕a5⊕a4⊕a2。同理可得S2=a5⊕a4⊕a3⊕a1,S3=a6⊕a5⊕a3⊕a0。如果没有错误信息,则S1、S2、S3均为0。信道接收端收到每个码组后,计算出S1、S2、S3,如果不全为0,则根据表2确定错误的位置并纠错。
(7,4) Hamming码的译码是将七位Hamming码解码成四位的信息码,并纠正其中可能出现的一位错误[10],其流程图可表示为
图3 译码流程图
译码过程可实现如下:
N=7; % Hamming码数据长度
Msg=[0 0 0 0;0 0 0 1;0 0 1 0;0 0 1 1; 0 1 0 0;0 1 0 1;0 1 1 0;0 1 1 1; 1 0 0 0;1 0 0 1;1 0 1 0;1 0 1 1; 1 1 0 0;1 1 0 1;1 1 1 0;1 1 1 1]; % 16组信息码
[r,c]=size(Msg); % 求矩阵的行数r和列数c
code=encode(Msg,N,c,'hamming');
code_noise=rem(code+rand(r,N)>0.95,2) % 加入噪声,rand()用于产生r行N列的随机矩阵
rcv=decode(code_noise,N,c,'hamming') % 利用decode()函数产生译码
disp([ '接收码的误码率:' num2str(symerr(code,code_noise)/length(code))])
% 计算接收到的数据的误码率
disp([ '解码后的误码率:' num2str(symerr(Msg,rcv)/length(Msg))])
% 计算译码后的误码率
code_noise = rcv =
0 0 0 0 1 0 0 0 0 0 0
1 0 1 1 0 0 1 0 0 0 1
1 1 1 0 0 1 0 0 0 1 0
0 1 0 0 0 1 1 0 0 1 1
0 1 1 0 1 0 0 0 1 0 0
1 1 0 0 1 0 1 0 1 0 1
1 0 0 0 1 1 0 0 1 1 0
0 0 1 0 1 1 1 0 1 1 11 1 0 1 0 0 0 1 0 0 0
0 1 1 1 0 0 1 1 0 0 1
0 0 1 1 0 1 0 1 0 1 0
1 0 0 1 0 1 1 1 0 1 1
1 0 1 1 1 0 0 1 1 0 0
0 0 0 1 1 0 1 1 1 0 1
0 1 0 1 1 1 0 1 1 1 0
1 1 1 1 1 1 1 1 1 1 1
接收码的误码率:0.125
解码后的误码率:0
从以上结果看,在随机噪声影响下,接收信号码组的前两个码字出现了错误,接收信号误码率为0.125;经译码后,前两个码字的错误得到了纠正,误码率为0,由此可见Hamming码译码降低了信道传输的误码率。
4 结语
对引信装定过程中的(7,4) Hamming码编码、译码过程进行了分析,利用Matlab程序进行了仿真。在噪声条件下,接收数据可能会发生错误,而Hamming码能够检查出错误并进行纠错,降低数据传输的误码率,初步证明了它作为信道编码方法的有效性。本文为引信装定编码解码模块的设计提供了思路和指引。
[1] 曲秀杰,李喆,李杰.电子时间引信装定技术研究[J].探测与控制学报,2001,23(3):21-24.
[2] 张合.引信与武器系统交联理论及技术[M].北京:国防工业出版社,2010.
[3] 郝潇,王晓峰.汉明码的Matlab设计[J].信息技术,2011(3):135-137.
[4] 盛孟刚.汉明码编译码的FPGA设计与实现[J].山西电子技术,2007(6):43-44,47.
[5] 粟向军,赵娟.通信原理[M].北京:清华大学出版社,2011.
[6] 刘燎原.基于VHDL语言的汉明码编码器和译码器的设计[J].安徽职业技术学院学报,2006,5(4):5-7.
[7] 蒋婷,徐睿,周昕杰.汉明码的改进及在存储器中的实现[J].电子与封装,2011,11(5):19-22.
[8] 李永忠,徐静.现代通信原理、技术与仿真[M].西安:西安电子科技大学出版社,2010.
[9] 章学静,薛琳等.汉明码及其编译码算法的研究与实现[J].北京联合大学学报,2008,22(1):46-49.
[10] 代永红,郑建生,刘彦飞.通信原理仿真、设计与实训[M].北京:国防工业出版社,2011.
Analysis of Encoding and Decoding Method in Fuse Setting
HUO Zhijie ZHOU Hao
(Department of Weaponry Engineering, Naval University of Engineering, Wuhan 430033)
The fuse setting process requires encoding of the time information to guarantee the effectiveness and capability of anti-interference, and decoding and error correction needs to be undertaken when the code is received. A brief introduction to the theoretical principle of (7,4) Hamming code is given, and the encoding and decoding process is introduced. Simulations are undertaken aided by Matlab program to study on the encoding and decoding process, which verifies the ability of Hamming code to detect and correct errors, thus proving its effectiveness to serve as a method of channel encoding.
fuse setting, Hamming code, encoding and decoding, error correction
2014年12月10日,
2015年1月17日
霍智杰,男,硕士研究生,研究方向:武器系统与运用工程。周浩,男,副教授,研究方向:武器系统与运用工程。
TN911.3
10.3969/j.issn1672-9730.2015.06.025