基于SoC的NCSF总线系统的研究与设计术
通信控制卡上;接收阶段,程序首先读取PCI上由总线通信控制卡发来的数据,然后将其解析为应答数据结构并传送给相应的功能模块。具体过程如图4所示。
图4用户层行规层次结构图
2.2 FPGA上总线系统的设计
协议栈的应用层和数据链路层实现在FPGA内嵌的MicroBlaze处理器中,配合FPGA内部硬件逻辑资源编程实现高层协议和底层逻辑的解析处理。应用层为用户层行规提供传输服务及安全支持,并实现用户层行规与数据链路层之间数据交互。首先应用层程序读取PCI中的命令数据结构并将其封装成APDU(应用协议数据单元)转发到数据链路层,然后数据链路层程序读取来自应用层的数据并解析封装成数据链路帧转发到PHY控制器,最后数据帧由PHY以比特流的形式发送到NCSF总线上:当以太网控制器接收到来自NCSF总线的数据时,执行逆解析操作,最终由应用层程序将应答数据结构的发送到PCI上,至此完成一次完整的数据交互过程。具体过程如图5所示。
图5 FPGA上总线系统层次结构3 基于SoC的NCSF总线系统程序设计
基于SoC的NCSF总线系统将NCSF协议栈分两个部分实现,即:用户层行规以用户层行规接口的形式实现在NC主机上,应用层及数据链路层实现在FPGA内嵌MicroBlaze处理器上,相应的程序设计也分两个部分进行。
3.1用户层行规接口程序设计
用户层行规接口程序以外部时钟中断处理程序的形式调用执行,即当外部时钟计数器到期发送时钟脉冲信号至NC主机时,主机调用用户层行规接口程序响应中断。
接口程序与数控系统软件共享一个命令数据结构数组和一个应答数据结构数组。命令数据结构数组中存储的元素为数控系统事先封装好的需要发送的命令数据结构,应答数据结构数组中存储的元素为行规接口程序接收到的应答数据结构。
命令数据结构规划如下,具体实现可以根据实际应用进行调整。
命令数据结构数组和应答数据结构数组的大小应根据实际应用中从站的数量进行动态配置,保证发往和来自每个从站的数据都有各自的缓冲空间。
如图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控制信息的映射表进行简化。下一步调用数据链路层基本服务命令接口发
SoCNCSF总线系 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)