0 引言
随着通信技术的迅猛发展,千兆以太网以其传输速度快、距离远、接口普及、成本低、易于集成等特点,受到业内青睐,广泛应用在通信、金融、商业、教育和政府机关等领域。
SoPC即可编程片上系统,以FPGA为载体构造面向应用的完整系统,具有开发周期短、难度和成本低的优点。Xilinx公司推出基于FPGA器件开发SoPC的开发环境EDK,并在新一代器件中集成硬核EMAC,使得FPGA能够和千兆以太网实现无缝连接。
本文研究并设计了一种基于SoPC的千兆以太网接口卡,重点对其组成、工作流程、EMAC、时钟管理、用户逻辑设计和软件设计等关键技术进行了描述,并开发测试用例进行测试验证。
1 千兆以太网接口卡系统结构
本文采用Xilinx公司的Virtex-5 FX70T作为核心器件,基于嵌入式处理器PPC440实现千兆以太网接口卡高速通信功能。在设计实现中,所设计的接口卡包括PPC440、DMA控制器、MPMC、EMC、UART、定时器、EMAC、中断控制器和GTX等内容,如图1所示。
其中,PPC440是整个SoPC的核心,它控制所有部件,运行控制程序。Xilinx提供PPC440的硬核,支持32位流水线,支持32位运算,单核最高主频550MHz,处理能力1000DMIPS。在本设计中,PPC440工作主频为400MHz,内部PLB总线频率为100MHz。
DMA控制器能够在CPU配置之后长时间地独立引导以太网数据在EMAC和MPMC之间高速交换。Xilinx提供独立的IP核CDMAC,CDMAC的结构包含4个DMA引擎,128bytes存储器触发能力,分散的地址数据Buffer。CDMAC针对MPMC提供了2个独立的数据操作端口,针对EMAC提供了为其硬件总线构造的4个收发端口,在CDMAC内部有数据通道、控制通道,各包含2个DMA引擎,可以根据数据的长度产生DMA的不同长度读写触发工作模式,最大效率地提高操作效率。
DDR2用来解决FPGA内部RAM不足的问题,本系统采用MPMC作为DDR2的控制器。MPMC提供了1~8个端口来存取内存,每个端口都能选择一系列连接个性接口模块(PIMs),包含PPC440MC、PLB、NPI、XCL和VFBC等接口。本系统将MPMC配置为两端口模式。一个端口是PPC440MC,用于和
PPC440的接口;另一个端口为NPI接口,数据宽度为64位,用于要发送数据的输入DDR2作为缓存。
FLASH用来固化和贮存可执行的软件程序,通过EMC接口连接在PLB总线上。UART用来完成PC机和SoPC系统之间的通信,定时器用来为实时操作系统提供周期节拍。
中断控制器接收FPGA内部各种中断,包括定时器中断、串口中断等,并上报给PPC440,等待PPC440进行处理。
EMAC采用Xilinx提供的硬核实现,用户逻辑完成对EMAC的访问和控制。EMAC产生的数据通过GTX进行串并/并串转换后,通过外部光纤进行通信。
2 千兆以太网接口卡设计
千兆以太网接口卡基于SoPC设计,采用Xilinx提供的PPC440、MPMC、EMC、EMAC等软硬核,结合自主开发的用户逻辑,共同完成干兆以太网接口卡的通信功能。
2.1 工作原理
千兆以太网接口卡发送过程如下:
(1)当需要发送时,通过外部高速接口将传输数据写入内部RAM中,暂时存入DDR2中;
(2)当DDR2中数据达到一定的数量后,向PPC440发送中断信号;
(3)当PPC440收到中断申请后,通过DMA通道将数据从千兆以太网送出。
千兆以太网接口卡接收过程如下:
(1)当千兆以太网接收数据后,产生中断;
(2)当PPC440收到中断申请后,通过DMA通道将数据写入DDR2中;
(3)外部高速接口通过内部RAM,将DDR2中的数据读出。
2.2 EMAC
千兆以太网MAC采用Xilinx公司提供的三速嵌入式以太网MAC核(EMAC)实现。该IP核集成了10/100/1000Mb/s以太网MAC核,符合802.3—2002规范,支持全双工的10/100/10013Mb/s,半双工的10/100Mb/s。支持多种可配置的物理层接口,包括MII、GMII、RGMII、SGMII和1000BASE—XPCS/PMA接口。EMAC中包含主机接口、客户端、时钟管理、MII/GMII/RGMII接口等,如图2所示。
在设计中,根据系统需求对EMAC进行配置。配置接口为主机配置模式,并以8位数据进行访问,配置速率为固定千兆模式,配置物理接口为SGMII模式,通过GTX进行串并/并串转换。
2.3 时钟管理
整个系统需要提供2个外部时钟:40MHz单端时钟和125MHz差分时钟。
40MHz时钟通过倍频产生100MHz、200MHz和400MHz时钟。100MHz时钟为PLB总线提供时钟,200MHz时钟为DDR2提供时钟,400MHz时钟为
PPC440内频时钟。
125MHz差分时钟用于提供GTX、EMAC和内部逻辑时钟。125MHz高质量的差分时钟经过IBUFDS后直接连接GTX的CLKIN端,然后GTX返回一个125MHz时钟REFCLKOUT,经过内部DCM产生125MHz和162.5MHz时钟,分别提供给GTX并行端时钟、EMAC时钟和内部逻辑,如图3所示。
2.4 用户逻辑设计
用户逻辑中完成三个功能:EMAC配置接口设计、客户端发送单元设计和客户端接收单元设计。
EMAC配置接口实现PPC440和EMAC之间的访问控制。EMAC通过Xilinx提供的IPIF接口挂接在PLB总线上。
发送单元负责将待发送的数据按照一定时序发送到MAC核,再通过GTX输出到数据链路中。客户端发送时序如图4所示。
客户端发送过程如下:
(1)当客户端需要发送数据时,首先将第一个字节送到数据线(TXD),同时将数据有效信号(TXDVLD)置高;
(2)当EMAC收到第一个字节后,返回一个应答信号(TXACK);
(3)客户端收到应答信号后,将剩余数据按照字节发送,在数据发送完成之前,TXDLVD信号一直为高。
接收单元负责根据客户端接收时序接收来自于MAC的数据。客户端接收时序如图5所示。
客户端接收过程如下:
(1)当EMAC有数据发送到客户端时,接收数据信号(RXD)和数据有效信号(RXDVLD)同时有效;
(2)接收单元根据RXD和RXDVLD接收来自EMAC的数据;
(3)当数据接收完成后,如果接收数据正确信号(RXGOODFRAME)有效,表示该帧数据正确,则将数据提交。如果数据错误信号(RXBADFRA ME)有效,表示该帧数据错误,则将数据丢弃。
2.5 软件设计
在设计中,软件负责完成系统的运行、设备的控制、系统各部分功能实现、以太网的TCP/IP协议的实现等功能。使用Xilinx提供的EDK下集成的工具SDK,使用C语言进行编程。
EDK提供第三方支持库TRECK,它使用一种简化的TCP/IP协议,并向用户提供上层的API函数,实现了一种高效的、便于与SOPC实现的TCP /IP协议。
3 仿真与验证
本论文采用Xilinx Virtex-5 FPGA芯片对千兆以太网接口板进行设计和实现,并采用Modelsim6.5d进行仿真验证,采用ISE12.1进行综合、布局布线、生成bit文件。
将生成的bit文件下载到自主设计的板卡中,并开发测试用例进行测试、验证。实际测试结果表明:基于SoPC的千兆以太网接口板系统功能正确,传输速率达到了线速。
4 结束语
本文研究并设计了一种基于SoPC的千兆以太网接口卡,重点对其组成、工作流程、EMAC、时钟管理、用户逻辑设计和软件设计等关键技术进行了描述,并开发测试用例进行测试验证。经严格测试验证表明,该千兆以太网接口板功能完全符合系统要求。
本文的研究对基于SoPC实现自主化的千兆以太网产品具有一定的工程参考价值。