微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 基于NiosⅡ的1553B总线通讯模块设计与开发

基于NiosⅡ的1553B总线通讯模块设计与开发

时间:11-10 来源:互联网 点击:
3 模块软件设计与开发
  3.1 软件结构设计
  软件结构层次由NiosII处理器系统硬件、设备驱动程序、HAL API、μC/OSII、LwIP协议栈、系统初始化和应用程序7部分组成,如图6所示。
  


  1)NiosII处理器系统硬件:模型的核心,包括在FPGA中实现的NiosII软核处理器和硬件外设;2)设备驱动程序:管理以太网、1553B组件和其它外设的软件函数;3)HAL API:硬件抽象层应用程序接口,对设备驱动程序提供标准化的接口,对外层提供类似于POSIX的API;4)μC /OSII:实时操作系统层,为LwIP协议栈、1553B任务和嵌入式Web任务提供多任务和任务间通讯服务;5)LwIP协议栈:通过套接字API为应用程序和应用系统初始化提供网络服务;6)系统初始化:包括μC/OSII、LwIP协议栈和1553B组件初始化函数,也包括所有应用程序的任务、信号量、队列和事件性标志等实时操作系统任务间通讯资源的创建;7)应用程序:最外一层是建立的各项应用任务。
  应用程序工作过程如下:首先进行系统初始化,然后进入工作等待状态。以太网任务等待客户端通过以太网发来的数据包,当有数包到达时,经物理层处理后交于TCP/IP层处理。在TCP/IP协议层之上,建立了3个套接字接口来侦听套接字连接:嵌入式Web端口、PING端口和1553B端口。对于1553B任务,根据客户端不同的请求,将启动不同的任务来完成相应的数据命令的发送或状态的读取。
  3.2 基于μC/OSII的LwIP协议实现
  轻量型IP(Light Weight IP,LwIP)协议是用于嵌入式系统开放源代码的TCP/IP协议栈。LwIP在保持TCP协议主要功能的基础上减少对RAM的占用,非常适合在嵌入式系统中使用。
  LwIP协议栈在设计时就考虑了移植问题,把所有与硬件、OS和编译器相关的部分独立了出来,因此LwIP在μC/OSII上移植只需修改目录下的文件即可。
  3.3 1553B总线协议任务的实现
  为方便对BU-61580芯片操作,开发了BU-61580的驱动程序。驱动程序包括BU-61580芯片的初始化函数、BC发送接收命令函数、BC发送发送命令函数、BC发送接收/发送命令函数、BC发送不带数据字的方式命令函数和BC发送带数据字的方式命令函数。
  参考嵌入式Web服务器的实现方式,基于LwIP和μC/OSII建立了端口号为8000的1553B套字接口任务,流程如图7所示。
  


  首先建立1553B任务接口守护进程,创建TCP套接字,绑定端口,将TCP套接字转换成侦听套接字,进入循环结构,等待接受用户的连接请求。当有客户端请求连接端口8000时,调用套接字数据接收函数recv()将客户端发送的数据读取过来,将数据映射到定义的结构体变量alt_avalon_BU61580*bdev上;用请求解析函数int 1553B_request(alt_avalon BU61580*bdev)根据messagemode判断需要采取什么操作方式:然后BU-61580的发送数据函数将数据内容写到相应的寄存器或存储器内,启动BC发送;如果调用读取数据函数,则将存储器或寄存器地址传递给读取函数,将读取到的数据调用函数int 1553B_transmit(&bdev[ i],i)经以太网打包后发送给客户端。
                                
                  4 仪器驱动程序开发
  仪器驱动程序是介于上层用户应用程序和底层仪器硬件之间的一组函数,用户在开发上层应用程序时,可以调用这些基本动作函数来使用仪器,而无须与底层硬件通讯。
  参阅VPP规范,模块提供了基于VISA函数的仪器驱动程序。通过调用VISA函数,向模块发送命令来完成模块的功能。开发环境为LabWindo ws/CVI,而选用Agilent VISA作为VISA函数库,主要是考虑Agilent是LxI总线的发起者,而且其提供的Agilent I/O Libraries封装了许多关于LxI的功能。VISA函数所用的LxI仪器描述符有两种:
  1)对于VXI-11规范为:TCPIPO::192.168.4.10::instO::INSTR;
  2)对于Sockets接口为:TCPIPO::192.168.4.10::8000::SOCKET。
  其中192.168.4.10为模块地址(非固定),8000为1553B接口任务的端口号。开发的驱动程序以动态链接库形式提供给上层应用程序使用。
  仪器驱动程的开发步骤、驱动函数原形以及发送的具体命令本文不再赘述。具体的驱动程序函数及其功能如下:
  系统函数:
  




  5 结论
  针对基于LxI总线的1553B模块开发需求,本文提出了一种利用SOPC技术实现LxI总线到1553B总线通讯的硬件解决方法。在NioslI软核处理器上移植了μC/OSII嵌入式实时操作系统,实现了TCP/IP协议;开发了以太网和1553B自定义组件,并开发了其相应的DM9000A和BU-61580驱动程序;最终开发了仪器的驱动函数为便于模块工程应用。
  文中设计方法降低了仪器的开发难度,减少了模块体积,同时也便于模块的升级,具有良好的工程应用和经济价值。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top