大话USB之开宗明义(一)2022-02-09

USB之开宗明义

1.范畴

基于cypress cyusb3014芯片以及赛普拉斯官方对于此芯片的支持,开发USB3.0的应用。提供从控制器到PC端到端的解决方案。简单来说,是将含控制器板卡与PC端通过USB3.0连接线相连,可以使二者之间进行高速通信。一个成熟的应用框图如下图所示,控制芯片(通常是FPGA、ASIC)通过GPIF II接口(通常用GPIF II状态机实现为同步从模式接口)与cyusb3014芯片通信(FX3),该芯片将数据打包成USB3.0协议的数据,通过传输线将最左端器件的数据传输到PC端,通过定制上位机程序,可以获取下位控制器发出的数据。当然,数据方向相反亦可通信。我的最终目的就是实现这个端到端的通信,将其中涉及到的内容做成了一个系列。
在这里插入图片描述

2.内容

上图显示,涉及到的内容大致包括USB本身的知识、FX3芯片的知识、主机端上位机软件、FPGA端下位机这四个方面。首先,从USB本身出发,要了解USB出现的来龙去脉、使用USB的优缺点、当前USB的生态、USB的发展前因后果(usb2-usb4,速度,理念等),以及关于USB的常识(结构,接口,电气信号,logo,class等),资源整合(TI FIDI cypress的方案,两个链接);其次,从USB原理的角度出发,应认识标准请求、熟悉上电连接的枚举过程(通信过程的建立)、事务与包的概念、了解四种传输方式的特点、描述符字段等内容;那么关于FX3芯片,应了解赛普拉斯提供的支持,包括了开发环境,文档资源整合管理,总的架构说明,测试速度的方法;固件开发角度,需要了解,GPIF II接口原理,数据流的过程(基本的概念),代码结构,代码流程,吞吐量的优化,控制传输原理与实现,同步传输原理与实现;关于FPGA端,应了解数据接收打拍的原因,时钟相位反转180°的原因,基本的读写时序,明确每一个沿的来由,典型现象的分析;Qt端开发usb的应用,如何添加库,如何用这个类,如何烧写。最后提供的一些调试的经验,出现的问题和现象。看是否条件具备,能够提供一些开源的代码,供大家使用。
以上是本系列成稿初期规划的内容,刚开始看时不明就里属于正常,随着学习的深入返回来再看,是否清晰自一目了然。知识是反复迭代的痛苦过程,追求的便是那醍醐灌顶时不由自主的得意洋洋。

3.马车理论

太多事情的产生和发展都独具特色,USB的产生和发展并不例外,异常的纷繁复杂。我曾尝试的厘清脉络,网上众说纷纭,看的实在头大。官方的言论又太过庞杂,因此捡几件重要的事情在后续文章中记录。首先讲一个老段子,“马车理论”,希望大家从这个故事中做好“理解不了的事情就先接受”的准备,说不定都是必然。
说航天飞机火箭助推器的宽度是由马屁股决定,这是为什么?现代铁路两条铁轨之间的标准距离是四英尺又八点五英寸。原来,早期的铁路是由建电车的人所设计的,而四英尺又八点五英寸正是电车所用的轮距标准。那么,电车的标准又是从哪里来的呢?最先造电车的人以前是造马车的,所以电车的标准是沿用马车的轮距标准。马车又为什么要用这个轮距标准呢?英国马路辙迹的宽度是四英尺又八点五英寸,所以,如果马车用其他轮距,它的轮子很快会在英国的老路上撞坏。这些辙迹又是从何而来的呢?从古罗马人那里来的。因为包括英国的长途老路都是由罗马人为它的军队所铺设的,而四英尺又八点五英寸正是罗马战车的任何其他轮宽的战车在这些路上行驶的话,轮子的寿命都不会很长。可以再问,罗马人为什么以四英尺又八点五英寸为战车的轮距宽度呢?原因很简单,这是牵引一辆战车的两匹马屁股的宽度。故事到此还没有结束。美国航天飞机燃料箱的两旁有两个火箭推进器,因为这些推进器造好之后要用路上又要通过一些隧道,而这些隧道的宽度只比火车轨道宽一点,因此火箭助推器的宽度是由铁轨的宽度所决定的。所以,最后的结论是:“路径依赖”导致了美国航天飞机火箭助推器的宽度,而这个宽度竟然是两千年前由两匹马屁股的宽度决定的。

4.初心

首先一点是为了将自己辛苦所学总结下来,为自己所用;与此同时,能帮助到其他人将善莫大焉;最后是希望能够听取建议,及时纠正认知偏差与认识不到位。我将竭尽全力,用图文并茂追求通俗易懂,用环环相扣以示逻辑缜密,用华丽辞藻保持个性。

5.方向

自己也是为了完成工作任务浅尝辄止,不够深入。经过长时间的摸索,对于想要深入研究的朋友提供几个方向。1,关注USB4的发展,期待实现”大一统”;2.同步传输的应用可以尝试开发,有着巨大的独特优势,保证带宽;3.UVC应用;4.我的上位机使用的cylib相当的ugly,使用说明像是东拼西凑的,功能相当的不完善,试着使用那个动态链接库;5.感觉使用摄像头直接连usb芯片是个很有意思的应用;6.芯片中还有很多扩展的内容,看看能否在这个基础上做一些应用,有一些新奇的想法,集成了一颗arm9,简直是宝藏。

版权声明:本文为CSDN博主「晓晓暮雨潇潇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_40615338/article/details/122455293

生成海报
点赞 0

晓晓暮雨潇潇

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

Arduino入门教程

Arduino编译环境下载 当前最新版ArduinoIDE 下载地址: Software | Arduino 认识Arduino IDE 点亮13号引脚的LED灯,持续一秒,然后灭掉,再持续一秒

基于运放的电压放大电路设计

基于集成运放设计一传感器信号采集电路。传感器输出信号为交流形式,峰峰值在100mV以内,频率为1000Hz以内,模数转换器允许输入电压在0~3V,要求设计传感器与模数转换器之间的信号采集电

【Arduino实验15 红外遥控电风扇】

目录 一、设计目的 二、设计要求 三、设计原理 1.舵机 2.直流电机 3.ULN2003驱动 四、硬件设计 1.舵机 2.直流电机 3.ULN2003驱动 4.红外遥控电风扇 五、软件设计 1.舵机控制程序 2.电

第一篇 FPGA基础知识

第一章 FPGA简介 第1节 什么是FPGA FPGA的全称为Field-ProgrammableGateArray,即现场可编程门阵列。 在开始学习FPGA之前,同学们首先应该清楚地了解FPGA的概念&#xf