【信道编码/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

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

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值