Xmodem协议中CRC算法的FPAG实现
2012-09-26王远程明
王远,程明
(郑州大学 信息工程学院,河南 郑州 450001)
Xmodem协议是一种被广泛使用的异步文件传输协议。标准主要由Xmodem和 1k-Xmodem两种组成,Xmodem以128字节块的形式传输数据,1k-Xmodem字节块为1k即1 024字节,两种标准都支持一般校验和、CRC两种校验方式。在传输数据时,数据包出错,则支持重传(一般支持 10次)。Xmodem的CRC校验需要对128字节(或1 024字节)数据包进行整体校验。当接收端接收到一个数据包后,如果校验正确,则回送一个确认字符。如果错误则回送一个否认字符,等待发送端重发。对数据包的校验时间直接影响了Xmodem协议的数据传输效率。
数据传输过程中的差错检查方法有很多,常用的有奇偶校验、循环冗余校验码(Cyclical Redundancy Check,缩写为CRC)等。奇偶校验一般适用于一个字节或一个字的数据校验,CRC不仅适合单个字节的校验还适用于数据包数据的校验。在进行大量数据传输的应用中,CRC必不可少。如Xmodem协议,HEX文件,RFID协议,USB通信协议等,都需要进行CRC校验。实践证明,CRC得到了越来越广范的应用。
1 CRC算法原理简介
CRC校验的基本思路是利用线性码原理,对需要进行传输的k位二进制数左移r位,右边空出的r位补0,这r个0的位置即CRC码的位置。通过以上的k+r位数据对生成多项式取余,所得余数即为CRC效验码。
传输时在原始的k位二进制数后加上r位CRC码一起发送出去。接收端将接收到的k+r位数据对生成多项式取余,若余数为0,说明传输数据正确,否则不正确。
下面具体说明CRC校验的实现原理。
设欲传送的数据为k位二进制数,用M(X)表示,

将此数据序列左移r位,即乘以xr,其中r为生成多项式G(x)的最高次幂。……
