APP下载

基于FPGA的ADS8686S采样控制器的设计与实现

2023-05-15刘建梁

现代计算机 2023年5期
关键词:管脚状态机遥测

刘建梁, 季 伟

(1.天津讯联科技有限公司,天津 300308;2.天津航天中为数据系统科技有限公司,天津 300458)

0 引言

遥测是监视航天器工作状态的重要途径,遥测系统的作用是获取遥测数据。遥测数据以工程遥测参数为主,主要有航天器内部各部分温度、电压、电流、振动、冲击以及噪声等[1]。本项目弹载遥测系统要求采集温度、压力等10路缓变信号(采样率40 Hz,-5 V~+5 V),3路振动信号(采样率5.12 KHz,-5 V~+5 V)和3 路冲击信号(采样率20.48 KHz,-5 V~+5 V)。采样芯片选用TI公司的16通道、16位分辨率、1 MSPS的A/D 转换器ADS8686S,FPGA 芯片选用Xilinx Zynq7000系列的XC7Z035。

1 ADS8686S简介

ADS8686S 是TI公司推出的一款基于双路同步采样的16 通道、16 位逐次逼近型模数转换器,其中包含输入钳位、1 MΩ 输入阻抗、独立的可编程增益放大器、可编程二阶低通滤波器和ADC输入驱动器。在数字接口方面,支持SPI串行接口,16 位或者8 位的并行接口,可灵活适配各种主机控制器。在采样速率上,最大支持1 MSPS 的采样率,可以满足大部分的采样速率要求。ADS8686支持硬件和软件两种控制模式。设备在完全复位状态下,根据HW_RNGSELHW_RNGSEL 管脚的状态,选择启用的控制模式。在硬件模式下,所有器件的配置都由管脚控制和访问,禁止使用内部寄存器。在软件模式下,管脚只负责接口和参考配置,其他配置都通过寄存器完成。采用SPI 串行通信具有占用管较少、连接简单等优点,但传输速度受限于串行时钟SCLK;而采用并口通信时,采样数据同时出现在并口总线,一个时钟即可读取,速度上有明显优势,而缺点是占用管脚多、连接复杂[2]。为简化软件设计工作,本设计数字接口采用16 位并行接口,又因在设计中要使用片上自诊断功能,因此选用软件控制模式。

2 并行接口控制时序

ADS8686S 的转换原理在文献[1]中已有介绍,不再赘述,这里重点介绍其并行接口工作时序。设计中将ADS8686S的接口分为写配置寄存器和模数转换控制两个部分进行分析。

2.1 写配置寄存器

对于ADS8686S,在启动采样转换前,要先对寄存器进行配置以实现特定的功能,例如配置输入电压的范围。ADS8686S 通过片选管脚CS、写管脚WR 和数据管脚DB15~DB0 来实现写寄存器操作,图1是并行写寄存器时序图。控制器首先拉低CS 管脚,此时芯片的数据管脚输出高阻态。延迟tSU_CSWR时间后控制器拉低WR 管脚,芯片把数据管脚作为数字输入管脚。然后控制器把数据放到数据管脚,等待tSU_DINWR时间后拉高WR 管脚,在WR 上升沿数据被成功锁存到对应的寄存器中。

图1 并行写寄存器时序

2.2 模数转换控制

ADS8686S 通过CONVST 来控制模数转换。首先向寄存器写入要采集的A/B 通道序号;等待tDZ_CONFIG后控制器拉高CONVST 管脚,开始模数转换,随即BUSY 信号变高,表示正在转换;BUSY 由高变低后,表示采样完成,最小的采样时间tACQ为480 ns。检测到BUSY 下降沿后,控制器读取采样数据。图2为软件并行模式下采样控制时序图。

图2 软件并行模式下采样转换控制时序

3 采样控制器软件设计

采样控制器主要由主控模块、状态监测模块、采样率控制模块和数字接口模块组成。采样控制器结构框图如图3所示。主控模块是控制器的控制核心,负责控制ADS8686S的有序采样工作;状态监测模块用于实时监测ADS8686S的工作状态;采样率控制模块负责提供一定频率的脉冲使能信号,用于控制采样率;数字接口模块负责FPGA和ADS8686S的数字接口通信。

图3 采样控制器结构框图

3.1 主控模块

在数字电路系统设计中,有限状态机是一种十分重要的时序逻辑电路模块,一般用来描述数字系统的控制单元,是许多数字系统的核心部件[3],因此本控制器的核心控制逻辑基于Verilog HDL 有限状态机实现。本状态机共设计了47 个状态,限于篇幅,这里把47 个状态简化成8 个伪状态进行描述,图4 是简化后的状态跳转图。ADC_INIT 状态完成ADS8686S 上电的初始化工作,包括上电复位和芯片完全复位两个过程。在ADC_CONFIG 状态,分别向RANGE_A1、RANGE_A2、RANGE_B1、RANGE_B2 寄存器写入0xAA,把16个通道的采集电压范围设置成-5 V~+5 V,其他寄存器使用默认值;在START 状态,表示准备就绪,等待采样控制模块产生的sample_pulse 信号,随机展开本次采集工作;在CH_SEL 状态,向CHANNEL_SEL 寄存器写入待采集的A/B 通道地址;在CONVST 状态,拉高CONVST 管脚,启动转化,此时BUSY管脚变高;在WAIT 状态,等待BUSY 管脚由高变低,表示转换结束;在READ_CHA 状态,读取A 通道的采样值;在READ_CHB 状态,读取B 通道的采样值,随后跳转到START 状态,开启一次新的采集。需要注意的是,ADS8686S 是一款两路同步采样的ADC,A通道和B通道各有8 路采样通道,A 通道中的某一路和B 通道中的某一路是同步采样的,因此每次转换结束,要分别读取A通道和B通道的采样值。

图4 简化后的伪状态跳转图

3.2 状态监测模块

ADS8686S 具有片上自诊断功能,也即当通道选择寄存器CHANNEL_SEL 中地址配置成0xBB 时,会得到固定采样值0xAAAA(A 通道)和0x5555(B 通道)。借助这个功能,可以实时监测ADS8686S的工作状态,并把监测结果反馈给状态机模块,如果出现异常,跳转ADC_INT状态,进行复位重启操作。

3.3 采样率控制模块

本模块用来产生频率为184.32 KHz 的脉冲使能信号sample_pulse。任务要求的采样率有40 Hz、5.12 KHz 和20.48 KHz 共3 种,这里都按照20.48 KHz 进行采样,40 Hz 和5.12 KHz的过采样信号待后续抽取得到。由于A/B 通道是同步采样,每个循环依次读取8 个外部通道和1 个内部通道(自诊断结果),因此需要模块产生20.48 KHz×9=184.32 KHz 的脉冲使能信号sample_pulse。为了便于移植,这里采用DDS 原理[4]产生sample_pulse 信号。系统时钟频率110 MHz,NCO 位宽32 位,得到相位增量PINC=2^32×184.32 K/110 M=7197。

3.4 数字接口模块

数字接口DB[15∶0]是双向接口,FPGA 和ADS8686S 都可以对接口进行读写操作,因此在数字接口模块中例化了16 个三态门,在状态机控制下,完成数字接口的读写操作。

4 实验结果分析

图5是用直流源提供5 V电压作为待采信号,通过Vivado Hardware工具在线抓取的实时采样数据。从图中看到,A_CH0~A_CH7 和B_CH0~BCH7 都是0x7FFF,由于ADS8686S 采样值采用二进制补码输出,因此0x7FFF表示5 V。A通道固定值为0xAAAA,B 通道固定值为0x5555。实验结果表明,采样结果正确无误。

图5 Vivado Hardware工具在线抓取采样数据

5 结语

本文提出了基于FPGA 的ADS8686S 采样控制器,实现了对16 路传感器信号的采集。测试结果表明控制器工作稳定、性能可靠,对于同类设计具有一定的参考价值。

猜你喜欢

管脚状态机遥测
基于有限状态机的交会对接飞行任务规划方法
自适应模糊PID控制的遥测方舱温度调节方法
某小型无人机遥测软件设计
基于图像处理的异型电子元器件管脚偏移误差检测方法研究
浅谈如何提高遥测状态估计合格率
CMOS数字IC管脚电容的估算与测量
利用VBA处理邻近气象站的相关遥测数据
HC08芯片JVT测试方法的探究
FPGA设计中状态机安全性研究
基于反熔丝FPGA的有限状态机加固设计