<cite id="d9bzp"></cite>
<cite id="d9bzp"><span id="d9bzp"></span></cite>
<cite id="d9bzp"><video id="d9bzp"></video></cite><var id="d9bzp"></var>
<var id="d9bzp"><video id="d9bzp"><thead id="d9bzp"></thead></video></var>
<menuitem id="d9bzp"><video id="d9bzp"></video></menuitem>
<var id="d9bzp"></var><cite id="d9bzp"><video id="d9bzp"></video></cite>
<cite id="d9bzp"></cite>
<var id="d9bzp"></var>
<var id="d9bzp"></var>
<var id="d9bzp"><video id="d9bzp"><thead id="d9bzp"></thead></video></var>

数据存储系统中的安全卫士--汉明码

毕业论文

摘要:汉明码是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:汉明码编码过程
汉明码编码可遵循以下四个步骤:
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)对应的信息码异或而得,
则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  毕业论文 论文

数据存储系统中的安全卫士--汉明码相关推荐
云南快乐十分哪个好_北京pK怎么玩-湖北快3怎么玩 巩俐 高开衩裙| 宋茜| 许魏洲| 李现| 窦骁| 交通银行| 辛弃疾| 台风路径实时发布系统| 窝窝团| 易烊千玺|