一种高速大容量图像存储装置的关键技术研究

赵俊江++张会新



摘 要: 针对高速图像采集存储要求,设计一种高速大容量存储装置。该装置以FPGA为主控芯片,以FPGA内部集成的高速串行收发器Rocket I/O GTP作为图像数据接收单元,通过FPGA控制MCB硬核操作2片DDR2 SDRAM构成兵乓缓存单元,以32片NAND FLASH组成的阵列为存储单元,采用交叉双平面页编程技术对FLASH进行数据存储。实现了对3个速率为50 MB/s的图像通道数据实时采集存储。通过对FLASH阵列中的图像数据进行回读分析,测试结果无误,验证了系统功能的有效性和可靠性。
关键词: 图像存储; Rocket I/O GTP; DDR2 SDRAM; 乒乓缓存; 交叉双平面页编程
中图分类号: TN911.73?34; TP274 文献标识码: A 文章编号: 1004?373X(2017)12?0144?04
Abstract: Aiming at the high?speed image acquisition and storage requirements, a high?speed and large?capacity storage device was designed. The FPGA is regarded as the main?control chip of the device. The high?speed serial transceiver Rocket I/O GTP integrated into FPGA is taken as the image data receiving unit. The MCB hard?core is controlled with FPGA to operate two chips of DDR2 SDRAM to compose the ping?pong buffer unit. The array composed of 32 NAND FLASHs is employed as the memory cell. The interleave two?plane page programming technology is used to storage data in FLASH. The real?time data acquisition and storage of three image channels in the speed of 50 MB/s were realized.. The read?back analysis is performed for image data in FLASH array to verify the validity and reliability of the system with correct test results.
Keywords: image storage; Rocket I/O GTP; DDR2 SDRAM; ping?pong buffer; interleave two?plane page programming
随着数字化信息时代的到来,高速信息采集存储的要求越来越高,尤其是在航空、航天领域。在飞行器的试验、改进过程当中,需要对环境模拟量、飞行状态做出准确分析,这就需要对试验过程中大量的视频图像进行采集和存储,通过大量的视频图像和试验数据分析来对飞行器改进提供可靠的依据。如今由于对飞行器的各项性能指标参数要求越来越高,需要记录的视频图像数据越来越大,速度越来越快,因此设计一种具有接收速度快、容量大、体积小数据存储装置势在必行[1]。
本文旨在设计一种高速图像数据存储装置。以FPGA作为主控芯片,采用FPGA内部集成的高速串行收发器Rocket I/O GTP作为接收单元,相较于使用LVDS串化芯片,集成度更高、速度更快,单个链路的数据速率可达3.125 Gb/s,同时,Aurora协议 IP 核集成在Rocket I/O中,也使得可靠性更高,提高了开发效率[2];流水线操作实现2片DDR2 SDRAM的乒乓操作也使得缓存高速图像数据流成为可能。32片NAND FLASH构成的存储阵列,实现了大容量存储。该装置具有很好的发展前景,能够满足航空、航天及工业等领域的大数据量记录要求。
1 总体设计方案
结合本系统图像数据传输要求以及当前存储器的发展趋势,图像接收部分采用Rocket I/O GTP为解决方案,高速缓存单元对2片DDR2 SDRAM进行乒乓操作,实现高速数据流的缓存。32片FLASH存储阵列作为图像数据存储单元,对8片FLASH进行并行操作,通过流水线设计对4组存储芯片同时进行并行读、写和擦除操作,读写速率约可达240 MB/s实现高速存取。总体设计思路为:从接收单元采集高速图像数据,将数据进行串并转换转化成并行数据写入到高速缓存单元;缓存单元通过乒乓操作对高速数据流进行缓存,保证数据流在存储单元中的实时性和完整性;并行操作32片FLASH组成的存储阵列,对缓存单元输出的高速数据流进行存储,实现图像的实时高速存储。总体功能组成原理框图如图1所示。
本系统要求实现对三路高速图像数据的采集存储,图像传输接口采用LVDS接口,速率达393.216 Mb/s,图像像素为640×480,速率为80 f/s。每一路图像的带宽为50 MB/s,总的存储量达到128 GB,满足连续存储和超阈值存储两种模式要求。本系统用到的关键技术主要有:高速图像的接收单元设计;高速数据流的乒乓缓冲;大数据量的实时存储。
2 关键技术
2.1 图像接收单元
通常的LVDS解串芯片增加了系统功耗以及布线难度。本方案中选用的FPGA内嵌了Rocket I/O GTP的硬核IP模块,采用CML,CDR,8 B/10 B线路编码和预加重等技术,最大限度地减小信号的衰减、時钟扭曲,简化同步转化输出,保证信号完整性。Rocket I/O支持多种通信协议标准,包括Aurora、PCI?E、光纤通道、千兆以太网等。本系统中通过预设的Aurora协议实现通用标准接口,其链路结构图如图2所示。
Aurora IP 核内嵌在Rocket I/O 模块中,IP核的参数化设计使得用户调用更加方便,提高了信号的可操作性。通过调用IP核改变Rocket I/O 中复杂的控制结构,硬核控制模块通过ISE中的CORE Generator 进行创建和配置,包括8 B/10 B编码选择、COMMA字符对齐等参数设置[3?4]。本系统用verilog HDL硬件描述语言对Rocket I/O GTP收发器进行封装,封装后的模块类似于一个FIFO接口,封装后的模块原理框图如图3所示。
图3中gtp_module为顶层模块,内部分为两个模块:tx_module(发送模块)和rx_module(接收模块)。tx_module内部包含TCFIFO和TXFIFO,TCFIFO功能是接收并解析命令,TXFIFO则接收将要发送的数据。rx_module负责缓存接收到的数据。发送数据时,首先判断TCFIFO和TXFIFO满标志,非满则发送数据,并写入命令,通信协议中规定了发送数据的长度、接收类型,然后写入将要发送的数据。接收数据与发送数据过程类似,命令解析之后用户可以从RXFIFO读出接收的数据。
2.2 高速缓存单元设计
本系统中的存储器接收的图像速率较快,必须通过大容量高速缓存单元对数据进行缓存。该存储器还要求超阈值采集模式,即要记录超阈值时刻前后1 s的数据,三个图像通道总数据量为150 MB/s,那么存储器就必须要有大于150 MB的缓存单元。本文中由2片容量为256 MB的DDR2 SDRAM构成乒乓缓存,通过流水线设计完成FPGA对2片DDR2 SDRAM的乒乓操作。通过流水线操作可以充分利用电路之间的等待时间,高效完成海量实时数据的无缝缓冲和传输[5]。DDR2 SDRAM乒乓缓存单元结构如图4所示。
FPGA中集成了控制DDR2 SDRAM的硬核控制器MCB(Memory Controller Bank),通過MIG生成的IP核对MT47H256M8进行控制。然后用Verilog HDL硬件描述语言对该控制器进行封装,封装后的模块近似于标准的FIFO接口,分为读通道、写通道和命令通道,用户只要根据空、满信号对这两个通道进行操作即可[6]。
系统上电后,DDR2 SDRAM控制器首先发送指令完成DDR2 SDRAM的初始化,然后进入空闲状态。当有图像数据流输入时,数据逻辑控制器先将数据写入FIFO1并等待SDRAM1控制器写标志位触发,一旦触发就开始向SDRAM1控制器中写数据,并对写地址进行计数,同时向SDRAM1控制器发出读请求,当达到设定的存储容量时,控制器向数据逻辑控制器发送满信号暂停写入;在开始读取SDRAM1中的数据的同时向SDRAM2发出写请求,一但收到SDRAM2非空的信号,则开始将数据写入到FIFO2中,同时等待SDRAM2的读请求;当从SDRAM2中读取数据时,数据逻辑控制器向SDRAM1发送写请求,这样通过流水线设计思想保证数据连续地输入/输出,实现数据的无缝缓冲。
2.3 图像数据存储
NAND FLASH写速度和擦除速度远高于NOR FLASH,且数据保存时间可达10年,存储高速大容量数据首选NAND FLASH。本文中选用的NAND FLASH芯片K9WBG08U1M内部有4 GB的存储plane,每个plane包含2 048块和4 KB的寄存器,每块为64页,这就允许芯片在页编程的同时进行块擦除操作[7],内部结构见图5。
NAND FALASH有页编程(Page Program)、交叉双平面页编程(Interleave Two?plane Page Program)等存取方式。页编程方式中,典型的页编程时间为200 μs,最大需要700 μs。每页为4 KB,写周期最小为25 ns,写完一块的时间约为102 μs。写完之后还需要200 μs的等待时间才能把数据写入到FLASH中,平均写入速度不超过12 MB/s,无法达到本系统要求。因此采用交叉双平面编程方法,该方法是写入数据速度最快的编程方法。这种编程方式基于流水线的工作原理,对K9WBG08U1M不同平面按节拍、时序进行操作,增大了数据流的吞吐量,加快缓存速度[8?9],具体的操作时序如图6所示。进行交叉双平面页编程时,首先将FLASH内部分为4组, chip1中的plane0和plane1为第0组,plane2和plane3为第1组,chip2中的plane0和plane1为第2组,plane2和plane3为第3组,用Verilog编程过程中,定义了一个flag信号对4组存储平面按照流水线操作思想进行平面切换,特别要注意的是,在使用交叉双平面页编程方法中,平面操作必须严格按照本文中的分组进行,不能出现如plane0与plane2或者plane0与plane3为一组的情况。当对第0组平面进行页编程操作时,可以对另外3组的平面进行写命令、数据和地址等操作,测试单片K9WBG08U1M的存储速度最快为30 MB/s,对3组平面进行页编程完成数据写入时间为:
(6×4 096 B)÷30 MB/s=819.2 μs>700 μs
FLASH的最大页编程时间为700 μs,在完成另外3组的写命令、数据和地址操作以后,第0组的页编程必然结束,这样不同操作的时间恰好错开,缩短了数据写入FLASH的时间 ,提高了写入速度[10?12]。存储单元存储数据时对8片FLASH进行同样的写操作,整体写入速度约为240 MB/s,完全能够满足设计的要求。交叉双平面页编程如图7所示。
3 系统功能测试及结果分析
本系统首先通过上位机软件下发数据,模拟图像格式发送数据给该存储装置,进行存储,并通过USB 3.0读取装置获取数据[13],并回传给PC机用上位机软件进行分析,构成一个闭环测试系统。下发的数据帧格式为:首先是2个字节的帧头“14 6F”,中间为“01~FF”递增数据,数据体结束后紧接着是4个字节的帧计数,帧尾是“EB 90”。每帧数据共263 B,部分数据如图8(a)所示。
将NAND FLASH存储阵列中的数据读取并通过USB 3.0回传给上位机同时将数据保存至计算机的硬盘。回读的部分数据如图8(a)所示,分析结果如图8(b)所示,由软件分析可得,共读取了2 048 MB数据,总帧数为0x7C97D9,无误码及丢数情况,数据完全正确。
4 结 论
本文设计的高速图像存储装置采用高速串行收发器Rocket I/O GTP的解决方案,进行图像数据采集。Rocket I/O集成在FPGA中,高集成度也使得該存储装置的体积更小;通过FPGA内的硬核对2片DDR2 SDRAM进行乒乓操作实现高速数据流缓冲;而32片NAND FLASH存储器构成存储阵列进一步扩大了存储量,也使得该存储装置的应用范围进一步得到扩展,完成了数据接收、实时缓存和存储,实现了预定设计目标。
参考文献
[1] 赵林.大容量高速数据记录器的设计与实现[D].太原:中北大学,2014.
[2] 张守将.基于Rocket I/O的高速数据传输系统研究[D].西安:西安电子科技大学,2013.
[3] 林振华.基于PCI?X和Rocket I/O的高速数据传输系统设计[J].现代雷达,2011,33(6):49?52.
[4] 李维明,陈建军,陈星锜.基于Aurora协议的高速通信技术的研究[J].电子技术应用,2013,39(12):37?40.
[5] 刘杰,赛景波.基于DDR2 SDRAM乒乓双缓冲的高速数据收发系统设计[J].电子器件,2015,38(3):650?654.
[6] 庾志衡,叶俊明,邓迪文.基于FPGA与DDR2 SDRAM的大容量异步FIFO缓存设计[J].微型机与应用,2011,30(4):34?36.
[7] 安航行,孟令军,赵林,等.图像数据远距离传输及高速实时存储技术[J].电视技术,2013,37(3):175?178.
[8] 魏敏,刘文怡,王金陵.基于交叉双平面技术的图像采集存储系统[J].电视技术,2013,37(15):63?66.
[9] 朱知博.基于NAND FLASH的高速大容量存储系统设计[J].现代电子技术,2011,34(8):170?173.
[10] 严帅.双通道高速数据记录器中关键技术的研究[D].太原:中北大学,2012.
(上接第147页)
[11] WANG Lifeng, HU Shanqing, LIU Feng, et al. Design of high speed and large capacity storage module based on flash memory [J]. Computer engineering, 2011, 37(7): 255 ?261.
[12] 徐永刚,任国强,吴钦章.NAND FLASH高速图像记录压力测试系统[J].红外与激光工程,2013,42(10):2859?2864.
[13] 孟令军,周之丽,文波,等.基于USB 3.0的LVDS高速图像记录系统的设计[J].电子器件,2015,38(4):812?816.