收藏 分享(赏)

CRC专题.doc

上传人:cjc2202537 文档编号:6583812 上传时间:2019-04-18 格式:DOC 页数:4 大小:215.50KB
下载 相关 举报
CRC专题.doc_第1页
第1页 / 共4页
CRC专题.doc_第2页
第2页 / 共4页
CRC专题.doc_第3页
第3页 / 共4页
CRC专题.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、1 前言数据损坏是与数据传输和存储有关的首要问题。只要是在通道上传输数据,就总会有出现某些错误的有限概率。关键是接收模块要能区分无错消息和有错消息。数据通信中常用的检错方法包括奇偶码、重复码校验、恒比码校验、行列冗余码校验、汉明码和循环冗余校验(CRC)等。这些方法都是增加数据的冗余量,将校验码和数据一起发送到接受端。接受端对接受到的数据进行相同校验, 再将得到的校验码和接受到的校验码比较, 如果二者一致则认为传输正确。但这些方法都有各自的缺点, 误判的概率比较高。循环冗余码CRC校验技术广泛应用于测控及通信领域, 是当前在信源编码中用来降低误码率的有效手段之一。数字通信中的CRC实现主要分为

2、硬件实现和软件实现两类。在高速通信系统中, 为了适应速度和通信传输的要求,CRC 校验部分往往都设计为串行输入的硬件实现。2 原理CRC 的全称为 Cyclic Redundancy Check, 即循环冗余校验。它是一类重要的线性分组码, 编码和解码方法简单, 检错和纠错能力强, 在通信领域广泛地用于实现差错控制。CRC 校验的基本思想是利用线性编码理论, 在发送端根据要传送的k位二进制码序列, 以一定的规则产生一个校验用的r 位监督码( CRC 码) , 附在原始信息后边, 构成一个新的二进制码序列数共k+r 位, 然后发送出去。在接收端, 根据信息码和CRC 码之间所遵循的规则进行检验,

3、 以确定传送中是否出错。这个规则, 在差错控制理论中称为“生成多项式”。加法和减法运算是用模 2 算法执行,也就是说,这两种运算与“异或”(XOR)运算相同。除了没有进位,多项式算法中的两数相加与普通二进制算法中的多数相加相同。例如:二进制消息流 11001011 表达为 x7+x6+x3+x+1。传输点与接收点约定一个固定的生成器多项式,这是 CRC 计算的关键参数。将数据解释为一个多项式的系数,用一个给定的生成器多项式除这些系数。除得的余数就是 CRC。 假设有一个 m 位消息序列和一个 r 阶生成器多项式,发射器创建一个 n 位(n=m+r)序列,称为帧校验序列( FCS) ,使这个(m

4、+r)位合成帧可以被一个预先确定的序列整除。发射器将 r 个 0 位附加到 m 位的消息,并且用生成器多项式除所得 m+r-1 阶多项式。这样可得到一个阶数等于或小于(r-1)的余数多项式。该余数多项式有 r 个系数,这些系数形成校验和。将商丢弃。传输的数据是原 m 位消息后附 r 位校验和。在接收器上,可以按以下两种标准方法之一评估所接收数据的有效性:(1) 对收到的前 m 个位再次计算校验和,然后与收到的校验和(收到的后 r 个位)进行比较;(2) 对收到的全部(m+r)个位计算校验和,然后与一个 0 余数进行比较。为了说明第二种方法如何得出 0 余数,我们做如下约定:M=消息的多项表达式

5、;R=发射器上所算得余数的多项表达式; G=生成器多项式;Q=用 G 除 M 得到的商。传输的数据对应于多项式 Mxr-R。变量 xr 表示消息为容纳校验和而产生的一个 r 位移位。我们知道:Mxr=QG+R在发射器上将校验和 R 附加到消息中相当于从消息中减去余数。于是,传输的数据变为 Mxr-R=QG,这显然是 G 的倍数。这就是我们在第二种情况下得到 0 余数的过程。不过,这一过程对所传输数据中首 0 位和尾 0 位的个数不敏感。换句话说,无论消息插入还是删除尾 0 位,余数都保持为 0,从而使错误漏检,这表明不会复原成同样的位序列。下面介绍一种克服这一缺点的变通办法。3 剩余法实际上,

6、校验和经过反演后才附加到消息中。这就使接收器上算出的余数(超过 m+r 位)不为 0。在这类情况下,接收器上得到的余数是一个固定值,称为多项式的剩余值。假定 % 符号在下列表达式中表示模运算。对于未经反演附加校验和的情况: (Mxr-R)xrG=0 (注:接收端移位), 在这种情况下,接收器会执行与发射器一样的移位运算。现在,考虑校验和在发射器上经反演后附加到消息流的情况:(Mx r-Rc)xrG 。其中,R c 表示经过反演的校验和。还可以将其写成:(Mx r R + (xr-1 + . + x + 1) xr % G。一个位的反码与其对 1 异或运算的结果相同。这里的 + 号表示模 2 算

7、法中的加法(请注意,在模 2 算法中,加法和减法运算相同) 。在这种情况下,余数与以下表达式相同:(x r-1 + . + x + 1) xr % G,对于给定的生成器多项式来说,此表达式的计算结果将是一个常数。最常用的 CRC 32 生成器多项式在十六进制中是 04C11DB7。与 CRC-32 对应的常数剩余值在十六进制中是 C704DD7B。对于给定的生成器多项式 G 来说,无论在输入端提供何种数据样式,剩余值仍为常数。4 硬件实现4.1 移位算法CRC 校验和的计算是多项式除法过程。在硬件中实现该过程需要使用一个移位寄存器(亦称 CRC 寄存器) 。该移位寄存器的 长度与生成器多项式的

8、阶数相同。CRC 计算过程如下:(1) 初始化 CRC 寄存器;(2) 持续获取消息位,直到获得所有消息位。如果 CRC 寄存器中的高阶位是 1,则向左移一位,并且将其结果与 G 进行异或运算。否则,仅向左移一位。对给定消息完成所有这些步骤后,CRC 寄存器中剩下的就是余数。可以用一种称为线性反馈移位寄存器(LFSR )的电路执行这些步骤。图 1 所示为用 CRC32 多项式计算 CRC 的 LFSR 实现方法。请注意,异或门的布局取决于生成器多项式中项值为 1 的对应项的系数。图中的编号方框各代表一个存储元件(触发器) 。简单的 LFSR。这种电路虽然实现起来简单,对任意长度生成多项式的 g

9、(x)都适用,但算法一次只能处理一位数据,效率太低,对于一个 n 位数据流来说,要占用 n 个时钟周期来计算 CRC 值,主要用于串行通信中,不适合高速通信的场合。4.2 查找表法在必须以较高速度处理数据帧的高速数据网络应用中,这样 LFSR 电路 n 个延时周期的延迟是无法忍受的。这类高速网络应用迫切需要对并行数据流实现 CRC 生成和校验。查表法就是基于该应用的一个改进算法。这种方法是事先制作出一表格,将所有的信息组对应的校验元按次序排序起来,这样只要识别读入的信息组是什么就能用一条指令找到对应的校验元。假设对于每一个段多项式,都能从一张指定的表中找到对应的余式那么余式的实现就控制在一个工

10、作时钟内实现。信息分为P 段,明显地,仅仅 P 个工作时钟就能完成各个余式的计算。如果 P 越小,需要的时间就越短,这种方法在时间上有很大的优越性,但是前提是要有满足存放余式表的存储器。因为对于任一段多项式都要有对应的余式,设每段长为 m,在二进制系统中。则共有 2m 个不同段的多项式,那么需要的存储器大小就为:reg_num=2m其中 reg_num 为存储器的大小,m 为段的长度。上式表明了分段大小与存储器两者的矛盾关系,要缩短时间,段数 P 就得减少,段的长度 m 就增长,存储单元数量就会以指数增加。在实际应用中,采用折中的方法来优化算法。用查表法的实现过程主要分为以下几个步骤。第一步:

11、初始化。存储单元 CRC(CRC 存放着校验元)初始为零。第二步:CRC 的内容与输入端的信息位异或后得到的结果存放到存储单元 CANDM 中。第三步:根据 CANDM 的内容从软件表中查找对应的余式子,并把该余式子更新到存储单元 CRC 中去。第四步:判断是否还有待处理的子字符串,如果有则跳到第二步;反之将 CRC 中的内容送到输出端,然后把 CRC 置零。该算法事先把待校验的信息码的所有 CRC 码全部计算出来,放在一个表里,编码时只要根据信息码从表中找出对应的值即可。因此这种算法执行速度快,适合于高速通信场合,但由于需要大容量的存储表,花费的资源较移位算法要多。4.3 公式法公式法与查表

12、算法一样,也是以字节数据为输入,采用递推算法,不同之处在于公式法使用公式实时计算CRC码,从而省去了查找表,不仅节省了硬件存储资源,还能进一步提高系统的运行速度。根据上面的分析与公式推导,可以得到CRC码的产生与校验算法。设发送的字节矩阵为Mk-1,附加CRC校验码后的增广矩阵M k ,其初始值为M k-1 :00H;而接受的字节矩阵记作N k ,则发送端的CRC码的产生于接收端 CRC校验码算法可以表述为:1. CRC寄存器 C(x)初始化为00H,计数器i初始化为0;2. 输入第i个字节数据,按照上面的递推公式计算余式R i(x),并存入CRC寄存器C(x) ,计数器加1;3. i是否小于

13、k,若是则返回第二步,否则继续下一步;4. 输出CRC寄存器的值 C(x);4.4 总结随着软、硬件技术的不断发展,传统的 CRC 算法被不断地改进完善,新的算法不断被提出. 从本质上说,前边谈到的移位算法即是串行算法,甚至干脆称之为比特流算法,而后边所说的查表算法和公式法则为并行算法,串行算法虽然速度较慢,效率不高,但算法原理简单明了,易于硬件实现,加上串行通信领域的不可替代,于是有了存在的理由。 并行算法的突出优势在速度快,当然它也为此付出了代价花费的硬件资源量较大. 公式法的出现,则不仅进一步加大了并行算法高速的优势,还明显地降低了硬件的开销,因此可以认为是前景较好的一种实现算法。考虑到并行算法的电路实现的本质是以组合逻辑完成信号的处理过程:对于前边谈到的查表算法,是以硬件资源为代价,不予逻辑化简的实现方法,如同用 ROM 实现组合逻辑功能。 对于后来提出的公式算法,则大幅度地削减了硬件逻辑资源的闲置占用,故而不仅能明显降低成本还能有效地提高运算的速度,但其采用的递推算法却不能确保实现逻辑的最简,因而在顾及减轻设计运算量的同时也付出了一定的硬件代价。 此外公式算法还存在须针对大小不同的数据块、选取生成多项式的不同具体推算出相关的硬件实现电路的不足。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报