南京航空航天大学学报  2018, Vol. 50 Issue (S1): 130-134   PDF    
星载即插即用协议转换模块的SOC设计与实现
吴嘉宝, 周大卫     
北京遥感设备研究所, 北京, 100854
摘要: 微小型卫星即插即用技术的发展取决于不同总线标准接口设备能够快速集成到同一网络中的能力。SpaceWire总线技术是一种星载网络总线标准,已成为网络拓扑结构中的主干网络,而空间即插即用协议(Space plug-and-play architecture,SPA)是美国航空航天学会(American institute of aeronautics and astronautics,AIAA)在SpaceWire标准基础上为了实现快速响应计划而提出的微小型卫星即插即用标准。目前国内正在使用的卫星载荷的通信协议都是非SpaceWire接口的,比如许多小型卫星上的光纤陀螺载荷采用RS442串口通信标准,红外摄像头载荷一般采用1394b标准。本文研究了将1394b接口高速红外摄像头与RS422低速串口光纤陀螺接口集成到SPA网络的协议转换原理和片上处理器(System on chip,SOC)设计,并且在现场可编程门阵列(Field programmable gate array,FPGA)开发板上进行了软硬件验证。
关键词: 空间即插即用协议     SpaceWire     片上处理器    
Spaceborne Protocol Transition SOC Module of Space Plug-and-Play Architecture
WU Jiabao, ZHOU Dawei     
Beijing Institute of Remote Sensing Equipment, Beijing, 100854, China
Abstract: The development of micro satellite space plug-and-play architecture technology depends on the ability of these protocols on the bus response in the communication network. SpaceWire is a protocol designed for spaceborne communication network as the main network in topological structure. Space plug-and-play architecture is proposed by AIAA for quick response satellite. However, most of the payload in use are non SpaceWire interface, for instance, 1394b for fiber gyro and RS422 for infrared camera. In this case, this article studied the data transition principle of 1394b and serial port protocol integrate into space plug-and-play architecture by SOC and validated its soft/hardware on FPGA.
Key words: space plug-and-play architecture(SPA)     spacewire     system on chip(SOC)    

欧洲针对微小型卫星的快速组装、发射和测试提出了许多即插即用标准,目前发展最为成熟的是AIAA提出的SPA,并且发射了实验卫星进行了相关测试[1, 2]。SPA提出针对传统总线标准研制的设备快速集成到新的网络中需要设计一种智能化的协议转换模块[3],缩短了传统设备到SPA即插即用网络体系的融合的时间,利用SOC搭载实时操作系统的方法来设计协议转换模块即可以使硬件平台能够固定,又可以通过在硬件平台上运行不同的协议转换软件来增强协议转换模块的智能化水平[4]。协议栈模型如图 1所示,利用SpaceWire协议作为底层协议来实现微小型卫星的即插即用。

图 1 SPA标准协议栈模型 Figure 1 SPA standard protocol stack model

Zachary等在设计该协议转换模块时利用8051微处理器与PowerPC 750处理器实现专用集成电路(ASIC)设计,目前有成熟的芯片应用在即插即用实验卫星上[5, 6]

本文基于FPGA研究了具有高速接口标准的1394b红外摄像头、低速接口标准的RS422光纤陀螺向SP A转换的方法。硬件系统如图 2所示,FPGA上搭建SOC硬件平台实现了SpaceWire接口、1394b接口、RS422串行接口的硬件集成,又针对不同的接口设计了基于实时操作系统(Real time executive for multiprocessor system, RTEMS)的接口驱动程序。在SOC上成功移植RTEMS的基础上设计了即插即用通信应用程序,完成了具有1394b高速接口的红外摄像头设备到SPA网络的协议转换和具有RS422低速接口光纤陀螺数据到SPA网络的协议转换。

图 2 协议转换模块硬件结构图 Figure 2 Protocol conversion module hardware structure

1 SOC硬件平台

本文的SOC硬件平台搭建中处理器IP核采用了Aeroflex Gaisler公司的Leon3处理器软核,国外一些组织还针对Leon3处理器IP软核开发了如以太网接口控制器、UART接口控制器和存储控制器等开源的IP核[7, 8]。SOC硬件平台总体架构如图 3所示。按照协议转换模块SOC需求应设计基于高级通用微控制器总线结构[9](Advanced microcontroller bus arohitecture,AMBA)的SpaceWire接口控制器与1394b接口控制器。

图 3 SOC硬件平台的总体架构设计 Figure 3 Design of SOC hardware platform architecture

1.1 SpaceWire接口

本文的SOC设计包括了一个SpaceWire接口IP核,将SpaceWire Codec核与AMBA总线连接起来,需要设计基于AMBA总线协议的SpaceWire接口总线控制器,实现SpaceWire接口与AMBA总线的连接。SpaceWire接口控制器IP核连接到AMBA总线接口控制器的总体设计结构如图 4所示。SpaceWire Codec部分负责与外部网络进行数据链路层的数据传输。RX接收双端口RAM和TX发送双端口RAM用于SpaceWire接口发送模块和接收模块的数据缓存和不同时钟域的数据读写操作。接口控制器IP核的工作控制和SpaceWire Codec部分的控制通过高级外设总线(Advances peripheral bus, APB)对APB寄存器进行读写操作来完成。SpaceWire数据通过高级系统总线(AMBA high-performance bus, AHB)主机的形式以直接存取访问方式(Direct memory access, DMA)传输到片外SRAM中。

图 4 SpaceWire接口与AMBA总线连接方式 Figure 4 AMBA bus connection mode with SpaceWire

设计集成SpaceWire接口IP核到AMBA总线连接控制器后,对该部分IP核进行了Modelsim仿真分析与FPGA开发板上的硬件验证。仿真分析模型如图 5所示,由Leon3处理器、片上AMBA总线和虚拟RAM组成。SpaceWire接口的数据接收spw_di接口与数据发送spw_do接口连接,跳变信号spw_si接口与spw_so接口连接。测试激励程序有C代码编写而成,主要功能包括DMA传输、SpaceWire Codec控制、读写APB寄存器、中断操作、发送接收时间码等。测试激励程序用经过交叉编译器编译后可执行程序加载到虚拟RAM中,仿真时Leon3处理器读取虚拟RAM中的经过交叉编译完的数据完成处理器的初始化,然后再对接口控制器的各个功能进行功能仿真。

图 5 SpaceWire接口仿真测试模型 Figure 5 SpaceWire simulation test model

将该SOC处理器在Xilinx公司的Spartan6 LX45 FPGA上进行了硬件验证,其中SOC系统时钟工作在100 MHz,SpaceWire Codec模块部分工作在200 MHz。与SOC连接的是Dundee公司生产的符合SpaceWire协议标准的USB Brick,该模块可以使PC机与SOC之间完成连接。SOC通过SpaceWire接口发送测试数据包到USB_Brick模块,USB_Brick模块的数据监测软件,如图 6所示。

图 6 SpaceWire接口硬件测试平台 Figure 6 SpaceWire hardware test platform

1.2 1394b接口

1394b接口是一种低成本、高性能的通用接口标准,应用于高速实时多媒体传输、高速大容量存储设备互联以及多个电子设备的互联中。设计中采用的是400 Mbps传输速度的1394b物理层芯片。链路层实现利用成熟的IP核,将链路层IP核连接到AHB总线上的结构如图 7所示。AHB总线连接与1394b接口模块发生一笔数据交易需要读或者写两个过程。向1394b接口模块写数据过程增加了一个异步FIFO的目的是解决异步时钟域数据传输问题[10]

图 7 1394b接口连接AHB总线结构图 Figure 7 Structure of AHB bus and 1394b

在AHB总线片选信号HSELx有效的情况下,1394b读写控制模块作为AHB从设备被选中,此时1394b与AHB之间的传输才有效。当有中断发生时,Leon3处理器通过链路层访问内部寄存器,明确需要处理事务后对1394b的寄存器写入数据进行控制操作。处理器进行一次写请求的过程如图 8所示:首先当HSELx为高时,1394b读写控制模块通过总线上的地址和控制信号判断交易类型。写数据请求向异步FIFO缓冲区写入地址信息和对应的数据信息。同时控制器向AHB总线发响应信号HRESP[2:0]来表示当前的状态,如果数据在总线上传输正常,发OKAY信号,在数据相关操作完成后,则向AHB总线发出H READY为高电平的信号,表示数据传输成功;如果数据在总线上传输有误,则发ERROR信号,表示传输失败;如果需要重试这个传输,则发RETRY信号。

图 8 处理器读写1394b接口数据交易过程 Figure 8 1394 data interchange process

1.3 UART接口

异步串口(Universal, asynchronous receiver/transmitter, UART)接口是串行通信的[11],可以实现串行数据到并行数据的格式转换,控制模块结构如图 9所示。通过接收串行数据线RXD与发送串行数据线TXD用来连接RS422光纤陀螺接口芯片。UART中串行接口控制器模块可以接收的数据帧的格式为:8位数据、1位的奇偶校验位、1位停止位。接收时钟可以通过UART中可配置的12位分频器来产生不同的波特率。两个FIFO来用作接收数据和发送数据传输的缓存器,数据流的控制可以利用RTSN/CTSN这两个握手信号来控制的。

图 9 APB UART串行接口控制器结构 Figure 9 Structure of APB UART controller

APBUART发送模式使能通过控制寄存器的控制位使能方式的开启。存储在数据FIFO中的数据写入到发送移位数据寄存器,这时8位的并行数据转换成一个串行数据流由串行数据发送TXD端口发送出去。数据自动的变成一个起始位、8位数据位、一个奇偶校验位、一个停止位。接收过程与发送过程正好相反,接收到的串行数据转换成8位的并行数据存储到接收FIFO中。

2 RTEMS操作系统移植

为了片上主控SOC处理器所需并行和并发进程、中断处理、输入输出作业以及片上多个接口并行工作,因此SOC需要嵌入式实时操作系统(Real time operational system, RTOS)。RTEMS(Real time executive for multiprocessor system)是由美国军方开发的开源且支持多处理器的嵌入式实时操作系统。在国内主要用在航空航天和军工领域[9]

初始化代码是重启CPU时执行的第一部分代码。初始化的目的是为应用程序执行初始化硬件电路板。BSP包括的起始代码由汇编语言和C语言描述。应用程序从BSP代码执行到第一个应用程序任务执行时间的步骤如图 10所示。

图 10 RTEMS启动流程图 Figure 10 Flow chart of RTEMS start

首先执行汇编语言初始化Start,接着跳转到执行Boot Card框架文件,然后到C库文件、RTEMS、设备驱动初始化阶段、再上下文切换到应用程序的任务执行。通过上述步骤开始执行应用程序任务,任务执行到调用exit函数,则RTEMS系统执行结束,或者调用其他初始化控制函数之后返回到Boot Card。Boot Card允许BSP执行一些清空操作,然后Boot Card返回到汇编语言初始化停止部分。

汇编语言Start是应用程序执行的第一部分。这部分代码主要负责初始化处理器和硬件电路执行BSP部分。主要包括:初始化堆栈、清零没有被初始化的数据部分、屏蔽外部中断以及将ROM中的初始化代码复制到RAM中。汇编部分的起始代码主要进行处理器的最小化操作,引导C代码执行来完成整个初始化序列。

Boot_card()是可以执行的C代码。这个文件是RTEMS BSP初始化框架中的核心组件,为BSP,RTEMS,设备驱动的初始化提供了合适的初始化序列。Boot_card()函数首先屏蔽处理器中断,获得BSP在RAM中的位置和可以被分配给RTEMS工作区与C语言程序的堆栈空间。然后调用bsp_start()函数来执行更高级的初始化,这个函数的目的是完成MMU(内存控制器)初始化和片上总线的初始化。接着RTEMS中的rtems_initialize_data_structures()函数来完成创建目标, 但是RTEMS任务并不被使能使能的状态,主要是计算C程序栈的可用内存空间,同时调用C库中的初始化函数(例如malloc函数)。调用RTEMS中的rtems_initialize_device_drivers ()函数来初始化设备驱动的静态配置设置,为了实现在配置表中的定义。调用RTEMS中的rtems_initialize_start_multitasking()函数,用来开启多任务和第一个任务的上下文切换。直到应用程序关闭时Boot_card()才会返回值。作为初始化序列的一部分,RTEMS将会上下文切换到第一个应用程序任务的执行。上下文切换时,处理器中断将会被激活。

3 协议转换应用程序

图 11描述了运行在协议转换模块上的代码结构。左侧部分代码的主要功能是初始化传感设备,包括完成1394b接口的初始化和串口的初始化。这部分代码还需要监测外部设备的工作状态和收集传感设备的数据输入。右边的代码主要任务是完成与SPA网络进行通信,主要完成向SPA网络注册设备,得到设备的逻辑地址,向查找表服务注册描述外部传感设备信息的电子表格(xTEDS)。中间部分代码主要是收集传感设备的数据,相应SPA网络中发送来的数据订阅请求接收查找表的订阅请求,能够提供查找表需要的数据、命令和服务。中间部分代码的主要作用是接收到订阅请求后翻译请求指令内容,根据不同的请求类型提供不同的数据,然后将提供的数据发送到SPA网络的数据消费组件。

图 11 协议转换模块应用程序结构 Figure 11 Structure of protocol conversion module application

协议转换模块应用程序的工作时序流程如图 12所示。主要包括拓扑发现、分配逻辑地址、数据发现、注册、数据订阅以及提供数据等功能。

图 12 协议转换模块应用程序工作时序图 Figure 12 Work timing of protocol conversion module application

(1) 拓扑发现。协议转换模块接收SPA网络传传输而来的SPASpWEndpointPing请求消息后响应SPASpWEndpointPingReply消息。通过以上两个步骤SPA网络探测到协议转换模块在SpaceWire网络中的物理地址。

(2) 分配逻辑地址。协议转换模块接收SPA网络发送的分配逻辑地址SPAAssignAddrBlock消息,提取消息中的逻辑地址信息。协议转换模块通过提取消息中的逻辑地址与物理地址生成本地路由表。

(3) 数据发现。协议转换模块接收SPA网络发送来的探测请求消息SPAProbe Request Message,协议转换模块节点返回SPAProbe Reply Message作为响应,该消息饱含了描述RS422光纤陀螺和1394b红外摄像头接口信息的电子表格的ID号和组件的ID号。

(4) 注册。协议转换模块接收SPA网络发送的请求xTEDS(设备电子表格)的请求消息SPAxTEDSRequest Message,利用SPAxTEDSRequest Reply Message返回RS422光纤陀螺和1394b红外摄像头的xTEDS,完成传感设备在SPA网络中的注册。

(5) 数据订阅。协议转换模块接收SPA网络发送的数据订阅请求SPASubscriptionRequest消息,如果从在数据则返回订阅响应SPASubscriptionReply消息。

(6) 提供数据。协议转换模块接收传感设备传输来的数据,通过SPAData消息向SPA网络中的消费数据组件提供外部设备的数据。

4 结束语

微小型卫星的即插即用技术是发展空间快速响应任务的必要手段,把各种现存的不同接口标准的卫星载荷集成到即插即用网络不仅有效的避免了资源浪费而且节约了组装成本[12]。本文详细介绍了利用SOC搭载实时操作系统的方式实现协议转换模块硬件平台设计,并在实时操作系统上运行协议转换多任务应用程序实现了外部传感设备1394b高速红外摄像头和RS422低速光纤陀螺到SPA网络集成。

参考文献
[1]
JACOB D, GRIESBACH K N, TOM M, et al. Spacecraft design tool for plug-n-play satellite simulation and test bypass control[C]//36th Annual Aas Guidance and Control Conference.[S.l.]: [s.n.], 2013.
[2]
SCOTT D. Space plug and play avionics application programmers interface for radio devices[J]. AIAA, 2011: 1597.
[3]
JOSEPH R M, MARSHALL J. BAE systems manassas[R]. Virginia, USA: 2011.
[4]
MARSHALL J. Leveraging SpaceWire network prototyping to create flexible sesign andpacewire components and support software[C]//Proceedings of the 4th International SpaceWire Conference. San Antonio: [s.n.], 2011.
[5]
ZACHARY J. A SPA-1 enabled plug-and-play cubeLab for ISS payloads[J]. AIAA, 2012: 2507.
[6]
ALONZO V G, MICHAEL S. Appliqué sensor interface module based on 90 nm radhard structured application-specific integrated circuit[J]. AIAA, 2010: 3475.
[7]
刘洋.基于LEON3的SoC构建及验证[D].西安: 西安电子科技大学, 2010.
LIU Yang. Construction and verification of SoC base on LEON3 microprocessor[D]. Xi'an: Xidian University, 2010.http://www.wanfangdata.com.cn/details/detail.do?_type=degree&id=Y1669270
[8]
蔡晓光.基于AMBA总线SoC的IP核设计与应用[D].西安: 西安电子科技大学, 2010.
CAI Xiaoguang. IP core design and application of AMBA bus-based SoC[D]. Xi'an: Xidian University, 2010.http://www.wanfangdata.com.cn/details/detail.do?_type=degree&id=Y1668771
[9]
ARM Ltd. AMBATM specification[J]. Rev(2.0), 1999(5): 11–158.
[10]
朱永峰, 陆生礼, 茆邦琴. SoC设计中的多时钟域处理[J]. 电子工程师, 2003, 11(29): 60–61.
ZHU Yongfeng, LU Shengli, MAO Bangqin. Multi-clock domain handling in SoC design[J]. Electronic Engineer, 2003, 11(29): 60–61.
[11]
高宇.安全SOC芯片UART接口的设计与实现[D].沈阳: 辽宁大学, 2016.
GAO Yu. The design and implementation of security SOC chip UART interface[D]. Shenyang: Liaoning University, 2016.http://cdmd.cnki.com.cn/Article/CDMD-10140-1016094685.htm
[12]
CHRISTOPHER J M. Modular nanosatellites-plug-and-play (PnP) cubeSat[J]. AIAA, 2009: 4003.