一般来说,自动化设备都配备有一个智能的通讯接口单元,能满足一定数据传输格式(即传输协议),并且通过这个接口来实现设备之间的数据交互。随着集成技术的发展,在一个芯片中集成CPU、网络控制器和以太网物理接口PHY已经不再是一件难事,netX芯片就是集成技术发展的一个产物。
netX芯片支持目前市场上所有主流的工业通讯系统,其内部集成的网络控制器xPEC和CPU ARM之间的接口,能充分满足上述的功能,还具备了很多自身的特性。这都是通过独立的、可配置的硬件单元来实现的。根据不同的网络系统,可以具有不同的访问方式。因此,netX芯片具备了高度灵活的通讯接口,不仅能满足现有工业通讯协议的需求,也为将来工业通讯协议的功能扩展留有足够的空间。
缓冲管理器
缓冲管理器保证了xPEC与CPU ARM之间数据交互的一致性。这里首先要区分,“读端”的异步请求周期和“写端”的数据更新周期。同时,要清晰过程数据(如输入输出数据)循环传输和非周期数据(如参数和诊断数据)的不同。对于周期和非周期数据,“读端”都要真实地获得所有来自“写端”的数据,这就需要“写端”每次只发送新的数据给“读端”,而“读端”也能顺利将数据读走。
缓冲管理器具有两种模式:单一的缓冲模式和三级缓冲模式。单一缓冲模式除了数据缓冲区外,还具有一个缓冲状态标识。如果缓冲区为空,则只能“写端”写数据;当写操作结束后,缓冲区的状态标识被设为“满”。只有当“读端”将缓冲区中的数据都读走后,并将缓冲区状态设为“空”后,“写端”才能再往缓冲区中写数据。
三级缓冲技术主要是用于周期数据(如过程数据)的数据交互。这里,具有三个同等大小的存储区域用于数据的临时存储。缓冲管理器负责管理可用缓冲区的数量。通过一个简单的“读寄存器”操作,“写端”请求一个“空”缓冲区,并且马上获得一个可用缓冲区号。当数据被写入到缓冲区后,相应的缓冲区号就被提交给缓冲管理器。缓冲管理器记录下这个号,并标记为“最近被占用”。与“写端”完全独立,“读端”请求这个“最近被占用”缓冲区,并且接收这个刚被写满的缓冲区号。
这里要注意一点,由于“写端”和“读端”是完全异步运行,这就可能发生读写端同时向一个缓冲区请求的情况。缓冲管理器在维护数据一致性的时候,能有效避免以下情况的发生。同样,如果“读端”的数据请求周期小于“写端”的数据更新周期,则“读端”的队列中将接收到重复的缓冲区号。与之相反,如果读周期大于写周期,则“读端”将无法接收到所有的写数据。通过缓冲管理器,当发送一个读缓冲请求时,总能确保接收到的是最近被写满的缓冲区,如“最近被占用”缓冲区。
netX芯片内部的缓冲管理器能提供16路的缓冲区通道,每个独立的缓冲区通道其模式和读写端都可以独立进行调整。缓冲管理器能有效减轻ARM CPU的负载,因此,总线循环周期能达到30 ms,这就可以很有效地应用于一些特殊的场合,如EtherCAT从站的数据链路层,每一个EtherCAT同步管理器都可分配一个缓冲管理器通道。
指针FIFO
指针FIFO可进一步硬件支持xPEC和ARM之间的数据交互。这个模块由16路FIFO组成,每个独立的FIFO可以被自由定义。唯一的局限性是,当所有16路FIFO同时工作的时候,最大只能支持1024个入口。每个入口的位宽是一个双字(32位),通常用于作为地址指针指向一个内部存储数据单元。所有的xPEC和ARM都能读写这16个FIFO的任意一个。上行数据流仲裁器能在50 ns内解决访问冲突问题,另外,写入状态的状态信息和任意发生的FIFO下溢或溢出信息都是可用的。
指针FIFO能够很好地协调xPEC和ARM内部数据单元的不同访问次数。因此,从某种程度上说,FIFO的长度决定了在“读端”数据处理单元的抗瓶颈能力,例如,某些时刻的高优先级任务中断处理。
DMA控制器
xPEC和ARM之间的批量数据包是通过DMA控制器来进行传输的,DMA控制器位于xPEC内存和netX内部RAM之间,可以很大程度地减轻ARM处理器负载,其传输能力最大可达到400 MB/s。
DMA控制器提供了不同的模式,与指针FIFO模块和中断寄存器一起工作。针对以太网MAC控制器,一个以太网MAC控制器需要能处理每秒25 MB的数据(100 Mbit全双工模式下,每个方向12.5 MB)。此外,xPEC内嵌了以太网交换机,即使传输的数据包数量翻倍,DMA控制器也能很迅速地将以太网数据包传输到内部SRAM。
双端口内存DPM
xPEC带有8 KB的内存,包含了传输协议的I/O映射和状态信息。该内存是xPEC和ARM之间的双端口内存,可支持8位、16位或32位的访问方式。针对EtherCAT从站协议,该双端口内存包含了本地应用的过程(周期)数据和邮箱(非周期)数据。针对以太网MAC控制器和CAN控制器,错误计数和配置参数也通过该内存来传输。
中断寄存器
中断寄存器用于xPEC和ARM之间位点命令和状态的交互,被划分为两个区域:低16位和高16位。寄存器的低16位可用于xPEC向协议层(也就是ARM)产生通讯中断和同步中断,这种方式能够使协议层拥有更高的优先级去处理同步事件(相比较通讯任务),以及处理过程中的决定权。寄存器的高16位用于协议层向xPEC触发信号事件。例如,能请求一个缓冲用于数据交互或触发xPEC的一个状态改变。
众所周知,DMA控制器、双端口内存DPM和中断寄存器都是通过硬件实现数据的传输和同步,而缓冲管理器或指针FIFO通常都还是通过软件算法来实现的。一般的嵌入式处理器并不能满足实时以太网系统的高性能需求。为了满足实时以太网的高性能需求,只能通过在处理器中添加硬件处理单元,同时也要设计简单易处理的软件结构,这样才能保证在任何条件下都能进行稳定的数据交互。
评论
加载更多