基于FPGA的红外图像存储与回放系统设计
扫描二维码
随时随地手机看文章
目前,红外热像仪应用广泛,多用于侦查或监控,并且大部分红外热像仪并没有配备大容量存储器,但在一些特殊场合如导弹发射试验中的跟踪导弹的飞行轨迹,需要记录整个过程,以备事后分析。因此,基于系统设计体积和功耗考虑,这里提出一个基于FPGA的视频图像存储与回放系统设计方案。该系统采用16片1 GB NAND Flash,红外热像仪输出的每场320x240个像素点,场频50 Hz,16 bit的不压缩数字视频图像并保持至少30 min。为了扩展数据存储量,该系统还配备USB通信接口,便于将记录数据上传至计算机,或将计算机保存数据下载到该系统播放。
2 系统硬件设计
系统硬件结构框图如图1所示,FPGA将接收的视频数据编帧后送至Flash进行存储,播放时读取数据并按特定时序送至视频D/A转换器,再经D/A转换后送至电视机。USB单片机除与计算机传输数据外,还可通过I2C总线配置视频D/A转换器的寄存器以及显示控制LCD模块。
考虑到该系统FPGA的内部各模块逻辑复杂,尤其是在视频回放时需要多种控制方式,如暂停、快进快退、慢放慢退、逐场播放回放等,实现这些控制需占用较多的逻辑资源,因此,FPGA选用Xilinx公司的Spartan-IIE系列的XC2S-150E-6P0208,该器件内部逻辑高达15万门,具有48 Kbit的Block RAM,可作为FIFO。
视频D/A转换器选用ADV7175A,该器件是一款性能卓越的数字视频编码器。可将符合CCIR601 4:2:2标准的数字视频信号转换为标准的PAL/NTSC制的全电视信号,转换精度为10 bit,采用单一27MHz的时钟源,SNR最高达80 dB,其内部D/A转换器的独立开关可降低系统功耗。
根据该系统数据存储顺序进行操作,其存储器选用K9K8G08IJOM型NAND Flash。该器件的容量为8 Gbit,是由8 192个块组成,每块由64页组成,8位I/O总线作为命令、地址、数据总线分时复用。
USB通信部分选用CY7C68013A。该器件是新一代高速EZ—USB FX2.内部集成了USB 2.0收发器,其SIE(串行接口引擎)可工作在高速(480 Mh/s)传输速率下,具有USB2.0的全带宽;CPU采用增强型805l,具有更快的运行速度;简单易用的可编程逻辑接口(GPIF)为外部的FPGA提供无缝连接四;另外还具有其3.3 V的工作电压和内部集成的I2C总线控制器。
2.1 Flash读写速度的匹配
由于16片Flash并联,存储数据时,FPGA只能对一片Flash操作,又因为Flash的页编程时间过长(最大为700μs),所以存储时应在写完第一片Flash的第一页后接着写第二片Flash,当轮询完其余15片Flash后再回写第一片Flash的第二页,这样可免去页编程等待时间,如图2所示。另外还需考虑:写完15片Flash的page0的最短时间为25 ns(Flash的最小读数周期)×2 048(每页2 K字节)×15(片)=768μs,该时间大于页编程时间700μs,即写完其余15片Flash的page0后,再回写第一片Flash的pagel,而第一片Flash的页编程已结束,这样则不会造成数据丢失。
视频回放时要考虑Flash与ADV7175A之间的读数速度匹配问题。最坏情况下:ADV7175拾取数据时钟是13.5 MHz如图3所示。假设每个时钟周期都是有效数据,Flash的读数时钟周期TR最小值为25 ns,即极限读数速度为:fMAX=1/25 ns=40 MHz>13.5 MHz,满足系统要求。但Flash的页读缓冲时间tMAX=20μs,即每读取2 K字节需等待时间20μs(最大值)。要满足数据的连续性,需在Flash和ADV7175之间建立缓冲模块,则采用l KB的深度足以满足系统要求。
2.2 多段记录和选段播放
为了方便操作和观察,系统具备选段播放功能,即在记录时将不同时间段记录的内容予以分段和标记;而在播放时保证每场图像的各像素点要严格对齐,否则会造成图像错位。若要防止这种情况发生,可在记录时在每场图像数据前加一个字0xAA55作为场标志,由于每场图像的数据量为320x240x2=153 600(字节),在加入场标志后的数据流如图4所示。这样设计的优点在于:
(1)在快进、快退播放时,Flash跳地址后可检测该标志重新调整图像,另外也为数据上传后,上位机软件播放提供方便。
(2)加入场标志可实现多段记录。由于存储时确保每段视频数据的首字节都写入Flash_0的block_x(x表示block地址号)的page0的首地址,如图2中‘·’。在上电后信息扫描时只需扫描Flash_0的各block中page0的前个字节,如果是0xAA和0x55则表明新记录段,如果不是则再读取后2个字节。如果连续4个block中page0的前4个字节都是0xFF,则表明已扫描所有段,此时应将段总数和存储器的已用空间以及系统状态信息等发送至单片机进而送到LCD显示。
2.3 ADV7175与FPGA的接口设计
CCIR一601标准规定,在数字编码时,不使用A/D转换的整个动态范围,只给亮度信号分配220个量化级,黑电平对应于量化级16,白电平对应于量化级235,为每个色差信号分配224个量化级,色差信号的零电平对应于量化级128,如图5所示。即每个样本点亮度信号占220级,色度信号占225级。
由于红外热像仪提供的数据是16位灰度值而无色度值,所以应将ADV7175A的低8位(P7~P0)输入0x80,具体电路连接如图6所示,高8位输入亮度信号,播放时需将16位的亮度信号转换为8位再送入ADV7l75A。
3 FPGA逻辑设计
图7为FPGA内部各逻辑功能模块框图。各模块主要功能如下:RECV模块根据红外热像仪提供的特定时序接收数据并编帧;Flash控制器控制16片Flash,用于扫描无效块和记录段,计算Flash已用空间和剩余空间及对Flash的擦除和读写操作;信息记录表负责记录Flash控制器传送的无效块号及已记录的段总数和各段的起始地址与结束地址;灰度调节模块将16位的灰度图像数据转化为8位,因为ADV7175A最多可输入8位灰度信息;PALl模块控制ADV7175A;PAL2模块生成原格式的行场时序,主要的控制信号是行同步信号(Hsync)和场同步信号(Vsync);FIF01和FIF02作为数据缓冲模块;TO一68013模块可在系统与计算机通信时互换TO一68013A的数据;还可向68013A发送一些需要显示的实时信息;键盘的扫描及按键的去抖则由键值处理模块完成.最后由CPU模块协调各子模块工作。
4 结语
该系统采用FPGA作为主控制器,对于不同分辨率的红外图像数据,只需修改FPGA中的RECV模块和PAL模块程序即可,因此,该系统设计具有一定的灵活性。