千兆以太网MAC的FPGA实现与设计
作者 包海燕 孟欢 电子科技大学微电子与固体电子学院(四川 成都 610054)
本文引用地址:http://www.amcfsurvey.com/article/201805/380765.htm包海燕(1993-),女,硕士生,研究方向:数字IC设计;孟欢,女,硕士生,研究方向:数字IC设计。
摘要:在数字系统互联设计中,高速串行I/O技术取代传统的并行I/O技术成为当前发展的趋势,与传统并行接口技术相比,串行方案提供了更大的带宽、更远的距离、更低的成本和更高的能力。以太网作为一种高速的串行传输方式,是当前最基本、最流行的局域网组网技术,为了适应各种新开展的业务如流视频等,其速率也在不断提高。GMII是标准的吉比特以太网接口,位于MAC层和物理层之间。因此,可以基于FPGA平台,实现GMII接口协议,完成数据在MAC和物理层间的通信。
1 GMII接口协议简介
MII (Media Independent Interface(介质无关接口)或称为媒体独立接口,是IEEE-802.3定义的以太网行业标准。以太网中包括有一个数据接口以及一个MAC和PHY之间的管理接口[1]。数据接口包括两条独立的信道,这两条信道分别用于发送和接收数据,它们都独自拥有数据信号、时钟信号以及控制信号。GMII是千兆以太网的MII的接口,该数据接口总共需要16个信号,接口信号如图1所示。
GMII采用8位接口数据,工作时钟125 MHz,因此传输速率可达1000 Mbps。同时兼容MII所规定的10/100 Mbps工作方式。MII接口主要分为四个部分,分别是MAC层到物理层的发送数据接口、物理层到MAC层的接收数据接口、物理层到MAC层的状态指示接口、MAC层和物理层的控制和状态信息接口(MDIO)。具体的信号说明如表1所示。
2 设计方案
Xilinx提供的千兆以太网开发套件为Virtex-5 ML505/ML506开发板,该开发板支持10/100 M、1/10 G以太网,是学习和研发高速连接设备的理想平台。Xilinx提供了可参数化的10/1 Gbps以太网物理层控制器功能的LogiCORE解决方案[2]。该核设计用来同最新的Virtex-5、Virtex-4和Virtex-II Pro平台FPGA一起工作,并可以无缝集成到Xilinx设计流程中。
以太网系统的两个主要模块是媒体接入控制(MAC)和物理层PHY,MAC由数据拆装和媒体访问管理两个模块组成,完成数据帧的封装、解封、发送和接收功能。PHY对发送的数据按照物理层的编码规则将数据编码,再进行数模转换变成模拟信号把数据送出去。接收数据则与之相反。
2.1 电路架构
该以太网控制器主要进行MAC子层、MAC层与上层协议的接口以及MAC层与PHY接口的GMII的FPGA设计,总体结构框图如图2所示。整个系统分为待发送数据的产生模块、发送模块、CRC编码生成模块、物理层编解码模块、接收及校验模块、GMII管理模块等部分。发送模块和接收模块主要提供MAC帧的发送和接收功能,其主要操作有MAC帧的封装与解包以及错误检测,它直接提供了到外部物理层芯片的并行数据接口[3]。在实现中物理层处理直接利用商用的千兆PHY芯片,在仿真过程中利用物理层IP_CORE来实现,所以本文重要关注在MAC控制器的开发上。
2.2 MAC协议介绍
MAC控制模块是由数据拆装和媒体访问管理两个模块组成,完成数据帧的封装、解封、发送和接收功能。帧格式如表2所示。
前导码的作用是让物理层信号与接收帧时序达到永久同步。长度类型表明后面发送数据的长度,当实际数据的长度不够时,需要补0填充。类型0X0800代表IP协议数据,16进制0x809b代表Appletalk协议数据等,本文发送的是IP协议数据。帧结尾的数据是根据CRC电路计算生成的校验码。
2.3 以太网的FCS处理
校验位的FCS即为循环冗余码CRC,它的编码详细过程是,根据数据流M的长度和特性,选择长度为n次的特征多项式,在数据流M之后添加n个0,作为被除数除以由特征多项式构成的(n+1)bit的二进制数列P,得到商Q以及除数R,除数R为n bit,将R作为冗余码添加在M之后发送出去。Crc8编码的串行算法实现电路如图3所示[4]:
编码前先将所有寄存器初始化,之后将待发送的信息序列依次在input端输入编码器,信息序列全部输入之后,寄存器中的值就是所要求的余数,即CRC校验码。本文使用的是crc32多项式,多项式的表达式如下所示,需要编码的数据段从目的字段开始到数据字段结束,利用同样的类似的电路,即可利用verilog实现冗余码编码。
3 电路实现与仿真
3.1 MAC发送端-数据成帧
以太网的发送方式是按照一个帧一个帧来发送的,网络设备和组件在接收一个帧以后,需要一段短暂的时间来恢复并为接收下一帧做准备。帧间隙是帧与帧之间需要的时间余量,以太网的最小帧间隙为96 bit(12 byte)。所以在开始发送时,要判断是否满足帧间隙。根据GMII接口的传输时序如图4,设计图5所示的状态机,通过对每个状态中,对字节进行计数实现状态的跳转。
在数据传输过程中,MAC发送模块将上层协议需要发送的数据经过以太网协议进行封装将数据发送给PHY层,发送模块还可将从主机接收到的帧头以及帧尾标志信号,与主机接口从外部存储单元获取的发送数据按照标准协议进行封装,将数据以8位数据宽度的格式在信道空闲时发送给PHY层,再通过PHY芯片将数据进行数模转换发送到网络中去。
在物理层部分,利用ISE平台生成Etherent 1000 BASE-X PCS/PMA IP CORE来接收MAC层的数据,该核支持内部或外部GMII,可实现与MAC或定制逻辑的链接。IP核内的主要组成部分为PMA和PCS,其中PMA为物理层的媒介层,PCS为物理层编码模块,可以进行8 B/10 B编解码,64 B/66 B编解码,COMMA字符检测,将接收的数据对齐到合适的字边界,伪随机序列的生成和检测,时钟修正和通道绑定等[5]。
3.2 MAC接收端-数据提取
MAC端接收到传回的数据后,需要对接收到的数据进行检测,首先提取出pay_load数据和冗余检验码crc_cmp。当发送数据包的长度不确定时,不能通过计数器来提取对应的数据和校验码,可行的操作如图6的时序图所示。
在接收端如果检测到前导码的第一个字节55时,计数器开始计数,当计数到14时,下一个时钟,便是发送来的实际数据,产生Rx_dv_i信号,直到接收到四个字节的校验码时拉低,并将Rx_dv_i延迟四拍得到Rx_dv_a4信号,同时将Rx_data也延迟四拍,则在Rx_dv为高电平且Rx_dv_a4为高电平,取Rx_data_d4上的数据,即为pay_load数据,在Rx_dv为低电平,Rx_dv_a3为高电平时,Rx_data_a4为校验码。采用这种方案,在不确发送数据的个数情况下,可以分别提取出pay_load数据和fcs校验码数据。
3.3 电路功能仿真
提取到相应的数据后,先将发送端的数据和接收到的数据进行比较,如果不同,产生data_error信号的低电平,指示出错,同时将接收到的数据送入CRC编码电路,来产生校验码rx_crc,将发送端的校验码crc_cmp与rx_crc进行比较,如果不同,产生crc_error的低电平信号。最终电路的错误指示信号error由data_error和crc_error相与产生。
设计完成以后,利用modelsim软件对电路进行了仿真,仿真波形如图7所示:可以看到三个错误标志信号error,在开始工作后均为高电平,表明该电路成功完成了在MAC和PHY之间的数据传输。
4 结论
高速串行传输技术是FPGA未来的三大应用领域之一,本文从以太网传输的总体结构和基本协议出发,设计了千兆以太网传输系统的方案,以MAC+PHY为核心,完成了网络架构中物理层和数据链路层的基本功能。通过仿真验证了数据在数据链路层和物理层之间准确无误的传输,稳定性好,灵活性高,本系统还可以用来传输图像和大数据信息。
参考文献:
[1]曹云鹏.以太网MAC层协议研究与FPGA实现[D].兰州:兰州大学,2011.
[2]王春华.Xilinx可编程逻辑器件设计与开发(基础篇).[M]北京:人民邮电出版社,2011.
[3]刘民.嵌入式千兆以太网络图像传输系统设计[D].大连:大连理工大学,2012.
[4]陈玉泉.一种并行CRC算法的实现方法[P].厦门:厦门大学,2005.
[5]王长清.基于FPGA的千兆以太网通信板卡的设计与实现[D].河南:河南师范学报,2011.
本文来源于《电子产品世界》2018年第6期第67页,欢迎您写论文时引用,并注明出处。
评论