目录
- 1、前言
- 2、相关方案推荐
- 3、FT601芯片解读和时序分析
- 4、详细设计方案
- 5、工程源码1详解-->Artix7-35T版本
- 6、工程源码2详解-->Artix7-100T版本
- 7、工程源码3详解-->Kintex7--35T版本
- 8、工程源码4详解-->Zynq7020版本
- 9、工程源码5详解-->Zynq7100版本
- 10、工程源码6详解-->KU040版本
- 11、工程源码7详解-->KU060版本
- 12、工程移植说明
- 13、上板调试验证
- 14、福利:工程代码的获取
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 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、详细设计方案
设计原理框图
设计原理框图如下:
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名片。
网盘资料如下:
此外,有很多朋友给本博主提了很多意见和建议,希望能丰富服务内容和选项,因为不同朋友的需求不一样,所以本博主还提供以下服务: