热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

CRC详解及在LTE中的应用

CRC一、基本原理CRC即循环冗余校验码(CyclicRedundancyCheck),CRC检验原理实际上就是在一个K位二进制数据序列之后附加一个R位二进制检验码(序列)

CRC

一、基本原理

    CRC循环冗余校验码Cyclic Redundancy Check, CRC检验原理实际上就是在一个K位二进制数据序列之后附加一个R位二进制检验码(序列),从而构成一个总长为N=K+R位的二进制序列;附加在数据序列之后的这个检验码与数据序列的内容之间存在着某种特定的关系。如果因干扰等原因使数据序列中的某一位或某些位发生错误,这种特定关系就会被破坏。因此,通过检查这一关系,就可以实现对数据正确性的检验。

二、几个基本概念

1、帧检验序列FCSFrame Check Sequence):为了进行差错检验而添加的冗余码。

2、多项式模2运行:实际上是按位异或(Exclusive OR)运算,即相同为0,相异为1,也就是不考虑进位、借位的二进制加减运算。如:10011011 + 11001010 = 01010001

3、生成多项式(generator polynomial):当进行CRC检验时,发送方与接收方需要事先约定一个除数,即生成多项式,一般记作Gx)。生成多项式的最高位与最低位必须是1。常用的CRC码的生成多项式有:

下表中列出了一些见于标准的CRC资料:

名称

生成多项式

简记式

应用举例

CRC-4

x4+x+1

3

ITU G.704

CRC-8

x8+x5+x4+1

31

DS18B20

CRC-12

x12+x11+x3+x+1

5E

 

CRC-16

x16+x15+x2+1

8005

IBM SDLC

CRC-ITU**

x16+x12+x5+1

1021

ISO HDLC, ITU X.25, V.34/V.41/V.42, PPP-FCS

CRC-32

x32+x26+x23+...+x2+x+1

04C11DB7

ZIP, RAR, IEEE 802 LAN/FDDI, IEEE 1394, PPP-FCS

CRC-32c

x32+x28+x27+...+x8+x6+1

1EDC6F41

SCTP

每一个生成多项式都可以与一个代码相对应,如CRC8对应代码:100110001生成多项式的比特数越大,其差错检测能力越强;漏检错误率越低。

三、CRC检验码的计算

计算方法为:在K位信息字段的后面添加R0,再除以G(x)对应的代码序列,得到的余数即为r(x)对应的代码(应为R位;若不足,而在高位补0)

计算示例

设需要发送的信息为M = 1010001101,产生多项式对应的代码为P = R5。在M后加50,然后对P做模2除法运算,得余数r(x)对应的代码:01110。故实际需要发送的数据是101000110101110

四、CRC校验

在接收端收到了CRC码后用生成多项式为G(x)去做模2除,若得到余数为0,则码字无误。若如果有一位出错,则余数不为0,而且不同位出错,其余数也不同。可以证明,余数与出错位的对应关系只与码制及生成多项式有关,而与待测码字(信息位)无关。下表给出了G(x)1011C(x)1010的出错模式,改变C(x)(码字),只会改变表中码字内容,不改变余数与出错位的对应关系。

    如果循环码有一位出错,用G(x)作模2除将得到一个不为0的余数。如果对余数补0继续除下去,我们将发现一个有趣的结果;各次余数将按上表顺序循环。例如第一位出错,余数将为001,补0后再除(补0后若最高位为1,则用除数做模2减取余;若最高位为0,则其最低3位就是余数),得到第二次余数为010。以后继续补0作模2除,依次得到余数为1000ll…,反复循环,这就是循环码名称的由来。这是一个有价值的特点。如果我们在求出余数不为0后,一边对余数补0继续做模2除,同时让被检测的校验码字循环左移。当出现余数(101)时,出错位也移到A7位置。可通过异或门将它纠正后在下一次移位时送回A1。这样我们就不必像海明校验那样用译码电路对每一位提供纠正条件。当位数增多时,循环码校验能有效地降低硬件代价,这是它得以广泛应用的主要原因。

五、CRC在LTE中的运用

    LTE TDD系统采用了4种格式的CRC:CRC24A、CRC24B、CRCl6、CRC8。其生成多项式如下:

CRC-24Ag(x)=x24+x23+x18+x17+x14+x11+x10+x7+x6+x5+x4+x3+x+1;

CRC-24B:  g(x)=x24+x23+x6+x5+x+1;

CRC-16:  g(x)=x16+x12+x5+1;

CRC-8:  g(x)=x8+x7+x4+x3+x+1;

    其中长度为24的CRC24A和CRC24B主要用于共享信道数据传输,长度为16的CRCl6主要用于下行控制信道和广播信道数据传输,长度为8的CRC8主要用于CQI(Control quality information)信息的传输。

校验多项式

使用的信道

CRC-24A

PDSCH/PUSCH/PMCH/PCH

CRC-24B

PDSCH/PUSCH/PMCH/PCH

CRC-16

PBCH

CRC-8

控制信令


    首先对传输块TB(长度为A)按照CRC-24A的生成多项式添加24bitsCRC则传输块添加CRC校验后的长度则为B=L+A

    上述 TB 块数据添加完 24 为校验码后,若长度超过 Z=6144,则必须分段,分成若干个码块,并对这些码块使用生成多项式CRC-24B再次进行CRC处理,对每一分段都进行CRC添加。

    在下列计算中如果填充比特 F 大于 0,则填充比特添加到第一个码块的开始 端。 如果 B 小于 40,填充比特添加到码块的开始位置。 在编码器的输入端,填充比特将被设置为空




推荐阅读
  • 本文详细介绍了如何准备和安装 Eclipse 开发环境及其相关插件,包括 JDK、Tomcat、Struts 等组件的安装步骤及配置方法。 ... [详细]
  • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
  • 离线安装Grafana Cloudera Manager插件并监控CDH集群
    本文详细介绍如何离线安装Cloudera Manager (CM) 插件,并通过Grafana监控CDH集群的健康状况和资源使用情况。该插件利用CM提供的API接口进行数据获取和展示。 ... [详细]
  • 本文详细介绍了如何下载并安装 Python,包括选择合适的版本、执行安装程序以及设置环境变量的步骤。此外,还提供了测试安装是否成功的简单方法。 ... [详细]
  • 2012年7月30日,语言岛团队宣布其智能记单词软件V0.3.4.554版本正式开源。该版本不仅支持跨平台使用,还引入了多项创新功能,旨在帮助用户更高效地记忆单词。 ... [详细]
  • 主调|大侠_重温C++ ... [详细]
  • Java 中重写与重载的区别
    本文详细解析了 Java 编程语言中重写(Override)和重载(Overload)的概念及其主要区别,帮助开发者更好地理解和应用这两种多态性机制。 ... [详细]
  • 本文档汇总了Python编程的基础与高级面试题目,涵盖语言特性、数据结构、算法以及Web开发等多个方面,旨在帮助开发者全面掌握Python核心知识。 ... [详细]
  • 本文将详细介绍通过CAS(Central Authentication Service)实现单点登录的原理和步骤。CAS由耶鲁大学开发,旨在为多应用系统提供统一的身份认证服务。文中不仅涵盖了CAS的基本架构,还提供了具体的配置实例,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 深入浅出TensorFlow数据读写机制
    本文详细介绍TensorFlow中的数据读写操作,包括TFRecord文件的创建与读取,以及数据集(dataset)的相关概念和使用方法。 ... [详细]
  • Google排名优化-面向Google(Search Engine Friendly)的URL设计 ... [详细]
  • 深入解析Spring Cloud微服务架构与分布式系统实战
    本文详细介绍了Spring Cloud在微服务架构和分布式系统中的应用,结合实际案例和最新技术,帮助读者全面掌握微服务的实现与优化。 ... [详细]
  • 本文详细探讨了Java命令行参数的概念、使用方法及在实际编程中的应用,包括如何通过命令行传递参数给Java程序,以及如何在Java程序中解析这些参数。 ... [详细]
  • 本文将详细介绍如何安装和使用 CactiEZ 的中文版本,帮助那些对英文界面不太熟悉的用户轻松掌握这一强大的网络监控工具。 ... [详细]
  • 本文详细介绍了如何在Python3环境中配置Appium1.4.6,并指导如何连接模拟器进行自动化测试。通过本文,您将了解从环境搭建到模拟器连接的完整流程。 ... [详细]
author-avatar
9158Zsc
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有