微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 10G以太网系统中的并行CRC编解码器的设计

10G以太网系统中的并行CRC编解码器的设计

时间:02-11 来源:不详 点击:

D''=TD'+Si62=T)TD+Si63)+Si62=T2D+TSi63+Si62

依此类推,有:

D(64)=T64D+T63Si63+T62Si62+…+TSi1+Si0  (2)

这里所有矩阵运算和代数运算中的加号的语义都是模2加法。为了。设计64位并行CRC电路,必须计算(2)式中的大规模矩阵乘法T64、T63S等。

2 代入法

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

即:

z31=d23+d29+i5;

z30=d22+d31+i7+d28+i4

z0=d24+d30+i6+i0
表1 8位行CRC逻辑表

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

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

算法1:已知序列N的CRC-32为A[31:0],序列B(=[b7,b6,…,b0])的CRC-32码为Y[31:0]。序列A[31:24]的CRC-32为X[31:0],则延拓序列{N,B}的CRC-32码为{Y[31:24]+X[31:24]+A[23:16],Y[23:16]+X[23:16]+A[15:8]+A[7:0],Y[7:0]+X[7:0]}。

推论:已知序列N的CRC-32为A[31:0],序列A[31:24]的CRC-32为X[31:0],则补0延拓序列{N,O}的CRC-32码为{X[31:24]+A[23:16]+A[15:8],X[15:8]+A[7:0],X[7:0]}。

利用上述算法构造APPEND模块,其端口A和B分别表示前导序列的CRC和延拓的8比特序列,则其输出端口Z为拓展之后序列的CRC。图2利用APPEND模块构造了级联结构的64比特并行CRC编码器。这种级联构造的编码器设计比较简单。其中间节点:

Z1(n)=f(r,d[0:7]  n[31,0]

Z2(n)=f(Z1,d[8:15])=f(f(r,d[0:7]),d{8:15])

…    (3)

    显然(3)还可以进一步化简。冗余的逻辑使得这种级联结构占用芯片面积大,且只能用于低速场合。对(3)进一步化简,可以得到Z2的最简异或表达式。同理可以得到Z3…Z8的表达式。Zl,Z2,…,Z8分别对应8比特、16比特、……、64比特的并行CRC运算表达式。具体表达式限于篇幅不在这里给出。Z8中最长的异或运算表达式有52项参加运算,如果使用4-异或门则只需要用三级,即能在一般CMOS工艺的一级传输延迟时间之内完成。当用于以太网接入系统时,因为以太网帧不一定结束在64比特边界,因此编码器应该有同时计算8、16、24、……、64比特并行编码的能力。具体电路如图3。因为一般情况下大量用到64比特并行编码,因此平时使能信号mux使其他7个编码模块不工作以降低功耗。在帧尾部根据具体情况使用这7个模块进行剩余字节的编码。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top