以太网测试仪中基于FPGA的FCS实现_第1页
以太网测试仪中基于FPGA的FCS实现_第2页
以太网测试仪中基于FPGA的FCS实现_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘要以太网测试仪在流量发生以及数据接收检测过程中,都需要计算 fcs,还要能支持线速。本文简要介绍了以太网帧 fcs 的计算方法,分析了基于 fpga 的实时 fcs 计算面临的问题,提出了一种兼容 10/100/1000mbps 三种速率的 fcs 计算实现。【关键词】以太网 fpgafcsvhdl作为高性能以太网测试仪,全线速的流量发生与接收检测已成为必备功能。以 10/100/1000m 以太网为例,速率越高,所用时钟频率越高,时钟周期越小,对发送和接收的设计要求也越高。由于普通网卡缓存受限,加之发送时需要主机 cpu 参与,无法达到全线速,因此大多数测试仪都采用 fpga+phy 的方

2、案,利用 fpga 在时序控制、并行处理等方面的优势,辅之以存储芯片,很好地解决了线速处理的问题。在以太网测试中,涉及 fcs(帧校验和)实时计算,特别是在线速下。本文通过一款测试仪中流量发生设计实践为例,对实际中所遇到的问题进行分析,给出 10/100/1000m 三种速率下 fcs 的 vhdl 实现方法和仿真结果。1 fcs 计算方法在 ieeestd802.3csma/cd 接入方法和物理层规范中,规定了 fcs 的算法为 32 比特循环冗余校验(crc32),生成多项式:g(x)=x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+12

3、vhdl 实现在硬件设计上,fpga 与 phy 芯片之间采用 mii 和 gmii 接口。10/100m 采用 mii 接口,发送时钟分别为 2.5mhz、 25mhz,数据宽度 4bit;1000m 采用 gmii 接口, 发送时钟 125mhz,数据宽度 8bit。在利用 fpga实现 fcs 时,就需要考虑三种不同时钟频率以及两种不同的数据宽度的处理。2.1 10/100m10/100m 宜采用 4bit 宽度的并行 crc32 算法,硬件实现电路如下:next_crc(0)<=(d(0)xorc(28);next_crc(1)<=(d(1)xord(0)x

4、orc(28)xorc(29);next_crc(31)<=c(27);其中,d3:0为输入的 4bit 宽度数据,c31:0为前一次 crc32 计算结果,next_crc31:0为输入 4bit 数据后计算出的新的结果。详细电路可参考1中的代码。2.2 1000m1000m 下对应的发送数据宽度为 8bit,宜采用 8bit 宽度的并行 crc32 算法,其硬件实现电路如下:next_crc(0)<=d(6)xord(0)xorc(24)xorc(30);next_crc(1)<=d(7)xord(6)xord(1)xord(0)xorc(24)x

5、orcxorc(30)xorc(31);next_crc(31)<=d(5)xorc(23)xorc(29);其中,d7:0为输入的 8bit 宽度数据,c31:0为前一次 crc32 计算结果,next_crc31:0为输入 8bit 数据后计算出的新的结果。详细电路可参考1中的代码。3 问题分析基于 fpga 的 10/100/1000m 三种接口速率的以太网 fcs 设计中,有两种方案,一种是仅用 8bit 宽度的 crc32 算法,另一种针对 10/100m 采用 4bit 宽度算法,1000m 采用 8bit 宽度算法。第一种方案在 10/100m 情况下,需要将 4b

6、it 宽度数据先转换成 8bit,并利用发送时钟的二分频驱动 crc32 计算,时序控制麻烦,计算结果的使用也不便。实际仿真发现,10/100m 下采用8bit 宽度的 crc32 算法,计算结果正确性难以保证,并且由于 crc32 计算时钟和发送时钟存在倍数关系,流量发生时 fcs 字段的实时插入变得难以处理。因此,最终选择了第二种方案。前面仅给出了用于硬件实现的两种并行 crc32 算法,并未对算法中的输入输出数据做出更具体的说明,这一点往往被忽视,却又很关键。实现时,在计算之前根据输入数据的可能需要进行 bit倒序处理;计算结果,则需要进行字节内 bit 倒序及反相处理。4 实例以 8b

7、it 宽度的 crc32 计算为例。-输入数据处理,i_data 为输入数据。d(0)<=i_data(7);d(7)<=i_data(0);-crc32 电路,见 2.2。-时序控制,i_clk 为发送时钟,i_init 为初始化脉冲信号,i_data_valid 为 i_data有效指示信号。process(i_clk)beginif(i_clkeventandi_clk=1)thenif(i_init=1)thenc<=xffffffff;elsif(i_data_valid=1)thenc<=next_crc;endif;endi

8、f;endprocess;-输出处理o_crc32(31)<=notc(24);o_crc32(30)<=notc(25);o_crc32(29)<=notc(26);o_crc32(28)<=notc(27);o_crc32(27)<=notc(28);o_crc32<=notc(29);o_crc32(25)<=notc(30);o_crc32(24)<=notc(31);o_crc32(7)<=notc(0);o_crc32(6)<=notc(1);

9、o_crc32(5)<=notc;o_crc32(4)<=notc(3);o_crc32(3)<=notc(4);o_crc32(2)<=notc(5);o_crc32(1)<=notc(6);o_crc32(0)<=notc(7);5 仿真测试以 8bit 宽度的 crc32 仿真测试为例,用于测试的以太网帧为:da:112233445566sa:404900000001l/t:0000data:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fcs:500b0394如图 1 所示。6 结论实践表明,10/100/1000m 速率下的 fcs 计算采用 8bit 宽度的 crc32 算法虽然比采用两种不同宽度的算法看似简洁,但却给实现带来了难题。而分别采用 4bit 和 8bit 宽度的算法,使各自的处理均同步在其发送或者接

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论