你现在位置:首页>技术论文>数据通讯>正文
10G以太网系统中的并行CRC编解码器的设计
日期:2008-6-23 22:04:15 来源:本站整理  
点击: 作者:未知
点击【】放大字体.

通信系统不可避免地要受到各种干扰的影响,使接收端收到的信息与发送端发出的信息不一致,即接收端收到的信息产生了误码。为了降低数据通信线路传输的误码率,通常有改善数据通信线路传输质量和差错检测控制两种方法。差错检测控制的方法很多,本文讨论在10G以太网接人系统中并行实现CRC-32编解码的方法、并行CRC算法的Unfolding算法可以实现并行CRC的计算,但是并行电路所用的资源增加到了原来的J倍。8位并行CRC算法、并行CRC-16的编码逻辑、USB技术中并行CRC算法给出的并行算法都建立在公式递推的基础上。当并行深度较小时,递推算法比较适用。而当并行深度很大的情况下(10G以太网接人系统使用64比特并行数据通路),递推过程就显得过于烦琐而缺乏实用性。为此,本文提出了矩阵法、代入法和流水线法等三种算法,解决了深度并行情况下CRC算法的实现问题。利用本文提出的算法,可以得出64比特并行CRC计算的逻辑表达式,并用于10G以太网接入系统的设计。设M/(x)为信息多项式,G(x)为生成多项式。一般的CRC编码方法是:先将信息码多项式左移r位,即M(x)·xr,然后作模2除法

WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

(M(x)· x r)/G(x)=Q(x)+R(x)/G(x) (1)
WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

所得到的月(x)就是CRC校验码。以二进制码0x9595H的CRC-32编码为例:
WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

· 将信息码左移32比特变成0x959500000000H,记为m。
WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

·CRC-32G的生成多项G(x)=x32+x26+x23+x22+x16+x12+xll+x10+x8+x7+x5+x4+x2+x+1,转换成16进制码为g=0x104C01DB7H。用m除以g(模2除法),所得余数0x3738F30BH就是0x9595H的CRC-32码。实现0x9595H的基本CRC-32编码的Matlab程序如下:
——可——编——程——控-制-器-技——术——门——户

WWW_P※LCJS_CO※M-PLC-技-.术_网

g(33:-1:1)=[1,0 0 0 0 0 1 0 0,1 1 0 0 0 0 0 1,0 0 0 1 1 1 0 1,1 0 1 1 0 1 1 1];
WWW_P※LCJS_CO※M-PLC-技-.术_网

WWW_PLCJS@_COM%-PLC-技.术_网

a(48:-1:1)=[1 0 0 1 0 1 0 1,1 0 0 1 0 1 0 1,0 0 0 0 0 0 0 0,0 0 0 0 0 0 0 0,0 0 0 0 0 0 0 0,0 0 0 0 0 0 0 0];
WW.W_PLC※JS_C,OM-PL,C-技.术_网

WWW_P※LCJS_CO※M-PLC-技-.术_网

for i=48:-1:33,
WW.W_PLCJS_COM-PLC-技.术_网

W1WW_P4LCJS_COM-PLC-技.术_网

if a(i)= =1
WWW_PLCJS_COM-PLC-技.术_网

WWW_PL※CJS_COM-PLC-技.术_网

a(i:-1:i-32)=xor(a(i:-1:i-32),i(33:-1:1));
WWW_PLCJS_COM-PLC-技.术_网

WWcW_PLCJS_COM-PLC-技.术_网

end
WWW_PLCJS@_COM%-PLC-技.术_网

P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

end
WWW_P※LCJS_CO※M-PLC-技-.术_网

WWW_PLCJS_COM-PLC-技.术_网

crc=a(32:-1:1)
WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

P.L.C.技.术.网——可编程控制器技术门户

如果想用以上CRC-32程序计算其他长为L的序列的基本CRC-32码,只需将数组α的上界和for循环中i的初始值改为32+L,并用该序列代替数组。开始的序列"1001010110010101"即可。用数字电路实现的串行CRC编码器如图1所示。图1中每个矩形表示D触发器。gi的取值范围是1或者0。取1时表示通路,取0时表示断路。进行基本CRC-32编码时,每个D触发器初始状态为0,从数据端串行输入二进制的信息码。信息码输入结束后,D触发器中锁存的数值就是信息码的基本CRC-32编码。此电路适用于信息码长为任意值的情况。在某些信息系统中以基本CRC产生算法为基础附加了新的规定。例如IEEE802.3协议规定,以太网的FES(帧校验序列)域以CRC-32为基础,并且在编码时首先将信息码的最初4个字节取反码,对目的地址、源地址、长度/类型域、数据域、PAD域求出基本CRC-32码之后再将结果取反,最后的结果才是FCS。同上述过程等价的另一种实现方法是将图1中所有D触发器的初值置1,这样结果不必取反。为使电路设计者验证其FCS编码正确,IEEE802.3还给出了一个样本,即:将序列0xBED723476B8FB3145EFB3559H重复126次,最后得到的FCS值应该为0x94D254ACH。10G以太网是IEEE802.3ae工作组提出的建议。它保持了以前以太网的帧结构,但是线速度达到了10Gbps的量级。为了降低10G以太网接入系统的功耗并达到芯片加工工艺的要求,必须采用并行数据通路。为计算FCS需要研究并行CRC算法。所设计的10G以太网接入系统采用64比特并行数据通路,因此本文主要讨论64比特并行CRC-32的实现方法。本文共介绍三种实现方法,其中矩阵法和代入法是基于组合逻辑的直接实现方法,第三种方法是基于流水线的实现方法。
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

  1 矩阵法
WWW_PL※CJS_COM-PLC-技.术_网

WWW_P※LCJS_CO※M-PLC-技-.术_网

记图1中的32个D触发器的输出从右至左依次为d31,d30,…,d0。信息码元的输入端为i。令D=[d0d1…d31]T表示编码器当前所处的状态,I=[i63i62…i0]表示第1至第64个时钟的信息码元输入,向量Dˊ=[d0ˊd1ˊ,…d31ˊ] T表示编码器的下一个状态,D(64)表示64个时钟之后CRC编码器所处的状态。则设计64位并行CRC逻辑编码器,就是找出函数关系D(64)=f(D,I)。
WW.W_PLCJS_COM-PLC-技.术_网

WWW_PL※CJS_COM-PLC-技.术_网

do=d31+i63
WW.W_PLC※JS_C,OM-PL,C-技.术_网

WWW_PLCJS@_COM%-PLC-技.术_网

d1=d0+d31+i63
WWW_P※LCJS_COM-PLC-)技.术_网

WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

d2=d1+d31+i63
WW.W_PLC※JS_C,OM-PL,C-技.术_网

WW.W_PLC※JS_C,OM-PL,C-技.术_网

d3=d2
W1WW_P4LCJS_COM-PLC-技.术_网

WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

WWW_P※LCJS_COM-PLC-)技.术_网

——可——编——程——控-制-器-技——术——门——户

d31=d30
WWcW_PLCJS_COM-PLC-技.术_网

WWW_P※LCJS_CO※M-PLC-技-.术_网

写成行列式,有D=TD+Si63
WWW.PLCJS.COM——可编程控制器技术门户

WWW_P※LCJS_COM-PLC-)技.术_网

其中:
WWcW_PLCJS_COM-PLC-技.术_网

WW.W_PLCJS_COM-PLC-技.术_网

 
WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

2个时钟之后编码器的状态为:
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

D=TD+Si62=T)TD+Si63)+Si62=T2D+TSi63+Si62
plcjs.技.术_网

WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

依此类推,有:
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

D(64)=T64D+T63Si63+T62Si62+…+TSi1+Si0 (2)
WWW_PL※CJS_COM-PLC-技.术_网

WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

这里所有矩阵运算和代数运算中的加号的语义都是模2加法。为了。设计64位并行CRC电路,必须计算(2)式中的大规模矩阵乘法T64、T63S等。
WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

  2 代入法
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

plcjs.技.术_网

矩阵法的优点在于其直观性。但是需要做大规模乘法运算。下面讨论的代入法能够得到与矩阵法相同的结果。同时可以避免大规模矩阵乘法运算。设8比特并行CRC-32电路的初始状态是d31,d30,…,d0,输入是i7,i6,…,j0,输出是z31,Z30,…,z0。利用前面所述的矩阵法,可以得出8比特并行CRC-32编码器的组合逻辑表达式。如表1所示。
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

WWW_PL※CJS_COM-PLC-技.术_网

即:
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

WWW_PLCJS@_COM%-PLC-技.术_网

z31=d23+d29+i5;
WW.W_PLCJS_COM-PLC-技.术_网

WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

z30=d22+d31+i7+d28+i4
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

WWW_PLC※JS_COM-PmLC-技.术_网

WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

P.L.C.技.术.网——可编程控制器技术门户

z0=d24+d30+i6+i0
WW.W_PLCJS_COM-PLC-技.术_网

  表1 8位行CRC逻辑表
WWcW_PLCJS_COM-PLC-技.术_网

z0 d24,d30,i6,i0
z1 d25,d31,i7,i1,d24,d30,i6,i0
z2 d26,i2,d25,d31,i7,i1,d24,d30,i6,i0
z3 d27,i3,d26,i2,d25,d31,i7,i1
z4 d28,i4,d27,i3,d26,i2,d24,d30,i6,i0
z5 d29,i5,d28,i4,d27,i3,d25,d31,i7,i1,d24,d30,i6,i0
z6 d30,i6,d29,i5,d28,i4,d26,i2,d25,d31,i7,i1
z7 d31,i7,d29,i5,d27,i3,d26,i2,d24,i0
z8 d0,d28,i4,d27,i3,d25,i1,d24,i0
z9 d1,d29,i5,d28,i4,d26,i2,d25,i1
z10 d2,d29,i5,d27,i3,d26,i2,d24,i0
z11 d3,d28,i4,d27,i3,d25,i1,d24,i0
z12 d4,d29,i5,d28,i4,d26,i2,d25,i1,d24,d30,i6,i0
z13 d5,d30,i6,d29,i5,d27,i3,d26,i2,d25,d31,i7,i1
z14 d6,d31,i7,d30,i6,d28,i4,d27,i3,d26,i2
z15 d7,d31,i7,d29,i5,d28,i4,d27,i3
z16 d8,d29,i5,d28,i4,d24,i0
z17 d9,d30,i6,d29,i5,d25,i1
z18 d10,d31,i7,d30,i6,d26,i2
z19 d11,d31,i7,d27,i3
z20 d12,d28,i4
z21 d13,d29,i5
z22 d14,d24,i0
z23 d15,d25,i1,d24,d30,i6,i0
z24 d16,d26,i2,d25,d31,i7,i1
z25 d17,d27,i3,d26,i2
z26 d18,d28,i4,d27,i3,d24,d30,i6,i0
z27 d19,d27,i5,d28,i4,d25,d31,i7,i1
z28 d20,d30,i6,d29,i5,d26,i2
z29 d21,d31,i7,d30,i6,d27,i3
z30 d22,d31,i7,d28,i4
z31 d23,d29,i5
WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

下文用"+"表示按位模2和运算,"{,}"表示链接运算。从CRC的(1)式很容易得出以下算法:

本新闻共2页,当前在第11 2  
plcjs.技.术_网

上一篇: 共享一个万能CRC校验的方法
下一: 没有了
评论内容
载入中...
载入中...
P
L
C



|










|


P
L
C









·最新招聘信息
·最新求职信息
·推荐产品
·推荐厂商
·栏目热门排行
·站内热门排行