遥测记录装置高速数据存储系统设计*
2017-11-17赵冬青李治华甄国涌刘东海杨文豪
赵冬青,李治华,甄国涌,刘东海,杨文豪
(中北大学电子测试技术国家重点实验室,太原 030051)
遥测记录装置高速数据存储系统设计*
赵冬青,李治华,甄国涌,刘东海,杨文豪
(中北大学电子测试技术国家重点实验室,太原 030051)
针对遥测系统数据记录装置中,高速数据传输速率和存储速率不匹配问题,提出了一种基于FPGA控制的NAND FLASH阵列实现一种高速流水线式存储方案。在逻辑设计上,采用交替双平面交叉编程的分时加操作技术、基于FPGA的二级缓存技术,平均存储速率不低于59 MB/S;在硬件电路上,采用均衡加重技术,提高信号的传输质量,保证数据的可靠性;该系统已成功应用于某导弹发射回收试验,其可靠性和可行性已在工程实践中得到验证。
NAND FLASH,FPGA,高速存储,双端口RAM,可靠性
0 引言
随着数据存储被广泛应用于工业自动化、航天航空系统,对实时高速大容量存储要求越来越高。遥测数据记录装置是记录飞行器在飞行过程中状态参数,接受采编设备采集的数据并实时存储,由于数据传输实际速率高于单个存储单元的存储速率,因此,采用多个存储单元并行存储,如果不能很好地匹配数据传输与存储控制的时序与速率,会导致存储的数据出现错误。因此,需要进行综合设计。
1 总体方案设计
在工程应用中,要求LVDS接口有效数据传输速率不高于59 MB/S,设计要求存储器能够正确可靠地存储LVDS有效数据,且存储容量不低于8 GB。
总体设计框图如下页图1所示,作为存储器的核心组成部分,存储模块有LVDS接口电路、备份接口电路、串并转化芯片SN65LV1224、并串转化芯片SN65LV1023、配置芯片PROM、逻辑控制芯片FPGA、供配电模块、60M晶振以及存储芯片FLASH组成。
接口模块一方面通过均衡器及解串器将采编设备的数据转化成并行数据给FPGA,FPGA通过缓存,分组,再打包,最后写入FLASH芯片;另一方面接受测试台的指令并下发给FPGA实现对FLASH的操作。测试台也可通过备用读数接口直接读取存储的数据。
图1 总体设计框图
2 关键技术研究
2.1 分时加操作技术
根据设计要求,LVDS有效数据传输不高于59 Mb/s,为了实现数据正确可靠的传输,则要求存储器存储速率不低59 MB/s。在本设计中,选用Micron Flash MT29F32G08AFAAA作为存储芯片,存储容量为4 G。高速存储阵列设计以两片NAND FLASH芯片作为存储芯片,通过FPGA控制FLASH的使能引脚CE1和CE2实现对FLASH的(CE1)LUN0、(CE1)LUN1、(CE2)LUN0、(CE2)LUN1 逻辑控制。
由于FLASH是基于页编程和块擦除操作,其中页编程分为加载过程和自动编程过程,加载过程主要完成地址及命令的下发,自动编程则完成数据的存储[1]。FLASH每次页编程所需时间约为350 us~560 us,而在此期间不响应其他任何指令,这就严重制约了数据的持续写入,为此可充分利用LUN0和LUN1互不影响、独立操作的特性,采用流水线式操作方式实现时间的复用,即若LUN0进入页编程操作时,可以对剩下的3个LUN进行写入页寄存器操作,反之亦然,从而提高数据的吞吐量[2]。由于FLASH结构的特殊性,不同的操作方式会影响数据的存储速率,可分为以下3种:
(1)单平面编程方式:该方式是在同一时刻只对FLASH A或者FLASH B进行页编程操作,无法复用页编程时间,造成因为等待而浪费时间,其操作流程图如图2所示。
(2)交替页编程方式:该方式是在对其中一个FLASH A完成加载,并进入页编程时刻,对FLASH B进行加载,实现了时间上的复用,有效避免了因为等待而浪费时间,其操作流程图如图3:
图2 单平面编程操作流程图
图3 交替页编程操作流程图
(3)交替双平面编程方式:存储器内部存储空间有4个plane,每个plane有2 048个块以及4 k的页寄存器组成,能够单独执行页编程和块擦除操作。在执行交替双平面编程时,可以充分利用不同plane相互独立的特性,选择两个plane同时操作。假如FLASH A的LUN0为第1组plane,LUN1为第2组plane,FLASH B的 LUN0为第3组plane,LUN1为第4组plane。采用如图所示的流水线式操作技术,连续加载和页编程,大幅度地提高数据存储的速率,其操作流程图如图4所示:
图4 交替双平面编程操作流程图
首先对第1组plane执行加载操作,加载时间约为200 us,加载完成后,依次对第2组~第4组进行加载,总加载时间 t={2(4KB×t+7t)+tdbsy}×3=823.2us>200 us,其中t=1/30 MB/s,tdbsy=1 us,因此,当第4组完成了加载后,第1组已完成页编程,可以继续加载。当4组全部写完所用时间约为t={2(4KB×t+7t)+tdbsy}×3=1097.6us,因此,采用两片FLASH的存储速率约为 4 096×8×2 B/1 097.6 us=59.7 MB/s,可满足设计要求,但也因此对逻辑控制提出了更高的要求。
2.2 基于FPGA的二级缓存
针对数据总线扩展带来的逻辑控制问题,设计中充分利用FPGA丰富的内存资源和VHDL硬件语言的灵活性和可操作性,在FPGA内部构造双端口FIFO[3],实现数据缓存,提出两种解决方案:
方案1:利用FPGA构造一个8 K的FIFO。如图5为逻辑控制示意图。当存储器采集有效信号并进入存储状态时,写入FIFO的速率约为60 MB/s,当写入的数据量为4 096个Byte时,以30 MB/s的速率写到存储器(FLASH A)中,然后继续判断FIFO中缓存的数据量是否大于4 096,若大于,则以30 MB/s的速率写到存储器(FLASH B)中,依次循环判断,把有效数据写到存储器中。
图5 一级缓存逻辑控制流程图
对该方案反复测试发现,存储器在回读数据后,在某一位置发现前4 096 Byte的数据的帧计数与后4 096 Byte的帧计数出现颠倒,经分析发现是由于双端口的RAM为异步操作造成地址补偿信号offset值的误判引起的[4]。双向端口的RAM的读写时钟是异步时钟,写时钟是由LVDS解串器解串出来的恢复时钟,而读时钟则为存储模块120 MHz时钟。在逻辑设计中,回收读数是在满足地址补偿信号offset的情况下执行的,而地址补偿信号则是在120 MHz时钟下判断操作,此时地址补偿信号则可能正在发生变化导致写地址的值不稳定,offset误判,从而出现帧计数颠倒的现象。
方案2:FPGA内部采用两级缓存,采用流水线式操作实现60 MB/s的数据可靠存储。设计中前一级采用8 K的RAM构成缓存,以60 MB/s的速率写入前一级;后一级的缓存采用两个4 K的FIFO进行缓存,以30 MB/s的速率写入存储器。如图为两级缓存数据流程图。其中一/二级数据缓存切换模块采用flag标志来判断8 KRAM是否有有7 100个数据,当flag为1则二级缓存(A)可以60 MB/s的速率连续从一级缓存取出4 096个数,当写入二级缓存的数据大于100个数后,以30 MB/s的速率写到FLASH A中。同时继续判断flag是否为1,如果是则二级缓存(B)同样以60 MB/s的速率连续读取4 096个数据,当读取的数据大于100时,以30 MB/s的速率写到FLASH B中。依次循环判断,将LVDS有效数据正确可靠地交替写入到FLASH A和FLASH B中。
图6 二级缓存逻辑控制流程图
方案2的设计,是通过扩展数据总线和采用二级缓存的方法实现数据传输速率与存储速率的匹配。单个FLASH的存储速率是30 MB/s,扩展后两个FLASH的存储速率则为60 MB/s,在该方案中,既有效地避免了地址补偿信号的误判造成帧计数颠倒,又提高了存储速率,实现了数据高速可靠地存储。
存储模块一/二级缓存时序图如下页图7所示,8k_rdclk是一级缓存的读时钟,8k_data表示一级缓存数据读出的数据量,8k_addr表示一级缓存的地址;a4k_rdclk是二级缓存的写时钟,a4k_addr表示二级缓存的写地址;b4k_rdclk是二级缓存的写时钟b4k_addr表示二级缓存的写地址。
2.3 硬件可靠性设计
图7 存储模块一/二级缓存时序图
在远距离传输高速数据时,高速信号在传输介质中的衰减是存储数据产生误码的原因之一[5-6]。因此,在高速数据进行远距离传输时,为保证其传输质量,通常采用信号调理技术来针对特定数据速率和传输介质,LVDS传输时通常采用均衡加重技术。对此,可以在信号发送端采用信号驱动器,接收端采用信号均衡器,以实现信号的长距离稳定传输。
图8是利用双绞线和电缆延展芯片组进行高速数据传输原理图。LMH0001SQ和LMH0074SQ电缆延展器芯片组可以通过双绞线驱动来自FPGA芯片的串行数据流。LMH0001SQ是一种高速差分缓存器,可以用于电缆驱动,信号缓冲和转发等功能;LMH0074SQ是一种自适应均衡器,可以优化在双绞线电缆中传输数据的均衡性,速度可达125 MB/s至540 MB/s。电缆终端驱动器的信号幅值决定了自动均衡电路LMH0074SQ的性能,100 Ω差分电缆(双绞线电缆)的最佳发射幅值是±400 mv(800 Vp-p)。LMH0074SQ的能量检测电路能够对输入的信号能量进行量化,并将其反馈给自动均衡控制电路。自动均衡控制电路对原始信号和反馈信号进行比较,并根据比较结果来控制均衡滤波器,使信号的高频分量获得增益。
图8 双绞线延长传输原理图
3 结果验证
对改进后的存储器进行功能测试。为了模拟恶劣环境,将存储器、采编器放在高低温箱中,并通过测试电缆连接到测试台。测试台下发不同幅值和频率的模拟信号以及数字信号模拟飞行状态。在数据回收后,由上位机对数据进行分解处理。通过备用读数接口和采编存储数据接口回读,经大量重复测试,两者数据完全一致,证明了该设计能够正确可靠地采集、存储、回收读数,测试结果如图9所示:
图9 存储器A/B测试结果截图
4 结论
本设计中,采用交替双平面并行存储和二级缓存技术,大大提高了数据存储速率,同时采用均衡加重技术提高信号的传输质量,保证数据的可靠性和完整性,在数据高速存储和可靠回收方面有广泛的应用前景。
[1]张凯华,任勇峰,贾兴中,等.基于FPGA的高速数据存储系统优化设计[J].电子技术应用,2014,40(9):37-40.
[2]郭柳柳,甄国涌,刘东海,等.基于FPGA高速图像数据的存储及显示设计 [J]. 电子技术应用,2014,40(11):75-77.
[3]刘小杰,李明辉,樊立云,等.风电厂远程集控中心的设计与应用[J].内蒙古电力科技,2011,29(2):41-44.
[4]刘飞.小型高速图像存储系统的设计[D].西安:西安电子科技大学,2009.
[5]陆浩,王振占.高速大容量固态存储器设计[J].计算机工程,2011,37(15):226-231.
[6]马游春,张涛,李锦明.FPGA集成FIFO在过载存储测试系 统 中 的 应 用 [J]. 仪 器 仪 表 学 报 2006,27(6):2350-2351.
High-speed Data Storage System Design of Telemetering Recording Device
ZHAO Dong-qing,LI Zhi-hua,ZHEN Guo-yong,LIU Dong-hai,YANG Wen-hao
(National Key Laboratory for Electronic Measurement Technology,North University of China,Taiyuan 030051,China)
Focused on the problem that high speed data transmission rate and storage rate does not match well in data recording device of the telemetry system,a high-speed line type storage solution of NAND FLASH array based on FPGA is proposed.On the logic design,by using the alternating biplanar cross programmed load sharing technical operations and FPGA-based secondary cache technology,the average rate of data storage is better than 59 MB/S.On the hardware circuit design,the use of balanced compound technology improves the quality of signal transmission,and ensures the data reliability.The system has been successfully applied to certain missile launch recovery test,so the reliability and feasibility has been verified in practice.
NAND FLASH,FPGA,high-speed storage,dual port RAM,reliability
1002-0640(2017)10-0129-04
TP302
A
10.3969/j.issn.1002-0640.2017.10.027
2016-09-08
2016-10-07
国家自然科学基金资助项目(51275492)
赵冬青(1975- ),男,山西晋中人,副教授,硕士生导师。研究方向:高速数据采集存储及处理、应用软件开发。