文档库 最新最全的文档下载
当前位置:文档库 › 海明码的生成和校验

海明码的生成和校验

海明码的生成和校验
海明码的生成和校验

沈阳航空航天大学

课程设计报告

课程设计名称:计算机组成原理课程设计

课程设计题目:海明码生成与校验电路的设计

院(系):计算机学院

专业:计算机科学与技术(物联网方向)

班级:

学号:

姓名:

指导教师:

完成时间:2016年1月4日-2016年1月15日

沈阳航空航天大学课程设计报告

目录

第1章总体设计方案 (1)

1.1设计原理 (1)

1.2设计思路 (1)

1.3设计环境 (2)

第2章详细设计方案 (4)

2.1顶层方案图的设计与实现 (4)

2.1.1设计方案 (4)

2.1.2器件的选择与引脚锁定 (6)

2.2底层模块的设计与实现 (7)

2.2.1产生模块的设计与实现 (7)

2.2.2出错模块的设计与实现 (8)

2.2.3 纠正模块的设计与实现 (10)

2.3仿真调试 (11)

第3章编程下载与硬件测试 (14)

3.1编程下载 (14)

3.2硬件测试及结果分析 (14)

参考文献 (16)

附录(程序清单或电路原理图) (17)

第1章总体设计方案

1.1 设计原理

海明校验码是由理查得·海明(Richard Hanmming)于1950年提出的,它不仅具有检测错误的能力,同时还具有给出错误所在的准确位置的能力,这在通信领域有着很广泛的应用。

海明码是奇偶校验的一种扩充。它采用多位校验码的方式,在这些校验位中的每一位都对不同的信息数据位进行奇偶校验,通过合理地安排每个校验位对原始数据进行校验位组合,可以达到发现错误,纠正错误的目的。

(1)数据位和校验位的关系

假设数据位有m位,如何设定校验位k的长度才能满足纠正一位错误的要求呢?我们这里做一个简单的推导。k位的校验码可以有2k个值。如果能够满足:2k>=m + k+1,在理论上k个校验码就可以判断是哪一位(包括信息码和校验码)出现问题。

(2)海明码的编码规律

若海明码的最高位号为m,最低位号为1,即H m H m-1…H2H1,则海明码的编码规律通常是:

a.校验位与数据位之和为m,每个校验位P i在海明码中被分在2i-1的位置,其余各位为数据位,并按从低向高逐位依次排列的关系分配各数据位。

b.海明码的每一位H i(包含数据位和校验位本身)由多个校验位校验,其关系是被校验的每一位位号要等于校验它的各校验位的位号之和。这样安排的目的,是希望校验的结果能正确反映出出错位的位号。

1.2 设计思路

(一)海明码的生成:因为要求的是8位的二进制数据,所以此处的m为8,按照数据位和校验位的对应关系,k应为4,故海明码的总位数为12,可表示为:H12——H1,4个校验位P4~P1对应的海明码位号分别为:H8/H4/H2/H1,则有如下排列关系:D8D7D6D5P4D4D3D2P3D1P2P1

按照海明码的原理得出如下的表格:

P1=D1⊕D2⊕D4⊕D5⊕D7

P2=D1⊕D3⊕D4⊕D6⊕D7

P3=D2⊕D3⊕D4⊕D8

P4=D5⊕D6⊕D7⊕D8

(二)海明码的校验:

海明码校验函数(S函数)及校验过程 <偶校验>

S1=P1⊕D1⊕D2⊕D4⊕D5⊕D7

S2=P2⊕D1⊕D3⊕D4⊕D6⊕D7

S3=P3⊕D2⊕D3⊕D4⊕D8

S4=P4⊕D5⊕D6⊕D7⊕D8

1.3 设计环境

·硬件环境:伟福COP2000型计算机组成原理实验仪、XCV200实验板、微机;

·EDA环境:Xilinx foundation f3.1设计软件、COP2000仿真软件。

图1.1Xilinx foundation f3.1设计平台

第2章详细设计方案

2.1 顶层方案图的设计与实现

实现海明码的生成与校验逻辑功能,采用原理图设计输入方式完成,电路实现基于XCV200可编程逻辑芯片。完成原理图的设计后,把输入/输出信号安排到XCV200指定的引脚上去,实现芯片的引脚锁定。

2.1.1设计方案

顶层图形文件是由产生(如图2.1),出错(如图2.2)和纠正(如图2.3)三个模块元件组装而成的一个完整的设计实体组成。

图2.1 产生模块

图2.2 出错模块

图2.3 纠正模块

2.1.2器件的选择与引脚锁定

(1)器件的选择

由于硬件设计环境是基于伟福COP2000型计算机组成原理实验仪和XCV200实验板,故采用的目标芯片为Xlinx XCV200可编程逻辑芯片。

(2)引脚锁定

把顶层图形文件中的输入/输出信号安排到Xlinx XCV200芯片指定的引脚上去,实现芯片的引脚锁定。

2.2 底层模块的设计与实现

海明码生成与校验设计电路是由3个模块组成,其中产生模块是由8个输入端输入海明码的8位数据位,经异或门求得校验位P1,P2,P3,P4,由此输出12位海明码;出错模块是由三八译码器来改变输入数据的某一位,从而产生错误的海明码;纠正模块是对错误的数据进行纠正修改。

2.2.1产生模块的设计与实现

(1)元件结构

海明码产生模块,原理是通过输入的数据IN1~IN8按照公式:

P1=D1⊕D2⊕D4⊕D5⊕D7,

P2=D1⊕D3⊕D4⊕D6⊕D7,

P3=D2⊕D3⊕D4⊕D8,

P4=D5⊕D6⊕D7⊕D8,

生成了4位校验码P1/P2 /P3/P4,从而得出了12位海明码。

图2.4产生模块内部电路

(2)功能仿真

对产生模块进行功能仿真,验证其功能的正确性。

图2.5产生模块仿真

结果分析:输入IN1-IN8为10011001,输出O1-O12为101000101001,结果是正确的海明码。

2.2.2出错模块的设计与实现

(1)元件结构

本模块的原理是通过3线8线译码器的3进1出,输出一个1,与8位输入数据中的一位异或,使之发生错误,从而得出一组错误的数据。

图2.6出错模块内部电路

(2)功能仿真

对创建的出错元件进行功能仿真,验证其功能的正确性

图2.7出错模块仿真

结果分析:输入IN1-IN3为000,输入IN1-IN8为10011001,输出O1-O8为

100000101001,其中O1为出错位,产生了一位错误。

2.2.3纠正模块的设计与实现

(1)元件的内部结构

原理是通过公式:

S1=P1⊕D1⊕D2⊕D4⊕D5⊕D7,

S2=P2⊕D1⊕D3⊕D4⊕D6⊕D7,

S3=P3⊕D2⊕D3⊕D4⊕D8,

S4=P4⊕D5⊕D6⊕D7⊕D8,连成的电路对数据进行校验,判断数据是哪一位出错,并对出错的那一位与错误数据异或,从而得出正确的数据。

图2.8纠正模块内部电路

(2)功能仿真

对纠正模块进行功能仿真,验证其功能的正确性

图2.9纠正模块仿真

2.3 仿真调试

仿真调试是为了验证设计电路逻辑功能的正确性,输入8位二进制数据位生成12位海明码,中间经三八译码器来改变一位数据位,经校验电路修改,最后输出正确的8位二进制数据位。

(1)创建仿真信号

在进行仿真时,输入数据位用了上面的两组数据。

第一组数据,IN1~IN8为10011001,生成的海明码O1~O12为101000101001。

第二组数据,IN1~IN8为11001100,生成的海明码O1~O12为101110001100。

这两组数据又经三八译码器改变其中一位错的数据输入到纠正电路里,经纠正校验后输出原本的数据位,最终实现了海明码生成和校验功能。

(2)仿真结果

功能仿真结果如图2.10、图2.11所示,仿真数据结果如表2.3所示。对表中内容进行计算,可以看出功能仿真结果是正确的,进而说明此次电路设计成功。

表2.3:

图2.10 第一组数据功能仿真结果

图2.11 第二组数据功能仿真结果

第3章编程下载与硬件测试

3.1编程下载

利用Xilinx ISE的编程下载功能,下载编译我的工程,从而得到的*.bin文件,即可下载到XCV200实验板的XCV200可编程逻辑芯片中,完成编译下载。3.2 硬件测试及结果分析

利用XCV200实验板进行硬件功能测试。海明码数据位的输入数据通过XCV200实验板的输入开关实现,输出数据通过XCV200实验板的LED指示灯实现,其对应关系如表3.1所示。

表3.1XCV200实验板信号对应关系

输入数据,逐个测试输出结果,即用XCV200实验板的开关K0、K1输入数据,同时观察LEDA和LEDB的输出,得到如表3.2所示的硬件测试结果。

表3.2硬件测试结果

图3.1 cop2000仿真下载结果

结果分析:输入K1:1-K1:3为000,对应CHUCUO.IN3-CHUCUO.IN1,输入CHANSHENGIN.1-CHANSHENG.IN8为1001001,输出B7—A4为101000101001对应CHANSHENG.O1-CHANSHEN.O12。

参考文献

[1] 范延滨,微型计算机系统原理、接口与EDA设计技术(第三版).北京:北京

邮电大学出版社,2006

[2] 王爱英.计算机组成与结构(第4版)[M].北京:清华大学出版社,2006

[3] 唐朔飞,计算机组成原理(第二版).北京:高等教育出版社,2007

[4]周大海,计算机组成原理实验与课程设计教程.北京:北京航空航天大学出版社,2015

附录(程序清单或电路原理图)

总电路原理图

沈阳航空航天大学课程设计报告附录

海明码计算题

海明码计算习题 请写出每道题的计算过程 1:使用海明码进行纠错,7位码长(X7X6X5X4X3X2X1),其中4位数据,监督关系式为:C0 = x1+x3+x5+x7 C1 = x2+x3+x6+x7 C2 = x4+x5+x6+x7 如果接收到的码字为1000101,那么纠错后的码字是( 1010101 ) 解答: 1,1,0,1=1 0,1,0,1=0 0,0,0,1=1 第五位有错 2:已知海明码的监督关系式为: S2=a2+a3+a4+a6 S1=a1+a4+a5+a6 S0=a0+a3+a4+a5 接收端收到的码字为a6a5a4a3a2a1a0=1010100,问在最多一位错的情况下发送端发送的码字是什么?(写出推演过程)。 S2=1,0,1,1=1 S1=0,1,0,1=0 S0=0,0,1,0=1 故s2,s0公共的位但与S1不公共的位a3有错 发送端码字:1011100 3:已知:信息码为:"0010"。海明码的监督关系式为: S2=a2+a4+a5+a6 S1=a1+a3+a5+a6 S0=a0+a3+a4+a6 求:海明码码字。 解: 7 6 5 4 3 2 1 位数 0 0 1 0 信息位

1 0 1 校验位 a6 a5 a4 a3 a2 a1 a0 4:已知:海明码的监督关系式为: S2=a2+a4+a5+a6 S1=a1+a3+a5+a6 S0=a0+a3+a4+a6 接收码字为:"0011101" ( n=7 ) 求:发送端的信息码。 解: S2=1,1,0,0=0 S1=0,1,0,0=1 S0=1,1,1,0=1 故s1,s0公共的位但与S2不公共的位a3有错 发送端码字:0010101 5:在海明码编码方法中,若冗余位为3位,且与错码位置的对应关系为 S2S1S0 111 110 101 011 100 010 001 000 错码位置 a6 a5 a4 a3 a2 a1 a0 无错 则S1的监督关系式为( D )。 A.S1=a1+a3+a5+a6=1 B. S1=a2+a3+a4+a6=1 B.C. S1=a1+a3+a4+a5=1 D. S1=a1+a2+a5+a6=0 6:使用海明码进行前向纠错,如果冗余位为4位,那么信息位最多可以用到 11 位。2^4-4-1=11

汉明码编码实验报告

重庆工程学院 电子信息学院 实验报告 课程名称:_ 数据通信原理开课学期:__ 2015-2016/02_ 院(部): 电子信息学院开课实验室:实训楼512 学生姓名: 舒清清梁小凤专业班级: 1491003 学号: 149100308 149100305

重庆工程学院学生实验报告 课程名 称 数据通信原理实验项目名称汉明码编译实验 开课院系电子信息学院实验日期 2016年5月7 日 学生姓名舒清清 梁小凤 学号 149100308 149100305 专业班级网络工程三班 指导教 师 余方能实验成绩 教师评语: 教师签字:批改时间:

一、实验目的和要求 1、了解信道编码在通信系统中的重要性。 2、掌握汉明码编译码的原理。 3、掌握汉明码检错纠错原理。 4、理解编码码距的意义。 二、实验内容和原理 汉明码编码过程:数字终端的信号经过串并变换后,进行分组,分组后的数据再经过汉明码编码,数据由4bit变为7bit。 三、主要仪器设备 1、主控&信号源、6号、2号模块各一块 2、双踪示波器一台 3连接线若干

四、实验操作方法和步骤 1、关电,按表格所示进行连线 2、开电,设置主控菜单,选择【主菜单】→【通信原理】→【汉明码】。 (1)将2号模块的拨码开关S12#拨为10100000,拨码开关S22#、S32#、S42#均拨为00000000;(2)将6号模块的拨码开关S16#拨为0001,即编码方式为汉明码。开关S36#拨为0000,即无错模式。按下6号模块S2系统复位键。 3、此时系统初始状态为:2号模块提供32K编码输入数据,6号模块进行汉明编译码,无差错插入模式。 4、实验操作及波形观测。 (1)用示波器观测6号模块TH5处编码输出波形。 (2)设置2号模块拨码开关S1前四位,观测编码输出并填入下表中: 五、实验记录与处理(数据、图表、计算等) 校对输入0000,编码0000000 输入0001,编码0001011 输入0010,编码0010101 输入0011,编码0011110 输入0100,编码0100110 输入0101,编码0101101 输入0110,编码0110011输入0111,编码0111000

海明码和CRC校验的C语言实现

海明码和CRC校验的C语言实现 1.海明码 //code by zxf 2010.4.10 #include #include #include //N代表待编码数据的上限位数 #define N 100 int HmLength(int k);//计算海明码校验位位数 void InCode(char *data,char *c,int k,int r);//计算海明码每个校验位的数值 void main() { int k=0,r=0,dnum=0,cnum=0; char data[N]; char c[N]; clrscr(); printf("Now please input the data you want to Incode:"); for(k=0;k

实验四 汉明码系统

实验四汉明码系统 一、实验原理和电路说明 差错控制编码的基本作法是:在发送端被传输的信息序列上附加一些监督码元,这些多余的码元与信息之间以某种确定的规则建立校验关系。接收端按照既定的规则检验信息码元与监督码元之间的关系,一旦传输过程中发生差错,则信息码元与监督码元之间的校验关系将受到破坏,从而可以发现错误,乃至纠正错误。 通信原理综合实验系统中的纠错码系统采用汉明码(7,4)。所谓汉明码是能纠正单个错误的线性分组码。它有以下特点: 码长n=2m-1 最小码距d=3 信息码位k=2n-m-1 纠错能力t=1 监督码位r=n-k 这里m位≥2的正整数,给定m后,既可构造出具体的汉明码(n,k)。 汉明码的监督矩阵有n列m行,它的n列分别由除了全0之外的m位码组构成,每个码组只在某列中出现一次。系统中的监督矩阵如下图所示: 1110100 H=0111010 1101001 其相应的生成矩阵为: 1000101 0100111 G= 0010110 0001011 汉明译码的方法,可以采用计算校正子,然后确定错误图样并加以纠正的方法。 图2.4.1和图2.42给出汉明编码器和译码器电原理图。

a6 a5 a4 a3 a2 a1 a0 a a a a 图2.4.1汉明编码器电原理图 a a a a a a a3 图2.4.2汉明译码器电原理图 表2.4.1 (7,4)汉明编码输入数据与监督码元生成表 a6bit,其次是a5、a4……,最后输出a0位。 汉明编译码模块实验电路功能组成框图见图2.4.4和图2.3.5所示。 汉明编码模块实验电路工作原理描述如下: 1、输入数据:汉明编码输入数据可以来自ADPCM1模块的ADPCM码字,或来自同

海明码和CRC编码的图解和详细计算过程

一、CRC编码 1、已知多项式和原报文,求CRC编码,如:使用多项式G(x)=x^5 + x^4 + x +1,对报文10100110进行CRC编码,则编码后的报文是什么? 方法与步骤: 步骤1:对报文10100110,在末尾添加所给多项式的最高次阶个0,如本题为x^5,则添加5个0,变为:1010011000000。 步骤2:由多项式G(x)=x^5 + x^4 + x +1,得其阶数为1的二进制编码为:110011。 步骤3:步骤1中求得的1010011000000对步骤2中求得的110011进行模二除法,所得到的余数即为校验码,把校验码添加在原报文尾部即为所求的编码报文1010011011000,具体如下: 2.已知道接收到的CRC编码,求原编码或判断是否出错,如:已知G(x)=x^5 + x^4 + x +1,接收的为1010011011001,问是否出错? 步骤一:由多项式G(x)=x^5 + x^4 + x +1,得其阶数为1的二进制编码为:110011。 步骤二:用接收的报文1010011011001对步骤一的110011进行模二除法,看余数是否为0,如为0则正确,如不为0,则出错,计算余数为1,则出错。如下图: 二、海明码 1.求海明码,如:求1011海明码。 步骤一:求校验码位数r,公式为:2^r ≥r+k+1的最小r。题目中为2^3≥3+4+1,所以取r=3,即校验码为3位。

步骤二:画图,并把原码的位编号写成2的指数求和的方式,其中位编号长度为原码和校验码个数之和,从1开始。校验码插在2的阶码次方的位编号下,且阶小于r。如下: 原码的位编号写成2的指数求和: 7=2^2+2^1+2^0; 6=2^2+2^1; 5=2^2+2^0; 3=2^1+2^0; 步骤三:求校验位,即每个校验位的值为步骤二中“原码的位编号写成2的指数求和”式子中相应2的阶出现的位编号下原码的值异或。即: r0=I4异或I2异或I1=1; (2^0次出现在7,5,3位,其对应的值为I4,I2,I1) r1=I4异或I3异或I1=0; (2^1次出现在7,6,3位,其对应的值为I4,I3,I1) r2=I4异或I3异或I2=0; (2^0次出现在7,6,5位,其对应的值为I4,I3,I2) 把r0,r1,r2带入海明码,得所求的海明码为:1010101 2.已知海明码,求原码或判断是否出错并改正错位,如:信息位8位的海明码,接收110010100000时,判断是否出错,并求出发送端信息位。 步骤一:求校验码位数r,公式为:2^r ≥r+k+1的最小r。题目中为2^4≥4+8+1,所以取k=4,即校验码为4位。 步骤二:根据作图,求得信息位编码和发过来的校验码记为r,并由原编码从新计算出新的校验码与发来的校验码r进行异或运算,具体如下:

汉明码原理和校验

汉明码编码原理和校验方法 当计算机存储或移动数据时,可能会产生数据位错误,这时可以利用汉明码来检测并纠错,简单的说,汉明码是一个错误 校验码码集,由Bell实验室的R.W.Hamming发明,因此定名 为汉明码。用于数据传送,能检测所有一位和双位差错并纠正 所有一位差错的二进制代码。汉明码的编码原理是:在n位有 效信息位中增加k为检验码,形成一个n+k位的编码,然后把 编码中的每一位分配到k个奇偶校验组中。每一组只包含以为 校验码,组内按照奇偶校验码的规则求出该组的校验位。 在汉明校验码中,有效信息位的位数n与校验位数K满足下列关系: 2^K-1>=n+k. 1. 校验码的编码方法 (1)确定有效信息位与校验码在编码中的位置 设最终形成的n+k位汉明校验码为Hn+k….H2H1,各位的位号按照从右到左的顺序依次为1,2,…,n+k,则每一个检验码Pi所在的位号是2^(i-1),i=1,2,…,k。有效信息位按照原排列顺序依次安排在其他位置上。 假如有七位有效信息位X7X6X5X4X3X2X1=1001101,n=7,可以得出k=4,这样得到的汉明码就是11位,四个校验码P4P3P2P1对应的位号分别是8,4,2,1(即2^3,2^2,2^1,2^0). 11位汉明码的编码顺序为:

位号 11 10 9 8 7 6 5 4 3 2 1 编码 X7 X6 X5 P4 X4 X3 X2 P3 X1 P2 P1 (2)将n+k位汉明码中的每一位分到k个奇偶组中。 对于编码中的任何一位Hm依次从右向左的顺序查看其Mk-1…M1M0的 每一位Mj(j=0,1,…,k-1),如果该位为“1”,则将Hm分到第j组.(如:位号是11可表示成二进制1011,第零位一位三位都是1,所以此编码应排在第0组第1组第3组) 把11~1写成4位二进制的形式,分组结果如下: 位号 11 10 9 8 7 6 5 4 3 2 1 二进制1011 1010 1001 1000 0111 0110 0101 0100 0011 0010 0001 编码 X7 X6 X5 P4 X4 X3 X2 P3 X1 P2 P1 第0组X7 X5 X4 X2 X1 P1 第1组X7 X6 X4 X3 X1 P2 第2组 X4 X3 X2 P3 第3组X7 X6 X5 P4 (3)根据分组结果,每一组按照奇或偶校验求出校验位,形成汉明校验码。若采用奇数校验,则每一组中“1”的个数为奇数,反之为偶数。(X7X6X5X4X3X2X1=1001101) 若用奇校验,则 _________________ P1=X7⊕X5⊕X4⊕X2⊕X1=X7⊙X5⊙X4⊙X2⊙X1=0; 同理可得 P2=1 ; P3=1 ; P4=0 将这些校验码与有效信息位一起排列(分别插入到1,2,4,8位),可以

海明码精典例题

海明码精典例题(重点理解) 海明码的生成与接收 方法一:(按教科书) 1)海明码的生成。 例1.已知:信息码为:"0010"。海明码的监督关系式为: S2=a2+a4+a5+a6 S1=a1+a3+a5+a6 S0=a0+a3+a4+a6 求:海明码码字。 解:1)由监督关系式知冗余码为a2a1a0。 2)冗余码与信息码合成的海明码是:"0010a2a1a0"。 设S2=S1=S0=0,由监督关系式得: a2=a4+a5+a6=1 a1=a3+a5+a6=0 a0=a3+a4+a6=1 因此,海明码码字为:"0010101" 2)海明码的接收。 例2.已知:海明码的监督关系式为: S2=a2+a4+a5+a6 S1=a1+a3+a5+a6 S0=a0+a3+a4+a6 接收码字为:"0011101"(n=7) 求:发送端的信息码。 解:1)由海明码的监督关系式计算得S2S1S0=011。 2)由监督关系式可构造出下面错码位置关系表: S2S1S0 000 001 010 100 011 101 110 111 错码位置无错a0 a1 a2 a3 a4 a5 a6 3)由S2S1S0=011查表得知错码位置是a3。 4)纠错--对码字的a3位取反得正确码字:"0 0 1 0 1 0 1" 5)把冗余码a2a1a0删除得发送端的信息码:"0010" 方法二: 1)海明码的生成(顺序生成法)。 例3.已知:信息码为:" 1 1 0 0 1 1 0 0 " (k=8) 求:海明码码字。 解:1)把冗余码A、B、C、…,顺序插入信息码中,得海明码

码字:" A B 1 C 1 0 0 D 1 1 0 0 " 码位: 1 2 3 4 5 6 7 8 9 10 11 12 其中A,B,C,D分别插于2k位(k=0,1,2,3)。码位分别为1,2,4,8。 2)冗余码A,B,C,D的线性码位是:(相当于监督关系式) A->1,3,5,7,9,11; B->2,3,6,7,10,11; C->4,5,6,7,12;(注5=4+1;6=4+2;7=4+2+1;12=8+4) D->8,9,10,11,12。 3)把线性码位的值的偶校验作为冗余码的值(设冗余码初值为0): A=∑(0,1,1,0,1,0)=1 B=∑(0,1,0,0,1,0)=0 C=∑(0,1,0,0,0)=1 D=∑(0,1,1,0,0)=0 4)海明码为:"1 0 1 1 1 0 0 0 1 1 0 0" 2)海明码的接收。 例4.已知:接收的码字为:"1 0 0 1 1 0 0 0 1 1 0 0"(k=8) 求:发送端的信息码。 解:1)设错误累加器(err)初值=0 2)求出冗余码的偶校验和,并按码位累加到err中: A=∑(1,0,1,0,1,0)=1err=err+20=1 B=∑(0,0,0,0,1,0)=1err=err+21=3 C=∑(1,1,0,0,0)=0 err=err+0 =3 D=∑(0,1,1,0,0)=0 err=err+0 =3 由err≠0可知接收码字有错, 3)码字的错误位置就是错误累加器(err)的值3。 4)纠错--对码字的第3位值取反得正确码字: "1 0 1 1 1 0 0 0 1 1 0 0" 5)把位于2k位的冗余码删除得信息码:"1 1 0 0 1 1 0 0"

74汉明码编码原理

74汉明码编码 1. 线性分组码是一类重要的纠错码,应用很广泛。在(n ,k )分组码中,若 冗余 位是按线性关系模2相加而得到的,则称其为线性分组码。 现在以(7,4)分组码为例来说明线性分组码的特点。 其主要参数如下: 码长:21m n =- 信息位:21m k m =-- 校验位:m n k =-,且3m ≥ 最小距离:min 03d d == 其生成矩阵G (前四位为信息位,后三位为冗余位)如下: 系统码可分为消息部分和冗余部分两部分,根据生成矩阵,输出码字可按下 式计 算: 所以有 信息位 冗余位 由以上关系可以得到(7,4)汉明码的全部码字如下所示。 表2 (7,4)汉明码的全部码字 序号 信息码元 冗余元 序号 信息码元 冗余元 0 0000 000 8 1000 111 1 0001 011 9 1001 100 2 0010 101 10 1010 010 3 0011 110 11 1011 001 4 0100 110 12 1100 001 5 0101 101 13 1101 010 6 0110 011 14 1110 100 7 0111 000 15 1111 111 1000110010001100101110001101G ? ? ?? ?? =?? ???? 3210321010001100100011(,,,)(,,,)00101110001101b a a a a G a a a a ?? ?? ??=?=??? ???? 635241 30 b a b a b a b a ====2310 1321 0210b a a a b a a a b a a a =⊕ ⊕=⊕⊕=⊕⊕

海明码的基本原理(精)

一、海明码的概念 海明码是一种可以纠正一位差错的编码。它是利用在信息位为k位,增加r位冗余位,构成一个n=k+r位的码字,然后用r个监督关系式产生的r个校正因子来区分无错和在码字中的n个不同位置的一位错。它必需满 足以下关系式: 2^r>=n+1 或 2^r>=k+r+1 海明码的编码效率为: R=k/(k+r 式中 k为信息位位数 r为增加冗余位位数 二、海明码的原理 海明码是一种多重奇偶检错系统。它将信息用逻辑形式编码,以便能够检错和纠错。用在海明码中的全部传输码字是由原来的信息和附加的奇偶校验位组成的。每一个这种奇偶位被编在传输码字的特定位置上。这个系统对于错误的数位无论是原有信息位中的,还是附加校验位中的都能指示出来 在数据中间加入几个校验码,将玛距均匀拉大,将数据的每个二进制位分配在几个奇偶校验组里,当某一位出 错,会引起几个校验位的值发生变化。 海明不等式: 校验码个数为K,2的K次幂个信息,1个信息用来指出“没有错误”,其余2K-1个指出错误发生在那一位,但也可能是校验位错误,故有N<=2的K次-1-K能被校验。 海明码的编码规则: 1.每个校验位Ri被分配在海明码的第2的i次的位置上, 2.海明玛的每一位(Hi是由多个/1个校验值进行校验的,被校验玛的 位置玛是所有校验这位的校验位位置玛之和。 一个例题: 4个数据位d0,d1,d2,d3, 3个校验位r0,r1,r2,对应的位置为: d3 d2 d1 r2 d0 r1 r0 ======b7 b6 b5 b4 b3 b2 b1 校验位的取值,就是他所能校验的数据位的异或 b1为b3,b5,b7的异或,b2为b3,b6,b7 b4为b5,b6,b7 海明玛传送到接受方后,将上三式的右边(b1,b2,b4的逻辑表达式分别 异或上左边的值就得到了校验方程,如果上题采用偶校验 G1=b1 b3 b5 b7的异或 G2=b2 b3 b6 b7的异或 G3=b4 b5 b6 b7的异或 若G1G2G3为001是第四位错 若为011是第六位错

汉明码计算及其纠错原理详解

汉明码计算及其纠错原理详解 当计算机存储或移动数据时,可能会产生数据位错误,这时可以利用汉明码来检测并纠错,简单的说,汉明码是一个错误校验码码集,由Bell 实验室的R.W.Hamming 发明,因此定名为汉明码。 汉明码(Hamming Code),是在电信领域的一种线性调试码,以发明者理查德·卫斯里·汉明的名字命名。汉明码在传输的消息流中插入验证码,以侦测并更正单一比特错误。由于汉明编码简单,它们被广泛应用于内存(RAM )。其SECDED (single error correction,double error detection)版本另外加入一检测比特,可以侦测两个或以下同时发生的比特错误,并能够更正单一比特的错误。因此,当发送端与接收端的比特样式的汉明距离(Hamming distance)小于或等于1时(仅有1 bit发生错误),可实现可靠的通信。相对的,简单的奇偶检验码除了不能纠正错误之外,也只能侦测出奇数个的错误。 在数学方面,汉明码是一种二元线性码。对于每一个整数,存在一个编码,带有个奇偶校验位个数据位。该奇偶检验矩阵的汉明码是通过列出所有米栏的长度是两两独立。 汉明码的定义和汉明码不等式:设:m=数据位数,k=校验位数为,n=总编码位数=m+k,有Hamming不等式: a)总数据长度为N,如果每一位数据是否错误都要记录,就需要N位来存储。 b)每个校验位都可以表示:对或错;校验位共K位,共可表示2k种状态 c)总编码长度为N,所以包含某一位错和全对共N+1种状态。 d)所以2k≧N+1 e)数据表见下 无法实现2位或2位以上的纠错,Hamming码只能实现一位纠错。 以典型的4位数据编码为例,演示汉明码的工作 D8=1、D4=1、D2=0、D1=1, P1 =1,P2=0、P3=0。 汉明码处理的结果就是1010101 假设:D8出错,P3’P2’P1’=011=十进制的3,即表示编码后第三位出错,对照存储

海明码及码距

海明码及码距 一、码距 一个编码系统中任意两个合法编码(码字)之间不同的二进数位(bit)数叫这两个码字的码距,而整个编码系统中任意两个码字的的最小距离就是该编码系统的码距。 如图1所示的一个编码系统,用三个bit来表示八个不同信息中。在这个系统中,两个码字之间不同的bit数从1到3不等,但最小值为1,故这个系统的码距为1。如果任何码字中一位或多位被颠倒了,结果这个码字就不能与其它有效信息区分开。例如,如果传送信息001,而被误收为011,因011仍是表中的合法码字,接收机仍将认为011是正确的信息。 然而,如果用四个二进数字来编8个码字,那么在码字间的最小距离可以增加到2,如图2的表中所示。 信息序号 二进码字 a2 a1 a0 0 0 0 0 1 0 0 1 2 0 1 0 3 0 1 1 4 1 0 0 5 1 0 1 6 1 1 0 7 1 1 1 图1 信息序号 二进码字 a3 a2 a1 a0 0 0 0 0 0 1 1 0 0 1 2 1 0 1 0 3 0 0 1 1 4 1 1 0 0 5 0 1 0 1 6 0 1 1 0 7 1 1 1 1 图2

注意,图8-2的8个码字相互间最少有两bit的差异。因此,如果任何信息的一个数位被颠倒,就成为一个不用的码字,接收机能检查出来。例如信息是1001,误收为1011,接收机知道发生了一个差错,因为1011不是一个码字(表中没有)。然而,差错不能被纠正。假定只有一个数位是错的,正确码字可以是1001,1111,0011或1010。接收者不能确定原来到底是这4个码字中的那一个。也可看到,在这个系统中,偶数个(2或4)差错也无法发现。 为了使一个系统能检查和纠正一个差错,码间最小距离必须至少是“3”。最小距离为3时,或能纠正一个错,或能检二个错,但不能同时纠一个错和检二个错。编码信息纠错和检错能力的进一步提高需要进一步增加码字间的最小距离。图8-3的表概括了最小距离为1至7的码的纠错和检错能力。 码距 码能力 检错纠错 1 0 0 2 1 0 3 2 或1 4 2 加1 5 2 加2 6 3 加2 7 3 加3 图3 码距越大,纠错能力越强,但数据冗余也越大,即编码效率低了。所以,选择码距要取决于特定系统的参数。数字系统的设计者必须考虑信息发生差错的概率和该系统能容许的最小差错率等因素。要有专门的研究来解决这些问题。 二、奇偶校验 奇偶校验码是一种增加二进制传输系统最小距离的简单和广泛采用的方法。例如,单个的奇偶校验将使码的最小距离由一增加到二。 一个二进制码字,如果它的码元有奇数个1,就称为具有奇性。例如,码字“10110101”有五个1,因此,这个码字具有奇性。同样,偶性码字具有偶数个1。注意奇性检测等效于所有码元的模二加,并能够由所有码元的异或运算来确定。对于一个n位字,奇性由下式给出:

海明码的知识

编辑词条海明码 1.海明码的概念 海明码是一种可以纠正一位差错的编码。它是利用在信息位为k位,增加r位冗余位,构成一个n=k+r位的码字,然后用r个监督关系式产生的r个校正因子来区分无错和在码字中的n个不同位置的一位错。它必需满足以下关系式: 2^r>=n+1 或 2^r>=k+r+1 海明码的编码效率为: R=k/(k+r) 式中 k为信息位位数 r为增加冗余位位数 2.海明码的生成与接收 特注:以下的+均代表异或 方法一: 1)海明码的生成。 例1.已知:信息码为:"0010"。海明码的监督关系式为: S2=a2+a4+a5+a6 S1=a1+a3+a5+a6 S0=a0+a3+a4+a6 求:海明码码字。 解:1)由监督关系式知冗余码为a2a1a0。 2)冗余码与信息码合成的海明码是:"0010a2a1a0"。 设S2=S1=S0=0,由监督关系式得: 异或运算: a2=a4+a5+a6=1 a1=a3+a5+a6=0 a0=a3+a4+a6=1 因此,海明码码字为:"0010101" 2)海明码的接收。 例2.已知:海明码的监督关系式为: S2=a2+a4+a5+a6 S1=a1+a3+a5+a6 S0=a0+a3+a4+a6 接收码字为:"0011101"(n=7) 求:发送端的信息码。 解:1)由海明码的监督关系式计算得S2S1S0=011。 2)由监督关系式可构造出下面错码位置关系表: S2S1S0 000 001 010 100 011 101 110

111 错码位置 无错 a0 a1 a2 a3 a4 a5 a6 3)由S2S1S0=011查表得知错码位置是a3。 4)纠错--对码字的a3位取反得正确码字:"0 0 1 0 1 0 1" 5)把冗余码a2a1a0删除得发送端的信息码:"0010" 方法二:(不用查表,方便编程) 1)海明码的生成(顺序生成法)。 例3.已知:信息码为:" 1 1 0 0 1 1 0 0 " (k=8) 求:海明码码字。 解:1)把冗余码A、B、C、…,顺序插入信息码中,得海明码 码字:" A B 1 C 1 0 0 D 1 1 0 0 " 码位: 1 2 3 4 5 6 7 8 9 10 11 12 其中A,B,C,D分别插于2的k次方位(k=0,1,2,3)。码位分别为1,2,4,8。 2)冗余码A,B,C,D的线性码位是:(相当于监督关系式) A->1,3,5,7,9,11; B->2,3,6,7,10,11; C->4,5,6,7,12;(注 5=4+1;6=4+2;7=4+2+1;12=8+4) D->8,9,10,11,12。 3)把线性码位的值的偶校验作为冗余码的值(设冗余码初值为0): A=∑(0,1,1,0,1,0)=1 B=∑(0,1,0,0,1,0)=0 C=∑(0,1,0,0,0) =1 D=∑(0,1,1,0,0) =0 4)海明码为:"1 0 1 1 1 0 0 0 1 1 0 0" 2)海明码的接收。 例4.已知:接收的码字为:"1 0 0 1 1 0 0 0 1 1 0 0"(k=8) 求:发送端的信息码。 解:1)设错误累加器(err)初值=0 2)求出冗余码的偶校验和,并按码位累加到err中: A=∑(1,0,1,0,1,0)=1 err=err+20=1 B=∑(0,0,0,0,1,0)=1 err=err+21=3 C=∑(1,1,0,0,0) =0 err=err+0 =3 D=∑(0,1,1,0,0) =0 err=err+0 =3 由err≠0可知接收码字有错, 3)码字的错误位置就是错误累加器(err)的值3。 4)纠错--对码字的第3位值取反得正确码字:

汉明码原理和校验

汉明码编码原理和校验方法 可以利用汉明码来检测并纠错,简单的说,汉明码是一个错误 校验码码集,由Bell实验室的R.W.Hamming发明,因此定名 为汉明码。用于数据传送,能检测所有一位和双位差错并纠正 所有一位差错的二进制代码。汉明码的编码原理是:在n位有 效信息位中增加k为检验码,形成一个n+k位的编码,然后把 编码中的每一位分配到k个奇偶校验组中。每一组只包含以为 校验码,组内按照奇偶校验码的规则求出该组的校验位。 在汉明校验码中,有效信息位的位数n与校验位数K满足下列关系: 2^K-1>=n+k. 1. 校验码的编码方法 (1)确定有效信息位与校验码在编码中的位置 设最终形成的n+k位汉明校验码为Hn+k….H2H1,各位的位号按照从右到左的顺序依次为1,2,…,n+k,则每一个检验码Pi所在的位号是2^(i-1),i=1,2,…,k。有效信息位按照原排列顺序依次安排在其他位置上。 假如有七位有效信息位X7X6X5X4X3X2X1=1001101,n=7,可以得出k=4,这样得到的汉明码就是11位,四个校验码P4P3P2P1对应的位号分别是8,4,2,1(即2^3,2^2,2^1,2^0). 11位汉明码的编码顺序为:

位号 11 10 9 8 7 6 5 4 3 2 1 编码 X7 X6 X5 P4 X4 X3 X2 P3 X1 P2 P1 (2)将n+k位汉明码中的每一位分到k个奇偶组中。 对于编码中的任何一位Hm依次从右向左的顺序查看其Mk-1…M1M0的 每一位Mj(j=0,1,…,k-1),如果该位为“1”,则将Hm分到第j组.(如:位号是11可表示成二进制1011,第零位一位三位都是1,所以此编码应排在第0组第1组第3组) 把11~1写成4位二进制的形式,分组结果如下: 位号 11 10 9 8 7 6 5 4 3 2 1 二进制1011 1010 1001 1000 0111 0110 0101 0100 0011 0010 0001 编码 X7 X6 X5 P4 X4 X3 X2 P3 X1 P2 P1 第0组X7 X5 X4 X2 X1 P1 第1组X7 X6 X4 X3 X1 P2 第2组 X4 X3 X2 P3 第3组X7 X6 X5 P4 (3)根据分组结果,每一组按照奇或偶校验求出校验位,形成汉明校验码。若采用奇数校验,则每一组中“1”的个数为奇数,反之为偶数。(X7X6X5X4X3X2X1=1001101) 若用奇校验,则 _________________ P1=X7⊕X5⊕X4⊕X2⊕X1=X7⊙X5⊙X4⊙X2⊙X1=0; 同理可得 P2=1 ; P3=1 ; P4=0 将这些校验码与有效信息位一起排列(分别插入到1,2,4,8位),可以

海明码生成与校验电路的设计

沈阳航空航天大学课程设计报告 目录 第1章总体设计方案 (1) 1.1设计原理 (1) 1.2设计思路 (1) 1.3设计环境 (3) 第2章详细设计方案 (5) 2.1顶层方案图的设计与实现 (5) 2.1.1创建顶层图形设计文件 (5) 2.1.2器件的选择与引脚锁定 (5) 2.1.3编译、综合、适配 (7) 2.2功能模块的设计与实现 (7) 2.2.1 取补模块的设计与实现 (7) 2.2.2选择器模块的设计与实现 (9) 2.2.3 乘数补码移位寄存器模块的设计与实现 (12) 2.2.4 部分积移位寄存器模块的设计与实现 (14) 2.2.5加法器模块的设计与实现 (16) 2.3仿真调试 (16) 第3章编程下载与硬件测试 (19) 3.1编程下载 (19) 3.2硬件测试及结果分析 (19) 参考文献 (21) 附录(电路原理图) (22)

第1章总体设计方案 1.1 设计原理 海明校验码是由理查得·海明(Richard Hanmming)于1950年提出的,它不仅具有检测错误的能力,同时还具有给出错误所在的准确位置的能力,这在通信领域有着很广泛的应用。 海明校验码是在数据中加入几个校验位,并把数据的每一个二进制位分配在几个奇偶校验组中。当某一位出错后,就会引起有关的几个校验组的值发生变化,这不但可以发现出错,还能指出是哪一位出错,为自动纠错提供了证据。海明码能检测出2位错误,并能纠正1位错误。 (1)数据位和校验位的关系 假设校验位的个数为r,则它能表示2r个信息,用其中的一个信息指出“没有错误”,其余的2r-1个信息指出错误发生在哪一位。然而错误也可能发生在校验位,因此只有k=2r-1-r个信息能用于纠正被传送数据的位数,也就是说要满足关系:2r>=k+r+1 (发现一位错) 2r-1>=k+r (发现与自动校正一位错,并发现两位错)数据位与校验位的对应关系 K值最小的r值 1~4 5~11 12~26 27~57 58~120 4 5 6 7 8 (2)海明码的编码规律 若海明码的最高位号为m,最低位号为1,即H m H m-1…H2H1,则海明码的编码规律通常是: a.校验位与数据位之和为m,每个校验位P i在海明码中被分在2i-1的位置,其余各位为数据位,并按从低向高逐位依次排列的关系分配各数据位。 b.海明码的每一位H i(包含数据位和校验位本身)由多个校验位校验,其关系是被校验的每一位位号要等于校验它的各校验位的位号之和。这样安排的目的,

海明码的生成和校验

航空航天大学 课程设计报告 课程设计名称:计算机组成原理课程设计 课程设计题目:海明码生成与校验电路的设计 院(系):计算机学院 专业:计算机科学与技术(物联网方向)班级: 学号: 姓名: 指导教师: 完成时间:2016年1月4日-2016年1月15日

目录 第1章总体设计方案 (1) 1.1设计原理 (1) 1.2设计思路 (2) 1.3设计环境 (3) 第2章详细设计方案 (5) 2.1顶层方案图的设计与实现 (5) 2.1.1设计方案 (5) 2.1.2器件的选择与引脚锁定 (7) 2.2底层模块的设计与实现 (8) 2.2.1产生模块的设计与实现 (8) 2.2.2出错模块的设计与实现 (10) 2.2.3 纠正模块的设计与实现 (11) 2.3仿真调试 (13) 第3章编程下载与硬件测试 (15) 3.1编程下载 (15) 3.2硬件测试及结果分析 (15) 参考文献 (17)

附录(程序清单或电路原理图) (18)

第1章总体设计方案 1.1 设计原理 海明校验码是由理查得·海明(Richard Hanmming)于1950年提出的,它不仅具有检测错误的能力,同时还具有给出错误所在的准确位置的能力,这在通信领域有着很广泛的应用。 海明码是奇偶校验的一种扩充。它采用多位校验码的方式,在这些校验位中的每一位都对不同的信息数据位进行奇偶校验,通过合理地安排每个校验位对原始数据进行校验位组合,可以达到发现错误,纠正错误的目的。 (1)数据位和校验位的关系 假设数据位有m位,如何设定校验位k的长度才能满足纠正一位错误的要求呢?我们这里做一个简单的推导。k位的校验码可以有2k个值。如果能够满足:2k>=m + k+1,在理论上k个校验码就可以判断是哪一位(包括信息码和校验码)出现问题。 (2)海明码的编码规律 若海明码的最高位号为m,最低位号为1,即H m H m-1…H2H1,则海明码的编码规律通常是: a.校验位与数据位之和为m,每个校验位P i在海明码中被分在2i-1的位置,其余各位为数据位,并按从低向高逐位依次排列的关系分配各数据位。 b.海明码的每一位H i(包含数据位和校验位本身)由多个校验位校验,其关系是被校验的每一位位号要等于校验它的各校验位的位号之和。这样安排的目的,

海明校验码的原理详解

海明校验码的原理详解 2006年12月27日星期三 10:57 海明码是一种多重(复式)奇偶检错系统。它将信息用逻辑形式编码,以便能够检错和纠错。用在海明码中的全部传输码字是由原来的信息和附加的奇偶校验位组成的。每一个这种奇偶位被编在传输码字的特定位置上。实现得合适时,这个系统对于错误的数位无论是原有信息位中的,还是附加校验位中的都能把它分离出来。 推导并使用长度为m位的码字的海明码,所需步骤如下: 1、确定最小的校验位数k,将它们记成D1、D 2、…、Dk,每个校验位符合不同的奇偶测试规定。 2、原有信息和k个校验位一起编成长为m+k位的新码字。选择k校验位(0或1)以满足必要的奇偶条件。 3、对所接收的信息作所需的k个奇偶检查。 4、如果所有的奇偶检查结果均为正确的,则认为信息无错误。 如果发现有一个或多个错了,则错误的位由这些检查的结果来唯一地确定。 校验位数的位数 推求海明码时的一项基本考虑是确定所需最少的校验位数k。考虑长度为m位的信息,若附加了k个校验位,则所发送的总长度为m+k。在接收器中要进行k个奇偶检查,每个检查结果或是真或是伪。这个奇偶检查的结果可以表示成一个k位的二进字,它可以确定最多2k种不同状态。这些状态中必有一个其所有奇偶测试试都是真的,它便是判定信息正确的条件。于是剩下的(2k-1)种状态,可以用来判定误码的位置。于是导出下一关系: 2k-1≥m+k 码字格式 从理论上讲,校验位可放在任何位置,但习惯上校验位被安排在1、2、4、8、…的位置上。 图5列出了m=4,k=3时,信息位和校验位的分布情况。 图5 海明码中校验位和信息位的定位 校验位的确定 下面为我增加,意在提出编码方法以助理解(但编码是否主要标准不可知) 每行的值等于数值为1的各位码相异或。 如m=4,k=3.数据位前三行,校验位为后三行。即 A=p1⊕D1⊕D3⊕D4=0 得P1=D1⊕D3⊕D4 B=P2⊕D2⊕D3⊕D4=0 得P2=D2⊕D3⊕D4

(7,4)汉明码编译码程序说明

(7,4)汉明码编译码原理程序说明书 1、线性分组码 假设信源输出为一系列二进制数字0和1.在分组码中,这些二进制信息序列分成固定 长度的消息分组(message blocks )。每个消息分组记为u ,由k 个信息位组成。因此共有2k 种不同的消息。编码器按照一定的规则将输入的消息u 转换为二进制n 维向量v ,这里n>k 。 此n 维向量v 就叫做消息u 的码字(codeword )或码向量(code vector )。因此,对应于2 k 种不同的消息,也有2k 种码字。这2k 个码字的集合就叫一个分组码(block code )。 一个长度为n ,有2k 个码字的分组码,当且仅当其2k 个码字构成域GF (2)上所有n 维向量空间的一个k 维子空间时被称为线性(linear )(n ,k )码。 对于线性分组码,希望它具有相应的系统结构(systematic structure ),其码字可分 为消息部分和冗余校验部分两个部分。消息部分由k 个未经改变的原始信息位构成,冗余校 验部分则是n-k 个奇偶校验位(parity-check )位,这些位是信息位的线性和(linear sums )。 具有这样的结构的线性分组码被称为线性系统分组码(linear systematic block code )。 本实验以(7,4)汉明码的编译码来具体说明线性系统分组码的特性。 其主要参数如下: 码长:21m n =- 信息位:21m k m =-- 校验位:m n k =-,且3m ≥ 最小距离: min 03d d == 由于一个(n ,k )的线性码C 是所有二进制n 维向量组成的向量空间n V 的一个k 维子 空间,则可以找到k 个线性独立的码字,0,1,1k g g g -…… ,使得C 中的每个码字v 都是这k 个码字的一种线性组合。 (7,4)汉明码的生成矩阵如下,前三位为冗余校验部分,后四位为消息部分。 0123 1 1 0 1 0 0 00 1 1 0 1 0 01 1 1 0 0 1 01 0 1 0 0 0 1g g G g g ????????????==??????????? ????? 如果()0123u u u u u =是待编码的消息序列,则相应的码字可如下给出:

海明码的生成和校验

沈阳航空航天大学 课程设计报告 课程设计名称:计算机组成原理课程设计 课程设计题目:海明码生成与校验电路的设计 院(系):计算机学院 专业:计算机科学与技术(物联网方向) 班级: 学号: 姓名: 指导教师: 完成时间:2016年1月4日-2016年1月15日

沈阳航空航天大学课程设计报告 目录 第1章总体设计方案 (1) 1.1设计原理 (1) 1.2设计思路 (1) 1.3设计环境 (2) 第2章详细设计方案 (4) 2.1顶层方案图的设计与实现 (4) 2.1.1设计方案 (4) 2.1.2器件的选择与引脚锁定 (6) 2.2底层模块的设计与实现 (7) 2.2.1产生模块的设计与实现 (7) 2.2.2出错模块的设计与实现 (8) 2.2.3 纠正模块的设计与实现 (10) 2.3仿真调试 (11) 第3章编程下载与硬件测试 (14) 3.1编程下载 (14) 3.2硬件测试及结果分析 (14) 参考文献 (16) 附录(程序清单或电路原理图) (17)

第1章总体设计方案 1.1 设计原理 海明校验码是由理查得·海明(Richard Hanmming)于1950年提出的,它不仅具有检测错误的能力,同时还具有给出错误所在的准确位置的能力,这在通信领域有着很广泛的应用。 海明码是奇偶校验的一种扩充。它采用多位校验码的方式,在这些校验位中的每一位都对不同的信息数据位进行奇偶校验,通过合理地安排每个校验位对原始数据进行校验位组合,可以达到发现错误,纠正错误的目的。 (1)数据位和校验位的关系 假设数据位有m位,如何设定校验位k的长度才能满足纠正一位错误的要求呢?我们这里做一个简单的推导。k位的校验码可以有2k个值。如果能够满足:2k>=m + k+1,在理论上k个校验码就可以判断是哪一位(包括信息码和校验码)出现问题。 (2)海明码的编码规律 若海明码的最高位号为m,最低位号为1,即H m H m-1…H2H1,则海明码的编码规律通常是: a.校验位与数据位之和为m,每个校验位P i在海明码中被分在2i-1的位置,其余各位为数据位,并按从低向高逐位依次排列的关系分配各数据位。 b.海明码的每一位H i(包含数据位和校验位本身)由多个校验位校验,其关系是被校验的每一位位号要等于校验它的各校验位的位号之和。这样安排的目的,是希望校验的结果能正确反映出出错位的位号。 1.2 设计思路 (一)海明码的生成:因为要求的是8位的二进制数据,所以此处的m为8,按照数据位和校验位的对应关系,k应为4,故海明码的总位数为12,可表示为:H12——H1,4个校验位P4~P1对应的海明码位号分别为:H8/H4/H2/H1,则有如下排列关系:D8D7D6D5P4D4D3D2P3D1P2P1

相关文档