FPGA实现USB3.0 UVC 相机OV5640摄像头输出 基于FT602驱动 提供工程源码和QT上位机源码

news2025/5/14 23:54:07

目录

  • 1、前言
  • 2、UVC简介
  • 3、FT602芯片解读
  • 4、我这儿的 FT601 USB3.0通信方案
  • 5、详细设计方案
    • 基于FT602的UVC模块详解
  • 6、vivado工程详解
  • 7、上板调试验证
  • 8、福利:工程代码的获取

1、前言

目前USB3.0的实现方案很多,但就简单好用的角度而言,FT601/602应该是最佳方案,因为它电路设计简单,操作时序简单,软件驱动简单,官方甚至提供了包括FPGA驱动在内的丰富的驱动源码和测试软件;

本设计用FPGA驱动FT602芯片实现USB3.0UVC 相机彩条视频输出试验,使用同步245模式通信,提供vivado工程源码,采集OV5640摄像头数据,视频经过图像三帧缓存至DDR3后读出,经过RGB转YUV送入UVC模块,经FT602芯片的USB3.0接口输出到电脑主机,电脑端用FT602官方的软件接收视频,同时也可以用我们提供的QT上位机接收;
本设计完全可以模拟和实现USB3.0 UVC 相机的功能;代码编译通过后上板调试验证,可直接项目移植,适用于在校学生做毕业设计、研究生项目开发,也适用于在职工程师做项目开发,可应用于医疗、军工等行业的USB3.0 UVC 通信和图像传输领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式以及上板调试的演示视频放在了文章末尾,请耐心看到最后;

2、UVC简介

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

3、FT602芯片解读

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 个视频输入通道;
4:FIFO 总线:支持 2 个并行从 FIFO 总线协议,245 FIFO 和多通道 FIFO 模式,数据突发速率高达 400MB / s,32 位并行接口;
5:内置 16kB FIFO 数据缓冲 RAM;
6:用于视频设备的内置 I2C 主接口;
7:组态:
7.1:支持多电压 I / O:1.8V,2.5V 和 3.3V;
7.2:内部 LDO 1.0V 稳压器;
7.3:集成的上电复位电路;
7.4:用户可编程 USB 和 UVC 描述符;
7.5:工业工作温度范围:-40 至 85⁰C;
7.6:符合 RoHS 标准的紧凑型无铅 QFN-76 封装;
芯片框图如下:
在这里插入图片描述
参考电路如下:
在这里插入图片描述

4、我这儿的 FT601 USB3.0通信方案

我这儿现有的FPGA基于FT601和FT602的USB3.0通信方案主要有简单的测速方案、图像传输方案,图像传输方案包括简单的彩条传输采集、OV5640摄像头传输采集、HDMI视频采集,HDMI视频采集抓拍、USB3.0 UVC视频等等,所有工方案均包括FPGA工程和QT上位机源码;感兴趣的可以去我的FT601 USB3.0通信专栏阅读,专栏地址如下:
https://blog.csdn.net/qq_41667729/category_12339160.html?spm=1001.2014.3001.5482

5、详细设计方案

详细设计方案框图如下:
在这里插入图片描述
OV5640摄像头和视频采集:
OV5640分辨率为1280x720@60Hz,纯verilog实现的i2c协议实现对齐内部寄存器的配置,纯verilog实现的图像采集模块将OV5640输出视频采集为VGA时序的RGB888视频输出;
FDMA图像缓存:
FDMA图像三帧缓存,经常看我文章的兄弟都知道,这是我惯用的图像缓存套路,它由FDMA控制器和FDMA构成,作用是将输入的视频缓存到DDR3里做三帧缓存后再读出来,目的是使得图像数据的输入输出跨时钟域读写,输出图像平稳无撕裂等现象;关于FDMA的详细设计说明,请参考我之前的文章:点击直接前往
RGB888转YUV444:
很简单的一个模块,将RGB888转为YUV444视频,因为UVC模块输入需要YUV格式视频;

基于FT602的UVC模块详解

模块代码架构如下:
在这里插入图片描述
可以看到顶层模块 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_img_rx 处理 IMG 输入视频流数据或者前面生成的测试数据流,将视频格式的数据流转换为 FT602 总线对应的数据格式。
模块 ft602_dclk_fifo 控制双口 ram,接收 ft602_img_rx 模块的视频流数据,同时对外提供 FIFO 读接口。模块结构如下图:本设计只是用了一个通道 Video ch0;
在这里插入图片描述
FT602 驱动和QT上位机:
FT602 驱动由官方提供,QT上位机采用C++语言编写,实时采集USB3.0接口的视频数据并显示;我提供的资料包里有QT上位机软件和QT源码,做嵌入式软件开发的兄弟可以拿去参考;

6、vivado工程详解

开发板FPGA型号:xc7k325tffg900-2;
开发环境:vivado2022.2;
输入:OV5640摄像头 720P分辨率;
输出:FT602–USB3.0接口;
应用:模拟和实现 USB3.0 UVC 相机的功能;

工程Block Design如下:
在这里插入图片描述
综合后的工程代码架构如下:
在这里插入图片描述
综合编译完成后的FPGA资源消耗和功耗预估如下:
在这里插入图片描述

7、上板调试验证

上板调试需要安装FT602官方驱动,还需要软件的配置,鉴于篇幅原因,我专门写了一篇调试使用的文档,并放在了资料包里,路径如下,调试时请参考使用和调试手册,如下:
在这里插入图片描述
最后的输出效果如下:
在这里插入图片描述

8、福利:工程代码的获取

福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料获取方式1:私,或者文章末尾的V名片。
网盘资料如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/648392.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023 年 8 个最佳 React UI 组件库和框架

将展示八个最好的 React UI 组件库和框架,如下表所示:(星标加关注,开车不迷路) 「React Bootstrap:」一个与 Bootstrap 框架集成的实用的 React UI 库。「Grommet:」如果您想在设计中实现可访问…

基于Servlet+mysql+jsp学生宿舍信息管理系统

基于Servletmysqljsp学生宿舍信息管理系统 一、系统介绍二、功能展示1.用户登陆2.学生-主页面3.学生-缺勤记录4.学生-修改密码5.宿舍管理员-主页面6.宿舍管理员-学生查看7.宿舍管理员-缺勤记录8.系统管理员-宿舍管理员管理9.系统管理员-学生管理10.系统管理员-宿舍楼管理11.系统…

中高级前端面试秘籍,为你保驾护航金三银四

引言 各位大佬在评论中指出的种种问题小弟万分感谢。由于这一年来,出了不少变动,所以才一直耽搁,现已修复各位大佬指出的问题和建议。请大家放心食用!感恩~🥳 当下,正面临着近几年来的最严重的互联网寒冬&a…

《文渊》期刊简介及投稿邮箱

《文渊》期刊简介及投稿邮箱 《文渊》是正规国家级连续型电子期刊,新闻出版广电总局可查,国家级教育核心刊物、中国核心期刊数据库收录期刊。 主管单位:中国出版传媒股份有限公司 主办单位:中国出版传媒股份有限公司 文渊&…

变量的线程安全分析

目录 变量的线程安全 常见线程安全类 变量的线程安全 成员变量和静态变量是否线程安全? 如果它们没有共享,则线程安全 如果它们被共享了,根据它们的状态是否能够改变,又分两种情况 如果只有读操作,则线程安全如果…

【30天熟悉Go语言】7 Go流程控制之分支结构if、switch

文章目录 一、前言二、if1、单分支Go语法规范: 2、双分支Go语法规范 3、多分支 三、switch1、基本语法2、语法规范1)switch2)case3)default 四、总结 一、前言 Go系列文章: GO开篇:手握Java走进Golang的世界…

手机APP大用户并发测试

一、背景 随着智能手机近年来的快速增长,从游戏娱乐到移动办公的各式各样的手机APP软件渗透到我们的生活中,对于大型的手机APP测试不仅要关注它的功能性、易用性还要关注它的性能,最近发现LoadRunner12可以对手机APP做性能测试,但…

寻味一座城,从吃吃吃开始

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 小黑 运营 / SandLiu 卷圈 监制 / 姝琦 文案 / 小黑 产品统筹 / bobo 场地支持 / 声湃轩天津站 为了再也不用在节目里喊“我们真的不是美食节目”,2023年7月起,原汤话原食将更名为“记者下班”…

记录--极致舒适的Vue可编辑表格

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 使用ElementPlus的Table啥都好,就是没有可编辑表格!!!😭 既然UI库不支持,那我们实现一个可编辑表格是很难的事么?&am…

Avalon 学习系列(五)—— 过滤器

Avalon 本身有很多过滤器,例如 date、number等文本过滤器、循环过滤器;avalon 也提供了方法可以根据需求自定义过滤器。 示例: (1)定义一个 myFunc 的个性化过滤器,并加在元素上; &#xff0…

一文带你玩转 RustChinaConf 2023,内含赞助商展位活动福利和 Workshop 介绍

除了两天干货满满的会议外,RustChinaConf 的赞助商也准备了精美的周边礼物等待大家去打卡。每位参会者在签到的时候会获得一张集章卡,集齐上面所有的章,可至签到处兑换精美礼物一份。偷偷剧透一下,奖品有大家喜欢的 Rust 小螃蟹玩…

【计算机网络】第一章 概述(上)

文章目录 第一章 概述1.2 因特网概述1.2.1 网络、互连网(互联网)和因特网1.2.2 因特网发展的三个阶段1.2.4 因特网的组成 1.3 三种交换方式1.3.1 电路交换1.3.2 分组交换1.3.3 报文交换1.3.4 三种方式对比 1.4 计算机网络的定义 第一章 概述 1.2 因特网概…

「深度学习之优化算法」笔记(二)优化算法的分类

1. 优化算法的分类 1.1常见的优化算法 在分类之前,我们先列举一下常见的优化算法(不然我们拿什么分类呢?) 1.遗传算法Genetic algorithm 2.粒子群优化算法Particle Swarm Optimization 3.差分进化算法Differential Evolution 4.人…

springboot第27集:springboot-mvc,WxPay

在数据库中,DISTINCT 关键字用于查询去重后的结果集。它用于从查询结果中去除重复的行,只返回唯一的行。 要使用 DISTINCT 关键字,可以将其放置在 SELECT 关键字之前,指示数据库返回去重后的结果。 请注意,DISTINCT 关…

Linux常用命令——getenforce命令

在线Linux命令查询工具 getenforce 显示当前SELinux的应用模式,是强制、执行还是停用。 补充说明 grename命令可以重命名卷组的名称。 语法 getenforce例子 查看当前SELinux的应用模式。 [rootlocalhost ~]# getenforce Enforcing在线Linux命令查询工具 原文…

ChatGPT时代,我的新书《智慧共生》上市了

告诉你一个好消息,我在人民邮电出版社的第二本书《智慧共生:ChatGPT 与 AIGC 生产力工具实践》刚刚上市,你现在就可以在 京东 和 当当买到了。 有人把 2022 年称作 AIGC(人工智能生成内容) 的元年,我深表赞…

浅谈数据中台之数据开发

目 录 01 前言‍ 02 中台概念及背景 ‍‍‍‍‍‍‍ 03 数据中台建设方法‍‍‍‍‍‍ 04 数据开发实践 01‍ 前言‍‍ 2015年阿里在国内首次提出了中台概念,由阿里引领发展,迅速在互联网企业中形成了一股浪潮。在数字化转型的道路上,为了…

【AUTOSAR】UDS协议的代码分析与解读(五)----ECU诊断服务

8 诊断服务 8.1 总览 此章节定义了本规范中可使用的诊断服务及其执行规则。 下表列出了h事业部定义的所有UDS诊断服务。ECU最终实现与下述定义不符之处必须得到h事业部 的认可。服务实现内容需在零部件诊断规范中详细说明。 表 9 诊断服务支持列表 诊断服务列表 APP Bootlo…

【手撕代码】同步 FIFO、LIFO/Stack

FIFO 是FPGA设计中最有用的模块之一。FIFO 在模块之间提供简单的握手和同步机制,是设计人员将数据从一个模块传输到另一个模块的常用选择。 在这篇文章中,展示了一个简单的 RTL 同步 FIFO,可以直接在自己的设计中配置和使用它,该设…

社区供稿 | RLHF 实践中的框架使用与一些坑 (TRL, LMFlow)

1 前言 之前看见文章总结了常见的一些 RLHF 框架的经验, 但是似乎没看见 Hugging Face 自己维护的 TRL 库的相关文章, 正好最近调 TRL 比较多, 就想写一个文章分享一下使用过程中踩到的坑,另外也介绍一下我们的全流程框架 LMFlow 。 LMFlow 框架示意图。 我们主要用…