当前位置:文档之家› 海明码生成与校验电路设计与实现

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

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

沈阳航空航天大学

课程设计报告

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

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

院(系):

专业:

班级:

学号:

姓名:

指导教师:

完成日期: 2016年1月14日

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

目录

第1章总体设计方案 ............................................................................................. - 1 -1.1设计原理.. (1)

1.2设计思路............................................................................. 错误!未定义书签。

1.3设计环境............................................................................. 错误!未定义书签。第2章详细设计方案 .. (3)

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

2.2功能模块的设计与实现 (4)

2.2.1海明码SHENGCHENG模块的设计与实现 (4)

2.2.2海明码ERROR模块的设计与实现 (6)

2.2.3海明码JIAOYAN模块的设计与实现 (8)

3.1编程下载 ............................................................................ 错误!未定义书签。

3.2硬件测试及结果分析......................................................... 错误!未定义书签。参考文献 (15)

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

第1章总体设计方案

1.1 设计原理

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

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

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

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

(2)海明码的编码规律

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

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

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

1.2 设计思路

每个字节由8个二进制位组成,此处的k为8,按照数据位和校验位的对应关系,r应为5,由于总校验位只是检测两位出错还是一位出错,因此设计时不必考虑它的值,设r为4,故海明码的总位数为12,可表示为:H12H11…H3H2H1,4个校验位P4~P1对应的海明码位号分别为:H8,H4,H2,H1。其余为数据位Di,则有如下排列关系:D8D7D6D5P4D4D3D2P3D1P2P1

H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 P1 P2 D8 P4 D7 D6 D5 P8 D4 D3 D2 D1

由上表可得出:

P1=D2⊕D4⊕D5⊕D7⊕D8

P2=D2⊕D3⊕D5⊕D6⊕D8

P3=D1⊕D5⊕D6⊕D7

P4=D1⊕D2⊕D3⊕D4

海明码的校验:

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

S2=P2⊕D2⊕D3⊕D5⊕D6⊕D8

S3=P3⊕D1⊕D5⊕D6⊕D7

S4=P4⊕D1⊕D2⊕D3⊕D4

1.3 设计环境

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

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

第2章详细设计方案

2.1 设计与实现

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

原理图主要由生成,错误模块和校验三个模块组装而成的一个完整的设计实体,分别为:生成模块、校验模块、错误模块

图2.1 生成模块

图2.2 错误模块

图2.3 校验模块

2.2 功能模块的设计与实现

2.2.1 生成模块的设计与实现

(1)元件结构

海明码生成模块,原理是通过输入的数据I1~I8按照公式:P1=D2⊕D4⊕D5⊕D7⊕D8

P2=D2⊕D3⊕D5⊕D6⊕D8

P3=D1⊕D5⊕D6⊕D7

P4=D1⊕D2⊕D3⊕D4

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

图2.4生成模块内部电路

(2)功能仿真

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

图2.5SHENGCHENG模块仿真

结果分析:输入I1-I8为10100000,输出O1-O12为101101000000,结果是正确的海明码。

2.2.2 错误模块的设计与实现

(1)元件结构

本模块的原理是通过3线8线译码器的3进1出,输出一个1,与8位输入

数据中的一位异或,使之发生错误,从而得出一组错误的数据。

图2.6错误产生模块内部电路

(2)功能仿真

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

图2.7ERROR模块仿真

结果分析:输入L1-L3为000,输入I1-I8为10100000,输出K1为0,产生一位错误。

2.2.3 校验模块的设计与实现

(1)元件的内部结构

原理是通过公式:

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

S2=P2⊕D2⊕D3⊕D5⊕D6⊕D8

S3=P3⊕D1⊕D5⊕D6⊕D7

S4=P4⊕D1⊕D2⊕D3⊕D4

连成的电路对数据进行校验,判断数据是那一位出错,并对出错的那一位与

错误数据异或,从而得出正确的数据。

图2.8校验模块内部电路(2)功能仿真

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

图2.9校验模块仿真

2.3 仿真调试

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

(1)创建仿真信号

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

第一组数据,I1~I8为10100000,生成的海明码O1~O12为10110100000 第二组数据,I1~I8为10010001,生成的海明码O1~O12为001000110001 这两组数据又经三八译码器改变其中一位错的数据输入到校验电路里,经校验后输出原本的数据位,最终实现了海明码生成和校验功能。 (2)仿真结果

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

输入数据8位数据

(I1~I8)

3线8线译码器输

入(L1~L3)

输出海明码 (O1~O12)

输出校验后的数据

(D1~D8)

10100000 000 101101000000 10100000 10010001 001

001000110001

10010001

仿真调试时采用两组数据

I1~I8 第一组数据 10100000 第二组数据

10010001

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

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

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

3.1 编程下载

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

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

输入数据得到下图的数据:

图3.1 第一组数据cop2000仿真下载结果

结果分析:输入K1:1-K1:3为000,对应L1-L3,输入I1-I8为10010001,输出B7—A4为001000110001对应O1-O12。

图3.2 第二组数据cop2000仿真下载结果

结果分析:输入K1:1-K1:3为000,对应L1-L3,输入I1-I8为10010010,输

出B7-A4为111100110010对应O1-O12。

参考文献

[1] 曹昕燕.EDA技术实验与课程设计[M].北京:清华大学出版社,2006

[2] 范延滨.微型计算机系统原理、接口与EDA设计技术[M].北京:北京邮电大学出版社,2006

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

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

电路原理总图

课程设计总结:

通过本次课设,我更深入的学习和了解了海明码,加强了我对海明码的认识,而且还学习了Xilinx foundation f3.1设计平台的应用,对我以后的学习很有帮助。增强了自己对信息的搜集与应用能力,增加了自己的计算机硬件知识,也培养了自己对计算机硬件的兴趣。虽然在设计过程中遇到了许多困难和问题,但解决后也同时给自己带来了喜悦和成功感,这更让我对组原产生了兴趣。在电路设计过程中自己独立思考,独立完成电路设计和连接,使自己的独立思考能力得到了很大的提高。课程设计过程中遇到了一些问题,在指导老师的耐心帮助下均得到了解决。在课程设计过程中自己逐渐意识到,做好一个项目不仅仅需要渊博的知识做基础,更要有一定的耐心和毅力。

指导教师评语:

指导教师(签字):年月日课程设计成绩

海明码编码

纠错编码-海明码 在数据通信的过程中,解决差错问题的一种方法是在每个要发送的数据块上附加足够的冗余信息,使接收方能够通过这些冗余信息推导出实际发送出的应该是什么样的比特串。最常见的纠错码是海明码,它能发现两比特错,但只能纠正单比特错。 汉明编码是将码字内的位从最左边开始依次编号,第1位是1号,第2位是2号……第n位是n号,编号为2的幂的位(1号位,2号位,4号位,8号位等)是校验位,其余的位填入位数据。每个校验位的取值应使得包括自己在内的一些位的集合服从规定的奇偶性(例如偶性要求这些位的集合中1的个数是偶数)。为了知道编号为k的数据位对哪些检测位有影响,将编号k改写成2的幂的和,例如11=1+2+8,29:1+4+8+1 6。1个位只由扩展式中所示编号的位检测,例如编号为11的位只由编号为1、2和8的检测位检测。 m个信息位插入r个校验位组成n=m+r位码字,它们必须满足的关系是:2r≥n+1。以典型的4位数据编码为例,汉明码将加入3个校验码,从而实际传输7位码字: 数据位:1 2 3 4 5 6 7 代码:P1 P2 D8 P3 D4 D2 D1 说明:Px为校验码,Dx为数据码。 下面根据图举例说明编码的方法。 图海明编码的例子 当对8位数数据进行海明编码时,其校验关系如下表所示。

表校验关系表 海明码纠错过程( 接收端) 首先将差错计数器置“0”。 当海明码数据到达接收端后,接收端逐个检查各个校验位的奇偶性。 如发现某一校验位和它所检测的集合的奇偶性不正确,就将该检验位的编号加到差错计数器中。 待所有校验位核对完毕,若差错计数器仍为0值,则说明该码字接收无误。反之,差错计数器的值即为出错位的编号,将该位求反就可得到正确结果。 假设传送的信息为1001011,把各个数据放在3,5,6,7,9,10,11等位置上,l,2,4,8位留做校验位。 根据上图,3、5、7、9、11的二进制编码的第一位为1,所以3、5、7、9、11号位参加第1位校验.若按偶校验计算.1号位应为1。 也可用异或计算 类似地,3、6、7、10、ll号位参加2位校验,5、6、7号位参加4位校验,9、10和11号位参加8位校验,全部按偶校验计算,最终得到:

网络工程师计算题

网络工程师计算题文档编制序号:[KKIDT-LLE0828-LLETD298-POI08]

1.各种进制转换、原码反码补码转换、内存芯片容量计算: ●R进制转十进制:()8=(2*82+3*81+4*80+0*8-1+1*8-2)10 ●十进制转R进制:除以R取余法 ●二进制和八进制的转换:将每个8进制数转为3位二进制数 ●二进制和16进制的转换:将每个16进制数转为4位二进制数 ●两个16进制数如何相加:直接进行相对应的位的相加。 ●两个16进制数如何异或:转为二进制,相对应位异或,再转为16进制。 ●原码:将一个整数写成二进制并加符号位就是原码。符号位最高位0为正 1为负。 ●反码:正数的反码就是原码;负数的反码是除符号位外每一位取反。 ●补码:正数的补码就是原码;负数的补码是反码+1。 ●移码:符号位和补码相反。 ●逻辑异或的公式:相同逻辑变量异或结果为0;相异逻辑变量异或结果为 1。 2.海明校验码、CRC校验码的计算 ●海明码:2^校验位>=数据位+1 ●海明码纠正X 位错误,需要2X+1 位冗余位 3.信道的理想数据速率计算;最大数据速率计算 ●理想数据速率=带宽*2*log2码元种类 ●最大数据速率=带宽*log21+信噪比=带宽*log21+10分贝数/10 ●信道波特率=带宽*2

●卫星传输的延时是270ms ●信息速率=码元速率*log2进制 ●电缆速度是光速的三分之二。 ●总时延=传播时延+发送时延+排队时延 ●数据传播时延s=数据帧长度b/数据传输速率bps ●信号传播时延μs=两点间距离m/信号传播速度m/μs。信号传播速度是20万 公里/秒即200mμ/s。 4.路由汇聚计算方法:写出二进制代码,看有多少位网络位相同 5.子网划分计算方法:将每个IP和掩码进行逻辑乘,值相同就在同一个子网 -127的原码是 -1的补码也是 已知网络地址块中的1个地址和该网络的掩码,如何写出这个网络的最小地址和最大地址: 举例:已知1个地址是:

海明码

海明码 有了奇偶校验码的基础,就不难理解海明码了。海明码实际上是奇偶校验码的一个扩充。奇偶校验码只能检测错误而不能纠正错误,海明码能检测出两位错误并纠正一位错误,下面就介绍一下海明码的工作原理。 在奇偶校验中,我们假设发送端有K位信息位(k = n – 1,n代表码元位数),表示为a1 ~a n-1 , 在信息位后面加上一位奇偶校验位a0,就构成了a0~a n的n位码元,则接收端可按照监督关系式s=a0+a1+…+a n-2+a n-1(s为校验因子)来进行数据校验。从奇偶校验的工作原理可以看出奇偶校验只有一个冗余位(对应一个监督关系式和一个校验因子),因此奇偶校验只能判别两种状态,当s=0表示正确,s=1表示出错。可以设想一下,若增加冗余位亦即增加监督关系式和校验因子,便能判别更多的状态,海明码正是基于这一点工作的。 上面讲到海明码通过增加冗余位来进行错误的检测和纠正,那么对于k位的信息需要增加多少个冗余位才能满足检错并纠正1位错误的要求呢? 假设信息位有k位,校验位(冗余位)为m,那么m位的校验码可以生成2m个校验值,显然数据被正确传输的状态只有一个,用2m个值中的一个值来表示,则其余的2m-1个值可用来表示错误的状态,如果能满足:2m -1≥k+m (k+m 为编码后的总长度),在理论上m位校验码就能判断出是哪一位数据(包括信息位和校验位)出现错误。下面用示例加以说明: 例(1):假设信息位k=4,求足以判别出错位位置的校验码所需的位数m。 解:由2m -1≥k+m , k=4可知 2m ≥5+m 即m≥3 即至少需要3位冗余位(对应产生3个校正因子和3个监督关系式), 形成23=8种判断状态才足以能够判断出出错数据位的位置 假设编成的n位海明码为h n h n-1…h2h1,则海明码的编码规律如下:1.校验位分布:在n位的海明码中,各检验位分布在位号为2n 的位置,即检验位的位置分别为第1,2,4,8,…,2n位,数据位按照原来的顺序插入其中。若信息码为k5k4k3k2k1,则编成的海明码为…k5r4k4k3k2r3 k1r2r1,此分布关系可以用下表表示,其中k i 表示信息位,下标从1开始。r i表示校验位,下标从0开始。 表(1)计算校验位分布表 2.检验关系:海明码的每一位h i要有多个检验位来检验。检验关系是被检验位的位号等于相关检验位的位号之和。在表(1)中,k5(位号为9)需要r4(位号8)和r0(位号1)来检验。同理,k 4需要由r2、r1和r0 检验,k3由r2、r1 检验,以此类推,为便于分析,我们列表如下: 表(2)校验关系对照表

海明码计算题

海明码计算习题 请写出每道题的计算过程 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

2019年上半年网络工程师真题+答案解析上午选择+下午案例完整版

壱 2019年上半年网络工程师真题+答案解析上午选择+下午案例完整版 上午选择2019年5月25日考试1、计算机执行指令的过程中,需要由()产生每条指令的操作信号并将信号送往相应的部件进行处理,以完成指定的操作。 A. CPU的控制器 B. CPU的运算器 C. DMA控制器 D. Cache控制器 答案:A 控制器是中央处理器的核心,主要功能就是统一指挥并控制计算机各部件协调工作,所依据的是机器指令。其实就是向计算机其他部件发送控制指令。控制器的组成包含程序计数器(PC)、指令寄存器(IR)、指令译码器、时序部件、微操作控制信号形成部件(PSW)和中断机构。 2、DMA控制方式是在()之间直接建立数据通路进行数据的交换处理。 A. CPU与主存 B. CPU与外设 C. 主存与外设 D. 外设与外设

弐 答案:C DMA存取方式,是一种完全由硬件执行I/O数据交换的工作方式。它既考虑到中断的响应,同时又要节约中断开销。此时,DMA控制器代替CPU完全接管对总线的控制,数据交换不经过CPU,直接在内存和外围设备之间成批进行。 3、在()校验方法中,采用模2运算来构造校验位。 A. 水平奇偶 B. 垂直奇偶 C. 海明码 D. 循环冗余 答案:D 模2运算是一种二进制算法,属于CRC校验技术中的核心部分,具体用的模二除算法。 垂直奇偶校验又称为纵向奇偶校验,它是将要发送的整个信息块分为定长p位的若干段(比如说q段),每段后面按"1"的个数为奇数或偶数的规律加上一位奇偶位。 水平奇偶校验又称为横向奇偶校验,它是对各个信息段的相应位横向进行编码,产生一个奇偶校验冗余位。 奇偶校验用的是模二加运算法则。 4、以下关于RISC(精简指令系统计算机)技术的叙述中,错误的是

海明码和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 发明,因此定名为汉明码。 汉明码(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,即表示编码后第三位出错,对照存储

2019年上半年网络工程师真题+答案解析上午选择+下午案例完整版

2019年上半年网络工程师真题+答案解析上午选择+下午案例完整版 上午选择2019年5月25日考试1、计算机执行指令的过程中,需要由()产生每条指令的操作信号 并将信号送往相应的部件进行处理,以完成指定的操作。 A. CPU的控制器 B. CPU的运算器 C. DMA控制器 D. Cache控制器 答案: A 控制器是中央处理器的核心,主要功能就是统一指挥并控制计算机各 部件协调工作,所依据的是机器指令。其实就是向计算机其他部件发 送控制指令。控制器的组成包含程序计数器(PC)、指令寄存器(IR)、指令译码器、时序部件、微操作控制信号形成部件(PSW)和中断机构。 2、DMA控制方式是在()之间直接建立数据通路进行数据的交换 处理。 A. CPU与主存 B. CPU与外设 C. 主存与外设 D. 外设与外设

答案: C DMA存取方式,是一种完全由硬件执行I/O数据交换的工作方式。它既考虑到中断的响应,同时又要节约中断开销。此时,DMA控制器代替CPU完全接管对总线的控制,数据交换不经过CPU,直接在内存和外围设备之间成批进行。 3、在()校验方法中,采用模2运算来构造校验位。 A. 水平奇偶 B. 垂直奇偶 C. 海明码 D. 循环冗余 答案: D 模2运算是一种二进制算法,属于CRC校验技术中的核心部分,具体用的模二除算法。 垂直奇偶校验又称为纵向奇偶校验,它是将要发送的整个信息块分为 定长p位的若干段(比如说q段),每段后面按"1"的个数为奇数或偶数 的规律加上一位奇偶位。 水平奇偶校验又称为横向奇偶校验,它是对各个信息段的相应位横向 进行编码,产生一个奇偶校验冗余位。 奇偶校验用的是模二加运算法则。 4、以下关于RISC(精简指令系统计算机)技术的叙述中,错误的是

海明码的计算

海明码的计算: 码距:是不同码字的海明距离的最小值。 (1)可查出多少位错误:可以发现“≤码距-1”位的错误 (2)可以纠正多少位错误:可以纠正“<码距/2”位的错误,因此如果要能纠正n位错误,则所需最小的码距是:2n+1。 计算:海明码是放置在2的幂次位上的即1,2,4,8,16,32, 而对于信息位为m的原始数据,需加入k位的校验码,它满足m+k+1

海明码的纠错:如下给出一个加入了校验码的的信息,并说明有一位的错误,要找出错误位: 1 2 3 4 5 6 7 8 9 10 11 12 13 将B1,B2,B4,B8代入上式的公式中: B1=B1⊕B3⊕B5⊕B7⊕B9⊕B11⊕B13=1⊕1⊕0⊕1⊕0⊕0⊕0=1 B2=B2⊕B3⊕B6⊕B7⊕B10⊕B11=1⊕1⊕1⊕1⊕1⊕0=1 B4=B4⊕B5⊕B6⊕B7⊕B12⊕B13=0⊕0⊕1⊕1⊕0⊕0=0 B8=B8⊕B9⊕B10⊕B11⊕B12⊕B13=0⊕0⊕1⊕0⊕0⊕0=1 然后从高位往下写,B8+B4+B2+B1=1011=11(十进制)即11位出错。

海明码精典例题

海明码精典例题(重点理解) 海明码的生成与接收 方法一:(按教科书) 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"

2016年下半年嵌入式系统设计师(中级)上午选择+下午案例真题答案+解析完整版(全国计算机软考)

2016年下半年嵌入式系统设计师真题+答案解析 上午选择 1、(1)用来区分在存储器中以二进制编码形式存放的指令和数据。 A. 指令周期的不同阶段 B. 指令和数据的寻址方式 C. 指令操作码的译码结果 D. 指令和数据所在的存储单元 答案:A 指令周期是执行一条指令所需要的时间,一般由若干个机器周期组成,是从取指令、分析指令到执行完所需的全部时间。CPU执行指令的过程中,根据时序部件发出的时钟信号按部就班进行操作。在取指令阶段读取到的是指令,在分析指令和执行指令时,需要操作数时再去读操作数。 2、计算机在一个指令周期的过程中,为从内存读取指令操作码,首先要将(2)的内容送到地址总线上。 A. 指令寄存器(IR) B. 通用寄存器(GR) C. 程序计数器(PC) D. 状态寄存器(PSW) 答案:C CPU首先从程序计数器(PC)获得需要执行的指令地址,从内存(或

高速缓存)读取到的指令则暂存在指令寄存器(IR),然后进行分析和执行。 3、设16位浮点数,其中阶符1位、阶码值6位、数符1位、尾数8位。若阶码用移码表示,尾数用补码表示,则该浮点数所能表示的数值范围是(3)。 A. -264~(1-2-8)264 B. -263~(1-2-8)263 C. -(1-2-8)264~(1-2-8)264 D. -(1-2-8)263~(1-2-8)263 答案:B 浮点格式表示一个二进制数N的形式为N=2E×F,其中E称为阶码,F叫做尾数。在浮点表示法中,阶码通常为含符号的纯整数,尾数为含符号的纯小数。 指数为纯整数,阶符1位、阶码6位在补码表示方式下可表示的最大数为63(26-1),最小数为-64(-26)。尾数用补码表示时最小数为-1、最大数为1-2-8,因此该浮点表示的最小数为-263,最大数为(1-2-8)×263。 4、已知数据信息为16位,最少应附加(4)位校验位,以实现海明码纠错。 A. 3

海明码的基本原理(精)

一、海明码的概念 海明码是一种可以纠正一位差错的编码。它是利用在信息位为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是第六位错

海明码计算方法

1.海明码的概念 海明码是一种可以纠正一位差错的编码。它是利用在信息位为k位,增加r位冗余位,构成一个n=k+r位的码字,然后用r个监督关系式产生的r个校正因子来区分无错和在码字中的n个不同位置的一位错。它必需满足以下关系式: 2^r>=n+1 或 2^r>=k+r+1 例题:以 4 位信息位为例,由上表可以看出需要的海明码长度为 3。设信息位为 x4x3x2x1,添加的 3 位海明码为 a3a2a1,信息码和海明码组合之后得到的码为 H7H6H5H4H3H2H1。 错误无H1H2H3H4H5H6H7 C10 1 0 1 0 1 0 1 C1 = H1 + H3 + H5 + H7 = 0 C20 0 1 1 0 0 1 1 C2 = H2 + H3 + H6 + H7 = 0 C30 0 0 0 1 1 1 1 C3 = H4 + H5 + H6 + H7 = 0 海明码的编码效率为: R=k/(k+r) 式中k为信息位位数r为增加冗余位位数 2.海明码的生成与接收 方法一:

例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。

网络工程师计算题

网络工程师计算题 Revised as of 23 November 2020

1.各种进制转换、原码反码补码转换、内存芯片容量计算: ●R进制转十进制:()8=(2*82+3*81+4*80+0*8-1+1*8-2)10 ●十进制转R进制:除以R取余法 ●二进制和八进制的转换:将每个8进制数转为3位二进制数 ●二进制和16进制的转换:将每个16进制数转为4位二进制数 ●两个16进制数如何相加:直接进行相对应的位的相加。 ●两个16进制数如何异或:转为二进制,相对应位异或,再转为16进制。 ●原码:将一个整数写成二进制并加符号位就是原码。符号位最高位0为正1为负。 ●反码:正数的反码就是原码;负数的反码是除符号位外每一位取反。 ●补码:正数的补码就是原码;负数的补码是反码+1。 ●移码:符号位和补码相反。 ●逻辑异或的公式:相同逻辑变量异或结果为0;相异逻辑变量异或结果为1。 2.海明校验码、CRC校验码的计算 ●海明码:2^校验位>=数据位+1 ●海明码纠正X 位错误,需要2X+1 位冗余位 3.信道的理想数据速率计算;最大数据速率计算 ●理想数据速率=带宽*2*log2码元种类 ●最大数据速率=带宽*log21+信噪比=带宽*log21+10分贝数/10 ●信道波特率=带宽*2 ●卫星传输的延时是270ms ●信息速率=码元速率*log2进制

●电缆速度是光速的三分之二。 ●总时延=传播时延+发送时延+排队时延 ●数据传播时延s=数据帧长度b/数据传输速率bps ●信号传播时延μs=两点间距离m/信号传播速度m/μs。信号传播速度是20万公里/秒 即200mμ/s。 4.路由汇聚计算方法:写出二进制代码,看有多少位网络位相同 5.子网划分计算方法:将每个IP和掩码进行逻辑乘,值相同就在同一个子网 -127的原码是 -1的补码也是 已知网络地址块中的1个地址和该网络的掩码,如何写出这个网络的最小地址和最大地址: 举例:已知1个地址是: 已知该网络掩码: 则:该网络最小地址:(前面网络位取相同,后面主机位取全0) 该网络最大地址:(前面网络位取相同,后面主机位取全1)

海明码及码距

海明码及码距 一、码距 一个编码系统中任意两个合法编码(码字)之间不同的二进数位(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位字,奇性由下式给出:

对海明码的理解

对海明码的理解 海明码是一种多重(复式)奇偶检错系统。它将信息用逻辑形式编码,以便能够检错和纠错。用在海明码中的全部传输码字是由原来的信息和附加的奇偶校验位组成的。每一个这种奇偶位被编在传输码字的特定位置上。实现得合适时,这个系统对于错误的数位无论是原有信息位中的,还是附加校验位中的都能把它分离出来。 一个n位二进制数位串在传输过程中哪一位都有出错的可能,也就是说有n个发生错误的可能性。针对此情况,如果发送方只抽出其中一位制置奇偶校验位值,以便对其它位进行偶校验或奇校验,虽然也能检错,但无法确定错码的位置,不能纠错。如果发送方抽出其中r位(放在1,2,4,8,16……位上),给每个位制置奇偶校验位值,以便对从其它位中选择的有差异的r个位组进行偶校验或奇校验,这样,就能用含r个校验位值的逻辑组合(其所在位置可以不连续,但是,其在逻辑上是连续的)所衍生出的2r种状态对可能发生的错误进行相应范围的检测。进一步思考:如果让2r种可能发生的状态中除去一种状态反映整个位串传输正确外,剩下的2r-1种状态一一对应地反映位串中可能发生的n种错误,

那么,对r会有多大的数量要求呢?显然,r应满足下列关系式: 2r-1>=n (1) 这样,r个校验位所衍生出的2r种状态才能覆盖可能产生的n种错误。每种错误发生时才不至于漏检。 从n中扣出r个校验位n-r=k,这k个位是信息位。n=k+r,代入(1)式得: 2r-1>=k+r (2) 移项得: 2r-r>=k+1 (3) 按(3)式进行试算(试算不包括”>”——取最小值) 表1 根据经验 表2 此即r以其所衍生出的状态能覆盖的信息位数量。反过来,从k的数量,可以倒推需要多少校验位对其进行检测。 知道了信息位数量与校验位数量的关系后,怎样编海明

海明码的知识

编辑词条海明码 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位值取反得正确码字:

相关主题
文本预览
相关文档 最新文档