基于FPGA千兆以太网数据传输系统设计

时间:2022-10-10 06:31:45

基于FPGA千兆以太网数据传输系统设计

摘要:目前千兆以太网具有传输距离远、传输速度快、稳定可靠等优点,是当前嵌入式系统研究的重点。本文通过利用FPGA内部的MAC硬核与Marvell 88E1111物理层芯片相连接,实现千兆以太网数据传输系统。该系统中使用UPP协议和IP协议,以及与上位机通信的ARP请求和应答。通过上位机可验证该系统的正确性和可靠性。

关键词:千兆以太网 FPGA UPP协议 MAC帧

中图分类号:TP393.11 文献标识码:A 文章编号:1007-9416(2015)12-0000-00

1 引言

以前的以太网通信方案大多数使用DSP器件、ARM器件或单片机,数据最高传输速率最高为10Mbps,远远不能当今所需求的高速、高性能传输速率要求。由于FPGA 拥有丰富的逻辑和管脚资源,常用于高速数据处理和通信的嵌入式系统。通过使用FPGA器件可使得以太网速率可达到1000Mbps,可以直接与网络上的其他终端相连。

本文设计一个以FPGA为核心的嵌入式千兆以太网数据传输系统,为了更好地为上位机软件所支持,通过利用UDP/IP [1]协议来完成数据到上位机的高速传输。

2 系统总体设计

如图1所示,为本文所设计的千兆以太网数据传输系统框图。该系统首先通过上位机发送请求指令,经网络变压器RJ45与物理层芯片PHY相连接,将原始的比特流转化为并行数据。PHY芯片与FPGA的MAC控制器接口实现通信。物理层PHY芯片选用的是Marvell 公司的88E1111芯片,该芯片提供多种接口,如MII、GMII、RGMII、SGMII等,本文所选择的是GMII接口。FPGA作为核心器件,选用Xinlinx公司的Virtex-5 系列器件,实现以太网MAC控制器、上层协议,主要协议包括ARP协议, UDP/IP协议以及用户逻辑设计。FPGA内部的以太网MAC 控制器由 IP core 产生,这样做不仅可以大大的缩短设计周期, 还可以提高设计质量。

3 FPGA逻辑设计

千兆以太网FPGA设计结构框图如图1所示,整个系统框图包括以太网 MAC控制器的 设计, UDP/IP协议设计以及用户逻辑的设计。本文中千兆以太网MAC控制器是由FPGA内部自带的三态以太网IP核产生,该硬核用于实现MAC帧数据的接收和发送、MAC层与上层UDP/IP协议接口的连接以及 MAC 层与物理层( PHY) 芯片接口的连接。

FPGA采用千兆以太网传输数据,数据量较大,传输较快,因此采用没有握手应答机制的UDP协议。在用户逻辑设计部分,为了避免PC机的缓冲区拥堵,造成无法收到数据,采用收发确认的方式进行传输,即由PC机主动请求数据,FPGA端根据请求数据的命令返回数据包或状态包。

3.1 以太网MAC层的FPGA逻辑设计

3.1.1以太网MAC帧格式

MAC帧的格式[2]如图2所示。

(1)前导码:7个字节(10101010),用于收发双方的时钟同步。(2)帧定界符:1字节(10101011),标志MAC帧的开始。(3)目的地址:6个字节,表示目的地址的物理地址。(4)源地址:6个字节,表示源地址的物理地址。(5)长度/类型:2个字节,若值小于等于1500B时,代表数据段是长度。否则,代表上层使用的协议,如0X0800代表为IP协议,若为0X0806代表ARP协议。(6)数据和填充:46~1500个字节,用于存放被传输的数据。若值小于46B,要对其进行数据的进行填充,确保使其达到46B,一般填充0B。(7)帧校验序列:4个字节,一般采用循环冗余校验(CRC)。

前导码

(7字节) 帧定界符

(1字节) 目的地址

(6字节) 源地址

(6字节) 长度/类型

(2字节) 数据和填充

(46~1500字节) 帧校验序列

(4字节)

3.1.2以太网MAC控制器设计

以太网控制器主要负责MCA帧的封装与解封、数据的缓存以及各个层接口的连接。本文通过FPGA内部自带的Embedded Tri-Mode Ethernet MAC Wrapper 的IP核来实现以太网MAC控制器的设计[3]。

GMII 接口是实现MAC 控制器与PHY芯片连接通信,主要用于是接收和发送MAC帧,并可以提供MDIO/MDC接口,对物理层芯片的寄存器控制读写,来配置物理层的工作方式和读取物理层的工作状态。它可在125MHz下运行工作,提供高达1000Mbps的带宽。另外,它还支持半双工/全双工工作,并与IEEE802.3-2000标准完全兼容。

以太网MAC发送模块和接收模块主要是对MAC帧的封装和解包及错误检测。在发送MAC帧时,发送模块需要在其前面添加7字节前导码和1字节帧起始定界符,在末尾添加帧校验序列,再发送给物理层。若数据的长度小于最小长度46个字节,将在其后面以0进行填充。在接收MAC帧时,接收模块将前导码与帧起始定界符去掉,将目的地址信息提取出来进行判断是否与FPGA的物理地址相匹配或是时候可以接受ARP的广播地址,并对帧尾的校验信息进行CRC校验。

FIFO接收模块和发送模块是将接收与发送的数据缓存起来,一定程度提高了接收数据的正确性。

3.2上层协议的FPGA逻辑设计

如图3所示,该上层协议的FPGA设计由主要由RX_CTRL模块进行数据包的解包,IP_MAC_addr_buffer地址设置模块对FPGA的MAC地址、IP地址以及端口号进行设置,TX_CTRL模块进行数据包的发送,PKG_CTRL_FSM模块进行总体控制组成。

ARP协议实现:由于在此局域网上只有该系统与一台主机进行通信,并没有进行对ARP缓存表做逻辑设计,因此FPGA不能主动发送ARP请求,只能被动响应ARP请求。当RX_CTRL模块接收到ARP请求时,开始构造ARP应答数据包,将应答包中的目的地址填写为主机的物理地址(74:D4:35:5D:FE:C4),源地址填写该FPGA所设置的物理地址(00:27: 13:65:4f:10),按照同样的格式将源IP、目的IP地址与数据包类型填写到ARP应答数据包,全部写入之后启动发送命令。

UDP协议实现:在RX_CTRL模块中通过解析MAC帧,将接收到UDP数据包解析出来,需要进行数据包中的端口字段的判断,若是上位所发送的命令数据,则进行用户逻辑的响应,若不是需要响应的命令数据,则丢弃,不采取任何响应动作。在发送UDP的数据包时,在TX_CTRL模块中构建UDP的数据包头,包括源端口、目的端口、UDP数据长度和校验和。在通过Link_tx_fifo_if接口与MAC控制器连接通信。

4 系统测试

首先上位机发送命令给FPGA,主动请求数据。FPGA接收到数据包后进行命令的解析,根据请求数据的命令返回数据包给上位机。本文所采用的是ezUDP客户端测试软件发送UDP包,如图4所示,发送命令ff55aa01,FPGA端将返回1024 BYTE个数据+辅助数据,辅助数据为ID和系统时间戳。

5 结语

本文以Virtex-5 系列的FPGA为平台,通过利用 FPGA内部所提供的千兆以太网 IP 核以及使用UDP\IP协议,完成了无缝连接的千兆以太网数据传输系统的设计,可使数据速率达到1Gbit/s。测试表明,该系统工作稳定,能有效、高速地实现网络数据的传输。

参考文献

[1]谢希仁.计算机网络[M].4版.北京:电子工业出版社,2003.

[2]徐洪波,俞承芳.基于FPGA的以太网MAC子层协议设计实现[J].复旦学报:自然科学版,2004,43(1):50-53.

[3]詹俊鹏,.基于Altera FPGA的千兆以太网实现方案[J].电子设计工程,2009,17(2):50-52.

上一篇:基于新高校会计制度视角下的会计核算研究 下一篇:小区物业信息管理系统的设计