孙 波,刘宝明
(江苏自动化研究所,江苏 连云港 222006)
ARINC 429总线是由美国航空系统电子工程委员会于1997年制定的一个通信协议标准,详细规划了航空电子系统中各个电子设备间及电子设备和系统间的通信方式,定义了电气特性、传输数据特性和通信协议。相比其他航空总线,ARINC 429总线以其规范定义简单实用、设计维护相对容易、设计成本较低、电子设备与现有航空电子系统兼容性好等一系列优势,广泛应用于商用运输机和部分军用飞机上。
传统的ARINC 429总线通信模块多采用非智能工作机制,主要是通过429总线接口芯片和发送芯片设计实现,收发通道相互独立,硬件体积空间占用较大,在实际应用中消耗计算机系统较多的资源,并且通信效率比较低[1]。随着微电子技术的发展,可编程的片上系统 SoPC(System on Programmable Chip)技术应用于越来越多的电子系统中。SoPC将尽可能大而完整的电子系统,包括嵌入式处理器系统、接口系统、数字通信系统及普通数字系统等,在单一FPGA中实现,使得系统在规模、可靠性、体积、功耗、功能、性能指标等多方面实现最大优化,并具有可裁减、可扩充、可升级以及软硬件系统在线可编程的功能[2]。本设计基于SoPC系统,利用FPGA片上逻辑资源实现了Nios II处理器、429控制逻辑、PCI核等功能模块,并在SoPC上运行实现了μC/OS-II操作系统及底层软件,具有较高的实时性及可配置性。
基于SoPC的智能429总线通信模块硬件系统由FPGA、429总线接口适配电路、电平转换电路、数据存储器、电源等部分构成。硬件系统总体设计思想为利用FPGA丰富的片上逻辑资源,以Nios II软核处理器为核心挂接多个IP核来实现主要的逻辑功能,并在FPGA外围扩展429总线适配电路、存储器等来构建一个SoPC系统。硬件系统如图1所示。
429总线采用双极性归零码(BPRZ)调制方式编码,一般非智能的设计方法为协议芯片+驱动芯片的方式实现,其中驱动器只实现TTL电平至429电平的转换,协议芯片可直接接收429总线发送信号。因协议芯片内部集成的FIFO容量较小,常需要为其扩展片外FIFO。本设计采用独立的接收芯片与发送芯片实现与429总线的接驳,数据处理由FPGA完成。因此外围电路较少,且所选芯片都为SOP小体积封装,有利于多路429总线在单模块上的集成。需要注意的是,接收与发送芯片的一端可与429总线直接接驳,另一端为数据端,采用5 V工作电压,不能与端口电压为3.3 V的FPGA直接连接,需要经过一级电平转换芯片。即FPGA向发送芯片发送数据时,由电平转换芯片将3.3 V转换为5 V电平,FPGA接收来自接收芯片的数据时,将5 V转换为3.3 V电平,如图2所示。
由于429总线接收端采用5 V电压供电,而发送端工作电压为+15 V/-15 V,FPGA端口工作电压为3.3 V,FPGA核心工作电压为1.25 V,工作电源的种类较多,因此对电源部分的设计有较高的要求。5 V和3.3 V电压可采用从PCI接口上的电源引脚获取,1.25 V电压输出可采用TI公司的PTH05000W模块,该模块支持单5 V输入,1.25 V输出,驱动能力6 A。+15 V/-15 V电源采用村田公司的BWR-15/275-D5A电源模块,单5 V电压输入,固定+15 V/-15 V双路输出,驱动电流分别可达275 mA,能够满足多路429总线发送器的工作需要。
基于Nios II处理器的SoPC系统是一个软硬件复合的系统,智能通信模块的SoPC系统的构建,主要包括429总线控制逻辑的设计与集成、Nios II处理器的配置与系统集成以及PCI软核的配置与集成等。而429总线控制逻辑为用户自定制外设,具有自定制的指令与特性,也是设计的难点所在。
在SoPC系统中,Avalon总线是Nios II处理器与外设、片外Flash、SRAM之间交换数据信号的枢纽。Avalon总线是一种协议简洁高效的片内总线,在基于Nios II处理器的SoPC系统中,外设都是通过Avalon总线与Nios II处理器进行通信。Avalon总线接口可以分成两类:Master和 Slave,Master与 Slave主要区别是对于 Avalon总线控制权的掌握。对于与其相接的Avalon总线,Master接口具有控制权,而Slave接口总是被动的。Avalon总线支持自定制外设,用户可将自己的逻辑设计挂接到Avalon总线上,从而实现Nios II处理器对其的访问[3]。为了接入SoPC系统,429总线控制逻辑在设计上必须实现两类端口:一类为串行总线控制端口,主要实现对429总线数据的收发,另一类为Avalon总线端口,实现与Avalon总线之间的通信。如图3所示,429总线控制逻辑工作机制可抽象为一个有限状态机,默认工作在空闲状态。若监测到输入端的H端与L端电平不同,则进入接收状态流程:默认接收的429总线的数据字长度为32 bit,相邻数字之间有20个无效的数据间隔。若接收未满32 bit即收到数据间隔或者接收超过32 bit后仍未出现数据间隔,则认为接收的数据无效并丢弃,否则将数据进行串行/并行转换后存入FIFO,再转入空闲状态。若状态机接收到发送请求,则进入发送状态流程:首先从FIFO中取出数据,进行并行/串行转换,将转换后的数据逐位发出,完成32 bit数据发送后,再发送20个数据周期的数据间隔,再返回到空闲状态。
Nios II处理器采用32位架构,可配置成最高级别的full性能,即具有数据缓存与指令缓存,支持动态分支预测等特性,最高支持到150 DMIPS[3]。Nios II处理器的复位向量被设置在Flash中,中断向量被设置在SRAM中,以提高处理的效率。在调试接口上,可设置支持LEVEL 3级的JTAG接口,即支持通过JTAG接口实现目标连接、软件下载、硬件断点、软件断点、数据触发和指令跟踪等多种调试功能,以方便用户通过JTAG接口对SoPC系统进行片上跟踪调试。
配置有PCI软核的SoPC系统可直接与PCI总线连接,无需在FPGA外部扩展PCI总线-Local总线桥接芯片。在SoPC系统中配置PCI软核参数时,指定该软核为“PCI Target-Only Peripheral”,即只作为从设备,不主动对PCI总线发起占用,支持数据突发传输、33 MHz系统时钟、32位总线宽度。在PCI映射的空间分配上,支持BAR0~BAR2共3段地址空间,其中BAR0映射为PCI总线控制寄存器组,空间大小16 KB,BAR1映射为FIFO的存取接口,空间大小16 B,考虑到FIFO的存取接口为单一地址,与FIFO的大小无关,因此取16 B的空间是合适的。BAR2映射为429总线控制逻辑,空间大小32 B。配置完成后的系统结构及资源分配如图4所示。
SoPC系统软件设计主要是在SoPC中嵌入μC/OSII操作系统,并且在操作系统之上设计实现429总线控制逻辑初始化、429总线与PCI总线通信等功能。
航空电子系统对实时性及可靠性有较高的要求,使用可剥夺型操作系统内核使得任务响应时间得以最优化。μC/OS-II是一个完整的,具有可移植、可固化、可裁剪、可剥夺实时多任务内核。μC/OS-II自1992年以来已经有数百个商业应用,并获得了美国联邦航空管理局(Federal Aviation Administration)对用于商业飞机的符合RTCA DO-178B标准的认证。这表明μC/OS-II具有足够的安全性与稳定性,能用于与人性命攸关的、安全性条件极为苛刻的航空电子系统中[4]。
SoPC系统软件设计开发使用Altera公司提供的开发环境Nios II IDE,Nios II IDE采用标准的 C/C++语言作为编程语言。设计软件时,除了包含指定的system.h、alt_main.h等头文件,针对自定制的429总线控制逻辑,需编写arc429.h头文件,包含了控制逻辑中的控制寄存器的地址、数据FIFO的接口地址等信息,即是将自定制的429总线控制逻辑映射为μC/OS-II中的地址资源,方便程序调用。μC/OS-II调度下的任务处理流程如图5所示,SoPC使用两个线程任务分别处理429总线数据接收与发送流程。接收任务的优先级高于发送任务,这种做法提高了数据接收事件的优先权,可以最大可能地保证接收到的数据不丢失。在每次上电复位后,智能模块对整个系统的设备重新进行初始化,包括外设控制字的配置以及缓存初始化等工作。初始化完成后,在接收流程中,软件固定周期检查收到数据未处理的时间是否超时,如果超时,则立即去读取接收 FIFO;否则,在接收FIFO未达到接收阈值时,暂不响应。如接收的数据已达到阈值,则再通知Nios II CPU将数据全部取走,并通过PCI总线将数据发给计算机系统。此种做法充分利用了PCI总线的数据带宽,提高数据吞吐率的同时,降低了系统资源消耗,避免了低速的429总线每次接收到数据后频繁提请中断对系统性能的影响。发送流程中,则始终等待发送请求,如有请求。则将接收FIFO中的数据全部发送出去;否则处理空闲等待状态。由于FPGA内部存储资源丰富,可以对接收和发送FIFO开辟得足够大,存储的数据足够多。
基于SoPC的智能429总线通信模块采用了智能化的设计技术,相比于非智能信号转换模块,具有处理效率高、系统资源占用低、可配置性强和体积占用小等特点,可以满足多路429总线的通信需求,其设计思路也可应用在CAN、1553B等总线通信模块上,可广泛应用于军用和工业控制计算机系统等领域。
[1]谭新洪.ARINC 429技术在激光陀螺惯测组合中的应用研究[J].航天控制,2004,22(2):85-89.
[2]潘松.SoPC技术实用教程[M].北京:清华大学出版社,2005.
[3]吴继华,王诚.Altera FPGA/CPLD设计(高级篇)[M].北京:人民邮电出版社,2005.
[4]LABROSSE J J.MicroC/OS-II:The Real-time Kernel[M].Second Edition,CMP Books,2002.