AN-2612: 运行模式与帧间隙(IFG)变化

背景

本应用笔记阐述了fido5200/fido5210(以下简称FIDO52x0)在不同帧间隙(IFG)条件下的性能表现,并针对各类场景提供了器件的优化配置建议。

FIDO52x0是一款实时以太网多协议(REM)二端口交换机。这款REM交换机为用户提供了灵活选择空间,可搭配适合应用场景的处理器,吞吐量达 10Mbps/100Mbps,兼容多数第2层或第3层协议。FIDO52x0支持的协议包括:EtherCAT、PROFINET实时(RT)与等时实时(IRT)、带或不带设备级环网(DLR)的EtherNet/IP、Modbus TCP、POWERLINK等。交换机内置各协议对应的软件驱动程序,这些驱动程序提供API,可实现与任何现场器件或协议栈的集成。

IFG 配置

IEEE 802.3以太网标准规定帧间隙(IFG)为12字节时长,这也是FIDO52x0支持的默认值。不过,EtherCAT技术协会(ETG)允许IFG低于该数值。FIDO52x0固件已做修改,可支持低至8字节时长的IFG。

FIDO52x0计数的入站数据RX IFG可通过RX IFG寄存器进行配置。RX IFG计数在RX MAC中完成。寄存器值必须设为目标RX IFG-1。因此,若需支持12字节的RX IFG,需将RX IFG计数设为11。请注意,若入站数据的IFG小于RX IFG寄存器的设定 值,FIDO52x0会直接丢弃该帧。

出站数据包的最小间隙可通过TX IFG寄存器配置。TX IFG在TX MAC中强制执行。出站IFG不小于TX IFG寄存器中的值。

请注意,为避免RX缓冲区溢出,必须平衡RX和TX IFG的最小值,以确保器件正常运行。以要求12字节的IFG场景为例,“平衡”指的是将RX IFG设为11,并将TX IFG设为12。在此情况下,若FIDO52x0检测到RX IFG仅为11字节,它会在发送端(TX)将IFG恢复为12。

硬件同步

图1展示了FIDO52x0同步模块的框图。

25MHz RXCLK和RX_DV信号被接收并同步到125MHz时钟空间。MAC会检测RX_DV的上升沿和帧起始定界符(SFD),并将此信息传递给数据包处理逻辑。由于25MHz与125MHz时钟边沿存在相对位置关系,相对于125MHz时钟相位,接收时钟可能会产生+0/-1个RXCLK周期(1/25MHz = 40ns)的抖动。数据包处理发生在125MHz系统时钟空间(图1中心模块)。出站数据会同步到发送时钟 (TXCLK,25MHz)空间。这一过程可能导致同步时出现半字节时长(40ns)的数据丢失,主要取决于三个时钟之间的相位关系及数据包处理模块在处理连续数据包时的执行状态。

图 1. 硬件同步概述

实际应用案例

ADI公司的一家客户在开发一款传感器设备时,遇到了如下问题:在由多种不同设备组成的网络中,传感器设备出现了丢帧现象。经时序检测发现,当FIDO52x0的RX IFG配置为10字节时长、TX IFG配置为11字节时长时,接收端(TX)的实际IFG为9 字节时长。而当RX IFG小于FIDO52x0中配置的值时,交换机会自动丢弃该帧。通过将RX IFG寄存器重新配置为7,并将TX IFG寄存器重新配置为8,该问题得以解决。随后,该设备在包含多台设备的大型网络中进行了测试,再未出现问题。相关记录显示该网络中包含87台设备,但客户向ADI公司口头反馈称网络中有127台设备。