基于FPGA的USB视频传输系统设计

(整期优先)网络出版时间:2014-05-15
/ 2

基于FPGA的USB视频传输系统设计

周应发

USBVideoTransmissionSystemBasedonFPGA

周应发ZHOUYing-fa;黄泽锷HUANGZe-e

(广州飒特红外股份有限公司,广州510006)

(GuangzhouSATInfraredCo.,Ltd.,Guangzhou510006,China)

摘要:本设计以高清CCD模块采集到的可见光视频图像通过USB实时传输到PC机为例,阐述USB视频系统的设计。系统使用OmniVision的OV5640CCD图像传感器作为光电成像器件,采用USB2.0控制器芯片CY7C68014A与FPGA直连,通过FPGA对高清CCD模块的视频数据进行处理并传输到USB芯片上,最后在PC机上实时显示。该设计结构简单,使用方便,便于大型系统的设计。通过该设计实现高清CCD的USB实时传输,已在相关手持设备产品中进行应用。

Abstract:Themoduleisdesignedtocapturehigh-definitionCCDvisible,andthentransferredvideoimagesviaUSBtoaPCinreal-time.ThesystemusesOmniVision'sOV5640CCDimagesensorasaphotoelectricdevice,andWithUSB2.0controllerchipCY7C68014AdirectlyconnectedwiththeFPGA.ThroughtheFPGAvideodatafromthehigh-definitionCCDmodulewasprocessedandtransferredtotheUSBchip,andfinallydisplayedonthePC.Thedesignissimple,easytouse,andfittedforlarge-scalesystems.Thedesignandimplementationofreal-timetransmissionofhigh-definitionCCDviaaUSBhavebeenconductedinthehandheldproducts.

关键词:图像传感器;USB;图像传输

Keywords:imagesensor;USB;imagetransmission

中图分类号:TP302.1文献标识码:A文章编号:1006-4311(2014)13-0192-02

0引言

随着科技发展,CCD器件及其应用技术的研究取得了惊人的进展。与CMOS器件相比,成像方面相同像素下CCD的成像通透性、明锐度都很好,色彩还原、曝光可以保证基本准确。而CMOS的产品往往通透性一般,对实物的色彩还原能力偏弱,曝光也都不太好。目前市面上绝大多数的消费级别以及高端数码相机都使用CCD作为感应器;CMOS感应器则作为低端产品应用于一些摄像头上。

USB(UniversalSerialBus)通用串行总线是一种PC机与外围设备间的高速通信接口,它具备其他总线无法比拟的优点:连接简便,即插即用;高传输速率;能够自动检测和配置外围设备。USB2.0协议其理论最高传输速度可达480Mbps,为计算机与外设的高速数据交换提供了可能,也为高分辨率动态图像采集系统提供了理想选择[1-2]。

系统采用Spartan-6系列的FPGA,该系列的FPGA为成本敏感型应用带来了低风险、低成本和低功耗的最佳平衡,与前几代器件相比,不仅功耗降低42%,同时性能提高12%。该系列不仅拥有业界领先的系统集成能力,同时还能实现适用于大批量应用的最低总成本[3-4]。由于该USB实时传输系统仅是手持设备系统中的一个组成部分,采用该FPGA有利于大系统的设计与管理。

本文中介绍如何结合FPGA技术,利用OmniVision公司的OV5640CCD图像传感器和Cypress公司的CY7C68014A控制传输芯片(内部集成了增强型51内核)来实现高速图像采集与传输。

1系统软硬件设计

系统由数据采集、传输、显示,三部分构成。并采用Spartan-6系列的FPGA,型号为XC6SLX45来进行设计。

1.1数据采集系统设计系统视频来源于高清CCD模块,模块中使用的OV5640是一款1/4英寸5百万像素的高性能图像传感器。要从该模块从获取视频图像数据涉及到两个方面,首先是给CCD模块供电,该模块必须提供三组电源2.8V,1.8V,1.5V。设计时可通过主电源(本系统主电源为3.7V)输入到线性电源芯片,产生相应的电压。在FPGA中可使用任意两根线与CCD模块的IIC接口相连。该模块供上电后,,用模拟IIC的方式对该模块寄存器进行配置[5-6]。此处将输出格式配置为8-bitYCbCr,并以640X480预览模式,30帧每秒为例。该CCD模块输出的视频数据信号与FPGA的接口如图1所示。

FPGA将从CCD模块中采集的图像数据经过处理,存放在外部DDR存储器中。

1.2数据传输,显示系统设计Cypress公司的USB芯片CY7C68014A可使最高数据传输率达到480Mbps。即USB2.0允许的最高速度。

1.2.1USB固件程序编写在USB设备与PC正常通信之前,主机必须检测并配置设备,所以用户必须编写固件程序代码,响应主机的控制请求命令,并能够提供描述符,使主机了解设备的功能,从而配置设备,开始与设备正常通信。Cypress为用户提供了一个固件程序框架firmware,它帮助用户完成了大部分与USB协议相关的工作[7]。用户根据外设功能的具体要求,在相应的函数中填写函数体可以完成开发。系统需要对USB端口及FIFO的初始化配置。通过设置相关的寄存器来设置FX2的工作状态。例如USB内核工作在USB2.0方式,由固件程序应答USB传输等。系统传输使用同步FIFO传输模式。

*

1.2.2USB驱动程序编写FX2通用驱动程序CyUSB.sys,是Cypress公司提供的通用驱动程序,系统连接PC时如果找不到设备,可按照主机驱动帮助文件[8]第14页介绍的方法.将设备的PID,VID加入到驱动中。

1.2.3USB图像传输系统设计系统传输与显示的框图如图2所示。

由于Cypress公司的EZ-USBFX2系列芯片支持一种简便的更新方式:设备在每次接入主机时,主机自动将程序代码加载到设备的程序存储器中,然后重新枚举设备。所以,系统设备使用了一片串行EEPROM,在设备接入主机时,从EEPROM中加载固件程序到设备。系统中PC与USB模块之间有4个数据传输通道,分别是:计算机发送指令数据包到USB,使用0号通道。计算机从USB读取指令执行情况,使用1号通道。计算机发送数据到USB,使用2号通道。计算机从USB读取数据,使用3号通道。这4种传输过程分别使用不同的数据通道,其中第0、1号通道叫命令通道,数据包最小为1个字节,最大是64字节;第2、3号通道叫数据通道,最小是2K(2048)字节,最大是3M字节。系统中FPGA与USB芯片通过直连的方式通信,数据传输方式使用同步FIFO接口。主要数据接口如图3所示。

当需要在PC机上实时显示图像时,用户通过在PC的应用界面上操作,从而由PC机通过命令通道发送命令给USB芯片,USB芯片又发送命令给FPGA,FPGA将从高清CCD模块获取到的图像数据不断的送往USB芯片内部FIFO,同时FPGA通过与USB连接的查空信号FIFO_Empty和查满信号FIFO_Full,决定是否可以继续往USB内部的FIFO送数据。USB芯片的作用是将FPGA传输过来的图像数据通过数据通道送往PC机的应用程序进行显示[9]。

2硬件实验结果

通过对系统相关设计详细了解后,使用上述方法进行设计,并设置OV5640为640X480预览模式,30帧每秒。PC上图像显示效果如图4所示,该系统已成功应用在公司的手持设备中。

参考文献:

[1]苏建坡,马海涛,唐玉国.基于USB2.0及GPIF的CMOS图像传感器视频实时采集系统[J].仪表技术与传感器,2006,12(09):

35-37.

[2]李杰,刘金国,王英霞等.CMOS有源图像传感器的最新研究进展[J].传感器技术,2005,24(1):7-8.

[3]Spartan-6FamilyOverview/DataSheet[M].Xilinx,2010.

[4]Spartan-6FPGAPackagingandPinouts/DataSheet[M].Xilinx,2010.

[5]杨介生.虚拟I2C总线技术实现SAA7111的初始化[J].雷达与对抗,2005(3):60-63.

[6]张冬冬.IIC总线通讯接口器件的CPLD实现[J].电子技术应用,2002(08).

[7]钱峰.EZ-USBFX2单片机原理、编程及应用[M].北京:北京航空航天大学出版社,2006.

[8]CYUSB3.SYSPROGRAMMER'SREFERENCE/DataSheet[M].Cypress,2012.

[9]基于USB2.0的CMOS图像采集系统的实现[J].微计算机信息,2009(10).