SEC-DED海明校验码算法研究及其FPGA实现
海明校验码的原理详解
海明校验码的原理详解2006年12月27日星期三 10:57海明码是一种多重(复式)奇偶检错系统。
它将信息用逻辑形式编码,以便能够检错和纠错。
用在海明码中的全部传输码字是由原来的信息和附加的奇偶校验位组成的。
每一个这种奇偶位被编在传输码字的特定位置上。
实现得合适时,这个系统对于错误的数位无论是原有信息位中的,还是附加校验位中的都能把它分离出来。
推导并使用长度为m位的码字的海明码,所需步骤如下:1、确定最小的校验位数k,将它们记成D1、D2、…、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⊕D4B=P2⊕D2⊕D3⊕D4=0 得P2=D2⊕D3⊕D4C=P3⊕D1⊕D2⊕D3⊕D4=0 得P3=D1⊕D2⊕D3⊕D4 以下计算访求同下k个校验位是通过对m+k位复合码字进行奇偶校验而确定的。
海明码最通俗详细的讲解(原创)考研专用
海明码详解(原创通俗版)张健北大青鸟哈尔滨博仁培训中心2010年1月25日一、通过异或来解决:这两天也在研究海明码的问题,把我的理解说给你吧,按照我说的可以顺利得到海明码步骤:一、确定校验码的位数k二、确定校验码的位置三、数据的位置四、求出校验位的值其中还需要一个公式的推导,好了,下面开始:首先,海明码的作用是:在编码中如果有错误,可以表达出第几位出了错,二进制的数据只有0和1,修改起来很容易,求反即可,这需要加入几个校验位。
对于一个m位的数据信息,到底应该加入几个呢?假设需要k个,那么编码之后应该是m+k位,这k个二进制数组成的数据能够表达的数值是2的k次方个,比如需要3个校验位,k=3,3位二进制数从000 、001 、……、111共有8个数值,而这m+k个二进制组成的数据的所有编码中,只有一个是正确的,其他的都是表达了错误的位置信息的,所以2的k次方个编码中去掉正确的那一个,也就是(2的k次方-1),如果这个数值等于m+k,就可以完全表达出出错的位置了,(2的k次方-1)也可以大于m+k,比如:给10个学员进行编号,可以用一位数来编码:学号为0 、1 、2 、3 、……、9 ,也可以用两位数或者五位数,00000 、00001 、00002 、……、00009,但是没有必要用五位呀,只要能满足编码的要求就可以了,所以说我们求出满足条件的最小的k值就可以!下面举例说明:我们要推导出D= 101101这个数字的海明码一、确定校验码的位数k数据的位数m=6,按照上面我们说的公式来计算满足条件的k的最小值2的k次方-1>=m+k即:2的k次方-1>=6+k解此不等式得:满足不等式的最小k=4,也就是D=101101这个数字的海明码应该有6+4=10位,其中原数据6位,校验码4位。
二、确定校验码的位置设这4为校验码分别为P1、P2、P3、P4数据从左到右为D1、D2、……、D6编码后的数据共有6+4=10位,设为M1、M2、……M10校验码Pi(这里i=1,2,3,4)在编码中的位置为2的(i-1)次方,值是这样的1,2,4,8,16……即:P1在M1位置,P2在M2位置,P3在M4位置,P4在M8位置,这里一共有10位,所以排不到M16,见图中“甲”行红色字体M1 M2 M3 M4 M5 M6 M7 M8 M9 M10甲P1 P2 D1 P3 D2 D3 D4 P4 D5 D6乙 1 0 1 1 0 1图1三、数据的位置这个很简单,除了校验码的位置其余的就是数据的位置,填充进去就可以了,见图中“甲”行的蓝色字体,于是可以先把数据信息填进去,见“丙”行,下面就是最关键的部分,求出校验位的值啦!!!四、求出校验位的值这里会用到一个公式,找了好多资料都说了这个公式,但是完全没有必要死记硬背,是有规律的,回顾一下二进制的表达,对于一个4位二进制数,可以表达16个值,0000B~1111B,“B”代表二进制,“D”代表十进制,假定这4位二进制数,从左到右分别为S4、S3、S2、S1,请把脑袋向左歪90°看下图:1D=0001B,所以M1在S1那一行,4D=0100B,所以M4在S3那一行,5D=0101B,这就不能用一个格子来表达了,所以需要S3和S1共同表达,即4+1=5,看图中黄色的部分,是不是M5?看出规律了吧?M后边的数字都可以拆为由2的n次方的数相加来表达,在举一个例子M7:4+2+1=7即:7D=0111B,看图中橙色的部分,都是M7吧!by the way:这个公式在验证纠错的时候还会用得到,我找的网上的很多资料写了好几个公式,看后完全“懵懂”了,其实只需要这一个就可以了,按照我说的这个方法,你只要记住这个公式的推导就可以解决所有问题了,怎么样?强大吧?S1 = M1 ⊕M3⊕M5⊕M7⊕M9S2 = M2 ⊕M3⊕M6⊕M7⊕M10S3 = M4 ⊕M5⊕M6⊕M7S4 = M8 ⊕M9⊕M10 图2(说明:在这个图,根据M后面的数字,按2平方展开,即按蓝色那排(因为这排是Pi的值)有关,然后再把3D=0011B,5D=0101B形式,有1的地方就是它所在的位置。
海明码的检错机制及程序实现
海明码的检错机制及程序实现浙江省慈溪实验中学 张利波 315300当数字信号在介质中传输时,由于信道热燥声或环境燥声干扰,导致传输错误,这就引出了两个问题:如何检测错误?如何纠正错误?这里将用程序的方法来模拟海明码实现纠错的编码方式。
【海明码介绍】海明码是由R.Hammingy1950年提出的,是一种纠正一比特错的编码,其基本思想是:在k 比特信息上附加r 比特冗余信息(也称校验比特),构成n=k+r 比特的码字,其中每个校验比特和某几个特定的信息比特构成偶校验的关系。
校验比特数r 和信息比特k 满足条件:2^r ≥n+1=k+r+1。
下面用具体例子说明海明码的构造方法。
以k=4为例说明,要满足2^r ≥k+r+1,则有r ≥3,取r=3,则n=k+r=7,这7个比特中的2^k 位置用来放置校验比特R i ,其余为信息比特I i ,如图1所示。
每个信息比特所在位置(下标)都可以表示成2的幂次之和的形式: 7=22+21+20,6=22+21,5=22+20,3=21+20,如图2所示,表格中“√”表示含该项,横向表示信息比特参与校验比特的生成,如信息比特I 4要参与校验比特R 2、R 1、R 0的生成;纵向表示校验比特和信息比特构成的偶校验关系,如 R 2和I 4、I 3、I 2构成的偶校验关系。
由此得到计算校验比特的公式:R 2=I 4+I 3+I 2,R 1=I 4+I 3+I 1,R 0=I 4+I 2+I 1。
接收端对这r 个奇偶关系进行校验,将每个校验比特和与它相关联的信息比特执行相加(异或),相加的结果称为校正因子,校正因子可以通过以下关系式对三个偶关系进行验证:S 2= R 2+I 4+I 3+I 2,S 1= R 1+I 4+I 3+I 1,S 0=R 0+I 4+I 2+I 1。
如果没有错误,则这些校正因子都为0;反之,S 2、S 1、S 0不全为0,而发生错误的比特位置就在S=(S 2S 1S 0)2处,将该比特取反,就得到正确数据。
基于FPGA_的DES加密算法的实现
摘要密码技术作为信息安全的支撑技术,事关国家的根本利益,同时直接影响国家的未来和发展,世界各国都对此予以充分重视。
随着网络的快速发展,信息安全越来越引起人们的关注。
DES(Data Encryption Standard,数据加密标准)加密算法在成为加密标准到今天,经历了长期的考验。
实践证明DES算法的安全性是能够满足大部分的安全要求的。
随着微电子技术的发展,可编程逻辑器件由早期的只读存贮器(PROM)发展到今天十分流行并广泛应用的现场可编程门阵列CPLD/FPGA。
CPLD/FPGA具有体系结构和逻辑单元灵活,集成度高以及实用范围宽等特点,可以实现较大规模的电路,编程也很灵活,而且设计开发周期短,设计制造成本低,开发工具先进,标准产品无需测试,质量稳定以及可实时在线检验等优点,因此被广泛应用于产品的原型设计和产品生产。
所以,应用CPLD/FPGA来设计和实现DES加密算法具有十分重要的现实意义和广阔的应用前景。
概括起来,本文主要完成了以下几方面的主要工作:(1)完成了DES加密系统的整体设计。
整个系统包括DES加密核心模块和函数包模块。
(2)在ALTERA公司的Quartus II环境下用VHDL实现,进行编译、综合和仿真。
关键字:DES;VHDL;FPGAABSTRACTAs the key of the information security,encryption technology influence the nation’s benefit. It will affect national’s future and the development directly. Various countries all regarding this as important technology.With the rapid development of internet, people pay more attention to the information security.DES (Data Encryption Standard) encryption arithmetic has been standing through many tests since it became the encryption standard. It is proved that the security of the DES encryption can satisfy the voluminous needs.With the development of micro-electronic technology, the programmable logic device develops from earlier ROM to CPLD/FPGA which is very popular and extensive applied today. The CPLD/FPGA has the characteristics including flexible system structure and logic unit, high integration and wide application. Especially, the CPLD/FPGA can carry out the more large-scale circuit and can be programmed flexibly. When the engineers use the CPLD/FPGA to design and develop the product, the time is less, the cost is lower, and the tools are more advanced than using other devices because the standard product doesn’t need to test as before, the quality is steadier and the product can be inspected on line. So, the CPLD/FPGA is widely used to design and develop product.Therefore, using the CPLD/FPGA to design and implement the DES encryption arithmetic is very practical and will be popular in many fields. The main contributions of the paper are as follow:(1)Completed the whole design of the DES encryption system .The whole system includes the DES encryption core module and the function package module.(2)Used ALTERA Company platform--Quartus II,VHDL to realize design , compile, synthesis and simulate the design.Key words: DES;VHDL;FPGA目录1 绪论 (1)1.1DES的基本概念及特点 (1)1.2 DES和RSA (2)1.3基于FPGA的DES加密系统的研究背景,意义,及应用前景 (2)1.3.1 DES加密系统现状及发展 (2)1.3.2 FPGA简介 (2)1.4硬件描述语言VHDL简介 (3)1.5EDA工具简介 (4)1.5.1 Quartus Ⅱ开发工具简介 (4)1.5.2 Synplify PRO简介 (5)本章小结 (6)2 DES加密算法原理 (7)2.1DES加密算法原理简介 (7)2.2DES加密原理 (7)2.2.1 初始置换 (8)2.2.2 每轮循环过程 (9)2.2.3 轮密匙的产生 (12)2.3DES算法的安全强度 (14)本章小结 (14)3 加密系统设计 (15)3.1加密系统设计方案 (15)3.2本课题讨论的设计内容 (15)3.2.1 程序函数包的设计 (16)3.2.2轮密钥的生成 (18)3.2.3 S盒的设计 (20)3.2.4 每轮加密单元的设计 (23)3.2.5 DES算法执行模块的顶层设计 (25)本章小结 (27)4 仿真结果及分析 (28)4.1基于Q UARTUSⅡ的仿真 (28)4.2 基于S YNPLIFY PRO的综合 (29)本章小结 (31)结束语 (32)参考文献...........................................错误!未定义书签。
海明码详解
海明码详解①海明校验的基本思想将有效信息按某种规律分成若干组,每组安排一个校验位,做奇偶测试,就能提供多位检错信息,以指出最大可能是哪位出错,从而将其纠正。
实质上,海明校验是一种多重校验。
②海明校验的特点它不仅具有检测错误的能力,同时还具有给出错误所在准确位置的能力。
一.校验位的位数校验位的位数与有效信息的长度有关设:N--为校验码的位数 K--是有效信息位 r--校验位(分成r组作奇偶校验,能产生r位检错信息)海明码应满足 N=K+r≤2r-1 若r=3 则N=K+r≤7 所以K≤4二.分组原则`在海明码中,位号数(1、2、3、……、n)为2的权值的那些位,即:1(20)、2(21)、 4(22)、8(23)、…2r-1位,作为奇偶校验位并记作: P1、P2、P3 、P4、…Pr,余下各位则为有效信息位。
例如: N=11 K=7 r=4 相应海明码可示意为位号 1 2 3 4 5 6 7 8 9 10 11P占位P1 P2 × P3 × × × P4 × × ×其中×均为有效信息,海明码中的每一位分别被P1P2P3P4… Pr 中的一至若干位所校验,其规律是:第i位由校验位位号之和等于i的那些校验位所校验如:海明码的位号为3,它被P1P2(位号分别为1,2)所校验海明码的位号为5,它被P1P3(位号分别为 1,4)所校验归并起来: 形成了4个小组,每个小组一个校验位,校验位的取值,仍采用奇偶校验方式确定。
如表2·6 、表2·7所示:三.编码、查错、纠错原理以4位有效信息(b1、b2、b3、b4)和3位校验位(P1、P2、P3)为例: K=4 r=3 海明序号 1 2 3 4 5 6 7海明码 P1 P2 b1 P3 b2 b3 b4根据表2-8可以看到(1)每个小组只有一位校验位,第一组是P1、第二组是P2、第三组是P3。
海明校验码
例如:欲传递信息为b4b3b2b1(n=4),根据 2k≥n+k+1,可求出配置成海明码需增添检测位 k=3,且它们位置的安排如下:
二进制序号 1 2 3 4 5 6 7
ห้องสมุดไป่ตู้名称
C1 C2 b4 C4 b3 b2 b1
如果按照配偶原则来配置海明码,则
C1 应使1,3,5,7位中的“1”的个数为偶数;
1234567
正确的海明码 0 1 0 0 1 0 1
接收到的海明码 0 1 0 0 1 1 1
则新的检测位为:
P4=4⊕5⊕6⊕7,即P4=0⊕1⊕1⊕1=1
P2=2⊕3⊕6⊕7,即P2=1⊕0⊕1⊕1=1
P1=1⊕3⊕5⊕7,即P1=0⊕0⊕1⊕1=0
• 由此可见,传送结果P4、P2均不呈偶数, 显然出了差错。那么,错位在哪一位呢? 极为有意思的是,P4、P2、P1所构成的二 进制值恰恰是出错的位置,即P4P2P1=110, 表示第六位出错。发现错误后,计算机便 自动地将错误的第六位“1”纠正为“0”。
P1=1⊕3⊕5⊕7,即P1=C1⊕b4⊕b3⊕b1 P2=2⊕3⊕6⊕7,即P2=C2⊕b4⊕b2⊕b1 P4=4⊕5⊕6⊕7,即P4=C4⊕b3⊕b2⊕b1
设已知传送的正确海明码(按配偶原则配置)为 0100101,若传送后接收到的海明码为0100111, 其出错位可按下述步骤进行:
令:
二进制序号
• 又如,若收到按偶配置的海明码为1100101, 则经检测得:
P4=4⊕5⊕6⊕7,即P4=0⊕1⊕0⊕1=0 P2=2⊕3⊕6⊕7,即P2=1⊕0⊕0⊕1=0 P1=1⊕3⊕5⊕7,即P1=1⊕0⊕1⊕1=1 • 所以,出错位为:P4P2P1=001,即第一位。 可是第一位不是欲传送的信息位,而是检 测位,在一般情况下,可以不予纠正。
海明校验码设计实验报告
海明校验码设计实验报告实验目的设计并实现海明校验码,实现对于数据传输中出错信息的检测与纠正功能。
实验原理海明校验码是对于二进制数据进行检错和纠错的一种编码方法。
其基本思想是对数据进行二进制化,并在数据后面加上校验码,以便检查发生的错误,并在发生一些错误的时候进行纠正。
其中,校验码的生成基于原始数据中出现的错误的反转。
为了避免出现错误情况,海明编码使得校验码中的每一位都与原始数据中的多个位置有关。
海明校验码的实现流程包括以下步骤:1. 将要传输的数据转换为二进制形式,并将其划分为多个位。
2. 根据海明编码的规则,计算得出控制位的位置,并将0和1分配给这些位置。
3. 将校验位插入到原始数据的中间,构成海明编码,并发送到接收端。
4. 在接收端,收到海明编码后,进行计算并检查出现的错误情况。
如有错误,则尝试更改应该更改的冗余位以进行自动校正。
实验器材与材料计算机,IDE软件,Python语言。
实验步骤1. 设计海明编码程序。
(1)将要传输的数据分割,初始状态下没有校验码。
(2)计算出每个校验位的数值。
(3)用计算得到的校验码替换掉原来没有校验码的位,以形成海明编码。
2. 制造模拟信道错误的程序。
将字符数据中某些位置的位进行反转模拟数据在传输过程中出现错误的情况。
3. 设计海明编码解码程序。
(1)接收传输过来的海明编码。
(2)计算收到的码字的海明校验码。
(3)如果发现了错误,则进行纠错操作,纠正错误的位数。
实验结果经过测试,我们成功设计并实现了海明编码解码的程序。
我们在编码原始数据后,成功地对编码的数据进行了传输,并通过测试程序检查对于在数据传输过程中出现的错误信息的检测与纠正功能。
同时,在发送者向接收者发送数据的过程中,我们还成功制造了信道错误,以模拟数据传输中出现错误的情况。
在测试程序的帮助下,我们成功地对海明编码的纠错机制进行了测试,并发现其有效性和高可用性。
结论与总结在本次实验中,我们通过使用Python语言和IDE软件成功地设计并实现了海明校验码的程序,实现了对于数据传输中出错信息的检测与纠正功能。
海明编码实现的原理
海明编码实现的原理在数据编码中,加入几个校验位,并把数据的每一个二进制位分配在多个奇偶校验组中。
当某一个位出错后,就会引起有关的几个校验组的值发生变化,这样不但可以发现出错,还可以指出是哪一位出错,为自动纠错提供了依据。
码距:是指在一组编码中任何两个编码之间最小的距离。
距离:是指两个编码中相同位值不同的个数。
000,001其距离是1,把这个距离称为海明距离。
码距为d,检验的错误个数为e,纠错的个数为t,它们之间存在的关系:d>=e+1 可检验e个错d>=2t+1 可纠正t个错d>=e+t+1且e>t 可以检验e个错,并纠正t个错。
只讨论海明校验纠一错的情况。
海明校验纠一错需要校验位:2^k-1>=n+k数据位为n,校验位为k,如:数据位为8,k>=4,海明编码的位数=n+k,k一般取满足条件的最小值。
海明校验位放在编码的位置:校验位放在整个编码的2^i位上(i=0,1,2,...,k-1)数据位:D7 D6 D5 D4 D3 D2 D1 D0整个编码怎么放:P1 P2 D7 P4 D6 D5 D4 P8 D3 D2 D1 D00001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100P1=D7异或D6异或D4异或D3异或D1(位置的二进制数从右往左第一位为1的位置上的数进行异或运算)P2=D7异或D5异或D4异或D2异或D1(位置的二进制数从右往左第二位为1的位置上的数进行异或运算)P4=D6异或D5异或D4异或D0(位置的二进制数从右往左第三位为1的位置上的数进行异或运算)P8=D3异或D2异或D1异或D0(位置的二进制数从右往左第四位为1的位置上的数进行异或运算)数据位:01101101 n=8根据2^k-1>=n+k 所以k>=4 取k=4P1 P2 0 P4 1 1 0 P8 1 1 0 10001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100P1=D7异或D6异或D4异或D3异或D1=0异或1异或0异或1异或0=0P2=D7异或D5异或D4异或D2异或D1=0异或1异或0异或1异或0=0P4=D6异或D5异或D4异或D0=1异或1异或0异或1=1P8=D3异或D2异或D1异或D0=1异或1异或0异或1=1海明校验码:000111011101增加一位校验位即可增加检错一个:P0=P1异或P2 异或D7异或P4异或D6异或D5异或D4 异或P8 异或D3异或D2异或D1异或D0=1检二纠一错的编码是:100011101110110111010011P1 P2 D6 P4 D5 D4 D3 P8 D2 D1 D0 1 0 1 1 1 0 1 0 0 1 1求指误字EkEk-1...E1E1=1异或1异或1异或1异或0异或1=1(位置的二进制数从右往左第一位为1的位置上的数进行异或运算)E2=0异或1异或0异或1异或1异或1=0(位置的二进制数从右往左第二位为1的位置上的数进行异或运算)E3=1异或1异或0异或1=1(位置的二进制数从右往左第三位为1的位置上的数进行异或运算)E4=0异或0异或1异或1=0(位置的二进制数从右往左第四位为1的位置上的数进行异或运算)因为E4E3E2E1=0101,说明接收到的海明校验位第5位出错,第1是1,取反得0,正确的海明编码是:10110010011其有效数据位是:1001011 ASCII值=75是字符K。
软考历程(2)——海明码校验
软考历程(2)——海明码校验这两天学了校验码,在计算机系统基础知识这块,校验还是挺重要的。
这⾥涉及到的校验码有三种:奇偶校验码(Parity Code)海明码(Hamming Code)循环冗余检验码(CyclicRedundancy Check,CRC)1.奇偶校验码这是⼀种最简单最有效的校验⽅法,通过在编码中添加⼀位校验位。
使1的个数为偶数(偶校验)或奇数(奇校验)。
从⽽使码距变为2。
奇校验能够检測代码中奇数位出错的编码,不能够发现偶数位出错的情况。
2.海明码这是利⽤奇偶性来检错和纠错的校验⽅法。
其构成⽅法为:在数据位之间插⼊k个校验位。
求海明码的过程能够分为下⾯⼏个步骤:(1)依据数据位n,确定校验位k, n和k满⾜关系:2k-1≥n+k;(2)设海明码为H1。
H2。
H3。
……H n+k,将校验位依次放在20,21,22,2i-1……的位置上。
(3)将数据位由低位到⾼位依次放在海明码剩余的位置上。
(4)找出每⼀个校验位所校验的数据位,⽅法为:第⼀个校验位隔⼀位校验⼀位。
第⼆个校验位隔两位校验两位,第三个校验位隔三位校验三位……每⼀个校验位都校验它⾃⾝;(5)分别对每⼀个校验位所校验的数据位做抑或运算,结果为校验位的值。
(6)将所得校验位的值填⼊当中,即得海明码。
3.循环冗余校验码它由两部分组成。
左边为信息码。
右边为校验码。
校验码是由信息码产⽣的,求CRC编码时,採⽤模2运算。
多⽤于数据通信领域和磁介质存储领域,在參加的上个中⾕项⽬中就⽤到了CRC校验,那会⼉对于这个东东还认为蛮深奥的呢!。
海明码——精选推荐
海明码海明码(Hamming Code)是在电信领域的一种线性检测码,以发明者理查德·卫斯里·海明的名字命名。
海明码在传输的消息流中插入验证码,当计算机存储或移动数据时,可能会产生数据位错误,以侦测并更正单一比特错误。
由于海明编码简单,它们被广泛应用于内存(RAM)电路。
1940年,海明于贝尔实验室(Bell Labs)工作,运用贝尔V型(Bell Model V)电脑,一个周期时间为几秒钟的机电继电器计算机。
输入终端是依靠打孔卡(Punched Card),这不免会产生读取错误。
在平日,特殊代码将发现错误并闪灯(flash lights),使得操作者能够纠正这个错误。
在周末和下班期间,在没有操作者的情况下,机器只会简单地转移到下一个工作。
海明在周末工作,他对于不可靠的读卡机发生错误后,总是必须重新开始项目变得愈来愈沮丧。
在接下来的几年中,他为了解决错误检测的问题,着手开发功能强大的检测算法。
直到1950年,他发表了著名的海明码。
与其他的错误校验码类似,海明码也利用了奇偶校验位的概念,通过在数据位后面增加一些比特,可以验证数据的有效性。
利用一个以上的校验位,海明码不仅可以验证数据是否有效,还能在数据出错的情况下指明错误位置。
在接受端通过纠错译码自动纠正传输中的差错来实现码纠错功能,称为前向纠错FEC。
在数据链路中存在大量噪音时,FEC可以增加数据吞吐量。
通过在传输码列中加入冗余位(也称纠错位)可以实现前向纠错,但这种方法比简单重传协议的成本要高。
海明码利用奇偶块机制降低了前向纠错的成本。
如果一条信息中包含更多用于纠错的位,且通过妥善安排这些纠错位使得不同的出错位产生不同的错误结果,那么我们就可以找出出错位了。
在一个7位的信息中,单个位出错有7种可能,因此3个错误控制位就足以确定是否出错及哪一位出错了。
海明码SECDED(single error correction, double error detection)版本另外加入一个检测比特,可以侦测两个或以下同时发生的比特错误,并能够更正单一比特的错误。
校检码之海明校验码的求法
校检码之海明校验码的求法计算机组成原理汉明(海明)校验法求信息1011的海明码。
1.根据信息位数,确定校验位数根据公式 2^r≥k+r+1求,k为信息位数,r为校验位数。
1011⼀共是4位,所以k=4,r为满⾜不等式的最⼩的r.当r=1时带⼊式⼦不符合,2不符合,r=3时,8>=4+3+1,符合所以确定了初步的表格如下,为了后⾯填充⽅便,位数是由⼤到⼩排列的:2.求校验位2.1校验位的填充校验位⼀般都是在2^n的位置,因为表格确定了⼀共七位,所以,我们在这7位⾥⾯寻找到1、2、4,在表格中填充如下:2.2在表格中填充信息位,信息位是由⾼位向低位填充,⾼位的数字要填充到⾼位上,10112.3求校验位的值确定每个位置的校验位,每个位数都由R1、R2、R3中的⼀或若⼲个所确定。
1由第⼀个校验位来确定R1,2由第⼆个校验位来确定R2,3=1+2(1和2都是2的n次⽅),所以3由第⼀个和第⼆个校验位确定,4由第四个校验位R3确定,5和3道理是⼀样的,5=1+4(2^0+2^2);6=2+4;7=1+2+4,依次类推,这个题就是这些了。
整理为如下的表格:进⾏汇总,看每个校验位都确定了哪⼀位。
R1:1、3、5、7R2:2、3、6、7R3: 4、5、6、7最后求校验位的值,1对应的信息位为空,2也为空,3为1,4为空,5为1,依次类推,根据本博客中的第三个表格就可以得知。
然后对每个R所对应的信息位进⾏异或运算,相同时为0,不同时为1以R1为例,求出R1=1同理求出R2=0(101),R3=0(101)最后将这些数字填⼊表格:海明码就求出来了,把上⾯的红⾊的数字按照位数从低到⾼排列下来就是:1010101。
计算机组成原理--海明码的编码和校验方法(易懂)
计算机组成原理--海明码的编码和校验⽅法(易懂)海明码(也叫汉明码)具有⼀位纠错能⼒。
本⽂以1010110这个⼆进制数为例解释海明码的编码和校验⽅法。
编码 确定校验码的位数x 设数据有n位,校验码有x位。
则校验码⼀共有2x种取值⽅式。
其中需要⼀种取值⽅式表⽰数据正确,剩下2x-1种取值⽅式表⽰有⼀位数据出错。
因为编码后的⼆进制串有n+x位,因此x应该满⾜2x-1 ≥ n+x 使不等式成⽴的x的最⼩值就是校验码的位数。
在本例中,n=7,解得x=4。
确定校验码的位置 校验码在⼆进制串中的位置为2的整数幂。
剩下的位置为数据。
如图所⽰。
位置1234567891011内容x1x21x3010x4110 求出校验位的值 以求x2的值为例。
为了直观,将表格中的位置⽤⼆进制表⽰。
位置00010010001101000101011001111000100110101011内容x1x21x3010x4110 为了求出x2,要使所有位置的第⼆位是1的数据(即形如**1*的位置的数据)的异或值为0。
即x2^1^1^0^1^0 = 0。
因此x2 = 1。
同理可得x1 = 0, x3 = 1, x4 = 0。
位置00010010001101000101011001111000100110101011内容01110100110 因此1010110的海明码为01110100110。
校验 假设位置为1011的数据由0变成了1,校验过程为: 将所有位置形如***1, **1*, *1**, 1***的数据分别异或。
***1: 0^1^0^0^1^1 = 1 **1*: 1^1^1^0^1^1 = 1 *1**: 1^0^1^0 = 0 1***: 0^1^1^1 = 1 以上四组中,如果⼀组异或值为1,说明该组中有数据出错了。
***1 **1* 1***的异或都为1,说明出错数据的位置为1011。
海明码简单分析确定校验位个数海明码的码组长度需要符合:2^r – 1 (r代表校验位个数)为什么是这个公式呢?因为:只有这样才能保证校验位⾜够覆盖整个需要校验的码组。
海明校验码的设计原理
海明校验码的设计原理今天来聊聊海明校验码的设计原理。
你知道吗?我们生活中有很多时候都需要检查信息有没有出错,就好比我们去超市买东西,售货员要核对商品价格扫码有没有扫错,这就像是一种简单的校验过程。
在计算机的数据世界里,也有一个类似的超级校验器,那就是海明校验码。
海明校验码的原理其实还挺巧妙的。
想象一下,我们在一个仓库里放了很多箱子(数据位),这些箱子排得很整齐。
海明校验码就像给这些箱子安排了一些管理员(校验位)。
这些管理员的位置是有规定的,他们可不是随便站在某个地方。
比如说,第1个校验位(管理员)负责查看特定几个箱子的数据有没有问题,第3个校验位(管理员)又负责另外一组不同的箱子。
我一开始也不明白,为什么要这么复杂地安排这些管理员(校验位)呢?其实这里面是有数学规律的。
海明码设计的时候是让校验位按照2的幂次方的位置来分布的,就像1、2、4、8、16……这样的位置。
为什么这样呢?这就要说到它的校验方法了。
打个比方吧,校验位就像是一个个探测器。
当数据出错的时候,这些探测器会根据自己负责的那些箱子(数据位)发现异常,然后通过一些特定的运算,就能准确地找到是哪个箱子(位)的数据出现了错误。
比如说,假如发现是1号、3号探测器报警了,就说明是特定的某个数据位出现了问题。
这里的1号、3号探测器是按照海明码的规则设定好负责对应的一些数据位的。
海明校验码在实际的计算机存储和数据传输中非常有用。
比如说在硬盘存储数据的时候,数据可能因为电磁干扰或者其他硬件问题产生错误。
海明校验码就能在数据被读取的时候,快速地检查数据是否正确,如果错了就加以纠正。
不过要注意的是,海明校验码也不是万能的。
存在一种万分之一或者百万分之一的特殊情况,几个地方同时出错,就可能会让校验码判断失误。
虽然这种情况非常少,但也是我们在使用的时候需要知道的局限性。
我学习这个原理花了不少时间,一开始真的是一头雾水,但是静下心来慢慢研究这个数据位和校验位之间的关系,就像解开一团复杂的毛线球一样。
海明校验码例题详解
海明校验码例题详解
海明校验码是一种常用的错误检测和纠正技术,它可以在传输数据时检测出单个错误的位,并且能够纠正单个错误位的错误。
下面我们来详解一个海明校验码的例题。
假设发送方想要发送一个4位的二进制数1101给接收方,并
使用海明校验码进行错误检测和纠正。
首先,发送方按照规定的方式将数据进行编码,添加海明校验码位。
编码规则是在需要校验的位置上添加校验位,并计算校验位的值。
按照海明校验码的规则,需要添加两个校验位,分别在位置1
和位置2上。
然后计算校验位的值。
校验位1的值是原始数据中与位置1所对应的位的异或值,校验位2的值是原始数据中与位置2所对应的位的异或值。
所以,校验位1的值是1^0^1 = 0,校验位2的值是1^1^0=1。
所以发送方编码后的数据为110011。
这样,接收方在接收到
数据后可以通过对数据位和校验位进行异或运算来检测错误。
如果接收到的数据位和校验位的异或结果为0,则表示无错误;如果异或结果为1,则表示有一个错误,并且可以根据错误的
位的位置来进行纠正。
假设接收方接收到的数据位为110011,经过异或运算后,得
到的结果是0^1^0^0 = 1,表示有一个错误位。
根据错误位的
位置可以确定是第3位(从左往右数)。
然后,接收方可以将错误位取反来进行纠正,所以纠正后的数据是110011。
通过海明校验码,接收方不仅可以检测出错误位的位置,还可以进行纠正,保证数据的正确性。
这是海明校验码的一个例题的详细过程。
海明码纠错的FPGA实现
海明码纠错的FPGA实现
李玉飞
【期刊名称】《现代电子技术》
【年(卷),期】2007(30)3
【摘要】对于采用海明码纠错的系统来说,提高纠错效率和可靠性对于提高数据传输速度和质量是很重要的,采用基于FPGA硬件设计的海明码纠错系统可以达到这一效果,分别从发送方海明码的生成和接收方纠错解码两方面详细阐述了该系统的实现原理,并给出了相应的Modelsim仿真时序波形图.
【总页数】3页(P60-61,64)
【作者】李玉飞
【作者单位】同济大学,铁道与城市轨道交通研究院,上海,201804
【正文语种】中文
【中图分类】TN919.5
【相关文献】
1.海明码纠错在温室无线温度采集中的应用 [J], 王微;李广羽;焦天龙;孙洋;李君伟;范东升
2.单片机实现海明码纠错原理的研究 [J], 张福军;宋铁军;刘坤
3.利用汉明码实现冗余纠错的一种方法 [J], 王丽
4.海明码在微机信息传输中的纠错原理与应用 [J], 赵军军
5.一种交织汉明码编译码器设计及其FPGA实现 [J], 庄灿;石和荣;齐永
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
V0 . . 1 31 No 3 S p. 0 2 e 2 1
S C D D海 明校验 码 算 法 研 究及 其 F G E .E P A实现
何秉姣, 科 刘
( 中南 民族 大学 计 算机科 学学院 , 武汉 4 0 7 ) 30 4
摘
要 采用 M hs 1 u im 1 实现 了 S C D D海明码的编码 、 i E —E 译码 和纠错 电路 , 并给 出其 相应时 序仿真外 F G P A具 有设 计 周期 短 、 调
化 , 同数 位上 的错误 会得 出不 同的校验 结果 , 而 不 从 实现 查错 和纠错 .
1 1 S CD D校 验位 位数 的确定 . E . E
设有 效数 据为 n位 , 校验 位 为 k位 , 成 k组做 分
1 S C D D海 明校 验 码 算 法研 究 E .E
码 _2. 1J通用 的半 导体 存 储 器 主要 采 用 S CD D海 . E —E
明校 验 码 ( 称 S C D D 校 验 码 或 S C D D 码 ) 简 E -E E -E
分成若 干组 . 组安排 1 校验 位进行 奇偶 校验 . 每 个 在 1 数 据 组 中加 入几 个 校 验 位 , 大 数据 代 码 问 的 个 增
表明 : 其功能能满足 S CD D的需要 , F G E —E 为 P A快速准确实现 S C D D校验 码提供 了一种 占用资源少 、 E —E 校验 可靠 高速的方案 . 关键词 S C D D海 明校验码 ; E .E 现场可编程 门阵列 ; 时序仿真
T 3 9 2 文献 标 识 码 P0 . A 文 章 编 号 17 -3 1 2 1 )30 8 -4 6 24 2 (0 2 0 - 90 0 中图 分 类 号
Ab t a t T e ag r h o EC DE Ha s r c h lo i m f S — D mmi g c e k c d n t n o i g e o i g,c ru t o ro or c in a e t n h c o e a d i e c d n ,d c d n s i i f er r c re t r c s o r aie y Mu ii 1 a d t erc re p n i g t n i lt n w v fr r r s n e el db hs z m n h i o r s o dn i gsmu a i a e omsa ep e e td.I i id c td t a t f n t n 1, mi o t s n iae h t s u ci i o c n me tt e n e s o h E DED T i meh d i e p o e o r aie te S C— ED Ha a e h e d f t e S D— . hs t o s x lr d t e l h E D mmi g c e k c d y F GA z n hc oeb P
试 方便 、 开发 费 用低 、 险 小 、 C S 1 L电平 兼 风 与 MO 、_ r 容等特 点 , 得 F G 芯 片 在工 程 项 目中得 到 广 泛 使 PA 应用 引.
奇偶校验 , 这样能产生 k 位检错信息. 位信息就构 成 1个指 误字 G=G G …G G , 构成 2 种 状态 , 可 其中 1 种状态表示无误 , 余下 2 一1 种表示 或 1位 有效 数 据位 出错 , 或校 验位 中有 1位 出错 . 因此 共 有
S EC- DED mm i g Ch c d g rt m n Ha n e k Co e Alo i h ad
I s I p e e t to n FPG A t m l m n a i n i
H i j o LuK eBn i , i e ga
( oeeo o p t c ne SuhC nrl nvrt f a oat s Wu a 3 04,hn ) C lg f m u r i c ,ot-e t iesy o N t nli , h n40 7 C ia l C eS e aU i r i ie
第3 1卷第 3期
21 0 2年 9月
中南 民族大学学报(自然科 学版 )
Ju a o ot— etlU i ri r ai aie( a.c. dt n or l f uhC nr nv syf tn t s N tSiE io ) n S a e t o N ol i i
码距 , 当某 一位 发生 变 化 时会 引起 校 验 结果 发 生 变
进行 数据 校验 , 它具 有 发 现 2位错 和纠 正 一 位错 的 能 力. 硬件 实现 S CD D码 的速 度更快 、 可靠 . 用 E —E 更 FG P A深亚 米微 米 的制 造工 艺 实 现 了芯 片 集成 成 千上 万 的查 找 表 和触 发 器 , 的 容量 足 以满 足普 它
数字 系统 中 的数 据在读 写操 作 中出现 差错是 不 可避 免 的 , 采用 数据 校 验 码 检查 和纠 错 可 以减 少 或 避免 差错 . 明校验 码 是 目前 被广 泛 采 用 的 一种 很 海
有 效 的 校 验 方 法 , 是 能 查 错 、 错 的线 性 分 组 它 纠 海 明码 的基 本算 法就 是将 有效数 据按 某种规 律