循环冗余校验码CRC原理与LFSR循环码编码器原理

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


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 接收过程?

接收过程

  1. 计算CRC比较。
  2. 收到的二进制序列(信息码+循环码)除以多项式,如果余数为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

在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChipWeaver

觉得有用的话点个赞吧 :)

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值