集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 2048|回复: 1

基于FPGA的海量数据采集系统设计

[复制链接]
zhiweiqiang33 发表于 2014-8-20 11:13:43 | 显示全部楼层 |阅读模式
最近几年,FPGA以其应用的灵活方便蓬勃发展,在通信、航空航天、医疗设备、消费类电子产品等领域一展身手。使用FPGA控制CF的技术到目前为止还没有成熟,本文从硬件和软件角度出发,介绍了FPGA与CF卡的接口设计、给出了用双RAM访问CF卡的编程,并且利用FPGA作为FIFO对AD采集的数据进行缓冲,然后存储到大容量的CF卡中。


1系统方案设计

数据存储和采集系统主要由三部分组成,CF卡的存储、FPGA的数据双缓冲器、状态寄存器和A/D转换器组成。

1)CF卡数据存储,其作用是将AD采集到的数据进行存储,当数据容量存储满时,发送满信息。FPGA得到满信息后,停止对数据的采集并提示用户更换CF卡。

2)FPGA主要利用内部的SRAM提供数据输出/输入的双缓冲作用,采用双缓冲的原因是防止数据的溢出和保证数据传输的连续性。当接收到满信息时,停止AD采集,并做出提示。

3)A/D转换器的作用,是将所要采集的模拟量转换成数字量;通过滤波和放大后,由FPGA接收、缓冲、存储至CF卡。高速AD转换器采用的是转换速率为20MHz的MAX1425.

系统工作过程为:系统通过外部一个按键的低电平给数据采集系统一个采样开始控制命令,FPGA根据该命令向AD转换器发出相应控制信号;由于ADC采样率为20MHz,为和CF卡存储速度相匹配,在FPGA内部生成一个FIFO缓存器。AD转换器在FPGA的ADC接口控制电路控制下,把模拟信号转换成数字信号,并将采样数据存入FPGA内部FIFO缓存。同时FPGA的查询CF卡是否有容量,如果CF卡未满,那么由FPGA的CF卡接口控制逻辑将采样结果从FPGA内部FIFO缓存送入CF卡中。当CF卡的容量达到一定程度后,FPGA发出满信息,向AD状态机发送停止采集的命令,并提示用户已满。由于把FPGA设置为特定的自动模式,因此FPGA控制AD采集以及把数据送往CF卡间的所有操作不需要外部干预,从而保证足够的数据传输速率。采样过程中FPGA的CF卡接口控制逻辑依次取走批量数据。在进行CF卡的数据存储时AD仍然持续转换,FPGA内部FIFO也被持续写入转换结果。

2硬件设计

系统的硬件由模数转换接口电路、数据存储与传输控制电路和接口电路构成。

2.1模数转换电路设计

模数转换接口电路是整个系统的重要组成部分,它由低通滤波器、多路选择开关和AD转换器构成。在系统中起这个作用的核心器件是AD转换芯片MAX1425.

模拟输入信号分别经过由运放THS4052构成的抗混叠低通滤波器去除高频成分,防止信号产生“混叠现象”。模数转换器MAX4125将模拟信号转换为数字信号。MAX4125的控制信号由FPGA板提供,MAX4125在控制信号的作用下,以适当的时序完成转换工作。

2.2数据采集与传输控制电路

数据采集与传输控制电路的开发工作主要集中在FPGA上。FPGA负责在CF卡与ADC芯片之间的缓冲与控制。一边与ADC接口,另一边与CF卡接口,产生数据采集、AD转换、FIFO所需的全部控制信号。实现对传输数据的缓存、读/写控制、时钟、输出使能以及对ADC的控制等功能。

2. 2.1 FPGA内部总体设计

FPGA设计内部结构由FIFO、CF卡控制状态机、ADC接口控制状态机三部分构成。

从数据流向看,数据在ADC接口控制状态机的协调下通过ADC接口送入FPGA的FIFO中,经过FIFO的缓冲后,在CF卡控制状态机的协调下,数据传输到FPGA外的CF卡;当CF卡存储满时,FPGA通过ADC状态机停止AD的采集,并提示用户更换CF卡。

2.2.2数据双缓存器FIFO

FIFO主要由三部分组成:FIFO主体、FIFO读模块、FIFO写模块。FIFO主体部分利用FPGA内部的RAM,通过coregenerator来生成所使用的FIFO.FIFO读模块、FIFO写模块主要接收外界给出的读写开始与停止脉冲信号,转换为读写请求信号,给到fifo主体中,同时读写模块会处理接口两边的时钟信号,分别反向后再作为fifo的读写时钟使用。

与CF卡连接的CF卡接口的数据传输方式是突发的数据块传送,并且数据块的大小可以设置,每个数据块是用很高的速率传送到CF卡,这样就必须有缓存把AD采集来的数据先存缓存,然后发送到CF卡,进行存储。

2.2.3 FPGA内ADC接口模块设计

MAX4125的控制信号都由FPGA产生。

FPGA的工作时钟为60MHz,该时钟经分频成20MHz提供给MAX4125作为工作时钟,同时也作为FPGA内其他逻辑的工作时钟。由FPGA内状态机控制当CS#为低和ADC_Convst为高,MAX4125进入采样保持状态。当Clock的第一个上升沿到来,MAX4125开始转换。MAX4125把转换结果放到数据总线上,FPGA开始读入10位数据(FD[15:0]中10一15六位数据线悬空,使数据线和AD的位数匹配)。完成一次转换后,当ADC_Convst再次为高,开始下一轮转换。

2.2.4 FPGA内CF卡接口控制状态机的设计CF卡的访问方式有三种,分别为I/O模式、Memory模式和True IDE模式。本系统采用TrueIDE模式访问CF卡。需要注意的是当主机电源一直接通时,拔插CF卡将会使其从原来的True IDE方式重新配置成Memory式。所以要让CF卡一直工作在True IDE模式,需要在电源加电启动时将OE输入信号接地。

当CSEL输入信号接地时,CF卡工作方式为主模式;CSEL输入信号接高电平时。CF卡工作方式为从模式。本系统中将CF卡配置成从模式工作方式。

当采用TruelDE访问模式工作时,第3位到第10位地址线需要接地,WE信号需要接高电平。

3软件设计

CF卡的数据存储以扇区为基本单位。系统读写CF卡时都是以扇区为单位进行的。为了满足系统对速度和控制连续性的要求,系统的程序设计中,利用FPGA的内部资源开辟了两块RAM,用于存储一个扇区的数据,这样从CF卡读数据到RAM和将RAM中的数据读到被控系统中就成了两个相对独立的工作过程,这样既利用了CF卡大容鼋的存储特性又利用了FPGA的工作速度快和内部资源丰富的优点。

从CF卡读取一个扇区的数据,首先根据控制命令设定16位工作模式、设置读取的扇区数目、相应地址和访问模;然后发送读命令(0x20),等待CF卡准备就绪后,从数据寄存器中连续读取一个扇区的数据放入到数据缓冲区。
zxopenljx 发表于 2021-5-28 17:34:43 | 显示全部楼层
基于FPGA的海量数据采集系统设计
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-11-16 07:56 , Processed in 0.066770 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表