- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机组成原理数据的机器层次表示
指误字指示出错的前提是代码中只存在一个错。若有多个错,可能查不出来。 所以只有在只存在一个错的前提下,海明码才能实现检1纠1错。 例:字符“M”的偶校验码为01110010101,其指误字为 S1=P1⊕D6⊕D5⊕D3⊕D2⊕D0 S2=P2⊕D6⊕D4⊕D3⊕D1⊕D0 S3=P3⊕D5⊕D4⊕D3 S4=P4⊕D2⊕D1⊕D0 * * 若接收正确,即接收到的代码是01110010101,则 S1=0⊕1⊕0⊕1⊕1⊕1=0 S2=1⊕1⊕0⊕1⊕0⊕1=0 S3=1⊕0⊕0⊕1=0 S4=0⊕1⊕0⊕1=0 若接收出错,即接收到的代码是01110110101,则 S1=0⊕1⊕0⊕1⊕1⊕1=0 S2=1⊕1⊕1⊕1⊕0⊕1=1 S3=1⊕0⊕1⊕1=1 S4=0⊕1⊕0⊕1=0 * * 得到的指误字为 S4S3S2S1=0110,表示第6位上的数码出错。将第6位上的数码A4取反,即可得到正确结果。 上述海明校验码可以检查出一位错误并予以纠正,但如果有两位信息出错,就无法正确检测并自动纠错。 例:正确的“M”的偶校验海明校验码为 01110010101,如果信息传送时第3位、第6位同时出错,接受到的校验码为 01010110101,校验时,得到指误字为 S4S3S2S1=0101,指出第5位代码出错,结果越纠越错。 * * 有效信息位n=7,校验位k=4的11位检一纠一错海明校验码的形成电路。 * * 11位检一纠一错海明校验码的偶校验电路 * * 11位检一纠一错海明校验码的自动纠错电路 * * 扩展海明校验码 为了满足检2纠1错的要求,可将检1纠1错海明校验码再进行奇偶校验。 扩展海明校验码:增加一个奇偶校验位P0,按偶校验规则,P0的取值是使N+K+1位的校验码中的“1”的个数为偶数。即: P0=P1⊕P2⊕D6⊕P4⊕D5⊕D4⊕D3⊕P8⊕D2⊕D1⊕D8 校验时首先由P0对整个n+k+1位海明校验码进行校验,校验结果为E0。 E0=P0⊕P1⊕P2⊕D6⊕P4⊕D5⊕D4⊕D3⊕P8⊕D2⊕D1⊕D8 * * 若校验正确,则S0=0; 若错误,S0=1。然后再按检一纠一错海明校验码对各组进行校验,得到指误字EkEk-1…E2E1。 若校验结果 S0=0,SkSk—l…S1=00…0 表示无错。 S0=1,SkSk—l…S1≠00…0 表示有一位出错, 根据EkEk—l…E1的值确定出错位号并自动纠正。 S0=0,SkSk—l…S1≠00…0 表示有两位出错,此时无法确定出错位置,也无法纠错。 S0=1,SkSk—l…S1=00…0 表示P0出错。 从上面讨论中,可以看出校验位位数越多,检错纠错的能力就越强。 * * 例 * * 8421码 采用偶校验 海明校验码 0000 00000 0000000 0001 00011 1101001 0010 码距为1 00101 码距为2 0101010 码距为3 0011 不能检错 00110 可检1位 1000011 可检1位 0100 和纠错 01001 错 1000100 纠1位错 0101 01010 0101101 0110 01100 1100110 0111 01111 0001111 1000 10001 1110000 1001 10010 0011001 2.6.3 循环冗余校验码 在计算机网络、同步通信以及磁表面存储器中被广泛使用,简称CRC码。 通过除法运算来建立有效信息位和校验位之间的约定关系的。 假设,待编码的有效信息以多项式M(X)表示,将它左移若干位后,用另一个约定的多项式G(X)去除,所产生的余数R(X)就是检验位。有效信息和检验位相拼接就构成了CRC码。当整个CRC码被接收后,仍用约定的多项式G(X)去除,若余数为0表明该代码是正确的;若余数不为0表明某一位出错,再进一步由余数值确定出错的位置,以便进行纠正。 * 编码的原理 由于减余数操作可能涉及到借位运算,难于用简单的拼装方法实现编码。为回避借位,将运算改为模2运算。 循环冗余校验码是一种基于模2运算建立编码规律的校验码, 模2运算:不考虑进位和借位的二进制运算。 * 模2运算 (1) 模2加减:即按位加,用异或规则实现。即: 0±0=0 0±1=1±0=1 1±1=0 (2) 模2乘:按模2加求部分积之和,不进位。 (3) 模2除:按模2减求部分余数,不借位。若部分余数(首次为被除数)最高位为1,则上商为1;若部分余数最高位为0,则上商为0。每求一位商应使部分余数减少一位,即去掉部分余数的最高位,再继续求下一位商。当
文档评论(0)