Welcome
大家好,欢迎来到瑾芳玉洁的博客!
😑励志开源分享诗和代码,三餐却无汤,顿顿都被噎。
😭有幸结识那个值得被认真、被珍惜、被捧在手掌心的女孩,不出意外被敷衍、被唾弃、被埋在了垃圾堆。
🙂喜欢舞文弄墨咬文嚼字的混沌世界,懵懂无知走上了工科直男01的不归路。
😎八十公斤的体重勉强与大鹏一日同风起的浮力动态平衡,做不到宠辱不惊无欲无求的匀速直线运动,就按部就班的小波浪式前进,螺旋式蠕动。
🤵🤵🤵我是一名FPGA工程师!我就是我,一个没有颜色的错过的烟火,一个立志成为CSDN TOP100的黑铁FPGA选手!👌✌哦耶~~~
前言
基于Cypress cyusb3014芯片以及赛普拉斯官方对于此芯片的支持,开发基于USB3.0的应用。提供从控制器到PC端到端的解决方案。简单来说,是将含控制器板卡与PC端通过USB3.0连接线相连,可以使二者之间进行高速通信。一个成熟的应用框图如下图所示,控制芯片(通常是FPGA、ASIC)通过GPIF II接口(通常用GPIF II状态机实现为同步从模式接口)与cyusb3014芯片通信(FX3),该芯片将数据打包成USB3.0协议的数据,通过传输线将最左端器件的数据传输到PC端,通过定制上位机程序,可以获取下位控制器发出的数据。当然,数据方向相反亦可通信。我的最终目的就是实现这个端到端的通信,将其中涉及到的内容做成了一个系列。
知识架构
涉及到的内容大致包括USB本身的知识、FX3芯片的知识、主机端上位机软件、FPGA端下位机这四个方面。如下图所示。首先,从USB本身出发,要了解USB出现的来龙去脉、使用USB的优缺点、当前USB的生态、USB的发展前因后果(usb2-usb4,速度,理念等),以及关于USB的常识(结构,接口,电气信号,logo,class等),资源整合(TI FIDI cypress的方案,两个链接);其次,从USB原理的角度出发,应认识标准请求、熟悉上电连接的枚举过程(通信过程的建立)、事务与包的概念、了解四种传输方式的特点、描述符字段等内容;那么关于FX3芯片,应了解赛普拉斯提供的支持,包括了开发环境,文档资源整合管理,总的架构说明,测试速度的方法;固件开发角度,需要了解,GPIF II接口原理,数据流的过程(基本的概念),代码结构,代码流程,吞吐量的优化,控制传输原理与实现,同步传输原理与实现;关于FPGA端,应了解数据接收打拍的原因,时钟相位反转180°的原因,基本的读写时序,明确每一个沿的来由,典型现象的分析;Qt端开发usb的应用,如何添加库,如何用这个类,如何烧写。最后提供的一些调试的经验,出现的问题和现象。以上是本系列成稿初期规划的内容,刚开始看时不明就里属于正常,随着学习的深入返回来再看,是否清晰自一目了然。知识是反复迭代的痛苦过程,追求的便是醍醐灌顶那瞬不由自主的得意洋洋。
系列文章目录
💼Part1:USB原理
USB(Universal Serial Bus)是一种通用的、标准化的接口技术,通过统一的连接标准和协议,实现了设备之间的互联互通。USB接口的普及使得设备之间的连接更加简便和灵活,为用户提供了更便捷的数据传输和通信方式。同时,USB接口也在不断发展和演进,不断提升传输速度和功能,以满足不断增长的设备连接需求。本部分通过以下几篇文章介绍USB相关原理,目的是理清USB开发过程中需要熟悉的原理概念,同时普及USB相关的知识,最后能够把握开发的方向。
🔒第一篇文章: USB原理(1)发展历程简要
简介: 介绍USB诞生的背景,迭代的历程,与雷电之间的关系,介绍当前现状与今后趋势。
🔒第二篇文章: USB原理(2)相关概念
简介:介绍USB相关概念,包括USB拓扑结构、接口类型、电气标准,Class等。
🔒第三篇文章: USB原理(3)设备连接、传输类型
简介:介绍USB设备之间建立主从点对点通信的过程,梳理相关概念之间的关系,介绍四种传输模式。
🔒第四篇文章: USB原理(4)标准请求、传输结构
简介:介绍标准请求、传输结构与数据交互之间的关系,介绍包、域、事务、传输模式之间的关系。
🔒第五篇文章: USB原理(5)枚举描述符
简介:介绍各种USB描述符的各字段的含义,这对后续的固件开发至关重要。
💼Part2:Cyusb3014固件开发
固件(firmware)开发指的是给Cyusb3014芯片编程,通过Cypress资源整合、开发环境简介熟悉开发流程。通过内部结构、数据流走向介绍,以及对固件代码结构、流程的分析,帮助读者开发适合自己应用的固件。给出控制传输,同步传输实现的案例以供参考,谈及吞吐量优化的方法实现性能提升。
🔒第一篇文章: Cyusb3014开发(1)资料整合
简介:简介市场上USB3.0的方案,简介Cypress的USB方案,梳理概括Cypress提供文档的内容。
🔒第二篇文章: Cyusb3014开发(2)开发环境
简介:USB开发过程中用到的调试工具和开发环境介绍,工欲善其事必先利其器。
🔒第三篇文章: Cyusb3014开发(3)FX3内部数据流
简介:介绍Cyusb3014芯片内部数据流的构建,以及数据流过程中涉及到的概念和术语。
🔒第四篇文章: Cyusb3014开发(4)固件代码解析
简介:基于AN65974工程代码,介绍固件代码的组成结构,固件代码的运行流程,介绍如何构建自定义应用。
🔒第五篇文章: Cyusb3014开发(5)GPIF II接口
简介:介绍GPIF II接口特性,系统构成及应用;详细说明GPIF II Designer工具interface、statemachine面板。
🔒第六篇文章: Cyusb3014开发(6)控制传输实现
简介:从原理到实现,介绍USB控制传输如何发起,上位机、FPGA、固件端分别如何实现。
🔒第七篇文章: Cyusb3014开发(7)同步传输实现与吞吐量优化
简介:介绍了同步传输的原理,基于AN65974实现同步传输的步骤以及影响吞吐量的因素和实测数据。
💼Part3:FPGA GPIF II接口开发
Cyusb3014芯片通过GPIF II接口与外部控制器通信,通过介绍各个信号的作用,读写操作的时序,以及通过零包和短包实现更为灵活的数据的传输,最后对USB3.0接口完成读写测试,提供源码。
🔒第一篇文章: FPGA开发(1)明确固件配置
简介:FPGA开发要与固件配合,因此要明确当前FPGA开发基于怎样的固件配置并指出原因,此外介绍引脚功能。
🔒第二篇文章: FPGA开发(2)GPIF II读写时序分析
简介:介绍基本的读写时序,并分析读写过程中产生的现象,分析官方代码。
🔒第三篇文章: FPGA开发(3)GPIF II短包零包时序分析
简介:介绍时序参数,阐明源同步时钟反相原因,介绍短包和零包的应用场景和时序,本文是GPIF II接口的重要组成部分。
🔒第四篇文章: FPGA开发(4)上下位机读写测试
简介:上下位机配合,在明确固件配置的情况下,完成上下位机读写测试,给出源代码。
💼Part4:QT上位机
🔒第一篇文章: QT基于CyAPI开发USB3.0上位机
简介:介绍基于Qt开发需要的准备工作,开发环境搭建;介绍BULK、控制、同步传输的实现;最后介绍了应该如何发送不同长度的数据包。
💼Part5:总结应用篇
总结Cyusb3014芯片开发过程中涉及上位机,下位机,固件开发部分的调试经验。将前面文章提及的理论知识与实践结合,将上下位机以及固件开发结合起来,开发具有实际应用意义的项目。
🔒第一篇文章: FX3开发调试经验总结
简介:分固件、FPGA、上位机三个部分介绍开发过程中积累的宝贵经验。
🔒第二篇文章: FX3应用(1)采集OV5640显示
简介:采集OV5640摄像头数据,进入DDR3做乒乓缓存,随后经过USB3.0发送到上位机,并在上位机实时显示。提供工程源码和设计思路。
规划中:UVC应用🤪~~
开发环境
如无特殊说明,本系列文章开发环境配置如下:
●OS: Windows10 64bit
●开发环境:CypressSDK1.3.4 QT5.15.2 Vivado2020.2
●芯片厂家:Cypress cyusb3014
●仿真工具:Vivado Simulator
●开发语言:C/C++ Verilog-HDL
传送门
FPGA通信接口专栏
FPGA原语和IP核
FPGA开发必备技能专栏
Qt实战提升篇专栏
基于matlab与FPGA的图像处理
ZYNQ从零开始
文章持续更新中🤪 |
🔈 欢迎您关注我的CSDN博客:https://blog.csdn.net/weixin_40615338?type=blog
🔈 本文由 瑾芳玉洁 原创👨🎓,相互学习,共同进步!
🔈批评,宝贵建议,兼职合作,欢迎交流📧jackxi0207@gmail.com!