以太网媒体访问控制(MAC)及其FPGA实现研究

时间:2022-09-25 11:33:51

以太网媒体访问控制(MAC)及其FPGA实现研究

摘 要:百兆MAC(以太网媒体访问控制)是以太网IEEE 802.3协议规定的数据链路层的一部分,使用FPGA替代ASIC,实现以太网MAC功能非常实用。能够实现硬件系统多路多端口的以太网接入,并在自行开发需要以太网接入的嵌入式处理器设计中得到应用。具体探讨以太网MAC的功能定义,使用FPGA实现以太网MAC的方法,对以太网的相关应用设计具有指导作用。

关键词:以太网;媒体访问控制;现场可编程门阵列;ASIC

中图分类号:TP393 文献标识码:A

文章编号:1004-373X(2008)10-088-03オ

Intruduction of Ethernet Media Access Control and Research of Its FPGA Implementation

GUO Jun

(School of Electronic Engineering Integrate Circuit Design,Southeast University,Nanjing,210012,China)オ

Abstract: 100M Ethernet media access control is Part of IEEE802.3 protocol.Using FPGA instead of ASIC to implement Ethernet MAC function is of highly utility.It is capable of achieving multi-ports Ethernet media access in hardware system,especially in embedded CPU system which needed Ethernet Access developed by it self.The definition of Ethernet MAC and the technique of using FPGA implement Ethernet MAC are discussed in this paper.This is valuable to guiding the Ethernet- involved application design.

Keywords:Ethernet;media access control;FPGA;ASIC

以太网经过几十年来的飞速发展,网络规模不断扩大,带宽日益增长,应用服务也不断增加。多端口以太网的接入应用也在不断的增长。其中MAC(百兆以太网媒体访问控制)的实现功能尤为重要,百兆MAC(以太网媒体访问控制)是以太网IEEE 802.3协议规定的数据链路层的一部分,是连接以太网物理层和网络层的中间协议层,一般在系统中,牵涉到的MAC接口比较多或者有特殊要求的,为了减少硬件设计上的芯片个数和简化连接关系,增加集成度,会将以太网MAC接口作为一个子系统集成到ASIC/FPGA芯片中,增加稳定性,降低成本。一般硬件设计上是由ASIC(专用集成电路芯片)实现,本文从MAC协议的基本内容介绍出发,讨论使用FPGA实现百兆MAC的技术。

1 MAC的介绍

1.1 以太网的帧格式

以太网的帧格式如图1所示。

(1) Preamble:该字段为7个10101010b,数值没有实际的意义,只是让物理层做好接收数据的准备。

(2) SFD(Start Framc Delimiter):紧跟着Preamble,固定值10101011b,表示数据帧开始。

(3) DA(Dest.MAC Address):以太网帧的目的地址。

(4) SA(Source MAC Address):以太网帧的源地址。

(5) Type/Length:当该值小于等于1 500时表示数据段的长度,当大于1 500时表示上层协议的类型。

(6) Data:包括(MAC Client Data)上层协议的数据字段;(Pad)填充字段;当MAC Client Data的长度小于46 b时,由于规定了最小以太网帧长度,所以必须对MAC Client Data进行填充(padding),使其达到46 b,填充的内容任意。

(7) FCS(Frame Check Sequence):CRC字段,32 b CRC校验码由802.3规定的校验公式决定,作用范围是从DA字段到Pad字段(如果有的话)。

1.2 MAC子层的协议功能定义

MAC是为了满足网络传输而发展起来,他是构成以太网必备的条件之一。MAC在7层ISO标准中属于数据链路层,他对逻辑链路和物理链路之间的通道进行控制和协调,可以连接各种不同物理媒介。MAC的标准由IEEE802工作组制定。

IEEE 802.3关于MAC子层功能的定义包括2个方面:

(1) 数据的封装、解封装(发送、接收):包括成帧(帧定界、同步)、寻址(处理原地址和目的地址)、校验(检测物理层的传输错误)。

(2) 媒体体访问的管理:包括介质分配(避免冲突产生)、竞争解决(冲突的处理)。

1.3 MAC对以太网工作方式的不同处理

MAC本身并不会接收和发送网络数据,而只是对物理层的接收和发送的行为进行控制。物理层是真正实现数据收发功能的地方,但他不会对数据进行任何区分和处理,当发现网络上有数据,他就把数据从网络上取下来送给MAC,当MAC有数据给他时,他就把数据放到网络上。MAC的作用是把物理层送上来的数据进行区分,如果数据包的目的地址是本机,就把数据包适当处理后提交给上层协议,如果不是就丢弃该数据包,在发送时,MAC在待发送的数据包上加一些信息后直接交给物理层。实际上MAC和PHY(物理层)之间的接口是标准的,不管是什么物理网络,MAC都可以通过标准接口对物理层的行为进行控制,而且一个MAC可以同时管理多个PHY的行为。

以太网的工作方式有半双工和全双工2种。MAC针对以太网的不同工作方式有不同的处理方式。

在半双工工作方式下,MAC的工作遵循CSMA/CD(载波侦听/冲突检测)协议。协议规定在MAC开始向物理层传输数据之前,MAC进行载波侦听,如果物理网路上有载波,说明有数据正在传输,本地数据必须要等待,当侦听到载波消失,本地数据就可以准备发送,但GSMA/CD协议规定2帧数据之间必须有inter-FrameGap或interFrameSpacing,以便使整个网路上的其他设备有足够的时间恢复状态。所以载波消失后还要等待interFrameGap的时间,当inter-FrameGap结束而且其间一直没有载波时,数据就可以开始发送,如果在interFrameGap其间侦听到载波信号,本地数据重新开始等待过程。

在数据向物理层传输的过程中,网络上可能会同时出现2组数据在传输,当两组数据在网路上相遇时,就发生冲突(collision),MAC检测到冲突后,判别冲突的类型:

(1) normal collision:冲突发生在以太网帧的前512 b内;

(2) late collision:突冲发生在以太网帧的512 b之后;

当发生normal collision时,就需要back off,等待数据重传,back off实际上是一个等待的过程,等待时间的算法简称BEB算法(Truncated Binary Exponential Backoff)。更详细说明可参考文献[1]。

在全双工工作方式下,MAC的工作方式更简单,只需要完成数据的封装、解封装。不需要载波侦听和冲突检测。

在点对点通讯的环境下,A,B之间进行通信,当A的数据传送很快,造成B出现拥塞状况的时候,B可以向A发送一个暂停帧,要求A暂停发送数据,A收到暂停帧后,就停止数据发送,暂停的时间有暂停帧中的字段决定。

2 FPGA的实现分析

FPGA实现百兆以太网MAC前,需要仔细分析IEEE 802.3协议所述内容,明确设计的目标设备需要支持的以太网MAC的相对应功能,MAC功能中需要FPGA实现的功能分解如下:

(1) 以太网成帧,同步,按照相应接口时序和PHY互连;

(2) 原地址、目的地址字段提取分析;

(3) 实现CRC校验功能,对接收校验错包丢弃;

(4) 实现对接收错误包的丢弃(错误包:超长包、超短包、字节不对齐包);

(5) 按照相应标准实现RMON(以太网包内容监控);

(6) 对PHY器件的管理(MDC,MDIO);

(7) 复位和中断的功能,提供完整的复位功能,实现对异常的中断上报;

(9) 速率和双工模式的选择功能;兼容10 M的工作方式;

(9) 兼容CSMA/CD协议,实现CSMA/CD协议的相关功能,实现冲突和竞争的解决,提供相关寄存器设计(半双工工作方式适用);

(10) 以太网流控帧设计(点对点工作方式适用)。

针对于特殊的系统应用,可以只实现以上10项功能中的一部分。以下是FPGA实现百兆以太网MAC的具体应用举例,实现的模块框图:

其中 TX Ethernet MAC(以太网发送部分MAC)、Flow Control Module(以太网流量控制模块)和RX Ethernet MAC(以太网接收部分MAC)是组成MAC的基本部件。通过MAC内部状态转移图的绘制、分析有助于更好地实现FPGA的状态机设计。以太网发送部分MAC内部状态转移图如图3所示:

以太网接收部分MAC内部状态转移图如图4所示。

可以通过状态转移图完成TX Ethernet MAC(以太网发送部分MAC)和RX Ethernet MAC(以太网接收部分MAC)的详细设计实现。

3 PCB设计的注意事项

完成了FPGA设计之后,需要具体在目标器件上做功能的验证,选用相应接口的以太网PHY和FPGA接口,完成百兆以太网接入设备的硬件实现,需要注意以下PCB设计的事项:以太网接口信号是否完整。是否满足接口信号布线要求;电源、时钟晶振设计是否满足芯片要求;是否满足差分信号布线要求;接口EMC器件选择是否正确;关键信号是否埋入内层走线,远离干扰;以太网的差分信号线是否满足阻抗匹配的要求(100 Ω±10%的要求);

更详细的说明见参考文献[2,3]。

4 结 语

显然,使用FPGA实现以太网MAC有其非常实用的一面,能够实现硬件系统多路多端口的以太网接入,在自行开发的嵌入式处理器硬件设计中加入FPGA的以太网MAC从而能够对外提供以太网接入功能。

参 考 文 献

[1]Carrier Sense.Multiple Access with Collision Detect(CSMA/CD) Access method and Physical Layer Specification.IEEE Std802.3,2000.

[2]Intel440 Multiport 10/100 Mb/s Ethernet Controller.Intel 440 Datasheet Order Number:278160-007,2001.

[3] Benchmarking.Terminology for LAN Switching Devices Network Working Group R.Mandeville Request for Comments: 2285 European Network Laboratories Category: Informational,1998.

[4][美]Gilbert Held.以太网[M].3版.戴志涛,郑岩,译.北京:人民邮电出版社,1999.

[5]刘华珠,黄海云,陈雪芳,等.以太网桥接专用集成电路的实现[J].现代电子技术,2005,28(8):94-96.

上一篇:基于蓝牙技术的嵌入式信息家电网络系统设计 下一篇:基于MPLS的IP VPN应用分析