基于USB2.0的视频图像处理芯片实现方案
2013-08-06 来源:DZSC
1 引言
随着计算机技术、微电子技术的高速发展,实时图像处理在多媒体、图像通信等领域有着非常广泛的应用。FPGA 芯片在集成度、容量和速度方面都达到了较高的水平,是实时图像处理的理想选择,基于FPGA 的图像处理芯片的研究已成为信息产业的新热点。USB2.0 接口是一个传输速率可以达到480Mb/s的串行接口,并由不同类型的外围设备共享这个接口总路线,基于USB2.0 的视频图像处理芯片是按照USB协议进行设计的。USB2.0 接口的面世,推动了高清数码摄像头的普及应用,加上同期宽带的飞速发展,电脑摄像头的本地和远程视频效果都有了大幅度提升。国内USB2.0 的视频图像处理芯片现在发展迅速,比如深圳的艾科创新、珠海的炬力等公司都相继推出了各自的产品。本文介绍了一种基于USB2.0 的视频图像处理芯片的实现方案,并在搭建的仿真和验证平台上,对系统进行了功能仿真和FPGA 验证,结果证实本设计达到了设计要求。
2 基于USB2.0的视频图像处理芯片的整体实现方案
基于USB2.0 视频图像处理芯片在硬件上由8 个模块组成:微处理器模块(MCU)、MCU 总线接口模块(MCU Bus Interface)、USB2.0 收发器模块(USB2.0PHY)、USB2.0 串行接口引擎模块(USB2.0 SerialInterface Engine,简称USB2.0 SIE)、数据缓冲模块(Data Buffer)、DMA 传输控制器模块(DMA)、图像处理单元 (PU) 、图像预处理单元(PPU)。其结构框图如下图1 所示。
图1 基于USB2.0 的视频图像处理芯片结构框图
其中,MCU模块、USB2.0 PHY模块和USB2.0 SIE模块使用已有的IP 核,而其它模块均采用硬件描述语言(Verilog HDL)自行设计。
MCU 模块负责协调控制整个系统的运作;MCUBus Interface 模块负责各模块的部分地址译码及相关数据的选通,以便于MCU 统一管理。USB2.0 PHY 模块负责USB 物理层的链接,并将USB2.0 的总线信号变成标准的UTMI 接口信号;USB2.0 SIE 模块负责处理USB 协议层的操作,完成USB 协议包生成和解析,以及接收来自DMA 的图像数据,并将其保存在数据缓冲模块,完成与MCU 进行的互动;DataBuffer 负责将处理后的图像数据缓存起来,以备USB 同步帧传输时取出后发送至PC;DMA 模块完成将PU 处理后的图像数据传送给USB2.0 SIE;PPU 模块完成获取来自Sensor传感器输出的图像数据,并且对数据进行各种图像方面的处理,然后将处理后的图像数据发送至PU.
3 PPU模块中核心部件的设计
PPU 模块所完成的功能主要是:(1) YCbCr4:2:2格式到YCbCr4:4:4 格式的转换;(2) RGB565 格式到RGB888 格式的转换;(3) Bayer 数据坏点修正及Bayer格式到RGB888 格式的转换。其中第三个功能是本模块的最重要的功能,本方案中采用了"两条线伪双端口+六级流水线"的方案来实现,其原理图如图2所示。
图2 Bayer 数据坏点修正及格式转换的硬件原理图。
从图2 可以知道,在本方案中把坏点修正算法与格式转换算法做在了一个模块中。坏点地址存储模块,主要是用来接收从MCU 输出的坏点信息。伪双端口RAM1、RAM2 是用来临时存储Bayer 图像中的前两行数据。而右端的六级流水线模块,它的作用是完成相应的坏点修正和格式转换。其中,六级流水线的前面五级的作用是完成3×5 窗口的坏点修正,而后面三级是为了完成3×3 窗口的格式转换。
逻辑管理模块的主要作用是统一管理六级流水线的相应操作,其内部包含一些计数器、比较器。从图中还可以看到,P24、P34 分别把数据写入了RAM1、RAM2,这主要是为了更新RAM 中的数据,使得3×6 窗口能够漫游Bayer 图像的每一个像素点。同时本设计对图像的边缘也做了很好的处理,采用镜像技术对边缘做了很好的修正。
4 PU模块中核心部件的设计
图像处理单元所要完成的功能主要有:(1)图像滤波(Image Filte);(2)对比度(Contrast);(3)亮度(Brightness);(4)饱和度(Saturation);(5)色相(Hue);(6)锐化(Sharpness);(7)伽马校正(Gamma)等。图3 给出了PU 模块中核心部件的结构,其中图像滤波功能是通过一个1×5 窗口在图像上的遍历来完成,伽马校正主要是通过对ROM 的查表来实现。
图3 PU 模块中核心部件结构图。
5 设计的仿真和验证
5.1 模块的功能仿真
主要给出了对图像预处理模块中核心部件Bayer模块的仿真验证方法,其他模块的仿真验证与此类似。
由于图像处理模块所涉及的数据量非常庞大,仅凭单一的一种或两种软件无法独立完成,所以这里仿真验证的工作是通过三个软件Xilinx ISE + ModelSim +Matlab 共同完成,图4 给出了Bayer 模块TestBench示意图,其实现的步骤主要分为以下三步:
图4 Bayer 模块TestBench 模型示意图。
(1)由MATLAB 从10 张有共同坏点位置的不同JPEG 图像中读取8bit 无符号RGB 数据,然后由相应的RGB 数据生成对应的Bayer 数据,并以10个。txt 文本文件来保留这10 张图像的Bayer 数据,这十张文本文件同坏点位置信息一起作为测试输入激励。
(2)把测试输入激励,分别输入Bayer 模块和MATLAB 模拟Bayer 模块功能的程序中,可以分别得到大量的信息,这些信息都是由。txt 文本文件来保存,其中MATLAB 模拟程序完成的功能与Bayer 模块完成的功能相同,只是两者运行的平台不同。
(3)比较由MATLAB 模拟程序与Bayer 模块所生成的大量。txt 文本文件,由于模拟程序和硬件模块具体实现的机制不同(模拟程序采用了矩阵运算,而硬件模块采用2 条线的行缓冲+六级流水线的方式实现),如果它们产生的数据一致,则可以很好的说明硬件模块完成了预期的功能, 然后再运用MATLAB 显示函数,把原始图像数据与修正后的数据以图像的形式显示出来,这样能以更加直观的形式来观察对应的图像效果。
图5 所示的三张图片是仿真验证的过程中所涉及到图片,从图中可以看到Bayer 模块的设计达到了预期的目的。
图5(a) 用于生成Bayer 数据的原始图像。
图5(b) 由Bayer 数据未作坏点修正直接复原出的图像。
图5(c) 由做了坏点修正的Bayer 数据复原出的图像。
5.2 FPGA 上的验证
5.2.1 FPGA 上验证平台的搭建
图6 所示为本设计的FPGA 验证平台示意图。
图6 FPGA 验证平台示意图。
PC 与一块USB2.0 PHY板通过USB2.0 总线连接,USB2.0 PHY 板与FPGA 开发板由标准UTMI 接口连接。Sensor 板主要是采用美光的MT9V112 sensor 板,I2C 接口主要是用于MCU 对Sensor 的控制,Data 总线包括数据总线和数据控制总线。而硬件MCU 模块、MCU Bus Interface 模块、USB2.0 SIE 模块、DMA 模块、PPU 模块和PU 模块均已综合生成FPGA 下载程序下载到FPGA 中。
5.2.2 验证过程及结果
首先在PC 端需要安装几个工具软件,用于观察USB设备描述符信息的USBViewer,用于捕捉USB 枚举信息的工具软件BusHund.按图6 所示连接所有硬件,然后,将USB2.0 PHY 板的USB 接口插入到PC的USB 插口,并打开USB 视频管理工具软件,能够看到流畅的视频图像。专用测试工具软件可以测试图像帧速率。在验证的过程中,可以看到本方案所设计的芯片支持的最大分辨率为 640×480(VGA),最大分辨率时的帧速率约为15~20fps,基本达到了设计要求。
图7 所示为PC 机上安装的USB 数据捕捉软件工具捕捉的视频图像数据,经分析这些数据证明图像数据正常传送至PC 用户。
图7 BusHound 捕捉的图像数据。
图8 是通过本系统在PC 机上使用USB 视频工具软件Cyberlink YouCam 捕捉到的图像。
图8 在本系统基础上捕捉到的图像。
由上图可以看出本设计能够稳定地输出图像,能够稳定地实现设计要求。并且经过反复的测试和评估,表明本设计达到了设计要求。表1 为经测试能够实现的主要技术指标。
表1 实现的主要技术指标
6 结束语
本文设计了一种基于USB2.0 的视频图像处理芯片,通过功能仿真和FPGA 验证,表明达到了设计要求,完成了设计任务。随着FPGA 技术不断发展,使用FPGA 处理图像信息已成为图像处理领域中的一个发展趋势,特别是在对图像处理速度有较高要求的实时图像处理系统中,FPGA 将更能体现其在速度与灵活性方面的优势。
参考文献:
[1]. ROM datasheet http://www.dzsc.com/datasheet/ROM+_1188413.html.
[2]. PC datasheet http://www.dzsc.com/datasheet/PC+_2043275.html.
[3]. VGA datasheet http://www.dzsc.com/datasheet/VGA_2568786.html.