文章部分内容参考了相关论坛中的内容:
对文章中内容感兴趣或者有不懂的可以咨询QQ:2859340499
B站对应讲解本文视频链接
首先来说一下USB这个大家都知道的东西吧:
USB通用串行总线,是应用在计算机领域的接口技术。USB接口具有传输速度快,可以广泛地应用在各类的高速数据传输当中,相比于大家熟悉的串口数据传输要快出不知道多少倍了。

我们最常见的当属USB2.0和USB3.0,这两个之间可以通用,但是也有区别:
1.USB3.0的速率是5Gbps,而USB2.0的速率是480Mbps。
2.从USB外观上来看,USB2.0通常是白色或黑色,而USB3.0则改为蓝色接口。
3.从USB插口引脚上来看,USB2.0采用4针脚设计,而USB3.0则采取9针脚设计,相比而言USB3.0功能更强大。

总结来说就是USB2.0很通用,因为很多电脑上可能没有USB3.0的接口,但是一定有USB2.0的接口,而且USB2.0的传输速度也能满足一般条件下的高速数据传输。

1.先附上所设计的实物图(想要电路pcb文件咨询博主),然后针对实物图一点点展开:

所选用的芯片是Cypress 公司的EZ-USB FX2 是世界上第一款集成USB2.0 的微处理器,它集成了USB2.0 收发器、SIE(串行接口引擎)、增强的8051 微控制器和可编程的外围接口。FX2 这种独创性结构可使数据传输率达到480MBit/s。在FX2中,智能SIE 可以硬件处理许多USB1.1 和USB2.0 协议,从而减少了开发时间
和确保了USB 的兼容性。该器件具有如下特性:

(1)内嵌480MBit/s 的收发器,锁相环PLL,串行接口引擎SIE集成了整个USB 2.0 协议的物理层。
(2)内嵌可工作在48MHz 的增强型8051,该8051 控制器具有以下特征:

  • 具有256Byte 的寄存器空间,两个串口,三个定时器,两个数据指
    针。
  • 四个机器周期(工作在48MHz 下时为83.3ns)即组成一个指令周
    期。
  • 特殊功能寄存器(包括I/O 口控制寄存器)可高速访问。
  • 应用USB 向量中断,具有极短的ISR 响应时间。
  • 只用作USB 事务管理,控制,不参与数据传输,较好地解决了
    USB 高速模式的带宽问题。

(3) “软配置”——USB 固件可由USB 总线下载,片上不需集成ROM。
(4) 拥有四个FIFO 接口,可工作在内部或外部时钟下。端点和FIFO 接口
的应用使外部逻辑和USB 总线可高速连接。
(5) 一种单片USB 2.0 外设解决方案,不需要外部的协议物理层,FX2 把所有的功能集成在一个芯片上。

然后下面这幅图片是FX2 控制器的内部结构图(参照了小梅哥的图片,在此安利一波小梅哥的FPGA,真的很好)。

对于FX2 来说,可以通过两个不同的模式将 FX2 连接至 FPGA。这两个模式分别为通用可编程接口( GPIF)模式和从设备 FIFO 模式。
(1)GPIF 模式: 在该模式下, FX2 作为外部系统的主设备使用,它所生成的所有控制信号用于对外部系统进行读和写操作。当外部系统不能作为 FX2 的主设备(例如,图像传感器与 FX2 相连接的 USB 摄像机应用)时,通常优先使用 GPIF 模式。在这种情况下,接口实现的复杂操作将由 FX2 执行。
(2)从设备 FIFO 模式(通常所用的模式,注重了解): 在该模式下,连接至 FX2 的外部系统能够生成读和写控制信号,因此,它能作为FX2 的主设备使用。在基于FPGA 的应用中,FX2 一般被配置为从设备 FIFO 模式。下图为FX2 使用从设备FIFO 接口与外部FPGA 连接时的系统框图。

简单地说,在从设备FIFO模式下,FX2 中的8051 固件只是配置Slave FIFO 相关的寄存器。配置完成之后FPGA就可以按照Slave FIFO 的时序与主机进行通讯,通讯过程中不需要8051 固件。就相当于FPGA控制一个外设(比如就像控制一个串口一样简单)

通讯原理搞明白之后就是根据引脚设计电路,原理图如下图所示:

2.下面就介绍如何具体控制USB2.0模块了:
Cypress 提供了一个基本的开发工具包,供用户开发USB 应用,名为ySuiteUSB3.4,网上关于USB2.0开发的资料也有很多,包括安装 FX2 的开发软件以及安装USB2.0模块的驱动程序,并且很重要的是在使用FPGA 控制USB2.0模块之前要对 USB2.0 芯片烧写固件(不同的应用模式下,所烧写的固件是不一样的)。 想要资料可以咨询博主。

在配置完成之后可以通过官方网站提供的例程和上位机软件,使用FX2 芯片上的8051 完成数据在OUT 和 IN 端点间的搬运工作,在整个数据传输的过程中不需要有外部的设备(FPGA和STM32等控制器),通过USB2.0模块内部就可以完成数据的传输。但是实际工程中往往是将下位机采集到的数据通过USB2.0模块传输到上位机中,所以只通过USB2.0模块自身的数据回环实验是没有多大意义的,所以接下来就介绍如何通过FPGA来控制数据的传输。

测试USB2.0模块辅助了AD模块(点击这里),将AD模块采集回来的数据通过FPGA送到USB2.0模块上,然后USB2.0模块将数据传输到电脑上,完成数据的高速采集,如下图所示是程序的RTL视图,从RTL视图可以直观地看到USB2.0模块的使用方法:

其中关于读取USB2.0模块的数据可以直接通过FPGA软件中的Signal Tap II逻辑分析仪来进行抓取,如图所示:

关于USB2.0的知识还有很多,如何设计USB2.0模块,并且如何写程序也需要很长时间,需要不断去练习才能掌握USB协议,并且会用所设计的USB模块进行高速数据的传输,USB的各种知识很多,已经将博主设计的USB硬件电路pcb文件,程序,说明文档等打包好,有兴趣的可以联系博主分享,后期博主也会发布关于以太网数据传输以太网高速数据传输的文章,欢迎阅读。

如果对文章中内容有不懂的,文中涉及的软件等,欢迎骚扰,或者对博主设计的USB2.0电路图以及程序等所有资料,可以联系博主QQ分享(所有的软件固件,说明文档,程序,模块pcb文件):2859340499.

基于FPGA的USB2.0数据传输(通过本文可以自己设计USB2.0模块)相关推荐

  1. 基于FPGA的VGA显示对贪吃蛇游戏的设计

    基于FPGA的VGA显示对贪吃蛇游戏的设计 摘要 目前,电子数码产品已经进入了人生活的方方面面,而大多数电子产品都依靠显示屏来传递信息,由此可见用电路对显示屏进行控制的研究有很大的实用价值和市场需求. ...

  2. 基于FPGA和Verilog实现的9层电梯控制器仿真设计

    资源下载地址:https://download.csdn.net/download/sheziqiong/85628810 数字逻辑与数字系统设计之电梯控制器设计 一.设计目的及要求 设计要求 电梯最 ...

  3. 基于FPGA的大屏幕全彩LED扫描控制器设计

    关键字:FPGA 大屏幕 LED 1 引言 作为大型平板显示设备的一种,LED 显示屏以其使用寿命长.维护费用低.功耗低等特点在显示领域占有重要的位置.特别在近年,带有红.绿.蓝三基色以及灰度显示效果 ...

  4. 基于FPGA的网络系统仿真分析

    基于FPGA的网络系统仿真分析 //写地址的产生. reg[9:0]waddress; always @(posedge i_clk or posedge i_rst) begin      if(i ...

  5. 基于FPGA的浮点数运算

    一.FPGA有两种方法表示浮点数 1.自己定义 最高位为符号位 ,中间n位为整数部分 ,最后m位为小数部分 在计算浮点数的运算时候需要转换为定点数 3.14转换为二级制为:11.00100011 自己 ...

  6. 基于FPGA的竞赛抢答器

    基于FPGA的竞赛抢答器,使用verilog语言设计实现. 实验要实现的基本功能是 主持人按下开始,三个人抢答,主持人可以给选手加分或者减分,分数用数码管来显示.以下是主要功能和指标: (1)设计一个 ...

  7. altera fpga 型号说明_基于FPGA的USB2.0接口通信

    欢迎FPGA工程师加入官方微信技术群 点击蓝字关注我们FPGA之家-中国最好最大的FPGA纯工程师社群 概述 本文主要介绍一种基于FPGA的FT232H接口通信开发方案.传统的USB通信开发对工程人员 ...

  8. 基于FPGA实现USB2.0接口方案设计

    1 USB2.0简介 USB2.0因其数据传输速率快和接口的多样化而广泛使用.USB 2.0 已经广泛使用于个人电脑中.USB2.0优势如下: 1)速度快,在高速块传输,最大数据字段的模式下,最高可以 ...

  9. 基于FPGA的线阵CCD实时图像采集系统

    基于FPGA的线阵CCD实时图像采集系统 2015年微型机与应用第13期 作者:章金敏,张 菁,陈梦苇 2016/2/8 20:52:00 关键词: 实时采集 电荷耦合器件 现场可编程逻辑器件 信号处 ...

最新文章

  1. 使用NMAKE管理工程
  2. c++ uint32转为int_【转】用python将GBK编码文件转为UTF-8编码文件
  3. Python Django单表增删改操作
  4. Java开发经典面试题分享,建议收藏
  5. 《leetcode》valid-parentheses
  6. ABAP下载的病毒扫描Virus Scan
  7. 楼主考南师计算机学硕,【图片】2019南师大新传学硕考研经验贴【南京师范大学研究生吧】_百度贴吧...
  8. 定时器中断实验 编写程序使定时器0或者定时器1工作在方式1,定时500ms使两位数码管从00、01、02……98、99每间隔500ms加1显示。
  9. 各种排序算法总结及C#代码实现
  10. 公司新办公楼休息间能看到富士山了
  11. [AutoSAR] BSW模块的服务层,重点关注OS部分
  12. python管道怎么使用_如何在多个流程中正确使用管道(2)
  13. windows 安装 dnw、fastboot 驱动的时候遇到问题(数字签名)
  14. Java二叉树的最大宽度详解版
  15. canoco5主成分分析步骤_SPSS数据分析1——主成分分析
  16. 个人理财第十课-【货币基金】筛选实操课
  17. python 二值化细化_Python - 图像的细化(骨架抽取)
  18. 如何培育一个聪明的孩子(图)
  19. 爬取94神马网的电影信息
  20. Intellij IDEA里的md5验证

热门文章

  1. 机器学习算法竞赛实战--3,数据探索
  2. OpenTSDB部署
  3. Android热修复1
  4. JAVA异常处理——三角形面积
  5. c语言判断txt文件是否为空,如何判断文档或文件夹为空?
  6. java 导入excel表格(批量导入),下载excel模板,导出表格
  7. 景观生态学原理| 7 景观生态规划与设计
  8. android开发板配ip,itop4412开发板-Android4.4-设置静态IP
  9. 服务下线-我的命运我做主
  10. 【Blender教程】照片级写实人物肖像制作全流程学习