基于基于FPGA高速图像数据的存储及显示设计高速图像数据的存储及显示设计
设计了一种基于FPGA控制Nand Flash阵列实现高速流水线式存储的方案。设计利用FPGA作为主控制器,通过
CameraLink输入通信接口将图像数据经过一/二级缓存写入Flash存储阵列中,并采用DMA传输技术将存储后的
图像数据上传至计算机硬盘中作进一步处理;同时,利用SDRAM显存实时刷新数据,FPGA构造相应的VGA信
号,最终实现100 MB/s图像数据的实时显示。
0 引言引言
随着数据存储设备被广泛应用于航空航天系统、医疗卫生、工业自动化等各行各业,对于图像设备采集的控制及实时大容
量
1 总体设计总体设计
设计的实现过程如图1所示,上位机通过PCI总线下发图像数据并将数据保存在Flash存储阵列A中;上位机指令下发
后,FPGA控制Flash A读出存储的数据并通过CameraLink1输出接口发送至信息处理器;待信息处理器处理完数据,再通过
CameraLink输入接口2将数据写入到SDRAM显存和Flash存储阵列B中,使能VGA显示后,显示控制循环读取SDRAM中的图
像数据进行显示;最后,上位机通过
2 高速数据存储管理设计高速数据存储管理设计
2.1 Nand Flash
高速存储阵列A/B单元的设计是分别以4片Micron Nand Flash芯片作为存储介质,通过FPGA完成Flash芯片读写时序的控
制[1]。Micron Flash MT29F128G08AJAAA内部含有两个CE使能端,每个使能各控制两个相互独立的LUN(4 GB),总容量
为16 GB。为便于地址管理,提高数据处理速率,单片MT29F128G08AJAAA内部块操作顺序为(CE1)LUN0、(CE1)LUN1、
(CE2)LUN0、(CE2)LUN1,当无效块检测模块检测到坏块时,当前每行4块均认为是无效块,不对其进行操作。
由于Flash芯片每次页编程都需要350 s~560 s的页编程时间,在此期间,不能对当前模块进行操作,这严重制约着持续的
数据写入。由此可充分利用每个LUN相互独立操作、互不影响的特点,采用流水线操作方式来复用编程时间,即当前LUN进入
页编程操作时,可以对剩下的3个LUN进行写入页寄存器操作,从而提高数据吞吐量[2]。假设Flash的读写周期为20 ns,将数
据写入到页寄存器所需的时间为:8 192×20 ns=163.84 s,考虑端口复用写入的地址、命令等时间约为10 s,因此对于单片
Flash而言,连续写完4个LUN共需时间为:4×(163.84+10) s=695.36 s,完成一次32 KB数据写入所需总时间最多为695.36
s+560 s=1 255.36 ,即可粗略计算出单片Flash的平均写入速率:32 KB/(1 024×1 255.36 s)=24.9 MB/s。该情况未考虑到第4
个LUN写完后,LUN1已经完成了页编程操作,可继续写入,也就是说其持续的写入速度大于24.9 MB/s。
2.2 高速数据的存储高速数据的存储
存储器存储的数据来源可分为两类:一类是Camera-
Link2接口输入的高速图像数据,另一类是上位机通过PCI总线下发的图像数据。两类数据的存储方式相同,PCI下发数据
速率小于CameraLink2接口输入的图像数据速率,时序上只需要保证CameraLink2输入的数据能写入到Flash B即可满足需