基于USB接口的多功能ARINC429总线接口板设计
扫描二维码
随时随地手机看文章
摘 要: 提出了一种基于USB接口的多功能ARINC429总线接口板设计方案。通过采用SoPC技术、USB协议芯片、基于VHDL的自定义429总线IP核设计以及基于SD卡的存储设计,快速构建了系统硬件,在Nios II开发环境下采用C语言开发了系统核心软件,实现了系统的总线通信和数据存储多功能设计。应用结果表明,该系统具有良好的性能、便携性和经济效益。
关键词: USB;ARINC429;SoPC
当前,由于ARINC429总线在航空航天等领域应用极为广泛,国内出现了各种针对不同平台和接口的ARINC429接口板,包括ISA、PCI、USB、GPIB和VXI等接口类型。这些板卡大多采用专用的协议处理芯片(如HI-8585、DEI1016芯片等)来进行ARINC429总线通信处理[1],也有部分板卡采用了自主协议芯片或FPGA来实现[2]。但是,它们的功能相对单一,一般只用于总线数据收发处理,自身不具备数据存储功能,必须由主机软件进行实时数据的记录、处理和存储,对于一些需要实时记录和存储多路429数据,同时要求较高保密性、便携性的场合来说,存在一定的局限性。因此,本文提出了一种基于USB接口的多功能ARINC429总线接口板设计方案,设计了一种既可以通过USB进行多路ARINC429总线通信,又具备数据存储功能的多用途接口板。
1 硬件设计
该板卡外形设计紧凑,体积与普通USB硬盘相当,便于携带,功耗较低,采用USB总线供电,无须外置电源。板卡核心为基于FPGA的嵌入式微计算机系统,主要功能包括USB总线事务处理、429总线通信和数据存取处理,系统组成和结构如图1所示,分为微控制器模块、USB协议处理模块、ARINC429总线协议处理模块、SD卡模块和电源模块。
1.1 微控制器模块
微控制器模块是系统的控制中心,它包括FPGA芯片、50 MHz有源晶振、JTAG调试模块、4 MB EPCS串行FLASH和16 MB的48LC4M32型SDRAM。其中,FPGA芯片是微控制器模块的核心,选用了Altera的BGA封装的EP3C16F256型FPGA,该芯片本身具有可编程、可裁减等特点,通过采用SoPC技术,应用Quartus开发环境提供的可裁减IP模块,可在FPGA内快速构建一个嵌入式微计算机系统来实现系统的复杂事务处理功能[3]。FPGA内实际应用的IP模块包括:32 bit RISC Nios II CPU、SDRAM控制器、2个SPI主控制器、PIO控制器以及用于软件调试及程序引导的JTAG-UART和EPCS-Control等。
通过选用FPGA,采用SoPC技术定义必要的IP模块,合理分配芯片资源,在实现系统功能的同时加快了开发周期,提升了系统性能。
1.2 USB协议处理模块
USB协议处理模块由FPGA芯片内部的PIO控制器、SPI主控制器及CH376芯片组成。
其中,CH376芯片可支持USB设备方式和USB主机方式,并且内置了USB通信协议的基本固件、SD卡的通信接口固件、FAT16和FAT32等文件系统的管理固件,支持常用的海量存储设备和SD卡。CH376芯片支持8 bit并口、SPI接口和异步串口3种通信接口。
在本系统中,CH376芯片工作于USB设备方式。 FPGA与CH376的通信方式采用SPI方式,为保证与CH376芯片的正常通信,FPGA的SPI设置为主模式,总线宽度为8 bit,模式为0,高位在前,速率设置为5 Mb/s(可设置在2 Mb/s~24 Mb/s之间)。CH376芯片在USB设备方式下支持5个物理端口,端点0是默认端点,支持上传和下传,缓冲区各为8 B;端点1包括上传端点和下传端点,缓冲区各为8 B;端点2包括上传端点和下传端点,缓冲区各为64 B。端点2的上传端点作为批量数据发送端点,端点2的下传端点作为批量数据接收端点,端点1的上传端点作为中断端点,端点1的下传端点作为辅助端点。根据板卡工作模式的不同,数据传输端点也不同,在总线模式下,由于ARINC429总线的收发速率较慢(最大100 KB),因此数据的传输采用中断方式,应用CH376芯片的端点1作为数据的上传和下传端点;在U盘模式下,应用端点2批量方式数据传输。
需要强调的是,在总线模式下, CH376芯片对数据的传输是基于中断方式的,在对其进行操作时,FPGA本地端应注意对中断的处理。由于ARINC429总线是全双工传输方式,数据的上传和下传是独立的,在数据的上传过程中,应关闭FPGA的中断,保证数据上传成功后开启中断,且在数据上传成功后,CH376将中断信号INT置“0”,此时,由于FPGA已关闭中断,对该中断不响应,可采用查询方式,并对相应的寄存器进行操作,将INT信号复位。数据的上传由FPGA的中断处理函数完成,在中断处理函数中,将USB总线下传的数据发送至发送FIFO,以供ARINC429协议处理模块发送。
1.3 ARINC429总线模块
ARINC429总线模块主要由ARINC429总线协议IP核和电平转换电路(HI-8588、HI-8570)组成,可实现429总线的双极性与AVALON总线之间的转换。ARINC429总线协议IP核采用VHDL语言设计,完全自主开发,以自定义IP方式挂接在FPGA内的AVALON总线上,其内部结构如图2所示。采用这种设计方法,可将429总线硬件的控制完全交由CPU软件处理,降低了硬件设计的难度,同时也增强了总线控制的灵活性。
IP核的AVALON总线接口模块的主要任务是实现AVALON总线信号和FIFO控制信号之间的转换。在发送数据状态下,将CPU通过AVALON总线发送过来的数据发送至FIFO;在接收数据状态下,它负责读取存放在FIFO中的数据,并在CPU的控制下,通过AVALON总线将数据发送至CPU。FIFO模块由发送FIFO和接收FIFO组成,FIFO数据宽度为32 bit,存储深度为64 bit,主要任务是缓冲总线的数据,防止由于CPU未及时响应所带来的数据丢失以及由于CPU操作过快造成的总线数据堵塞。编码模块实时读取FIFO的数据,将32 bit并行码转换为32 bit差分形式的串行码输出,再发送至电平转换电路;解码模块接收经电平转换电路转换后的总线数据,将32 bit差分串行码转换并行码输出发送至FIFO;编、解码模块实现了4路ARINC429总线的收发通信,且通信速率可以配置。
电平转换电路由4片HI-8588和4片HI-8570组成,主要完成双极性三态码和TTL电平差分码之间的转换。对于输入,由HI-8588芯片将满足ARINC429总线电气特性的串行码转换为TTL电平差分码;对于输出,由HI-8570芯片将接收到的TTL电平差分码转换为满足ARINC429总线电气特性的串行码。
1.4 SD卡模块
SD卡作为非易失存储器,负责实时存储总线数据。由于SD卡本身具有价格低廉、存储容量大、使用简单、可靠性高和安全性强等优点,其可用于对保密性和便携性要求较高的场合。
系统通过FPGA以SPI方式对SD卡进行数据访问,其中,写入数据按特定格式加密存储,读出数据需依赖专用驱动和应用软件,以确保安全使用。当系统正进行ARINC429总线通信时,可以选择开启SD卡记录功能,由FPGA实时地将收发的总线数据写入SD卡;当需要读取SD卡内所存总线数据时,可由驱动软件关闭ARINC429总线通信及SD卡记录功能,通过FPGA将数据从SD卡读出,并通过USB总线发送至主机供专用应用软件处理。
1.5 电源模块
电源模块负责将USB总线电源(+5 V)转换为各芯片工作电压,如1.2 V、3.3 V、2.5 V、-5 V。其中,1.2 V、3.3 V和2.5 V由线性稳压模块AMS7111系列芯片转换,-5 V电压由TPS63700型小封装高效率开关类电源芯片产生。
2 软件设计
系统的软件设计是指板内的Nios软件设计,主要依托NIOS II 9.0集成开发环境[4],采用C语言编写。该软件主要负责控制系统硬件,完成USB总线通信、ARINC429总线通信以及SD卡内数据的存取处理三大功能。
系统软件主要流程如图3所示,首先必须根据上位机发来的工作状态代码判断系统工作方式。设计的工作方式有总线通信模式和数据读取模式两种。