100G以太网中高位宽并行以太网中高位宽并行CRC的简化方法的简化方法
在100G以太网媒体接入控制器(Media Access Control,MAC)的设计中,需要采用高位宽的并行数据来降低
对时钟的要求。在使用并行循环冗余校验(Cyclical Redundancy Check,CRC)时会有一个问题,即需要计算
CRC的数据域长度不一定是数据通道位宽的整数倍,导致最后一组数据无法使用数据通道的位宽对其进行CRC
计算。为了解决这个问题,本文提出了在帧前填充0的处理方法。仿真和测试结果都验证了该方法的可行性。该
处理方法也能应用到其他的通信系统中。
李传辉,刘纯武,黄芝平
(国防科学技术大学 机电工程与自动化学院,湖南 长沙 410073)
摘要 摘要:在
关键词 关键词:100G以太网;
0引言引言
IEEE在2010年发布了40/100G以太网标准[1],其中MAC层仍然沿用以前的规定未作大的改变,只是100 Gb/s的高速
率使得无法沿用以前的方法完成CRC值的计算,为此,本文提出了一种简单有效的解决方法。
1循环冗余校验循环冗余校验
在数字通信系统中,为了确保接收到的数据与发送端的数据一致,需要引入差错控制机制。循环冗余校验码由于其误码监
测能力强,抗干扰能力优异,被广泛应用于线路检错。循环冗余检验是一种系统的缩短循环码,它采用多项式编码方法
[2]。设被检验的信息码有n位,信息系列M={mn-1 mn-2…m0},用多项式M(x)可表示为:
M(x) = mn-1 xn-1 + mn-2 xn-2 + … + m1x1 +m0x0(1)
发送方和接收方使用同一个生成多项式G(x),其是一个k阶的二进制多项式,而且G(x)的首位和最后一位的系数都必须是
1,其通用表达式为:
G(x)=xk+gk-1xk-1+gk-2xk-2+…+g1x+1(2)
CRC的计算规则为发送方以xk·M(x)除以生成多项式G(x),将得到的余数R(x)作为校验值,这里的计算规则都是使用二进
制运算规则,R(x)可表示为:
R(x)=CRC(M(x))= xk·M(x)mod G(x)(3)
发送方将CRC值随数据一起发送给接收方,接收方对接收到的数据进行CRC值的计算,并将它与发送方的CRC值进行比
较。如果数据传输过程中没有错误,两者的校验值就会是一致的,相反如果得到的校验值不一致,就可以判断出数据在传输过
程中发生了错误,这时接收方就可以丢弃当前数据或要求发送方重传数据。CRC校验可以百分百地检测出所有的奇数个的随
机错误和长度小于等于k的突发错误。
2100G以太网的以太网的CRC设计设计
在以太网通信中,CRC校验具有重要作用。依据IEEE802.3以太网的帧格式(如图1所示),CRC计算的数据区域包括目
的地址、原地址、长度/类型和负载数据图1以太网帧格式区域。得到的CRC值作为帧校验序列(Frame Check
Sequence,FCS)填充在数据帧尾。其中规定了以太网帧FCS字段的生成算法为CRC32,其生成的多项式表达式为:
G(x)=x32+x26+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1(4)
在吉比特以上速率的通信系统中,传统的串行CRC校验方法已无法满足要求,所以现在有很多新型并行CRC计算方法
[35]。因此在100G以太网中,其CRC也必须采用并行方法,CRC计算的并行位宽就是数据通道的位宽。提高数据位宽可
以降低系统的时钟频率,但另一方面随着并行数据位宽的增加会使得CRC电路的延迟时间增加,影响系统的时序性能。经过
综合考虑本文中设计的数据并行位宽为320。
使用320位的高并行位宽会使得数据的处理变得复杂。比如在MAC层的发送方,上层客户每个时钟就会有一组320位40 B
的数据送给MAC处理,CRC模块就会使用320位的并行算法对其计算。当前的CRC值只与上一次数据得到的CRC值及当前的
数据有关,CRC值初始化为全0,如图2所示。
评论5