基于FPGA的多通道同步数据采集存储系统的设计与实现
1 引言
现在绝大多数采集系统,只能循环采集多路信号,不能实时同步采集多通道的同一个采样点。这样不能满足对多通道信号进行相关信息的分析,而多通道同步数据采集存储系统的实现恰恰弥补了传通采集系统的不足之处。
2 系统设计方案及硬件设计
2.1 系统设计方案
该系统设计主要实现多通道同步数据的采集存储。系统上电后,FPGA主控模块控制采集模块同步采集多通道数据,把采集到的数据写到外部FIFO中。FIFO半满后,FPGA读取FIFO中的数据写入Flash存储器中。该设计方案选用FPGA作为主模块,主要是考虑FPGA现场可编程特性,使用灵活方便,能够降低硬件电路设计难度。
2.2 系统硬件设计
多通道同步数据采集存储系统结构框图如图1所示,主要包括以下部分:
(1)多通道同步数据采集模块 选用AD781采样保持器完成多通道数据采样保持,满足系统要求。A/D转换器选用16位的ADS8401,可提高采样精度,有利于分析采集数据。
(2)大容量存储模块 采用SUMSUNG公司的K9K8G08U0M型Flash作为存储器,使用IDT7206作为采集数据缓存。
(3)外围电路 主要包括晶振、电压转换器TPS70358及输入输出接口等。
其中,系统采集的重点是实现多通道数据的同步实时采集,其主要逻辑由FPGA主控模块控制。存储模块中所采用的坏块检测技术,可提高Flash存储的可靠性。
3 多通道同步数据的采集
在执行多通道同步数据采集时,其电路如图2所示。其主要工作流程:多路模拟信号经运放调理电路后进入采样保持器。在每个周期的开始,FPGA通过编程输出脉冲至采样保持器(AD781)和模拟电子开关(ADG706),也就是使用采样保持器的S/H控制信号进行多路同步采样(S/H=1)和保持(S/H=0),同时控制模拟开关的A0~A3 4个选通信号,来选通相应通道。选通后的信号同时由FPGA的控制进入A/D转换器(ADS8401)采集单路16 bit量化,最后将采集到的数据写到外部FIFO缓存器中。也就是说,FPGA通过编程定时逻辑送出脉冲至采样保持器对模拟输入采样,然后选择一个通道的模拟输入,完成A/D转换。总之FPGA提供采样保持、多路选通和A/D转换电路模块所需的各种状态和控制时序逻辑。
多通道同步数据采集模块的程序主要采用Verilog HDL语言,Verilog HDL是用于逻辑设计的硬件描述语言,并且已成为IEEE标准。FPGA重点控制Verilog HDL程序算法的实现。程序主要包括采样率计数循环控制、各路模拟开关选通的设计,帧计数以及帧标志的循环控制。采样保持器采样保持一次,经模拟开关计数循环控制,模拟开关依次选通。选通后的单路信号进行A/D转换,转换后的数据写入外部FIFO中。考虑到事后数据处理等问题,所采集的数据以一定的帧格式写入FIFO中,每一帧数据有帧计数和帧标志。每一帧的长度以及帧标志的选择,可以根据需要灵活选定。
4 多通道同步数据的存储
根据系统要求,需采用SUMSUNG公司的K9K8G08U0M型Flash作为存储器。由于1 G的Flash出厂时带有一些初始化无效块(包含一个或多个坏位的存储块),它被定义为包含一个或多个无效位的存储块,制造商不能保证这些无效块具有可靠性。由于NAND型Flash存储容量较大,难免在使用过程中出现存储单元的损坏。为保证写入数据的可靠性,为系统提供真实准确的参数,该系统存储模块采用的关键技术是Flash的坏块检测技术。系统上电后,FPGA主控模块首先对Flash进行擦除操作。在擦除过程中,对每块坏块标志位进行检测,对使用过程中又出现的坏块进行标识,以便以后使用。擦除模块具体程序流程如图3所示。
多通道同步数据采集后,数据以一定的帧格式写入Flash。在Flash执行写操作时,首先检测每块的坏块标志。如果坏块标志是非0XFF时,该块是坏块则跳过,继续检测下一块:如果坏块标志是0XFF时,则读取FIFO中的数据,写入Flash中。在对Flash执行写操作时,严格按照Flash的时序控制要求,以保证数据的准确写入。
系统中在擦除过程中对坏块进行检测或标识,在数据写入时再读取标志进行写操作,这样能够满足系统采集速度要求。如果使用的Flash容量更大并且要求速度较快,这样的操作有可能不能满足系统要求。这时可以在擦除过程中,对坏块的位置进行标识并建立坏块表并随时更新。在对Flash进行写操作时,无需先读取坏块位置的标识。只需对坏块表使用算法进行遍历即可,这样可节约对Flash进行读操作的时间,提高系统存储速度。
5 结论
详细介绍系统组成,其创新点在于采集模块的多通道同步性以及存储模块Flash的坏块检测技术。该系统已成功用于作战战场声目标识别系统中,对于其他方面的应用,此设计思想具有较强的借鉴意义。