基于FPGA的高速模拟量采集系统设计
2023-06-09肖鹏蔡晓乐孙少华赵君闫稳
肖鹏,蔡晓乐,孙少华,赵君,闫稳
(航空工业西安航空计算技术研究所,陕西西安,710119)
0 引言
随着航空机载系统综合化、模块化发展,飞机上各个系统的重要数据需要由分布在各种子系统的终端设备采集并发送给通用综合处理设备统一管理。飞机上各子系统例如航电系统、飞控系统、机电系统、液压系统等通常分布着大量终端数据,这些终端数据里面包括各种类型的数字信号,也包括大量的模拟信号。数字信号通过个各种总线直接和综合处理设备进行通讯和传输。而模拟信号则需要转换成数字信号后在总线上进行传输和处理。综合处理设备根据这些模拟量转换后的数字信号产生特定的控制输出来实现各个系统不同的控制功能[1]。因此,模拟量采集功能成为机载系统中一个必不可少且至关重要的功能,其采集的精度和可靠性也影响整个机载系统运行的稳定性和可靠性。
机载系统中的模拟量包括但不限于:姿态传感器的输出信号(俯仰角、偏航角、俯仰角速度、滚转角速度、偏航角速度等) 、执行机构的反馈信息(副翼舵反馈、升降舵反馈等) 、发动机转速及温度、电源电压等[2]。若将这些模拟量根据信号类型进行分类,概括起来,机载系统需要采集的模拟量包括电压信号、电流信号和电阻信号3 种类型[3]。机载系统中一般要求模拟量采集功能的精度高,并且需要采集的模拟量信号的种类和路数也很多[4]。本文针对机载系统中大量的模拟量采集要求,提出一种基于FPGA的高速模拟量采集系统设计方法。
1 系统结构及原理
本文提出一种基于FPGA的高速模拟量采集系统设计方案,该设计总体结构图如图1所示,机载系统中多通道模拟信号经过分压限幅、滤波等调理电路处理后进入多路开关电路,再经过运放跟随、放大电路进入A/D转换电路,其中多路开关的切换控制由FPGA 内的可编程逻辑实现,通过开关切换轮转,A/D转换电路最终将所有通道的数据转换成数字信号存放在FPGA 内部相应通道的RAM 中,在FPGA 内部模拟量数据直接转换为浮点数,处理器直接读取数据即可。
图1 总体结构图
2 详细设计
■2.1 信号调理电路
针对不同类型的模拟量信号,且机载系统中通常有大量的杂波信号,为了实现高精度采集,通过相应的调理电路将采集信号归一化处理,常用的调理电有分压、滤波及限幅电路。
机载系统输入的电压信号有-100mV~100mV,0~32V,0~115V,0~270V 等,本文设计的模拟量采集电路采集范围为-10V~10V,因此电路调理电路前端针对不同的输入信号,采取通过调理电路将输入电压控制在-10V~10V 内。
对于高电压输入信号,通过电阻分压,将输入电压控制在采集范围内。对于小电压输入信号,通过放大电路将输入信号控制到采集范围内。针对输入接口的杂波信号,根据杂波信号的典型频率,设计针对的RC 低通滤波电路。为了防止前端分压电阻失效和输入的瞬变大电压造成后端电路器件的损坏,使用二极管组成限幅电路,将输入电压控制在采集范围内。
机载系统中的模拟输入数量繁多,如果采用每个通道使用一个AD 采集,会造成产品成本高,体积大,重量大,且一般也没有一对一采集设计需求。为了提高模拟量输入采集效率,并实现小型化、轻量化,多路开关电路可根据模拟量采集数量,PCB 面积选择合适模拟开关电路,本文选择16路多路开关,通过逻辑控制切换通道采集。
信号调理电路示意图如图2所示。
图2 调理电路示意图
■2.2 A/D转换电路设计
可根据采集精度、采集速度等要求选择合适A/D转化开关,常用的多通道A/D转换开关有16位6 通道或者8 通道A/D转换器。
本文选用6 通道A/D转换器,该芯片是一种16位6 通道同步采样的逐次逼近型A/D转换器,具有电路集成度高、使用简便、功耗小等特点,主要由控制逻辑、16位SAR 型A/D转换器、基准电压源、时钟、缓冲器和采样电路组合而成,模拟量输入电压为-10V~10V,经AD 转换器后转换成16位数字信号输出,转换时间不大于4μs。A/D转换电路如图3所示。
图3 A/D转换电路
■2.3 基于FPGA的高速模拟量采集逻辑设计
2.3.1 多路开关切换模拟量采集逻辑设计
针对多路模拟量信号采集,通过增加A/D转换芯片个数提高通道数,会使电路非常冗余且成本太高。因此通过增加电路中的多路模拟开关提高模拟量采集通道数量,采用控制多路开关切换保证每一个模拟量输入信号能够被正确的采集到。
本文以16位6 通道A/D转换芯片控制逻辑为例说明。模拟量信号均转化为电压信号采集,电压信号的建立需要时间,因此切换通道后对当前通道保持一段时间后控制A/D转换芯片启动转换,同时为了提高采集精度,切换到采集通道前先将多路开关输出通道切换到“地”上,泄放掉电路中的。
选用的16位6 通道同步采样的逐次逼近型A/D转换器,采集范围为-10V~10V,线 性 误 差 为±3LSB, 参考电压为2.50Vdc,转换时间3μs。当模拟量采集信号完全建立后,控制转换控制信号CONVSTA,C O N V S T B,C O N V S T C 由低电平变为高电平,在上升沿启动对应通道信号转换,为保证采集信号完全转换完成,在15μs 后控制CS 信号和RD 信号,通过并行总线将数据发送到FPGA。对于多通道模拟量采集,采集完当前输入信号后,逻辑自动控制开关切换通道,遍历所有输入通道并自动更新模拟采集数据。A/D转换器操作时序如图4所示。
输入输出引脚连接示意图如图4所示。这里采用将两个独立8位状态序列发生器SEQ1和SEQ2级联成16状态序列发生器SEQ,将ADCLO连接模拟地AGND,这样连接后输入参考电压ADCLO=OV,在计算最后转化结果时也不影响数据的准确性,同时防止信号零点漂移现象。
图4 A/D转换器操作时序
2.3.2 模拟量采集数据浮点化设计
通常FPGA 将A/D转换后的数据以二进制数据存在寄存器中,由处理器读取寄存器数据后按照器件手册得出的计算公式得出最终的模拟量采集结果。本文设计在FPGA 中直接将A/D转换数据转换为浮点型数据,同时在FPGA 逻辑设计可配置参数模块,直接将模拟量数据计算为十六进制的浮点数,处理器直接读取结果后直接进行数据类型转换即可得到十进制的浮点数,无需再进行计算。
本文设计的使用逻辑浮点运算计算模拟量采集结果数值基于16位6 通道A/D转换器的数据采集方式基础上设计。由于输出的数据结果为单精度浮点数,数据总线为32位总线。
(1)A/D转换器采集数据规格化模块
在逻辑中调用xilinx的float_point IP 核计算浮点乘法运算。IP 核的外部接口如图5所示。A 和B 是浮点运算的两个操作数。A 和B 必须是32 为规格化浮点数。RESULT 为A*B的结果。RDY 为高时表示数据计算完毕。OPERATION_ND 为 高 表 示IP 核 有 输 入。OPERATION_RFD为高时表示IP 核可以接收新的操作数。
图5 浮点运算ip 核的外部接口
A/D转换器的采集结果计算设计思路是:将A/D转换器的分辨率0.000305V 进行规格化的数作为操作数B,即操作数B 为常数。操作数A为A/D转换器采集到的码值进行规格化的数。
A/D转换器采集到的数据规格化:浮点数的表示遵循IEEE754 标准,一个浮点数是由四部分组成的:符号、尾数(有效数)、指数及基。规格化的浮点数组成如图6所示。S 为1位符号位,Exponet 为8位指数部分,Fraction 为23 为小数部分。
图6 规格化的浮点数组成
浮点数的IEEE754 标准表达式如下式:
S 为符号位,当S=0 时,此表达式表示的是一个正值;当S=1 时,此表达式表示的是一个负值。e 是指数位,由浮点数指数部分的值决定。按照IEEE754 标准,通常浮点数的指数用移码表示即使得e=E-bias,对单精度浮点数bias=127。1.f 表示的是尾数,尾数通常用原码表示,且规格化后的尾数其第一位数为1(规格化的32位数据中第一位数1 不体现在码值中,所以实际上小数部分为24位)。在逻辑中通过移位和数据拼接完成数据的规格化。
(2)可配置参数模块
在模拟量采集系统中为了提高采集进度,通常会在软件中对采集数据进行按照公式对采集数据进行修调,本文将修调参数设计为软件可配置逻辑模块,逻辑中可配置默认参数,在处理器上电初始化中对修调参数按照对应通道进行配置。
3 仿真及测试验证
■3.1 A/D采集数据规格化仿真
仿真激励1:A/D转换器采集到的电压为5V,则转换器输出码值为5/0.000305 =16393(d)=4009(h),仿真结果如图7所示。
图7 数据规格化模块和数据运算仿真1
从图7 仿真结果中看出,4009(h)进行规格化后的浮点数为46801200(h),最终计算出的模拟量结果为409FFE7D(h),转化为十进制的结果为4.99981546402。
仿真激励2:A/D转换器采集到的电压为-5V,则转换器输出码值为-5/0.000305=-16393。A/D转换器的输出编码方式为二进制补码,-16393的补码为BFF7。仿真结果如图8所示。
图8 数据规格化模块和数据运算仿真2
从图4 中看出BFF7(h)规格化的浮点数为C6801200(h),最终计算出的模拟量结果为C09FFE7D(h),转换为十进制数为-4.9998156402。
■3.2 模拟量自动采集及结果计算仿真
设计在5ms 内完成16 路模拟量采集,并在采集到数据将采集到数据计算出模拟量结果放到对应寄存器。
仿真激励如表1所示,仿真图如图9所示。通过仿真得到的码值进行计算得到采集到的值如表1所示。
表1 仿真激励及仿真结果
■3.3 测试结果
测试内容:在外部输入16 路模拟量激励电压,通过本文设计的系统电路采集,激励电压范围为-10V~10V,修正参数预设(A,B)均为(1,0)。系统上电后,完成硬件初始化,FPGA 开始自动采集模拟电压,将采集结果与给定激励进行对比,经过多次测试,试验抽取部分测试结果如表2所示,从表中可以看出,模拟量输入范围在-10V~10V 采集误差在20mV 以内,采集精度高,同时在5ms 内即可完成采集数据的解算及上传,实时性高。
表2 模拟量采集试验结果
4 总结
本文基于FPGA 控制及浮点数运算技术,设计了一种机载系统多通道模拟量采集系统,设计了信号调理电路、开关电路、A/D转换电路和FPGA 高速模拟量采集逻辑模块,利用FPGA 采集A/D码值并将采集结果转化为浮点数码值,处理读取到数据后直接进行数据类型转换即可得到浮点数据,同时在逻辑中设计了软件可配置的修调参数模块,便于对采集结果进行修调提高采集精度。经过仿真和实际测试,本设计能够实现高速采集多路模拟量需求,同时有较高的采集精度,具备较强的工程实现意义,利用FPGA 并行采集数据的优势,可很好的满足多路模拟量、高实时性采集需求。
图9 模拟量自动采集仿真图