简述循环冗余码CRC 校验方法

简述循环冗余码CRC 校验方法,第1张

CRC校验 1、循环校验码(CRC码):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。 2、生成CRC码的基本原理:任意一个由二进制位串组成的代码都可以和一个系数仅为‘0’和‘1’取值的多项式一一对应。例如:代码1010111对应的多项式为x6+x4+x2+x+1,而多项式为x5+x3+x2+x+1对应的代码101111。 3、CRC码集选择的原则:若设码字长度为N,信息字段为K位,校验字段为R位(N=K+R),则对于CRC码集中的任一码字,存在且仅存在一个R次多项式g(x),使得 V(x)=A(x)g(x)=xRm(x)+r(x); 其中: m(x)为K次信息多项式, r(x)为R-1次校验多项式, g(x)称为生成多项式: g(x)=g0+g1x+ g2x2++g(R-1)x(R-1)+gRxR 发送方通过指定的g(x)产生CRC码字,接收方则通过该g(x)来验证收到的CRC码字。 4、CRC校验码软件生成方法: 借助于多项式除法,其余数为校验字段。 例如:信息字段代码为: 1011001;对应m(x)=x6+x4+x3+1 假设生成多项式为:g(x)=x4+x3+1;则对应g(x)的代码为: 11001 x4m(x)=x10+x8+x7+x4 对应的代码记为:10110010000; 采用多项式除法: 得余数为: 1111 (即校验字段为:1111) 发送方:发出的传输字段为: 1 0 1 1 0 0 1 1111 信息字段 校验字段 接收方:使用相同的生成码进行校验:接收到的字段/生成码(二进制除法) 如果能够除尽,则正确, 给出余数(1111)的计算步骤: 除法没有数学上的含义,而是采用计算机的模二除法,即,除数和被除数做异或运算 1011001 1100100 =111101 111101 110010 = 1111

function x=mycrc(data,divisor,type) 

if ((type==1)||(type==2))    n=length(divisor) 

    appender=[0 0 0 0] 

    dividend=[data] 

    if ((type==1)) 

        dividend=[data,appender] 

    end 

    dividendA=dividend(1:5) 

    dividendB=dividend(6:length(dividend)) 

    result=dividendA 

    while((n-1)~=length(result)) 

        result=bitxor(result,divisor) 

        while(result(1)==0 && ((n-1)~=length(result))) 

            result=result(2:length(result)) 

            if ((length(result)<length(divisor)) && (length(dividendB)~=0)) 

                result=[result,dividendB(1)] 

                dividendB=dividendB(2:length(dividendB)) 

            end 

        end 

    end 

 

    x=result 

 

    if (type==2 & result==zeros(size(result))) 

        x=[1]; 

        disp('check successful,data uncorrupted') 

    elseif (type==2) 

        x=[0] 

        disp('check failed data is corrupted') 

    end 

 

else 

    disp('invalid type entered in 3rd parameter it should either be 1 or 2') 

end

x=mycrc(data,divisor,type)

x : 输出

data : 输入

divisor: 8 或者 16

type : 1 或者 2

已知生成多项式生成多项G(X)=X4+X+1,则对诮的代码为10011,冗余位为4位,则被除数为11010110110000,除数为10011,进行模2除法求余式。

110000101

10011 11010110110000

10011

10011

10011

10110

10011

10100

10011

1110

求得校验字段1110

以上就是关于简述循环冗余码CRC 校验方法全部的内容,包括:简述循环冗余码CRC 校验方法、求一个用matlab生成的16位二进制信号的crc校验码的代码、向高手求助,关于校验字段及CRC码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9803538.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存