基于SoC的NCSF总线系统的研究与设计术
送APDU数组中的周期数据,接着检查发送状态进行差错控制、出错重传或发送非周期数据。最后时钟同步。每个通信周期都划分为若干个阶段执行,上述各操作必须在各自时间段内完成,其中出错重发和非周期数据发送共用同一个时间段(需要进行动态决策)。应用层处理程序具体执行过程如图7所示,具体实现可以根据实际提供的服务进行调整。
图7应用层处理程序执行流程
3.2.2数据链路层程序设计
NCSF总线的数据链路层划分成两个子层:LLC(Logic Line Control,逻辑链路控制子层)和MAC(Media Access Control,介质访问控制子层)。向上层提供服务是LLC子层的主要功能,它负责识别数据链路层的上层协议,然后对它们进行解析;控制对传输介质的访问是MAC子层的主要功能,主要包括数据帧的封装与卸装,链路管理,帧寻址与识别,帧差错控制等。
(1)LLC子层程序设计
LLC子层通过向应用层提供基本服务命令接口提供服务,包括通信服务命令接口和管理服务命令接口。应用层调用通信服务命令接口收发APDU;调用管理服务命令接口进行差错控制、数据安全管理、时钟管理以及通信管理。
基本服务命令接口对应用层是透明的,LLC子层需要对应用层调用的接口函数和传递的APDU进行解析,这一过程可以通过维护对象字典来实现。对象字典为LLC子层服务和数据管理提供对应的MAC子层解释和定义,应包括服务对象字典和协议对象字典。LLC子层程序通过查询对象字典,完成应用层数据通信任务到MAC子层数据通信任务间的转换。
LLC子层还需要维护地址映射表进行上层逻辑地址到MAC子层实地址之间的转换(实地址可由APDU控制信息唯一确定),映射表在FPGA上电初始化时确定。
表1为主要通信服务命令接口函数的定义,具体参数可根据具体实现进行调整。
表2为主要管理服务命令接口函数的定义,实际数量与应用中提供的服务数量相关。
(2)MAC子层程序设计
MAC子层主要完成LLC子层通信服务的具体实现,以及实际通信数据帧的封装。
LLC子层各服务命令接口以及上层数据的收发工作最终都要通过收发链路层数据帧实现。NCSF总线支持集总帧和非集总帧报文。非集总帧由头部、指令区、数据区和校验区组成,通信数据区直接由从站数据信息封装得来,组成相对简单。集总帧主要包括集总帧头部和数据部,头部为数据帧控制信息,数据部为各从站数据的集合旧’。下面是集总帧头部和从站数据结构定义,具体结构可根据具实现调整。
MAC子层通过查询对象字典将应用层命令调用和APDU映射为MAC子层服务,然后接口函数封装相应从站数据,最终各从站数据被组装成集总帧发送。集总帧沿着环路传输,当经过一个从站时,该从站将对数据帧进行扫描,查找、读取本站数据,然后把发反馈数据写入集总帧,并继续转发经过处理的集总帧。
为实现数据帧的收发和管理控制工作,MAC子层需要维护数据收发缓冲区,长度寄存器,状态寄存器,控制状态寄存器,中断清除寄存器和计时器寄存器。MAC子层收发程序通过设置控制寄存器,长度寄存器和中断清除寄存器收发数据,通过检查状态寄存器判断收发状态进行差错控制和安全管理。FPGA上总线系统的数据流向见图8,涉及操作请参考应用层处理程序设计和数据链路层程序设计部分。需要注意的是,MAC子层接收到的反馈信息需要通过查询对象字典和地址映射表以周期/非周期数据的形式传递到应用层,然后由应用层迸一步处理转发。
图8 FPGA总线系统数据流同关系
4 性能分析
基于SoC的NCSF总线系统使用FPGA软核MicroBlaze为现场总线NCSF协议栈的实现提供快速的专用处理器,由于该处理器具有运行速度快、占用资源少、可配置性强等优点,且只用于通信控制,可以满足数控现场总线对实时性的要求。本设计采用Xilinx XC3S500E芯片,表3中给出了总线系统综合时芯片逻辑资源的使用情况,数据表明系统资源占用率相对较低,可实现在FPGA上。
表4给出了新系统性能测试结果,数据表明新设计完全可以满足数控系统对现场总线数据的实时、高速、可靠传输的要求。
同时,NC主机上仅实现NCSF总线协议栈用户层行规的内容,比完整的协议栈实现占用更少的CPU时间,降低了NC主机的负载,提高了NC主机的响应速度。
FPGA实现部分配合FPGA内部的高精度时钟、CRC处理、PHY控制等硬逻辑模块实现NCSF总线通信控制,增加了总线系统的独立性、可扩展性,提高了总线的通信性能、稳定性和可靠性,使得总线系统的升级改造可以独立于数控系统从而降低了数控系统的开发维护成本。
5 结束语
针对数控系统软件对强实时性,高可靠性总线系统的应用需求
SoCNCSF总线系 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)