FPGA驱动FT601实现USB3.0相机 OV5640视频采集 提供2套工程源码和QT上位机源码

news2024/12/24 8:14:23

目录

  • 1、前言
  • 2、FT601芯片解读和时序分析
    • FT601功能和硬件电路
    • FT601读时序解读
    • FT601写时序解读
  • 3、我这儿的 FT601 USB3.0通信方案
  • 4、vivado工程1--彩条视频采集传输
    • 详细设计框图及其原理
    • vivado工程解读
  • 5、vivado工程2--OV5640视频采集传输
    • 详细设计框图及其原理
    • vivado工程解读
  • 6、上板调试验证
  • 7、福利:工程代码的获取

1、前言

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

本设计用FPGA驱动FT601芯片实现USB3.0数据通信,使用同步245模式通信,提供2套vivado工程源码,一套是verilog代码生成的彩条视频经过图像三帧缓存至DDR3后读出,图像给到FT601发送出去,PC机读取FT601发来的视频,并用QT上位机接收视频并显示出来,该工程针对的是手里没有摄像头或者视频输入源的朋友;如果你手里有OV5640摄像头,那么适合第2套工程,第2套工程是采集OV5640摄像头数据,视频经过图像三帧缓存至DDR3后读出,图像给到FT601发送出去,PC机读取FT601发来的视频,并用QT上位机接收视频并显示出来;
本设计完全可以模拟和实现USB3.0相机的功能;代码编译通过后上板调试验证,可直接项目移植,适用于在校学生做毕业设计、研究生项目开发,也适用于在职工程师做项目开发,可应用于医疗、军工等行业的USB3.0通信和图像传输领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式以及上板调试的演示视频放在了文章末尾,请耐心看到最后;

2、FT601芯片解读和时序分析

FT601功能和硬件电路

FT600/601Q 的技术参数如下:
FT600&601Q 芯片是 FT 最新推出的 USB3.0 to FIFO interface IC,实现 USB3.0 与 16/32bit 并行 IO 接口之间的数据传输。
整个 USB 通信协议全部由芯片驱动自行完成,开发者无须考虑 USB 底层固件的编程。
兼容支持 USB3.0(5Gbps),向下兼容 USB2.0(480Mbps and 12Mbps)传输。
高达 8 个可配置 Endpoint. >>支持 2 种 FIFO 传输协议,最大传输可达 400MB/s。
芯片内部有 16K 字节的缓冲区,可以进行数据的大吞吐量操作。
支持远程唤醒功能。
芯片支持多种 IO 电压:1.8V,2.5V.3.3V。
通过 16bit D[O:15]或 32bit D[0:31]并行数据线和读写状态/控制线 RXF、TXE、RD、WR,加上时钟 CLK,使
能 OE 信号线就可实现与 CPU/FPGA 的数据交换。
该芯片内部集成 1.0V LDO,可提供给芯片核心部分使用。
工业级芯片,工作温度范围-40 to 85℃。
芯片框架如下:
在这里插入图片描述
外围电路设计参考如下:
在这里插入图片描述
FT600/601Q 支持的多种传输模式,其中 245 Synchronous FIFO 模式和 Multi-Channel FIFO 模式是我们最常用的模式。我们这里介绍的 demo 以 245 Synchronous FIFO 模式为例;传输模式通过GPIO引脚高低电平配置,配置真值表如下:
在这里插入图片描述

FT601读时序解读

245 Synchronous FIFO 模式读时序如下:
在这里插入图片描述
RXF_N为读数据状态信号,RXF_N为低电平期间FPGA可以读取FT601数据;
检测到RXF_N低电平后,拉低OE_N和RD_N,然后开始读数据;
检测到RXF_N高电平后,拉高OE_N和RD_N,然后退出读数据状态;

FT601写时序解读

245 Synchronous FIFO 模式写时序如下:
在这里插入图片描述
TXF_N为读数据状态信号,RXF_N为低电平期间FPGA向FT601写入数据;
检测到TXF_N低电平后,拉低WR_N,然后开始向FT601写入数据;
检测到TXF_N高电平后,拉高WR_N,然后退出写数据状态;

3、我这儿的 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

4、vivado工程1–彩条视频采集传输

开发板FPGA型号:xc7k325tffg900-2;
开发环境:vivado2022.2;
输入:彩条视频;
输出:FT601–USB3.0接口;
应用:模拟和实现USB3.0相机的功能;

详细设计框图及其原理

详细设计框图如下:
在这里插入图片描述
彩条视频:
用verilog代码生成一个VGA时序的,分辨率为1280x720@60Hz的彩条视频,完全可以模拟各种相机和视频输入设备,手里没有摄像头或者板子没有视频输入接口的兄弟可以拿这个东西去用,很实用;
FDMA图像缓存:
FDMA图像三帧缓存,经常看我文章的兄弟都知道,这是我惯用的图像缓存套路,它由FDMA控制器和FDMA构成,作用是将输入的视频缓存到DDR3里做三帧缓存后再读出来,目的是使得图像数据的输入输出跨时钟域读写,输出图像平稳无撕裂等现象;关于FDMA的详细设计说明,请参考我之前的文章:点击直接前往
FT601 模块:
就是FT601的verilog驱动代码,根据FT601芯片读写时序实现接口对接,这里很简单;关于FT601驱动的详细设计说明,请参考我之前的文章:点击直接前往
FT601 驱动:
这是官方给的FT601 驱动,文件已包含在了我提供的资料包里;
QT上位机:
基于c++的QT,调用官方API,实现USB3.0接口的视频数据实时采集并显示,我提供的资料包里有QT上位机软件和QT源码,做嵌入式软件开发的兄弟可以拿去参考;

vivado工程解读

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

5、vivado工程2–OV5640视频采集传输

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

详细设计框图及其原理

详细设计框图如下:
在这里插入图片描述
OV5640摄像头和视频采集:
OV5640分辨率为1280x720@60Hz,纯verilog实现的i2c协议实现对齐内部寄存器的配置,纯verilog实现的图像采集模块将OV5640输出视频采集为VGA时序的RGB888视频输出;
FDMA图像缓存:
FDMA图像三帧缓存,经常看我文章的兄弟都知道,这是我惯用的图像缓存套路,它由FDMA控制器和FDMA构成,作用是将输入的视频缓存到DDR3里做三帧缓存后再读出来,目的是使得图像数据的输入输出跨时钟域读写,输出图像平稳无撕裂等现象;关于FDMA的详细设计说明,请参考我之前的文章:点击直接前往
FT601 模块:
就是FT601的verilog驱动代码,根据FT601芯片读写时序实现接口对接,这里很简单;关于FT601驱动的详细设计说明,请参考我之前的文章:点击直接前往
FT601 驱动:
这是官方给的FT601 驱动,文件已包含在了我提供的资料包里;
QT上位机:
基于c++的QT,调用官方API,实现USB3.0接口的视频数据实时采集并显示,我提供的资料包里有QT上位机软件和QT源码,做嵌入式软件开发的兄弟可以拿去参考;

vivado工程解读

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

6、上板调试验证

先连接板子和电脑,然后打开QT上位机软件,资料包里的目录如下:
在这里插入图片描述
彩条工程输出QT接收结果:
在这里插入图片描述
OV5640工程输出QT接收结果:
在这里插入图片描述

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

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

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

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

相关文章

【几分醉意赠书活动 - 04期】 | 《C++、Linux、算法等系列众书》

个人主页: 几分醉意的CSDN博客主页_传送门 个人主页: 陈老板的CSDN博客主页_传送门 赠书活动 | 第四期 本期好书推荐:《C、Linux、算法等系列众书》 粉丝福利:书籍赠送:共计送出30本 参与方式:关注公众号&a…

【MySQL 数据查询】: 基本、分组、排序、聚合、分页、条件查询详解

前言 ✨欢迎来到小K的MySQL专栏,本节将为大家带来MySQL数据查询的讲解(基本、分组、排序、聚合、分页、条件查询) 目录 前言一、基本查询二、条件查询三、聚合函数(统计函数)四、分组查询五、排序查询五、分页查询六、总结 一、基本查询 MySQ…

全网最简单的软渲染器

引言 本文实现了一个包含矩阵变化、光栅化、面剔除、深度测试等功能的软渲染器。所谓软渲染器就是使用 CPU 渲染 3D 模型的程序。因此请记住我们的最终目的:将3D模型显示在屏幕上 。本文分为两个部分:预备知识、渲染器核心实现。预备知识概述了简化的渲…

可以在手机上使用的提醒事项软件有哪些

随着科技的进步,越来越多的人选择使用各种手机软件来提高自己的效率,高效率的手机软件已经成为人们生活和工作中不可或缺的一部分。其中,提醒事项软件是一种非常实用的工具,可以督促用户按时完成任务,有效防止遗忘。 …

chatgpt赋能python:如何利用Python在网上赚钱:一份SEO指南

如何利用Python在网上赚钱:一份SEO指南 随着互联网的快速发展和Python成为一种越来越受欢迎的编程语言,越来越多的人开始利用Python在网上赚取额外的收入。本篇文章将介绍一些Python工具和技术,以及SEO最佳实践,帮助你利用Python…

Spring Boot 回顾

Spring Boot 的发展是很快的,也使用了很多年。但是在工作中,还是发现了很多公司还没有怎么使用 Spring Boot,依旧是在使用 Spring MVC。于是决定复习总结一下。框架的进步和飞跃很重要,但是也不能一味追求新鲜事物,历史…

Yolo算法的演进—YoloCS有效降低特征图空间复杂度(附论文下载)

点击蓝字 关注我们 关注并星标 从此不迷路 计算机视觉研究院 公众号ID|计算机视觉研究院 学习群|扫码在主页获取加入方式 论文地址:YOLOCS: Object Detection based on Dense Channel Compression for Feature Spatial Solidification (arxiv…

【6.12 代随_55day】判断子序列、不同的子序列

判断子序列、不同的子序列 判断子序列动态规划方法图解步骤代码 不同的子序列1.方法图解步骤代码 判断子序列 力扣连接:392. 判断子序列(简单) 动态规划方法 (这道题也可以用双指针的思路来实现,时间复杂度也是O(n)…

Linux变卡cpu占用高,已装curl、wget但提示命令找不到(挖矿病毒)

现象 服务器变卡,top cpu占用非常高,但是进程占用只有1% 下载安装htop查看 看样子中了挖矿病毒 解决方式 修改/etc/hosts 把dev.fugglesoft.me 指向127.0.0.1 F9 -> enter杀掉进程 又多出来一个执行sh的,修改病毒sh,vi进去随便…

Portraiture5.0滤镜插件中文升级版本下载及功能介绍

专注人像修图,打造完美摄影作品,Portrait5.0是款最新版的人脸图像后期处理软件。它可以帮助用户快速编辑修图,提供全方面的人物美白效果,让用户可以更轻松地修图,操作简单,方便快捷,非常不错。新…

Cilium 如何处理 L7 流量

还记得在 使用 Cilium 增强 Kubernetes 网络安全 示例中,我们通过设置网络策略限制钛战机 tiefighter 访问死星 deathstar 的 /v1/exhaust-port 端点,但放行着陆请求 /v1/request-landing。在提起 Cilium 时,都说其是使用 eBPF 技术推动的用于…

心法利器[85] | 算法技术和职业规划

心法利器 本栏目主要和大家一起讨论近期自己学习的心得和体会,与大家一起成长。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。 2022年新一版的文章合集已经发布,累计已经60w字了,获取方式看这里&…

花3万买的大学申请文书,竟和ChatGPT写的一样?

正值高考毕业季,留学出国又成热门话题。眼下,选学校、写申请书是不少学生头等大事。在AI如火如荼的今年,这个老行当却有了新变化。 当学生纷纷用AI写申请书,留学机构开始缩减业务,中介用AI写文书“糊弄”学生&#xf…

哈夫曼树和哈夫曼编码

一.哈夫曼树 1.哈夫曼树 哈夫曼树是一种用于编码的树形结构。它是通过将频率最低的字符反复组合形成的二叉树,使得出现频率高的字符具有较短的二进制编码,而出现频率低的字符具有较长的编码。 在哈夫曼树中,每个叶子节点都代表一个字符&am…

chatgpt赋能python:Python图形填充颜色教程

Python图形填充颜色教程 Python是一种简单易学、高效的编程语言,广泛应用于数据分析、机器学习、Web开发等领域。其中,图形处理是Python编程领域的一个重要方面。在很多情况下,我们需要填充图形颜色来增加图形的美观程度和可读性。本文将介绍…

使用OpenCV和MediaPipe实现姿态识别!

大家好,我是小F~ MediaPipe是一款由Google开发并开源的数据流处理机器学习应用开发框架。 它是一个基于图的数据处理管线,用于构建使用了多种形式的数据源,如视频、音频、传感器数据以及任何时间序列数据。 MediaPipe通过将各个感…

表示学习(Representation Learning) Part1--Pretext Text

文章目录 Representation LearningInferring structure(推断结构) Transformation predictionRotation predictionRelative transformation prediction ReconstructionDenoising AutoencodersContext encodersColorizationSplit-brain encoders Instance…

屏幕录像视频录制编辑软件TechSmith Camtasia 2023 for Mac 简体中文版

TechSmith Camtasia for Mac 中文版 是一款专业的屏幕录像视频录制编辑软件,非常容易就可以获得精彩的截屏视频。创建引人注目的培训,演示和演示视频。Camtasia 屏幕录制软件简化,直观,让您看起来像专业人士。利用Camtasia&#x…

SpringMVC 学习总结

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 1. 什么是 Spring MVC 1.1 Spring、Spring MV…

Dockerfile创建镜像

一、Docker镜像的创建 创建镜像有三种方法,分别为【基于已有镜像创建】、【基于本地模板创建】以及【基于Dockerfile创建】。 1.1 基于现有镜像创建 (1)首先启动一个镜像,在容器里做修改docker run -it centos:7 /bin/bash …