论文首页哲学论文经济论文法学论文教育论文文学论文历史论文理学论文工学论文医学论文管理论文艺术论文 |
摘要:汉明码是1种编码效率极高的差错控制码,汉明码及扩展汉明码广泛应用于数据存储系统中。本文在简单分析汉明码原理的基础上,详细阐述了汉明码的编码及纠错步骤,旨在使读者理解汉明码的纠错过程以及在实际中的广泛应用。 毕业 网
关键词:差错控制编码技术;汉明码;原理;编码、纠错步骤
随着PC机的日益普及,存储对象的日渐多元化,用户对存储需求不断升级,如何保证数据稳定、高速传输?RAID(“Redundant Array of Independent Disk”)独立冗余磁盘阵列解决了这个难题,并且成为目前存储的主流技术。RAID是如何实现数据高速、可靠的传输呢,1个关键的核心技术就是应用了1定的差错控制编码技术,在RAID众多系列中最复杂的RAID 2中就采用了“汉明码(Hamming Code)差错控制编码技术”,它在数据存储及移动过程中进行差错控制,对传输过程中出现的差错自动进行纠正,保证了数据传输的安全可靠性。笔者在这里将阐述汉明码的编码原理,并剖析汉明码编码纠错过程。
1:汉明码的应用与原理
汉明码是1950年由美国贝尔实验室汉明(也有译为海明)提出来的,是第1个设计用来纠错的分组码。目前,汉明码及其变形已广泛地应用在数字通信、数据通信中的数据存储系统中,尤其在计算机的内存寻址及RAM与寄存器之间来回传送比特位时经常使用。
汉明码是在原编码的基础上附加1部分代码,使其满足纠错码的条件,原编码我们可将它称为信息码,附加码称为校验码(又可称为监督码或冗余码)。汉明码码距为3,所以只能够发现2个错误或纠正1个错误,编码效率最高。它属于线性分组码,由于线性码的编码和译码容易实现,至今仍是应用最广泛的1类码。
2:汉明码编码过程
汉明码编码可遵循以下四个步骤: (科教作文网http://zw.ΝsΕAc.Com编辑整理)
1。 由信息位数,根据汉明不等式,确定校验位数
2。确定校验码位置 毕业 网
3。确定校验码的值
4。求出汉明码
实例:若有17位长的信息码为1001101,请求出汉明码。
步骤1:校验位数的确定
由汉明不等式2r-1≥n 或 2r≥k+r+1(其中r为检验码位数, k为信息码位数,n为编码后的码总长)可知,在本题中k=7,代入2r≥k+r+1公式中可解得r 的取值为4,即需要4位检验码(可依次编为r0、r1、r2、r3),则总码长n=k+r=7+4=11。
步骤2:确定校验码位置
从理论上讲校验码位可放在任何位置,但习惯上将它放于位置1,2,4,8……等位置,对于校验位少的可用强记法记住所在位置,而对于位数较多的强记法就不适用,在这里介绍1种公式法,不用死记硬背,即可求出各校验码的位置。
校验位rn对应的位置为2n,n的取值从0开始,则:
r0=20=1 r1=21=2 r2=22=4 r3=23=8
将校验位填在表格1对应的单元格内,其余位用信息码填充。表格1中,位数是指数据存放在第几位,共11位,用In表示(n的取值从1至11)。
11 10 9 8 7 6 5 4 3 2 1 位数
1 0 0 r3 1 1 0 r2 1 r1 r0 编码
表格 1
步骤3:确定校验码的值
确定校验码的值是个较繁琐的过程,遵循以下几个步骤:
首先,将信息码所对应的位数写成2的幂之和的形式。在实例中我们知道信息码对应的位数有I11、I10、I9、I7、I6、I5、I3等7位,相应的值写成如下形式:
11=23+21+20 10=23+21 9=23+20 7=22+21+20 6=22+21 5=22+20 3=21+20
其次,校验位rn由信息码对应位数的幂之和形式中包含有n的信息码异或而得,从表格1分析可知, r0的值由I11(信息码为1)、I9(信息码为0)、I7位(信息码为1)、I5位(信息码为0)、I3(信息码为1)对应的信息码异或而得, (科教范文网 lw.nseaC.Com编辑发布)
则r0=1○+0○+1○+0○+1=1
依此类推:
r1=1○+0○+1○+1○+1=0
r2==1○+1○+0=0
r3==1○+0○+0=1
步骤4:求出汉明码
将校验位rn的值填充到表格1中,即可求出汉明码为10011100101。
11 10 9 8 7 6 5 4 3 2 1 位数
1 0 0 1 1 1 0 0 1 0 1 汉明码
表格 2
三:汉明码纠错步骤
实例1中,由7位信息码,求出了汉明码为10011100101,若该编码传输被接收时,第7位变成了0,接收端如何来判断并且纠正错误呢?
11 10 9 8 7 6 5 4 3 2 1 位数
1 0 0 1 1 1 0 0 1 0 1 汉明码
1 0 0 1 0 1 0 0 1 0 1 出错的汉明码
表格 3
在汉明码中,通过校验因子进行验证,校验因子公式为Sn=rn(校验码) ○+ Rn(接收码)
rn(校验码)即为所对应的r的取值,Rn(接收码)为由信息码对应位数的幂之和形式中包含有n的信息码异或而得。
如表格4所示,出错的第7位数据用蓝色显示,黄色表示校验位,黑色表示信息位。
S0=r0(校验码) ○+ R0(接收码)=1○+1○+0○+0○+0○+1=1
S1=r1(校验码) ○+ R1(接收码)=0○+1○+1○+0○+0○+1=1
S2=r2(校验码) ○+ R2(接收码)=0○+0○+1○+0=1
S3=r3(校验码) ○+ R3(接收码)=1○+0○+0○+1=0
求出来的S3S2S1S0=0111(即十进制7),该数指示了发生错误的比特的准确位置是第7位,1旦确定了错误的位置,接收方就可在将该位纠正过来,在本题中将0改为1,这样就起到了纠错的作用。
11 10 9 8 7 6 5 4 3 2 1 位数
1 0 0 1 0 1 0 0 1 0 1 出错的汉明码
表格 4
结束语
本文从RAID 2中应用汉明码进行纠错为出发点,阐述了汉明码的原理及应用方向,通过实例,对如何进行汉明码编码及汉明码如何进行纠错进行了详解。
参考文献:
[ 1 ] 李斯伟 雷新生 数据通信技术 人民邮电出版社 2004
[ 2 ] Bernard Sklar著 数字通信—基础与应用研究 电子工业出版社 2003 毕业 网