USB SS-PHY Tuning

2023-05-16

1 USB 3.0 PIPE PHY
1.1 USB 3.0 PHY
USB 3.0 PHY = PIPE wrapper + PCS + SerDes

1.2 SS PHY电流源
CML电流源串联在NMOS管的Source中,电流是16 mA,所以差分电压摆幅是16 mA x (50 // 50) x 2 = 800 mV。

1.3 PIPE PHY数据线宽度
DWC_usb3_databook_2.50a.pdf
USB 3.0 PIPE PHY(SerDes = PCIe Gen2)的数据线宽度是可以设置的,最大宽度分别是Tx 32bit、Rx 32bit,需要根据PIPE PHY的接口频率来设置数据线宽度。如果PIPE PHY运行在128MHz,那么Tx和Rx的数据线宽度都是32bit;如果PIPE PHY运行在256MHz,那么Tx和Rx的数据线宽度都是16bit。

USB 3.0 Gen1的速度5Gbps,是指Tx和Rx的速率都是5Gbps(128MHz x 4bytes或者256MHz x 2bytes)。
USB 3.0 Gen1的速度5Gbps(625MB/s),协议开销(overhead)占用了20%带宽,所以实际有效速度是500MB/s。
USB 3.0 Tx或者Rx的传输速率虽然是5Gbps,但实际上数字信号的方波频率是2.5GHz(传输2个bit对应一个方波)。

Intel APL (Gen9, A39X0) 8-port MPH xHCI的物理层名字是ModPHY(High Speed I/O Modular Physical Layer for Intel USB 3.0)。

1.4 Lane polarity reversal
USB SS SerDes支持差分信号极性反转。

You can swap the SSTX and SSRX pairs but not the USB2 (D+/D-) pair. This is because, during SuperSpeed enumeration, certain training sequences (called TSEQs) are sent and the D10.2 symbol in this is used to detect if lane polarity inversion is done (refer to section 6.4.2 of the USB 3.0 spec). However, such lane inversion detection is not done in USB 2.0 enumeration.

1.5 Rx.Detect
Link层LTSSM会周期性驱动PHY的PIN TxDetectRx到高,让PHY做Receiver Detection。Receiver的SSRX+/-上各有一个等效的50欧姆下拉电阻,并联形成25欧姆电阻。
设备连接前的充放电时间常数T = R_Detect * C_Parasitic
设备连接后的充放电时间常数T = (R_Detect + R_Term) * (C_AC + C_Parasitic)
Probe SSTX+, you can see the 500mV Rx.Detect pulse without connecting device, its period is 13.75ms (72Hz), pulse width is less than 40us.

1.6 Redriver Rx.Detect
If Redriver detects receiver on its transmitter, then it assumes there is a valid termination. In this case, Redriver turns on its own Rx 50-ohm termination, this signals the xHCI to start Rx.Detect. Redriver does not include LTSSM, but Retimer includes LTSSM.

1.7 Electrical Idle
Electrical Idle means the differential voltage applied to the link is 0mV (no signaling). If there is 0mV differential, then the Rx cannot recover a clock and bit/symbol lock is lost.
In Logical Idle the Rx maintains bit/symbol lock because the Tx will send IDLE symbols. The IDLE symbols do not contain data and are thrown away by the Rx.

1.8 SerDes眼图
SerDes接收端眼图闭合的原因,不是由于高频的损耗太大,而是由于高低频的损耗差异过大,导致码间干扰严重,因此不能张开眼睛。

2 Link Layer
2.1 LTSSM
SS.Disabled - 产生中断
SS.Inactive - 产生中断
Compliance Mode - 不产生中断

Refer to LINK_IRQHandler() of CH569 USBSS.
USBHS: 0x4000_9000
USBSS: 0x4000_8000
https://www.wch.cn/downloads/CH569EVT_ZIP.html

2.2 Tx - Compliance mode
CP0 is sent by DUT Tx+/- firstly, when trigger device sends Ping.LFPS to DUT Rx+, then DUT will toggle CP1/CP7/CP8 to oscilloscope via Tx+/-.
CP1: SSC,调制三角波(30~33kHz)

Enter compliance mode :
1)  Plug in USB host cable w/o fixture connected
2)  Disable any power management features:
a.  echo on > /sys/bus/usb/usb1/power/control
b.  echo on > /sys/bus/usb/usb2/power/control
3)  /system/bin/r 0xA800430 0x10340
4)  Plug in the USB test fixture
5)  Compliance pattern is generated on the scope

2.3 Rx - Loopback mode
这里的环回表示Link层,不是PHY层的PCS或者PMA环回。
Figure 2-1 USB Rx Test-Loopback

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pvb3NlbnBpbg==,size_16,color_FFFFFF,t_70

Need a BERT(Bit Error Rate Tester, 误码率测试仪)
Polling.LFPS->65536 Rx.EQ->256 TS1->256 TS2(TS2 Symbol 5 bit2, Loopback)->Loopback

Verilog big endian data, 0xBC means COMMA
Rx.EQ: 32'hBCFF17C0, 32'h14B2E702, 32'h82726E28, 32'hA6BE6DBF, 32'h4A4A4A4A, 32'h4A4A4A4A, 32'h4A4A4A4A, 32'h4A4A4A4A

TS1: 32'hBCBCBCBC, 32'h00004A4A, 32'h4A4A4A4A, 32'h4A4A4A4A

TS2: 32'hBCBCBCBC, 8'h00, {4'h0, 1'h0, loopback > 0, 1'h0, hot_reset_count > 0}, 16'h4545, 32'h45454545, 32'h45454545

2.4 APL xHCI LTSSM stuck issue
not warm reset yet, waiting 200ms
not enabled, trying warm reset again

This log shows ss port stuck issue.
Disable USB3 roothub port: Clear power Feature and Set BH_Reset Feature.
23 01 0008 port1 0000
23 03 001c port1 0000
Disable USB3 non roothub port: Set Rx.disabled Feature.
23 03 0005 0400|port1 0000
Add # define DEBUG at the first line of the hub.c file (above the header files) for enabling Linux dynamic debug log.

3 Standalone SerDes
Freescale MC92610
STM C65SPACE-HSSL SerDes, HSSL stands for High Speed Serial Link

4 USB4 v2
借助PAM3调制技术,可实现上行120Gbps(Tx),下行40Gbps(Rx),也即是3Tx+1Rx。

5 URLs
daisho USB
http://www.greatscottgadgets.com/daisho/

[RFC v2 00/22] USB 3.0 hub support & xHCI split roothub for 2.6.38
http://www.spinics.net/lists/linux-usb/msg40949.html

6 Abbreviations
ARC:Argonant RISC Core
AT91SAM9260:SAM means Smart ARM-based Microcontroller
ATMEL SAMBA:ATMEL Smart ARM-based Microcontroller Boot Assistant
DWC2:Design Ware Controller 2,Apple的嵌入式设备,包括iPad和iPhone都是使用的DWC2
EOM: On chip Eye Opening Monitor for USB PIPE PHY receiver side
HUB3CV:USB 3 Hub Command Verifier Ver. 2.1.12.1
ISP1161:Philips' Integrated host Solution Pairs 1161,“Firms introduce USB host controllers”,https://www.eetimes.com/document.asp?doc_id=1290054
LatticeECP: EConomy Plus, integrate USB SerDes
PAM-4:每个符号表示2个bit,眼图有3个眼睛;而NRZ眼图只有一个眼睛
SL811HS:Cypress/ScanLogic 811 Host/Slave,性能上与ISP1161(Integrated host Solution Pairs 1161)相当
TDI:TransDimension Inc.,该公司首先发明了将TT集成到EHCI RootHub中的方法,这样对于嵌入式系统来说,就省去了OHCI/UHCI的硬件,同时降低了成本,作为对该公司的纪念,Linux内核定义了宏ehci_is_TDI(ehci);产品UHC124表示USB Host Controller;收购了ARC USB技术;现已被chipidea收购,chipidea又被mips收购
TT:Transaction Translator(事务转换器,将USB2.0的包转换成USB1.1的包)
U0:USB SS link is Up
USB BH reset:Bigger Hammer or Brad Hosler,表示warm reset;you may be confused why the USB 3.0 spec calls the same type of reset "warm reset" in some places and "BH reset" in other places. "BH" reset is supposed to stand for "Big Hammer" reset, but it also stands for "Brad Hosler". Brad died shortly after the USB 3.0 bus specification was started, and they decided to name the reset after him. The suggestion was made shortly before the spec was finalized, so the wording is a bit inconsistent.
usb3_mifgen:Altera Memory Initialization File
VNA:Vector Network Analyzer,矢量网络分析仪

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

USB SS-PHY Tuning 的相关文章

  • 在c++中接收USB设备插入的通知/事件/信号

    我已经寻找了一段时间 但一直无法找到这个问题的答案 我正在尝试接收特定 USB 设备的连接通知 这是我所知道的 我运行的是 linux 内核版本 3 2 我有识别 USB 设备所需的 ID 我创建了一个用于读取和写入设备的内核模块 内核模块
  • Android Studio 无法将 Nexus 7 识别为设备

    我在 Nexus 7 上运行我在 Android Studio 中开发的应用程序时遇到问题 在使用同一台平板电脑和计算机 运行 Windows 8 之前 我已成功使其正常工作 但自从我的笔记本电脑修好并且所有内容都被擦除后 我确信我的开发环
  • python 3,尝试从多个 HID 输入读取,Raspberry Pi

    我有一个条形码扫描仪连接到我的 RasPi 没有任何 tty 这意味着没有显示器的无头 换句话说 数字输入的键盘记录器 该扫描仪可读取 GTIN 或 EAN 等数字条形码 它有效 脚本在启动时由 sh 启动 我使用的脚本如下所示 impor
  • 如何阻止 Linux 初始化 USB HID 设备

    我有一个 USB HID 设备 可以在两种不同的模式下工作 模式的选择基于发送给它的 USB 枚举 初始化数据包的顺序 我使用的是运行 Raspbian 的 Raspberry Pi 3 但是如果我为桌面 Ubuntu 发行版编译代码 我也
  • 如何在 OSX Catalina (10.15) 中使用 Wireshark 捕获 USB 流量

    我正在尝试让 Wireshark USB 捕获工作 显然 Catalina 之前的技巧就是调出界面 以便 Wireshark 可以看到它 https forums developer apple com thread 95380 https
  • 使用 C# 向 USB 连接的 GPRS 调制解调器发送 AT 命令

    任何人都可以给我一个关于如何访问连接到 USB 端口的 GPRS 调制解调器的良好指示或指南 我应该为我的程序制作一个 USB 驱动程序以将 AT 命令发送到调制解调器吗 或者就像一个路由器 我可以使用IP地址访问它 谢谢 如果 Windo
  • 发现多个 USB-IrDA 设备,打开并连接每个设备的套接字

    对于任何优秀的套接字程序员 是否可以使用套接字枚举通过 USB 端口连接到 PC 的多个活动 IrDA 设备 如果是这样 怎么办 这确实是我的主要问题 帖子的其余部分完善了细节并描述了我所尝试的内容 我正在使用 Microsoft SDK
  • 通过 USB 记忆棒携带和操作整个开发盒。可行的?

    最近我一直在考虑投资一个有价值的 USB 笔式驱动器 类似于 并在虚拟机上安装操作系统并开始在其上进行开发 我的想法是 我希望能够携带我的开 发箱 成为一名Windows 发行版用于 Net 开发和Linux发行版像 RoR Perl 之类
  • 使用 adb 连接到 LG 手机时出现问题 (Mac OS X 10.7.5)

    当我跑步时adb devices没有设备显示为已连接 我的设备是运行 4 4 2 的 LG Optimus Exceed 2 周围有很多这样的帖子 所以这就是我所做的 我正在使用电话附带的数据线 它会充电并尝试同步照片 因此这不是问题 切换
  • 使用自定义 INF 的微控制器的 USB 驱动程序安装问题

    我正在使用 NXP LPC1788 微控制器 并尝试在主机上创建一个驱动程序以通过 USB 与其进行通信 我相信我已经设法让设备正确处理标准 USB 请求 PC 能够正确读取字符串描述符 不过 我在编写示例 USB 驱动程序并为设备安装它时
  • WriteFile 返回错误代码 87

    我正在开发一个写入 HID 设备的程序 但收到错误 87 WriteFile 函数参数无效 我从 Jan Axelson 的 USB Complete 获得了这些功能 所以我不确定为什么会收到错误 我用它来查找我的设备 private vo
  • Windows 8.1 上的 Pyusb - 没有可用的后端 - 如何安装 libusb?

    使用 pyinstaller 3 1 python 2 7 9 和 tkinter 尝试使用 pyusb 而不是 pyserial 但没有可用的后端 调查Windows 上的 Pyusb 没有可用的后端 https stackoverflo
  • Android:如何以编程方式连接/断开 OTG

    我想在我的 Android 设备中以编程方式连接和断开 USB OTG 笔式驱动器 硬盘驱动器等 对于USB 我使用以下路径在连接到PC时绑定 取消绑定USB sys bus usb drivers usb bind or unbind 我
  • Java 两个独立键盘的独立输入

    我有两个 USB 键盘插入同一台机器 我正在开发一个 Java 应用程序 是否有办法允许 Java 应用程序分离出它来自哪个 USB 键盘 即是否有类似的东西http docs oracle com javase 6 docs api ja
  • c#.NET USB设备持久标识符

    我正在寻找一种在 C 中为 USB 插槽 更具体地说是 SD 卡读卡器 提供持久标识符 在最终用户拔下集线器 重新启动计算机时 的方法 驱动器号并不总是分配给同一个插槽 但我需要一种方法来物理识别插槽 A 一旦我能够识别它 我就可以连接到驱
  • Android USB_DEVICE_ATTACHED 持久权限

    如何让 Android 在每次重新连接 USB 设备时都不再请求权限 我想让它记住 USB 设备的 默认使用 复选标记 这样我就不必每次都向同一设备授予权限 我以编程方式检测 USB 设备 Android 手机 何时连接到我的主机设备 An
  • 获取已连接 USB 设备的端口名称

    当USB设备连接到计算机时 如何使用C 代码获取它所连接的端口名称 我找到了很多方法来查找 USB 何时连接 断开 驱动器号 路径 设备 ID 等 但没有找到任何明确的示例来说明如何知道它连接到哪个端口 我看到了一种可能的解释 但这涉及很多
  • Delphi - 如何获取 USB 可移动硬盘和记忆棒的列表?

    在我的应用程序 Delphi 中 我需要列出所有 USB 存储设备 这些可以是闪存棒or外部存储驱动器 有一个Jvcl成分JvDriveCombo 并且它有DriveType属性 问题是我是否选择DriveType Fixed那么除了外部驱
  • 有没有办法通过 WiFi 部署/调试 Cordova Android Ionic 应用程序? [关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 这是一个双胞胎this https stackoverflow com questions 46596236 is there a w
  • Python:获取USB闪存驱动器设备的名称[windows]

    我正在尝试编写一个小程序 它将能够读取有关 REMOVEABLE DEVICE USB 的一些信息 我试过了pyusb https github com walac pyusb但我无法提取我需要的数据 我想从系统中读取 USB 设备的名称

随机推荐

  • 2016 CSDN最佳博客(Android)

    无意中在CSDN上看见了今年的十佳博客 xff0c 虽然现在还没有分出伯仲 xff0c 但是结果大概已知 xff0c 其中看了几篇文章 xff0c 感触挺深 xff0c 故把几大博客整理下来 xff0c 一方面方便广大博友 xff0c 另一
  • java中线程池-ThreadPoolExecutor中corePoolSize和maximumPoolSize的理解

    span class token keyword import span java span class token punctuation span io span class token punctuation span IOExcep
  • 顺丰Java面试

    1 jvm中复制算法的原理 xff1b 2 线程有哪几种状态 xff1b 3 观察者模式的原理 xff1b 4 mysql中默认的隔离级别是什么 xff1b 5 redis常用的数据结构 xff1b 6 网络七层模型中的网络层的作用 xff
  • 关于双系统redhat7.6网络不可用

    博主安装的双系统是windows10和redhat7 6 xff1b 本来安装完一个星期内都是正常的 xff0c 两个都可以上网 xff0c 但是不知道是不是有一天windows自动更新了的原因 xff0c redhat突然就连不上网了 此
  • updateFill不生效

    mybatis plus core版本 xff1a 3 4 1 现象 xff1a insertFill正常 xff0c 但是updateFill一直执行不到 原因 xff1a 因为实体的参数名称没有定义为et 注 xff1a Constan
  • java指定时间,增加一年、一天、减十天等

    代码如下 xff1a span class token keyword public span span class token keyword static span span class token keyword void span
  • vue入门

    1 安装node xff08 node和npm是绑定的 xff0c 安装了node xff0c npm自然也就有了 xff09 xff1b 2 设置淘宝镜像 npm config set registry https registry np
  • 系统调用和进程切换时的寄存器信息保存在哪里?

    系统调用是什么 xff1f xff1f xff1f 系统调用是操作系统为用户提供的一系列API xff1b 系统调用将用户的请求发给内核 xff0c 内核执行完以后 xff0c 将结果返回给用户 xff1b 以open为例 xff0c 进行
  • 给一副扑克牌,求最长的顺子

    span class hljs preprocessor include lt iostream gt span span class hljs preprocessor include lt vector gt span span cla
  • lvs的四种工作模式及其优缺点比较

    1 VS NAT xff08 地址翻译实现虚拟服务器 xff09 调度器接受到客户端的请求之后 xff0c 根据调度算法 xff0c 将客户端的的请求发送给服务器 xff0c 服务器处理完请求 xff0c 查看默认路由 xff08 NAT模
  • 通过Linux学习RTOS

    通过Linux学习RTOS 原文 xff1a http blog csdn net zoomdy article details 50549901 mingdu zheng at gmail dot com RTOS应用很广 xff0c 种
  • 嵌入式软件使用POSIX接口的优缺点

    嵌入式软件使用POSIX接口的优缺点 POSIX xff0c 即Portable Operating System Interface xff0c 即可移植操作系统接口 是操作系统为应用程序提供的接口标准 POSIX标准同样适用于嵌入式软件
  • Cortex-M0/M0+屏蔽优先级低于BASEPRI设定的中断

    Cortex M3 M4 M7有BASEPRI特殊功能寄存器可以屏蔽优先级低于BASEPRI设定值的中断 xff0c 但Cortex M0 M0 43 没有BASEPRI寄存器 xff0c 不过仍然可以实现相识的功能 mingdu zhen
  • 双系统win+redhat7.6安装

    下载ISO镜像 xff1a 我从msdn itellyou cn下载了Windows10的镜像文件 xff0c 利用UltralSO刻录到U盘 xff08 打开软件 xff0c 选择菜单栏的文件 gt 打开 xff0c 选择下载的镜像 xf
  • 大道至简——RISC-V架构之魂(中)

    本文为 RISC V CPU设计 专栏和 RISC V嵌入式软件开发 专栏系列文章之一 注 xff1a 本文节选自 硅农亚历山大 所著国内第一本系统介绍CPU与RISC V设计的中文书籍 手把手教你设计CPU xff1a RISC V处理器
  • 嵌入式系统的分类

    按照嵌入式系统所使用的操作系统 xff0c 可以将嵌入式系统分成三类 xff1a Rich OS类 RTOS类 Bare metal类 mingdu zheng at gmail dot com https blog csdn net zo
  • 第04课: wiki 在 GitHub

    Git gt wiki什么人可以用 wiki xff1f wiki 本质是什么 xff1f GitHub wiki 的最佳实践 xff1f 提问 Git gt wiki GitHub 是基于 Git 的社交平台 xff0c 当然的 xff0
  • 路由器开发知识汇总

    ip route get lt address gt proc net nf contrack xff0c NAT操作只会修改回复方向 xff08 第二个 xff09 四元组 QNX route get lt address gt Wind
  • USB HS-PHY眼图调试

    1 USB2 PHY AFE 1 1 USB 2 0 FS PHY github ultraembedded core usb fs phy NOP USB transceiver for all USB transceiver which
  • USB SS-PHY Tuning

    1 USB 3 0 PIPE PHY 1 1 USB 3 0 PHY USB 3 0 PHY 61 PIPE wrapper 43 PCS 43 SerDes 1 2 SS PHY电流源 CML电流源串联在NMOS管的Source中 xff