USB数据通道

2023-10-26

USB数据通道

USB Type-C连接器是对称的,它复制了大多数信号,使其支持可翻转性,如图1所示。

9437345aa349c7360ddbbdd11cf831c6.png

对于这类复制,需要支持超高速USB产品的数据通道多路复用器,以及支持交替模式产品的数据通道交叉开关。对于USB Type-C数据通道,设计人员可选择四种实施方案:外部数据通道开关;实施双PHY或双端口;适用内部片上开关;或使用USB-C 数据通道PHY。

1

外部数据通道开关

外部数据通道开关(或多路复用器,位于SoC或USB芯片集外部 ,请参见图2)常用于支持USB Type-C的商业产品中。现有的高频模拟开关最初是为PCIe ® 、Ethernet、SATA、DisplayPort和其他标准设计的,对其进行重新修改以用于USB Type-C。外部开关解决方案的主要优点在于能够以最快的速度推向市场。其缺点在于成本、PCB面积以及信号质量降低。

6ce059af0245fea595a5e426e39d90ee.png

2

实施双PHY或双端口

对于支持USB Type-C的SOC,实施双USB 3.0 PHY或USB 3.1 PHY是能够在最短时间内推向市场的解决方案。一个或另一个PHY处于活动状态,这取决于USB Type-C连接器的方位。另一PHY处于低功率状态。无外部数据通道开关,无信号质量损失。即使在具有较大硅面积的情况下,与外部开关或开关加转接驱动器相比,该解决方案的成本更低。

3

适用内部片上开关

作为对外部数据通道开关的替代,另一方式是芯片/片上开关。与外部开关相比,该方案的损耗更低,对于10 Gbps USB 3.1 Gen2模式操作尤其有用。然而,实施针对USB 3.1 Gen2模式的片上开关较为困难,这是因为,开关必须补偿非线性频率和相位响应。此外,开关不得允许下述高振幅显示端口、USB TX以及低振幅USB 3.1 RX信号之间的

串扰。需要具备阻抗匹配以防止反射。对于无转接驱动器电路的片上开关,仅对USB 3.1 Gen1 (USB 3.0)模式和DisplayPort HBR-2才是可行的。

4

使用USB-C 数据通道PHY

外部开关具有最快推向市场的特性,但会增加成本,双PHY方案使用了过大的硅面积,内部开关仅对USB 3.0才有现实意义。对于SOC集成,推荐的方案是采用单个可靠的USB-C PHY,以降低风险,并将硅面积最小化。Synopsys宣布了多种采用先进工艺节点、针对USB 3.0和USB 3.1的USB-C PHY产品。DesignWare ® USB-C 3.1和3.0 PHY均为双通道方案,优点与双PHY方案相同。无模拟开关,信号质量不会降低。根据USB Type-C连接器的方位,根据需要,某一通道或另一通道将处于活动状态。DesignWare USB-C PHY在两个通道之间共享了大量电路,与双PHY方案相比,在硅面积方面成本十分经济。

上篇文章问题

问题►高通处理器CPU端只有四路USB3.0的RX1/RX2/TX1/TX2,但Type-C接口这端却有2对RX1/RX2/TX1/TX2,能否直接将两对RX/TX信号对应的信号先连接再连到CPU,如果不行,该如何处理?

答案 ► 不能直接连接,原因:如果直接连接,会对USB3.0产生信号质量的影响。处理方法:需要加USB3.0的开关,例如:Onsemi的FUSB340或者Dioo的DIO3340,也就是上面说的外部数据通道开关的方案。

补充说明:向之前的高通和MTK有使用这种外部数据通道开关的方案。

新的平台现在也有采用其他方案,例如:我做过的SM8250平台项目:它有三种模式:A:USB3.0模式,但是只使用一组RX1/RX2/TX1/TX2,内部集成模拟开关;B:DP模式,两对RX1/RX2/TX1/TX2用于DP信号4 lane;C:USB3.0+DP模式:其中一组RX1/RX2/TX1/TX2用于USB3.0信号,另一组RX1/RX2/TX1/TX2用于DP信号2 lane。

参考文献:解决实施USB Type-C的三项关键挑战

c0e9fc4783a579623ab5a179a412a511.png

5a643184ed5a69880c5f9539c51c0ad0.png

点击蓝字 关注我们

微信号|搬砖队长 文溪

CSDN|搬砖队长 文溪

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

USB数据通道 的相关文章

  • 在c#中读取PVOID,我应该读取多少位?

    我正在读取 URB 类型的 USB 数据包 URB 标头定义于http msdn microsoft com en us library windows hardware ff540409 v vs 85 aspx http msdn mi
  • USB 传输数据

    我正在尝试通过 USB 发送和接收数据 我的设备 Acer Iconia A500 拥有连接到设备所需的一切 一切都很好并且工作正常 但是当我尝试发送和接收数据时 它的行为并不像预期的 这是我的代码 for this is the main
  • Ubuntu 10.1下如何识别多个USB串口适配器

    我正在 Ubuntu 10 1 下从多个相同的 USB 串行适配器读取数据 有时 它们的 dev tty 路径会发生变化 例如 如果在启动时连接了其他 USB 设备 我需要一种通过任何此类更改重复引用同一适配器的方法 据 udevadm 称
  • OSX:如何从 IOUSBDeviceInterface 或位置 id 获取卷名称(或 bsd 名称)

    我正在尝试编写一个应用程序 将特定的 USB 字符串描述符 USB 大容量存储设备 与其卷或 bsd 名称相关联 因此 代码会遍历所有连接的 USB 设备 获取字符串描述符并从其中之一提取信息 我想获取这些 USB 设备的卷名 我找不到合适
  • 使用Python直接向USB发送信号

    如何使用 Python 将 USB 端口连接设置为高或低 这可用于定制 USB 设备 例如 假设我有一个 LED 连接到 USB 端口 数据线 现在通过代码我想闪烁它或控制它 现在 这可以通过使用任何微控制器 Arduino Raspber
  • 在 Python 中将 USB 视频捕获设备友好名称与 OpenCV 端口号相关联

    我想在 Windows 平台上使用 Python 获取外部 USB 视频捕获设备的友好名称和 USB 端口号 我正在使用 OpenCV 从 USB 捕获设备捕获视频 OpenCV 将 USB 端口称为 1 找到的第一个工作摄像头 0 对我来
  • 我可以从哪里开始使用可编程硬件?

    一段时间以来 我一直渴望至少学习一点有关硬件编程的知识 并想在这里提出要求以获得一些起点 我是一位相当有成就的程序员 具有 Delphi 和 Objective c 经验 但从未听过设备端口 中断 我什至不知道术语 更不用说对硬件进行编程了
  • 如何在 C# 中从 USB 令牌读取证书

    我有一个 USB 令牌 其中包含一个加密证书 该证书具有公钥和私钥 现在我想用 C 创建一个应用程序 通过它我可以找到可访问的证书信息 当我插入 USB 令牌时 它会被检测到 但计算机部分上没有显示任何驱动器 就像闪存驱动器一样 如何从 U
  • 时间:2019-03-17 标签:c#usbdecision

    我们当前的应用程序中有几个进程 一个进程处理 USB 加载程序的检测和删除 处理检测和删除的代码如下 protected override void WndProc ref Message m switch m Msg case Win32
  • 使用 BeagleBone Black 内核 >= 3.8 打开/关闭 USB 电源

    我需要 关闭 gt 睡眠几秒钟 gt 打开 beaglebone black 的 USB 电源 能够对连接到 USB 的设备 华为 E220 调制解调器 进行硬件重置 已经尝试过软重置 使用取消绑定 绑定和授权0 1 但软件重置不足以使设备
  • 如何使用 python / pywinusb 将 hid 数据发送到设备?

    我正在尝试使用 pywinusb 将输出报告发送到 pic18f4550 该设备可以接收数据 我已经使用 C 应用程序对其进行了测试 效果很好 另外 我可以使用 pywinusb 从设备读取数据 但我在尝试发送数据时遇到问题 这是我正在运行
  • 获取已连接 USB 设备的端口名称

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

    我正在使用 Linux 操作系统 想知道是否有任何文件描述符可以轮询 选择 当数据等待从 USB 设备读取时会触发这些文件描述符 我也在使用 libusb 库 但尚未找到可以使用的文件描述符 Use libusb 的轮询函数 http li
  • 使用 iTextSharp 5.3.3 和 USB 令牌签署 PDF

    我是 iTextSharp 和 StackOverFlow 的新手 我正在尝试使用外部 USB 令牌在 C 中签署 PDF 我尝试使用从互联网上挖掘的以下代码 Org BouncyCastle X509 X509CertificatePar
  • Python:获取USB闪存驱动器设备的名称[windows]

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

    我想对微控制器 AVR 进行编程 以通过 USB 控制一些 LED 它只是出于对如何构建和编程 USB 设备的兴趣 有一些 AVR 微控制器支持 USB 协议 或者我可以自己在另一个微控制器中实现 USB 协议 但我想知道用什么来在计算机上
  • Swift 上的 USB 连接委托

    Swift 中是否有一个代表可以让我的班级知道何时通过计算机的 USB 插入新设备 我想知道我的程序何时可以使用新设备 Eric Aya 的答案已经相当不错了 但这里有一个 Swift 3 的改编 我把大部分丑陋的东西包裹在一个USBWat
  • 虚拟USB设备的安装与仿真

    我已经读过创建虚拟USB设备 https stackoverflow com questions 5016363 creating a virtual usb device and 虚拟USB设备 https stackoverflow c
  • Android Honeycomb 3.2 通过 USB 检测 MTP 连接

    我看到其他关于检测 USB 连接的帖子 但他们没有具体讨论 MPT 只是更一般的检测 所以我想我应该具体询问 MTP 我通过 USB 将 Xoom 连接到计算机 并且希望我的应用程序在建立 MTP 连接时写出一个文件 当 USB 断开且 M
  • Android USB Host 模式和 Accessory 模式

    我正在尝试学习 Android USB 主机 配件连接 我读到 Android 设备可以充当 USB 主机或 USB 配件 因此 我创建了两个项目 其中一个是 USB 主机项目 另一个是 USB 附件项目 我将这些项目安装到两个不同的 An

随机推荐