基于FPGA的USB2.0/USB3.0控制器设计概述

目录

1. USB 2.0协议

1.1 USB 2.0协议概述

1.2 USB 2.0接口FPGA实现简介

2. USB 3.0协议

2.1 USB 3.0协议概述

2.2 USB 3.0接口FPGA实现简介


       在视频存储和图像宽带领域中,经常遇到实时高速数据传输的要求。2000年4月,由Intel、Microsoft、NEC、Compaq、Lucent、Phillips等公司共同制订的USB2.0(Universal Serial Bus)传输协议,其速度远远超过了目前使用IEEE1394接口进行视频传输的400Mbps,达到了480Mbps;而且具有即插即用的PnP(Plug And Play)、可进行菊花链式的级联(通过USB HUB进行外围扩展)、可串连多达127个USB设备等优点。应用该协议可支持实时语音、音频和视频数据的传输。

1. USB 2.0协议

1.1 USB 2.0协议概述

      USB 2.0(Universal Serial Bus Version 2.0)是一种广泛使用的计算机接口标准,用于连接计算机和其他外围设备。USB 2.0支持高速数据传输速率最高可达480Mbps。USB2.0控制器结构框图如图所示:

       接口有三种:一种是与微控制器之间的功能接口;一种是与单口同步静态存储器(SSRAM)之间的接口;另外一种是与物理层之间的接口。这里符合UTMI(USB Transceiver Macrocell Interface)规范定义。控制器接口的信号框图如图所示。存储器采用标准的单口SRAM,其信号接口由32位数据线SRAM_DATA、15位地址线SRAM_ADDR及读写信号(SRAM_WE和SRAM_RD)组成,系统所需SRAM的容量为2 15×32bit=128KB。

       而与微控制器之间的接口信号包括32位数据线DATA、18位地址线ADDR以及DMA请求和响应信号(DMA_REQ和DMA_ACK)。由于要支持到128KB,需要17位地址线,另外还需要一根地址线来选通SSRAM和USB控制器内部的寄存器,总共需要18根地址线addr[17:0]。

1.2 USB 2.0接口FPGA实现简介

      FPGA与PC之间通过USB芯片完成数据的传输,USB芯片为两FIFO机制,分别为读、写FIFO。写数据时,FPGA将数据写入到W_FIFO中,FPGA发送一个PKG_END(结束信号),通知PC来取数据。读数据时,PC机先将数据写入R_FIFO,在一定条件下,FPGA通过USB控制模块将数据取出。

       其FPGA的写时序如下图所示:

1.首先addr选中W_FIFO,延时一个时钟(等待读写FIFO的切换)。

2.检测FIFO为空(flag_C)将W_en有效,同时开始向FIFO中写入数据W_data,记过两个时钟,flag_C拉高。

3.写满FIFO后,W_en无效,通知PC来读数据。4.Pkg_end为结束标志,随时可以拉底信号,结束写操作,通知PC机来读,这里没有使用该信号。只有写满FIFO,上位机才来取数据。

      其FPGA的读时序如下图所示:

1.首先addr选中R_FIFO,延时一个时钟(等待读写FIFO的切换)。

2.检测FIFO为满(flag_b)同时将O_en、R_en有效(或者O_en先有效、R_en再有效),开始从FIFO中读出数据R_data,记过两个时钟,flag_b拉高。

3.读空FIFO后,O_en、R_en无效。

2. USB 3.0协议

2.1 USB 3.0协议概述

       USB 3.0是一种高速串行总线标准,支持高达5Gbps的数据传输速率。它与之前的版本兼容,但引入了许多新的特性和技术改进。USB 3.0(也称为SuperSpeed USB)是对USB 2.0(High-Speed USB)的重大升级,提供了更高的数据传输速度、更好的电源管理以及其他增强特性。以下是USB 3.0与USB 2.0之间的一些主要区别:

1. 数据传输速度

  • USB 2.0:最高数据传输速率为480 Mbps(大约60 MB/s)。

  • USB 3.0:最高数据传输速率为5 Gbps(大约640 MB/s),比USB 2.0快约10倍。

2. 电气接口

  • USB 2.0:使用4针连接器,其中两针用于电源(VCC和GND),另外两针用于数据传输(D+和D-)。

  • USB 3.0:使用9针连接器,保留了原有的4针,新增了5针用于SuperSpeed数据传输(SS VBUS、SS ID、SS D+、SS D- 和 SS GND)。这意味着USB 3.0的接口向后兼容USB 2.0。

3. 数据编码

  • USB 2.0:使用NRZI(Non-Return to Zero Inverted)编码。

  • USB 3.0:使用8b/10b编码,这增加了数据传输的效率和可靠性。

2.2 USB 3.0接口FPGA实现简介

       USB3.0通信大致需要两部分:Controller和PHY两部分,Controller大多为数字逻辑实现(逻辑控制主要分为:MAC、CSR以及FIFO,MAC部分主要按照USB协议进行数据的打包和分解,并按照PIPE(USB3.0)总线的数据格式发送给PHY(3.0);CSR部分主要进行寄存器的控制(软件对寄存器进行操作主要是操作CSR寄存器;FIFO部分主要是实现高速和低俗转换。));PHY通常为模拟逻辑实现(实现并转串的功能,把UTMI或者PIPE口的并行数据转换成串行数据,再通过差分数据线输出到芯片外部)。

       PHY部分负责最底层的信号转换,作用类似于网口的PHY,这里如果大家需要了解具体的工作可以查看usb specification,因为和本文关系不大,所以不过多介绍了。

       Controller部分主要实现USB的协议和控制。也是目前普通FPGA可以实现的,整个作用类似网络中的MAC层。

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fpga和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值