首页>>科技 >>内容

基于FPGA的以太网链路冗余原理及其设计与验证

发布时间:2023-08-02 15:44:38编辑:温柔的背包来源:

很多朋友对基于FPGA的以太网链路冗余原理及其设计与验证不是很了解,每日小编刚好整理了这方面的知识,今天就来带大家一探究竟。

基于FPGA的以太网链路冗余原理及其设计与验证

摘要:EtherCAT是一种实时工业以太网协议,使用链路冗余技术是实现链路稳定性和可靠性的重要手段。介绍了基于FPGA的EtherCAT的链路冗余原理,通过FPGA设计了主站与从站、从站与从站之间的通信链路和冗余链路的自动切换,从而实现了EtherCAT的链路冗余。通过测试验证了该方法的可行性,提高了EtherCAT系统的可靠性和可维护性。

0简介EtherCAT最初是德国Befo公司提出的基于标准以太网技术的工业以太网,是一种网络拓扑灵活的技术。EtherCAT技术具有速度快、同步性能好、支持多种拓扑结构、采用标准以太网帧、带宽利用率高等优点[2]。工业以太网中的冗余技术是提高以太网系统可靠性和可维护性的最有效手段之一[3]。

链路冗余是应对网络端口故障(包括主网卡本身的故障和连接)和链路故障(指从节点之间链路断开,如网线断开)的补救措施。通常,在对系统稳定运行要求较高的情况下,需要应用链路冗余技术。链路冗余是一种单一的容错机制,即如果某个链路出现故障,它仍然可以维持与每个从站的数据传输。当通信恢复后,主通信方向也将恢复。

如果通信在多个地方中断,必须在另一个错误发生之前恢复所有通信。在参考文献[4]中,介绍了一种用于工业以太网的EtherCAT冗余和热插拔技术。这种方法使用环形冗余结构将最后一个ESC节点连接到主站。这种方法虽然可以解决单点故障,但在故障修复时需要停电,不能解决多点故障。

为了解决这一问题,介绍了基于FPGA的EtherCAT的链路冗余原理,通过FPGA设计了主站与从站、从站与从站之间通信链路和冗余链路的自动切换,实现了EtherCAT的链路冗余,增加了EtherCAT系统的可靠性和可维护性。

1 EtherCAT原理EtherCAT是一种实时工业以太网技术,采用主从站结构,如图1所示。主站向每个从站发送一个以太网帧,从站通过寻址从数据帧中提取相应的数据或将数据插入到数据帧中,然后将数据帧发送给下一个EtherCAT从站。最后一个EtherCAT从站发回完全处理的消息,第一个从站将其作为响应消息发送给主站。

主站使用标准以太网接口卡或带以太网接口的嵌入式工业控制计算机,EtherCAT从站使用专用的从控制芯片ESC,采用接收转发机制。以太网帧可以双向传递,但只有当以太网帧从下行电报方向进入时,才能处理相应的消息。如果指定的转发端口没有连接,ESC将自动沿原入口返回以太网帧。

EtherCAT数据直接使用以太网数据帧,使用的帧类型为0x88A4。EtherCAT数据包括2 B头和44 B~1 498 B数据。数据区由一个或多个EtherCAT子报文组成,每个子报文对应一个独立的设备和从存储区。每个EtherCAT子通道包括一个子通道标题、一个数据字段和一个相应的工作计数器(WKC)。在子通道被寻址到从节点并且数据被交换之后,工作计数器将被增加以记录子通道的处理状态。

子报文头中,8位命令字节指定子报文类型(读写型、寻址型);8位索引号给出了子消息代码。32位子包地址指定了从站的操作地址,寻址类型定义了寻址方式;8位的长度用于指示消息数据区中的字节数;r是4比特的保留比特;4位M表示该消息是否是最后一条消息;16位中断当前被保留。

2基于FPGA的链路冗余原理在EtherCAT通信链路运行过程中,可能会出现以下故障:(1)网络端口故障,包括主站网卡本身的故障和连接。(2)链路故障是指从节点之间的链路断开,比如网线断开。

为了提高EtherCAT系统的可靠性和可维护性,通过FPGA在EtherCAT主站和从站的链路之间增加了冗余功能,每条链路都有相应的冗余链路作为备份。当link 1出现故障时,可以通过FPGA自动切换到冗余link 1;当链路2失效时,会通过FPGA自动切换到冗余链路2。这样,如果链路在某个地方出现故障,它仍然可以维持与每个从站的数据传输。

当通信恢复后,主通信方向也将恢复,大大增强了系统的稳定性和可维护性。

如图2所示,在EtherCAT主从网络的框图中,冗余卡是基于FPGA的链路冗余卡,通过通信链路1与主机冗余CPU相连,冗余链路1与备用冗余CPU相连,实现主从切换的冗余。通信链路2与下一级冗余卡的链路1相连,冗余链路2与下一级冗余卡的冗余链路1相连,实现EtherCAT的链路冗余。

3链路冗余的FPGA实现方法FPGA实现主站与从站、从站与从站之间通信链路和冗余链路的自动切换功能。如图3所示,FPGA的四个接口01、2、3通过MII(媒体独立接口)与四条通信链路相连。FPGA的四个接口分为两组,接口0和接口1为一组,接口2和接口3为一组,两组的逻辑相同。现在用接口0和接口1来说明冗余切换方式:(1)FPGA复位状态为接口;

(2)运行时,通信链路1状态异常,冗余链路1正常,接口1切换到接口0;(3)当冗余链路1正常时,通信链路1恢复正常。此时,接口1仍然连接,没有切换。(4)冗余链路1异常,通信链路1恢复正常,接口2切换到接口1。接口2和接口3的交换方式与接口0和接口1相同。

在FPGA实现过程中,主要通过判断两个接口的PHY(物理层)的数据连接信号(linkmii)和数据有效信号(rx_dv)来判断链路状态。其中,接口0的数据连接信号为linkmii0,数据有效信号为rx_dv0,接口1的数据连接信号为linkmii1,数据有效信号为rx_dv1。

因为PHY在数据传输过程中,rx_dv信号只在数据有效时拉高,因此,需要检测时间阈值(cnt_time0、cnt_time1),即两次rx_dv时间差,超过时间阈值(cnt_time0=1、cnt_time1=1)认为此接口无数据连接。接口0和接口1的切换条件判断为:

(1)当linkmii0为低,linkmii1为高,选择为接口0;

(2)当linkmii0为高,linkmii1为低,选择为接口1;

(3)以前状态为接口1,当linkmii0为低,linkmii1为低,rx_dv0=1,cnt_time0=0,则选择为接口0;

(4)以前状态为接口1,当linkmii0为低,linkmii1为低,rx_dv1=1,cnt_time1=0,则选择为接口0;

(5)以前状态为接口0,当linkmii0为低,linkmii1为低,rx_dv1=1,cnt_time0=1,则选择为接口0;

(6)以前状态为接口1,当linkmii0为低,linkmii1为低,rx_dv0=1,cnt_time1=1,则选择为接口0。

接口2和接口3的切换选择逻辑与此类似。

4 功能测试为了验证此链路冗余方法的可行性,搭建了以ALTERA公司的Cyclone III EP3C40E484i为核心的测试系统,此芯片有332个IO管脚,39 600个LE,可满足设计的要求。根据FPGA实现冗余链路的要求,现根据测试图型将测试叙述如下:

(1)图4中,0时刻前为通信链路和冗余链路都没有连接到冗余卡上(linkmii0=1,linkmii1=1),此时默认选择接口0,0时刻后冗余链路连接到冗余卡上(linkmii1=0,linkmii0=1),此时切换为接口1。

(2)图5中,0时刻前为冗余链路连接到冗余卡上(linkmii1=0,linkmii0=1),通道选择为接口1,0时刻后,冗余链路从冗余卡上断开(linkmii1=1,linkmii0=1),此时通道回到默认接口1。

(3)图6中,0时刻前为通信链路与冗余链路都连接到冗余卡上(linkmii0=0,linkmii1=0),通道选择为接口1,但此时通信链路有数据有效信号(rx_dv0=1),冗余链路没有数据有效信号(rx_dv1=0),此时通道切换到接口0。

(4)图7中,0时刻前为通信链路与冗余链路都连接到冗余卡上(linkmii0=0,linkmii1=0),通道选择为接口0,但此时冗余链路有数据有效信号(rx_dv1=1),通信链路没有数据有效信号(rx_dv0=0),此时通道切换到接口1。

5 结论本文首先介绍EtherCAT的基本原理,以增加EtherCAT系统稳定性和可维护性为出发点,给出了基于FPGA的EtherCAT链路原理,设计通过FPGA实现主站与从站、从站与从站之间的通信链路与冗余链路的自动切换,从而实现EtherCAT的链路冗余。通过测试验证此方法的可行性,增加了EtherCAT 系统的可靠性与可维护性。

以上知识分享希望能够帮助到大家!