FPGA基于FT601实现USB3.0视频传输,提供11套工程源码和QT上位机源码

本文介绍了基于FT601芯片的USB3.0通信方案,包括FT601的功能、硬件电路及读写时序分析。通过两套Vivado工程展示了如何使用Verilog代码实现彩条视频和OV5640摄像头的视频采集,数据经FPGA处理后通过FT601发送至PC。同时,提供了QT上位机软件用于接收和显示视频,适用于项目开发和学术研究。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


FPGA基于FT601实现USB3.0视频传输,提供11套工程源码和QT上位机源码

1、前言

目前USB3.0的实现方案很多,但就简单好用的角度而言,FT601应该是最佳方案,因为它电路设计简单,操作时序简单,软件驱动简单,官方甚至提供了包括FPGA驱动在内的丰富的驱动源码和测试软件;本设计旨在普及传播FT601芯片在FPGA领域实现USB3.0通信应用,包括FT601芯片解读、FT601芯片读写时序分析、FT601芯片硬件电路参考设计、FT601与PC端的QT上位机通信,包括FT601测速试验、FT601视频采集传输试验、FT601视频采集+图像处理后传输试验等等;

工程概述

本设计使用FPGA驱动FT601芯片实现USB3.0视频传输应用;理论上视频输入源可以是多种多样的,取决于你想做的产品,本博主手上只有OV5640摄像头,外加开发板自带了一路HDMI输入接口,所以本设计的Sensor为OV5640摄像头或者HDMI,另外,为了照顾收手上没有Sensor或者不是本设计同款Sensor亦或是Sensor方案还未定的情况,本博主在工程中还设计了动态彩条模块,彩条由FPGA内部逻辑产生,且是动态移动的,完全可模拟Sensor,输入源选择Sensor还是彩条,通过Sensor模块的顶层参数配置,默认选择Sensor输入;

FPGA采集到Sensor图像,然后使用本博常用的FDMA图像缓存架构实现图像3帧缓存,缓存介质为板载的DDR3/4;然后由FT601读写逻辑控制视频从DDR3/4中读出;FT601使用同步FIFO-245模式,工作模式通过GPIO0/GPIO1引脚配置;根据FT601读写时序设计了读写状态机;在PC端QT上位机控制下,FT601读写逻辑产生从DDR3/4中读取视频的控制信号,并将读出的视频通过FT601写数据总线发送到板载的FT601芯片;FPGA开发板通过USB3.0数据线连接至PC端主机;PC端的QT上位机调用FT601驱动的API实现图像读取并显示视频;由此形成外接Sensor+FPGA+FT601+QT上位机的珠联璧合;针对市面上主流的FPGA,本博客提供11套工程源码,具体如下:
在这里插入图片描述
现对上述11套工程源码做如下解释,方便读者理解:

工程源码1

开发板FPGA型号为Xilinx–>Artix7–xc7a35tfgg484-2;输入源为OV5640摄像头或动态彩条,分辨率为1280x720@30Hz,可以通过Sensor模块的顶层参数配置,默认选择Sensor输入;FPGA纯verilog实现的i2c配置模块对摄像头进行初始化配置,并采集摄像头数据以RGB888输出;然后调用本博常用的FDMA图像缓存架构实现图像3帧缓存,缓存介质为板载的DDR3;然后由FT601读写逻辑控制视频从DDR3中读出;FT601使用同步FIFO-245模式;根据FT601读写时序设计了读写状态机;在PC端QT上位机控制下,FT601读写逻辑产生从DDR3中读取视频的控制信号,并将读出的视频通过FT601写数据总线发送到板载的FT601芯片,输出分辨率为1280x720@60Hz;FPGA开发板通过USB3.0数据线连接至PC端主机;PC端的QT上位机调用FT601驱动的API实现图像读取并显示视频;由此形成外接OV5640摄像头+FPGA+FT601+QT上位机的珠联璧合;Vivado工程和QT工程均提供源码;本工程适用于FPGA基于FT601实现USB3.0视频传输;

工程源码2

开发板FPGA型号为Xilinx–>Artix7-100T–xc7a100tfgg484-2;输入源为OV5640摄像头或动态彩条,分辨率为1280x720@30Hz,可以通过Sensor模块的顶层参数配置,默认选择Sensor输入;FPGA纯verilog实现的i2c配置模块对摄像头进行初始化配置,并采集摄像头数据以RGB888输出;然后调用本博常用的FDMA图像缓存架构实现图像3帧缓存,缓存介质为板载的DDR3;然后由FT601读写逻辑控制视频从DDR3中读出;FT601使用同步FIFO-245模式;根据FT601读写时序设计了读写状态机;在PC端QT上位机控制下,FT601读写逻辑产生从DDR3中读取视频的控制信号,并将读出的视频通过FT601写数据总线发送到板载的FT601芯片,输出分辨率为1280x720@60Hz;FPGA开发板通过USB3.0数据线连接至PC端主机;PC端的QT上位机调用FT601驱动的API实现图像读取并显示视频;由此形成外接OV5640摄像头+FPGA+FT601+QT上位机的珠联璧合;Vivado工程和QT工程均提供源码;本工程适用于FPGA基于FT601实现USB3.0视频传输;

工程源码3

开发板FPGA型号为Xilinx–>Kintex7–35T–xc7k325tffg900-2;输入源为OV5640摄像头或动态彩条,分辨率为1280x720@30Hz,可以通过Sensor模块的顶层参数配置,默认选择Sensor输入;FPGA纯verilog实现的i2c配置模块对摄像头进行初始化配置,并采集摄像头数据以RGB888输出;然后调用本博常用的FDMA图像缓存架构实现图像3帧缓存,缓存介质为板载的DDR3;然后由FT601读写逻辑控制视频从DDR3中读出;FT601使用同步FIFO-245模式;根据FT601读写时序设计了读写状态机;在PC端QT上位机控制下,FT601读写逻辑产生从DDR3中读取视频的控制信号,并将读出的视频通过FT601写数据总线发送到板载的FT601芯片,输出分辨率为1280x720@60Hz;FPGA开发板通过USB3.0数据线连接至PC端主机;PC端的QT上位机调用FT601驱动的API实现图像读取并显示视频;由此形成外接OV5640摄像头+FPGA+FT601+QT上位机的珠联璧合;Vivado工程和QT工程均提供源码;本工程适用于FPGA基于FT601实现USB3.0视频传输;

工程源码4

开发板FPGA型号为Xilinx–>Kintex7–35T–xc7k325tffg900-2;输入源为板载的HDMI输入接口或动态彩条,分辨率为1920x1080@60Hz,使用笔记本电脑接入HDMI输入接口,以模拟输入Sensor;可以通过Sensor模块的顶层参数配置,默认选择Sensor输入;HDMI解码方案为ADV7611芯片,开发板板载ADV7611,可将输入的HDMI视频解码为RGB888视频;FPGA纯verilog实现的i2c配置模块完成对ADV7611芯片的配置,分辨率配置为1920x1080@60Hz;然后调用本博常用的FDMA图像缓存架构实现图像3帧缓存,缓存介质为板载的DDR3;然后由FT601读写逻辑控制视频从DDR3中读出;FT601使用同步FIFO-245模式;根据FT601读写时序设计了读写状态机;在PC端QT上位机控制下,FT601读写逻辑产生从DDR3中读取视频的控制信号,并将读出的视频通过FT601写数据总线发送到板载的FT601芯片,输出分辨率为1920x1080@60Hz;FPGA开发板通过USB3.0数据线连接至PC端主机;PC端的QT上位机调用FT601驱动的API实现图像读取并显示视频;由此形成外接HDMI视频+FPGA+FT601+QT上位机的珠联璧合;Vivado工程和QT工程均提供源码;本工程适用于FPGA基于FT601实现USB3.0视频传输;

工程源码5

开发板FPGA型号为Xilinx–>Zynq7020–xc7z020clg400-2;输入源为OV5640摄像头或动态彩条,分辨率为1280x720@30Hz,可以通过Sensor模块的顶层参数配置,默认选择Sensor输入;FPGA纯verilog实现的i2c配置模块对摄像头进行初始化配置,并采集摄像头数据以RGB888输出;然后调用本博常用的FDMA图像缓存架构实现图像3帧缓存,缓存介质为板载的DDR3;然后由FT601读写逻辑控制视频从DDR3中读出;FT601使用同步FIFO-245模式;根据FT601读写时序设计了读写状态机;在PC端QT上位机控制下,FT601读写逻辑产生从DDR3中读取视频的控制信号,并将读出的视频通过FT601写数据总线发送到板载的FT601芯片,输出分辨率为1280x720@60Hz;FPGA开发板通过USB3.0数据线连接至PC端主机;PC端的QT上位机调用FT601驱动的API实现图像读取并显示视频;由此形成外接OV5640摄像头+FPGA+FT601+QT上位机的珠联璧合;Vivado工程和QT工程均提供源码;本工程适用于FPGA基于FT601实现USB3.0视频传输;

工程源码6

开发板FPGA型号为Xilinx–>Zynq7100–xc7z100ffg900-2;输入源为OV5640摄像头或动态彩条,分辨率为1280x720@30Hz,可以通过Sensor模块的顶层参数配置,默认选择Sensor输入;FPGA纯verilog实现的i2c配置模块对摄像头进行初始化配置,并采集摄像头数据以RGB888输出;然后调用本博常用的FDMA图像缓存架构实现图像3帧缓存,缓存介质为板载的DDR3;然后由FT601读写逻辑控制视频从DDR3中读出;FT601使用同步FIFO-245模式;根据FT601读写时序设计了读写状态机;在PC端QT上位机控制下,FT601读写逻辑产生从DDR3中读取视频的控制信号,并将读出的视频通过FT601写数据总线发送到板载的FT601芯片,输出分辨率为1280x720@60Hz;FPGA开发板通过USB3.0数据线连接至PC端主机;PC端的QT上位机调用FT601驱动的API实现图像读取并显示视频;由此形成外接OV5640摄像头+FPGA+FT601+QT上位机的珠联璧合;Vivado工程和QT工程均提供源码;本工程适用于FPGA基于FT601实现USB3.0视频传输;

工程源码7

开发板FPGA型号为Xilinx–>Zynq7100–xc7z100ffg900-2;输入源为板载的HDMI输入接口或动态彩条,分辨率为1920x1080@60Hz,使用笔记本电脑接入HDMI输入接口,以模拟输入Sensor;可以通过Sensor模块的顶层参数配置,默认选择Sensor输入;HDMI解码方案为ADV7611芯片,可将输入的HDMI视频解码为RGB888视频;FPGA纯verilog实现的i2c配置模块完成对ADV7611芯片的配置,分辨率配置为1920x1080@60Hz;然后调用本博常用的FDMA图像缓存架构实现图像3帧缓存,缓存介质为板载的DDR3;然后由FT601读写逻辑控制视频从DDR3中读出;FT601使用同步FIFO-245模式;根据FT601读写时序设计了读写状态机;在PC端QT上位机控制下,FT601读写逻辑产生从DDR3中读取视频的控制信号,并将读出的视频通过FT601写数据总线发送到板载的FT601芯片,输出分辨率为1920x1080@60Hz;FPGA开发板通过USB3.0数据线连接至PC端主机;PC端的QT上位机调用FT601驱动的API实现图像读取并显示视频;由此形成外接HDMI视频+FPGA+FT601+QT上位机的珠联璧合;Vivado工程和QT工程均提供源码;本工程适用于FPGA基于FT601实现USB3.0视频传输;

工程源码8

开发板FPGA型号为Xilinx–>Kintex UltraScale–xcku040-ffva1156-2-i;输入源为OV5640摄像头或动态彩条,分辨率为1280x720@30Hz,可以通过Sensor模块的顶层参数配置,默认选择Sensor输入;FPGA纯verilog实现的i2c配置模块对摄像头进行初始化配置,并采集摄像头数据以RGB888输出;然后调用本博常用的FDMA图像缓存架构实现图像3帧缓存,缓存介质为板载的DDR4;然后由FT601读写逻辑控制视频从DDR4中读出;FT601使用同步FIFO-245模式;根据FT601读写时序设计了读写状态机;在PC端QT上位机控制下,FT601读写逻辑产生从DDR3中读取视频的控制信号,并将读出的视频通过FT601写数据总线发送到板载的FT601芯片,输出分辨率为1280x720@60Hz;FPGA开发板通过USB3.0数据线连接至PC端主机;PC端的QT上位机调用FT601驱动的API实现图像读取并显示视频;由此形成外接OV5640摄像头+FPGA+FT601+QT上位机的珠联璧合;Vivado工程和QT工程均提供源码;本工程适用于FPGA基于FT601实现USB3.0视频传输;

工程源码9

开发板FPGA型号为Xilinx–>Kintex UltraScale–xcku040-ffva1156-2-i;输入源为板载的HDMI输入接口或动态彩条,分辨率为1920x1080@60Hz,使用笔记本电脑接入HDMI输入接口,以模拟输入Sensor;可以通过Sensor模块的顶层参数配置,默认选择Sensor输入;HDMI解码方案为ADV7611芯片,开发板板载ADV7611,可将输入的HDMI视频解码为RGB888视频;FPGA纯verilog实现的i2c配置模块完成对ADV7611芯片的配置,分辨率配置为1920x1080@60Hz;然后调用本博常用的FDMA图像缓存架构实现图像3帧缓存,缓存介质为板载的DDR4;然后由FT601读写逻辑控制视频从DDR4中读出;FT601使用同步FIFO-245模式;根据FT601读写时序设计了读写状态机;在PC端QT上位机控制下,FT601读写逻辑产生从DDR3中读取视频的控制信号,并将读出的视频通过FT601写数据总线发送到板载的FT601芯片,输出分辨率为1920x1080@60Hz;FPGA开发板通过USB3.0数据线连接至PC端主机;PC端的QT上位机调用FT601驱动的API实现图像读取并显示视频;由此形成外接HDMI视频+FPGA+FT601+QT上位机的珠联璧合;Vivado工程和QT工程均提供源码;本工程适用于FPGA基于FT601实现USB3.0视频传输;

工程源码10

开发板FPGA型号为Xilinx–>Kintex UltraScale–xcku060-ffva1156-2-i;输入源为OV5640摄像头或动态彩条,分辨率为1280x720@30Hz,可以通过Sensor模块的顶层参数配置,默认选择Sensor输入;FPGA纯verilog实现的i2c配置模块对摄像头进行初始化配置,并采集摄像头数据以RGB888输出;然后调用本博常用的FDMA图像缓存架构实现图像3帧缓存,缓存介质为板载的DDR4;然后由FT601读写逻辑控制视频从DDR4中读出;FT601使用同步FIFO-245模式;根据FT601读写时序设计了读写状态机;在PC端QT上位机控制下,FT601读写逻辑产生从DDR3中读取视频的控制信号,并将读出的视频通过FT601写数据总线发送到板载的FT601芯片,输出分辨率为1280x720@60Hz;FPGA开发板通过USB3.0数据线连接至PC端主机;PC端的QT上位机调用FT601驱动的API实现图像读取并显示视频;由此形成外接OV5640摄像头+FPGA+FT601+QT上位机的珠联璧合;Vivado工程和QT工程均提供源码;本工程适用于FPGA基于FT601实现USB3.0视频传输;

工程源码11

开发板FPGA型号为Xilinx–>Kintex UltraScale–xcku060-ffva1156-2-i;输入源为板载的HDMI输入接口或动态彩条,分辨率为1920x1080@60Hz,使用笔记本电脑接入HDMI输入接口,以模拟输入Sensor;可以通过Sensor模块的顶层参数配置,默认选择Sensor输入;HDMI解码方案为ADV7611芯片,开发板板载ADV7611,可将输入的HDMI视频解码为RGB888视频;FPGA纯verilog实现的i2c配置模块完成对ADV7611芯片的配置,分辨率配置为1920x1080@60Hz;然后调用本博常用的FDMA图像缓存架构实现图像3帧缓存,缓存介质为板载的DDR4;然后由FT601读写逻辑控制视频从DDR4中读出;FT601使用同步FIFO-245模式;根据FT601读写时序设计了读写状态机;在PC端QT上位机控制下,FT601读写逻辑产生从DDR3中读取视频的控制信号,并将读出的视频通过FT601写数据总线发送到板载的FT601芯片,输出分辨率为1920x1080@60Hz;FPGA开发板通过USB3.0数据线连接至PC端主机;PC端的QT上位机调用FT601驱动的API实现图像读取并显示视频;由此形成外接HDMI视频+FPGA+FT601+QT上位机的珠联璧合;Vivado工程和QT工程均提供源码;本工程适用于FPGA基于FT601实现USB3.0视频传输;

免责声明

本工程及其源码即有自己写的一部分,也有网络公开渠道获取的一部分(包括CSDN、Xilinx官网、Altera官网等等),若大佬们觉得有所冒犯,请私信批评教育;基于此,本工程及其源码仅限于读者或粉丝个人学习和研究,禁止用于商业用途,若由于读者或粉丝自身原因用于商业用途所导致的法律问题,与本博客及博主无关,请谨慎使用。。。

2、相关方案推荐

本博已有的FPGA驱动USB通信方案

我的博客主页开设有FPGA驱动USB通信专栏,里面全是FPGA驱动USB通信的工程源码及博客介绍;既有基于USB2.0也有USB3.0方案;包括USB2.0/3.0测速试验、USB2.0/3.0视频采集传输试验、USB2.0/3.0视频采集+图像处理后传输试验等等;所有工方案均包括FPGA工程和QT上位机源码;专栏地址链接如下:
点击直接前往

FT601数据读写和测速方案

提供更为简单的FT601数据读写和测速方案,之前出过一篇专门的博客,博客地址链接如下:
点击直接前往

3、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℃;
FT601芯片框架如下:
在这里插入图片描述
FT601外围电路设计参考如下:
在这里插入图片描述
FT601支持的多种传输模式,其中 245 Synchronous FIFO 模式和 Multi-Channel FIFO 模式是最常用的模式,本工程配置为 245 Synchronous FIFO 模式;传输模式通过GPIO引脚高低电平配置,配置真值表如下:
在这里插入图片描述

FT601读时序解读

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

FT601写时序解读

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

4、详细设计方案

设计原理框图

设计原理框图如下:
在这里插入图片描述

输入Sensor之–>OV5640摄像头

输入Sensor是本工程的输入设备,其一为OV5640摄像头,此外本博主在工程中还设计了动态彩条模块,彩条由FPGA内部逻辑产生,且是动态移动的,完全可模拟Sensor,输入源选择Sensor还是彩条,通过Sensor模块的顶层参数配置,默认选择Sensor输入;Sensor模块如下:
在这里插入图片描述
SENSOR_TYPE=0;则输出OV5640摄像头采集的视频;
SENSOR_TYPE=1;则输出动态彩条的视频;

OV5640摄像头需要i2c初始化配置,本设计配置为1280x720@30Hz分辨率,本设计提供纯verilog代码实现的i2c模块实现配置功能;此外,OV5640摄像头还需要图像采集模块实现两个时钟输出一个RGB565的视频转换为一个时钟输出一个RGB888视频,本设计提供纯verilog代码实现的图像采集模块实现配置功能;动态彩条则由FPGA内部逻辑实现,由纯verilog代码编写;将OV5640摄像头配置采集和动态彩条进行代码封装,形成helai_OVsensor.v的顶层模块,整个模块代码架构如下:
在这里插入图片描述

输入Sensor之–>HDMI

输入Sensor是本工程的输入设备,其二为板载的HDMI输入接口;输入源为板载的HDMI输入接口或动态彩条,分辨率为1920x1080@60Hz,使用笔记本电脑接入HDMI输入接口,以模拟输入Sensor;HDMI解码方案为ADV7611芯片,开发板板载ADV7611,可将输入的HDMI视频解码为RGB888视频;FPGA纯verilog实现的i2c配置模块完成对ADV7611芯片的配置,分辨率配置为1920x1080@60Hz;可以通过Sensor模块的顶层参数配置,默认选择Sensor输入;Sensor模块如下:
在这里插入图片描述
SENSOR_TYPE=0;则输出HDMI接口采集的视频;
SENSOR_TYPE=1;则输出动态彩条的视频;
整个模块代码架构如下:
在这里插入图片描述

图像缓存

图像缓存方案采用自研的FDMA图像缓存架构,缓存介质为DDR3/4;FDMA图像缓存架构由FDMA、FDMA控制器、缓存帧选择器构成;图像缓存使用Xilinx vivado的Block Design设计,如下图:
在这里插入图片描述
关于FDMA更详细的介绍,请参考我之前的博客,博文链接如下:
点击直接前往

Verilog读写逻辑

根据FT601读写时序,设计了数据读写状态机,一共分为三个状态,分别为初始状态、读数据状态、写数据状态;状态机的触发由PC端的QT上位机开启;在PC端QT上位机控制下,FT601读写逻辑产生从DDR3中读取视频的控制信号,并将读出的视频通过FT601写数据总线发送到板载的FT601芯片;PC端的QT上位机调用FT601驱动的API实现图像读取并显示视频;顶层代码接口如下:
在这里插入图片描述

QT上位机

QT开发环境为QT上位机本方案使用 VS2015 + Qt 5.12.10;QT上位机实现发起FT601的读写操作,QT上位机调用FT601驱动的API实现图像读取并显示视频;QT上位机运行如下:
在这里插入图片描述

工程源码架构

本博客提供11套工程源码,以工程源码1为例,vivado Block Design设计如下,其他工程与之类似,Block Design设计为图像缓存架构的部分:
在这里插入图片描述
本博客提供11套Vivado工程源码,以工程源码1为例,综合后的代码架构如下,其他工程与之类似:
在这里插入图片描述
对于Zynq的工程,FDMA图像缓存架构虽然不需要SDK配置,但FDMA的AXI4接口时钟由Zynq提供,所以需要运行SDK程序才能启动Zynq,从而为PL端逻辑提供时钟;由于不需要SDK配置,所以SDK软件代码就变得极度简单,只需运行一个“Hello World”即可,如下:
在这里插入图片描述
QT代码如下:
在这里插入图片描述

5、工程源码1详解–>Artix7-35T,OV5640输入版本

开发板FPGA型号:Xilinx–Artix7–xc7a35tfgg484-2;
FPGA开发环境:Vivado2019.1;
QT开发环境:VS2015 + Qt 5.12.10;
输入:OV5640摄像头或动态彩条,分辨率1280x720@30Hz;
输出:USB3.0,分辨率1280x720@60Hz;
USB3.0方案:FT601芯片;
缓存方案:自研FDMA方案;
缓存介质:DDR3;
实现功能:FPGA基于FT601实现USB3.0视频传输(OV5640摄像头);
工程作用:此工程目的是让读者掌握FPGA基于FT601实现USB3.0视频传输的设计能力,以便能够移植和设计自己的项目;
工程Block Design和工程代码架构请参考第4章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

6、工程源码2详解–>Artix7-100T,OV5640输入版本

开发板FPGA型号:Xilinx–Artix7-100T–xc7a100tfgg484-2;
FPGA开发环境:Vivado2019.1;
QT开发环境:VS2015 + Qt 5.12.10;
输入:OV5640摄像头或动态彩条,分辨率1280x720@30Hz;
输出:USB3.0,分辨率1280x720@60Hz;
USB3.0方案:FT601芯片;
缓存方案:自研FDMA方案;
缓存介质:DDR3;
实现功能:FPGA基于FT601实现USB3.0视频传输(OV5640摄像头);
工程作用:此工程目的是让读者掌握FPGA基于FT601实现USB3.0视频传输的设计能力,以便能够移植和设计自己的项目;
工程Block Design和工程代码架构请参考第4章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

7、工程源码3详解–>Kintex7–35T,OV5640输入版本

开发板FPGA型号:Xilinx–Kintex7–35T–xc7k325tffg900-2;
FPGA开发环境:Vivado2019.1;
QT开发环境:VS2015 + Qt 5.12.10;
输入:OV5640摄像头或动态彩条,分辨率1280x720@30Hz;
输出:USB3.0,分辨率1280x720@60Hz;
USB3.0方案:FT601芯片;
缓存方案:自研FDMA方案;
缓存介质:DDR3;
实现功能:FPGA基于FT601实现USB3.0视频传输(OV5640摄像头);
工程作用:此工程目的是让读者掌握FPGA基于FT601实现USB3.0视频传输的设计能力,以便能够移植和设计自己的项目;
工程Block Design和工程代码架构请参考第4章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

8、工程源码4详解–>Kintex7–35T,HDMI输入版本

开发板FPGA型号:Xilinx–Kintex7–35T–xc7k325tffg900-2;
FPGA开发环境:Vivado2019.1;
QT开发环境:VS2015 + Qt 5.12.10;
输入:HDMI(笔记本输入模拟Sensor)或动态彩条,分辨率1920x1080@60Hz;
HDMI解码方案:ADV7611芯片;
输出:USB3.0,分辨率1920x1080@60Hz;
USB3.0方案:FT601芯片;
缓存方案:自研FDMA方案;
缓存介质:DDR3;
实现功能:FPGA基于FT601实现USB3.0视频传输(HDMI);
工程作用:此工程目的是让读者掌握FPGA基于FT601实现USB3.0视频传输的设计能力,以便能够移植和设计自己的项目;
工程Block Design和工程代码架构请参考第4章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

9、工程源码5详解–>Zynq7020,OV5640输入版本

开发板FPGA型号:Xilinx–Zynq7020–xc7z020clg400-2;
FPGA开发环境:Vivado2019.1;
QT开发环境:VS2015 + Qt 5.12.10;
输入:OV5640摄像头或动态彩条,分辨率1280x720@30Hz;
输出:USB3.0,分辨率1280x720@60Hz;
USB3.0方案:FT601芯片;
缓存方案:自研FDMA方案;
缓存介质:DDR3;
实现功能:FPGA基于FT601实现USB3.0视频传输(OV5640摄像头);
工程作用:此工程目的是让读者掌握FPGA基于FT601实现USB3.0视频传输的设计能力,以便能够移植和设计自己的项目;
工程Block Design和工程代码架构请参考第4章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

10、工程源码6详解–>Zynq7100,OV5640输入版本

开发板FPGA型号:Xilinx–Zynq7100–xc7z100ffg900-2;
FPGA开发环境:Vivado2019.1;
QT开发环境:VS2015 + Qt 5.12.10;
输入:OV5640摄像头或动态彩条,分辨率1280x720@30Hz;
输出:USB3.0,分辨率1280x720@60Hz;
USB3.0方案:FT601芯片;
缓存方案:自研FDMA方案;
缓存介质:DDR3;
实现功能:FPGA基于FT601实现USB3.0视频传输(OV5640摄像头);
工程作用:此工程目的是让读者掌握FPGA基于FT601实现USB3.0视频传输的设计能力,以便能够移植和设计自己的项目;
工程Block Design和工程代码架构请参考第4章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

11、工程源码7详解–>Zynq7100,HDMI输入版本

开发板FPGA型号:Xilinx–Zynq7100–xc7z100ffg900-2;
FPGA开发环境:Vivado2019.1;
QT开发环境:VS2015 + Qt 5.12.10;
输入:HDMI(笔记本输入模拟Sensor)或动态彩条,分辨率1920x1080@60Hz;
HDMI解码方案:ADV7611芯片;
输出:USB3.0,分辨率1920x1080@60Hz;
USB3.0方案:FT601芯片;
缓存方案:自研FDMA方案;
缓存介质:DDR3;
实现功能:FPGA基于FT601实现USB3.0视频传输(HDMI);
工程作用:此工程目的是让读者掌握FPGA基于FT601实现USB3.0视频传输的设计能力,以便能够移植和设计自己的项目;
工程Block Design和工程代码架构请参考第4章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

12、工程源码8详解–>KU040,OV5640输入版本

开发板FPGA型号:Xilinx–Kintex UltraScale–xcku040-ffva1156-2-i;
FPGA开发环境:Vivado2019.1;
QT开发环境:VS2015 + Qt 5.12.10;
输入:OV5640摄像头或动态彩条,分辨率1280x720@30Hz;
输出:USB3.0,分辨率1280x720@60Hz;
USB3.0方案:FT601芯片;
缓存方案:自研FDMA方案;
缓存介质:DDR4;
实现功能:FPGA基于FT601实现USB3.0视频传输(OV5640摄像头);
工程作用:此工程目的是让读者掌握FPGA基于FT601实现USB3.0视频传输的设计能力,以便能够移植和设计自己的项目;
工程Block Design和工程代码架构请参考第4章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

13、工程源码9详解–>KU040,HDMI输入版本

开发板FPGA型号:Xilinx–Kintex UltraScale–xcku040-ffva1156-2-i;
FPGA开发环境:Vivado2019.1;
QT开发环境:VS2015 + Qt 5.12.10;
输入:HDMI(笔记本输入模拟Sensor)或动态彩条,分辨率1920x1080@60Hz;
HDMI解码方案:ADV7611芯片;
输出:USB3.0,分辨率1920x1080@60Hz;
USB3.0方案:FT601芯片;
缓存方案:自研FDMA方案;
缓存介质:DDR4;
实现功能:FPGA基于FT601实现USB3.0视频传输(HDMI);
工程作用:此工程目的是让读者掌握FPGA基于FT601实现USB3.0视频传输的设计能力,以便能够移植和设计自己的项目;
工程Block Design和工程代码架构请参考第4章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

14、工程源码10详解–>KU060,OV5640输入版本

开发板FPGA型号:Xilinx–Kintex UltraScale–xcku060-ffva1156-2-i;
FPGA开发环境:Vivado2019.1;
QT开发环境:VS2015 + Qt 5.12.10;
输入:OV5640摄像头或动态彩条,分辨率1280x720@30Hz;
输出:USB3.0,分辨率1280x720@60Hz;
USB3.0方案:FT601芯片;
缓存方案:自研FDMA方案;
缓存介质:DDR4;
实现功能:FPGA基于FT601实现USB3.0视频传输(OV5640摄像头);
工程作用:此工程目的是让读者掌握FPGA基于FT601实现USB3.0视频传输的设计能力,以便能够移植和设计自己的项目;
工程Block Design和工程代码架构请参考第4章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

15、工程源码11详解–>KU060,HDMI输入版本

开发板FPGA型号:Xilinx–Kintex UltraScale–xcku060-ffva1156-2-i;
FPGA开发环境:Vivado2019.1;
QT开发环境:VS2015 + Qt 5.12.10;
输入:HDMI(笔记本输入模拟Sensor)或动态彩条,分辨率1920x1080@60Hz;
HDMI解码方案:ADV7611芯片;
输出:USB3.0,分辨率1920x1080@60Hz;
USB3.0方案:FT601芯片;
缓存方案:自研FDMA方案;
缓存介质:DDR4;
实现功能:FPGA基于FT601实现USB3.0视频传输(HDMI);
工程作用:此工程目的是让读者掌握FPGA基于FT601实现USB3.0视频传输的设计能力,以便能够移植和设计自己的项目;
工程Block Design和工程代码架构请参考第4章节的《工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

16、工程移植说明

vivado版本不一致处理

1:如果你的vivado版本与本工程vivado版本一致,则直接打开工程;
2:如果你的vivado版本低于本工程vivado版本,则需要打开工程后,点击文件–>另存为;但此方法并不保险,最保险的方法是将你的vivado版本升级到本工程vivado的版本或者更高版本;
在这里插入图片描述
3:如果你的vivado版本高于本工程vivado版本,解决如下:
在这里插入图片描述
打开工程后会发现IP都被锁住了,如下:
在这里插入图片描述
此时需要升级IP,操作如下:
在这里插入图片描述
在这里插入图片描述

FPGA型号不一致处理

如果你的FPGA型号与我的不一致,则需要更改FPGA型号,操作如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
更改FPGA型号后还需要升级IP,升级IP的方法前面已经讲述了;

其他注意事项

1:由于每个板子的DDR不一定完全一样,所以MIG IP需要根据你自己的原理图进行配置,甚至可以直接删掉我这里原工程的MIG并重新添加IP,重新配置;
2:根据你自己的原理图修改引脚约束,在xdc文件中修改即可;
3:纯FPGA移植到Zynq需要在工程中添加zynq软核;

17、上板调试验证

准备工作

需要准备的器材如下:
FPGA开发板;
OV5640摄像头或ADV7611转接板:
FT601转接板(FPGA开发板板载FT601除外);
笔记本电脑或者PC主机;
USB3.0数据线;
我的开发板连接如下:
在这里插入图片描述

FT601驱动安装

注意:驱动只需要安装一次即可;
首先下载bit到FPGA开发板,如下:
在这里插入图片描述
然后打开PC端–>我的电脑–>管理–>设备管理器,可以看到FT601设备已经识别,如下:
在这里插入图片描述
如果你已经下载了FT601驱动文件,但没有安装,则有的电脑会自动寻找驱动并自定安装,所以等待大约1分钟后,电脑自动帮我们装好了FT601驱动,如下:
在这里插入图片描述
如果你的电脑不能自动寻找驱动并安装,请手动安装驱动,如下:
在这里插入图片描述

输出视频演示

首先打开QT上位机,位置如下:
在这里插入图片描述
打开QT界面如下:
在这里插入图片描述
以工程源码6为例,动态输出如下:

FT601-OV5640

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

福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料获取方式:私,或者文章末尾的V名片。
网盘资料如下:
在这里插入图片描述
此外,有很多朋友给本博主提了很多意见和建议,希望能丰富服务内容和选项,因为不同朋友的需求不一样,所以本博主还提供以下服务:
在这里插入图片描述

<think>好的,用户想了解关于FPGAUSB3.0相关的技术实现或驱动支持。首先,我需要回顾一下已有的引用内容,看看里面有哪些相关的信息。 根据引用[1],用户提到他们博客里有FPGA驱动USB通信的专栏,包括USB3.0方案,比如测速试验、视频采集传输等,并且这些方案都包含FPGA工程QT上位机源码。这可能是一个很好的起点,说明已经有具体的实现案例。 引用[2]详细描述了开发板的型号、FPGA环境以及具体的输入输出配置,特别是使用PCIE2.0USB3.0FT601芯片)进行视频传输。这里提到的XDMA方案FDMA图像缓存可能对用户有帮助,尤其是关于如何将视频数据从PC通过PCIE传输FPGA,再通过USB3.0输出。此外,还提到了资源消耗功耗,这对实际应用可能有参考价值。 引用[3]介绍了一种使用FT602芯片实现USB3.0 UVC工业相机的方案,涉及图像缓存RGB转YUV处理。这说明除了数据传输图像处理也是一个重要环节,用户可能需要了解如何将处理后的数据通过USB传输。 引用[4]提到了CYUSB3014(EZ-USB FX3)作为USB3.0外设控制器,简化了USB协议驱动的开发。这可能是一个替代方案,尤其是对于需要更高带宽或更易开发的情况。 引用[5]讨论了FT601驱动的安装验证步骤,说明驱动支持是可行的,但需要注意安装过程可能因电脑而异,可能需要手动安装。 接下来,我需要将这些信息组织成一个清晰的回答,涵盖主要的实现方案、驱动支持以及相关技术细节。可能需要分点说明,比如芯片方案、固件与驱动开发、数据缓存处理、协议转换以及上位机交互。每个部分都需要引用对应的参考文献,确保用户能追溯到来源。 同时,用户可能对如何选择芯片、驱动开发的具体步骤、性能优化等有进一步的问题,所以生成的相关问题需要覆盖这些方面。例如,如何选择适合的USB3.0芯片,或者如何优化传输带宽。 最后,要确保回答符合系统级指令,正确使用LaTeX格式,引用标识自然添加,并且语言简洁明了。</think>### FPGAUSB3.0技术实现方案 #### 1. **核心芯片方案** FPGA实现USB3.0通信通常依赖专用接口芯片,常见方案包括: - **FTDI系列芯片(如FT601/FT602)**:通过同步245模式实现高速数据传输,支持USB3.0 SuperSpeed协议,带宽可达5Gbps[^3][^5]。例如,将视频数据经DDR3缓存后通过FT601输出到PC端[^2]。 - **CYUSB3014(EZ-USB FX3)**:赛普拉斯推出的USB3.0控制器,提供固件库简化开发,支持灵活配置GPIF接口与FPGA对接[^4]。 #### 2. **固件与驱动开发** - **固件设计**:针对FT601等芯片需实现FPGA侧的逻辑控制,包括FIFO管理、时序同步等。例如,引用[3]中通过UVC模块封装YUV视频流。 - **驱动支持**:FTDI芯片需安装官方驱动(如`FT601.sys`),部分系统可自动识别,否则需手动安装。FX3芯片则依赖赛普拉斯提供的驱动SDK。 #### 3. **数据缓存与处理** - **图像缓存方案**:使用FPGA内置的FDMA控制器配合DDR3颗粒实现多帧缓存,例如1920x1080@60Hz视频的三帧缓存设计。 - **协议转换**:若涉及视频传输,需实现RGB/YUV格式转换、UVC协议封装等处理模块。 #### 4. **上位机交互** - **QT上位机开发**:通过USB3.0接收数据并实时显示,例如引用[1]中提供QT源码支持视频采集测速功能。 - **带宽测试**:通过循环传输测试包验证实际带宽,优化FPGA逻辑以减少延迟[^1]。 #### 5. **性能优化** - **PCIE与USB协同**:引用[2]中采用PCIE2.0从PC获取视频数据,再通过USB3.0输出,需协调两种接口的时钟域缓冲区。 - **资源管理**:优化FPGA资源消耗,例如某工程中LUT占用率为27%,功耗约3.4W[^2]。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

9527华安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值