基于FPGA的千兆以太网设计 - 图文

更新时间:2023-11-01 01:33:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

摘 要

摘 要

随着信息技术的快速发展,以太网嵌入式设备的应用越来越广泛。为了让以太网各设备之间能公平有效地共享通信媒介,对以太网MAC层数据处理系统的研究显得尤为重要。

为此,本文首先分析了以太网及其相关协议的基本内涵,解剖了以太网MAC层通信机制、帧的特性与格式、PHY接口协议、ARP协议以及I2C协议。同时通过对FPGA芯片的了解,确定了基于88E1111芯片和XC3S400FPGA芯片相结合的系统设计方案,支持1000Base-T标准以太网的接入,完成了系统的硬件电路设计。系统设计中,88E1111完成PHY层数据的处理,FPGA则完成MAC层数据的处理,主要包含接收MAC数据帧的校验和解封、待发送数据帧的封装、MAC地址滤波、IP数据包的提取、ARP地址映射等,是系统的核心。在FPGA设计中,遵循自上而下的设计思想,对顶层模块以及PHY接口、MAC核心处理、用户配置、用户数据各功能子模块依次进行设计。

关键词:以太网 MAC层 FPGA

ABSTRACT

ABSTRACT

With the rapid development of IT,the embedded devices of accessing to Ethernet are used more and more widely.In order to make each device enjoy a fair and effective shared communications medium, it is particularly important to research the data processing system of the Ethernet MAC layer.

To this end,it is firstly done to analyze the basic connotation of Ethernet and the related agreements,and to dissect the communication mechanisms of the Ethernet MAC layer,the characteristics and format of the frame,the PHY interface protocol,the ARP protocol,I2C protocol in the paper.According to the characteristics and working principle of the FPGA chip ,the system design, which supports the accessing of the 1000Base-T Ethernet,is determined based on the combination of the 88E1111 PHY chip and XC3S400-4fg456C FPGA chip of Xilinx.Then the hardware circuit design is accomplished by the Cadence development tool.In this system, 88E1111 and FPGA respectively completes the data processing of PHY layer and the data processing of the MAC layer,which mainly consists of the calibration and dearchive of the receiving data frames, the encapsulation of the data frames,the MAC address filtering, the extraction of the IP packet,The ARP address mapping,and so on. So FPGA is the core of the system. Following the top-down design conception,the design of FPGA successively includes the top-level module,and the submodule of the PHY interface,the MAC core processing,the user configuration,the user data interface.

Keywords: Ethernet the MAC layer FPGA

目 录 i

目 录

第一章 绪论 ........................................................................................................ 1

1.1研究背景及意义 ..................................................................................... 1 1.2国内外研究现状 ..................................................................................... 2 1.3论文内容和论文组织结构安排 ............................................................. 3 第二章 千兆以太网理论基础 ............................................................................ 5

2.1千兆以太网标准 ..................................................................................... 5 2.2介质访问控制(MAC) ........................................................................ 7

2.2.1半双工MAC .............................................................................. 7 2.2.2全双工MAC .............................................................................. 9 2.3介质无关接口(MII) ......................................................................... 10

2.3.1GMII接口信号定义 ................................................................. 11 2.3.2GMII接口时序特性 ................................................................. 14 2.3.3GMII的管理MDIO接口 ......................................................... 15 2.4物理层技术 ........................................................................................... 17 2.5TCP/IP协议栈 ....................................................................................... 18 第三章 以太网数据传输硬件设计实现 .......................................................... 21

3.1系统方案设计 ....................................................................................... 21

3.1.1设计思想 ................................................................................... 21 3.1.2系统功能 ................................................................................... 21 3.1.3系统总体结构设计 ................................................................... 22 3.2芯片的选取 ........................................................................................... 23

3.2.1物理层芯片选择 ....................................................................... 23 3.2.2FPGA主芯片选择 .................................................................... 25 3.3硬件电路设计 ....................................................................................... 26

3.3.1以太网变换电路设计 ............................................................... 26

第四章 FPGA软件设计与仿真 ...................................................................... 33

ii 目 录

4.1FPGA软件开发简介 ............................................................................ 33 4.2系统顶层模块设计 .............................................................................. 34 4.3PHY接口模块设计 .............................................................................. 38

4.3.1设计思想 .................................................................................. 38 4.3.2相关算法 .................................................................................. 39 4.3.3功能仿真 .................................................................................. 40 4.4MAC核心处理模块设计 ..................................................................... 41 4.5实验测试与结果 .................................................................................. 42

4.5.1硬件测试平台准备 .................................................................. 42 4.5.2软件测试平台准备 .................................................................. 43 4.5.3系统测试与结果分析 .............................................................. 45

第五章 结论与展望 ......................................................................................... 49 致谢.................................................................................................................... 51 参考文献 ........................................................................................................... 53

第一章 绪论 1

第一章 绪论

1.1研究背景及意义

当今,随着互联网技术的迅速发展,采用以太网实现数据采集和控制方面的应用,成为了电子系统设计的热点。以太网具有价格低廉、稳定可靠、传输速度快、传输距离远等特点,以太网技术发展成熟,具有很高的性价比。采用以太网技术的设备,可以通过TCP/IP协议进行数据的传输,不需要进行传输协议转换,使用和维护设备简单。随着技术的发展和各类应用的需求,出现了各种以太网的标准,包括标准以太网(10Mbit/s)、百兆以太网(100Mbit/s)、千兆以太网(1000Mbit/s)和10G(10Gbit/s)以太网[1]。不同类型的以太网有其各自需要遵循的标准,同时其所用的传输介质以及数据吞吐量也各不相同。千兆以太网技术作为新一代的高速以太网技术,它可以提供1Gbps的通信带宽,采用和传统10M、100M以太网同样的CSMA/CD协议、帧格式和帧长、全/半双工工作方式、流控模式以及布线系统,给用户带来了提高核心网络的有效解决方案,这种解决方案的最大优点是继承了传统以太网技术价格便宜的特点。

同时随着电子技术的发展,系统设备正向小型化、集成化、网络化发展。FPGA(Field Programmable GateArray,现场可编程门阵列)以其高密度、大容量、低成本和微功耗等特点,被广泛的应用于各种电子系统的设计和开发中,面向各种技术的应用也越来越广泛[2]。在其内部加入处理器系统,不仅能够实现一般的逻辑功能设计,同时能够实现一般单片机功能,通过FPGA内部逻辑功能连接可以使整体获得优异的性能,并大大减少PCB设计工作。目前,在FPGA中嵌入了许多专用功能的IP Core,还增加了许多硬件核,如存储器、时钟管理和算法功能核,甚至包括了DSP核和嵌入式处理器核等,即能在FPGA中进行DSP和嵌入式处理等关键领域的开发,使得FPGA可实现的功能越来越强。比如世界第一大FPGA生产厂商Xilinx公司推出的最新器件Zynq-7000系列甚至将业界标准ARM双核Cortex-A9 MP Core处理系统嵌入到了可编程芯片中,不但能够实现FPGA

第二章 千兆以太网理论基础 7

2.2介质访问控制(MAC) 2.2.1半双工MAC

传统以太网总是使用半双工MAC。半双工系统双向通信的效率受到半双工信道上通信方向快速变化的影响。在以太网环境中,每个站可以迅速判断是否可以发送帧,即半双工LAN利用了每个站的分布处理能力。然而,将以太网MAC算法扩展到支持千兆速率会阻碍半双工模式下的有效操作。当仲裁时间(最坏情况下等于往返延时)达到或超过一个典型帧的传送时间时,算法的效率就有问题了。

MAC算法的目的是为了使站能够确定谁能在一个共享物理信道上传送数据[8]。以太网使用了一个分布式算法称为载波侦听、带冲突检测的多路访问(CSMA/CD:Carrier Sense,Multiple Access/Collision Detect)。图2.2显示了该算法的一个简化流程图。

图2.2以太网MAC流程(传统半双工操作)

8 基于FPGA的千兆以太网设计

半双工模式下的帧传送:在发送数据前,它首先要监听物理信道是否处于忙状态,只有侦听到信道上没有其他的站在使用时,才会发送帧。每次传送结束后,站必须等待一段时间(一个帧间隙,Interframe Gap),使物理信道有一段稳定时间后,站才开始其传送。如果同时有多个站的队列中有待发帧,在经过载波侦听和帧间隙后,每个站都试图发送,结果就会产生冲突。当发生冲突时,所有相关的站都继续发送一段时间以保证让所有的站都能发现冲突,这个过程叫堵塞。堵塞后,每个站需要等待一个随机时间,这个过程叫后退。后退以后,站从头开始处理并尝试重新发送帧。

但是,在千兆以太网中会碰到一个问题。在10Mbps和100Mbps以太网系统中,最小帧长度被设置成等于网络最大往返传播延时,即最小帧长和时隙是相同的值:512比特(64字节),不包括前导码和物理层负载[9]。由于512比特时间是51.2μs,根据10Mbps以太网使用的电缆类型,其布线长度可以达到2到3km这一量级。如果保持512比特最小帧长而不做其他算法改变的话,将速率从10Mbps提高到100Mbps再到1000Mbps,为了使CSMA/CD正常工作,网络的覆盖范围将下降到200m(100Mbps)和20m(1000Mbps)的量级。这仅仅能在一个配线间内互连设备,对于实际应用的这种网络尺寸是不切实际的。由于升级到千兆网络以太网需要支持可实用的网络规模,同时出于维持最小帧长向后兼容性的考虑,必须对MAC算法做出改进。在IEEE802.3z标准中引入了载波扩展和帧突发的概念用来解决这个问题,这个解决方案有如下三个基本内容:

(1) 从软件接口(设备驱动)角度看,仍保持512比特最小的帧。在移植到千兆速率时,这可避免修改驱动程序设计和现有的协议栈。 (2) 修改MAC算法,使用一个称为载波扩展的机制,从物理信道角度看帧已被人为扩展了,短帧看起来变长了。这使千兆以太网能继续支持相同的布线拓扑(从配线间起半径100m),而不增加帧数据部分的最小长度。

(3) 为短帧传送方提供可供选择的性能增强功能,称为帧突发。使用这种技术在传送大量短帧时,因加入载波扩展引起的效率损失对网络的性能没有明显的下降。

第二章 千兆以太网理论基础 9

2.2.2全双工MAC

全双工MAC操作意味着信道是专用的,这样前面讨论的关于半双工操作的所有复杂问题都不用考虑了。在全双工模式下,千兆以太网没有必要使用载波扩展,只有在使短帧传送能持续足够长的时间以便CSMA/CD算法能正确地仲裁信道时,载波扩展才是必需的。同样,全双工千兆以太网也没有必要使用帧突发,当站可在任意时间发送一个帧,也可在任意时间从物理信道接收帧。因为使用专用信道,站甚至可以根据自己的意愿进行发送和接收帧操作。

但是,全双式MAC不会为收到的流量推迟发送,也不会检测冲突、阻塞、放弃、后退或重新调度发送。在全双工交换网络中,如果多个端口向一个输出端口进行发送,那么将发生缓冲区溢出,在这种情况下数据包将被丢弃,因此需要一种流量控制的策略来避免这种错误的发生。IEEE802.3z已经规定了一种用于点对点全双工链路的流量控制机制,称为基于Pause帧的流量控制[10].

(1)暂停(Pause)控制帧

在传统以太网系统中,802.3的MAC协议只定义了数据帧,没有控制帧,数据帧的绝大部分内容都被MAC子层交给上一层处理。802.3x定义了一种控制帧—暂停(Pause)帧用于全双工工作方式的一对站点、中间设备之间或工作站与中间设备之间交换流控数据,Pause帧的格式如图2.3所示。

图2.3Pause帧格式及各字段定义

(2)使用Pause帧进行流量控制的流程

10 基于FPGA的千兆以太网设计

图2.4 Pause帧流量控制:事件序列

使用Pause帧进行流量控制,是基于一种事件序列的方式来完成的。当某个被拥塞实体向发送源发出一个Pause帧时,发送源在停止发送新的帧之前要经过一段时间,这段等待时间由图2.4中所示的几部分构成。从图中可以看出,如果端站点在收到Pause帧时正好开始发送一个最大长度帧,将产生最大等待时间。 (3)流量控制策略

虽然IEEE802.3x定义了用于点到点流量控制的机制,但是何时或在什么情况下启动流量控制以及使用多长时间,却完全取决了供应商或用户。根据实现的复杂度可以使用多种不同的策略。在交换设备中使用的流量控制策略主要有3种:基于缓存空间的流量控制;基于发送权的流量控制;基于速率的流量控制。

其中,基于速率的流量控制有很多优点,这也是平常网卡设置流量控制时使用的一种策略,下面简要说明下它的原理。当使用基于速率的流量控制策略时,端站点可以通过调整帧间间隔(IFG)来以较快或较慢的速度发送帧。当不存在拥塞时,交换机可以通知站点以最小的IFG,即以最大速率发送帧。当交换机检测到拥塞时,它将发送一个带有新的IFG的流量控制帧,接着端站点就将以修改后的IFG发送帧。不同速率的IFG应预先定义好,取决于复杂度,可以定义好几个级别的拥塞,用来满足不同情况下的流量控制。

2.3介质无关接口(MII)

以太网的每个数据率上都有多种介质类型。为支持同轴电缆、双绞线和光纤,每种以太网系统在控制器设备(如网络接口控制器或NIC)和物理

第二章 千兆以太网理论基础 11

层连接设备(如收发器)之间加入了(至少在逻辑上)一个标准接口[11]。这可使控制器制造商能独立地制造他们的设备,同时保持了灵活性,可让终端用户选择其喜欢的介质。这个接口点正是介质无关接口,三种以太网数据率的每一个都定义了一个这种接口。十兆以太网向百兆以太网过渡时,引入了4位的介质无关接口MII,取代了AUI的串行接口。从百兆向千兆以太网过渡时引入了一个新的千兆位介质无关接口(GMII),它是快速以太网MII的逻辑扩展,保留了部分MII接口信号。两种设计的主要差别在于接口宽度(字节宽与半字节宽)以及时钟频率(125MHz与25MHz)。GMII中的数据通路宽度被设计为8位而不是半位元组宽度。每个时钟周期内数据以1ocset/sec的速率通过GMII,因此为了获得1000Mbps的数据速率,发送和接收时钟必须工作在125MHz。由于GMII接口也可以工作在10Mbps和100Mbps,所以相应的时钟分别为2.5MHz和25MHz,但是并不需要支持所有三种数据速度,PHY必须通过站点管理实体来声明自己所支持的速率。当然,以10Mbps和100Mbps速度工作的GMII等同于MII。

2.3.1GMII接口信号定义

GMII接口的数据结构符合IEEE以太网标准,其接口定义见IEEE802.3-2000。GMII接口可分为MAC模式和PHY模式,一般说来MAC和PHY对接,但是MAC和MAC也是可以对接的,图2.5为MAC与PHY的接口连接图。

12 基于FPGA的千兆以太网设计

图2.5 GMII接口连接图

在GMII接口中,它是用8根数据线来传送数据的,发送参考时钟GTX_CLK和接收参考时钟RX_CLK的频率均为125MHz(1000Mbps/8=125MHz)。GMII接口主要包括四个部分:一是从MAC层到物理层的发送数据接口,二是从物理层到MAC层的接收数据接口,三是从物理层到MAC层的状态指示信号,四是MAC层和物理层之间传送控制和状态信息的MDIO接口。GMII的接口信号在表2.1中列举出。

表2.1GMII接口信号定义

信号名称 方向(相对于描述 控制器) 发送器 GTX_CLK Output 吉比特 TX 信号的时钟信号(125 MHz) TXD[0:7] TX_ER Output Output 被发送数据 GTX_CLK 同步于 发送器错误GTX_CLK (用于破坏一个数据包) TX_EN Output 发送器使能GTX_CLK

第二章 千兆以太网理论基础 13

信号 接收器 RX_CLK Input 接收时钟信 号(从收到的数据中提 取,因此与 GTX_CLK 无关联) RXD[0:7] RX_ER Input Input 接收数据 RX_CLK 接收数据出RX_CLK 错指示 RX_DV Input 接收数据有RX_CLK 效指示 网络状态 COL Input 冲突检测(仅异步 用于半双工状态) CRS Input 信道激活的异步 指示,侦听到接收信号或传送信号(仅用于半双工状态) 管理配置 MDC Output 配置接口时 钟 MDIO 注:

I/O 配置接口 I/O MDC (1)时钟信号GTX_CLK对于MAC来说,此时是Output信号;而对于PHY来说,此时是Input信号。

(2)在千兆速率下,GMII向PHY提供GTX_CLK信号,TXD、TXEN、

14 基于FPGA的千兆以太网设计

TXER信14千兆网络通信系统的FPGA设计实现号与此时钟信号同步。PHY端在信号的上升沿采样,GTX_CLK由MAC驱动。GTX_CLK的时钟频率是数据传输速率的12.5倍,即125MHz。否则,在10/100Mbps速率下,PHY提供TX_CLK时钟信号,其它信号与此信号同步,其工作频率为25MHz(100Mbps网络)或2.5MHz(10Mbps网络)。

(3)同样的,RX_CLK与TX_CLK一样具有相同的要求,所不同的为它是RX_DV,RXD和RX_ER(信号方向是从PHY到RS)的参考时钟,MAC端在时钟的上升沿采样。RX_CLK是由PHY驱动,而PHY可能从接收到的数据中提取时钟RX_CLK,也有可能由一个名义上的参考时钟(TX_CLK)来驱动RX_CLK。

(4)管理配置接口控制PHY的特性。该接口有32个寄存器地址,每个寄存器地址16位。其中前16个已经在“IEEE802.3-2000,22.2.4Management Functions”中规定了用途,其余的则根据各器件自己指定。

2.3.2GMII接口时序特性

在GMII接口中,TX通道参考时钟是GTX_CLK,RX通道参考时钟是RX_CLK,IEEE802.3-2005定义了它们之间的关系,如图2.6中所示。

图2.6 GMII接口信号时序要求

由图2.6可知,标准只定义了TX通道中接收端的Setup时间和Hold时间,即只对TX通道上PHY这一侧的接收特性作了定义,而对TX通道MAC那一侧的发送特性并没有定义。对于器件制造商而言,可对TX通道

第二章 千兆以太网理论基础 15

一侧的MAC的发送特性作适当调整,只要最终的时序满足TX通道上PHY这一侧的接收特性就可以[12]。对RX通道也是同样的道理,器件制造商可对RX通道那一侧的PHY的发送特性作适当调整,只要最终的时序满足RX通道上MAC这一侧的接收特性就可以。

GMII接口的发送时序如图2.7所示,接收时序如图2.8所示。

图2.7GMII信号发送时序

图2.8GMII信号接收时序

2.3.3GMII的管理MDIO接口

GMII的管理MDIO接口,在硬件设计上同MII的管理MDIO接口是一样的。MDIO接口包括两根信号线:MDC和MDIO,通过它,MAC层或其它控制芯片可以访问物理层芯片的寄存器,并通过这些寄存器来对物理层芯片进行控制和管理。

MDIO管理接口的两根信号信解释如下:

MDC:管理接口的时钟,它是一个非周期信号,信号的最小周期(实际是正电平时间和负电平时间之和)为400ns,最小正电平时间和负电平时间为160ns,最大的正负电平时间无限制。它与TX_CLK和RX_CLK无任何关系。

16 基于FPGA的千兆以太网设计

MDIO:是一根双向的数据线,用来传送MAC层的控制信息和物理层的状态信息。MDIO数据与MDC时钟同步,在MDC上升沿有效。 MDIO管理接口的数据帧结构顺序如表2.2:

表2.2MDIO管理接口的数据帧结构

PRE READ WRITE

其中,各个数据域的含义如下:

PRE:帧前缀域,为32个连续“1”比特,这个帧前缀域并不是必要的,某些物理层芯片的MDIO操作就没有这个域。

ST:帧开始标志,出现“01”比特表示帧结构开始。

OP:帧操作码,比特“10”表示此帧为一读操作帧,比特“01”表示此帧为一写操作帧。

PHYAD:物理层芯片的地址,5个比特,每个芯片都把自己的地址与这5个比特进行比较,若匹配则响应后面的操作,若不匹配,则忽略掉后面的操作。

REGAD:用来选择物理层芯片的32个寄存器中的某个寄存器的地址。 TA:状态转换域,若为读操作,则第一比特时MDIO为高阻态,第二比特时由物理层芯片使MDIO置“0”。若为写操作,则MDIO仍由MAC层芯片控制,其连续输出“10”两个比特。

DATA:帧的寄存器的数据域,16比特,若为读操作,则为物理层送到MAC层的数据,若为写操作,则为MAC层送到物理层的数据。 IDLE:帧结束后的空闲状态,此时MDIO无源驱动,处于高阻状态,但一般用上拉电阻使其处在高电平,即MDIO引脚需要上拉电阻。

SOManagement Frame Fields PHYAD REGATD A DDDDDDDDDDDDDDDD DDDDDDDDDDDDDDDD Z DATA IDLE Z T P 1…01 1 10 AAAAA 01 AAAAA RRRRZR 0 1…01 1 RRRR1R 0

42 基于FPGA的千兆以太网设计

Selection下的Half Duplex复选框;

(5)为了该系统能实现MAC滤波功能,如图4-4所示勾选复选框Address Filter,并设置Number of Address Table Enters为1,表示只设置一个MAC滤波地址,当然也可以根据实际需要设置多个,具体的地址数值可通过用户配置模块进行配置;

(6)用户可以通过IP核MAC滤波控制、速度、接收、发送等寄存器的配置控制其系统的处理模式,如图4-4所示,寄存器的配置有Host和Configuration Vector两种方式,Host是最常用的配置方式。

图4-4 IP参数设计

4.5实验测试与结果 4.5.1硬件测试平台准备

为了更好的完成功能的板级测试,结合FPGA的程序配置特点,本文利用Xlinx FPGA仿真器通过JTAG口对系统进行测试,其硬件测试平台的实物图如图4-5所示。除此之外,还需准备一台电脑、1000M和100M的普通网线,测试时利用不同的网线连接电脑和设备,以搭建不同的以太网

第四章 FPGA软件设计与仿真

43

测试环境,电脑作为设备的数据源服务器。

图4-5硬件测试平台实物图

4.5.2软件测试平台准备

在硬件平台准备好后,系统的测试还需要借助一些Windows平台软件工具,主要包括串口调试助手、VLC播放器、网络协议分析器 WireShark、ChipScope Pro工具、iMPACT工具。 (1)串口调试助手

设备可以采用异步串口实现CPU的控制,在调试阶段可以借助串口调试助手对本系统的工作模式进行配置,完成系统工作在各种模式下的测试。 (2)VLC播放器

VLC是一种功能强大的媒体播放器,支持各种音视频格式和各种串流协定,如mp3、mpeg2、mpeg4、flv、AVI等。最重要的是VLC可以提供单播或多播的串流服务器,通过网络传输相应的音视频流。在系统的测试中,VLC可以通过设置,实现向特定的IP地址传输音视频的TS流,为IPQAM提供源节目流,其播放的音视频文件可以通过录制卫星电视节目或文件转换得到。

在本系统测试中,为其分配的IP地址为10.5.25.231,若要向该IP地址的提供源节目流,需要进行如下的设置:

首先选择VLC媒体菜单中的“流”,添加事先录制或转换得到.ts视频文

44 基于FPGA的千兆以太网设计

件,然后设置目的IP地址和本地UDP端口以及流的方式,如图4-6所示,IP地址和UDP端口分别为10.5.25.231和1234,流采MPEG-2 TS的方式,最后单击“串流”。

图4-6 VLC流输出设置界面

(3)网络协议分析器

WireShark是一款开源的网络数据帧分析软件,可以抓取网络数据封包,提供每个数据帧的详细信息,如MAC地址、数据帧类型、IP地址、UDP端口、等重要信息,方便开发者对网络数据协议的分析与相关测试。 (4)ChipScope Pro工具

ChipScope Pro工具是Xilinx公司提供的一款测试开发工具,集成了关键逻辑分析仪和其他的测试以及硬件测量部件,支持大部分的Xilinx的FPGA器件[24]。ChipScope Pro可以将ICON、LAN、VIO等ChipScope Pro核嵌入在设计中,然后通过ISE的实现工具对设计进行布局布线,生成bit流文件下载到器件中,完成对设计的测试和分析。 (5)iMPACT工具

iMPACT工具是一款集成于ISE套件中的FPGA程序配置和下载的专业开发工具,支持JTAG、PROM、ACE等多种配置方式[25]。在本系统的测试中,需要通过JTAG在线调试FPGA程序。此时,在iMPACT工具中,将配置模式设置为Configure devices using Boundary-Scan(JTAG),通过 JTAG 口将工程生成的bit流文件下载到FPGA中去。

第四章 FPGA软件设计与仿真

45

4.5.3系统测试与结果分析

在测试初始阶段,先为其加载系统,并利用串口助手完成对88E1111的初始化,以及设备IP地址和MAC地址的设置(CPU通过I2C总线配置FPGA的I2C寄存器,寄存器的具体定义可参考附录,其分别为10.5.25.231和AA-BB-CC-DD-EE-00),然后如图4-5所示通过1000M的双绞网线连接电脑和IPQAM设备,同时利用仿真器通过JTAG将生成的bit程序流下载到器件中。当网络的自动协商成功后,运行WireShark软件和Chipscope Analyzer工具,在Chipscope Analyzer中加载生成的.cdc文件,设置触发条件为gmii_rx_dv上升沿。

单击ChipscopeAnalyzer的Run,同时打开VLC软件,并按上节所述完成设置,此时WireShark抓包结果如图4-7所示,同时ChipscopeAnalyzer抓取的ARP请求数据帧输入时序如图4-8所示,从图4-8可知IP地址为10.5.25.70的主机正向IP地址为 10.5.25.231的设备发出ARP请求,其结果与VLC设置的一致。如图4-8所示,在主机ARP请求发出一段时间后,主机收到了设备发出的ARP应答数据帧,数据帧中填充了设备的MAC地址AA-BB-CC-DD-EE-00。在此之后主机开始向设备发送音视频数据流,ARP协商正常。

46 基于FPGA的千兆以太网设计

图4-7 WireSharkARP 应答数据帧(1000M)

图4-8 ChipscopeARP请求数据帧输入时序图(1000M)

在Chipscope Analyzer中重新单击Run,抓取的音视频数据帧的输入和系统处理后输出的具体时序分别如图4-9和图4-10所示,输出的数据是从输入提取的IP/UDP包,系统对接收数据源处理正常。

第二章 千兆以太网理论基础 17

MDIO数据帧的时序关系如图2.9和图2.10所示:

图2.9MDIO写操作时序图

图2.10MDIO读操作时序图

当MDIO写操作时,OP值为“01”,映射的地址(PHYAD)将MDIO的16bit数据写入到REGAD指定的寄存器里;当MDIO读操作时,OP值为“10”,映射的地址(PHYAD)从REGAD指定的寄存器里读出MDIO接口的16bit数据。

2.4物理层技术

物理层提供了将数据链路层给出的数据字节转换成可在物理介质上传输的合适信号的字段,同样它也负责将从物理介质上接收到的信号转换成可向数据链路层传递的数据字节。千兆位以太网的物理层技术很大一部分是摘自光纤通道标准,在千兆位以太网中采用了最低两层的光纤通道技术、FC-0(接口与介质)和FC-1(编码/译码)。由于光纤通道技术已经应用了多年,所以IEEE 802.3z标准委员会为了大大减少千兆位以太网标准的开发时间和风险,而决定采用这种技术。千兆位以太网的物理层由三个子层构成:

物理编码子层(PCS):用于提供与所用物理介质无关的数据编码和译

18 基于FPGA的千兆以太网设计

码功能。但是在千兆位以太网中,光纤介质和短双绞线所采用的编码模式(光纤通道8B/10B 编码)与UTP铜介质是不同的。

物理介质接入子层(PMA):完成符号的串行化和解串(SERDES)。由10位符号一组组成的编码数据流在进行发送前要被串行化,另外接收到的数据流也应被解串行化,并以10位符号一组的形式传递给PCS子层。

物理介质相关子层(PMD):负责将来自于PMA子层的信号转换成适合特定介质类型的信号。如果介质是光纤,那么电信号将被转换成光信号,在接收方则是相反的过程。介质相关接口(MDI)定义了PMD层和介质之间的连接器。

2.5TCP/IP协议栈

LwIP(Light weight IP)是瑞士计算机科学院(SCICS)的AdamDunkels等开发的一套用于嵌入式系统的开放源码的轻型 TCP/IP协议栈[13]。LwIP的移植主要是针对系统采用的微处理器、编译器、操作系统和网络控制器做相关的修改工作,其运行既可以依赖于特定操作系统,也可以不需要操作系统独立运行。LwIP,TCP/IP实现的重点是在保持TCP协议主要功能的基础上减少对 RAM和ROM的占用,一般它只需要几十KB的RAM和50KB左右的ROM就可以运行,使得LwIP协议栈很适合在嵌入式系统中使用。

LwIP的特性主要包括如下几方面: (1) 支持多网络接口下的IP转发;

(2) 支持ICMP协议(Internet控制报文协议); (3) 包括实验性扩展的的UDP(用户数据报协议);

(4) 包括阻塞控制,RTT估算,以及快速恢复和转发的TCP(传输控制协议);

(5) 提供专门的内部回调接口(Raw API)用于提高应用程序性能; (6) 可选择的Berkeley接串口API(多线程情况下); (7) 在最新的版本中支持PPP(点对点协议); (8) 新版本中增加了的IP Fragment的支持;

第二章 千兆以太网理论基础 19

(9) 支持DHCP协议,动态分配IP地址(动态主机设置协议)。 LwIP是目前使用最广泛的轻型TCP/IP免费协议栈,实现了较为完备的IP、ICMP、TCP、UDP、DHCP协议,具有超时时间估计、快速恢复和重发、窗口调整等功能。LwIP提供了两种操作网络执行的API方式:RawAPI和SocketAPI。Socket API即常见的标准Berkeley Socket模式,有规范统一的上层函数接口,移植性好,便于理解和使用;而RawAPI可理解为原始套接字方式,它与SocketAPI相比有更卓越的性能以及更低的内存占用,Socket API实际上也是基于Raw API来实现的。因此,如果希望简化开发,就选用Socket API,而如果为了实现最好的网络性能,则应选用RawAPI。

在LwIP实现中,一个TCP连接是由协议控制块(Protocol Control Block,PCB)来识别的,但具体实现上也是与普通的协议栈类似,一种基本的TCP协议的数据传输处理过程可简单分为4个步骤:LwIP协议栈初始化;TCP三次连接建立;数据发送与接收;关闭当前TCP连接。类似的,在LwIP中基本的UDP协议的数据传输流程也和TCP一样,只是不需要独立的连接创建和关闭的过程。

20 基于FPGA的千兆以太网设计

第三章 以太网数据传输硬件设计实现 21

第三章 以太网数据传输硬件设计实现

3.1系统方案设计 3.1.1设计思想

本文研究的是基于FPGA的以太网的MAC层数据处理,目的是能广泛应用于多种嵌入式网络设备的前端设计,如网络视频监控设备、IP数字电视设备、家庭智能设备等。根据FPGA的可重复擦写编程的特点,采用FPGA可以方便对设备的升级和维护。本文为了设计能满足于各种不同的以太网网络环境,和增强系统的可移植性,采取了一系列的措施。

首先,考虑到以太网高速而又庞大的数据量,尤其是载有音视频流的1000M网络,以及开发的成本问题,我们引入了一种针对普通产品开发的Xilinx芯片——Spartan系列。FPGA具有并行执行的特点,相对于其他器件在数据处理上具有明显的速度上的优势,同时Spartan系列FPGA拥有几百Kb甚至几千Kb的块RAM资源,可用于数据的缓存,完全可以满足于1000M以太网数据量的要求[14]。在FPGA的系统设计开发中,常常会采用某些具有特定功能的IP核以提高系统开发的效率,减少成本。考虑到开发周期和设计要求,本系统设计方案采用Xilinx公司的Tri Mode Ethernet MAC IP核实现对MAC数据的主要处理工作,该IP核支持多种工作模式,同时用户可以根据要求实现自定义配置。其次,为了实现网络的IP地址和MAC地址的自动映射,本系统还增加了对ARP数据包的解析和ARP应答功能的设计。除此之外,为了提高系统的通用性,物理芯片需能够支持1000/100/10M以太网、双工/半双工工作模式以及1000M光纤的接入。

3.1.2系统功能

根据以述的设计思想,为了满足大部分设备对以太网的MAC数据处理的需求,确定了本系统设计的功能如下:

22 基于FPGA的千兆以太网设计

(1)支持10M/100M/1000M以太网; (2)支持双工/半双工; (3)CRC校验和帧长度校验; (4)MAC地址滤波; (5)支持ARP解析;

(6)支持RJ45标准网口和SFP插口的输入; (7)支持I2C接口用户配置。

3.1.3系统总体结构设计

根据上述技术指标及设计思想,图3-1给出了本系统的总体结构框图。本系统可分为五大模块:以太网数据转换电路、PHY接口模块、MAC核心处理模块、用户配置模块和用户数据接口模块。

图3-1系统总体结构框图

(1)以太网数据交换电路

以太网数据交换电路,主要功能是实现双绞线或光纤电缆的以太网物理层数据与MAC层数据的转换,为FPGA提供处理的MAC数据源和送出FPGA的上传MAC数据,是传输介质和FPGA数据交流的桥梁。 (2)PHY接口模块

PHY接口模块,可分为接收PHY和发送PHY接口两个子模块,实现接收数据和发送数据的同步。 (3)MAC核心处理模块

根据以上设计思想,MAC数据的核心处理模块直接采用Xilinx的Tri

第三章 以太网数据传输硬件设计实现 23

Mode Ethernet MAC IP核,可以完成MAC地址滤波、数据CRC和长度校验、封装MAC数据帧格式等基本功能,对接受的数据进行相应的好坏标记和对上传的数据进行封装标记。 (4)用户配置模块

用户配置模块主要是实现主控系统正确地完成对IP核寄存器和系统地址信息(IP地址和MAC地址)的配置,同时实时地监控IP核的工作状态。该模块可分为I2C接口和IP核配置两个子模块,I2C接口子模块采用400Kb/s的I2C总线协议,模拟从设备I2C时序;IP核配置子模块模拟IP核HOST配置时序,以实现对IP核寄存器的配置。 (5)用户数据接口模块

用户数据接口模块涉及对通过IP核处理后的接收数据帧和待上传的数据包两部分数据的处理以及ARP功能的实现,可分为接收数据用户接口、上传数据用户接口、ARP解析与应答三个子模块。

3.2芯片的选取 3.2.1物理层芯片选择

以太网物理层的处理工作大多数直接采用专业的物理层芯片来完成,完成数据的物理层编解码和收发功能[15]。目前,物理层芯片的生产商以国外为主,如Marvell、NS、Broadcom公司等,其主流产品为100/10M和1000M物理层芯片,随着以太网的速率的提高,万兆物理层芯片也被广泛应用于光纤以太网。国内对芯片的研发起步比较晚,华为、中兴、天津中晶微电子等企业近些年也推出了不少的产品,但是技术还有待发展。

88E1111芯片是Marvell公司Alaska系列的一款千兆以太网收发器,主要应用于10Base-T、100Base-TX、1000Base-T的以太网,采用CMOS工艺,能实现基于CAT5非屏蔽双绞线标准的以太网物理层数据的收发。88E1111支持多种MAC接口模式,有GMII/MII、RGMII、SGMII、TBI和RTBI,是一款应用广泛的以太网物理层芯片。

88E1111芯片采用了Marvell公司的VCT(Virtual Cable Tester,虚拟电

24 基于FPGA的千兆以太网设计

缆测试仪)功能,可以使用时域反射技术远程测试电缆故障,减少了设备应答和服务请求的次数,同时还能通过VCT检测线缆潜在的问题和线缆的开路、短路或阻抗不匹配问题,准确度能达到一米。另外,88E1111芯片具有先进的混合信号处理能力,可以以1Gbps的速率完成自适应均衡、消除反射或串扰、数据恢复、误码纠正等功能,是一款抗噪声能力强的低功耗以太网物理层芯片。

88E1111芯片中嵌入了一个可选的1.25GHzSERDES(并串转换/串并转换器),可以直接与光纤收发器连接,实现1000Base-X光纤标准与1000Base-T双绞线标准传输媒体的转换。通过选择,88E1111可以通过RJ45接口接入1000Base-T双绞线网络或SFP(小型可插拔)模块接入光纤网络,分别如图3-2和3-3所示。

图3-2 88E1111接入双绞线网络

图3-3 88E1111接入光纤网络

除了以上所述,88E1111芯片还支持光纤与铜线自动检测、网络连接的自动协商、可编程的LED驱动等功能,方便了用户对以太网接入的开发。

根据本文系统设计的功能的要求,以太网物理层芯片需满足同时支持RJ45和SFP两种接口,10Base-T、100Base-TX、1000Base-T标准双绞线和千兆光纤介质的传输,半双工和双工切换的工作模式。Marvell公司的以太网物理层芯片88E1111,采用0.13μm的CMOS工艺,是一款低成本、低功耗的千兆以太网物理层芯片,足以满足系统设计的要求

第三章 以太网数据传输硬件设计实现 25

3.2.2FPGA主芯片选择

在FPGA的开发设计中,FPGA芯片的选取非常重要,不合理的选取会导致一系列的后续设计问题,甚至会失败;合理的选取不仅避免设计问题,而且可以提高系统的性价比,延长产品的生命周期。通常,FPGA芯片选取需从芯片的供货商和开发工具的支持、电气接口标准、硬件资源、速度等级、温度等级、封装形式、价格七个方面入手[16]。 (1)供货商和开发工具的支持

目前,主要的FPGA供应商有Xilinx公司、Altera公司、Lattice公司和Actel公司等,FPGA的发展迅速,器件的淘汰率随之提高,为了延长产品的生命周期,最好选择货源比较足的主流器件。

从开发工具来看,Xilinx公司的ISE和Altera公司的QuartusⅡ,更新及时、功能强大、界面友好,支持本公司所有器件的设计开发和很多第三方软件的应用,如Synplify Pro、ModleSim等,能将器件的性能发挥到最佳。因此,一般在没有特殊要求情况下,器件从这两家公司中选取。

虽然Altera公司的开发智能程度相对Xilinx公司要高一些,但Xilinx公司具有更强的硬件功能,通过IP核的使用可以达到更高的效率。目前,Xllinx公司的主流器件有Spartan-3、Spartan-3A/3ADSP/3AN、Virtex-4LX、Virtex-4SX、Virtex-4FX、Virtex-5LX、Virtex-5SX、Virtex-5FX、Spartan-6和Virtex-6等系列,其中Spartan-3系列主要应用于逻辑设计;Spartan-3A/3ADSP/3AN主要应用于简单数字信号处理,Virtex-4LX和Virtex-5LX系列主要应用于高速逻辑设计,Virtex-4SX和Virtex-5SX系列主要应用于高速复杂数字信号处理,Virtex-4FX和Virtex-5FX系列主要应用于嵌入式系统。本设计只需要对MAC数据帧做简单的逻辑处理和缓存等等,Spartan-3系列器件足以满足这一需求。 (2)芯片的电气接口标准

目前,数字电路的电气接口标准非常多,在某些大型的系统设计中常常需要同时支持多种电气接口标准。本设计中的FPGA的接口电气标准只采用了LVCMOS2.5V和LVCMOS3.3V,Xilinx公司的绝大部分器件均能够满足。

26 基于FPGA的千兆以太网设计

(3)硬件资源

硬件资源是FPGA芯片选取的重要指标,包括逻辑资源、I/O资源、布线资源、存储器资源和某些底层内嵌功能单元和内嵌专用硬核等。在FPGA设计中,I/O资源和逻辑资源的需求是最需要重点考虑的问题。逻辑资源一般要求消耗的资源不超过70%,主流FPGA器件中,逻辑资源都比较丰富,比较容易选择。I/O资源需要注意的是避免过度的消耗,因为过度的消耗可能会导致FPGA负荷过重,器件发热量过大,以影响器件的速度性能、工作稳定性和寿命,设计中也要充分考虑器件的散热问题。另外,局部布线资源也要充足,以免影响电路的运行速度。在一些特殊场合,特别是数据量比较大的情况下,还得考虑存储器资源,如BRAM或LUT资源。还有锁相环、DSP等底层内嵌功能单元或内嵌专用硬核可以根据具体的设计作为参考需求。 (4)速度等级

对于芯片速度等级的选取,有一个基本原则:在满足应用需求的情况下,尽量选择速度等级低的芯片。因为速度等级高的芯片更容易产生信号反射,增加价格成本,延长开发周期。本设计的主时钟最高位125M,XC3S400芯片具有-4和-5两个速度等级,-4等级的最高可以达到250M,为节约成本,选取的芯片采用-4等级。

3.3硬件电路设计 3.3.1以太网变换电路设计

以太网数据变换电路,实现的是以太网传输媒介上的物理层数据与MAC层数据的转换,为FPGA提供待处理的MAC数据源和输出待上传的MAC数据,本设计主要是选择物理层专业芯片88E1111完成这一功能,其电路设计包括以下几个方面: (1)电源与时钟电路设计

88E1111芯片支持两种电平:2.5V和 1.0V,有时也可用1.2V代替1.0V。如图3-4所示为芯片的电源电路图,PHY_VDDIO采用 2.5V,为芯片I/O

第三章 以太网数据传输硬件设计实现 27

引脚供电,与芯片引脚VDDO、VDDOH、VDDOX相连;PHY1_AVDD提供内部模拟逻辑电平,为2.5V,与AVDD引脚相连;PHY1_DVDD提供内部数字逻辑电平

图3-488E1111芯片电源电路

为1.0V,与DVDD引脚相连。为了提高电源的稳定性,电源PHY_VDDIO、 PHY1_AVDD、PHY1_DVDD需接入一些滤波电容,以减少电源噪声。

88E1111芯片对数据的处理需要有一个参考时钟,一般通过XAT1引脚输入25M或125M的参考时钟,或通过XAT1和XAT2直接接一个晶振。本设计采用XAT1引脚输入25M的时钟,以减少晶振的使用数量,如图3-5所示,CLK_25M_PHY1与XAT1引脚相连,提供25M的时钟;为了保证电路的可调性,同时在XAT1和XAT2的两端添加一个晶振,作为参考时钟的备用方案。

图3-588E1111芯片时钟电路

(2)配置电路设计

在88E1111的芯片设计中,器件物理地址、PHY操作模式、自动协商

28 基于FPGA的千兆以太网设计

模式、MDI(Media Dependent Interface,媒介相关接口)交叉功能、PHY接口模式等的配置需通过芯片CONFIG0~CONFIG6引脚硬件配置来实现,CONFIG0~CONFIG6引脚配置位映射关系表和各配置寄存器的定义描述分别如表3-3和表3-4所示。

在硬件电路设计中,CONFIG0~CONFIG6配置位的选择通常是通过与LED输出引脚、VDDO或者VSS引脚的连接来完成的,其各引脚与配置位的映射关系如表3-5所示。

为了方便开发设计,本设计将芯片地址设置为00000,屏蔽PAUSE帧,同时使能MDI交叉连接、光纤与铜线接入自动识别、能量检测功能,其自动协商支持所有网路模式;125MHz的数据发送的参考时钟由FPGA提供,125MHz时

表3-3CONFIG0~CONFIG6引脚配置位映射关系表

引脚 CONFIG0 CONFIG1 CONFIG2 CONFIG3 CONFIG4 CONFIG5 CONFIG6

SEL_TWSI INT_POL HWCFG_MODE[2] DIS_FC HWCFG_MODE[1] DIS_SLEEP HWCFG_MODE[0] HWCFG_MODE[3] 75/60OHM ANEG[0] ENA_XC DIS_125 ANEG[3] ANEG[2] ANEG[1] ENA_PAUSE PHYADR[4] PHYADR[3] Bit[2] PHYADR[2] Bit[1] PHYADR[1] Bit[0] PHYADR[0]

第三章 以太网数据传输硬件设计实现 29

表3-4各配置寄存器定义描述

配置寄存器 PHYADR[4:0] 定义描述 器件的物理地址,在MDC/MDIO配置模式下,表示器件五位的物理件地址;在I2C配置模式下,表示器件物理地址phyaddr[4:0],phyaddr[6:5]固定为10。 ENA_PAUSE PAUSE 帧使能信号,高有效;同时影响寄存器 4 的默认值 ANEG[3:0] 自动协商模式配置寄存器 ,10/100/1000Base-T模式下由ANEG[3:0]配置决定,而1000Base-X模式下由ANEG[3:2]配置决定,具体的配置映射关系可参考88E1111芯片手册。 ENA_XC 交叉连接使能信号,1时MDI交叉功能有效,反之则无效。 DIS_125 HWCFG_MODE[3:0] 125MHz时钟使能信号,0使能。 硬件配置模式,决定了PHY接口模式,常用的有:1000Base-X模式下RGMII为0011;1000Base-X模式下GMII 为0111;10/100/1000Base-T模式下RGMII为1011;10/100/1000Base-T模式下RGMII为1111;其他的模式配置可参考88E1111芯片手册 DIS_FC 光纤与铜线接入自动识别使能信号,0有效。

30 基于FPGA的千兆以太网设计

DIS_SLEEP SEL_TWSI 能量检测使能信号,0有效。 寄存器配置模式选择,0表示采用MDC/MDIO配置模式,1表示采用I2C配置模式。 INT_POL 中断电平值,0表示高电平中断,1表示低电平中断。 75/60 OHM 终端电阻匹配选择信号,主要用于光纤接入模式下,0采用 50OHM,1采用75OHM。

表3-5各引脚与配置位的映射关系

引脚 VDDO LED_LINK10 LED_LINK100 LED_LINK1000 LED_DUPLEX LED_RX LED_TX VSS

钟输出设置为无效[17];IPQAM项目的CPU对从设备的寄存器配置采用的是I2C总线方式,因此88E1111需配置成I2C从模式;PHY接口采用GMII/MII模式,减少FPGA对时钟的时序要求。因此,如图3-6配置电路图所示,默认情况下将CONFIG0~CONFIG6引脚分别配置为000、000、111、111、111、001、110。但是为了系统的升级维护,对CONFIG1、CONFIG4、CONFIG5、CONFIG6引脚设置了配置保留值,根据不同的需求本系统可以支持PAUSE帧的传输、RGMII的PHY 接口、MDC/MDIO寄存器配置等

111 110 101 100 011 010 001 000 Bit[2:0]

第三章 以太网数据传输硬件设计实现 31

工作模式。

图3-6 88E1111配置电路

(3)RJ45接口和SFP接口电路设计

本系统支持普通双绞线和光纤两种媒介接入方式,双绞线的接入采用通用的RJ45接口,其电路图如图3-7所示,88E1111芯片的四对MDI引脚直接与HX5008NL芯片的四对TD引脚相连,实现与RJ45接口的连接,完成双绞线与88E1111芯片的数据交换[18];光纤的接入采用SFP接口,其电路图如图3-8所示,88E1111芯片的S_IN±引脚与SFP接口芯片的RD±引脚相连,接收光纤电缆上的数据;S_OUT±引脚与TD±引脚相连,完成本地的数据的输出;同时SFP接口芯片采用I2C配置模式,与系统设计一致。

32 基于FPGA的千兆以太网设计

图3-7 RJ45接口电路

图3-8 SFP接口电路

第四章 FPGA软件设计与仿真

33

第四章 FPGA软件设计与仿真

4.1FPGA软件开发简介

在FPGA的软件开发设计中,需要遵循一定的设计流程,主要包含电路功能设计、设计输入和综合、设计实现、设计验证几个步骤: (1)电路功能设计

在系统设计之前,首先根据项目设计要求,对芯片速度、资源和成本等方面进行评估,选择合适的器件类型并确定设计方案,同时按照自顶向下的设计方法完成系统顶层的设计和模块的划分。 (2)设计输入和综合

在设计流程中,这是关键的一步。设计输入是将要设计的系统或电路以开发原理图、硬件描述语言、两者混合等某种方式表示出来,生成特殊的文件输入给EDA的过程。综合是指将较高层次的抽象描述转换成RTL级描述,生成逻辑网表,为布局布线提供依据。其常用的工具有Synplify Pro和各自FPGA产商自带的综合工具,如Xilinx公司的XST。在设计输入的过程中,常常需通过功能仿真来实现系统以及对各个模块的功能检测,也称之为前仿真。若有需要,综合后也可通过仿真来验证。 (3)设计实现

设计实现过程从逻辑设计文件映射或适配到指定器件开始,到物理设计布线成功并生成比特流文件时结束,包括MAP(映射)、PAR(布局布线)、BitGen(产生比特流文件)几个步骤。MAP是将逻辑设计映射到选定的FPGA芯片中。PAR表示将设计进行布局布线,此过程可以通过Place&Route让布线器自动完成,也可以通过PlanAhead工具手动来完成。一般在布局布线之前,需按照设计要求添加时序约束,以帮助用户有效地完成设计。同时,也可以通过时序仿真来验证设计的结果,为用户提供约束和分析的依据。 (4)设计验证

设计验证是对设计的功能和性能的测试,包含功能或时序仿真、静态时

34 基于FPGA的千兆以太网设计

序分析和电路验证。功能或时序仿真通常是书写TestBench作为输入生成相应的报告和输出波形,用户可以很方便的观察各个节点信号的变化,常用的工具有ModelSim、VCS、NC-Verilog等软件。静态时序分析是在布局布线之后,对设计进行快速时序检查,确定是否满足设计需求和关键路径的延时等等,是FPGA设计中重要的一个环节。电路验证,是验证设计在目标应用中的表现,借助某些工具来实测各信号的变化情况,如ChipScope。

本设计采用的Xilinx公司的FPGA芯片,为了更好的满足芯片的设计要求和充分发挥芯片的性能,采用ISE开发套件和Modelsim SE联合完成了软件开发设计[19]。ISE开发套件集成了设计、输入、仿真、综合、翻译映射、布局布线、时序分析、功率分析、芯片下载与配置等几乎所有的设计流程所需的工具,支持Modelsim、Synplify Pro等第三方开发软件的联合开发,大大提高了产品设计效率。而且,ISE界面风格简洁流畅,设计流程结构清晰,在编写代码时还提供了语言模板(Language Templates),使用方便。另外,ISE的Core Generator 提供了大量的IP核,减少了系统的开发周期。同时,ISE有丰富的帮助信息,如Software Manual、在线参考硬件资料、软件使用说明、参考设计、视频教程等。本文采用的是ISE Design Suit12.3开发套件,集合了Tri Mode Ethernet MAC IP核,即4.4版。Modelsim是目前业界最优秀的HDL语言仿真软件,仿真速度快,界面操作方便,是FPGA设计功能和时序仿真的首选软件。Modelsim拥有多个版本,其中SE支持Xilinx FPGA基本所有器件的开发,本设计采用最常用的Modelsim SE6.5版本。

4.2系统顶层模块设计

在FPGA软件设计中,首先需要确定顶层的输入输出信号接口。根据系统方案设计与硬件电路设计,本文定义FPGA程序的主要接口信号如表4-1所示:

表 4-1FPGA接口信号

接口信号 I/O 描述 备注

第四章 FPGA软件设计与仿真

35

Sclk I 系统主时钟,125MHz 系统接口 srst_in I 系统复位信号,低电平有效 SDA I/O I2C 串行数据线 符合I2C标准协议 SCL phy_reset I O I2C时钟线 88E1111 芯片PHY 接口,实 现 复位信号,低电来 自88E1111 芯平有效 Gmii-rxd[7:0] I 从88E1111接收的帧数据总线 Gmii-rx-dv I 从88E1111接收的数据有效片的 MAC 层数据源的接收 和待发送的MAC 数据的发送;数据符802.3 帧格式,帧的长度一般小标志信号,高电于1536 字节 平有效 Gmii-rx-er I 从88E1111接收的数据错误标识信号,高电平有效,用于传送中错误数据的标识 Gmii-rx-clk I 从88E1111接收数据的同步时钟 Gmii-txd[7:0] O 从88E1111发送的帧数据总线

36 基于FPGA的千兆以太网设计

Gmii-tx-en O 从88E1111发送的数据有效标识信号,高电平有效 Gmii-tx-er O 从88E1111发送的错误标识信号,高电平有效,用于传送中错误数据的标识 Gtx-clk O 88E1111处于1000M工作模式时发送数据的同步时钟 mii-tx-clk I 88E1111处于100M、10M工作模式时发送的数据同步时钟 Gmii-col I 88E1111冲突标志,用于半双工工作模式 Td-in[7:0] I 待上传的数据总线,数据不包含帧头的 8 个字节 td_valid_in I 待上传的数据与下级系统相连有效标志,高电的接口 平有效

第四章 FPGA软件设计与仿真

37

tx_clk_in I 待上传的数据同步时钟 rx_clk O MAC 处理后的接收数据同步时钟,时钟为 125M, 其占空比为 50% rd_out[7:0] O MAC 处理后的接收数据总线,主要包含包长1344 IP/UDP 数据包 rd_valid_out O MAC 处理后的接收数据有效标志 系统设计中,FPGA主要完成的功能有三个:第一,实现ARP信息的解析与应答,实现ARP协商;第二,接收88E1111芯片的帧数据源,滤去非指定目的MAC地址和错误的数据帧,提取出有效的IP包输给下一级;第三,将下一级系统待发送的数据封装成符合802.3帧格式的数据帧输出给88E1111。

为了有效地实现所有功能,本设计将程序分为PHY接口模块、MAC核心处理模块、用户配置模块、用户接口模块四个子模块,其四个模块间信号流程如图4-1所示[20]。当系统启动时,微处理器CPU通过I2C总线完成对88E1111芯片相关寄存器和FPGA I2C寄存器的配置,同时I2C寄存器通过HOST总线对MAC IP核进行配置,实现对系统工作模式的设置。数据按照的流向,可以划分为两条链路:下行链路和上行链路。在下行链路中,源自88E1111的帧数据首先通过PHY接口模块的PHY接收子模块的,

38 基于FPGA的千兆以太网设计

实现数据同步,然后输出给MAC核心处理模块,完成数据帧的检验和地址滤波,在输出之前再通过用户配置模块的接收数据缓存,该数据若是ARP请求数据则交给ARP解析与应答处理模块,若是有效的IP数据则直接输出给下一级系统[21];在上行链路中,待发送的数据包含ARP的应答数据包和下级系统的发送数据包,首先将这些数据包通过用户配置模块的发送数据缓存,等待IP核的读取信号,经过IP核数据封装等处理后输出给PHY接口模块的PHY发送子模块,完成数据同步后输出到88E1111芯片,实现特殊数据信息的上传和ARP的应答等过程[22]。

图4-1信号流程图

4.3PHY接口模块设计 4.3.1设计思想

PHY接口模块主要功能是完成数据的同步,即同步来自88E1111的下行数据输出给IP核和将要发送的上行数据同步输出给88E1111,PHY接口模块包含PHY接收和PHY发送两个子模块[23]。同时,根据IP核的接口要求,该模块还需生成符合一定时序要求的IP核接收和发送使能信号。同步数据的关键是对同步时钟的选择。以下是对同步时钟的选择和使能信号控制的具体设计: (1)同步时钟

该模块的关键同步时钟包括rxgmiimiiclk(FPGA内部接收数据采集时

第四章 FPGA软件设计与仿真

39

钟)和txgmiimiiclk(FPGA 内部发送数据同步时钟),同时还为IP核提供工作时钟。

在接受数据时,为满足采集数据的建立和保持时间,当接入1000M以太网时,接收同步时钟gmii_rx_clk的建立时间和保持时间可能无法满足88E1111的要求,所以一般rxgmiimiiclk不能直接采用gmii_rx_clk,需要根据实际工程对其相位作适当的调整,DCM可以实现这一功能;而100/10M的以太网则完全可以直接采用gmii_rx_clk。因此,可以在DCM之后加一个二选一选择器,通过速度标志位speedis10100判断rxgmiimiiclk选择DCM输出时钟还是gmii_rx_clk信号。 (2)使能信号

根据IP核,在100/10M的网络环境下,IP核的接收使能信号clientemacrxenable和发送使能信号clientemactxenable需满足图4-2所示的时序要求,可以直接采用同步时钟的二分频信号;在1000M的网络环境下,使能信号要求始终保持高电平。

图4-2基于100/10M的接收或发送使能信号

4.3.2相关算法

根据以上所述,该模块设计涉及DCM的应用,本设计为了提高系统的稳定性,对DCM的复位信号dcm_reset做了如下的处理:

(1)首先,若系统工作在1000M模式下,不需采用DCM对时钟作相位调整,dcm_reset一直保持高电平有效,DCM不工作;

(2)系统复位时,dcm_reset有效,直到系统复位完成;

(3)检测到DCM的LOCK信号的下降沿,即DCM输出失效,此时需对DCM进行复位,此时dcm_reset输入高电平脉冲;

(4)复位后,若在大于1ms的时间内LOCK仍为低电平,即DCM复位失败,需重新复位,此时dcm_reset输出高电平脉冲。主时钟为125M,

40 基于FPGA的千兆以太网设计

可以采用17位的计数器对1ms进行计时,计数的使能信号在LOCK信号为低电平时有效。

除此之外,DCM要求复位信号至少保持三个输入时钟有效,设计中可以先采用输入时钟对dcm_reset信号寄存三个周期,对三个寄存器的值进行位或以作为最终的dcm_reset信号。

4.3.3功能仿真

本文中的功能仿真均是采用ModelSim SE软件工具,通过HDLTestbench输入的方式完成的,即针对不同的设计代码书写相应的测试代码。本模块测试代码的设计,主要是对PHY接口时序的模拟。

在模拟PHY接口中,需要考虑的是接收时钟gmii_rx_clk的建立和保持时间,如4-2表所示的是88E1111的接收时钟gmii_rx_clk在不同模式下的建立和保持时间。在模拟接收帧数据时,可以在Testbench中引入一个固定时间延时量dly,每个数据保证在gmii_rx_clk上升沿后dly的时间才改变有效。另外,为了各模块功能测试的方便和代码的简洁性,在Testbench中帧数据的模拟统一采用Task封装,不同的网络模式用不同的Task表示,例如在1000M网络模式下,send_frame_1g(16'd46),其中16'd46表示帧数据的长度。

表4-2 接收时钟gmii_rx_clk的建立和保持时间 网络模式 1000M

在1000M网络模式下,dly设置为1ns,PHY接口功能仿真波形图如图4-3所示,输入speed_is_10_100为0,此时rxgmiimiiclk输出采用了经过DCM稳定后的接收时钟gmii_rx_clk,在复位后一定时间后才有效,在后续设计中若建立或保持时间不能满足要求,则可以通过UCF的约束对DCM进行相位的调整。其中rxd_to_mac[7:0]、rx_dv_to_mac、rx_er_to_mac分别是时钟rxgmiimiiclk同步后的数据总线、数据有位、数据错误标志位,输出给IP核,IP接收使能信号rx_enable保持高电平有效。PHY接口的发送时

建立时间 >2.5ns 保持时间 >0.5ns

第四章 FPGA软件设计与仿真

41

钟txgmiimiiclk采用了gtx_clk(即主时钟 sclk)的反向时钟,保证了发送的保持时间和建立时间为3~4ns,足以满足88E1111的要求,同时IP发送使能信号tx_enable输出高电平。

图4-31000M模式下phy接口模块功能仿真波形图

4.4MAC核心处理模块设计

MAC核心处理模块采用Xilinx的专用MAC IP核,在ISE中新建IP类型源文件,选择Tri Mode Ethernet MAC IP核,会弹出如图4-4所示的IP核参数设置界面,为了满足系统的技术指标要求,通过对IP核使用手册的参考,如图4-4所示对IP核的参数进行如下的设置:

(1)根据以太网数据变换电路设计分析,如图4-4所示,PHY接口选用GMII接口模式;

(2)本系统支持对10/100/1000Mbps网络数据的处理,MAC Speed选10/100/1000Mbps;

(3)一般为了减少IP缓存资源的消耗,引入时钟使能信号,如图4-4所示勾选Client Interface下的复选框Clock Enables;

(4)技术指标要求支持半双工/全双工两种工作模式,选择MAC Duplex

本文来源:https://www.bwwdw.com/article/fff2.html

Top