计算机组成原理之汉明码

汉明码是在电信领域的一种线性调试码,以发明者理查德·卫斯里·汉明的名字命名。汉明码在传输的消息流中插入验证码,以侦测并更正单一比特错误。由于汉明编码简单,它们被广泛应用于内存(RAM)。其SECDED版本另外 加入一检测比特,可以侦测两个或以下同时发生的比特错误,并能够更正单一比特的错误。

一、1开始给数字的数据位(从左向右)标上序号, 1,2,3,4,5...  二、将这些数据位的位置序号转换为二进制,1, 10, 11,100, 101,等。
 三、数据位的位置序号中所有为二的幂次方的位(编号1,2,4,8,等,即数据位位置序号的二进制表示中只有一个1)是校验位
 四、有其它位置的数据位(数据位位置序号的二进制表示中至少2个是1)是数据位  五、每一位的数据包含在特定的两个或两个以上的校验位中,这些校验位取决于这些数据位的

位置数值的二进制表示 

根据纠错理论得:L-1=D+C  且D>=C

即编码最小距离L越大,则其检验错误的位数D越大,纠正错误的位数C也越大

设欲检验的的二进制代码为n位,为使其具有纠错能力,需增添k位检验位,组成n+k为的代码。为了能准确对错误定位以及指出代码代码位置,新增添的检验位数k应满足:2^k>=n+k+1,由此可以求出不同代码长度n所需检测位数k如下表所示。

计算机组成原理之汉明码_第1张图片

海明码计算要按以下步骤来进行:计算校验码位数确定校验码位置确定校验码

上面已经介绍了如何计算校验码位数和确定校验码的位置,下面是如何确定校验码:

校验位置选择原则:

i位校验码从当前校验码位开始,每次连续校验i位后再跳过i位,然后再连续校验i位,再跳过i位,以此类推。确定每个校验码所校验的比特位:

P1校验码位校验的码字位为:第1位(也就是P1本身)、第3位、第5位、第7位、第9位、第11位、第13位、第15位,……。

P2校验码位校验的码字位为:第2位(也就是P2本身)、第3位,第6位、第7位,第10位、第11位,第14位、第15位,……。

P3校验码位校验的码字位为:第4位(也就是P4本身)、第5位、第6位、第7位,第12位、第13位、第14位、第15位,第20位、第21位、第22位、第23位,……。

Pn校验码位校验的码字位为:第2n-1位(也就是Pn本身)、第2n-1+1位、第2n-1+2位、第2n-1+3位、……、第2n-1位,第3×2n-1位、第3×2n-1+1、……、第2×2n-1位,第5×2n-1位、第5×2n-1+1位、第3×2n-1位,……、第7×2n-1位、第7×2n-1+1位、……、第4×2n-1位,……,第(2m-1) 2n-1位、……第m×2n-1

 

最后每组通过异或逻辑运算(与偶校验原理一样),使每组的运算结果为0,即可得出第i位校验码的值

实现校验和纠错

把以上这些校验码所校验的位分成对应的组,则在接收端的对各校验位再进行逻辑“异或运算”,如果采用的是偶校验,正常情况下均为0

示例如下:

计算机组成原理之汉明码_第2张图片


计算机组成原理之汉明码_第3张图片




你可能感兴趣的:(计算机)