原创 基于FPGA高速大容量数据采集与存储系统

2014-7-17 19:51 1232 16 18 分类: FPGA/CPLD
大容量数据采集与存储系统在工业自动化生产、国防和军事监控及环境监测等方面被广泛应用。为了能够完整、准确地捕获到各种信号或者故障发生时的特征信号,需要对其进行状态监测,并且要求监测系统具备长时间连续采集和存储的功能。但是为了支持系统中大量高速数据的暂时存储,这就需要很大的中间缓存,而专用的高速FIFO芯片价格昂贵且容量受限,大大增加了商业成本,因此在实际应用中寻找可靠的、低成本的采集存储系统是很有必要的。为此本文提出利用FPGA作为桥梁,实现对SDRAM的控制,从而对采集的数据进行缓冲,然后存储到大容量的CF卡中,满足系统所要求的速度快、实时性高、成本低和容易扩展等要求;接着详细论述了系统各个功能电路的设计思路和具体实现过程。 1系统方案设计 数据采集和存储系统主要由三部分组成:A/D转换器、FPGA的数据双缓冲器和CF卡的存储。 1)A/D转换器的作用是将所要采集的模拟量转换成数字量,通过光耦隔离后,由FPGA接收、缓冲、存储至CF卡。高速A/D转换器采用的是采样率为250kS/s的16位A/D转换芯片ADS8515,它属于逐次逼近寄存器型(简称SAR型)A/D转换器,其内部通常具有采样保持器,转换速率快。 2)FPGA采用ALTERA公司CycloneⅡ系列的EP2C35F672I8N,静态功耗小于0.25W。采用+3.3V、+2.5V、+1.2V分别给不同区进行供电。灵活的I/O控制使得编程简化,电路设计方便。采用AS和JTAG配置模式,配置芯片是EPCS16SI8N,器件的时钟配置为50MHz。 FPGA主要利用片外的SDRAM提供数据输出/输入的双缓冲作用,之所以选取SDRAM,主要是因为在各种随机存取器件中,SDRAM的容量较大,价格较低,且其数据突发传输模式能大大提高存取速度,能够满足应用的要求。 3)CF卡作用是将A/D采集到的数据进行存储,当数据容量存储满时,发送满信息,FPGA得到满信息后,停止对数据的采集并提示用户更换CF卡。 系统工作过程为:系统加电后,FPGA向A/D转换器发出相应控制信号,由于ADC采样率为250kS/s,为和CF卡存储速度相匹配,需要一个FIFO缓存系统。A/D转换器在FPGA的ADC接口控制电路控制下,把模拟信号转换成数字信号,并将采样数据存入FIFO缓存系统。同时FPGA查询CF卡是否有容量,如果CF卡未满,那么由FPGA的CF卡接口控制逻辑将采样结果从FIFO缓存送入CF卡中;当CF卡的容量达到一定程度后,FPGA发出满信息,向A/D状态机发送停止采集的命令,并提示用户已满,更换CF卡。 由于把FPGA设置为特定的自动模式,因此FPGA控制A/D采集以及把数据送往CF卡的所有操作不需要外部干预,从而保证足够的数据传输速率。采样过程中FPGA的CF卡接口控制逻辑依次取走FIFO中的批量数据,在进行CF卡的数据存储时A/D仍然持续转换,FIFO也被持续写入转换结果,避免两者的冲突。 【分页导航】
2硬件设计 系统的硬件由模数转换电路、数据采集存储与传输控制电路、接口电路构成。 2.1模数转换电路设计 模数转换电路是整个系统的重要组成部分,它由差分放大适配电路、A/D转换器构成,如图1所示,其核心器件是A/D转换芯片ADS8515。

图1 信号适配和模数转换电路原理图
图1 信号适配和模数转换电路原理图

模拟输入信号经过由OPA2604和OP604构成的差分放大适配电路将信号适配到ADS8515的采集范围。ADS8515将模拟信号转换为数字信号。ADS8515的控制信号由FPGA提供,ADS8515在控制信号的作用下,以适当的时序完成转换工作。 2.2数据采集存储与传输控制电路设计 数据采集存储与传输控制电路的开发工作主要集中在FPGA上。FPGA负责在CF卡与A/D芯片之间的缓冲与控制,一边与A/D接口,另一边与CF卡接口,产生数据采集、A/D转换、FIFO所需的全部控制信号,实现对传输数据的缓存、读/写控制、时钟、输出使能以及对A/D的控制等功能。 2.2.1FPGA内部总体设计 FPGA设计内部结构简图如图2所示,由FIFO、CF卡控制状态机、ADC接口控制状态机三部分构成。 图中由左向右的宽箭头表示数据流,ADdata[15..0]是与A/D转换连接的数据总线,CFdata[15:0]是与CF卡连接的数据总线。单线箭头表示输入输出及FPGA内部各个模块间的控制信号线。从数据流向看,数据在ADC接口控制状态机的协调下通过ADC接口送入FIFO中,经过FIFO的缓冲后,在CF卡控制状态机的协调下,数据传输存储到CF卡;当CF卡存储满时,FPGA通过ADC状态机停止A/D的采集,并提示用户更换CF卡。 2.2.2数据双缓存器FIFO 由于与CF卡接口的数据传输方式是突发的数据块传送,每个数据块是用很高的速率传送到CF卡,这样就必须有缓存把A/D采集来的数据先缓存,然后发送到CF卡进行存储。然而FPGA内部的FIFO不足以支持系统中大量数据的暂时存储,这就要求很大的中间缓存。在本系统中利用FPGA对外部SDRAM的控制,以达到大量高速存取数据的功能。SDRAM选用MICRON公司的MT48LC4M32B2,存储容量为128MB,数据带宽为32位,内部由4个BANK组成,每个BANK有4096行和256列。

图2 数据采集与传输控制结构示意图
图2 数据采集与传输控制结构示意图

本文设计的FIFO系统由FPGA和SDRAM两部分组成。其中FPGA内部包含FIFO监控器、缓冲器、SDRAM控制器三个模块。FIFO监控器的作用是将SDRAM的状态转变成SDRAM控制器的读、写信号。若操作为向SDRAM写数据,则在SDRAM满时,FIFO监控器送出一个信号,以阻止写操作继续向SDRAM中写数据而造成溢出;若操作为向SDRAM读数据,则在缓冲器已空时,FIFO监控器送出一个信号,以阻止读操作继续从SDRAM中读数据而造成无效数据的读出。FIFO系统的模块结构如图3所示。

图3 FIFO模块结构示意图
图3 FIFO模块结构示意图

【分页导航】
2.3接口电路设计 2.3.1FPGA内ADC接口模块的设计 对A/D转换器的编程,主要是FPGA对ADS8515的控制信号进行写逻辑,其接口示意图如图4所示。

图4 A/D转换模块接口示意图
图4 A/D转换模块接口示意图

2.3.2FPGA内CF卡接口控制状态机的设计 CF卡有三种访问方式,分别为I/O模式、Memory模式和TrueIDE模式。本系统采用TrueIDE模式访问CF卡。需要在电源加电启动时将OE接地,见图5,让CF卡工作在TrueIDE模式。当CSEL输入信号接地时,CF卡工作方式为主模式;CSEL输入信号接高电平时,CF卡工作方式为从模式。本系统中将CF卡配置成从模式工作方式。当采用TrueIDE访问模式工作时,第3位到第10位地址线接地,WE信号接高电平。

图5 FPGA与CF卡接口示意图
图5 FPGA与CF卡接口示意图

【分页导航】
3软件设计 CF卡的数据存储以扇区为基本单位。系统向CF卡写入一个扇区的数据,如图6所示。首先根据控制命令设定16位工作模式,设置将写入的扇区数目、相应地址和访问模式,然后发送写命令,等待CF卡准备就绪后,从数据缓冲区SDRAM写入CF卡中。

图6 向CF卡写数据流程图
图6 向CF卡写数据流程图

4结束语 基于FPGA的高速大容量低成本数据采集系统以FPGA作为桥梁,控制片外高速SDRAM缓冲器,以CF卡作为大容量存储介质,既利用了FPGA的内部资源丰富和设计方便的优点,同时利用了CF卡容量大、体积小和价格低廉等优点,给出了高速大容量数据采集的方法,该方法已成功应用于实际系统中。 【分页导航】

文章评论2条评论)

登录后参与讨论

用户1768063 2014-7-21 10:42

txt文件中的数据如何用verilog显示呢

用户1768063 2014-7-21 10:41

有个问题我想咨询一下,我有两组数据分别存到txt文件中了,我想用verilog语言把它读出来并显示,怎么实现啊,我使用了rom结果显示数据格式不正确怎么办,谢谢回答
相关推荐阅读
用户425266 2013-11-25 14:44
FPGA全局时钟的使用
在 Xilinx 系列 FPGA 产品中,全局时钟网络是一种全局布线资源,它可以保证时钟信号到达各个目标逻辑单元的时延基本相同。其时钟分配树结构如图1所示。 针对不同类型的器件,Xilinx公司提...
我要评论
2
16
关闭 站长推荐上一条 /2 下一条