随着电子技术的发展,高速数据传输在现代电子系统中起着重要的作用。普通计算机的接口有USB接口、以太网接口,串口等。在速度方面,以太网接口和USB接口速度相对较高,而串口传输速度较慢,难以实现高速数据传输。其中USB2.0最高传输速度为480 Mb/s,快速以太网为100 Mb/s,千兆以太网为1 000 Mb/s。此外,光纤接口和PCIe接口传输速度也较高,但难以与普通计算机互连。因此千兆以太网技术是电路系统与计算机进行高速数据传输的必然趋势。千兆以太网兼容原以太网标准所规定的全部技术规范,包括CSMA/CD协议,全双工以及流量控制协议等。
1 TCP/IP协议分析
目前网络协议使用的是TCP/IP协议,TCP/IP体系将网络分为应用层、运输层、网络层以及数据链路层,如图1所示,每一层分别负责不同的通信功能。
TCP/IP协议是一个协议族,集成有数据传输、流量控制、校验、纠错以及管理等多种功能。要通过网络接口实现数据传输,没有必要实现完整的TCP/IP协议,而且在有限的硬件资源上实现整个协议族也是不切实际的。图1为TCP/IP协议族的分层结构,实现数据传输需要在每一层实现一种协议。应用层主要实现用户控制,接收数据以及为发送数据做相应准备等。在运输层,选择UDP协议。UDP协议是面向无连接的,它提供不可靠的传输服务,不保证一定能将数据传输到目的地。而TCP协议是面向连接的,它提供可靠的传输服务,能保证正确的数据传输,协议中包括重传机制、分片机制以及流量控制机制等。但UDP比TCP简单的多,易于实现,占用资源也比较少。在网络层,选择IP协议和部分ICMP协议。IP协议用于数据传输,而ICMP协议用于测试,如ping命令就属于ICMP协议。在链路层,需要有MAC控制器实现以太网数据帧的打包解包、校验和计算等。另外,还需要实现ARP协议。ARP协议用于通知通信双方各自的硬件地址信息。
2 方案选择及实现
2.1 千兆以太网的设计方案研究
千兆以太网的关键技术在于千兆以太网的MAC控制器和以太网接口的实现。目前市场上物理层芯片和MAC芯片都比较多,但大多数MAC芯片是PCI或PCIe接口,这种芯片主要用于计算机主板,而GMII接口的MAC芯片接口简单,便于用户使用。对于不同的系统,设计千兆以太网的方法应根据系统的处理器类型而定,目前主流的处理器有FPGA、DSP、SOC、PowerPC等,根据处理器类型,大致可分为以下3种:
(1)使用FPGA作为主控制器,可以使用一片物理层协议芯片实现物理层,一片MAC芯片实现MAC层,而上层协议在FPGA内部使用硬件描述语言实现。也可以在FPGA内部使用MAC核代替MAC芯片,从而简化系统设计。如Xilinx Virtex-5系列FPGA中就集成有10/100/11 000 Mb·s-1以太网MAC控制器硬核,而Altera提供Triple Speed EthemetMegaCore软核控制器。
(2)使用集成有MAC控制器的DSP芯片,外部使用物理层芯片来实现物理层。如TI公司的TMS320C647x系列DSP,它采用哈佛总线结构,集成
度较高,运算速度快。可以完全使用C语言编程,操作方便。
(3)使用基于嵌入式操作系统的TCP/IP协议栈,如PowerPC芯片,它可以嵌入某些操作系统,如Linux系统,能够方便的实现TCP/IP控制,外部使用一片物理层芯片即可。由于有TCP/IP协议栈的支持,省去了编写协议的工作。
在系统中,主控制芯片选择Altera公司的StratixlI系列FPGA,StratixII系列FPGA片资源丰富,支持多种电平标准,并集成有M4K,M512等多种形式的存储器资源,可以实现数据的缓冲及存储。MAC控制器使用该公司提供的MAC软核来实现,该软核支持多款物理层芯片,选择NI公司的DP83865芯片,系统如图2所示。
此方案较其他方案有明显的优势。(1)DP83865采用GMII接口,简单易用,而且性价比很高,与Altera公司的MAC软核一起使用上简化了设计者的工作,能有效缩短产品开发周期。(2)MAC软核在FPGA内部占用的逻辑资源较少,所以并不会增加系统的额外开销。
2.2 物理层芯片介绍
DP83865支持10Base-T/100Base-Tx/1000Base-T以太网协议,它使用0.18 μm、1.8 V CMOS工艺,使用MII、GMII或RGMII的媒体独立接口,简化了与MAC控制器的连接,具有超低功耗、完全自适应等特点,便于用户实现10/100/1 000 Mb·s-1以太网。芯片内部设有32个寄存器,可以通过MDIO接口访问其内部寄存器。Altera公司的MAC软核内部映射有两个物理层芯片的寄存器组空间,其地址空间与DP83865内部寄存器一一对应,用户可以通过访问MAC软核内部寄存器以达到访问DP83865的寄存器目的,MAC软核将自动通过MDIO接口访问DP83865的寄存器。这样,如果要重新设定DP83865内部寄存器值,或者在调试过程中要通过读取寄存器来判断芯片的工作状态,可以直接访问其在MAC软核内部映射的寄存器空间,从而简化设计。2.3 系统实现
千兆以太网由物理层、数据链路层、网络层、运输层和应用层组成。在FPGA内部实现MAC层以及MAC层以上的部分TCP/IP协议,其中包括ARP协议,IP协议,UDP协议以及部分ICMP协议。物理层使用DP83865芯片。FPGA内部系统框图如图3所示。
MAC控制器上层的协议在FPGA内部用硬件描述语言实现,这些协议将与MAC核共同组成网络控制系统,各部分协议之间密切配合,共同完成网络数据收发的功能。协议系统的时钟速率设定为125 MHz,可以最大程度地发挥MAC核的作用,使千兆以太网的数据吞吐率达到最大。
系统中关键的技术问题在于协议的效率问题。在调试初期,先以百兆速度运行,由于系统时钟为25 MHz,相对较低,没有出现程序因效率低下而导致系统不稳定的情况。当在原有基础上改为千兆以太网时,系统出现不稳定地情况,所发送的数据帧不能稳定地发送至上位机,有丢失数据帧的情况。
于是对协议部分进行优化,以提高其运行效率。在编写程序时,良好的代码风格尤为重要。时序电路中最重要的是状态机,所以状态机的性能在一定程度上决定了整个程序的性能。协议中状态转移比较复杂,对状态进行合并、减少状态数量之后,程序效率明显提高。此外,由于需要处理大批量的数据,而且数据将流经每一层协议,因而各层协议之间使用完全流水结构,衔接紧密,实时性更高,而且不必为每一
层开辟缓冲区,节省了资源。
2.4 上位机控制
使用Visual C++编写上位机程序,上位机通过网络向FPGA发送相关命令,FPGA接收到命令后进行相应操作,并将数据通过千兆以太网发送至计算机,由上位机程序对接收到的数据进行存储。上位机程序在MFC环境下使用WinSock编程实现,使用面向无连接的数据报套接字,即采用UDP协议,无需建立连接。为提高系统效率,在程序中使用多线程技术,一个线程负责接收数据,一个线程负责存储数据,可以有效提高程序运行效率。
2.5 测试结果
在系统中,将存储在电路板上Flash中的数据通过千兆以太网传输至计算机,使用UDP协议,每次传输1 024 Byte。经测试,此千兆以太网性能稳定,数据吞吐率高。图4所示是由SignalTap II采样得到的由FPGA输出的UDP波形,采样时钟为250 MHz。
在图4中,rx_clk为125 MHz时钟,gm_tx_d是由MAC发送至物理层芯片的数据帧。由图可见,MAC软核每个时钟周期发送8 bit数据,则此千兆以太网带宽为1 000 Mb·s-1。千兆以太网额外开销小,大约占用FPGA资源的7%,为系统留下了充足的设计空间。对千兆以太网进行测试时,每次发送数十万数据帧至上位机,当检测到错误帧或数据帧丢失时立即停止发送,在所进行的一系列测试中,没有出现中途停止发送的情况,说明没有数据帧丢失或在传输中出错,系统工作稳定。
数据传输至计算机后由上位机程序接收并存储,由于上位机程序效率偏低,千兆以太网传输速率受到限制。如果进一步优化上位机程序,可以提高千兆以太网带宽利用率。若两个电路系统使用千兆以太网互连,因为都是纯硬件电路,运行效率较高,可以发挥千兆以太网高带宽的特性。
3 结束语
设计中使用三速以太网软核,并对源程序进行了一系列优化,代码效率较高,系统工作稳定,资源利用率较高,数据吞吐率最高可达1 000 Mb·s-1。千兆以太网成本低,可以在多种平台下应用,为高速数据传输提供了方便的途径。