基于FPGA的高速数据采集存储系统设计与实现

(整期优先)网络出版时间:2024-04-16
/ 2

基于FPGA的高速数据采集存储系统设计与实现

王薇、李甲林、韩润林

西安电子工程研究所 陕西省西安市710100

摘要:随着科技和信息技术的发展,数据采集与存储系统在各行各业取得了广泛的应用。然而随着人们需要采集和处理越来越多的数据,对于数据采集与存储系统的各项性能如采样频率、数据处理和存储速度等提出更高的要求,因此如何实时、高速、连续地采集和存储数据是一个关键的问题。

关键词:数据采集;FPGA;FLASH 存储器

文中将设计实现可编程采编存储系统,其存储模块采用FLASH 芯片进行双存储,以发挥其作为主要数据存储介质所具有的存储速度快、容量大、数据存储稳定等优点; 控制模块采用集成度高、功能强的逻辑器件为核心,来完成复杂的时序控制、逻辑控制和编制存储结构等功能。该系统具有速度快、容量大、灵活性高、体积小、可靠性高等优点。

一、数据采集与存储系统现状

目前数据采集和存储系统已呈现百花齐放的态势:数据采集卡提供最高实时采样速率已经达到 80GSa/s(千兆每秒)的单&多数据采集通道;采用的控制单元有MCU 、DSP 、FPGA 、ARM 、OMAP 等微控制器;存储介质有各种的 RAM、ROM、闪存卡、机械和固态硬盘等;数据输出接口有串口、并口、VGA 接口、USB 接口和网络接口等;针对不同的应用需求这四部分互相组合实现不同的应用[1]。根据每年数据采集技术趋势展望”,不难看出数据采集与存储技术发展趋势具有以下特点:

1、海量模拟数据的采集与分析。随着硬件制造工艺的提高,曾经受到 A/D 转换器采样速率的限制而不能够大量采集数据的时代已经一去不复返,数据采集取得爆发式的增长。工程师每时每刻需要采集大量的数据用于分析和监控整个物理和电气现象,比如波音喷气式发动机每运行 30 分钟就会产生 10Tb 运行信息需要采集和分析。大量采集模拟数据使得得出精确且有意义的结论变得越来越难,这需要处理器更高性能的数据吞吐量和处理能力才能完成数据分析工作。

2、不断增长的云计算和云存储。随着互联网宽带革命的爆发,云作为一个可运营的、迅速灵活部署和回收资源的智能 IT 系统迅速进入人们的视野并引起高度的重视。对于数据采集与存储系统而言,人们采集到的大量数据不用再保存到本地的计算机中进行数据计算和存储,而是通过网络接口上传到云端,利用云技术来完成庞大数据的处理和数据存储功能,不但方便、高效、安全还可以有效降低系统成本。通过云技术的应用,还可以方便不同地区的工作人员对相关数据的访问、交互管理和下载。

二、基于 FPGA 的高速实时数据采集存储系统设计

系统以 FPGA 为主控单元,完成一路高速 10 MbpsPCM 数据码流和一路 3. 75 Mbps 异步串行图像数据的接收和存储。将采集的数据分别存储到两片类型为 NAND,存储容量 是 2G bit 的存储器K9F2G08U0M 中,通过上位机发送软控制解码命令选择读取哪个存储器中的数据。为了可靠获取存储器状态,存储器自行以数据形式记录其工作状态。存储器与地面测试台、计算机配合完成数据存储过程中的联机实时监测与数据记录、分析等工作。其中启动记录命令来自硬启动信号,启动读数命令来自上位机下发。远程数据做为系统自检时回读数据使用,发送采用异步串行规范,差分驱动接口传输。

1、系统硬件设计

(1)高速数据解调电路设计。脉冲编码调制( PCM) 是一种对模拟信号数字化的取样技术,将模拟信号变换为数字信号的编码方式。系统接收到的PCM 信号是由码同步信号和遥测数据组成,其形成过程是: 传感器信号通过遥测信号 PCM 编码器在可编程控制端口的控制下,按照规定码速率中的帧格式对来自遥测信号调制器的传感器信号进行量化、编码,形成串行 PCM。整个数据解调系统工作原理为: 串行 PCM 数据码流在码同步信号的作用下,通过移位寄存器转换为 8 路并行数据,同时图像数据在异步串行解码时钟的控制下通过异步串行解码输出。两路解码数据在控制电路的配合下存入数据缓冲器FIFO1 和 FIFO2 中,FIFO1 和 FIFO2 同时对两路解码数据进行缓存。在需要进行实时监测处理时,上位机下发软控制解码命令,发送实时监测指令; 利用剩余时间将缓冲存储器中的数据读到 SRAM 缓存区,存储器与测试台和上位机相联,对数据进行实时监测处理。在高速 PCM 码数据解码中FPGA 内部的 FIFO 难以满足容量要求,所以系统采用外部大容量 FIFO( IDT7207) 32K 字节进行解码数据的缓存。

(2)实时监测系统电路设计。实时监测部分作为整个采集存储系统的重要部分,主要对存储 FLASH 之前的数据进行实时监测,通过上位机软件将数据显示在软件界面上。系统中采用 CS18V40963 高速 SRAM 对监测的数据进行缓存,其有 512KB 的存储空间,可通过 FPGA控制其读写以及 19 位地址线实现所需的存储空间。

(3) FLASH 存储系统电路设计。设计采用双存储设计,即用FLASH 存储芯片同时存储采集数据的存储设计,具有可靠性高、灵活性好等特点。采用256 M × 8 BitNAND 型 FIASH 芯片 K9F2G08UOM,每片器件2 112 Mbit,按块组织划分为2 048块,每块分 64页,每页 2 K + 64 字节。2 112 KB 的典型编程时间为 300 μs,128 KB 的典型擦除时间为 2 ms. K9F2G08U0M 内部写控制器具有编程和擦除操作自动进行的功能,内部包含一个页( 2048 +64 字节) 的数据寄存器,读写的过程中是先将存储单元数据或外部数据缓存到数据寄存器中,然后再将数据读出或写入存储单元中。如果其中的一个 FLASH 存储电路出现了问题,不会影响另一个 FLASH 芯片的读写操作,此设计增强了系统的可靠性,保证了记录数据的稳定性。上位机下发读存储器指令,任意选择读取其中一片 FLASH 芯片存储的数据,增加了系统的灵活性。

2、系统软件设计

系统中 FPGA 主控部分通过 VHDL 程序设计相应功能模块,主要包括以下模块: 数据解码模块,实时监测模块,数据缓存编码模块,FLASH 读写控制模块以及上位机通讯命令接收模块。

(1)数据解码软件实现。系统采用 VHDL 程序实现完成 PCM 数据和图像数据的解码。利用 PCM 数据的格式,采用模块化程序结构完成解码,首先,上电自复位 2 ms 完成依据数据的码同步信号作为接受数据的时钟 CLOCK 的匹配,在每次码同步信号的上升沿对数据进行读取,并完成数据的串并转换。同时在异步串行解码时钟CLK 的上升沿完成图像数据的异步串行解码和串并转换。最后将解码的数据依据 FIFO 的返回标志进行缓存。

(2)实时监测模块软件设计。系统采集的数据通过解码后将数据发送给地面测试台,测试台与计算机相连对上述数据进行实时监测、存储、分析、处理、波形显示、打印等处理。从实时动态数据确认存储器的工作状态。需要实时监测时,上位机发送软控制命令; 读取到的数据先缓存到 SRAM 中,再通过地面测试台发送给上位机软件显示。在计算机中,数据管理软件采用可视化面向对象语言VB 编写。基于 FPGA 的实时监测系统在实际工作中,能动态监测存储器状态,试验运行稳定可靠。这一点是基于单片机的实时监测系统所很难达到的。

(3)数据缓存编码模块设计。写时钟/W 由 80 MHz 晶振提供脉冲波,和满标志 FF 来控制写时钟的起停,满标志无效,不能对 FIFO 存储器进行写操作。当存储器满标志/FF 为高时,写操作允许。当存储器存满一半时,在下一写时钟的下降沿置位/HF,为了防止数据的溢出,满标志/FF 会在最后一个写时钟的下降沿置为低,禁止再写入数据; 当存储器满时,内部的写指针被封锁,外部的写时钟不能影响 FIFO 存储器。FIFO1( FIFO2) 的读操作由空标志 EF 位来控制,当 FIFO1 ( FIFO2) 存储器空标志 EF 为高时( 存储器IDT7207 未空) ,允许读取存储器中的数据; 当空标志 EF 为低时,存储器为空,禁止读取存储数据。由 FPGA 控制把 从FIFO1( FIFO2) 读取的数据发送到 FLASH1( FLASH2) 中存储。在设计 FIFO 过程中,读 FIFO 的时钟信号必须大于写 FIFO 的时钟信号,否则,将会导致 FIFO 溢出,采集数据丢失。

在整个系统调试中,存储器系统设计采用FLASH 芯片的双存储设计,与单存储器相比具有可靠性高、灵活性好等特点特点。对 FLASH 进行读写操作,以及能够有效的对不同数据进行采集和存储,并且能够达到对数据进行实时监测的目的。

参考文献:

[1] 李永丽,周海斌. 静态时序分析在高速 FPGA 设计中的应用[J]. 电子工程师,2020,31( 11) : 41-44.

[2] 林昌辉,樊晓桠. FPGA 设计中优化时序的原则与方法[J].微处理机,2020( 3) : 6-13.

[3] 舒文丽,吴云峰,孙长胜. 基于 NAND Flash 的海量存储器的设计[J]. 电子器件,2019,35( 1) : 107-110.