基于PCI接口的SpaceWire总线通讯模块设计
SpaceWire概述
SpaceWire是为更好地满足星载设备间高速数据传输需求而提出的一种高速的(2~400Mbit/s,目前实现的宇航级节点设备之间的速度为200Mbit/s)、点对点、全双工的串行总线网络,在2003年1月正式成为欧空局标准。它致力于航天器有效载荷系统数据和控制信息的处理以满足未来高性能高速数据传输为目标,提供了一种统一的用来连接传感器、数据处理单元、大容量存储器、遥测子系统以及电地支持设备EGSE(electronic ground support equipment)的基础架构。
SpaceWire标准具体包括了链路、节点和路由三方面的内容。所谓SpaceWire节点,是指传输包的流出设备或者流向设备,可以是处理器、存储单元、传感器、电地支持设备(EGSE)或连接在SpaceWire总线网络上的其它单元。
SpaceWire节点通讯板卡硬件设计
EMBC1000-PCISPW是欧比特公司自主研制的完全遵循并实现ECSS-E-ST-50-12C协议规范的航天设备间的高速SpaceWire数据总线的节点终端通讯板卡(本板卡实现了200Mbit/s的速率)。此SpaceWire总线节点通讯板卡可以嵌入在航天子系统中,将航天子系统与其它SpaceWire网络之间连接,保证航天子系统之间高速、实时、确定、可靠地进行数据交换。其硬件设计分为FPGA控制模块、PCI接口模块、MDM9S接口模块和SRAM缓存模块。
1.节点通讯卡总体结构
本文设计的SpaceWire总线节点系统硬件架构如图1所示。各模块的功能如下:
FPGA控制模块:实现4路SpaceWire总线通信协议接口功能,硬件实现LVDS信号传输,实现数据通讯过程中产生的大量数据实现缓存并与PCI9056通信接口等功能;
SRAM缓存器:存储SPW总线收发机制中产生的大容量高速数据的缓存功能;
MDM9S接口模块:MDM9S接口实现FPGA的LVDS信号与外部SPW设备之间的接口功能;
PCI接口模块:实现PCI总线的接口协议功能,实现FPGA与上位机软件间进行数据的通信。
2.FPGA控制器
FPGA控制器实现4路SpaceWire总线协议节点控制的全部功能,包括状态机控制模块、发送模块、接收模块、发生缓存模块(TXFIFO)、接收缓存模块(RXFIFO)以及与PCI9056通信接口模块(PCICTRL)等功能,如图2所示。
本设计中FPGA采用Altera公司的EP3C55F484I7N芯片,时钟频率采用80MHz,同时为了实现SpaceWire总线传输速率,FPGA内部采用了PLL对时钟进行了分频,以满足设计要求。
状态机控制器负责对SPW终端节点的功能控制寄存器、节点状态寄存器、链路地址、时钟分频寄存器、直接存储访问(DMA)通道控制寄存器等进行参数配置,通过PCI9056地址映射到了上位机的某一段地址空间,因此上位机软件就可以直接通过对其相关寄存器配置即可完成对SpaceWire节点模块的控制。下面分发送和接收两个方面简单介绍单个SpaceWire总线节点的工作过程:
接收模块将从MDM9S接口接收到的采用DS(Data-Strobe)方式传输的LVDS信号进行数据恢复,并将其传入到接收缓存中,再传输至FPGA内部的双口RAM中,上位机通过PCI9056桥接芯片的地址映射可以直接读取该双口RAM的数据来进行分析处理。发送过程与接收过程类似并相反。
3.PCI9056桥接芯片
在SpaceWire总线节点终端系统与航电计算机系统之间实现PCI通讯有两个方式,其一就是采用CPLD或者FPGA专门作为一个独立的模块实现PCI协议,另外一种方式就是采用专用PCI协议芯片。本终端系统设计中从性能稳定性和结构简易性方面出发,选择用PLX公司生产的PCI9056芯片,该芯片可以设置成多种传输模式,完成SpaceWire总线节点与航电设备之间的通信桥接功能。
在PCI9056与本地FPGA之间的通信分为直接主模式、直接从模式和DMA模式。由于PCI通信要求达到SpaceWire总线网络的2Mbit/s至400Mbit/s通讯速率(本板卡实现了200Mbit/s),这里采用的芯片时钟频率为66MHz,传输模式为直接从模式,PCI9056为主芯片,FPGA为从芯片。
为了与PCI9056进行高效的数据通信,FPGA内部划出了一部分内存以配置成双口RAM的形式完成PCI9056对SpaceWire数据的收发以及相应控制寄存器的控制传输。
参考文献:
[1] EMBC1000-PCISPW型SpaceWi
PCI接口SpaceWire总线通讯模 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)