基于FPGA的离散量接口控制器设计

安书董 李明 段小虎 毕宏彦
摘 要: 在航空电子系统中,离散量数字电路的应用和需求越来越多,而传统的离散量接口芯片集成度较低,功耗较高,且在恶劣环境下,离散量的稳定性和可靠性很难得到保证。基于上述局限,介绍一种新型离散量数字接口转换芯片,能够将28 V航空电源电平转换为TTL电平,由于其高集成、低功耗,并且能够在恶劣环境下展示出较稳定的性能,因此具有广泛的应用前景。同时,对该芯片的读/写操作提出一种不同于传统的“CPU+专用芯片”的控制方法,采用可编程逻辑器件(FPGA)来实现对该芯片的控制,以VHDL语言编写控制逻辑,用Xilinx集成开发环境对设计进行了综合,并编写测试码从而进行仿真。结果表明,该方法不但能够对该芯片进行读/写控制,还能极大程度提高系统处理数据的能力,并具有更高的稳定性和可靠性。
关键词: 离散量数字接口; 读/写控制; 可编程逻辑器件; VHDL
中图分类号: TN876?34; TN918.7 文献标识码: A 文章编号: 1004?373X(2017)20?0083?04
Abstract: The application and requirement of discrete magnitude digital circuits are increased extremely in the avionics systems, but the traditional discrete magnitude interface chips have low integration and high power dissipation, and the stability and reliability of discrete magnitude couldnt be guaranteed. According to the above situations, a new discrete magnitude interface convention chip is introduced, which can convert the 28 V aircraft power supply level into TTL level. It has wide application prospect because of its high integration, low power dissipation, and stable performance in severe environment. A control method different from the traditional “CPU + dedicated chip” methods is proposed, in which the field programmable gate array (FPGA) is used to control the discrete magnitude interface chip, the VHDL is adopted to compile the control logic, the Xilinx integrated development environment is employed to synthesize the design, and the test code is compiled for simulation. The simulation results show that the method can perform the read?write control of the chip, improve the data processing ability of the system, and has high stability and reliability.
Keywords: discrete magnitude digital interface; read and write control; field programmable gate array; VHDL
0 引 言
近年来,我国航空工业发展迅速,各种机载设备都在更新换代。尤其是在航空电子系统中,机载计算机作为飞机上电子设备的控制核心,需要采集越来越多的离散量信号用来获取当前系统的工作状态,同时,需要输出大量的离散量信号来发送指令。因此,离散量接口电路已经越来越多的应用于航电系统中,逐渐成为航空电子电路系统中的基本组成部分[1]。然而,随着离散量的增多,传统的离散量接口不仅集成度上较低,而且在恶劣环境下,很难保证数据的可靠性。本文提出采用一种新型HKA03201离散量数字接口芯片,具有自检测校验、错误隔离、双倍冗余等功能,因此提高了数据的可靠性和稳定性。同时由于集成小型化,在功耗、成本和面积重量等方面都具有一定的优势。
用于控制该离散量接口芯片读/写的方法有很多,传统的方法是CPU通过程序直接控制芯片,这样会在程序上大量占用CPU,极大程度削弱CPU的处理能力,从而降低系统的可靠性。本文提出用可编程逻辑FPGA器件作为离散量接口芯片的控制器,采用VHDL語言编写控制逻辑,通过一种桥接逻辑,实现对HKA03201芯片的控制,这样可以极大程度地减少CPU的工作时间,从而提高系统处理数据的能力,增强系统的稳定性和可靠性。
1 HKA03201芯片
通常情况下,系统中需要几十到几百种离散量信号,这些离散量信号均是28 V的航空电源电平,不能接入航电系统中作为控制信号,因此需要通过电路转换将28 V的航空电源电平转换为TTL电平,如果使用外置电路和器件完成几百路的转换,则占用大量的空间,在控制板面积、重量、功耗、体积等各个方面均耗费较大且成本较高[1]。因此,本文提出一种新型离散量数字接口芯片,是一款用于将离散量转换为TTL电平的接口集成电路。电路集成32路离散量通道,并且每个输入通道支持28 V/Open,28 V/GND,OPEN/GND三种离散量输入形式。由于集成小型化,在控制板面积、功耗和成本上均有大幅度提升,芯片外部配置参考电平,以适应不同航空电平的离散量信号,使芯片应用具有更大的灵活性和更强的适应系统能力。端口最高耐压可达55 V,防止离散量输入端口浪涌电压的冲击,增加芯片的可靠性。
该芯片能够实现32路离散量到TTL电平的转换,提供SPI和异步存储器访问两种接口。离散量端口可配置为DMA模式和自扫描模式,输入16位时可配置为双倍冗余模式,输入端口提供有源快速泄放功能,内置振荡器,采取双时钟冗余。该芯片的内部结构如图1所示。
该芯片具有以下特性:
(1) 内置振荡器,采用双时钟冗余。
(2) 芯片上电或工作状态时均可进行自检测试,并将检测结果反馈给fault_ch_reg寄存器;
(3) 采用延时采样输入,屏蔽掉高频抖动,并且屏蔽时间可配置,以满足屏蔽不同离散量抖动时间的要求;受芯片外围寄生电容和电感的影响,在离散量采集单元采集瞬间,会产生高频的抖动,在实际的操作中,必须屏蔽掉该高频抖动,采用延时采样输入信号的方式,对应芯片中的bsel<2:0>引脚。
(4) 对离散量的数据更新设计两种模式:自扫描模式和DMA模式。自扫描模式下,debounce模块使能,确认输入数据未抖动后进行数据更新。DMA模式下,数据实时更新,32路输入信号只要有一路发生变化则即时输出脉冲中断信号data_DMA(脉冲宽度50 ns)。芯片默认进行自扫描模式,配置DMA模式采用配置内部寄存器dma_ch_reg的方式。
(5) 双路冗余提供额外的双路数据校验功能,且冗余模式使能可配置。冗余模式使能端口(高有效),对应HKA03201的Redundant端口置高后,芯片进入冗余模式。ch_in<31:16>与ch_in<15:0>组成校验对,ch_in<0>对应ch_in<16>,ch_in<1>对应ch_in<17>,以此类推。
(6) 可以通过SPI和异步存储器两种接口访问各寄存器。接口模式选择端口interface_sel置低电平为异步总线接口,高电平为SPI接口。在芯片的输出端,有ready和fault信号,芯片上电自检查时ready信号拉低,当自检查结束时,ready信号置高,表明芯片稳定,可以开始正常工作。fault信号对应芯片70脚,为芯片工作出错信号(低有效),当芯片出现内部功能错误时,falut信号置低。data<15:0>对应芯片的Pin51?66,为异步读写双向端口,用于寄存器的异步配置和读取。
2 HKA03201芯片控制器
对HKA03201芯片的控制,传统方法采用“CPU+专用芯片”,以CPU作为控制核心,通过CPU读取内存中软件的方法来实现控制。软件的实现方法固然简单易行,然而,必将长时间占用大量CPU的时间,削弱了CPU处理数据的能力,同时降低系统的可靠性[2?3]。
针对以上情况,结合目前比较成熟的FPGA技术,通过向可编程逻辑器件(FPGA)中烧写程序逻辑,这些逻辑按照一定的时序来控制HKA03201芯片。其中,逻辑采用VHDL语言进行自顶向下的设计,而VHDL语言所设计的逻辑需要满足HKA03201芯片的读写时序,这样将FPGA的输出端和HKA03201芯片的输入端连接,通过FPGA输出符合HKA03201芯片读写时序的信号来控制HKA03201芯片,从而实现离散量信号和TTL电平之间的转换。用此方法取代传统的设计结构, 对系统的可靠性和抗干扰能力有较大提升,而且成本较低。
本文采用Xilinx公司Virtex?5系列的FPGA作为硬件载体,以ISEDesignSuite作为开发环境,以VHDL语言编写控制逻辑来实现对HKA03201芯片的控制。其控制电路的架构如图2所示。
3 FPGA控制器逻辑设计
根据对信号实时性的分析,芯片提供两种接口用于与CPU的数据交互,分别是串行(SPI)接口和异步接口。由interface_sel端口进行接口模式选择,高电平时为串行(SPI)接口,低电平为异步接口。根据前面的芯片介绍,只有当芯片选择异步接口时,才能对端口数据端进行校验,因此,选择异步接口进行通信。CPU通过总线以地址查询的方式访问离散量数字接口芯片。当进行异步接口访问时,还需要配置读写信号r_wn,低电平时异步写,高电平时异步读。写操作用来对离散量数字接口芯片内部的寄存器进行配置,而读操作可以获取芯片内部寄存器的当前状态。由于本文采用桥接式设计,因此FPGA的输出口各信号必须符合HKA03201芯片的读写时序,因此在FPGA的逻辑编写时,需构造有限状态机来满足系统的时序需求。
根据HKA03201芯片读操作的时序图,如图3所示,在读操作开始时,首先需要r_wn为高电平,即需要FPGA对应的HKA03201_R_or_W_N引脚输出高电平。与此同时,CPU将需要访问的地址信号通过ADDR地址总线发送给ADDR,再通过FPGA输出端HKA03201_ADDR向HKA03201芯片发送地址信号。由于这两步在读时序中最先体现,因此为第一状态,命名为RD_WR_ADDR_SETUP。
根据时序图,在10 ns之后,CS_N信号被置低,片选有效,开始进行读操作,数据通过dout端口读出,将此状态命为Chip_select。其中,10 ns的等待时间在VHDL逻辑代码中可以通过计数器在时钟下进行倒计数来实现。
读操作结束后,将CS_N信号置低电平,而ADDR和R_W_N依旧保持有效(低电平),此状态称为RD_WR_ADDR_HOLD。最后所有信号均恢复复位状态,重新进入IDLE状态。
采用VHDL语言建立状态机,首先需要利用可枚举的状态类型定义信号。
随后建立状态机进程,并且在进程中定义状态的转移,在这里,设置好敏感信号,根据时钟信号和敏感信号的变化,状态机的状态也发生改变,最终完成HKA03201芯片所需的时序。
写操作可以类似读操作进行同样的逻辑设计。在写操作(r_wn为低)开始时,输入需要写入数据寄存器的地址,同时R_W_N信号置低,称此状态为RD_WR_ADDR_setup,随后将CS_N信号置低,片选有效,开始进行写操作,数据通过din端口写入,将此状态命为Chip_select。在写操作结束后,将CS_N信号置高而ADDR地址信号和R_W_N信号依然有效,此状态命名为RD_WR_ADDR_Hold,最后將CS_N信号置低,从而结束写操作。写操作的时序示意图如图4所示。
在整个读/写操作的时序图中,因为idle是状态的起点和终点,因此idle作为when之后的第一项,在列出状态转移到其他状态的条件,写出状态的转移流程图,图5为HKA03201芯片整个状态转移过程[4?5]。根据以上逻辑和状态的转移,即可实现PFGA按照HKA03201芯片的时序对芯片读写的控制。
4 仿真结果
笔者用VHDL语言在ISEDesignSuite 13.3的开发环境中进行了设计输入与综合仿真,并将设计代码下载到FPGA上[6?7]。为了验证设计的正确性,通过ISEDesignSuite 13.3自带的仿真工具ISE Simulator Lite(也可以使用第三方软件modelsim)对HKA03201芯片的工作状况进行仿真验证。在模拟时,笔者编写了用户端的test测试程序, 由其向FPGA控制器发出各个命令RESET、READ,WRITE等, 并提供工作时钟和控制寄存器参数,图6,图7分别表示芯片在读/写过程中的仿真时序图。
通过验证仿真的时序图可以发现,仿真结果的时序和HKA03201芯片说明中要求的读/写操作时序完全一致,即证明了FPGA对HKA03201芯片进行读/写操作的可行性。
5 结 论
通过板级调试发现,本文所设计的控制器不仅能够完全满足航空电子系统中多路离散量向TTL电平转换的需求,而且系统设计简洁,性能稳定并且具有较高的灵活性,可用于不同的高性能高、要求系统中,达到了预期的目标,并且本文所采用的桥接的方法通过PFGA对HKA03201芯片的控制可以拓展到其他场合并加以应用。
参考文献
[1] 魏婷.一种新型离散量接口電路的设计[J].计算机技术与发展,2015,25(3):167?170.
[2] 谢东迅.基于FPGA的SDRAM控制器设计[J].长沙医学院学报,2008(2):53?58.
[3] 左清清,梁争争,郑毓琦.基于FPGA的频率信号实时程控计数电路[J].现代电子技术,2014,37(24):160?162.
[4] 周德新,崔海青,谢晓敏.机载电子设备故障诊断专家系统设计与实现[J].现代电子技术,2010,33(24):80?82.
[5] 王培利.双口RAM在图像处理系统中的应用研究[J].光电技术应用,2014,29(4):45?60.
[6] 段然,樊晓桠,张盛兵,等.基于状态机的SDRAM控制器的设计与实现[J].计算机工程与应用,2005,41(17):110?112.
[7] 高希权,温鑫.FPGA实现DDR内存条的控制[J].电子技术,2008(12):66?67.