文章编号
:
丨
674 -7070 (2012) 03 ~0258 -G8
嵌入式系统CRC循环冗余校验算法设计研究
彭伟
1
摘要
介绍了
CRC
循环冗余校验基本原
理及生成多项式表示,分别研究了嵌入
式系统
C RC - -Dallas/ Maxim
与
CRC-16-
IBM
生成多项式及其硬件描述.以
DS18B20
器件的
ROM ID/Scratchpad
数
据校验及
Modbus
总线网络数据帧校验
为例,通过对生成多项式及硬件描述的
分析研究得出了基本比特型校验算法设
计,在数学推导的基础上得出了其改进
的比特型校验算法及单字节、半字节查
表校验算法
.
为获得更高的校验速度,提
出了一种基于块及多表的校验算法,比
较了几种校验算法的
R O M
空间占用与
校验处理速度
.
所设计的
CRC
校验程序
为嵌入式系统数据的可靠传输提供了重
要保证
.
关键词
嵌入式;循环冗余校验;差错控制;
校验;生成多项式;算法
中图分类号
TP368. 1/TN919. 3
文献标志码
A
收稿日期
2011-11-02
资助项目湖北省教育科学
“
十一五”规划项
目
( 2009B-349
)
作者简介
彭伟
,
男,工学硕士
,
副教授,研究方向为
嵌人式系统设计、网络技术以及算法设计
.
pw95aaa@ foxmail. com
i
武汉城市职业学院电子信息工程学院
,
武汉,
430064
0 引言
嵌入式系统微控制器与外部数据采集器件之间、嵌入式系统内
多个微控制器之间以及微控制器与上位主机之间通过各种接口传输
数据时,被噪声影响的问题不可避免. 为提高数据传输的可靠性,需
要对传输过程进行 差错控制2]. 循环冗余校验(Cyclic Redundancy
Check,CRC)由于编、解码方法简单,检错与纠错能力强而被广泛应
用.本文将以Dallas/Maxim的传感器DS18B20及 Modbus总线网络数
据 帧 CRC校验为例,分析研究典型的CRC-8、CRC-16校验生成多项
式及硬件描述,设计对应的基本比特型校验算法,通过数学推导,进
一步得出改进的比特型校验算法、单字节及半字节查表校验算法.为
获得更高的校验处理速度,提出一种基于块及多表的校验算法,并比
较各种算法的码表所占用ROM空间及校验处理速度,所设计的CRC
校验算法将为嵌入式系统数据传输提供重要保证.
1 CRC基本原理及生成多项式表示
1.1
基本原理
CRC循环冗余校验码是一种线性分组码[],在不增加过多冗余
位的情况下就能具备较强的检错与纠错能力. 假设待传送的k 位信息
码为M = (M 4_i,M4_2,… ,6 ^ ,6?0),将其看成多项式的系数,在其后面
添加厂个。,有 M (x) • xr = Mk_1 • *r+k_1 + Mk_2 • *r+k_2 + … + M 0 •
*r+1 +M0 -21■,将该多项式作为被除式,选择一个r 次生成多项式G ()
做除法,可得商式^ ( ) 和最高为r _ 1 次的余式R ( ) ,即:
M (x) • ^ = 0 (%) + R(x) ⑴
G () H () + G ( ) , ⑴
M(%) • *r = ^ (*) G(%) + R (x). (2)
CRC校验码计算使用模2 除法,加、减通过按位异或运算实现,
无进位和借位.例如:R ( ) + R ( ) 与 R ( ) - R ( ) 结果均为全。.在
式( 2 ) 两边同加R(*),有
M (*) • *r + R (*) = Q(*) G(*). (3)
显 然 ,式 (3 )左端代数式为G (* )的整数倍,它正好是左移「位的
原始信息多项式后面附加余式的结果.该多项式的各项系数为
(Mk_ ~M0,Rr_i ~ & ) ,其 中 高 M 立为信息码,低 「位为所附加的CRC
校验码( 监督码),发送端输出的正是该多项式的所有系数.如果该序