新闻中心

EEPW首页>嵌入式系统>设计应用> 基于SoC的NCSF总线系统的研究与设计术

基于SoC的NCSF总线系统的研究与设计术

作者: 时间:2016-12-21 来源:网络 收藏

如图6所示。其中命令函数是用户层行规为数控系统软件提供的应用接口,数控系统软件通过调用命令函数封装命令数据结构并写数据到命令数据结构数组。每个函数根据自己的功能将数据写人数组不同的位置,具体内存地址为基地址加偏移地址。行规接口程序主要工作包括:读取命令数据结构数组中的数据并映射到PIC的输出缓存中;读取PCI输入缓存中的数据并映射到应答数据结构数组中。由于NCSF总线支持集总帧(一个大的数据帧,里面包含所有从站的数据,适用于主从环形总线拓扑结构)和非集总帧报文,因此一次函数执行将读写整个数组,即一个通讯周期内所需要发送的周期性数据和非周期性数据;所有的安全性检查、出错重传、时钟同步、PCI内存与从站地址的映射等控制功能完全由FPGA部分实现。


图6行规接口程序数据流向程序间的数据流向

3.2 FPGA上总线系统程序设计

FPGA上实现部分主要完成站点初始化、从站信息搜集、拓扑判断、数据收发等工作。其中站点初始化、从站信息搜集、拓扑判断工作通常只在FPGA上电时执行,除非出现通信故障需要重新初始化;数据收发以及时钟同步等过程则要以中断的形式周期执行。当MicroBlaze处理器接收到时钟计数器的脉冲信号时,将调用应用层程序处理中断即开始进行周期通信,主要工作包括数据的收发、状态机维护、安全性检查、出错重传、地址映射、时钟同步等。

3.2.1 应用层处理程序设计

应用层程序可处于不同的运行状态,如初始态、就绪态、异步连接态、同步连接态、连接释放态、故障态、结束态等,程序根据所处状态提供不同的传输服务,应用层服务需要调用数据链路层提供的基本服务命令接口实现。

当处理器接收到时钟脉冲信号开始进行中断处理时应用层程序处于就绪状态,之后程序会参照从站的反馈信息进入不同状态。该程序的主要工作包括:读取PCI接口中命令数据结构数组的映射数据,写从站的应答信息到PCI的应答数据结构数组的映射内存中。应用层与数据链路层的信息交换通过传输APDU进行。APDU由用户数据负载和控制信息组成,用户数据负载存储用户层行规数据,控制信息用来描述APDU属性。APDU控制信息数据结构设计如下,具体实现可以根据实际应用进行调整。

应用层处理程序首先读取PCI缓冲区映射的命令数据结构数组并进行扫描,分析命令数据结构中的命令分组号和组内命令确定APDU控制信息,然后将命令数据结构数组封装成APDU数组,这一过程可以通过维护命令数据结构到APDU控制信息的映射表进行简化。下一步调用数据链路层基本服务命令接口发送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子层数据通信任务间的转换。



关键词:SoCNCSF总线系

评论


技术专区

关闭