您现在的位置是:首页 > 单片机

基于AVR和CPLD编程的高速数据采集存储系统设计

2020-06-20 05:00:19

  对于一个成型的探测系统而言,通常都是有采集储存部分的,无论是电信号、光信号、声音信号、磁信号等在被探测器接收到后大部分都需要转化为数字信号传给处理器才能完成分析、判断的过程。对于需要高速采集并存储的系统,在基于CPLD、AVR等控制高速ADC、储存等技术的基础上,本文设计低成本、高速采集存储的硬件实现。

  1 系统总体设计方案

  系统利用ATmegal62作为主控制器,CPLD用于产生控制时序,二者相结合协调进行数据的采集与传输控制。图1给出其系统总体设计方案框图。

  


  数据采集系统的工作原理是:模拟量信号经过传感器后转化成电压量,通过ADC将模拟量转换为数字量,而后进行传输存储和处理。在本系统中,在CPLD和AVR的控制下,将采集到的模拟信号经过A/D器件转换之后,转换结果先缓存到FIFO,再转存到非易失性Flash阵列中,其中FIFO不但可以实现缓存功能,还可以解决A/D转换之后数据位数跟Flash存储器的数据线位数不匹配的矛盾。

  1.1 采集部分

  本系统应用的A/D转换器是MAXl308,它具有8通道可编程配置,可接收数字输入分别激活每一路通道;100 ps通道间T/H匹配;转换时间为0.72(单通道),0.9(2通道),1.26(4通道),1.98μs(8通道);吞吐率为1 075(单通道),90(2通道),680(4通道),456千次/秒(8通道)。其他特性包括20 MHz T/H输入带宽、并具有内部时钟、内部(+2.5 V)或外部(+2.0~+3.O V)基准,以及低功耗省电模式。

  1.2 控制与存储部分

  如图2所示是4个Flash模块组采用流水线(pipeline)操作,使用该方式可以克服Flash写入速度较慢的缺点。Flash存储器的写入有2个阶段:数据加载阶段(通过I/0端口将数据写入页寄存器)和编程阶段(在芯片内部,将页寄存器的数据传输到存储单元)。由于编程阶段是自动进行的,不需要外部系统的干预,控制器可以进行其他事务的处理,如有效块地址的运算等,从而节省系统开销。NAND型Flash存储器的写操作以流水线方式进行,首先加载第1个Flash模块组,数据加载完后,第1个模块组进入自动编程阶段:再加载第2个Flash模块组,数据加载完后,第2个模块组进入自动编程阶段;然后依次对第3个乃至第4个模块组进行操作,当第4个模块组数据加载完后,第1个存储模块组已经自动编程结束,接着再加载和自动编程形成流水线的工作方式。从整个系统总体效果来看,它一直在进行存储加载数据。

  

  2 程序设计与实现

  编程实现采集部分的功能,采集部分时序图如图3所示。任意选择两条通道进行内部时钟分析,图中为第3通道和第7通道,当控制信号产生低电平时,控制引脚起作用,触发采集功能,同时EOC引脚电平至低。在tCTR段时间后读信号被启动经过tACC的时间后,12位数据将出现在DO-D11引脚上。在整个采集、存储过程中其他通道和通道3、通道7一样,随后将数据存入数据缓存器中。

  

  2.1 控制A/D转换程序设计

  根据控制存储的要求,首先要设计控制A/D转换的状态机,用来确定A/D转换的状态,根据MAXl308工作时序特点而设计的控制A/D转换的状态机转换图如图4所示。实现控制A/D转换的状态机部分主要VHDL程序源代码如下:

  

  

  

  将程序下载至CPLD中运行调试,经过对电路的调试和测量,控制8通道A/D同时转换的状态机产生的示波器时序波形如图5所示,其中,0、1、2、3、4分别对应的是图3中的CONVST、EOC、EOLC、CS、RD,而第5通道是对FIF0的写信号。从示波器显示的波形图可以看出产生的8个连续的脉冲对应位置完全满足图3所要求的时序要求,也就是说在控制器同时控制8路信号的采集时不会出现时序混乱的情况。由此可知,采用本系统中设计的采集程序可以实现同时采集的要求,并且根据采集的脉冲宽度分析可知该系统能满足采集速度为10 Mb/s的设计要求。

  

  2.2 控制Flash存储程序设计

  4个Flash存储器的流水线工作原理如图2所示,对单独的每一片Flash来说每一次存储都是在上一次存储过程中加载完成后进行,而对于由4片Flash存储器组成的整个系统,它一直在加载存储数据,这样可以保证存储速度大于采集速度,从而保证存储过程中不会因单片Flash存储速度慢而造成丢失数据。实现Flash存储的主要程序:

  

  在数据加载期间本系统应采用DMA传输控制方式,即:每当FIF0的半满标志信号HF产生一次有效电平时,ATmegal62就启动一次中断,在中断程序中,ATmegal62将产生NAND Flash命令和有效地址,以及启动DMA控制器。一旦DMA控制器启动,ATmegal62就将转入后台进行有效地址的运算等,从而参与数据传输过程,整个数据从FIFO到Flash存储器的传输过程是由CPLD内部编写的DMA控制器控制完成。启动一次DMA控制器传输一页2048个字节的数据,一次中断完成16 K字节的传输。其示波器时序如图6所示:第0,1,2,3通道是FIF0的读数据时序波形,第4通道是Flash的写通道时序波形。

  3 结论

  通过使用AVR和CPLD编程,设计实现了一种成本低且可实现10 Mb/s以上并行采集数据率的高速数据采集存储系统。在分析MAXl308特性及转换时序的基础上,设计完成了A/D转换器及其外围电路,并通过调试可知时序稳定。通过VHDL语言实现了采集模块、控制与存储模块和Flash存储功能。在完成硬件连接后调试,试验结果显示,该设计能够实现低成本高速采集,多路同时采集速度大于10 Mb/s采集系统,具有一定的实用价值。