目录
在视频存储和图像宽带领域中,经常遇到实时高速数据传输的要求。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层。