刘 浩,田 泽,刘承禹,雷 宇
(中航工业西安航空计算技术研究所 集成电路与微系统设计航空科技重点实验室,陕西 西安 710068)
基于DMA的双通道千兆以太网MAC设计与验证
刘 浩,田 泽,刘承禹,雷 宇
(中航工业西安航空计算技术研究所 集成电路与微系统设计航空科技重点实验室,陕西 西安 710068)
以太网是现有局域网采用的通用的通信协议标准。千兆以太网向下完全兼容10/100 Mbps以太网,并利用了原以太网标准所规定的全部技术规范。作为以太网技术的核心,千兆以太网MAC层协议是数据帧收发的基础,负责上层数据和物理层比特流的封装和解封,流量控制,校验检测等功能。针对航电系统应用中对通信带宽和数据实时性的要求,文中提出了基于DMA的双通道千兆以太网MAC方案。首先对缓冲区描述符存储结构进行描述,基于此种存储结构提出了基于DMA的双通道千兆以太网MAC架构设计,最后对发送、接收模块微结构进行了详细设计。在NCSim平台下对整个设计进行了仿真验证。结果表明GMII接口能够以10/100/1 000 Mbps的速率实现半双工/全双工通信,满足设计要求。
缓冲区描述符;DMA;千兆以太网MAC;GMII
以太网自提出以来,得到了飞速发展,已经成为当前局域网的标准。千兆以太网与10/100 Mbps以太网完全兼容[1],并利用了原以太网标准所规定的全部技术规范,包括CSMA/CD协议、以太网帧格式、全双工、流量控制等[2]。千兆以太网以其高效、高速、高性能等特点广泛应用于工业、国防、航空航天等特殊领域[3]。
航电系统的发展趋势要求网络既能够提供更大的带宽,又能保证实时性数据的传输。文中提出的基于DMA[4]的双通道千兆以太网MAC[5]解决方案,主机事先按照缓冲区描述符存储结构开辟好缓冲区,然后启动DMA实现以太网数据与发送、接收模块之间的数据搬移,实现了PLB4[6]接口与GMII[7]接口之间高效的数据传输。
缓冲区描述符存储结构由一组寄存器和一组环形队列组成。软件将待发送的以太网数据填充到缓冲区中,为接收到的以太网数据开辟好缓冲区,同时更新描述符的控制字段;硬件自动处理描述符并且在每一帧处理完成后更新描述符的状态字段。缓冲区描述符存储结构如图1所示。
图1 缓冲区描述符存储结构
主机对描述符列表基地址寄存器进行配置,该寄存器的值指向了主机内存空间中描述符列表的基地址。描述符列表是一组环形队列,最大可达256个。每个描述符长度为8字节,包含3个有效字段:状态/控制字段定义了缓冲区的空/满状态、回绕模式;缓冲区数据长度字段定义了缓冲区数据的长度;缓冲区指针字段定义了缓冲区在主机内存实际存储的首地址。DMA根据该实际存储地址完成缓冲区数据与以太网MAC之间的搬移。
缓冲区与以太网MAC之间的DMA数据搬运如图2所示。
图2 缓冲区与以太网MAC之间的DMA数据搬运
缓冲区中存放的数据包含以太网帧格式[8]中的目的地址(6字节)、源地址(6字节)、长度/类型(2字节)、数据负载(最大1 500字节)以及CRC校验[9](4字节)。DMA将缓冲区中的数据搬运到以太网MAC后,以太网MAC只需添加先导码(7字节,由0/1相间的数据组成)和帧起始界定符(1字节)即可形成标准的以太网帧并将其发送。以太网MAC在接收到一帧数据后,将先导码和帧起始界定符剥离,然后将帧数据通过DMA搬运到缓冲区中。
图3描述了基于DMA的双通道以太网MAC架构设计。该设计包含如下子模块:一个双通道DMA模块,实现缓冲区与以太网MAC之间的数据搬运;两个以太网MAC模块,实现以太网组帧解帧、流控管理、地址过滤等功能。
图3 基于DMA的双通道以太网MAC架构设计
对于发送通道,软件通过DCR总线[10]配置DMA模块内部的描述符列表基地址寄存器,DMA模块根据该寄存器的值通过PLB4总线对缓冲区发起Burst读操作,Burst长度可配置为4、8、16四字传输;DMA模块将读取到的数据通过发送EOPB总线传输给以太网MAC。EOPB总线是基于标准OPB总线[11]的扩展,将数据位宽从32位扩展到128位,字节使能位宽从4位扩展到16位。这样做的好处是保证了数据位宽与PLB4总线数据位宽一致,提高传输效率的同时也降低了设计的复杂度。以太网MAC将接收到的数据打包成标准以太网帧格式通过GMII接口发送到网络上[12-13]。
对于接收通道,以太网MAC将从网络上收到的标准以太网帧解包后通过接收EOPB总线提交给DMA模块,DMA模块通过PLB4总线发起Burst写操作将数据写入缓冲区中。
3.1 发送模块微结构设计
以太网发送模块微结构设计如图4所示。
图4 以太网发送模块微结构设计
软件先将发送数据包准备好,通过处理器将发送数据包解析到发送缓冲区中并且更新发送描述符的控制字段,然后软件通过寄存器配置启动以太网MAC模块的发送功能。以太网MAC模块向DMA模块请求发送数据包。DMA模块获取发送描述符信息,将控制字段写入以太网MAC模块,同时启动DMA将发送数据包从缓冲区搬移至以太网MAC模块。以太网MAC模块将发送数据包组帧形成标准以太网帧格式并发送到网络上。待发送完成后,以太网MAC模块请求DMA模块读取状态字段。DMA模块将读取到的状态字段写入发送描述符。以太网MAC模块向处理器发出发送中断表明数据包发送完成;软件清除以太网MAC模块的发送中断。
3.2 接收模块微结构设计
以太网接收模块微结构设计如图5所示。
图5 以太网接收模块微结构设计
软件先开辟一块空闲的接收缓冲区并且更新接收描述符的控制字段,然后软件通过寄存器配置启动以太网MAC模块的接收功能。以太网MAC模块从网络上接收以太网帧,并且向DMA模块发起接收数据包处理请求。DMA模块获取接收描述符信息,并将控制字段写入以太网MAC模块,同时启动DMA将接收到的数据包写入缓冲区中。待接收完成后,以太网MAC模块请求DMA模块读取状态字段。DMA模块将读取到的状态字段写入接收描述符。以太网MAC模块向处理器发出接收中断表明数据包接收完成;软件清除以太网MAC模块的接收中断。
3.3 仿真验证
通过NCSim平台搭建仿真环境,使用Verilog和BFL[14]语言,借助外部PLB模型、DCR模型、OPB模型、以太网PHY模型以及时钟复位模型对设计添加激励,详尽地对10/100/1 000 Mbps下全双工/半双工模式、流量控制、地址匹配等功能进行了验证。
典型的全双工千兆以太网自环过程如下:
(1)软件通过DCR接口配置发送通道和接收通道的描述符列表基地址;
(2)软件通过OPB接口配置以太网MAC模块的收发功能;
(3)DMA模块读取发送通道描述符控制字;
(4)DMA模块启动DMA读取PLB空间发送缓冲区中的数据;
(5)GMII接口自环发送、接收以太网帧;
(6)DMA模块将状态字写回到发送通道描述符;
(7)DMA模块读取接收通道描述符控制字;
(8)DMA模块启动DMA将经过自环接收到的以太网帧数据写入PLB空间;
(9)DMA模块将状态字写回到接收通道描述符。
文中提出一种基于DMA的双通道千兆以太网MAC方案,详细论述了缓冲区描述符,体系结构设计,以太网帧发送、接收微结构设计。经过验证,该设计满足千兆以太网MAC层协议,实现了以太网帧的高效、高速、低开销传输,可以方便地集成到嵌入式系统中。
[1] 董小娜,甄国涌,杜 志,等.基于Express Card接口的千兆以太网网卡设计[J].计算机测量与控制,2012,20(8):2267-2269.
[2] 詹俊鹏,李 鹏.基于Altera FPGA的千兆以太网实现方案[J].电子设计工程,2009,17(2):50-52.
[3] 董继承,刘 健,王 瑞.一种带优先级队列的千兆以太网MAC设计[J].电子设计工程,2011,19(8):116-119.
[4] MCMAL DMA to PLB4 synthesizeble core databook[M].[s.l.]:IBM,2007.
[5] Ethernet Media Access Controller4 (EMAC4) core databook[M].[s.l.]:IBM,2004.
[6] 128-bit processor local bus architecture specifications[M].[s.l.]:IBM,2004.
[7] Ethernet Gigabit MAC4 (GMAC4) core databook[M].[s.l.]:IBM,2006.
[8] 李俊生,袁继兵,郑林华.基于AM79C874高速以太网控制器MAC层的设计与实现[J].电子工程师,2006,32(12):63-66.
[9] 刘 伟,王俊芳,王立莹,等.千兆以太网MAC中CRC算法的设计与实现[J].通信技术,2012,45(7):32-34.
[10] Devic econtrol register bus 3.5 architecture specifications[M].[s.l.]:IBM,2006.
[11] On-chip peripheral bus architecture specifications[M].[s.l.]:IBM,2001.
[12] 孔 阳,武 杰,马毅超,等.基于千兆以太网物理层的高速传输设计[J].核技术,2010,33(11):863-866.
[13] 曹 政,李 磊,陈明宇.万兆以太网MAC层控制器设计与实现[J].小型微型计算机系统,2007,28(6):974-978.
[14] Processor local bus functional model toolkit[M].[s.l.]:IBM,2003.
Design and Verification of Dual-channel Gigabit Ethernet MAC Based on DMA
LIU Hao,TIAN Ze ,LIU Cheng-yu,LEI Yu
(Aeronautics Science and Technology Key Laboratory of Integrate Circuit and Micro-system Design,AVIC Computing Technique Research Institute,Xi’an 710068,China)
Ethernet is the popular communication protocol standard implemented in existing LANs.Gigabit Ethernet is fully compatible with 10/100 Mbps Ethernet,and adopting all specifications of original Ethernet.As the key of Ethernet technique,gigabit Ethernet MAC is the base of frame data transmitting,it implements the assembling and disassembling framing between upper data and physical level,flow control,and CRC check so on.Aiming at the demands of high-bandwidth and real-time-transmission in avionics applications,a method of dual-channel gigabit Ethernet MAC based on DMA is put forward.First,an overview of buffer descriptor is described,based on which propose the system design of dual-channel gigabit Ethernet MAC based on DMA.Finally,the structure design of sending and receiving module is discussed.Through simulation of the whole design under NCSim platform,the results show that the GMII interface can work in Full Duplex/Half Duplex mode at 10/100/1 000 Mbps respectively to meet the requirements.
buffer descriptor;DMA;gigabit Ethernet MAC;GMII
2015-06-16
2015-09-22
时间:2016-05-05
中国航空工业集团公司创新基金(2010BD63111)
刘 浩(1985-),男,硕士研究生,工程师,研究方向为集成电路设计;田 泽,博士,研究员,中航首席技术专家,研究方向为SoC设计、嵌入式系统设计、VLSI设计。
http://www.cnki.net/kcms/detail/61.1450.TP.20160505.0814.002.html
TP39
A
1673-629X(2016)05-0132-03
10.3969/j.issn.1673-629X.2016.05.028