高速以太网CRC校验的实现

2007-03-09 19:03:27来源: 互联网
一 引言 为了确保数据在计算机系统中传输和存储中正确可靠,引入了信道编码。对于信道编码有两个方面,一是要求编码后的码流频谱适应信道频率特性,二是检测并纠正产生的误码。前者属于谱成形技术,后者为差错控制技术。CRC码属于后者。它是通过增加冗余信息,达到发现误码的目的。常见的冗余校验有奇偶校验,海明校验,循环冗余校验。 本文讨论循环冗余校验(CRC)的实现,及其在以太网中的应用。 二 循环冗余码介绍 1循环冗余码是建立在近世代数基础上的。编解码电路简单,检错能力强。在计算机系统的数据存储及传输中得到广泛应用。 2编码原理 设待发送比特数据为D(x),生成多项式为G(x)。信息码长k位,校验码长n-k位,则编码后的码长为n位。如图1: 编码步骤:信息数据D(x)乘以 ,得到的多项式除以生成多项式G(x),最终得到的余式R(x)即为CRC校验码。它跟在信息码后一并发往信道。 并不是所有的多项式都可以做位生成多项式G(x),常见的生成多项式有: CRC8=X8+X5+X4+1 CRC-CCITT=X16+X12+X5+1 CRC12=X12+X11+X3+X2+1 CRC16=X16+X15+X5+1 CRC32=X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X1+1 3 CRC32的实现 以太网信道编码采用的是CRC32,所以在这里给出CRC32的实现,它在一般CRC基础上增加了些细节。 介绍以太网MAC帧结构 从数学上讲,相应给定帧的CRC值由下述过程定义: (1) 对该帧的前32位作求补运算。 (2) 然后,将该帧的n位看作为(n-1)阶多项式M(x)的系数。 (3) M(x)乘以 ,然后除以G(x),得到余式R(x)。 (4) 对该比特位逐位求补,结果作为CRC。 主要实现方式有串行和并行两种: (a)通过线性反馈移位寄存器串行实现(以CRC-CCITT为例),见图2 信息流由低位送入寄存器,当所有信息比特送入寄存器完毕后,寄存器中则为校验码。 (b)CRC32的并行实现 串行处理对于高速以太网如100M,10G等,显然是不合适的,在此我门给出CRC的并行实现方法,以一个字节位处理单位。下面给出C语言实现的CRC32源程序: 由于以太网CRC32要求对帧的前32bit取反,我门可以初始化寄存器为全1来达到此目的。 Crcbuff中存放需要编码的信息比特,最后计算出CRC校验码,跟随信息码一同发送出去。 4总结 本文是针对项目中嵌入式设备的联网问题,设计的CRC32校验算法,已经在FPGA中成功实现,由于用FPGA实现编码相对简单,这里就不再累述。 作者Email: lijunshen148@sohu.com

关键字:高速  以太网  crc校验  实现

编辑: 引用地址:http://www.eeworld.com.cn/wltx/qtjs/200703/2482.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
高速
以太网
crc校验
实现

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved