基于FPGA状态机设计实现EtherCAT从站基本通信链路并验证

摘 要: EtherCAT是工业控制领域广泛应用的现场总线之一 , 从站控制器ESC(EtherCAT Slave Controller)是从站模块实现EtherCAT协议数据通信的关键 , 对从站控制芯片实现自主可控是工业控制系统国产化研发的重要基础 。基于EtherCAT通信协议及基本通信功能逻辑 , 设计了EBUS编码/解码、Auto-forwarder、Loop-back function关键通信节点的FPGA状态机 , 并通过解析各阶段数据状态变化 , 验证了各节点通信数据的正确性 。实验结果表明 , 基于上述状态机的FPGA实现EtherCAT从站基本通信链路是完全可行的 。
0 引言 EtherCAT是由BECKHOFF提出的在工业控制领域获得广泛应用的现场总线之一 , 该总线具备全双工工作模式 , 可基于主站(Master)和从站(Slave)连接的模式实现数据传递 , 且具有低延时、高安全性的特点 。EtherCAT从站控制器ESC(EtherCAT Slave Controller)是从站模块实现EtherCAT通信协议的关键 , 目前国内基于EtherCAT协议的通信功能基本都采用ET1100/ET1200等从站芯片来实现[1-4] 。然而 , 由于这类芯片除基本通信功能外 , 还具备大量其他功能 , 而此类额外通信机制并不对我国技术人员公开 , 造成对此类通信芯片还无法实现完全自主可控 , 采用有效的安全机制提升系统安全性更是无从谈起 。随着工业控制领域的信息安全问题日益突出 , 此类不可自主可控通信芯片的应用给我国核心控制系统的运行引入一定安全风险 。为了实现对控制系统用通信芯片的完全自主可控 , 基于FPGA实现EtherCAT通信协议的自主化开发显得非常必要 , 同时也是采用自主安全机制提升通信系统安全能力的重要前提 。
基本通信链路是实现收发EtherCAT协议数据的核心 , 因此 , 本研究基于EtherCAT协议特征及数据传递机制 , 设计关键通信节点的FPGA状态机 , 验证FPGA实现EtherCAT从站控制器基本通信链路功能的可行性 , 为完善EtherCAT其他通信功能及安全机制奠定重要基础 。
1 EtherCAT从站控制器框架 EtherCAT主站与各从站之间的通信链路如图1所示 。通信过程中 , 数据帧遍历所有从站设备 , 数据帧通过某一从站时 , 从站设备根据报文命令分析寻址到本机报文并进行读/写数据到指定位置 , 数据帧到达最后一个从站后 , 该从站把处理后的数据帧发送给主站 。主站收到此上行电报后处理返回数据 , 一次通信结束[5-6] 。
【基于FPGA状态机设计实现EtherCAT从站基本通信链路并验证】
EtherCAT从站控制器主要包括数据帧处理单元、EBUS接口编码/解码模块、Auto-forwarder模块、Loop-back funcTIon模块等 。以ET1100/ET1200从站控制器为例 , 其内部框架如图2所示 , 主要包括MII、EBUS接口 , EtherCAT数据帧处理单元 , 现场总线内存管理单元(FMMU , Fliedbus Memory Management Unit) , 存储同步管理通道(SM , SyncManager) , 分布时钟 , PDI接口 , ESC地址空间(包括寄存器和用户数据存储器) , EEPROM控制 , 以及状态控制、中断、看门狗和物理层管理等部分 。
其中 , 帧处理单元(EtherCAT Processing Unit)分析并处理EtherCAT数据流 。现场总线内存管理单元(FMMU , Fliedbus Memory Management Unit)是EtherCAT从站控制IP核中的核心模块之一 , 用于实现主站对从站的逻辑寻址 。存储同步管理通道(SM , SyncManager)实现主站和本地应用数据交换 。Ethercat帧和PDI接口都必须轮询处理器来判断另一端是否完成访问 。PDI接口模块是ESC芯片的应用数据接口 。
在FPGA实现EtherCAT从站控制器的过程中 , 如果能实现数据链路的通路 , 数据帧能够通过EBUS、MII接口传输到FPGA中 , FPGA将数据帧进行识别并进行CRC校验 , 解包出EtherCAT的帧格式和协议命令 , 并通过端口连接状态将数据帧发送 。那么 , 可以说明EtherCAT从站控制器是可以在FPGA中进行自主开发实现 。在以上的数据链路中 , EBUS接口涉及到EBUS模块 , EBUS模块主要对EBUS协议进行解析 , 通过曼彻斯特编码/解码接收或发送数据;FPGA将数据帧进行识别并进行CRC校验是Auto-Forwarder模块;通过Loop-back funcTIon模块将数据帧发送 。以下分别介绍上述各模块的实现过程 。
2 各模块实现逻辑 2.1 EBUS编码/解码模块
对于EBUS实现方式 , EBUS接口的LVDS信号数据率是100 Mb/s , EBUS接口是利用曼彻斯特编码/解码(Manchester encoded)通过LVDS方式实现 。

    推荐阅读