文章目录
1 产生原理
循环冗余校验码Cyclic Redundancy Check(CRC)
简介:在发送端根据要传送的K位二进制码序列,以一定的规则产生一个校验用的r位监督码(CRC码),附在信息后面组成n=k+r位的码发出去。这种编码也叫(n,k)码。对于一个给定的(n,k)码,存在一个高次幂为r的多项式G(x),根据多项式G(x)可以生成k位信息的校验码,G(x)叫做这个CRC码的生成多项式, 生成多项式的最高位和最低位必是1。
1.1 CRC可检测的错误?
- 突发长度小于n-k+1的突发错误;
- 大部分突发长度等于n-k+1的突发错误,其中不可检出的占2-(n-k-1);
- 大部分突发长度大于n-k+1的突发错误,其中不可检出的占2-(n-k);
- 所有与许用码组 码距 小于dmin-1的错误及所有奇数个错误。
1.2 CRC生成过程?
生成过程:发送信息C(x)左移r位,表示为C(x)×2r,C(x)右边空出的r位就是校验码的位置。通过C(x)×2r模2除以生成多项式G(x)得到的余数就是校验码。
1.3 接收过程?
接收过程:
- 计算CRC比较。
- 收到的二进制序列(信息码+循环码)除以多项式,如果余数为0,则说明传输过程无错误发生。
2 CRC 的计算
以输入数据0x5a,G(x)=x^8+x^2+x+1计算为例。
2.1 手算
首先了解模2运算:
模2加:0+0=0,0+1=1,1+1=0 -> a(模2加)b = a⊕b
模2减:0-0=0,0-1=1,1-0=1,1-1=0 -> a(模2减)b = a⊕b
模2乘:0×0=0,0×1=0,1×1=1
模2除:0/1=0,1/1=1
根据生成过程:C(x)×2^r模2除以生成多项式G(x)得到的余数就是校验码。
G(x)对应:0x107


本文详细阐述了循环冗余校验(CRC)的工作原理,包括其检测错误的能力、生成过程和接收验证步骤。并通过实例演示如何手动计算及使用在线工具,并深入介绍了Verilog实现CRC-8的线性反馈移位寄存器(LFSR)编码结构。
最低0.47元/天 解锁文章
2344

被折叠的 条评论
为什么被折叠?



