米联客(MSXBO)USB3.0 UVC摄像头实现基于FT602Q芯片方案

原创
2019/09/15 22:17
阅读数 1.1W

硬件平台:适用XILINX 7系列FPGA(没有USB3.0接口的开发板需要购买FEP USB3.0子卡)

米联客(MSXBO)技术社区: www.uisrc.com 欢迎大家给我提问!!

米联客技术社区新域名www.uisrc.com正在备案中,备案期间请继续使用老域名www.osrc.cn

1.1概述

UVC全称为USB Video Class,即:USB视频类,是一种为USB视频捕获设备定义的协议标准。是Microsoft与另外几家设备厂商联合推出的为USB视频捕获设备定义的协议标准,目前已成为USB org标准之一。支持 USB Video Class (UVC) standard 1.1可以让相机在所有的作业系统以及平台中使用(Windows, Linux, Mac etc.)。用户只需连接相机便可进行图像传输,而无需安装任何驱动程序。UVC相机最适合作为工业网络相机在视频会议、站亭系统、小型设备生产、物流业等应用中使用。

FT602是USB-to-FIFO接口SuperSpeed USB(USB 3.1 Gen 1)USB视频类(UVC)桥接芯片具有以下特点

1、支持USB 3.1 GEN 1超高速:

(5Gbps)/ USB 2.0高速(480Mbps)

2、支持USB传输类型:

控制/散装/中断

3、支持UVC 1.1版:

     支持最多4个视频输入通道

3、FIFO总线:

支持2个并行从FIFO总线协议,245 FIFO和多通道FIFO模式,数据突发速率高达400MB / s,32位并行接口

4、内置16kB FIFO数据缓冲RAM。

5、用于视频设备的内置I2C主接口

6、组态

支持多电压I / O:1.8V,2.5V和3.3V。

内部LDO 1.0V稳压器。

集成的上电复位电路。

用户可编程USB和UVC描述符。

工业工作温度范围:-40至85⁰C。

符合RoHS标准的紧凑型无铅QFN-76封装

1.2 硬件方案

1.2.1 芯片框图

2.2.2芯片封装

FT602Q的封装和FT601Q的封装是完全兼容的,而且是QFN封装,焊接方便

2.2.3 参考电路

可以看到参考电路非常简单,只需要几个电容和几个电阻就可以搞定这方案。

1.3代码结构

代码结构介绍以UVC相机,OV5640方案介绍:

其中关于FDMA的构架部分我们不再介绍,FMDA的IP在我们米联客视频缓存的方案中大量应用,具体的内容可以参考专门讲解FDMA的章节,对于FDMA使用不熟悉的,可以论坛给我们发帖。

         这里重点讲2个模块:

1、RGB2YUV-将RGB24BITS数据流转换为YUV422的数据流,

2、ft602_uvc_top配置ft602接口芯片,将YUV422的视频数据流发送给接口芯片

通过USB3.0连接线连接到PC机,形成一个照相机设备。

视频制式转换部分不再分析,我们看一下FT602的逻辑部分,结构如下:

可以看到顶层模块ft602_uvc_top.v包含了7个子模块。其中,sys_pll.v用于生成ft602模块所需的时钟,主要是生产视频时许所需的时钟27MHz (VGA), 74.25MHz (HD) and 148.5MHz (Full HD) 。

模块ft602_i2c_slv.v模拟一个IIC从机,FT602Q芯片通过该接口读取FPGA中视频信息,同时将上位机的配置信息通过该接口配置到FPGA。

模块ft602_uvc_reg.v包含了UVC协议对应的一些寄存器,关于视频制式的信息也从这里修改。

模块ft602_uvc_fsm.v是uvc在总线读写FIFO控制的状态机,四个通道,实际工程中,我们只使用一个通道。

模块Module ft602_pre_fet.v数据预读取,用于优化时序。类似于cache功能。

模块ft602_pch_inp.v为视频流处理模块,将IMG数据流转换为FT602Q对应的接口数据格式,通过FIFO缓存。

其中,ft602_patt_gen模块生成一个测试用的视频源。

模块ft602_img_rx处理IMG输入视频流数据或者前面生成的测试数据流,将视频格式的数据流转换为FT602总线对应的数据格式。

模块ft602_dclk_fifo控制双口ram,接收ft602_img_rx模块的视频流数据,同时对外提供FIFO读接口。

模块结构如下图:

注意,在我们的工程中,只是用了一个通道,也就是Video ch0 。

1.4下载测试

好的,工程结构了解后,编译工程,下载bit文件到开发板,连接板上usb3.0接口到PC机的USB3.0接口,连接IMG输入视频源。这时,就能在照相机设备中看到FT Superspeed Video Channel1的设备。

这证明我们的usb设备已经正确识别到了。

这时,打开win10系统自带的camera软件,就能看到从IMG接口输入的视频了。

但是,有时有些设备还是不能成功打开视频。这时,需要我们使用工具设置FT602Q的一些参数了。如下图:

首先,双击FT602WinUSBInstallation.exe安装驱动,安装上驱动之后就可以通过软件修改FT602的配置了。

在文件夹ConfigurationProgrammer中,打开软件FT602ChipConfigurationProg.exe

 

读取FT602Q芯片的配置信息,这里可以看到设备的基本信息,同时还包含FIFO的配置和IIC的配置,这部分基本采用默认方式就可以。点击FIFO Channel1选项卡,转到高级设置中:

注意,这里的BurstBuffer和FIFO Buffer都设置为最大的16K。同时我们也可以修改设备描述FT Superspeed Video Channel1,换成一个自定义的设备名。

高级选项中主要涉及到视频制式和处理的信息,这里我们只调整Controls选项卡下的SS Frame Info,这是因为我们做IMG传输需要使用的USB的超速传输模式。

来看一下SS Frame Info:

我们看到在视频制式信息里,已经包含了1080P 720P 640P的信息,但是,有的设备并不能直接识别哪一种分辨率,比如我们能这里使用:

OV5640设置1280X720   分辨率 60帧 时钟74.25M

9V034  设置 640X480   分辨率 60帧 时钟 25M

HDMI  设置 1920X1080 分辨率 30帧  时钟 74.25M

 

1.5 UVC OV5640相机测试

本例子中使用的是OV5640摄像头设置如下,然后将配置信息写入器件:

 

 

这样,重启是设备(重新插拔USB),就可以在视频软件中打开设备了。

1.6 UVC 9V034相机测试

 

 

1.7 UVC HDMI相机测试

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
打赏
1 评论
0 收藏
0
分享
返回顶部
顶部