千兆以太网的互联与实现
2018-01-15郭贺
郭贺
摘 要:本文以一种千兆以太网MAC控制器的设计作为案例,主要思考了大型以太网的规划建设过程中的关键点,以及如何更好的进行规划建设,提出了一些比较可行的措施和方法,分析证明该规划建设方案提高了数据传输的并行度,实现了以太网高带宽、低延时的数据传输,可供今后参考和借鉴。
关键词:大型以太网,规划,建设
要想真正做好大型以太网的规划与建设工作,规划设计人员首先要做好方案的设计,优选最好的方案,在具体的建设过程中,还必须要积极最好建设工作,确保建设的质量符合要求,所以,进一步总结大型以太网的规划与建设工作极为必要。
1概述
随着互联网的快速发展,以前单一的纯文本通信转为包含声音、数据和图像等多媒体的综合业务,从而对通信带宽的需求大大增加,基于这種变化,千兆以太网应运而生[1]。千兆以太网继承了以太网和快速以太网的技术标准,包括以太网帧格式、CSMA/CD协议等技术标准,同时支持千兆流量管理技术,保证在以太网上的服务质量等。基于这些特性,千兆以太网可以在原有低速以太网基础上平滑、连续的升级,从而成为了目前应用最广泛的以太网技术。
本文介绍了一种基于DMA的千兆以太网MAC控制器的设计技术,该设计实现上层数据和物理层比特流的封装和解封、流量控制和校验检测以及载波侦听多路访问(CSMA/CD)的信道存取等功能;同时采用基于描述符的DMA结构,保证了以太网数据的高带宽、低延时传输。
2千兆以太网的规划和建设
本设计完成的千兆以太网MAC电路由AHB接口模块、DMA控制器、MTL传输层模块、MAC协议处理模块和PHY接口模块组成。
AHB接口模块实现AHB2.0协议,用于与外部总线连接,完成与上层应用通信。
DMA控制器完成DMA机制设计,采用描述符结构实现大量数据的高速传送,它可以完成4种方式的直接数据传输,包括:存储器到外设、存储器到存储器、外设到存储器以及外设到外设。
MTL传输层模块提供数据缓存,用来管理DMA传输到MAC协议处理模块的包数据,该模块包含两条数据通道:发送通道和接收通道。
MAC协议处理模块完成IEEE802.3标准规定的功能,包括以太网帧的封装和解封,CSMA/CD协议实现、流量控制功能以及CRC插入和校验等。
PHY接口模块实现MII、GMII接口协议。根据PHY的工作模式,将MII和GMII接口不同的数据位宽进行转换,从而提供给上层发送模块和接收模块统一的数据位宽。
3千兆以太网MAC的具体实现
3.1DMA控制器设计
DMA控制器设计用于面向数据包的传输。该模块可以配置在某些条件下中断应用CPU,例如包发送和接收结束时以及其他正常或错误条件。在设计中采用独立的发送和接收引擎,发送引擎从系统存储器传输数据到设备端口,接收引擎从设备端口传输数据到系统存储器。同时定义了一个描述符结构高效的从源端到目的地址传输数据,描述符位于系统存储器中,作为指针指向缓存器。为了提高并行性,提升上层应用在人物调度的效率,DMA控制器采用了8个发送和接收通道,对于发送操作,DMA控制器从发送描述符指向的地址读取报数据。接收操作时,DMA控制器向接收描述符指向的地址写入数据。
3.2描述符结构设计
本设计中的DMA控制器基于链表形式的描述符来进行数据传输,通过将描述符链接为一个链表,实现DMA通道在一系列不连续的地址上进行数据传输。
设计中采用了环形结构实现链表,链表的信息通过寄存器传递给传输通道。每个传输通道提供发送和接收寄存器组来控制DMA传输,每个寄存器组包括描述符头指针寄存器、描述符尾指针寄存器和链表长度寄存器。链表长度寄存器指定整个链表环包含的描述符个数;描述符头指针寄存器存放描述符0的基地址;描述符尾指针存放描述符N的基地址;当描述符指针等于描述符尾指针时,DMA结束传输;当执行到链表最后一个描述符时,描述符指向描述符链表的基地址。
3.3MTL模块设计
MTL模块用来处理DMA和MAC核处理模块之间的数据交互。该模块由MTL发送模块、MTL接收模块和MTL配置模块组成。
3.3.1发送流程
在发送操作过程中,MTL模块作为DMA控制器的从机模块。当发送操作启动时,DMA控制器从缓存器读取数据,并传送给MTL发送模块。MTL发送模块将数据推送到相应的队列中,直到EOP定界符传输完。当队列中数据超过阈值或一个完整的包数据接收到队列中,MTL发送模块读取包数据并发送个MAC发送模块。当包数据传输完成,MTL发送模块处理从MAC发送模块的状态信息。
发送队列包含2K字节的缓存。提供发送队列的空满状态可以被DMA/上层应用读取。DMA/上层应用可以根据该状态字发起数据发送操作。
3.3.2接收流程
MTL接收模块将MAC包数据放入接收队列中,并向DMA或上层应用提供队列当前状态。在接收过程中,MTL作为MAC协议处理模块的从机模块。接收流程为:
1)当MAC协议处理模块接收完一个包时,该模块发出包数据有效指示信号;
2)MAC协议处理模块指示以太网包的起始和结束;
3)MTL接收模块获取接收包数据并将数据存放到相应的接收队列;
4)在EOP定界符传输后,MAC协议处理模块发送相关状态字给MTL接收模块。
5)在IEEE1588时间戳模式下,MAC协议处理模块产生以太网包状态字和64位时间戳,这种模式下每个包长度增加64位。
6)MTL模块从队列中取出数据并发送给DMA模块。
3.4MAC协议处理模块设计
MAC层协议是数据帧收发的基础。MAC协议处理模块完成上层数据和物理层比特流的封装和解封、流量控制和CRC校验以及载波侦听多路访问(CSMA/CD)的信道存取等功能,使得接入以太网各设备之间公平有效地共享通信媒介。该模块按照功能划分为接收模块、发送模块、流量控制模块和CRC校验模块。
1)发送模块
发送模块主要实现CSMA/CD协议,包括数据的封装、媒体管理、信道获取以及冲突处理等。发送模块把从MTL模块接收的数据封装后传送给物理层芯片,并能完成相关退避操作,同时监视来自物理层的信号(载波和冲突信号)。
发送模块首先从缓冲区中读出字节型数据,并在读取数据的同时启动CRC模块进行校验,最后把用户数据和32位的校验值按以太网帧格式的要求进行封装,然后以先低位后高位的形式传输到网络。
发送模块按功能划分为3个子模块:计数器模块、随机数生成模块和发送状态机模块。状态机模块控制着整个发送进程。计数器模块根据计数结果的不同给状态机以反馈,影响状态机跳转。当有冲突发生时,随机数生成模块完成随机数的生成和加载。
2)接收模块
以太网接收模块主要完成数据的解封和媒体管理。具体功能有响应物理层芯片(PHY)的接收数据有效信号(RD_DATA_VALID),接收以太网帧,移除前导码和SFD,并将数据转化为整字节后存储到接收FIFO中,同时完成对目的地址和CRC值的检测。
结束语
综上所述,在以太网的规划建设工作中,要选择最好的方案,采取最有效的措施,本文总结了一个完整的千兆以太网设计架构,采用描述符结构的DMA完成上层数据的搬移,并详细论述了千兆以太网MAC发送和接收结构设计,经过验证表明该电路实现了千兆以太网MAC功能,能够完成以太网数据高效的传输。
参考文献:
[1]董佳辉,张顺星.基于工业以太网的自动化生产线通信系统实现[J].工业仪表与自动化装置,2017(06):88-91.