存储技术
摘 要: 针对水下模拟船舱相关参数的高速多次采集存储任务,设计了一种基于eMMC的多通道数据采集系统。该系统以FPGA为主控芯片,控制8个通道模拟多路复用开关和8个AD转换器来实现128路信号同时采集。与传统采集系统相比,该系统以eMMC为存储单元,解决了传统的以Flash为存储模块的复杂的坏块检测与系统管理等问题。试验证明,128路数据采集存储系统的误差可控制在0.1%范围内,能够确保已存的数据可靠、有效。
当今海洋已经和太空一样成为人类探索自然的重要领域,我国水下探测设备的水平已达到一个新的高度。随着我国水下探测技术的进步,对数据采集及存储测试仪器的可靠性、高速、大容量、多通道等技术参数提出了更高的要求[1-2]。本文的128路数据采集及存储系统主要完成对水下模拟船舱相关参数的高速多次采集存储任务,以eMMC为存储单元,解决了传统的以Flash为存储模块的复杂的坏块检测与系统管理等问题。该系统可进行多次触发,采集并存储采集数据;通过读数盒与上位机通信并传输采集的试验数据。
任何测量系统都需要有精度要求,否则测量将失去意义[3-4]。128路数据采集的总采样率达到1.6 MS/s,采集编码长度为12 bit,采样精度0.1%,可重复触发,单次记录时间达到5 s。
基于eMMC的128路数据采集系统主要由数据采集模块、FPGA控制模块、eMMC存储器模块、读数盒模块、上位机5个模块组成。每进行一次触发操作,128路电压范围在±5 V的模拟信号就会通过运放跟随电路的放大后进入8个16通道模拟多路复用开关ADG506,经多路模拟开关通道选择,使接到每一个模拟开关上的16个模拟信号依次送到AD转换驱动芯片AD823中,进行信号调理后由AD转换器AD7495进行模数转换操作。转换后的数字信号在FPGA的控制下依次存储在eMMC芯片MTFC2GMDEA-0M中。一次触发操作会在eMMC中存储16 MB的数据,可以连续触发4次。最后可以通过读数盒将数据回读到上位机中,完成采集及存储的任务。系统结构框图如图1所示。
2.1 电源管理
在本系统中,需要对FPGA XC3S500E芯片进行3.3 V、2.5 V和1.2 V供电,因此需要利用电源转换芯片将5 V的电压转换到所需要的电压值。系统选用电压转换器SPX3819将电源电压转换成所需要的电压值。
2.2 模拟电路
数据采集部分在FPGA的控制下实现模拟量到数字量的转化[5-6],主要由运放调理电路、模拟开关和AD转换芯片构成。
2.2.1 放大电路设计
该128路数据采集系统运放调理电路采用的是高精度低噪声模拟信号放大器OP4177,多路信号放大的芯片OP4177具有4条互不干涉的信号放大通道,可对4路模拟信号进行同时放大。
2.2.2 模拟开关
本系统采用了16通道的模拟多路复用器ADG506A进行模拟通道的选择。通过FPGA控制ADG506A的4条地址线来决定在某一时刻送到AD转换器之中的信号是哪一位,使16路模拟信号可以依次发送到AD转换器中,大大提高了系统的集成度。
2.2.3 模数转换电路设计
本系统采用的是精度为12 bit的模数转换芯片AD7495,并采用芯片AD823作为A/D转换器的驱动芯片。电路上电后,FPGA首先会对A/D转换芯片进行参数设定,A/D转换器的驱动电压由FPGA提供,A/D转换的时钟由FPGA内部的定时器产生。AD7495芯片要求采集模拟量在-2.5 V~2.5 V之间,而考虑到实际用的模拟量一般在0 V~5 V之间,所以需要进行电压转换,使其满足AD7495的输入电压要求,保证模数转换的正确性。模数转换的驱动电路如图2所示。
2.3 存储电路
数据存储部分是整个系统中数据的载体,承担着存储由A/D转换芯片产生的数字数据的重任。128路数据采集及存储系统选用了镁光公司的MTFC2GMDEA-0M芯片作为数据存储。该器件将Nand Flash与控制器和MMC接口封装到一起,控制器负责Flash的无效块检测、读写、ECC校验等[7],大大提高了数据的读写速度。该芯片对外提供标准MMC接口,接口总线有时钟线CLK、命令线CMD、8位数据线以及复位信号线,使用起来非常方便,其电路连接图如图3所示。
在正常无故障的情况下,经过触发,系统启动数据采集后,模拟信号经过数据采集部分进行处理后转换为FPGA可以处理的数字信号,将转换完的串行数据送回FPGA内部FIFO进行缓存,并由FPGA控制将FIFO内的数据按照一定的时序写入eMMC芯片,完成数据的存储。
eMMC在传输模式之前首先进行初始化操作,初始化操作主要完成器件识别、模式配置以及擦除操作等[8-9]。具体操作流程为:(1)发送CMD0命令,复位设备;(2)发送CMD1命令,获取OCR,进入准备完毕状态;(3)发送CMD2命令,获取器件信息,进入器件识别状态;(4)发送CMD3命令,进行eMMC地址分配,进入设备待命状态;(5)发送CMD9命令,获取设备寄存器的值;(6)发送CMD7命令,进行状态转换,进入数据传输状态;(7)发送CMD19命令,发送总线测试数据;(8)发送CMD14命令,回读总线测试数据,并检验测试是否通过,系统返回传输状态。
3.1 数据写入
eMMC的数据传输模式是其主要工作模式,其读写操作都是在该模式下进行的。eMMC有单块写和多块写两种写模式,这里采用单块写模式,其对应状态转化图如图4所示。首先,在eMMC进入传输模式之后发送CMD16命令,设置写数据块长度;接着发送CMD24命令,开始单块写操作,将写FIFO数据写入eMMC,依次写入起始位、数据位、CRC16校验码与结束位。数据发送完毕后,eMMC器件会根据接收到的数据进行CRC16校验比对,校验成功后将数据存储到eMMC的Flash存储区,完成一次数据存储。
3.2 数据读取
要分析eMMC中存储的数据,就要通过上位机将读数盒数据回读到计算机,因此eMMC的读数过程需要上位机的配合完成。FPGA在接收到上位机发来的读数命令后,主动给eMMC控制器发送读数命令。首先判断eMMC后端FIFO是否写满,若写满则禁止往后端FIFO里写数;若未满,则发送CMD17命令,开始数据读操作。当检测起始位有效时,开始数据读,并对数据进行实时CRC校验,并对读取数据进行计数。当计数个数等于数据块长度时,接收端进行数据接收,并将接收到的数据的CRC校验与eMMC的CRC检验对比,判断数据接收是否正确,完成一次数据的读取操作。具体数据发送流程图如图5所示。
为了验证系统的功能实现及可靠性,分别对eMMC的写数据和读数据操作进行了在线调试。在信号输入端提供电压峰值为5 V的正弦波电压进行系统的可靠性测试。通过Chipscope进行抓图。经分析,CRC检验正确,证明数据读写正确。其数据读与数据写的测试结果如图6、图7所示。
同时,利用读数盒将存储在eMMC中的数据读取到上位机中,对数据进行直接的观察。图8为128路信号中存储在eMMC中前4路信号通过上位机读取到的信号波形。从图中可以看出,128路数据采集存储系统可以如实地反映出系统采集到的电压范围为±5 V的正弦波。经过标定后,128路数据采集存储系统的误差范围可控制在0.1%范围内。
本文设计了一种128路数据采集存储系统,以eMMC为存储单元,解决了传统的以Flash为存储模块的复杂的坏块检测与系统管理等问题。通过在线逻辑分析和上位机验证,该128路数据采集存储系统读写时序正确,误差范围可控制在0.1%范围内,能够确保已存储的数据可靠、有效,达到设计指标。
全部0条评论
快来发表一下你的评论吧 !