FPGA基于FT601实现USB3.0通信测速试验,提供7套工程源码和QT上位机源码

目录

FPGA基于FT601实现USB3.0通信测速试验,提供7套工程源码和QT上位机源码

1、前言

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

工程概述

本设计使用FPGA驱动FT601芯片实现USB3.0数据读写通信的测速应用,FT601使用同步FIFO-245模式,工作模式通过GPIO0/GPIO1引脚配置;根据FT601读写时序设计了读写状态机;对于写操作,在写时序控制下,FPGA向FT601写入累加数,累加数从0开始逐个时钟+1;对于读操作,在读时序控制下,FPGA从FT601读出数据;PC端的QT上位机调用FT601驱动的API实现读写速率计算,并将速率结果用码表方式呈现;PC端的QT上位机直接控制FT601的读写,从而实现读写速率的统计计算,形成FPGA+FT601+QT上位机的珠联璧合;针对市面上主流的FPGA,本博客提供7套工程源码,具体如下:

现对上述7套工程源码做如下解释,方便读者理解:

工程源码1

开发板FPGA型号为Xilinx-->Artix7--xc7a35tfgg484-2;USB3.0采用FT601方案,该工程实现了FT601数据读写和数据测速功能,PC端上位机方案采用QT方案;可实现FPGA+FT601+QT上位机架构的搭建和快速验证;适用于该架构的基础验证;

工程源码2

开发板FPGA型号为Xilinx-->Artix7-100T--xc7a100tfgg484-2;USB3.0采用FT601方案,该工程实现了FT601数据读写和数据测速功能,PC端上位机方案采用QT方案;可实现FPGA+FT601+QT上位机架构的搭建和快速验证;适用于该架构的基础验证;

工程源码3

开发板FPGA型号为Xilinx-->Kintex7--35T--xc7k325tffg900-2;USB3.0采用FT601方案,该工程实现了FT601数据读写和数据测速功能,PC端上位机方案采用QT方案;可实现FPGA+FT601+QT上位机架构的搭建和快速验证;适用于该架构的基础验证;

工程源码4

开发板FPGA型号为Xilinx-->Zynq7020--xc7z020clg400-2;USB3.0采用FT601方案,该工程实现了FT601数据读写和数据测速功能,PC端上位机方案采用QT方案;可实现FPGA+FT601+QT上位机架构的搭建和快速验证;适用于该架构的基础验证;

工程源码5

开发板FPGA型号为Xilinx-->Zynq7100--xc7z100ffg900-2;USB3.0采用FT601方案,该工程实现了FT601数据读写和数据测速功能,PC端上位机方案采用QT方案;可实现FPGA+FT601+QT上位机架构的搭建和快速验证;适用于该架构的基础验证;

工程源码6

开发板FPGA型号为Xilinx-->Kintex UltraScale--xcku040-ffva1156-2-i;USB3.0采用FT601方案,该工程实现了FT601数据读写和数据测速功能,PC端上位机方案采用QT方案;可实现FPGA+FT601+QT上位机架构的搭建和快速验证;适用于该架构的基础验证;

工程源码7

开发板FPGA型号为Xilinx-->Kintex UltraScale--xcku060-ffva1156-2-i;USB3.0采用FT601方案,该工程实现了FT601数据读写和数据测速功能,PC端上位机方案采用QT方案;可实现FPGA+FT601+QT上位机架构的搭建和快速验证;适用于该架构的基础验证;

免责声明

本工程及其源码即有自己写的一部分,也有网络公开渠道获取的一部分(包括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上位机源码;专栏地址链接如下:
点击直接前往

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 DO:15或 32bit D0: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、详细设计方案

设计原理框图

设计原理框图如下:

Verilog读写逻辑

根据FT601读写时序,设计了数据读写状态机,一共分为三个状态,分别为初始状态、读数据状态、写数据状态;状态机的触发由PC端的QT上位机开启;对于写操作,在写时序控制下,FPGA向FT601写入累加数,累加数从0开始逐个时钟+1;对于读操作,在读时序控制下,FPGA从FT601读出数据;PC端的QT上位机调用FT601驱动的API实现读写速率计算,并将速率结果用码表方式呈现;顶层代码接口如下:

QT上位机

QT开发环境为QT上位机本方案使用 VS2015 + Qt 5.12.10;QT上位机实现发起FT601的读写操作,调用FT601驱动的API实现读写速率计算,并将速率结果用码表方式呈现;QT上位机运行如下:

工程源码架构

本博客提供7套Vivado工程源码,以工程源码1为例如下,其他工程与之类似:

QT代码如下:

5、工程源码1详解-->Artix7-35T版本

开发板FPGA型号:Xilinx--Artix7--xc7a35tfgg484-2;

FPGA开发环境:Vivado2019.1;

QT开发环境:VS2015 + Qt 5.12.10;

USB3.0方案:FT601;

实现功能:FT601数据读写+FT601数据测速;

工程作用:此工程目的是让读者掌握FPGA驱动FT601实现USB3.0通信测速试验的设计能力,以便能够移植和设计自己的项目;

工程Block Design和工程代码架构请参考第4章节的《工程源码架构》小节内容;

工程的资源消耗和功耗如下:

6、工程源码2详解-->Artix7-100T版本

开发板FPGA型号:Xilinx--Artix7-100T--xc7a100tfgg484-2;

FPGA开发环境:Vivado2019.1;

QT开发环境:VS2015 + Qt 5.12.10;

USB3.0方案:FT601;

实现功能:FT601数据读写+FT601数据测速;

工程作用:此工程目的是让读者掌握FPGA驱动FT601实现USB3.0通信测速试验的设计能力,以便能够移植和设计自己的项目;

工程Block Design和工程代码架构请参考第4章节的《工程源码架构》小节内容;

工程的资源消耗和功耗如下:

7、工程源码3详解-->Kintex7--35T版本

开发板FPGA型号:Xilinx--Kintex7--35T--xc7k325tffg900-2;

FPGA开发环境:Vivado2019.1;

QT开发环境:VS2015 + Qt 5.12.10;

USB3.0方案:FT601;

实现功能:FT601数据读写+FT601数据测速;

工程作用:此工程目的是让读者掌握FPGA驱动FT601实现USB3.0通信测速试验的设计能力,以便能够移植和设计自己的项目;

工程Block Design和工程代码架构请参考第4章节的《工程源码架构》小节内容;

工程的资源消耗和功耗如下:

8、工程源码4详解-->Zynq7020版本

开发板FPGA型号:Xilinx--Zynq7020--xc7z020clg400-2;

FPGA开发环境:Vivado2019.1;

QT开发环境:VS2015 + Qt 5.12.10;

USB3.0方案:FT601;

实现功能:FT601数据读写+FT601数据测速;

工程作用:此工程目的是让读者掌握FPGA驱动FT601实现USB3.0通信测速试验的设计能力,以便能够移植和设计自己的项目;

工程Block Design和工程代码架构请参考第4章节的《工程源码架构》小节内容;

工程的资源消耗和功耗如下:

9、工程源码5详解-->Zynq7100版本

开发板FPGA型号:Xilinx--Zynq7100--xc7z100ffg900-2;

FPGA开发环境:Vivado2019.1;

QT开发环境:VS2015 + Qt 5.12.10;

USB3.0方案:FT601;

实现功能:FT601数据读写+FT601数据测速;

工程作用:此工程目的是让读者掌握FPGA驱动FT601实现USB3.0通信测速试验的设计能力,以便能够移植和设计自己的项目;

工程Block Design和工程代码架构请参考第4章节的《工程源码架构》小节内容;

工程的资源消耗和功耗如下:

10、工程源码6详解-->KU040版本

开发板FPGA型号:Xilinx--Kintex UltraScale--xcku040-ffva1156-2-i;

FPGA开发环境:Vivado2019.1;

QT开发环境:VS2015 + Qt 5.12.10;

USB3.0方案:FT601;

实现功能:FT601数据读写+FT601数据测速;

工程作用:此工程目的是让读者掌握FPGA驱动FT601实现USB3.0通信测速试验的设计能力,以便能够移植和设计自己的项目;

工程Block Design和工程代码架构请参考第4章节的《工程源码架构》小节内容;

工程的资源消耗和功耗如下:

11、工程源码7详解-->KU060版本

开发板FPGA型号:Xilinx--Kintex UltraScale--xcku060-ffva1156-2-i;

FPGA开发环境:Vivado2019.1;

QT开发环境:VS2015 + Qt 5.12.10;

USB3.0方案:FT601;

实现功能:FT601数据读写+FT601数据测速;

工程作用:此工程目的是让读者掌握FPGA驱动FT601实现USB3.0通信测速试验的设计能力,以便能够移植和设计自己的项目;

工程Block Design和工程代码架构请参考第4章节的《工程源码架构》小节内容;

工程的资源消耗和功耗如下:

12、工程移植说明

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软核;

13、上板调试验证

准备工作

需要准备的器材如下:

FPGA开发板;

FT601转接板(FPGA开发板板载FT601除外);

笔记本电脑或者PC主机;

USB3.0数据线;

我的开发板连接如下:

FT601驱动安装

注意:驱动只需要安装一次即可;

首先下载bit到FPGA开发板,如下:

然后打开PC端-->我的电脑-->管理-->设备管理器,可以看到FT601设备已经识别,如下:

如果你已经下载了FT601驱动文件,但没有安装,则有的电脑会自动寻找驱动并自定安装,所以等待大约1分钟后,电脑自动帮我们装好了FT601驱动,如下:

如果你的电脑不能自动寻找驱动并安装,请手动安装驱动,如下:

输出视频演示

首先打开QT上位机,位置如下:

打开QT界面如下:

可以查看ILA抓取的信号,以写操作为例,抓取如下:

可以看到,在写时序下,写数据为累加数;

再看数据测速:

以工程源码1为例,静态输出如下:

以工程源码1为例,动态输出如下:

FT601-测速

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

福利:工程代码的获取

代码太大,无法邮箱发送,以某度网盘链接方式发送,

资料获取方式:私,或者文章末尾的V名片。

网盘资料如下:

此外,有很多朋友给本博主提了很多意见和建议,希望能丰富服务内容和选项,因为不同朋友的需求不一样,所以本博主还提供以下服务:

相关推荐
用户805533698032 天前
不止三件套:QObject 属性系统全关键字与运行时反射!
c++·qt
xcyxiner2 天前
DicomViewer (vcpkg Windows和ubuntu编译)7
qt
Quz7 天前
QML Hello World 入门示例
qt
xcyxiner10 天前
DicomViewer (dcmtk读取dcm文件)5
qt
xcyxiner11 天前
DicomViewer (后台线程处理文件)4
qt
xcyxiner11 天前
DicomViewer (添加模型类)3
qt
xcyxiner12 天前
DicomViewer (目录调整) 2
qt
xcyxiner12 天前
dcmtk vtk vtk-dicom(gdcm) 编译(debug) v2
qt
LDR00614 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术14 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript