【信道编码/Channel Coding】CRC校验码

简介:


这是本专栏信道编码/Channel Coding的第四站,想对信道编码有一个系统性的认识可以看本专栏的 信道编码的整体框架 一文。而在本篇文章中,将介绍CRC校验码的基本原理。

目录

简介:

一、CRC(Cyclic Redundancy Check)原理

1.1 生成多项式

1.2 编码原理

1.3 接收方的校验

1.4 CRC校验码的纠错能力


一、CRC(Cyclic Redundancy Check)原理


沿用本专栏的 信道编码的整体框架 一文中的分组码符号表示,CRC也可写为 C(n,k),其中冗余信息段长度 r=n-k。

1.1 生成多项式

很多人在初学过程中题目会给好生成多项式T(x),但是当自己亲自设计通信系统时,会考虑到底用什么生成多项式。实际上,生成多项式都是通过一些规则推导而得,查表沿用即可。而常用的有以下几种:

名称T(x)
CRC-8x^8+x^2+x+1
CRC-12x^{12}+x^{11}+x^3+x^2+x^1+1
CRC-16x^{16}+x^{15}+x^2+1
CRC-CCITTx^{16}+x^{12}+x^5+1

1.2 编码原理

以 C(7,4)CRC校验码为例,我们这里假设使用生成多项式:

 T(x)=x^3+x+1 (1 0 1 1) 

信息段为: 

m=1010

算法: 

  • 首先根据生成多项式的最高位,在m后面补上r=n-k个0;
  • 用补零后得到的码与生成多项式代表的码进行模二除法;
  • 用模二除法得到的r位余数加到信息段m的后面
  • 完成编码

 可以看到,CRC的编码方法相当简单!

1.3 接收方的校验

CRC校验码在接收方的检错手段非常简单,接收方直接就拿接收到的码和生成多项式代表的码进行模二除法,若余数为0则无差错。

这就可以联系到本专栏另一篇文章 纠错编码与差错控制 中的差错控制方法,我们在采用ARQ的通信系统中,用CRC可以快速检测错误,所以CRC比较适合ARQ。

1.4 CRC校验码的纠错能力

当对接收码进行模二除法,错误比特的变化会导致余数的循环变化,所以当满足下面的条件的时候,CRC校验码就有了纠错能力:

2^r-1 \geqslant n

实践可得,比如我们有一个CRC码101001010:

接收码余数出错位
1010010110011
1010010000102
1010011101003
1010000101014
1010110101115
1011010100116
1000010101107
1110010100018
0010010100109

会发现余数能告知出错位是什么。其数学原理我尚未弄清楚。

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页

打赏作者

The Big Tom

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值