关俊强,左丽丽,吴维林,祝周荣
(上海航天技术研究院 上海航天电子技术研究所,上海 201109)
基于FPGA和ADS8638的数据采集系统的设计与实现
关俊强,左丽丽,吴维林,祝周荣
(上海航天技术研究院 上海航天电子技术研究所,上海201109)
为了解决常用数据采集产品体积较大的问题,选用一种体积小,转换速度快的多通道AD转换芯片ADS8638,设计了FPGA与芯片的接口电路,并采用verilog语言编写了控制程序,以控制ADS8638芯片对各通道输入的模拟量进行AD转换;通过软件仿真验证、静态时序分析,仿真和分析结果表明,该软件功能、性能、时序正确;最后,将软件经过综合、布局布线后下载到ACTEL FPGA芯片中进行硬件系统测试,测试结果表明,该技术方案设计合理,功能可靠,降低了常用数据采集系统的体积和功耗,具有良好的实用价值。
FPGA;ADC;ADS8638;SPI接口
在航天电子产品的数据采集系统中,常用的AD转换芯片有AD574芯片[1]、AD7892芯片[2]等,芯片体积较大,采样速率较低。而TI公司生产的8通道12位AD转换器ADS8638[3],是一种逐次逼近型的AD转换器,转换速率可达1 Msps,由于采用SPI串行接口进行通信控制,因此芯片引脚少,体积小,重量轻,外围芯片少,集成度高,灵活性强,而且温度范围宽,可用于航天数据采集产品小型化设计。
数据采集系统硬件上主要由一块FPGA芯片和一片ADS8638芯片组成,外部满足该AD转换器输入电压范围的多路模拟量信号可直接连接AD芯片模拟量输入管脚。系统组成如图1所示。
图1 数据采集系统组成框图
本文设计了FPGA和ADS8638的硬件接口电路,并采用Verilog语言编写了控制程序,通过ACTEL FPGA芯片控制ADS8638实现对多路模拟量的AD转换,并将芯片输出串行数据转换为并行数据,可输出给其它模块作进一步的数据传输处理。该技术方案已在某小型化数据采集产品中得到应用。
FPGA和ADS8638接口电路如图2所示。FPGA和ADS8638连接信号包括芯片选择信号AD_CS、串行时钟输入信号AD_SCLK,串行数据输入信号AD_DIN,串行数据输出信号AD_DOUT, AD_SCLK时钟采用FPGA系统时钟CLK,频率为16 MHz。
SIG1~SIG8为8路模拟量输入信号,AD芯片模拟电源电压为±12 V,数字电源电压为3.3 V,芯片采用内部2.5 V参考电压。
图2 ADS8638接口电路图
2.1ADS8638性能特点
1)可通过软件设置的输入电压范围:±10 V,±5 V,±2.5 V,0~10 V,0~5 V,采用外部参考电压时,输入电压可达±12 V;
2)高集成度,8个输入通道多路选择,每个通道可输入不同电压范围的模拟信号;具有内部参考电压,带有温度传感器,每个通道都有报警极限,需要外围芯片数量少;
3)采样率可达1 Msps;
4)高性能:无误码输出12bit转换数据;
5)INL:±0.9 LSB;
6)SNR:71.8 DB;
7)低功耗,转换速率为1 Msps时,为14.45 mW;转换速率为0.1 Msps时,为5.85 mW;
8)具有SPI串行接口;
9)供电电源电压为5~1.8 V;
10)温度范围:-40~125 ℃;
11)小体积:4 mm×4 mm QFN-24 Package。
ADS8638芯片、AD574芯片和AD7892芯片性能比较如表1所示,可见,跟后两种芯片比较,该芯片在转换速度、体积和功耗等方面均具有显著优势。
表1 3种AD转换器性能比较表
2.2ADS8638工作原理
ADS8638是一个具有SPI接口的AD转换器,CS、SCLK、DIN和DOUT组成四线制的SPI接口,CS为芯片选择信号,SCLK为串行移位时钟,DIN是一个串行输入数据线,用于写入数据,编程配置内部各种寄存器,DOUT是一个串行数据输出线,用于输出AD转换结果或者读出寄存器数据,均由16bit数据组成。通过SPI接口对内部寄存器进行写入或读出数据,从而配置芯片工作模式,读取转换结果,实现AD转换功能。无论读操作还是写操作,均需要在CS下降沿后,包括至少16个SCLK周期。
该芯片功能组成如图3所示。
图3 ADS8638功能组成框图
芯片的寄存器被映射为两页:页0和页1,在上电或者复位后选择页面0的寄存器,本文操作的寄存器都是页0的寄存器。寄存器地址和定义见芯片手册[3]。
2.2.1SPI写操作功能
对芯片进行写操作时,通过DIN数据线写入命令,DIN前7 bit表示寄存器地址,第8 bit为0表示写指令,对写操作来说,后面的8 bit表示要写入的数据。芯片在写操作完成后的第一个CS下降沿执行该写入命令。
SPI写操作时序和数据格式如图4所示。
图4 SPI写操作时序和数据格式图
2.2.2SPI读操作功能
对芯片进行读操作时,通过DIN数据线写入命令,DIN前7 bit表示寄存器地址,第8 bit为1表示读指令,后面的8 bit为无效数据,DOUT在第7~0 bit输出该地址对应的8位数据。
SPI读操作时序和数据格式如图5所示。
图5 SPI读操作时序和数据格式图
2.2.3AD转换功能
除了SPI接口功能以外,CS和SCLK还同时具有AD转换控制功能。每一个数据帧由CS的下降沿开始,芯片在CS下降沿采样软件选择通道输入的模拟信号,然后启动转换,CS的低电平使DOUT输出转换结果,SCLK时钟用于在转换过程中通过DOUT输出转换数据;在CS下降沿时,DOUT依次输出4 bit的通道地址以及其后的12 bit转换结果(高位在前),16 bit串行数据跳变沿对齐SCLK下降沿。AD转换时序如图6所示,输出数据格式如图7所示。
图6 AD转换时序图
图7 AD转换数据输出格式图
2.3FPGA芯片介绍
FPGA芯片选用ACTEL公司的FLASH型A3P250-VQ100芯片,该芯片属于ProASIC3 FLASH工艺系列FPGA,具有成本低、体积小(14 mm×14 mm)、功耗低、安全性好、可反复编程、无需额外片外配置PROM、独立工作、无上电浪涌电流、加载直接启动和抗单粒子翻转性能好的优点。芯片资源为,具有25万门、6144个D触发器、36 Kbits RAM、157个用户IO口、350 MHz的系统性能;支持高级IO接口,静态工作电流小于30 mA[4]。
FPGA控制软件在Libero IDE v9.1开发环境下采用verilog语言编写,采用Synplify Pro2010工具综合生成网表文件,最后采用Designer工具布局布线后生成pdb下载文件,烧入芯片,经过系统硬件测试,能够实现对多路模拟量的AD转换,并将转换后的串行数据转换为并行数据传输给其它模块。
软件包括1个顶层模块ad_manual.v和2个子模块,SPI读操作模块spi_rd.v和SPI写操作模块spi_wr.v,在顶层模块中通过调用2个子模块,完成对寄存器的读写功能。
顶层模块主要采用1个“三段式”状态机实现,状态机工作流程如图8所示,具体步骤如下:
1)上电复位结束后,状态机进入空闲态;
2)状态机转入写复位寄存器状态,复位寄存器地址为7’h01,写入数据8’h01可使芯片软复位,使所有寄存器进入复位状态。该操作通过调用SPI写模块实现,设置spi_wr.v输入信号wr_en=1,wr_addr=7’h01, wr_datain=8’h01;写操作完成后,进入读复位寄存器状态;
图8 FPGA控制软件状态机流程图
3)状态机转入读复位寄存器状态,通过读取复位寄存器数据,判断2)步骤写入是否成功;若读取数据跟写入数据一致,则跳转到写辅助控制寄存器状态;否则,跳转回到2)步骤;读复位寄存器调用SPI读操作模块实现,设置spi_rd.v输入信号rd_en=1,rd_addr=7’h01,判断读出数据是否是8’h01;
4)状态机转入写辅助控制寄存器状态,辅助寄存器地址为7’h06,写入数据8’h04,设置芯片采用内部参考电压,AL_PD设置为报警输出管脚,内部温度传感器模块从下一帧起不再处于工作状态。该操作通过调用SPI写模块实现,设置spi_wr.v输入信号wr_en=1,wr_addr=7’h06, wr_datain=8’h04;写操作完成后,进入读辅助控制寄存器状态;
5)状态机转入读辅助控制寄存器状态,通过读取辅助控制寄存器数据,判断步骤4)写入是否成功;若读取数据跟写入数据一致,则跳转到写手动模式寄存器状态;否则,跳转回到步骤4);读复位寄存器调用SPI读操作模块实现,设置spi_rd.v输入信号rd_en=1,rd_addr=7’h06,判断读出数据是否为8’h04;
6)状态机转入写手动模式寄存器状态,芯片上电后,工作于手动扫描模式。手动模式寄存器地址为7’h04,该寄存器使芯片工作在手动扫描模式,根据实际需要转换的通道和各通道对应的输入电压范围,设置寄存器写入数据。该操作通过调用SPI写模块实现,设置spi_wr.v输入信号wr_en=1,wr_addr=7’h04,wr_datain=8’h{1'b0,ad_ch_sel[2:0],ad_range_sel[2:0],1'b0};ad_ch_sel 为通道选择设置信号,ad_range_sel 为输入电压范围设置信号,spi_wr.v同时接收ADS8638通过ad_out输出的转换数据,将数据转换为并行数据addata输出。
3.1SPI写操作模块
该模块接收顶层模块输入的写使能信号wr_en,写地址addr[6:0],写数据datain[7:0],检测到写使能信号的上升沿后,开始将写地址和写数据进行并串转换,以SPI接口形式向ADS8638芯片输出cs_b、sclk、sdin,sclk时钟频率为16 MHz;sdin[15:9]为写地址,sdin[8]为读写标志,0表示写操作,sdin[7:0]为写数据;cs_b低电平有效,宽度为16个sclk时钟周期;cs_b、sdin跳变沿均与sclk时钟下降沿对齐。
SPI写操作模块写复位寄存器时序图、写辅助寄存器时序图、写手动模式寄存器仿真波形图分别如图9~11所示。
图9 SPI写复位寄存器前仿真波形图
图10 SPI写辅助控制寄存器前仿真波形图
图11 SPI写手动模式寄存器前仿真波形图
根据ADS8638芯片手册要求,当执行写手动模式寄存器时,ADS8638在下2帧时,输出转换后的数据,采用sclk时钟上升沿锁存ad_out 输出的数据,然后将数据进行串并转换,转换为16位并行数据,然后将转换数据addata[7:0](对应ad_out的bit11~bit4)输出。读取转换数据仿真波形如图12所示。
图12 读取转换数据前仿真波形图
3.2SPI读操作模块
该模块接收顶层模块输入的读使能信号rd_en,读地址addr[6:0],检测到读使能信号的上升沿后,开始将读地址进行并串转换,以SPI串行接口形式向ADS8638芯片输出cs_b、sclk、sdin,其中,sclk时钟频率为16 MHz;rd_sdin第15 bit~第9 bit为读地址,第8 bit为读写标志,1表示读操作,第7 bit~第0 bit为无效数据,设置为0;cs_b低电平有效,宽度为16个sclk时钟周期;cs_b、sdin跳变沿均与sclk时钟下降沿对齐。该模块同时接收ad_out输出的读出数据,采用sclk时钟上升沿锁存输入数据,然后进行串并转换,将输入数据的第7 bit~第0 bit转换为并行数据rd_sdata[7:0]输出。
SPI读复位寄存器、读辅助控制寄存器仿真波形如图13、图14所示。
图13 SPI读复位寄存器前仿真波形图
图14 SPI读辅助控制寄存器前仿真波形图
4.1仿真验证
编写ADS8638仿真激励模型,搭建Testbench测试床,在VCS仿真环境下对控制软件DUT进行仿真验证。软件各流程前仿真波形图分别如图9~14所示。
根据ADS8638芯片手册要求,采样转换时序应满足图15所示要求,软件时序参数前仿真测量结果如表2所示,可见所有参数均能满足手册要求。
4.2静态时序分析
软件布局布线后资源占用情况如图16所示,占用资源约为5.7%,采用Designer自带的Smart Time工具进行静态时序分析,分析结果见图17所示,最大工况下,系统时钟最高工作频率约为119 MHz,本设计实际工作频率为16 MHz,满足降额80%要求。
图15 ADS8638芯片采样转换时序图
序号时序参数参数含义手册要求最小值最大值功能仿真测量值结论1tc转换时间/为15个SCLK周期15个SCLK周期满足要求2t(ACQ)采样时间250ns/3062.5ns满足要求3tsu(CS-SCLK)建立时间,CS低电平有效到第一个SCLK上升沿3.3V供电时,为18.5ns/31.25ns满足要求4tsu(DIN-SCLK)建立时间,DIN有效到SCLK上升沿3.3V供电时,为6.0ns/31.25ns满足要求5th(SCLK-DIN)保持时间,SCLK上升沿到DIN有效3.3V供电时,为8.0ns/31.25ns满足要求6tw(SCLK_H)SCLK高电平时间3.3V供电时,为20ns/31.25ns满足要求7tw(SCLK_L)SCLK低电平时间3.3V供电时,为20ns/31.25ns满足要求8fSCLKSCLK频率/3.3V供电时,为20MHz16MHz满足要求9fSAMPLE采样频率/3.3V供电时,为1MSPS0.25MSPS满足要求
图16 布局布线后资源使用情况图
图17 时序性能分析结果图
本文选用一种TI公司生产的8通道、12位分辨率、高精度AD转换器ADS8638芯片,设计了ACTEL FPGA芯片和ADS8638的接口电路,并采用Verilog语言编写了FPGA控制软件,组成了一种小型化的数据采集系统,可控制ADS8638采用手动模式工作,按照软件设置的输入通道和输入电压范围,对8通道输入模拟量进行AD转换,然后将转换后的串行数据转换为并行数据输出,用于后续进一步传输和处理。
FPGA控制软件通过了功能仿真验证、时序验证以及硬件系统测试,验证和测试结果表明,该软件时序正确,功能正常,具有较高的可靠性。
与航天数据采集系统中常用的AD574芯片、AD7892等芯片相比,该芯片具有体积小、重量轻、功耗低、转换速率高、集成度高的显著优点,而且具有SPI串行接口,通信控制方便,需要外围芯片数量少。因此,基于ACTEL FPGA芯片和ADS8636芯片构成的数据采集系统有效的减小了系统的体积、重量和功耗,提高了系统的集成度、可靠性和灵活性,尤其适用于产品需要小型化、低功耗设计的场合。
[1] AD574 Data sheet [Z].Analog Devices, INC.
[2] AD7892 Data sheet [Z]. Analog Devices, INC.
[3] ADS8638 Data sheet [Z].Texas Instruments, INC.2011.
[4] Microsemi, Inc. ProASIC3 Flash Family FPGAs Data sheet [Z]. 2010:1-6.
Design and Implementation of a Data Acquisition System Based on FPGA and ADS8638
Guan Junqiang,Zuo Lili,Wu Weilin,Zhu Zhourong
(Shanghai Institute of Aerospace Electronic Technology, Shanghai Academy of Spaceflight Technology, Shanghai201109, China)
In order to reduce the size, weight and power consumption of general data acquisition system, the multi-channel ADC chip ADS8638 with high sampling rate and small size made in Texas Instrument is selected to design the data acquisition system based on FPGA, which controls the ADC to sample and convert analog signals into digital ones. The interface circuit between FPGA and the chip, as well as the control software which is programmed using verilog HDL is designed. Through software simulation, static timing analysis, the correctness and stability of the software design is verified. Finally, the hardware system test results indicate that the scheme is reasonable and reliable, can greatly reduce the system size and power consumption compared with the common data acquisition system, and is of good practical value.
FPGA; ADC; ADS8638; SPI interface
1671-4598(2016)04-0214-05DOI:10.16526/j.cnki.11-4762/tp.2016.04.062
TP274
A
2016-01-06;
2016-01-21。
关俊强(1985-),男,山西忻州人,硕士,工程师,主要从事航天FPGA产品的设计和验证工作方向的研究。