第44卷第2期2021年2月
核技术
NUCLEAR TECHNIQUES
V ol.44,No.2
February2021
基于Zynq-7000的千兆以太网传输系统
设计与实现
杨振雷刘承敏青先国朱宏亮包超蒋天植喻恒李进
罗庭芳袁航单伟
(中国核动力研究设计院核反应堆系统设计技术重点实验室成都610213)
linux内核设计与实现 pdf摘要随着核仪控系统的复杂性、集成度和数据量的不断增加,传统的控制器局域网络(Controller Area
Network,CAN)或外围设备互连(Peripheral Component Interconnect,PCI)等数据总线在一定程度上已难以满足数据快速传输需求。本文基于美国Xilinx公司Zynq-7000型片上系统(System on Chip,SoC)设计和实现了基于用户数据报协议(User Datagram Protocol,UDP)的千兆以太网传输系统。首先,对UDP千兆以太网传输系统的实现方式进行了详细描述;然后,采用仿真工具ModelSim对系统方案可行性进行了仿真验证;最后,基于Xilinx 的开发板ZC706对系统方案进行了具体实现和功能性能验证。验证结果表明:UDP传输速度最高可以达870Mbps,能够满足绝大多数核仪控系统的实际传输需求。
关键词Zynq-7000,用户数据报协议,以太网,传输系统
中图分类号TL82
DOI:10.11889/j.0253-3219.2021.hjs.44.020401
Design and implementation of gigabit ethernet transmission system based on Zynq-7000
YANG Zhenlei LIU Chengmin QING Xianguo ZHU Hongliang BAO Chao JIANG Tianzhi YU Heng LI Jin LUO Tingfang YUAN Hang SHAN Wei (Science and Technology on Reactor System Design Technology Laboratory,Nuclear Power Institute of China,Chengdu610213,China)
Abstract[Background]With the increasing complexity,integration level and data volume of nuclear instrumentation and control system,conventional data buses,such as peripheral component interconnect(PCI)or controller area network(CAN),are difficult to meet the needs of rapid data transmission.[Purpose]This study aims to design and implement a Gigabit Ethernet transmission system based on the Xilinx's Zynq-7000system on chip (SoC)and user datagram protocol(UDP).[Methods]First of all,the system architecture of UDP Gigabit Ethernet transmission system for nuclear instrumentation and control system was introduced in detail.Then the ModelSim toolkit was employed to verify designed system functions by simulation.Finally,the Gigabit Ethernet transmission system was implemented using ZC706development board,and tested by experiment.[Results]Experimental results show that the data transmission speed can reach870Mbps.[Conclusions]The Gigabit Ethernet transmission system can meet the actual transmission requirements of most nuclear instruments and control system.
Key words Zynq-7000,User datagram protocol(UDP),Ethernet,Transmission system
随着核能行业的快速发展,核仪控系统复杂度逐渐提高,数据传输量也迅速增长,对数据传输提出了较高要求。传统核仪控系统通常采用控制器局域网络(Controller Area Network,CAN)或外围设备互
第一作者:杨振雷,男,1985年出生,2016年于中国科学院大学获博士学位,研究领域为核电子学与核仪表系统
收稿日期:2020-09-24,修回日期:2020-12-02
First author:YANG Zhenlei,male,born in1985,graduated from University of Chinese Academy of Sciences with a doctoral degree in2016, focusing on nuclear electronics and nuclear instrument system
Received date:2020-09-24,revised date:2020-12-02
核技术2021,44:020401
连(Peripheral Component Interconnect,PCI)等数据总线进行数据传输,CAN总线具有实时性强、开发周期短、稳定性高的优势,已经成为计算机控制系统和嵌入式工业控制局域网的标准总线。但CAN总线数据通信速率最高只有1Mbps,在一定程度上已经难以满足数据传输需求;PCI总线结构非常复杂,最大传输速率也不超过133Mbps。在现有的核仪控系统中,工业以太网逐渐得到广泛的应用,例如分布式控制系统(Distributed Control System,DCS)、堆外核测量系统、辐射监测系统等均开始采用工业以太网技术,商用的核仪控系统主要以百兆以太网为主。随着以太网技术的发展和普
及,将千兆以太网技术已成为当前核仪控系统研究的热点和趋势[1-2]。相对于传统的数据通信模式,千兆以太网技术在数据传输速度、传输距离、组网架构等方面均有较大的技术优势[3-4]。
目前,嵌入式千兆以太网硬件方案有多种实现方法[5-9],例如基于单片机、ARM(Advanced RISC Machine)平台、DSP(Digital Signal Processing)平台和FPGA(Field Programmable Gate Array)平台等。国内外众多高校和研究机构在大科学装置中均采用了嵌入式以太网解决方案,欧洲核子研究组织的Gnemmi等[10]基于FPGA实现了多种以太网硬件方案,在大型强子对撞机(Large Hadron Collider,LHC)强辐照环境下开展传输系统可靠性研究;中国科学技术大学的吴旭等[11]在大型高海拔空气簇射观测站(Large High Altitude Air Shower Observatory,LHAASO)设计了一套基于Xilinx公司Virtex-5系列的千兆以太网数据传输系统,数据传输速率可达237Mbps,满足工程测量需求;中国科学院上海应用物理研究所的周大勇等[12]在上海光源(Shanghai Synchrotron Radiation Facility,SSRF)控制系统中采用以太网技术使设备控制器直接连接至控制网络,简化了控制系统结构,同时便于系统维护和升级。可见,嵌入式以太网硬件方案已经广泛应用于国内外大科学装置的科学研究与工程应用中。
随着半导体技术的发展,可编程逻辑器件制造商Altera(现被Intel收购)和Xilinx均推出了SoC (System on Chip)器件,SoC器件将ARM处理器的软件可编程性与FPGA的硬件可编程性进行了有效集成,既能实现硬件加速与数据处理功能,又集成了多种硬核以及混合信号处理功能。本文以Xilinx
公司Zynq-7000型SoC作为开发平台,充分利用ARM 和FPGA集成的优势,设计了一套用户数据报协议(User Datagram Protocol,UDP)千兆以太网传输系统架构,然后采用ModelSim仿真工具对系统功能进行
了仿真验证,最后基于Xilinx的开发板ZC706对系统方案进行了具体实现和功能性能验证,并给出了最终的实际测试结果。
1传统以太网方案
1.1Zynq简介
Xilinx公司的Zynq-7000是第一代可扩展处理平台,作为一款可编程SoC器件,将ARM处理系统(Process System,PS)和FPGA可编程逻辑(Programmable Logic,PL)进行有效集成。具体而言,Zynq内部包含一个双核ARM Cortex-A9处理子系统和28nm工艺的可编程逻辑子系统,PS和PL之间采用了ARM的AXI(Advanced eXtensible Interface)总线进行数据交互,共包含AXI_ACP (AXI Accelerator Coherency Port)总线、4个AXI_HP (AXI High Performance Port)高性能接口、4个AXI_GP(AXI General Purpose Port)通用接口。另外,PS部分集成了多种常用的外设接口。SoC器件的产生,使得嵌入式系统的结构更为简捷和灵活,并在一定程度上提高了系统的可靠性和性能。
1.2方案架构
基于Zynq-7000的千兆以太网硬件方案有多种实现方式。Xilinx推荐了三种千兆以太网实现方式[13],如图1所示。
1)方案一:PS部分实现方式
Zynq-7000的ARM中集成了两个数据链路层MAC(Media Access Control)硬核GEM(Gigabit Ethernet MAC)。因此,物理层采用外置Marvell公司的PHY(Physical)芯片,数据链路层直接使用其中一个硬核GEM0,协议层采用Linux以太网驱动实现,对外以太网物理接口采用RJ45连接器实现。
2)方案二:PS部分GEM硬核和PL部分PHY实现方式
PL部分采用Xilinx提供的1000BASE-X PCS-PMA IP核实现物理层功能,PS部分采用ARM的另一个GEM1硬核实现数据链路层功能,协议层采用Linux以太网驱动实现。由于1000BASE-X PCS-PMA IP核采用Xilinx的高速GTX(Gigabit Transceiver)接口,因此对外以太网物理接口采用SFP(Small Form-factor Pluggable)光纤接口,也可以采用SFP转RJ45接口实现。
3)方案三:PL部分Ethernet IP核和PL部分PHY实现方式
PL部分采用Xilinx提供的1000BASE-X PCS-PMA IP核实现物理层功能,PL部分采用Xilinx提供
杨振雷等:基于Zynq-7000的千兆以太网传输系统设计与实现
的AXI-Ethernet IP 核实现数据链路层功能,协议层采用Linux 以太网驱动实现。与第二种实现方式类似,对外以太网物理接口既可以采用SFP 光纤接口,也可以采用SFP 转RJ45接口实现。
以上三种方法通过不同的组合方式实现以太网功能,能够满足大多数应用场合需求。但是这三种方法均采用Linux 以太网驱动作为协议层的实现,
过多占用ARM 的运行资源,并且未能充分利用SoC 器件可编程逻辑部分的优势。因此,本文参考国内
外厂商以太网传输系统的研制经验[14-15]
,提出了一种新的千兆以太网传输系统架构,协议层采用UDP 面向非连接的传输协议,以满足现有项目提出的传输速度大于等于650Mbps 的实际需求。
2
总体方案
2.1
方案架构
本文设计的系统方案如图2所示,在PL 部分主要实现三部分功能:UDP 模块、MAC 模块、PHY 模块。UDP 模块主要实现UDP 协议层功能,具体包括UDP 接收和发送功能、数据帧解析功能、地址解析协议功能(Address Resolution Protocol ,ARP )、网际报文控制协议功能(Internet Control Message Protocol ,ICMP )以及数据存储DMA (Direct Memory Access )功能;MAC 模块主要实现以太网数据链路层的功能,并且实现管理数据输入输出接口(Management Data Input/Output ,MDIO )功能,以及对PHY 的配置功能。PHY 模块,主要实现以太网物理层的功能,本部分采用Xilinx 的1000BASE-X PCS-PMA IP 核实现。PS 部分,通过32位GP 总线对UDP 模块、MAC 进行配置和控制,例如IP (Internet Protocol )地址、MAC 地址、地址掩码的设置以及内存(Double Data Rate ,DDR )地址读写的控制等;通过64位HP 总线实现UDP 接收数据和发送数据到
DDR 的缓存功能。2.2
UDP 协议层实现方式
UDP 协议层逻辑框图如图3所示,主要包含数据帧解析模块、UDP 发送模块、UDP 接收模块、ARP 模块、ICMP 模块、仲裁模块以及DMA 模块。2.2.1数据帧解析模块
数据帧解析模块主要实现MAC 帧解析的功能,通过数据有效信号对MAC 帧字节计数,当MAC 帧起始信号有效时,开始计数;当MAC 帧结束信号有效时,结束计数;然后,按照以太网V2标准对MAC 帧内容逐字解析,判断帧类型是否是IP 数据报或者ARP 协议帧;最后,再对IP 数据报进行解析,过滤传输给本地的有效信息并解析帧携带的关键信息,例如源IP 地址、目的IP 地址、IP 数据报长度等。
以太网V2标准MAC 帧格式如图4所示,通过对MAC 帧内容进行解析,按照帧字节计数(包计数大于等于6且小于等于11)得到源物理地址。按照帧字节计数判断数据报类型,若包计数等于13且数据类型码为0x0800,则帧类型为IP 数据报;
若包计
图1Xilinx 推荐以太网实现方案架构图[13]
Fig.1
The block diagram of Ethernet implementation recommended by Xilinx [13]
核技术2021,44:020401
数等于13且数据类型码为0x0806,则帧类型为ARP 协议。若帧类型为IP 数据报,本模块需要根据字节计数,检查IP 数据报中的IP 地址是否与本地IP 地址匹配,若匹配,则继续根据IP 数据报字节计数
获取IP 数据报包头长度、源IP 地址和目的IP 地址等信息;若不匹配,则丢弃该帧。2.2.2ARP 模块
ARP 模块主要用于检测ARP 请求帧以及生成ARP 应答帧。本模块首先检测MAC 帧帧类型字
段,若帧类型字段为0x04,表明为ARP 帧;再检测是否为ARP 请求信号,若操作码字段opcode 为0x01,表明为ARP 请求帧;再检测IP 地址是否为本地IP 地址,若与本地IP 匹配,则为有效的ARP 请求帧,按照图5所示的ARP 协议帧格式生成ARP 应答帧。为了尽快查到IP 地址到MAC 地址的映射关系,本模块设计了ARP 缓存区,存放一定时间周期内的IP 地址与MAC 地址的映射表,
并保持动态更新。
图2以太网传输系统顶层系统框图
Fig.2Top system diagram of Ethernet transmission
system
图3UDP 协议层结构图Fig.3Framework of UDP protocol
杨振雷等:基于Zynq-7000的千兆以太网传输系统设计与实现
2.2.3ICMP 模块
ICMP 模块主要实现ICMP 请求包的检测功能以及生成ICMP 应答包。与ARP 模块处理类似,本模块首先检测输入MAC 帧的协议类型字段,若输入信号中协议类型是ICMP 协议,则继续检测该帧总字节计数,若帧总字节计数小于等于0x200,则继续检测该ICMP 帧是否为ICMP 请求帧,若是ICMP 请
求帧,则为有效ICMP 请求包。按照图6所示的格式
生成ICMP 应答包。这里对ICMP 请求报与ICMP 应答报经对比发现,将ICMP 请求包的MAC 帧首部MAC 地址互换,IP 首部IP 地址互换,ICMP 报文中协议类型由0x08变为0x00,ICMP 报文中校验和减少0x08,便能够生成ICMP 报文应答包。
2.2.4UDP 接收模块
UDP 接收模块主要实现UDP 数据帧有效性检测以及UDP 数据的接收功能。具体实现过程如下:
1)UDP 校验和计算。在UDP 首部前面增加12字节的伪首部,分别为4字节的源IP 地址、4字节的目的IP 地址、1字节(字节内容为0)、1字节(字节内容为6)、2字节的UDP 长度,然后对伪首部、U
DP 首部、UDP 数据部分按照二进制反码运算求和,同样,若UDP 数据个数为奇数,需填充全0字节构成偶数进行计算,最后,对计算出的结果求反码进而得到UDP 的校验和。
2)UDP 数据帧有效性检测。根据数据解析模块解析的内容,依次判断接收到的IP 数据报内容是否是UDP 协议、目的端口号与本地端口是否匹配,
然后再检测UDP 校验和是否正确。如果以上内容
均不正确,判断帧为无效帧,丢弃处理。
3)接收数据。当检测到有效帧后,去除IP 数据报首部、UDP 首部,便可得到UDP 的有效数据部分。2.2.5UDP 发送模块
UDP 发送模块主要实现IP 校验和计算、UDP 校验和计算、数据组帧以及数据发送功能。具体实现流程如下:
1)将发送数据进行缓存。将发送数据写入缓存,当缓存数据量达到一定的数据量时,将缓存数据读出。
2)计算IP 首部校验和。IP 首部校验只针对IP 数据报的首部进行校验。IP 数据报校验的基本单元为2字节的数据,所有的2
字节数据进行反码算术运
图4MAC 帧格式图
Fig.4
Diagram of MAC frame
format
图5ARP 协议帧格式图
Fig.5Diagram of ARP frame
format
图6ICMP 报文格式图
Fig.6Diagram of ICMP frame format

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。