1、电子技术应用 2023年 第49卷 第1期Embedded Technology嵌入式技术基于 FPGA 的多通道 ARINC429 总线测试系统孙骜,秦旭军(中国电子科技集团公司第四十七研究所,辽宁 沈阳 110000)摘 要:ARINC429 是一种可靠性高、抗干扰能力强的航空通信总线,在航空工业领域得到了非常广泛的应用。提出了一种基于 FPGA 以及总线接口芯片的系统应用方案,设计了一款多通道、用于 ARINC429 总线接口的测试系统,意在实现具备 ARINC429 总线设备的自动化测试并提高测试效率。着重阐述了系统的架构设计、FPGA 的逻辑设计、总线接口芯片的硬件设计以及时序的分析
2、与设计,最后对接口芯片的时序、ARINC429 总线的信号质量、系统功能进行了验证与测试。经测试,系统进行多通道收发时数据可靠,在不同速率下通信稳定。关键词:FPGA;NIOS;PCI 总线;ARINC429 总线中图分类号:V216.8 文献标志码:A DOI:10.16157/j.issn.0258-7998.222949中文引用格式:孙骜,秦旭军.基于 FPGA 的多通道 ARINC429 总线测试系统J.电子技术应用,2023,49(1):119-123.英文引用格式:Sun Ao,Qin Xujun.Multichannel ARINC429 bus test system base
3、d on FPGAJ.Application of Electronic Technique,2023,49(1):119-123.Multichannel ARINC429 bus test system based on FPGASun Ao,Qin Xujun(47th Research Institute of China Electronics Technology Group Corporation,Shenyang 110000,China)Abstract:ARINC429 bus is one of the aviation communication buses.It ha
4、s the characteristics of high reliability and strong anti-interference ability,and is widely used in the aviation industry.This paper designs a multi-channel ARINC429 bus board with FPGA as the main control chip and bus interface chip.The purpose is to achieve automated testing and provide testing e
5、fficiency.This paper focuses on the design of FPGA,the application of interface chip and architecture design.Finally,the timing of the selected interface chip,the actual signal quality of ARINC429 bus and the overall function of the system are tested.The actual test shows that the board can communic
6、ate reliably at different rates and the data is stable.Key words:FPGA;NIOS;PCI bus;ARINC429 bus0 引言目前,有大量的机载设备在使用 ARINC429 总线进行数据交互,为提高具有 ARINC429 接口设备的测试效率,降低开发成本,本文基于 FPGA 强大的并行处理能力、丰富的 I/O 接口资源以及半定制化的设计理念,利用NIOS II 软核处理器,结合 FPGA 的可编程逻辑端,设计了一款多通道 ARINC429 总线测试系统。系统通过 PCI接口与计算机通信,完成被测设备与计算机的数据交互,实现
7、 ARINC429 总线接口的自动化测试。由于 PCI 总线以及 ARINC429 总线协议相对复杂,本设计采用了成熟的总线接口芯片12,降低了系统的开 发 难 度,其 中 PCI 接 口 选 用 了 PCI9054 芯 片,ARINC429 接 口 选 用 了 HI-3584、HI-3182 芯 片。即 使PCI 总线的设计采用了接口芯片,但 PCI9054 芯片的功能还是非常繁多,对此本文介绍了设计中 PCI9054 芯片选用的模式、数据位宽等基本参数信息,此外重点对EEPROM 的使用方法、读/写操作的时序分析以及调试过程中的注意事项进行了详细阐述,希望能够达到抽丝剥茧的目的。1 硬件架
8、构设计本设计中系统有 4 路 ARINC429 发送通道以及 8 路接收通道,计算机可对板卡的各个数据通道进行参数配置、状态读取、使能收/发数据等操作。采用可编程逻辑端(以下简称逻辑端)与 NIOS 处理器相结合的开发方式3,逻辑端主要负责 PCI、ARINC429 等外设芯片的驱动层逻辑,NIOS 软核处理器主要负责完成系统业务层功能,硬件功能框图如图 1 所示。上位机收发 ARINC429 数据时,SRAM 作为上位机119Embedded Technology嵌入式技术www.ChinaAET.com和板卡之间的数据缓冲区,通过 PCI 总线实现上、下位机的数据交换4,FPGA 将数据存
9、储在 SDRAM 中,FPGA中的软核处理器按照上位机的指令完成 ARINC429 数据收发、状态维护、参数配置等功能5。板卡硬件资源主要由 FPGA、PCI 接口芯片、电源、SRAM、SDRAM、ARINC429 控 制 器 及 其 驱 动 器 组成67。为适应不同的应用场景,本设计采用 SDRAM 作为板卡的 ARINC429 数据存储区并分成 12 块,分别对应4 路发送及 8 路接收通道。2 FPGA 设计由于系统功能复杂并且互连所需的 I/O 数量多,因此选用的 FPGA 型号是 Altera 公司的 EP4CE30F23C7N,其内部有 28 848 个逻辑单元,可用的 GPIO
10、最多可达 328个,满足设计要求。设计时在 Quartus 软件中创建工程,并用硬件描述语言实现外设芯片的逻辑功能,使其满足芯片的时序要求。然后使用集成工具 Qsys 搭建基于 NIOS 处理器以及相关功能 IP 核的 SOPC 系统,本设计所用的 IP 核有PIO、中断、定时器、SRAM及 SDRAM控制器等。在 Quartus 软件中创建顶层文件,将逻辑端的模块与 NIOS 处理器的端口在顶层文件进行例化实现互连8。FPGA内部逻辑主要由 PCI9054逻辑块、SRAM逻辑块、HI-3584逻辑块以及NIOS 处理器组成,框图如图2所示。PCI 接口的传输速度较快,并且本设计采用 32 位
11、数据位宽,而板卡上的 SDRAM 读写速度较慢,数据位宽是16 位,两者传输速度相差很大,系统无法实时地将 PCI总线上的数据写入 SDRAM 中,因此选用一片 SRAM 解决读写速度相差过大的问题9。SRAM 读写速度快,当上位机向板卡写入数据时,FPGA 先将 PCI 总线上的数据暂存在 SRAM 中,在上位机发送数据完成后,FPGA 再将数据存入 SDRAM,读取数据反之亦然。考虑到上位机收发数据与 ARINC429 收发数据都需要使用 SDRAM,涉及的仲裁、决策、状态判断比较复杂,用 硬 件 描 述 语 言 来 实 现 相 对 困 难,因 此 设 计 中 使 用NIOS 处理器来完成
12、 SDRAM 相关业务。此外,考虑到 PCI 总线读写速度较快,设计中采用逻辑端控制 PCI接 口 芯 片 与 SRAM 的 数 据 交 互。NIOS 处 理 器 与ARINC429 的各个收发通道之间用逻辑端分别设计了FIFO,它将自动控制接口芯片收/发数据。对 NIOS 处理器而言收/发 ARINC429 数据只需要访问相应 FIFO 即可,减小了处理器的使用率。3 PCI 接口设计PCI 接口开发常见的有两种:一种是采用 CPLD 或FPGA 来实现,采用这种方法时需要购买相应的 IP 核,用户可采用比较简单的逻辑实现 PCI 总线的通信,但成本较高。另一种是采用 PCI 接口芯片,例如
13、 PLX 公司的PCI9054、PCI905210,这种方法可大幅度降低设计难度,开发者无需投入大量时间研究总线协议的详细内容,接口芯片在系统中充当“桥”芯片的作用,可缩短系统的开发周期,同时成本相对也低很多。本 设 计 采 用 了 第 二 种 方 法,采 用 了 PLX 公 司 的PCI9054 作为 PCI 接口芯片11,该芯片具有成熟度高、成本低的特点。PCI9054 芯片按功能可分为 3 类接口:PCI总线接口、本地总线接口以及 EEPROM 接口。PCI 总线接口用于完成 PCI 协议相关的功能,与计算机的 PCI 总线互连,当 PCI9054 配置好后 PCI 总线上的操作由该芯片
14、来完成。本地总线接口负责 PCI9054 与 FPGA 之间的数据交互。EEPROM 接口负责读取外部 EEPROM 的配置信息,这些配置信息是 PCI9054 的寄存器参数,系统上电后 PCI9054 通过 EEPROM 进行参数配置,设计中选用的型号是 93LC56B。当 EEPROM 为空时需要特别注意,否则可能会出现操作系统无法启动或者启动后无法找到板卡的问题。EEPROM 的烧录有多种方式,本设计使用 PLX 公司提供PLXMon 软件进行烧录。首次烧写时,需要将 93LC56B的 DI、DO 引脚下拉,同时 PCI9054 的 TEST 引脚也下拉,这样操作系统上电后会按照 PCI
15、9054 内部的默认参数进行配置。操作系统正常启动后 DI、DO 引脚上拉,然后通过 PLXMon 软件进行烧录即可。EEPROM 正确烧录后,DI、DO 引脚保持上拉即可。本设计中 PCI9054 采用 C 模式,本地总线采用 32 位数据总线,单次读/写、DMA 或突发传输模式。在 PCI 总图 2FPGA 逻辑框图图 1硬件功能框图120Embedded Technology嵌入式技术电子技术应用 2023年 第49卷 第1期线侧,PCI9054 会根据寄存器的配置自动响应总线信号,而本地总线的控制需要在 FPGA 上实现。本地总线主要涉及的信号有:LHOLD、LHOLDA、ADS#、B
16、LAST#、LWR#、LA31:2、LD31:0、READY#,其中对于 FPGA 来说关键的输出信号是 LHOLDA 以及 READY#。单次写操作时序图如图 3 所示,首先由 PCI9054 使能 LHOLD 信 号 来 申 请 使 用 本 地 总 线,FPGA 拉 高LHOLDA 信号来做应答。然后 PCI9054 驱动 LWR#信号,指示本次操作是读还是写。在 ADS#信号出现下降沿时,表示地址总线 LA31:2已经有效可用。在 ADS#信号出现上升沿时,由 PCI9054 驱动的数据总线 LD31:0上出现有效数据,此时 READY#需要开始输出低电平脉冲作为响应信号。在数据总线输出最后一个数据时,PCI9054 驱动 BLAST#输出低电平脉冲。FPGA 检测到BLAST#有上升沿时,驱动 READY#由低电平变成高电平,以此表示本次的写操作完成。单次读操作时序图如图 4 所示,与写操作类似,但需要注意的是 LW/R#信号是低电平,并且数据总线需要由FPGA 来驱动。不论写操作还是读操作,地址总线都是由 PCI9054驱动,这是因为本设计中 PCI 总线通信的发起者是计算机