当前位置: 首页 > news >正文

USB3.0PHY介绍

目录

USB3.0 PHY简介

UTMI LEVEL0 通信连接示意图

升级的UTMI+接口

ULPI(UTMI+ Low Pin Interface) 通信连接示意图


可以和FPGA搭配使用的USB3.0 PHY芯片

通过之前的介绍,我们大致了解到USB3.0(下称USB)整个协议异常复杂,就连物理层都需要SerDes(FPGA实现的情况)才可以,所以目前使用USB3.0时,搭档FPGA的最优解就是外置USB3.0 PHY片。

USB3.0 PHY简介

首先我们需要了解PHY具体完成哪些工作以及我利用FPGA能 实现哪些工作才能实现USB通信。

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

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

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

PS:目前高级一点的FPGA(带SerDes),可以在不借助外部PHY的情况实现USB(主要原因还是USB大量地借鉴了第二代PCIe协议,所以基本实现和PCIe差不多),但是相对外置PHY成本过高,需要使用IP等原因市场上还是很少这么做的。

在上图中还看到UTMI和PIPE,这是PHY和controller通信的接口,USB2.0PHY主要使用ULPI和UTMI,USB3.0主要使用PIPE,对于ULPI和UTMI的区别如下:

UTMI LEVEL0 通信连接示意图

升级的UTMI+接口

ULPI(UTMI+ Low Pin Interface) 通信连接示意图

以上三种接口都是和USB2.0 PHY通信的接口(如果还不理解的话,这三种接口类似网口中媒体接口-MII、RGMII、GMII等)。区别大概为USB PHY的位置:如果芯片的usb phy封装在芯片内,采用UTMI+的接口。不封装到芯片内的采用ULPI接口,这样可以降低pin的数量。

举例如下:我用FPGA实现USB2.0通信,我使用逻辑实现cntroller+外挂USB PHY的方式,那么我的接口基本使用ULPI接口(降低pin的数量)

USB3316 芯片逻辑框图 (来源:芯片数据手册)

我觉得逻辑部分有点复杂,我想把逻辑部分放到外部PHY里,我只需要控制FIFO或者一些低速接口即可实现整个USB通信,这种芯片内部带了cntroller+USB PHY,如下图所示:

FTDI600/601Q 芯片逻辑框图 (来源:芯片数据手册)

上图中可以看到FPGA和controller通信方式为FIFO或者SPI等接口,SPI主要时用在2.0/1.1时代,典型代表(MAX3421E)。而FIFO则是目前3.0时代比较常用的方式。

通过以上分析,其实目前常用的USB3.0 PHY也可以大致分为两种:带controller和不带controller,这两种PHY市场上倾向于带controller的芯片,主要原因是简单、方便、性价比高,这里在多说一句,目前市场上为了方便开发,USB3.0芯片内部会放置一个单片机,主要还是方便扩展接口,以方便芯片不单单只在USB3.0通信方面应用。下面一节我们就简单介绍一下市场上常见的USB3.0 PHY片。

http://www.dtcms.com/a/613341.html

相关文章:

  • Three.js的阴影相关实现路径
  • WPF转换器机制
  • SLAM中的非线性优-3D图优化之轴角在Opencv-PNP中的应用(三)
  • 如何用WPF做工控设置界面
  • ✨WPF编程进阶【7.2】:动画类型(附源码)
  • 建设网站的安全性介绍深圳seo优化排名推广
  • 上海迈诺网站建设东莞专业做网站的公司有哪些
  • 深度学习中的激活函数全解析:该选哪一个?
  • MySQL复盘总结
  • 对于多方安全计算的中止安全的理解
  • 西游记路线图:12-39,大唐到乌鸡国,幕后boss标注
  • 【学习笔记】DiffFNO: Diffusion Fourier Neural Operator
  • 电磁场中的旋度Curl与散度div
  • KCF 算法在ROS 2 操作系统里面(详解)
  • 《Dev-C++分辨率低-解决办法》
  • Dubbo异步调用实战指南:提升微服务并发性能
  • 【Linux】冯诺依曼体系结构与操作系统概述
  • 简单企业网站模板php做的网站预览
  • 2025年数维杯数学建模挑战赛(秋季赛)【ABCD题】论文首发+百种模型组合+代码分享
  • OpenHarmony内核开发实战手册:编译构建、HCK框架与性能优化
  • 自建开发工具IDE(五)数据库预览——东方仙盟炼气期
  • MATLAB 实现多能源系统(MES)多目标优化
  • 构建企业级机器学习平台:基于Ray和DeepSpeed的半导体AI实践
  • 卡索(CASO)汽车调查:终端体验,是汽车品牌隐形的胜负关键
  • C语言编译器安卓版 | 高效便捷的手机编程环境
  • 子集合判断(map)
  • 潍坊做外贸网站网页源代码在线查看
  • 【Liunx】进程间关系与守护进程
  • el-upload 上传管理与自定义优化实践
  • 开发中的英语积累 P13:Segment、Inclusive、Exclusive、Movement、Arbitrarily、Generic