刘占峰,任勇峰,李辉景,彭巧君
(中北大学 仪器科学与动态测试教育部重点实验室 电子测试技术国家重点实验室,山西 太原030051)
随着高速采集和大容量存储技术的发展,传统的低速采样和单一Flash存储结构的应用已经难以满足工业化和军事化应用。在航空、工业等领域中,数据采集和存储设备占据着很重要的地位,对多通道高速数据采集技术的应用需求也越来越广泛,对数据存储容量的要求也越来越高,特别是在需要对数据进行记录和回放分析的场合。在飞行器的飞行研制、验证和完善阶段,对飞行过程中各项参数的变化和分析具有重要作用和意义[1]。传统的数据采集和存储设备由于存在低采样率和存储量小的缺点,已难以胜任长时间数据采集与存储的任务,因此采用新的采集和存储阵列技术解决高速数据采集和大容量存储的问题显得日益重要。由于FPGA具有可灵活配置、低成本以及Flash可组成阵列的特点,对解决飞行试验中数据采集和存储的问题提供了可能。
本文提出了一种基于FPGA高采样率深存储的设计方案,并可实现飞行器在飞行过程中的各项原始数据的记录、分析和回放。而且可以通过上位机软件在计算机中读取出飞行的原始数据并将数据拆分以及绘图,供试验后进行分析。
本设计采用型号为XC3S400E的FPGA芯片作为逻辑控制单元,该芯片拥有400 K逻辑门,288 KB Block RAM,I/O数量达到了141个,其低成本、低功耗和可灵活配置的特性能够满足设计要求[2-3]。引脚支持高速数据通信,能够完成高速采集和存储接口的设计,设计总体框图如图1所示,其中信号调理电路完成模拟信号的放大和滤波,模/数转换器完成模拟信号到数字信号的转换功能。为了提高电源的抗噪声性能,在给系统模拟电路和数字电路供电之前需要经过滤波处理。存储模块由4个深存储的三星Flash组合成一个16 GB的Flash阵列,实现数据的大容量存储功能。总线接口完成与计算机之间控制指令、数据、地址等信号的通信。
图1 系统总体框图
系统工作原理:计算机通过USB总线接口给系统下发控制指令,指令在FPGA逻辑控制单元进行译码,之后完成相对应的采集、存储等操作。参数信号经过信号输入接口后进行调理和模/数转换,将采集到的数字信号存储到Flash阵列中,以备计算机对数据进行回放和分析。
采集模块主要由信号调理电路、单端转差分电路和模数转换电路三部分组成,采集模块的电路原理图如图2所示。信号调理电路的作用是把传感器输入的相对较小的电压信号进行放大,使其适合于模/数转换芯片的输入要求[4]。单端转差分电路将传感器输入的单端模拟信号转换成差分信号,以满足模/数转换芯片THS1408转换的输入信号要求[5]。FPGA控制模/数转换芯片把模拟信号转换成数字量,并将符合条件的数据进行编帧,写入16 GB Flash阵列。其中运放采用AD8028,当输入信号频率不大于1.5 MHz时,运放跟随后的波形效果仍然很好,满足设计要求。最初设计阶段,电阻R12选用10 kΩ阻值,在实际电路调试过程中发现A/D运放的容性负载随着输入信号频率的增大不断减小,当输入信号频率达到1 MHz以上时,AD8028的输入电容值C和容性负载由下式得出:
由式(1)可知,AD8028的容性输入阻抗与 R12在同一数量级,电阻R12阻值过大,会对输入信号进行分压,使得输入信号的幅值衰减。把电阻R12更换成1 kΩ以后,输入信号幅值的衰减几乎可以忽略不计,保证了信号的采集精度。THS1408采用具有三态缓冲的并行数据接口,可以直接连接到数据总线接口,通过驱动OE为低可以将数据输出使能,使得电路设计更加简单。
图2 采集模块的电路原理图
逻辑控制中心FPGA主要完成THS1408内部寄存器的初始化和数/模转换控制、数据采集的控制、数据有效性判断以及Flash阵列芯片的读写控制功能。内部程序框图如图3所示。
图3 FPGA程序实现框图
FPGA作为高速采集和深存储模块的中心控制器,主要负责控制A/D转换器、外部FIFO、Flash阵列以及内部总线间的相互通信,各个模块的作用如下:
(1)A/D控制以及FIFO写控制模块:系统上电后,该模块主动实现A/D转换器的初始化、FIFO的初始化,在采集状态下,控制A/D转换器的采样,并将数据写入FIFO中。
(2)接口控制以及FIFO读控制模块:系统上电后,将内部总线发送过来的命令转发给各个子模块,在采集状态下,读取FIFO中的数据,并对数值进行判断,满足条件时,将数据传输给Flash阵列控制模块。在读数状态下,接收Flash阵列控制模块传递过来的数据,并通过内部总线将数据通过接口模块上传给上位机,进行数据的分析、判断。
(3)Flash阵列控制模块:系统上电后,该模块对Flash无效块进行扫描,并生成列表。在擦除状态下,该模块控制Flash阵列的擦除流程;在采集状态下,该模块将前一级送过来的数据进行存储;在读数状态下,该模块读取Flash阵列中的数据,并传递给前一级模块。其FPGA具体的控制流程图如图4所示。
本设计中,存储芯片选用三星公司的K9WBG08U1M。Flash的写入过程需要进行页编程,页编程的最大时间为 700 μs, 典 型 时 间 为 200 μs, 经 实 际 测 试 页 编 程 时 间为 150 μs~250 μs。 在页编程时间内,不能对 Flash 进行操作。K9WBG08U1M拥有两个片选信号,在chip1进入编程后,对chip2进行写入操作,从而错过编程时间。K9WBG08U1M可以将内部存储空间分为4个存储平面,每个平面由2 048个块和4 KB的页寄存器组成,每个平面可以进行单独的擦除和编程操作[6]。设计中,Flash采用交替双平面编程方式,可以大大提高存储芯片的写入速度。在进行双平面操作时,必须选择plane0和plane1或者plane2和plane3同时进行操作。如令chip1中plane0和plane1为第1组,chip1中plane2和plane3为第2组,chip2中plane0和plane1为第3组,chip2中plane0和plane1为第4组,交替双平面编程方式流程图如图5所示。当写完第1组页寄存器以后,将进入200 μs的编程时间,此时再对第 2、3和 4组加载数据。当第4组加载完数据以后,第1组已经完成了编程,可以继续对第1组加载数据[7]。
图5 交替双平面编程方式流程图
为了方便对块地址的统一管理,每次上电后先扫描Flash内部无效块,并生成无效块列表,存放于FPGA内部ROM中。只要不断电,Flash的擦除、读、写操作都按照列表操作,不再进行无效块检测[8]。若对应的块地址为有效块,则将数据写入该块中。
根据THS1408的采样时序和采样率确定A/D采集时序,如图6所示。系统时钟clk为60 MHz,通过计数器对系统时钟进行十分频,产生A/D采样时钟ad_clk为6 MHz,在时钟上升沿对输入的模拟信号进行采样并进行模/数转换,在时钟下降沿输出数字量,数据输出延时25 ns。通过控制数据输出使能out_oe完成转换后的14 bit数字量的输出,并将其缓存入外部FIFO中。当符合触发条件时,将数据存入对应的16 GB Flash阵列中。
图6 A/D采集时序
为验证系统的功能,将采集与存储系统接入地面测试系统,如图7所示。
图7 地面自检测试系统
在地面检测模式下,地面测试台向系统提供模拟信号供其采集(这里提供频率为3.8 Hz的正弦模拟信号)。采集与存储系统对此正弦模拟信号进行采集、A/D转换、编帧和存储。当采集存储结束之后,地面测试台向采集和存储系统下发读数命令将系统转换存储后的数据读回测试台,并通过USB将数据上传给上位机。上位机软件对数据采集模块采回的数据进行数据处理和分析,在数据的帧校验准确无误后,对分解后的数据进行绘图分析,绘图结果如图8所示,可以清楚地看到正弦波形。通过10次连续的采集和Flash读取测试,验证了系统的可靠性和准确性。
图8 上位机软件分析数据后绘图结果
本文介绍了一种基于FPGA的高速采集和深存储的模块设计,整个设计在实现高速数据采集的同时也实现了大容量的数据存储。物理层上采用高速的模/数转换器,同时增加了放大、滤波等调理电路,在硬件电路上降低了信号的噪声,并且采用了构造Flash阵列的方法,提高了数据的存储深度。该设计已可实现采样率为6 MHz的数据采集以及高达16 GB的存储容量,并具有实现简单以及功耗低的特点,在高速数据传输应用中具有很高的应用和参考价值。
[1]姚永兴.多通道数据存储系统关键技术研究[D].太原:中北大学,2012.
[2]王杰,王诚,谢龙汉.Xiinx FPGA/CPLD设计手册[M].北京:人民邮电出版社,2011.
[3]白佳俊,孟祥勇,张德平,等.基于 W5300和FPGA的实时数据采集系统设计[J].电子技术应用,2013,39(4):19-21.
[4]郭建平,王亮,郭正刚,等.单通道信号处理的前端信号调理模块的设计[J].仪表技术与传感器,2008(9):99-101.
[5]TI.THS1408-EP data sheet[Z].2011.
[6]Samsung Electronics K9XXGO8XXM data sheet[Z].2006.
[7]李鑫旺,张丕状.基于非易失存储器的数据存储与管理方法[J].探测与控制学报,2010,32(2):3-4.
[8]文丰,赵艳利,甄国涌.基于FPGA的高速数据采集存储系统的设计[J].电子技术,2009,46(1):18-19.