浮点乘法是影响转换效率的关键,而使用查找表法避免了浮点乘法的运算,使转换效率提高了1个数量级。要支持高清格式30f/s实时转换,转换时间要低于33ms,加之数据存储的延时,用查找表构造转换模块是必要的。用查找表法实现的模块结构如图6所示。
通过构造RAM1~RAM5五个查找表映射单元,把输入的信号分别按式(4)的方式计算出RGB相应的结果,直接送给显示缓存寄存器。本文用的测试平台是Altera DE2-70开发板,系统结构如图7所示,内部主要分为数据重组模块、查找表模块、控制模块和显示模块。数据重组模块能通过设置不同的分辨率和YCbCr格式把YCbCr数据分别提取储存在三个FIFO中,查找表模块负责通过FIFO中Y、Cr、Cb的值输出浮点乘法的运算结果,再加减运算后输出转换后RGB24位的值。控制模块负责控制码流的播放、暂停和存储回放等扩展功能。显示模块负责驱动码流到VGA显示。
2.2 系统验证
2.2.1 数据验证
系统验证包含两个部分,首先要验证不同格式的YCbCr转换为YCbCr444的码流是正确的,这部分可以先用ModelSim把转换逻辑进行仿真,分别把Y、Cb、Cr三个数据按顺序存在对应的三个FIFO中。
之后通过MATLAB的数据比较命令strcmp,将FIFO中的YCbCr444数据与MATLAB转换的数据进行比较。分别使用QCIF、CIF、HDTV三种分辨率进行随机一帧码流的验证,返回值都为1,证明转换系统可靠。
系统整体通过ModelSim仿真结果如图8所示。
在图8中,adr_y、adr_u、adr_v,为数据重组后的YCbCr地址,y_in、Cb_in、cr_in分别为待转换的数据,R_out、G_out、B_out为转换后的输出结果。ena_in和ena_out为输入使能和输出使能信号,这两个信号可以控制视频转换的启动和停止,在2个时钟周期之后就可以有显示结果出现,这仅仅需要6 μs,人眼根本感觉不到延迟,可以用在对转换速度要求较高的系统上。像素计数器为cn,在一帧图像完全转换后帧计数器counter会计数一次,通过这个可以提取完整的一帧图像进行检验。
2.2.2 FPGA系统验证
将整个系统烧录到FPGA中进行硬件验证,输入的视频编码通过SD卡读入系统,进行YCbCr格式的重组,这里选用了三种格式三种分辨率的视频编码,如图9所示分别为YCbCr420格式OCIF分辨率、YCbCr422格式CIF分辨率和YCbCr444采样格式HDTV分辨率通过YCbCr-RGB转换后某一帧图像的显示结果。显示结果表明该方法可以正确实现30f/s的不同规模和不同格式的YCbCr-RGB实时转换。
3 结语
本文基于FPGA构建硬件平台,实现不同分辨率和不同格式的YCbCr视频数据的存储、处理和VGA输出,具有结构紧凑、功能完善、配置灵活、系统稳定的特点。视频格式转换方法适用于大部分视频图像处理的通用平台,满足视频图像高精度快速实吋转换和显示的要求。可应用于多种制式视频采样数据与输出接口数据格式不匹配的场合,具有一定的应用价值。
本文关键字:规模 计算机应用,电子知识资料 - 计算机应用