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

上传人:宝路 文档编号:23233372 上传时间:2017-11-30 格式:DOC 页数:7 大小:128.01KB
返回 下载 相关 举报
10G以太网系统中的并行CRC编解码器的设计_第1页
第1页 / 共7页
10G以太网系统中的并行CRC编解码器的设计_第2页
第2页 / 共7页
10G以太网系统中的并行CRC编解码器的设计_第3页
第3页 / 共7页
10G以太网系统中的并行CRC编解码器的设计_第4页
第4页 / 共7页
10G以太网系统中的并行CRC编解码器的设计_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《10G以太网系统中的并行CRC编解码器的设计》由会员分享,可在线阅读,更多相关《10G以太网系统中的并行CRC编解码器的设计(7页珍藏版)》请在金锄头文库上搜索。

1、10G 以太网系统中的并行 CRC 编解码器的设计清华大学电子工程系(100084) 刘 昭 苏 厉 金德鹏 陈 虹 曾烈光通信系统不可避免地要受到各种干扰的影响,使接收端收到的信息与发送端发出的信息不一致,即接收端收到的信息产生了误码。为了降低数据通信线路传输的误码率,通常有改善数据通信线路传输质量和差错检测控制两种方法。差错检测控制的方法很多,本文讨论在 10G 以太网接人系统中并行实现 CRC-32 编解码的方法、并行 CRC 算法的 Unfolding 算法可以实现并行 CRC 的计算,但是并行电路所用的资源增加到了原来的 J 倍。8 位并行 CRC 算法、并行 CRC-16 的编码逻

2、辑、USB 技术中并行 CRC 算法给出的并行算法都建立在公式递推的基础上。当并行深度较小时,递推算法比较适用。而当并行深度很大的情况下(10G 以太网接人系统使用 64 比特并行数据通路),递推过程就显得过于烦琐而缺乏实用性。为此,本文提出了矩阵法、代入法和流水线法等三种算法,解决了深度并行情况下 CRC 算法的实现问题。利用本文提出的算法,可以得出 64 比特并行 CRC 计算的逻辑表达式,并用于 10G 以太网接入系统的设计。设 M(x)为信息多项式,G(x)为生成多项式。一般的 CRC 编码方法是:先将信息码多项式左移 r 位,即 M(x)xr,然后作模 2 除法所得到的月(x)就是

3、CRC 校验码。以二进制码 0x9595H 的 CRC-32 编码为例: 将信息码左移 32 比特变成 0x959500000000H,记为 m。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 程序如下:如果想用以上 CRC-32 程序计算其他长为 L 的序列的基本 CRC-32

4、 码,只需将数组 的上界和 for循环中 i 的初始值改为 32+L,并用该序列代替数组。开始的序列1001010110010101即可。用数字电路实现的串行 CRC 编码器如图 1 所示。图 1 中每个矩形表示 D 触发器。gi 的取值范围是 1 或者0。取 1 时表示通路,取 0 时表示断路。进行基本 CRC-32 编码时,每个 D 触发器初始状态为 0,从数据端串行输入二进制的信息码。信息码输入结束后,D 触发器中锁存的数值就是信息码的基本CRC-32 编码。此电路适用于信息码长为任意值的情况。在某些信息系统中以基本 CRC 产生算法为基础附加了新的规定。例如 IEEE8023 协议规定

5、,以太网的 FES(帧校验序列)域以 CRC-32 为基础,并且在编码时首先将信息码的最初 4 个字节取反码,对目的地址、源地址、长度类型域、数据域、PAD 域求出基本 CRC-32 码之后再将结果取反,最后的结果才是 FCS。同上述过程等价的另一种实现方法是将图 1 中所有 D 触发器的初值置 1,这样结果不必取反。为使电路设计者验证其 FCS 编码正确,IEEE8023 还给出了一个样本,即:将序列 0xBED723476B8FB3145EFB3559H 重复 126 次,最后得到的 FCS 值应该为 0x94D254ACH。10G 以太网是 IEEE8023ae 工作组提出的建议。它保持

6、了以前以太网的帧结构,但是线速度达到了 10Gbps 的量级。为了降低 10G 以太网接入系统的功耗并达到芯片加工工艺的要求,必须采用并行数据通路。为计算 FCS 需要研究并行 CRC 算法。所设计的 10G以太网接入系统采用 64 比特并行数据通路,因此本文主要讨论 64 比特并行 CRC-32 的实现方法。本文共介绍三种实现方法,其中矩阵法和代入法是基于组合逻辑的直接实现方法,第三种方法是基于流水线的实现方法。1 矩阵法记图 1 中的 32 个 D 触发器的输出从右至左依次为 d31,d30,d0。信息码元的输入端为 i。令D=d0d1d31T 表示编码器当前所处的状态,I=i63i62i

7、0表示第 1 至第 64 个时钟的信息码元输入,向量 D=d0d1,d31 T 表示编码器的下一个状态,D(64)表示 64 个时钟之后 CRC编码器所处的状态。则设计 64 位并行 CRC 逻辑编码器,就是找出函数关系 D(64)=f(D,I)。这里所有矩阵运算和代数运算中的加号的语义都是模 2 加法。为了。设计 64 位并行 CRC 电路,必须计算(2)式中的大规模矩阵乘法 T64、T63S 等。2 代入法 矩阵法的优点在于其直观性。但是需要做大规模乘法运算。下面讨论的代入法能够得到与矩阵法相同的结果。同时可以避免大规模矩阵乘法运算。设 8 比特并行 CRC-32 电路的初始状态是d31,

8、d30,d0,输入是 i7,i6,j0,输出是 z31,Z30,z0。利用前面所述的矩阵法,可以得出 8 比特并行 CRC-32 编码器的组合逻辑表达式。如表 1 所示。 下文用+表示按位模 2 和运算,表示链接运算。从 CRC 的(1)式很容易得出以下算法:算法 1:已知序列 N 的 CRC-32 为 A31:0,序列 B(=b7,b6,b0)的 CRC-32 码为 Y31:0。序列 A31:24的 CRC-32 为 X31:0,则延拓序列N,B的 CRC-32 码为Y31:24+X31:24+A23:16,Y23:16+X23:16+A15:8+A7:0,Y7:0+X7:0。推论:已知序列

9、 N 的 CRC-32 为 A31:0,序列 A31:24的 CRC-32 为 X31:0,则补 0 延拓序列N,O的 CRC-32 码为X31:24+A23:16+A15:8,X15:8+A7:0,X7:0。利用上述算法构造 APPEND 模块,其端口 A 和 B 分别表示前导序列的 CRC 和延拓的 8 比特序列,则其输出端口 Z 为拓展之后序列的 CRC。图 2 利用 APPEND 模块构造了级联结构的 64 比特并行 CRC 编码器。这种级联构造的编码器设计比较简单。其中间节点: 显然(3)还可以进一步化简。冗余的逻辑使得这种级联结构占用芯片面积大,且只能用于低速场合。对(3)进一步化

10、简,可以得到 Z2 的最简异或表达式。同理可以得到 Z3Z8 的表达式。Zl,Z2,Z8 分别对应 8 比特、16 比特、64 比特的并行 CRC 运算表达式。具体表达式限于篇幅不在这里给出。Z8 中最长的异或运算表达式有 52 项参加运算,如果使用 4-异或门则只需要用三级,即能在一般 CMOS 工艺的一级传输延迟时间之内完成。当用于以太网接入系统时,因为以太网帧不一定结束在 64 比特边界,因此编码器应该有同时计算 8、16、24、64 比特并行编码的能力。具体电路如图 3。因为一般情况下大量用到 64 比特并行编码,因此平时使能信号 mux 使其他 7 个编码模块不工作以降低功耗。在帧尾

11、部根据具体情况使用这 7 个模块进行剩余字节的编码。 3 流水线法矩阵法和代入法本质上都是设计直接并行编码电路的方法,二者的最终效果是一样的。直接并行实现的 CRC 编码电路控制逻辑比较简单,但是需要进行复杂的组合逻辑运算。为了在更高频率下进行并行 CRC 编码,可以进一步用流水线的方法简化编码逻辑,所付出的代价是整个帧的处理延迟了 8个时钟周期。图 4 给出了 CRC 编码的流水线实现。将并行输入的 64 比特分成 7 个字节,分别用D0、D1、D7 表示。P 模块(P0P7)计算形如Di,O,O,O,O,O,O,O,Di的序列的 CRC,其中 Di,是 Di 位置上的上一次输入。Di的 C

12、RC 码由端口 R31:0输入,Di 由端口 D7:0输入,结果由 Z31:0端口输出。C 模块(C1C7)的输入是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

13、 电路中的 ENC8 模块,因此更有利于在高速电路中应用。4 10G 以太网接入系统中的 CRC 编解码器设计10G 以太网接人系统所需接口速率高达 10Gbps 以上。从降低系统功耗和芯片制造成本的角度考虑希望接口能工作在 200MHz 以下。采用并行化设计虽然可以降低系统时钟频率,但也从以下两方面增加了设计难度。首先,数据通路的并行程度越高,对它的控制就越复杂。系统采用 8 字节并行数据通路,则发送的以太网帧可能在 8 个并行字节中的任意一个位置上结束,控制逻辑的设计就必须考虑所有这些可能性并逐一做出相应的处理。其次,系统中的 CRC 编码器、扰码器等的设计须采用并行算法。为了满足 IEE

14、E8023 协议对以太网帧 CRC 编码的要求,实际的编解码器模块还需要能对输入输出信号进行任意字节数的求反运算。考虑到 10G 接入系统的复杂性,该模块功能应该高度集成化,以便用宏信号端口对其进行操作。在对收到的以太网帧进行校验时,没必要先计算不包括FCS 域的序列的 CRC 编码(结果取反)再与 FCS 域做对比。在编码正确且没有误码的情况下,对整个以太网帧(包括 FCS 域)进行结果不取反的 CRC 编码的结果应该为序列 0xC704DD7BH。采用这种判别方法,无需在帧的结束前停止计算 CRC 编码,因而可以大大简化电路设计。5 CRC 编码器的实现本文提出的各种算法的硬件实现已经通过

15、了 FPGA 验证,并被应用到具体芯片。使用 Xilinx 公司的Virtex2 系列 FPGA 中的 XC2V1000 分别仿真了采用上述代入法和流水线法设计的 CRC 编码器和解码器,验证了设计方法的正确性。在综合考虑逻辑复杂度、所占用的芯片面积和工艺要求后,最终在所设计的 10G 以太网接入芯片中,采用了代入法设计的 CRC 编码器和解码器。10G 以太网接入系统中需要采用并行 CRC 编码器。本文提出了基于组合逻辑的直接实现和基于流水线的实现方法。其中直接实现的方法又分为矩阵法和代入法两种。经过具体推导发现直接实现的编码器可以满足延时要求,因而被本系统所采用。而基于流水线的设计因为其延时较小,可以用于更高速的场合。本文提出的三种并行化设计方法已经通过了硬件验证。这些设计思想同样适用于其他线性移位寄存器,如扰码器的设计。本文摘自电子技术应用

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号