




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、各种校验码校验算法分析 二进制数据经过传送、存取等环 节会发生误码 1变成 0或 0变成 1这就有如何发现及纠正误 码的问题。所有解决此类问题的方法就是在原始数据数码位 基础上增加几位校验冗余位。一、码距 一个编码系统中任意两个合法编码码字之间不同 的二进数位 bit 数叫这两个码字的码距而整个编码系统中任 意两个码字的的最小距离就是该编码系统的码距。 如图 1所示的一个编码系统用三个 bit 来表示八个不同信息中。在 这个系统中两个码字之间不同的 bit 数从 1到 3不等但最小 值为 1故这个系统的码距为 1。如果任何码字中一位或多位 被颠倒了结果这个码字就不能与其它有效信息区分开。例如
2、如果传送信息 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-
3、2的 8个码字相互间最少有两 bit 的差异。因此如果任何信息的一个数位被颠倒就成为一个不 用的码字接收机能检查出来。例如信息是 1001误收为 1011接收机知道发生了一个差错因为 1011不是一个码字表中没有。然而差错不能被纠正。假定只有一个数位是错的正确码 字可以是 100111110011或 1010。接收者不能确定原来到底 是这 4个码字中的那一个。 也可看到 在这个系统中偶数个 2或 4差错也无法发现。 为了使一个系统能检查和纠正一个 差错码间最小距离必须至少是“3”。最小距离为 3时或能 纠正一个错或能检二个错但不能同时纠一个错和检二个错。 编码信息纠错和检错能力的进一步提高需要
4、进一步增加码 字间的最小距离。 图 8-3的表概括了最小距离为 1至 7的 码的纠错和检错能力。 码距 码 能 力 检错 纠错 1 2 3 4 5 6 7 0 0 1 0 2 或 1 2 加 1 2 加 2 3 加 2 3 加 3 图 3 码距越大纠错能力越强但数据冗余也越大即编码效率低了。 所以选择码距要取决于特定系统的参数。数字系统的设计者 必须考虑信息发生差错的概率和该系统能容许的最小差错 率等因素。要有专门的研究来解决这些问题。二、奇偶校验 奇偶校验码是一种增加二进制传输系统最小 距离的简单和广泛采用的方法。例如单个的奇偶校验将使码 的最小距离由一增加到二。 一个二进制码字如果它的码元
5、 有奇数个 1就称为具有奇性。例如码字“10110101”有五个 1因此这个码字具有奇性。同样偶性码字具有偶数个 1。注 意奇性检测等效于所有码元的模二加并能够由所有码元的 异或运算来确定。对于一个 n 位字奇性由下式给出 奇性 a0 a1 a2 an 奇偶校验可描述为给每一个码字加一个校验位用它来构成奇性或偶性校验。例如在图 8-2中就是这 样做的。可以看出附加码元 d2是简单地用来使每个字成为 偶性的。因此若有一个码元是错的就可以分辨得出因为奇偶 校验将成为奇性。奇偶校验编码通过增加一位校验位来使编 码中 1个个数为奇数奇校验或者为偶数偶校验从而使码距变 为 2。因为其利用的是编码中 1的
6、个数的奇偶性作为依据所 以不能发现偶数位错误。 再以数字 0的七位 ASCII 码 0110000为例如果传送后右边第一位出错 0变成 1。接收端 还认为是一个合法的代码 0110001数字 1的 ASCII 码。若在 最左边加一位奇校验位编码变为 10110000如果传送后右边 第一位出错则变成 101100011的个数变成偶数就不是合法的 奇校验码了。但若有两位假设是第 1、 2位出错就变成 101100111的个数为 5还是奇数。接收端还认为是一个合法 的代码数字 3的 ASCII 码。所以奇偶校验不能发现。 奇偶 校验位可由硬件电路异或门或软件产生 偶校验位 an a0 a1 a2 a
7、n-1 奇校验位 an NOTa0 a1 a2 an-1。 在一个典型系统里在传输以前由奇偶发生器把奇偶校验位 加到每个字中。原有信息中的数字在接收机中被检测 如果 没有出现正确的奇、偶性这个信息标定为错误的这个系统将 把错误的字抛掉或者请求重发。 在实际工作中还经常采用 纵横都加校验奇偶校验位的编码系统 -分组奇偶校验码。 现在考虑一个系统 它传输若干个长度为 m 位的信息。如果把这些信息都编成每组 n 个信息的分组则在这些不同的信息 间也如对单个信息一样能够作奇偶校验。图 4中 n 个信息的 一个分组排列成矩形式样并以横向奇偶 HP 及纵向奇偶 VP 的 形式编出奇偶校验位。 m位数字 横
8、向奇偶位 n 个 码 字 a1 a2 am-1 am HP1 b1 b2 bm-1 bm HP2 c1 c2 cm-1 c m HP3 n1 n2 nm -1 nm HPn VP1 VP2 VPm-1 VPm HPn1 纵向奇偶位 图 4 用综横奇偶校验的分组 奇偶校验码 研究图 4可知分组奇偶校验码不仅能检测许多 形式的错误。并且在给定的行或列中产生孤立的错误时还可 对该错误进行纠正。 在初级程序员试题中早期也出现在程 序员试题中经常有综横奇偶校验的题目。一般解法应该是这 样先找一行或一列已知数据完整的确定出该行或列是奇校 验还是偶校验。并假设行与列都采用同一种校验这个假设是 否正确在全部做
9、完后可以得到验证。然后找只有一个未知数 的行或列根据校验性质确定该未知数这样不断做下去就能 求出所有未知数。 【例】 2001年初级程序员试题 由 6 个 字符的 7 位 ASCII 编码排列再加上水平垂直奇偶校验位 构成下列矩阵最后一列为水平奇偶校验位最后一行为垂直 奇偶校验位 : 字符 7 位 ASCII 码 HP 3 0 X1 X2 0 0 1 1 0 Y1 1 0 0 1 0 0 X3 1 X4 1 0 1 0 1 1 0 Y2 0 1 X5 X6 1 1 1 1 D 1 0 0 X7 1 0 X8 0 0 X9 1 1 1 X10 1 1 VP 0 0 1 1 1 X11 1 X12
10、 则 X1 X2 X3 X4 处的比特分别为 _36_ X5 X6X7 X8 处的比特分别为 _ X9 X10 XI1 X12 处的比特分 别为 _38_ Y1 和 Y2 处的字符分别为 _39_ 和_40_ 。 解 从 ASCII 码左起第 5列可知垂直为偶校验。 则 从第 1列可知 X40从第 3行可知水平也是偶校验。 从第 2行可知 X31从第 7列可知 X80从第 8列可知 X121 从第 7行可知 X111从第 6列可知 X100从第 6行可知 X91从第 2列 可知 X11 从第 1行可知 X21从第 3列可知 X51从第 4行可知 X60 从第 4列或第 5行可知 X70整理一下
11、 36 X1X2X3X4 1110 37 X5X6X7X8 1000 38 X9X10X11X12 1011 39 由字符 Y1的 ASCII 码 100100149H 知道 Y1即是“I”由“D”的 ASCII 码 是 100010044H 推得 40 由字符 Y2的 ASCII 码 011011137H 知道 Y2即是“7”由“3”的 ASCII 码是 011001133H 推得 假 如你能记住“0”的 ASCII 码是 011000030H“A”的 ASCII 码 是 100000141H 则解起来就更方便了。三、海明校验 我们在前面指出过要能纠正信息字中的单个 错误所需的最小距离为 3
12、。实现这种纠正的方法之一是海明 码。 海明码是一种多重复式奇偶检错系统。它将信息用逻 辑形式编码以便能够检错和纠错。用在海明码中的全部传输 码字是由原来的信息和附加的奇偶校验位组成的。每一个这 种奇偶位被编在传输码字的特定位置上。实现得合适时这个 系统对于错误的数位无论是原有信息位中的还是附加校验 位中的都能把它分离出来。 推导并使用长度为 m 位的码字的海明码所需步骤如下 1、确定最小的校验位数 k 将它们记 成 D1、 D2、 、 Dk 每个校验位符合不同的奇偶测试规定。 2、 原有信息和 k 个校验位一起编成长为 mk 位的新码字。 选择 k 校验位 0或 1以满足必要的奇偶条件。 3、
13、对所接收的信息 作所需的 k 个奇偶检查。 4、如果所有的奇偶检查结果均为 正确的则认为信息无错误。 如果发现有一个或多个错了则 错误的位由这些检查的结果来唯一地确定。 校验位数的位 数 推求海明码时的一项基本考虑是确定所需最少的校验位 数 k 。考虑长度为 m 位的信息若附加了 k 个校验位则所发送 的总长度为 mk 。 在接收器中要进行 k 个奇偶检查每个检查结 果或是真或是伪。这个奇偶检查的结果可以表示成一个 k 位 的二进字它可以确定最多 2k 种不同状态。 这些状态中必有 一个其所有奇偶测试试都是真的它便是判定信息正确的条 件。于是剩下的 2k-1种状态可以用来判定误码的位置。于 是
14、导出下一关系 2k-1mk 码字格式 从理论上讲校验位可 放在任何位置但习惯上校验位被安排在 1、 2、 4、 8、的位 置上。 图 5列出了 m4k3时信息位和校验位的分布情况。 码 字位置 B1 B2 B3 B4 B5 B6 B7 校验位 x x x 信息位 x x x x 复合码字 P1 P2 D1 P3 D2 D3 D4 图 5 海明码中校验位和 信息位的定位 校验位的确定 k个校验位是通过对 mk 位复合 码字进行奇偶校验而确定的。 其中 P1位负责校验海明码的 第 1、 3、 5、 7、P1、 D1、 D2、 D4、位包括 P1自己 P2负责校验海明码的第 2、 3、 6、 7、P
15、2、 D1、 D3、 D4、位 包括 P2自己 P3负责校验海明码的第 4、 5、 6、 7、P3、 D2、 D3、 D4、位包括 P3自己 对 m4k3偶校验的例子只要 进行式次偶性测试。这些测试以 A 、 B 、 C 表示在图 6所示各 位的位置上进行。 奇偶条件 码 字 位 置 1 2 3 4 5 6 7 A B C x x x x x x x x x x x x 图 6 奇偶校验位置 因此可 得到三个校验方程及确定校验位的三个公式 AB1 B3 B5 B70 得 P1D1 D2 D4 BB2 B3 B6 B70 得 P2D1 D3 D4 CB4 B5 B6 B70 得 P3D2 D3
16、D4 若四位信息码 为 1001利用这三个公式可求得三个校验位 P1、 P2、 P3值。 和海明码如图 7则表示了信息码为 1001时的海明码编码的 全部情况。而图 8中则列出了全部 16种信息 D1D2D3D400001111的海明码。 码字位置 B1 B2 B3 B4 B5 B6 B7 码位类型 P1 P2 D1 P3 D2 D3 D4 信息码 - - 1 - 0 0 1 校验位 0 0 - 1 - - - 编码后的海明码 0 0 1 1 0 0 1 图 7 四位信息码的海明编码 P1 P2 D1 P3 D2 D3 D4 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 1 0
17、1 0 1 0 1 0 0 0 0 1 1 1 0 0 1 1 0 0 0 1 0 0 1 0 1 1 1 0 0 1 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 0 0 1 1 0 1 1 0 1 0 0 1 1 0 0 1 1 0 1 1 1 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 1 0 1 1 1 1 1 1 1 图 8 未编码信息的海明码 上面是发送方的处理 在接收方也 可根据这三个校验方程对接收到的信息进行同样的奇偶测试 AB1 B3 B5 B70 BB2 B3 B6 B70 CB4 B5 B5 B70。 若三个校验方程都成立
18、即方程式右边都等于 0则说 明没有错。若不成立即方程式右边不等于 0说明有错。从三 个方程式右边的值可以判断那一位出错。例如如果第 3位数 字反了则 C0此方程没有 B3AB1这两个方程有 B3。可构成二 进数 CBA 以 A 为最低有效位则错误位置就可简单地用二进数 CBA011指出。 同样若三个方程式右边的值为 001说明第 1位出错。 若三个方程式右边的值为 100说明第 4位出错。 海 明码的码距应该是 3所以能纠正 1位出错。而奇偶校验码的 码距才是 2只能发现 1位出错但不能纠正不知道那一位错。 无校验的码距是 1它出任何一位出错后还是合法代码所以也 就无法发现出错。 这是关于海明
19、码的经典说法即码距为 3可以发现 2位或者纠正 1位错。应满足 2k-1mk。 但在清 华的王爱英主编的计算机组成与结构该书已成为国内的 权威中还提出了一种码距为 4的海明码可以发现 2位并且纠 正 1位错。应满足 2k-1mk。 由于王爱英书上对这两种概 念没有很仔细解释特别对码距为 3的海明码过渡很突然。有 些书简单抄袭时没有仔细消化所以出现一些概念错。对于一 般码距为 3的海明码应该是“可以发现 2位或者纠正 1位 错”而不是“可以发现 2位并且纠正 1位错”。在试题中出 现过类似的错误。 四、循环冗余校验码 在串行传送磁盘、 通讯中广泛采用循环冗余校验码 CRC 。 CRC 也是给信息
20、码加上几位校验码以增加整个编码系统的码距和查错纠错能力。 CRC 的理论很复杂一般书上只介绍已有生成多项式后计算校 验码的方法。检错能力与生成多项式有关只能根据书上的结 论死记。 循环冗余校验码 CRC 的基本原理是在 K 位信息码 后再拼接 R 位的校验码整个编码长度为 N 位因此这种编码又 叫 NK 码。对于一个给定的 NK 码可以证明存在一个最高次幂 为 N-KR 的多项式 Gx 。 根据 Gx 可以生成 K 位信息的校验码而 Gx 叫做这个 CRC 码的生成多项式。 校验码的具体生成过程 为假设发送信息用信息多项式 CX 表示将 Cx 左移 R 位则可表 示成 Cx2R 这样 Cx 的
21、右边就会空出 R 位这就是校验码的位置。 通过 Cx2R 除以生成多项式 Gx 得到的余数就是校验码。 几 个基本概念 1、多项式与二进制数码 多项式和二进制数有 直接对应关系 x 的最高幂次对应二进制数的最高位以下各位 对应多项式的各幂次有此幂次项对应 1无此幂次项对应 0。 可以看出 x 的最高幂次为 R 转换成对应的二进制数有 R1位。 多项式包括生成多项式 Gx 和信息多项式 Cx 。 如生成多项式 为 Gxx4x3x1 可转换为二进制数码 11011。 而发送信息位 1111可转换为数据多项式为 Cxx3x2x1。 2、生成多项式 是 接受方和发送方的一个约定也就是一个二进制数在整个
22、传 输过程中这个数始终保持不变。 在发送方利用生成多项式 对信息多项式做模 2除生成校验码。在接受方利用生成多项 式对收到的编码多项式做模 2除检测和确定错误位置。 应满足以下条件 a、生成多项式的最高位和最低位必须为 1。 b 、当被传送信息 CRC 码任何一位发生错误时被生成多项式 做模 2除后应该使余数不为 0。 c、不同位发生错误时应该 使余数不同。 d、对余数继续做模 2除应使余数循环。 将 这些要求反映为数学关系是比较复杂的。但可以从有关资料 查到常用的对应于不同码制的生成多项式如图 9所示 N K 码距 d Gx多项式 Gx 7 4 3 x3x1 1011 7 4 3 x3x21
23、 1101 7 3 4 x4x3x21 11101 7 3 4 x4x2x1 10111 15 11 3 x4x1 10011 15 7 5 x8x7x6x41 111010001 31 26 3 x5x21 100101 31 21 5 x10x9x8x6x5x31 11101101001 63 57 3 x6x1 1000011 63 51 5 x12x10x5x4x21 1010000110101 1041 1024 x16x15x21 11000000000000101 图 9 常用的生成多项式 3、 模 2除按位 除 模 2除做法与算术除法类似但每一位除减的结果不影响 其它位即不向上
24、一位借位。所以实际上就是异或。然后再移 位移位做下一位的模 2减。步骤如下 a、用除数对被除数最 高几位做模 2减没有借位。 b、除数右移一位若余数最高位 为 1商为 1并对余数做模 2减。若余数最高位为 0商为 0除 数继续右移一位。 c、一直做到余数的位数小于除数时该余 数就是最终余数。 【例】 1111000除以 1101 1011商 1111000-被除数 1101 除数 010000 1101 01010 1101 111余数 CRC码的生成步骤 1、将 x 的最高幂次为R 的生成多项式 Gx 转换成对应的 R1 位二进制数。 2、将信 息码左移 R 位相当与对应的信息多项式 Cx2
25、R 3、用生成多项 式二进制数对信息码做模 2 除得到 R 位的余数。 4、将余数 拼到信息码左移后空出的位置得到完整的 CRC 码。 【例】 假设使用的生成多项式是 Gxx3x1。4 位的原始报文为 1010 求编码后的报文。 解 1、将生成多项式 Gxx3x1 转换成对应 的二进制除数 1011。 2、此题生成多项式有 4 位 R1 要把原 始报文 Cx 左移 3R 位变成 1010000 3、用生成多项式对应的 二进制数对左移 4 位后的原始报文进行模 2 除 1001-商 - 1010000 1011-除 数 - 1000 1011 - 011-余 数校验位 5、编码后的报文 CRC
26、码 1010000 011 - 1010011 CRC 的和纠错 在接收端收到 了 CRC 码后用生成多项式为 Gx 去做模 2 除若得到余数为 0 则码字无误。若如果有一位出错则余数不为 0 而且不同位出 错其余数也不同。可以证明余数与出错位的对应关系只与码 制及生成多项式有关而与待测码字信息位无关。图 10 给出 了 Gx1011Cx1010 的出错模式改变 Cx 码字只会改变表中码字 内容不改变余数与出错位的对应关系。 收到的 CRC 码字 余 数 出错位 码位 A7 A6 A5 A4 A3 A2 A1 正确 1 0 1 0 0 1 1 000 无 错 误 1 0 1 0 0 1 0 1
27、 0 1 0 0 0 1 1 0 1 0 1 1 1 1 0 1 1 0 1 1 1 0 0 0 0 1 1 1 1 1 0 0 1 1 0 0 1 0 0 1 1 001 010 100 011 110 111 101 1 2 3 4 5 6 7 图 10 74CRC 码的出错模式 Gx1011 如果循环码有一位出错用 Gx 作 模 2 除将得到一个不为 0 的余数。如果对余数补 0 继续除下 去我们将发现一个有趣的结果各次余数将按图 10 顺序循环。 例如第一位出错余数将为 001 补 0 后再除补 0 后若最高位为 1 则用除数做模 2 减取余若最高位为 0 则其最低 3 位就是余 数得
28、到第二次余数为 010。以后继续补 0 作模 2 除依次得到 余数为 1000ll反复循环这就是“循环码”名称的由来。 这 是一个有价值的特点。如果我们在求出余数不为 0 后一边对 余数补 0 继续做模 2 除同时让被检测的校验码字循环左移。 图 10 说明当出现余数 101 时出错位也移到 A7 位置。可通过 异或门将它纠正后在下一次移位时送回 A1。 这样我们就不必 像海明校验那样用译码电路对每一位提供纠正条件。当位数 增多时循环码校验能有效地降低硬件代价这是它得以广泛 应用的主要原因。 【例】对图 10 的 CRC 码 Gx1011Cx1010 若接收端收到的码字为 1010111 用
29、Gx1011 做模 2 除得到一 个不为 0 的余数 100 说明传输有错。将此余数继续补 0 用 Gx1011 作模 2 除同时让码字循环左移 1010111。做了 4 次后 得到余数为 101 这时码字也循环左移 4 位变成 1111010。说 明出错位已移到最高位 A7 将最高位 1 取反后变成 0111010。 再将它循环左移 3 位补足 7 次出错位回到 A3 位就成为一个 正确的码字 1010011。 通信与网络中常用的 CRC 在数据通 信与网络中通常 k 相当大由一千甚至数千数据位构成一帧而 后采用 CRC 码产生 r 位的校验位。它只能检测出错误而不能 纠正错误。一般取 r16 标准的 16 位生成多项式有 CRC-16x16x15x21 和 CRC-CCITTx16x15x21。 一般情况下 r 位生成多项式产生的 CRC 码可检测出所有的双错、奇数位错 和突发长度小于等于 r 的突发错以及 1-2-r-1 的突发长度为 r1 的突发错和 1-2-r 的突发长度大于 r1 的突发错。例如对 上述 r16 的情况就能检测出所有突发长度小于等于 16 的突 发错以及 99997 的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届吉林省长春汽车经济技术开发区第六中学高二化学第一学期期末学业质量监测试题含答案
- 铁生锈的科学说课课件
- 2025年初心理学测试题及答案
- 知识付费产品培训课件
- 知识产权培训走进校园课件
- 知识产权培训知识点总结课件
- 建筑工程管理专业中级职称理论考试题库判断题答案及解析(2025年)
- 知识产权培训用图课件
- 知识产权培训江苏省课件
- 知识产权培训宣贯报告课件
- GB/T 45817-2025消费品质量分级陶瓷砖
- JJG 693-2011可燃气体检测报警器
- 学校安全隐患排查整治表
- 2022年有子女离婚协议书手写
- 公路硬化报告范文
- 部编版语文八年级下册第一单元口语交际 应对 练习(含答案解析)
- 部编版八年级上册语文《消息二则》课件(定稿)
- 纳迪亚之宝全流程攻略 100%完结完整通关指南
- 预测分析:技术、模型与应用 - SAP Predictive Analytics
- 教务处作业检查记录表
- 四川省扶贫和移民工作局移民安置独立评估细则-范文
评论
0/150
提交评论