APP下载

基于GTX的高速以太网数据传输设计

2022-11-24杨昌胜姜兴廖欣傅天文

电子制作 2022年21期
关键词:收发器以太网数据包

杨昌胜,姜兴,廖欣,傅天文

(桂林电子科技大学,广西桂林,541004)

0 引言

天地一体化网络的优势可实现空间网络与地面网络资源的充分共享和高效利用。以卫星等空间飞行器为节点组成的天基空间通信网相对于地面网络,具有网络覆盖范围大、不受环境影响、资源利用率高等优点[1]。随着卫星通信技术的发展,卫星节点之间的信息互通不再是点对点地通信,而是网络的拓扑以及路由协议。IPv6协议相比于IPV4协议而言其网络地址资源更丰富,可为空间组网增加许多优势,用户可根据需求扩展定义,备受卫星通信研究者青睐。CCSDS-AOS 是IP Over CCSDS Space Links中提出的一种高级在轨系统(Advanced Orbit System,AOS),AOS协议适用于航天器之间以及航天器与地面之间的通信。AOS协议可以实现高速率通信、处理多种数据类型以及大容量信息数据,实现高速的上行和下行链路。光纤通信技术具有通信容量大、传输距离远、传输速度快和抗干扰性强等优点,它与FPGA技术相结合是解决高速数据传输的主流方案。

天地一体化信息网络的拓扑结构具有高度动态变化,网络采用多层封装的IP统一承载开销较大,从而出现了网络端到端的路由寻址、链路和用户切换控制等技术难题。本文采用标签交换方式,将标签值封装在AOS数据帧特定位置中,从而根据标签实现空间数据转发。该转发方式无需涉及上层协议,避免大量的拆解封包操作,从而实现数据高效转发。

1 硬件平台设计

本文使用型号为XC7K325T Xilinx Kintex-7系列的FPGA芯片,设计了四路GTX接口电路,参考时钟采用可编辑时钟芯片SI5338提供,FPGA可通过I2C配置方式根据不同速率需求可修改GTX参考时钟,数据传输接口全部外接SFP模块。串口(UART)用于接收CPU控制板下发的标签交换表,同时上报FPGA当前数据流量传输状态;DDR3用于缓存传输数据,其设计框图如图1所示。

2 高速以太网传输方案设计

■2.1 AOS帧格式与标签交换原理简介

为实现AOS帧基于标签交换的转发机制,需要对AOS帧格式进行修改,标准AOS帧格式依次包括6~8字节传送帧的主帧头(Transfer Frame Primary Header),变长的插入域(Insert Zone)和数据域(Data Field)和可选的中贞尾(Transfer Frame Trailer)本文所用的AOS帧为了支持标签交换,在插入域部分划出定长的标签区域和控制数据域,等价于在AOS帧头后又增加了一层标签封装[2],使用插入域中划定固定长度方式传输控制协议方式有传输速率较为稳定、传输时延的抖动小、与业务数据隔离等优点。

虚拟通道交叉原理如图2所示,传输以太网数据业务时将标签号、出端口号等信息封装在AOS帧特定位置中。虚拟交叉通道结构应该能完成两方面基本功能:一是空间交换,即通过查询标签交换表中标签与出端口的映射关系,将AOS帧从一条链路上交换到另一条链路上,又叫路由选择;另一个功能是VC通道交换,即将AOS帧从特定虚拟通道输出之前完成标签替换。例如,当AOS帧入标签值为X,查询到对应的出端口为1,将当前标签X更新为K后将数据转发至下个卫星节点。

图2 虚拟通道交叉工作原理

■2.2 万兆以太网数据传输设计

10G Ethernet Subsystem[3]核实现了物理层与数据链路层功能,并为MAC与PCS/PMA之间的连接提供两种模式(10GBASE-R或10GBASE-KR)接口,发送和接收数据接口可采用内部寄存器的AXI4-Stream接口,同时还提供AXI4-Lite接口完成MDIO管理接口的协议转换,万兆以太网数据传输方案如图3所示。

图3 两路万兆以太网数据传输设计

10G Ethernet Subsystem核的参考时钟(GTREFCLK)156.25MHz由外部可编辑时钟芯片提供,用户接口数据位宽(DATA[63:0])选择64位,当IP核收到以太网数据后将其送入接收模块对数据包进行包长度计数、FIFO缓存处理。由于AXI4总线协议规定的数据传输方式是触发式的,当传输的以太网数据不是8字节数的整数倍时,在发送有效数据最后64位数据时接口会自动填充无效数据字节并利用字节修饰符(TKEEP[7:0])表示出来。为了实现以太网发送控制模块有效发送数据位的控制,提高数据传输的速率,将最后有效时钟周期的TKEEP值和以太网数据独立保存,并使TKEEP值伴随数据通过GTX传输。因此,当数据从GTX传输接收模块到达以太网发送模块时,先发送以太网数据,在发送最后一个有效时钟周期内将以太网数据发出的同时读出TKEEP值。为了解决10G Ethernet Subsystem核和GTX收发器时钟域匹配、数据位宽变换问题,采用异步FIFO对数据进行缓存处理。写入以10G Ethernet Subsystem核接收时钟(Userclk2)作为参考时钟将64位以太网数据写入FIFO中;以GTX高速串行收发器的发送时钟作为FIFO的读时钟读出32位以太网数据后经过GTX发送控制模块后将其发送至其他光纤设备。

3 GTX收发器控制模块设计

GTX收发器[4]是Xilinx公司在FPGA内部集成的高速串行收发模块,其能提供500Mbps到12.5Gbps的数据线路速率,支持多种物理层协议,包括PCIE接口、万兆网XUAI接口、OC-48、串行RapidIO接口、SATA(SerialATA)接口、数字分量串行接口(SDI)等等。GTX收发器内置高速串并转换、时钟数据恢复、线路编/解码、时钟纠正和通道绑定等功能电路,是实现高速串行数据传输的物理层基础。GTX主要包含PMA(物理媒介适配层)和PCS(物理编码子层)两个子层。PMA子层中集成了SERDES,发送和接收缓冲,时钟发生器及时钟恢复电路。PCS子层负责8b/10b编码解码和CRC校验,并负责通道绑定和时钟修正的弹性缓冲。

本文设计中设置GTX串行收发器的数据线路速率(Line Rate)为1.25Gbps/10Gbps,配置的协议格式为Aurora协8b/10b协议的4Byte单通道模式,收发器的参考时钟为125MHz(GTXREFFCLK);外部数据写入为32位数据,外部数据写入时钟(TXUSERCLK)千兆以太网数据传输时为125MHz,万兆千兆以太网数据传输时为156.25MHz。为了接收端解串器数据位的对齐,我们必须在数据通道中发送相应的COMMA,它指示帧的开始和结束标志,或始终修正和数据流对齐的控制字符,设置为K28.5。TXCHARISKGTX[3:0]用来指示发送的数据是同步码控制字符还是正常传输数据,高电平表明是同步码控制字符。收发器的发送和接收控制模块状态机如图4所示。

图4 GTX收发模块状态机

在GTX发送控制模块中,当收到以太网发送请求信号,数据发送通道(TXDATA)首先发送同步码,同时拉高同步码标志信号(TXCHARISK[3:0])。再发送数据包的长度、类型,以便于在接收端确保数据包的正确长度,从而停止一包以太网数据接收和校验计算。然后开始读取异步FIFO里的以太网数据并通过GTX发送出去,为了能判断接收端数据是否正确传输,在发送数据的同时以相邻字节累加的方式计算校验和(Checksum),该校验和用作接收数据校验依据,在发送完成数据之后把Checksum以数据的形式发送出去。值得注意的是,当传输万兆以太网数据时,我们还需要在送完成数据Checksum发送其字节修饰符(TKEEP[7:0])。在GTX接收模块,当检测到COMMA时候并根据其标志信号RXCHARISKGTX[3:0]判断数据是否出现位移位的情况,若发生数据移位我们则需要进行数据位对齐处理,从而使得后续的COMMA和数据实现对齐,保证数据正确传输。数据对齐处理结束后接收以太网数据包长度、类型,然后开始接收以太网有效数据,并以发送端同样的计算方式进行校验和计算,数据接收完成后与发送端的相比较,两者相等,则数据发送接收正确,缓存以太网数据和字节修饰符,等待以太网发送模块读取;若两者不相等,说明传输数据发生错误,则丢弃该数据包返回等待状态。

4 功能测试

在FPGA与CPU软硬件设计已完成的基础上进行联合调试,并对整个组网协议的功能进行测试,该测试通过自动完成LSP(Label Switching Path)的建立来进行。业务功能测试使用PING模拟三颗卫星通信。测试系统如图5所示。

图5 以太网测试系统

万兆以太网传输功能测试时,为了获得10Gbps数据的吞吐量,测试输性能之前必须为主机A和主机B安装万兆光纤网卡。网卡在发送PING包前会先封装以太网帧,需要对端主机MAC地址,否则其不会下发PING包,因此需要配置静态ARP映射表。设定主机A万兆以太网的IPV6地址为:fe80:0:0:83::,主机B万兆以太网的IPV6地址为fe80:0:0:85::;添加对端目的IPV6地址和对应的MAC地址,配置成功后PING可以正常下发以太网数据包。观察网口连接状态,链路速度设置为自动协商,可以观察到其网口状态速度协商结果为10Gbps,采用分析工具ChipScope观测FPGA内部以太网数据包与网络封包分析软件WireShak捕获的网口数据包作对比分析,传输数据完全一致。Ping下发20000个测试请求包,其中收到回应数据包20000个丢失了0个测试包,验证了标签交换方案的可行性。链路测试结果如图6所示。

图6 万兆以太网数据传输链路测试结果

5 结束语

本文根据实际需求,在硬件设备上设计了四路SFP接口电路,软件上设计出两套高速以太网接收转发代码,在不改变设备硬件的条件下通过更换不同速率SFP模块即可实现设备接口同时收发两路万兆以太网或千兆以太网数据。通过合理的模块设计、平台搭建,传输系统性能达到了预期效果,数据传输准确无误。该设计为复杂卫星通信组网地面模拟实验提供高速数据源和硬件平台,并验证了标签交换方案的可行性,具有较高的实验应用价值。

猜你喜欢

收发器以太网数据包
二维隐蔽时间信道构建的研究*
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
光纤收发器故障排除经验谈
C#串口高效可靠的接收方案设计
Virtex5 FPGA GTP_DUAL硬核两个收发器独立使用的实现
三大因素驱动创新提速以太网快步迈入“灵活”时代
三大因素驱动创新提速 以太网快步迈入“灵活”时代
基于以太网的计算机与数控系统通信技术研究
光纤收发器常见故障原因
基于ENC28J60的嵌入式以太网/CAN网关设计