10G以太网系统中的并行CRC编解码器的设计
3 流水线法
矩阵法和代入法本质上都是设计直接并行编码电路的方法,二者的最终效果是一样的。直接并行实现的CRC编码电路控制逻辑比较简单,但是需要进行复杂的组合逻辑运算。为了在更高频率下进行并行CRC编码,可以进一步用流水线的方法简化编码逻辑,所付出的代价是整个帧的处理延迟了8个时钟周期。图4给出了CRC编码的流水线实现。将并行输入的64比特分成7个字节,分别用D0、D1、……、D7表示。P模块(P0~P7)计算形如"Di,O,O,O,O,O,O,O,Di"的序列的CRC,其中Diˊ,是Di位置上的上一次输入。Diˊ的CRC码由端口R[31:0]输入,Di由端口D[7:0]输入,结果由Z[31:0]端口输出。
C模块(C1~C7)的输入是"D0,O,O,O,O,O,O,O,D0'和"D1ˊ,O,O,O,O,O,O,O,D1"的CRC(分别由端口R1和R2输入),输出是"D0ˊ,D1ˊ,O,O,O,O,O,O,D0,D1" CRC。求P的逻辑表达式时,重复应用算法1的推论,可以求出"Diˊ,O,O,O,O,O,O,Di"的CRC码,再应用算法1,就可以求出"Diˊ,O,O,O,O,O,O,O,Di"的CRC码。直接应用算法1可以求出C模块的逻辑表达式。P模块和C模块进行异或运算的长度远小于直接并行CRC电路中的ENC8模块,因此更有利于在高速电路中应用。
javascript:window.open(this.src);" style="cursor:pointer;"/>
4 10G以太网接入系统中的CRC编解码器设计
10G以太网接人系统所需接口速率高达10Gbps以上。从降低系统功耗和芯片制造成本的角度考虑希望接口能工作在200MHz以下。采用并行化设计虽然可以降低系统时钟频率,但也从以下两方面增加了设计难度。首先,数据通路的并行程度越高,对它的控制就越复杂。系统采用8字节并行数据通路,则发送的以太网帧可能在8个并行字节中的任意一个位置上结束,控制逻辑的设计就必须考虑所有这些可能性并逐一做出相应的处理。其次,系统中的CRC编码器、扰码器等的设计须采用并行算法。为了满足IEEE802.3协议对以太网帧CRC编码的要求,实际的编解码器模块还需要能对输入输出信号进行任意字节数的求反运算。考虑到10G接入系统的复杂性,该模块功能应该高度集成化,以便用宏信号端口对其进行操作。在对收到的以太网帧进行校验时,没必要先计算不包括FCS域的序列的CRC编码(结果取反)再与FCS域做对比。在编码正确且没有误码的情况下,对整个以太网帧(包括FCS域)进行结果不取反的CRC编码的结果应该为序列0xC704DD7BH。采用这种判别方法,无需在帧的结束前停止计算CRC编码,因而可以大大简化电路设计。
5 CRC编码器的实现
本文提出的各种算法的硬件实现已经通过了FPGA验证,并被应用到具体芯片。使用Xilinx公司的Virtex2系列FPGA中的XC2V1000分别仿真了采用上述代入法和流水线法设计的CRC编码器和解码器,验证了设计方法的正确性。在综合考虑逻辑复杂度、所占用的芯片面积和工艺要求后,最终在所设计的10G以太网接入芯片中,采用了代入法设计的CRC编码器和解码器。
10G以太网接入系统中需要采用并行CRC编码器。本文提出了基于组合逻辑的直接实现和基于流水线的实现方法。其中直接实现的方法又分为矩阵法和代入法两种。经过具体推导发现直接实现的编码器可以满足延时要求,因而被本系统所采用。而基于流水线的设计因为其延时较小,可以用于更高速的场合。本文提出的三种并行化设计方法已经通过了硬件验证。这些设计思想同样适用于其他线性移位寄存器,如扰码器的设计。