g以太网系统中的并行crc编解码器的设计.doc

g以太网系统中的并行crc编解码器的设计.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
G以太网系统中的并行CRC编解码器的设计 ———————————————————————————————— 作者: ———————————————————————————————— 日期: 10G以太网系统中的并行CRC编解码器的设计 清华大学电子工程系(100084) 刘 昭 苏 厉 金德鹏 陈 虹 曾烈光 通信系统不可防止地要受到各种干扰的影响,使接收端收到的信息与发送端发出的信息不一致,即接收端收到的信息产生了误码。为了降低数据通信线路传输的误码率,通常有改善数据通信线路传输质量和过失检测控制两种方法。过失检测控制的方法很多,本文讨论在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除法 所得到的月(x)就是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程序如下: 1矩阵法 记图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〕。 这里所有矩阵运算和代数运算中的加号的语义都是模2加法。为了。设计64位并行CRC电路,必须计算(2)式中的大规模矩阵乘法T64、T63S等。 2代入法 矩阵法的优点在于其直观性。但是需要做大规模乘法运算。下面讨论的代入法能够得到与矩阵法一样的结果。同时可以防止大规模矩阵乘法运算。设8比特并行CRC-32电路的初始状态是d31,d30,…,d0,输入是i7,i6,…,j0,输出是z31,Z30,…,z0。利用前面所述的矩阵法,可以得出8比特并行CRC-32编码器的组合逻辑表达式。如表1所示。 ? 下文用+表示按位模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编码器。这种级联构造的编码器设计比拟简单。其中间节点: 显然(3)还可以进一步化简。冗余的逻辑使得这种级联构造占用芯片面积大,且只能用于低速场合。对(3)进一步化简,可以得到Z2的最简异或表达式。同理可以得到Z3…Z8的表达式。Zl,Z2,…,Z8分别对应8比特、16比特、……、64比特的并行CRC运算表达式。具体表达式限于篇幅不在这里给出。Z8中最长的异或运算表达式有52项参加运算,如果

您可能关注的文档

文档评论(0)

ipad0a + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档