基于FPGA的千兆以太网控制器的设计副本_第1页
基于FPGA的千兆以太网控制器的设计副本_第2页
基于FPGA的千兆以太网控制器的设计副本_第3页
基于FPGA的千兆以太网控制器的设计副本_第4页
基于FPGA的千兆以太网控制器的设计副本_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于FPGA的千兆以太网控制器的设计摘要:网络正在成为当今社会通信的骨干力量,现代化的设备迫切需要解决如何简捷高速的接入问题,本文描述了基于FPGA的嵌入式技术。千兆以太网(Gigabit Ethernet)技术目前被广泛应用于局域网中,千兆以太网二层(MAC层)交换芯片是千兆以太网中的关键芯片。文章介绍了一种由FPGA实现的以太网控制器的设计方法,该控制器能支持1000 Mbps的传输速率以及半双工和全双工模式,并且给出了仿真验证结果。结果表明,该设计方案是可行的。关键词:千兆以太网;FPGA;以太网控制器A Design of Controller for Gigabit Ethernet

2、 Based on FPGADeng Zhi(Huazhong University of Science and Technology, Department of Electronic Science and Technology, Wuhan 430074 China)Abstract: Network becomes the foundation of modern common communications, its urgent to solve the access to the system with the Ethernet simply and efficiently. T

3、he paper deals with the technology of embedded system based on the FPGA. Gigabit Ethernet technology is widely used in Local Area Network (LAN) recently, Layer 2 (MAC) switch chip is the key chip based on which Gigabit Ethernet technology can be used. In this paper, a method that implements Gigabit

4、Ethernet controller on FPGA is introduced, which can support 1000Mbps transmission rate with half-duplex and full-duplex mode, and the simulation and verification results are given.Key words: Gigabit Ethernet; FPGA; Ethernet controller目录1 引言22 千兆以太网技术简介33 千兆以太网的工作原理44 千兆以太网控制器的FPGA实现65 千兆以太网的具体设计方案8

5、5.1 MAC发送模块85.2 MAC接收模块125.3 MAC的其它模块146 仿真结果187 结束语208 参考文献201 引言目前,IP电视、视频流、网络游戏以及多媒体互动等业务逐步成为关注的焦点。然而高清晰度的交互视频是带宽的巨大消耗者, 进一步提升接入带宽已经迫在眉睫。FPGA产品设计完善,可以直接编程。还具备可定制的灵活性,避免了较高的NRE(不可回收)成本。这都使得基于SOPC的嵌入式开发逐渐成为新技术发展的最前沿。嵌入式系统不同于通用型PC,具有以下特点:低功耗、体积小、集成度高;严格约束,嵌入式系统的硬件和软件都必须高效率地设计;实时性,有较短的中断响应时间,从而使内部的代码

6、和实时内核心的执行时间减少到最低限度。目前,以太网802.3协议和TCP/IP协议是现今嵌入式系统接入Internet的首选协议。而以太网(Ethernet)的核心思想是多用户使用共享的公共传输信道,它通过带冲突检测的载波侦听多路访问协议(CSMA/CD)来控制对介质的访问。本文给出了完全用FPGA的控制逻辑来实现嵌入式系统Internet接入中的底层以太网控制器的设计方法。并最终设计出符合IEEE 802.3标准的控制器,从而实现了1000 Mbps两种传输速率以及半双工和全双工两种工作模式,并可通过IEEE802.3标准定义的介质独立接口(MII)与以太网物理层芯片相连接。2 千兆以太网技

7、术简介以太网技术是当今应用广泛的网络技术,千兆以太网技术继承了以往以太网技术的许多优点,同时又具有诸多新特性,例如传输介质包括光纤和铜缆,使用8B/10B的编解码方案,采用载波扩展和分组突发技术等。正是因为具有良好的继承性和许多优秀的新特性,千兆以太网已经成为目前局域网的主流解决方案1。千兆以太网利用原以太网标准所规定的全部技术规范其中包括CSMA/CD协议、以太网帧、全双工、流量控制以及IEEE802.3 标准中所定义的管理对象。千兆以太网的关键技术是千兆以太网的 MAC 层和以太网接口的实现。随着多媒体应用的普及,千兆以太网必然得到广泛应用2。3 千兆以太网的工作原理本文介绍的千兆以太网交

8、换芯片按照 IEEE802.3标准实现了 8个独立千兆端口之间的MAC帧交换,同时向下兼容10Mb/s 和100Mb/s的MAC帧交换。其最基本的工作原理可概括为 “学习转发”。它包括“学习” 和“转发”两个部分。芯片中包含一个 MAC地址表,地址表的每个存储单元为一条如表1所示的72比特的MAC地址索引信息。MAC地址表一共可以存储4096条MAC地址索引信息。表1 MAC地址索引信息结构表71-535251-4948-10保留比特老化标志端口编号MAC地址有效标志端口接收到MAC帧后,提取MAC帧的源地址,并在表中查找与之对应的条目,如果没有找到,就把源地址和接收到该帧的端口编号捆绑成一条

9、新的MAC地址索引信息,存储到MAC地址索引表中,这个过程为“学习” 。通过学习,就可以知道主机的地址和端口的映射关系。有时还需要记录VLAN和端口的对应信息,建立VLAN索引表。从端口接收到一个要求转发的MAC帧后,提取MAC帧中的目的地址,并在MAC地址表中查找与之对应的条目,从中得到目的地址对应的端口号,将MAC帧转发到相应的端口,这个过程为“转发” 。芯片设计的关键技术在于MAC帧的帧头信息提取和MAC地址表的管理。对于帧头信息的提取包括判断是以太网帧还是 802.3 帧,提取源地址和目的地址、VLAN信息和一些 IP帧头信息,计算当前帧的优先级, 根据不同的帧头信息进行相应的协议处理

10、等。为了实现 1000Mb/s的MAC帧交换,MAC地址表必须满足三个要求:必须能在几个时钟周期内查找到MAC地址相应的端口号,以满足千兆以太网需求的高吞吐量;必须及时 “学习” 到新 MAC帧的地址索引信息;老化掉长时间没有访问到的MAC地址索引信息。为了达到这些要求,本芯片中采用了HASH3算法。4 千兆以太网控制器的FPGA实现整个控制器的结构框图如图1所示,整个控制器由接口帧缓存、MAC帧处理模块、交换处理模块、内存管理模块、寄存器以及 RS232 接口组成。芯片内部有一个容量为108k字节的双端口SRAM,用于缓存接收到的MAC 帧,内存管理模块负责该SRAM存储空间的分配、 释放和

11、读写控制。图1 千兆以太网控制器结构框图芯片内部核心部分工作时钟频率为125MHz,端口有可能会接在100Mb/s或10Mb/s的网段上,此时接口的工作时钟为 25MHz,因此需要一个接口缓存模块来缓存数据。 该模块一般是FIFO。RS232 接口是芯片与用户的接口,通过该接口,用户可以读取寄存器的值来了解芯片的工作状态,可以配置寄存器来调整芯片的工作模式。交换处理模块是整个芯片的核心模块,帧头信息提取和 MAC 地址表的管理都在这个模块中实现,其结构框图如图2所示。帧头信息分析模块接收到 MAC帧处理模块送来的帧头信息后,提取出目的地址、源地址、VLAN以及IP头中的优先级等信息,并将其转发

12、到学习转发控制模块。并根据帧头、帧尾以及帧有效信号产生帧状态指示信号发送到端口记录模块。图2 交换处理模块结构框图5 千兆以太网的具体设计方案以太网控制器的FPGA设计工作包括以太网MAC子层的FPGA设计、MAC子层与上层协议的接口设计以及MAC与物理层(PHY)的MII接口设计。图3为MAC接口结构框图。图3 MAC接口结构框图5.1 MAC发送模块MAC发送模块可将上层协议提供的数据封装之后通过MII接口发送给PHY。发送模块可接收主机接口模块的数据帧开始和数据帧结束标志,并通过主机接口从外部存储器中读取要发送的数据,然后对数据进行封装,然后通过PHY提供的载波侦听和冲突检测信号,在信道

13、空闲时通过MII接口将数据以4位的宽度发送给PHY,最后由PHY将数据发送到网络上5。发送模块由CRC生成模块(crc_gen)、随机数生成模块(random_gen)、发送计数模块(tx_cnt)和发送状态机(tx_statem)模块等四个子模块组成。5.1.1 CRC生成模块(crc_gen)该模块用于计算发送数据的CRC值,并将CRC值添加到数据帧的帧校验序列字段(FCS)内。为了提高效率,并考虑到MAC与PHY的数据通道为4位,设计时可采用4位并行CRC计算方法4,算法中可使用一个次态函数,并通过循环迭代来模拟移位操作。这样,发送模块就可以在边发送数据到PHY的同时,一边计算CRC,这

14、样当数据发送完时,CRC值也计算完成了。5.1.2 随机数生成模块(random_gen)如在发送过程中检测到冲突,发送模块就先发送拥塞码(jam),随后停止发送。在下次重新发送之前,发送模块会先执行一个后退(backoff)操作,即发送模块等待一个半随机(生成的随机数有范围限制)的时间之后再开始发送。该随机数就是由随机数生成模块产生的,它采用经典的截断二元指数后退算法,后退的时间是一个与发生冲突次数有关的随机数,随着冲突的次数增多,用于生成该随机数的范围也将逐渐增大,以减少冲突的概率。5.1.3 发送计数模块(tx_cnt)发送计数模块由半字节计数器(nibcnt)、字节计数器和重试次数计数

15、器(retrycnt)三个计数器组成。其中重试次数计数器(retrycnt)可对发送某个帧时产生冲突次数进行计数。当计数器的值达到最大重试次数时,它将放弃重试,并丢弃发送缓冲器内的数据。同时,重试计数器的值还被随机数生成模块用于计算下次重试之前需要后退(backoff)的时隙的个数。半字节计数器和字节计数器分别用于对发送过程中的半字节(bibble)和字节进行计数。字节计算器还可用于滞后冲突(late collision)和超长帧的判断。当滞后冲突发生时,正在发送的数据将被丢弃。超长帧的判断则是从对帧内容(包括FCS)进行字节计数,如果字节计数器的值大于最大有效帧的长度(1518个字节),发送

16、模块就根据系统设置(是否支持超长帧)丢弃或发送。5.1.4 发送状态机模块(tx_statem)发送状态机模块是整个发送模块的核心,主要用于控制整个发送过程。发送状态机由I-dle_State、Preamble_State、Data0_State、Da-ta1_State、PAD_State、FCS_State、IPG_State、Jam_State、BackOff_State、Defer_State等十个状态组成。其状态转移图如图4所示。图4 发送状态机的状态转移图系统复位后,发送模块即进入Defer_State状态,并一直检测载波侦听(CarrierSense)信号。当载波侦听信号变成无效

17、(表示信道空闲)时,状态机进入IPG_State状态。尔后,在等待一个帧间间隙之后,状态机则进入Idle_State状态。如果在帧间间隙的前2/3个周期检测到信道忙信号,状态机将重新回到Defer_State状态。状态机进入Idle_State状态之后,发送模块将检测载波侦听信号和主机接口的发送请求。若主机模块请求发送,状态机将进入Preamble_State状态,发送模块即通知PHY发送开始,同时开始发送前序码(7个0x5),然后发送帧起始定界符(SFD,0xd)。状态机进入Data0_State后,发送模块将发送一个数据字节的低4位(LSB nibble),将当其进入Data1_State

18、状态后,发送模块则发送数据字节的高4位(MSBnibble)。随后,状态机一直在data0和data1之间循环,直到数据发送完毕。当还剩一个字节时,主机模块将通过发送帧结束信号来通知发送模块。如果数据帧的长度大于最小帧并且小于最大帧,状态机就进入FCS_State状态,此时发送模块则将CRC生成模块生成的CRC值添加到帧的FCS字段中并发送给PHY。帧发送完之后,状态机进入Defer_State状态,之后是IPG_State和Idle_State状态。此后状态机又回到初始状态,以重新等待新的发送请求。在全双工模式中发送帧时,不会进行延迟(defer),发送的过程中也不会产生冲突。此时,发送模块

19、将忽略PHY的载波侦听和冲突检测信号。当然,帧与帧之间仍然需遵守帧间间隙的规则。因此,全双工模式下的发送状态机没有Jam_State、BackOff_State、Defer_State三个状态。5.2 MAC接收模块MAC接收模块负责数据帧的接收。当外部PHY将通信信道的串行数据转换为半字节长的并行数据并发送给接收模块后,接收模块会将这些半字节数据转换为字节数据,然后经过地址识别、CRC校验、长度判断等操作后,再通过主机接口写入外部存储器,并在主机接口模块的接收队列中记录帧的相关信息。此外,接收模块还负责前序码和CRC的移除。接收模块由CRC校验模块、地址识别模块、接收计数器模块和接收状态机模

20、块等四部分组成。接收模块中的CRC校验模块可通过检查输入帧的CRC值来验证帧的正确性。其算法与CRC生成模块相同。地址识别模块用于决定是否接收收到的帧,接收模块首先接收输入帧而不管目的地址,随后由地址识别模块检查帧中的目的地址。若MAC被设置为混杂模式(Promiscuous mode)且目的地址为广播地址,同时允许接收广播帧,帧则被接收。否则,帧被丢弃。接收计数器模块由字节计数器(Bytecnt)和帧间间隙计数器(IFGcnt)组成。字节计数器在接收帧过程中将对字节进行计数,以用于识别帧中的各个字段(前序码、目的地址字段、数据、FCS等)以及判断超长帧。帧间间隙计数器则对两帧之间的间隔时间进

21、行计数,以用于判断下一帧数据的开始。IEEE 802.3规定,两帧之间的间隔至少必须为96个比特时间(10 Mbps中为9 600ns,100 Mbps中为960 ns)。如果两帧之间的间隔小于要求,帧将被丢弃。接收状态机为接收模块的核心,用于控制整个接收过程。接收状态机由Idle_State、Drop_State、Preamble_State、SFD_State、Da-ta0_State、Data1_State等六个状态组成,其状态转移图如图5所示。图5 接收状态机的状态转移图系统复位后,状态机处于Drop_State。如果此时MII的数据有效信号(MRxDV)无效,状态机马上进入Idle_

22、State状态,并一直处于Idle等待接收输入帧。当接收模块检测到数据有效信号之后,状态机将进入Preamble_State,并开始接收前序码。此后再状态机进入SFD_State,接收一个字节的帧起始定界符,之后,根据IFGcnt计数器的值进入不同的状态。如果,IFGcnt所确定的时间大于96个比特时间,状态机将进入Data0状态以接收字节的低4位,然后是Data1状态,并接收字节的高4位,之后又回到Data0状态。状态机就一直在这两个状态之间循环,直到数据接收完毕(PHY清除MRxDV信号)后进入Idle,以重新等待接收新的数据;如果接收到帧起始定界符时,IFGcnt计数器所确定的时间小于9

23、6个比特时间,那么状态机将进入Drop_State状态,并一直维持该状态直到数据有效信号结束(PHY清除MRxDV信号)。之后,状态机再回到Idle等待接收新的数据。如果在接收前序码、帧起始定界符和数据期间,数据有效信号被清除,那么,状态机将回到Idle。5.3 MAC的其它模块5.3.1 MAC状态模块在接收过程的状态信息中,接收错误表明PHY在接收过程中检测到了错误;接收到无效符号则表明接收到的帧中包括无效(PHY无法识别的符号;滞后冲突表明接收帧时检测到滞后冲突信号;超短帧表明接收到的帧小于最短有效的长度;超长帧表明接收到的帧大于最大有效帧的长度;半字节对齐错误表明接收到的半字节不是偶数

24、(即帧的长度不是字节的整数倍);接收溢出则表明接收模块来不及处理接收到的数据而导致接收FIFO溢出6。在发送过程的状态信息中,超过重试限制表示由于冲突导致的重试次数超过了额定值;滞后冲突表示发送帧的过程中检测到的冲突信号超过了规定的冲突时间窗;延迟,表明在发送帧之前检测到信道忙。5.3.2 MAC控制模块MAC控制模块提供有全双工操作中的流量控制功能,流量控制可通过发送和接收PAUSE的MAC控制帧来实现。当接收站点的接收缓冲区(Rx FIFO)快溢出而主机接口又来不及取走数据时,系统就会发出流量控制请求。MAC在接收到流量控制请求之后,即发送PAUSE控制帧,以使数据发送站点在指定的时间内暂

25、停发送数据。数据发送站点接收到PAUSE控制帧后,便可根据帧中的参数设置PAUSE定时器。PAUSE定时器在减到0之前,发送模块将暂停发送数据(PAUSE控制帧除外)。PAUSE定时器减到0之后,发送模块将恢复发送数据。5.3.3 MII管理模块MII管理模块用于控制MAC与外部PHY之间的接口,以用于对PHY进行配置并读取其状态信息。该接口由时钟信号MDC和双向数据信号MDIO组成。MII管理模块则由时钟生成模块、移位寄存器模块和输出控制模块三部分组成。时钟生成模块可以根据系统时钟和系统设置中的分频系数来产生MII管理模块的时钟信号MDC(10 Mbps速率时为2.5 MHz,100 Mbp

26、s速率时为25 MHz)。移位寄存器模块既可用于对PHY的控制数据进行写入操作,也可用于对PHY的状态信息进行读出操作。写控制数据时,移位寄存器根据其他模块的控制信号将并行控制数据转换为串行数据;而在读状态信息时,移位寄存器则将PHY的串行数据转换为并行数据,MAC中的其他模块可将该并行数据写入适当的寄存器。由于MDIO是双向信号,因此,输出控制模块就用来决定MDIO是处于输入状态还是输出状态。当MDIO处于输出状态时,移位寄存器输出的串行控制数据在经过时钟同步后发送到PHY;当MDIO处于输入状态时,移位寄存器将数据线上的串行数据转换为并行数据。5.3.4主机接口模块主机接口是运行以太网的上

27、层协议(如TCP/IP协议)与MAC控制器的接口。通过该接口,上层协议可以设置MAC的工作模式并读取MAC的状态信息。该接口还可用于上层协议与MAC之间的数据交换。主机接口模块内有一组寄存器,可用于存储上层协议对MAC设置的参数以及MAC的状态信息。上层协议对MAC设置的参数包括接收超短帧的使能、添加填充码使能、持发送超长帧的使能、添加CRC校验值使能、全双工模式或半双工模式、持超长延迟(Defer)使能、混杂模式(Promiscuous)、接收广播帧使能、发送和接收使能、中断源和中断使能、帧间间隙的长度、最大帧和最小帧的长度、重试限制和冲突时间窗、MII地址和MII控制命令、接收和发送队列的

28、长度以及本机MAC地址等。上层协议通过MAC发送和接收数据的操作主要由主机接口模块内的两个队列来进行管理,这两个队列用于对等待发送的多个帧和接收到的多个帧进行排队。发送队列主要记录等待发送的帧的相关信息、发送该帧时对MAC的设置以及该帧发送完之后产生的状态信息。帧的相关信息包括帧的长度、帧在外部存储器中的地址、该帧是否准备好发送以及队列中是否还有其它帧等待发送;对MAC的设置则包括中断使能、填充使能、CRC使能;产生的状态信息包括成功发送之前的重试次数、由于达到重试限制而放弃发送、发送时产生的滞后冲突以及成功发送之前发生过的延迟。接收队列主要对接收到的数据帧进行排队并记录每个接收到的帧信息。这些信息包括帧的长度、是控制帧还是普通数据帧、帧中包含无效符号、接收到的帧太长或太短、发生CRC错误、接收的过程中发生滞后冲突、帧是否接收完、队列中是否还有其它已接收到的帧以及帧存储在外部存储器中的地址等。该位同时队列中还有针对每个帧的设置位,用来设置是否在接收到帧时产生中断。6 仿真

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论