基于CCS的(7,4)汉明码的编译码设计*
2016-08-11夏志达李丽华
夏志达 李丽华 张 龙
(1.91919部队 黄冈 438000)(2.海军工程大学电子工程学院 武汉 430033)
基于CCS的(7,4)汉明码的编译码设计*
夏志达1李丽华2张龙2
(1.91919部队黄冈438000)(2.海军工程大学电子工程学院武汉430033)
摘要二元汉明码是d=3的完备码,即可以完成一个错误的纠正。论文分析了(7,4)汉明码的编译码过程与实现方法,并运用C++Builder和CCS对(7,4)汉明码的系统码编译码进行编程设计,提高了理论学习与实践能力。
关键词(7,4)汉明码; 纠错译码; DSP实现
Class NumberTN911.22
1 引言
汉明码[1~3]是信道编码常用的编码方式之一,目的在于提高信息传输的可靠性,属于线性分组码,它是同时具有分组特性(码字和消息长度恒定)和线性特性(消息相加的编码等于各自编码后的相加)的纠错码,并且编码方式简单[4~5]。
对于二元码,码与码之间的基本运算是模二加和模二乘[6~7],本文通过对二元(7,4)汉明码系统码的编译码进行简单的介绍,然后给出其基于C++Builder和CCS的编程实现方法。
2 (7,4)汉明码的编码实现
(7,4)汉明码的码字c可以表示为c=mG, 其中m是任意4维向量(称为消息向量),G是4行7列的秩为4的矩阵(称为生成矩阵)。
一个二元(7,4)汉明码的系统码形式的生成矩阵如下所示:
等价的编码方程为
编码电路的一种实现形式如图1所示。
图1 (7,4)系统汉明码编码电路
在编程过程中,一般运用等价编码方程的模二加运算实现程序设计[8]。
3 (7,4)汉明码的译码方法
(7,4)汉明码的最小距离为3,因此它拥有纠正一个错误的能力。其译码方式为:s=rHT,其中r为经过信道传输的码字,其中可能存在由于信道不理想而导致的信息错误,H为校验矩阵,s是描述接收向量是否有错的伴随式向量,与系统码的生成矩阵G相对应的校验矩阵如下:
而r=c+e,0=cHT,因此s=rHT=(c+e)HT=eHT;若s≠0,则传输中一定有错误发生;若s=0,则传输过程中要么无差错发生,要么差错恰为一个码字。
针对有错误的码字s≠0,若s与H中的某一列的向量相同,则可以说明接收码字中的相同列出现错误,这仅能说明出现一个错误时可以实现纠错。相应的伴随式计算方程如下式,纠错译码电路如图2所示。
图2 (7,4)汉明码的一种纠错译码电路
4 基于C++ Builder的(7,4)系统汉明码的设计实现
在C++Builder中[9]利用式(2)的关系方程进行信息位到编码位的转换,运算过程为模二加,即可实现编码。
利用式(4)的关系方程可以得到伴随式,判断,若为0向量,则可能没有错误(程序中假设此种情况都是正确码字);若不为0向量,则将其与校验矩阵H的列向量进行比较,那一列匹配记录下来,就将相应的码字位进行替换(0变1,1变0)。
同时在此还实现了随机加噪的功能(rand()函数生成),即在码字的7位中随机产生一个错误,用于检验汉明码纠正一个错误的能力。最终实现的界面如图3所示(代码位于文件夹中)。
图3 设计实现界面
5 基于CCS的DSP设计实现
应用CCS[10]进行(7,4)编译码实现不像上面介绍的那么简单,由于能力有限信息的输入没有实现自定义功能,而是固定输入12个比特,即3组信息,方便结果查询,输出则是21比特,即3组编码信息,同时固定设置出现一位比特错误,进行求解伴随式纠错译码,其中每一比特均占一个字节的地址。
在地址分配方面除错误图样外都是每个字段32位(双字节),多余部分为0。其中matrix为生成矩阵段有效占28位;indata为输入3组固定信息占12位;codingdata为编码21位;errdata随机错误,分别出现在第4、2和6位占21位;checkdata校验矩阵占21位;sdata为伴随式8位;errchart错误图样占64位;temp 1data是将伴随式计算结果放于一位地址中;temp 2data用于比较哪一位出现错误;decodingdata译码序列(最终正确的译码);outdata是将正确译码后的前四比特提取出来,即信息位。
程序中同样运用模二加运算,根据式(2)和式(4)可以看出参与运算的位数最多只有四位,即按照十进制算结果无非是0、1、2、3和4,只要对应换为0、1、0、1和0即可;其中运用CMPM进行判断是否相等,从而进行跳转。
参 考 文 献
[1] 陈运.信息论与编码[M].北京:电子工业出版社,2007.
[2] 樊昌信,曹丽娜.通信原理(第六版)[M].北京:国防工业出版社,2009.
[3] G. D. Forney. On Decoding BCH Codes[C]//IEEE Trans. Inform. Theory, IT-11:549-557,October 1965.
[4] 姚晓莉,王梅.信道编码在移动通信中的应用[C]//2007年北京地区高校研究生学术交流会,2008.
[5] 王新梅,肖国镇.纠错码-原理与方法[M].西安:西安电子科技大学出版社,2001.
[6] 郝峰,王晓峰.汉明码的Matlab设计[J].信息技术,2011,3:135-137.
[7] 章学静,薛琳,李金平,等.汉明码及其编译码算法的研究与实现[J].北京联合大学学报(自然科学版),2008,22(1):46-49.
[8] 王钢,高宏亮.基于FPGA交织编码的设计与实现[J].哈尔滨理工大学学报,2009,14(1):63-66.
[9] 张建平.C++Builder程序设计[M].北京:兵器工业出版社,2006.
[10] 戴明桢,周建江.TMS320C54x DSP结构、原理及应用[M].北京:北京航空航天出版,2007.
*收稿日期:2015年10月5日,修回日期:2015年11月25日
基金项目:海军工程大学自然科学基金(编号:HGDQNJJ15017)资助。
作者简介:夏志达,男,工程师,研究方向:短波通信。李丽华,女,硕士,讲师,研究方向:短波通信与装备。张龙,男,硕士研究生,研究方向:数字通信理论与技术。
中图分类号TN911.22
DOI:10.3969/j.issn.1672-9730.2016.04.017
Design of Encoding and Decoding of (7,4) Hamming Code Based on CCS
XIA Zhida1LI Lihua2ZHANG Long2
(1. No. 91919 Troops of PLA, Huanggang438000)(2. College of Electronic Engineering, Naval University of Engineering, Wuhan430033)
AbstractThe binary hamming code is the completed code whose minimum distance is 3.And it can correct one error. This paper analyzes the process of (7,4) hamming code’s encoding and decoding and its realization of the circuit, Then, the software of C++ Builder and CCS are used to design (7,4) hamming system code in order to improve the ability of theory and practice.
Key Words(7, 4) hamming code, error correction, DSP realization