10G以太网系统中的并行CRC编解码器的设计
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个模块进行剩余字节的编码。
- LT3751如何使高压电容器充电变得简单(08-12)
- 三路输出LED驱动器可驱动共阳极LED串(08-17)
- 浪涌抑制器IC简化了危险环境中电子设备的本质安全势垒设计(08-19)
- 严酷的汽车环境要求高性能电源转换(08-17)
- 适用于工业能源采集的技术 (08-10)
- 单片式电池充电器简化太阳能供电设计(08-20)