数据校验

数据校验的基本原理

  • 受元器件的质量、电路故障或噪音干扰等因素的影响,数据在被处理、传输和存储的过程中可能出现错误。
    通过硬件设计检验错误并修正,减少软件检错的代价。
  • 基本原理
    增加冗余项。
数据位 冗余位(校验位)
k位 r位
  • 码距:同一编码中,任意两个合法编码之间不同二进制位数的最小值。
    校验码增加冗余位就是为了增大码距。
  • 码距与检错纠错能力的关系:
    码距≥e+1,可检测e个错误;
    码距≥2t+1,可纠正t个错误;
    码距≥e+t+1,(e≥t)可检测e个错误,纠正t个错误。
    码距越大,抗干扰能力越强,纠错能力越强,数据冗余越大。电路也复杂。

奇偶校验

检验信息,冗余位r=1。

  • **校验的原理:**根据有效信息计算校验信息位,使数据位和校验位中1的个数满足奇偶校验的规则。即1的个数是技术个还是偶数个。
  • 偶校验:数据位和校验位异或,结果为零正常。
  • 奇校验:数据位和校验位异或取反,结果为零正常。
  • 奇偶校验的特点:
    • 编码和检错简单
    • 检验效率高。
    • 但检测时如果两个位置上的不同数同时发生错误,可能检测不出来。无法纠错。
    • 然后就有了改进的奇偶校验——方块奇偶校验等。

CRC循环冗余校验

  • 原理
    增加r位校验位,有效信息位k位,则应满足 N = k + r ≤ 2 r − 1 N=k+r≤2^r-1 N=k+r2r1.
  • 生成多项式G(x)
    收发双方约定一个(r+1)位的二进制数G(x),发送方利用G(x)对有效信息多项式进行模2除运算,生成校验码。接收方利用G(x)对接收到的二进制多项式进行模2除运算监测差错及错误定位。
  • 生成多项式G(x)应满足的条件
    • G(x)的首位和末位必须为1;
    • 当被传送信息的任何一位发生错误时,被生成多项式做模2除后的余数不为0
    • 不同位发生错误时,余数不同
    • 对不为0的余数做G(x)的模2除运算,余数循环。

常见的生成多项式:
数据校验_第1张图片

  • 模2除运算规则

    • 加/减运算不进位不借位,即为异或运算。
    • 模2除法:按模2减,求部分余数,不借位。
    • 上商原则:
      当部分余数的首位为1时,商1,减除数;
      当部分余数首位为0时,商0,减除数;
      当部分余数尾数小于除数时,结束,部分余数即为最终余数。
  • CRC编码方法

    • 根据有效信息位k,按上边的公式确定r,查表获得r+1位的G(x);
    • 将有效信息位左移r位;
    • 用左移后的二进制数对G(x)做模2除运算,用得到的余数替换最后r位,即得到最终编码。
  • CRC检错与纠错
    接收方对接收到的编码做模2除运算,余数不为零说名出现错误。
    由于不同位错误的余数不同可以根据余数确定发生错误的位置。
    当一位出错时,对余数做模2除运算,余数有循环特性,错误位发生左移。

硬件实现的一个例子
数据校验_第2张图片

海明校验码

  • 原理
    也是有k位有效信息位,r位校验位,满足 k + r ≤ 2 r − 1 k+r≤2^r-1 k+r2r1
    设k+r位编码从左到右一次为1,2,3,4,5…k+r,r位校验位计为Pi,分别位于编码的第 2 i − 1 2^{i-1} 2i1位上,其余位置为有效信息位。
    Hj的数据有小于j的若干个海明位之和为j的校验位所校验。
    以7/4校验为例
    在这里插入图片描述
    然后异或计算Pi
    在这里插入图片描述
    设置指错字G1G2G3G4
    在这里插入图片描述
    指错位转换成10进制就是发生错误的数位。
  • 海明码的特点
    • 指错码为0不一定无错。
    • 不能区别一位和两位的错

所以可以将海明码和奇偶校验结合起来使用。

你可能感兴趣的:(其他)