Sergey Korablin

Sergey "brsbrs" Korablin

electronics design engineer, makes interconnects suck less

Нелегальный USB Type-C

Updated 12/02/2023
Полновесный USB Type C кабель M-M

Кабель USB type C – замечательная штука, особенно full-featured (имеющий полный набор проводников внутри). В большинстве случаев используется лишь чуть больше половины – одна пара DP/DN (high speed, USB2), две пары SSRX и SSTX (super-speed, USB3), но что мешает задействовать остальное?

Что внутри кабеля

  1. Одна дифференциальная пара для сигналов high-speed (USB2). Импеданс 90 Ом. Существуют кабели с индивидуальным экраном на этой паре, есть и без него.
  2. Четыре дифференциальных пары для сигналов super-speed (USB3). Импеданс 90 Ом, индивидуальное экранирование фольгой каждой пары.
  3. Два отдельных проводника SBU (sideband usage) для низкоскоростных сигналов.
  4. Линия CC, используемая для определения полярности втыкания разъема и переговоров по поводу питания и допустимой скорости линка с чипом EMARK
  5. Линия VCONN, питающая этот чип
  6. Толстые провода питания (VBUS) и земли

Особенности распиновки и применения

USB 2

В кабеле USB type C одна диффпара USB2, и подключена она лишь к двум контактам (к пинам A6/A7). Пины B6/B7 разъемов кабеля висят в воздухе. Сигналы проходят прозрачно, с двух сторон кабеля положение пинов USB2 совпадает.

Со стороны розетки дублирующиеся пины необходимо соединить между собой (A6 и B6, A7 и B7), чтобы диффпара кабеля оказалась подключена вне зависимости от ориентации разъема. Да, будет небольшой стаб, но на частотах USB2 он не мешает.

Проводник GND не показан

Сигналы USB2 не поддерживают polarity inversion. DP хоста должен быть подключен к DP устройства, DN – к DN. Используется DC-coupling (без конденсаторов развязки), разница референсного потенциала (GND) между хостом и девайсом должна быть менее 125 мВ.

USB 3

Один линк USB3 (super-speed) состоит из двух диффпар: SSRX и SSTX.
В нашем кабеле таких линков два. Сигналы USB3 должны быть подключены кроссовером, как UART: соединяем TX хоста с RX устройства, и наоборот, RX хоста с TX устройства.

Линк USB3 (superspeed)

Используется AC-coupling. В каждой линии (SSRXP, SSRXN, SSTXP, SSTXN) в итоге должен быть один конденсатор, его ставят на стороне TX. Поддерживается polarity inversion: внутри диффпары можно поменять местами P/N для удобства трассировки, и всё будет хорошо. Менять местами TX/RX нельзя.

Внутри кабеля USB type C (male-to-male) сигналы Super-Speed идут кроссовером. Это значит, что RX одной стороны соединен с TX другой стороны. На заглавной картинке, где показана внутренняя схема кабеля, это хорошо видно. Чтобы не путаться при разработке схемы, разделяйте наименования пинов разъемов и фактические сигналы, которые будут на этих пинах, и называйте цепи в соответствии с фактическими сигналами. Чаще всего используется хост-ориентированная нотация, то есть TX – от хоста к устройству, RX – от устройства к хосту.

Внутри удлинителя USB-type-C (кабель male-female) сигналы SuperSpeed идут прозрачно, то есть RX с одной стороны соединен с RX с другой, а TX с TX.

Сценарии использования

Легально: USB2+USB3x2 и Alternate Mode

Традиционно задействован только один линк SuperSpeed в кабеле. Такая конфигурация называется USB 3.2 Gen1x1 либо USB 3.2 Gen2x1 в зависимости от поддерживаемой скорости. Существует конфигурация, использующая оба линка SuperSpeed, USB 3.2 Gen1x2 либо USB 3.2 Gen2x2, позволяющая удвоить пропускную способность, не меняя требования к кабелю\межсоединениям. Увы, поддерживается очень небольшим количеством хостов, и еще меньшим количеством устройств.

Другой вариант – задействовать свободные дифференциальные пары SS для какого-то другого скоростного сигнала, например, DisplayPort или HDMI. Именно так работают USB-type-C докстанции: по двум диффпарам идет сигнал USB3, по двум диффпарам – видео. Чтобы понять, какой сигнал куда слать, хост смотрит на пины CC и использует свитчи (коммутаторы) сигнала. Это называется USB-C Alternate Modes. Их много.

Не совсем легально: 2xUSB3+1xUSB2

Раз в кабеле четыре дифференциальные пары SS, их можно использовать для двух независимых USB3 линков. Это полезно, когда количество кабелей\разъемов ограниченно, а устройств нужно подключить много (и с максимально широкой полосой).

Бонусы: два независимых USB3 линка в одном кабеле, совместимо со стандартными устройствами (не сгорит, будет работать как USB 3×1)

Подводные камни: нужно либо использовать коммутаторы сигнала и смотреть на CC, либо смириться с тем, что от ориентации кабеля будет зависеть, поменяются местами линки USB3, или нет. Линк USB2 только один.

Совсем нелегально: 5xUSB2

Если кабель длинный, разъемов по пути много, а электромагнитная обстановка плохая, USB3 может не заработать. Вместо этого можно задействовать диффпары SS для сигналов high-speed, и упаковать в один USB-Type-C кабель пять high-speed линков (один в штатную диффпару, и еще четыре – на место SS).

Бонусы: пять high-speed линков в одном кабеле.

Подводные камни: те же, что и в предыдущем варианте, плюс к этому тотальная несовместимость со стандартными USB-хостами и USB-устройствами. Если подключить сигналы USB2 к приемнику USB3, он сгорит (уровни напряжений USB2 намного выше USB3, и на стороне SSRX хоста нет конденсаторов развязки).
Делайте так, только если взаимодействие со стандартными устройствами и хостами исключено (например, линк внутри устройства, разъемы недоступны для пользователя).

Chaotic

Забудьте про USB. Это просто четыре хорошие диффпары и одна средненькая, плюс несколько single-ended линий. Используйте для любых сигналов, каких хочется. PCIe? HDMI? DP? LVDS? Да что угодно, лишь бы импеданс системы примерно совпадал.

Q&A

  1. USB2 и USB3 вообще связаны между собой?
    Нет. Внутри кабеля эти сигналы идут по разным проводникам, внутри микросхем хабов используются отдельные блоки, которые не обмениваются данными между собой (иными словами, внутри типичной микросхемы USB-хаба есть блок, реализующий USB2-хаб, и отдельно от него – блок USB3-хаба). Если на входе хаба есть только USB2, на выходе будет только USB2. Если на входе хаба есть только USB3, на выходе будет тоже только USB3.
  2. Можно из USB3 сделать USB2 (или наоборот)?
    Простыми способами нельзя. Необходимо USB3-устройство, которое также содержит в себе USB2-контроллер и умеет перекладывать данные из одного в другой.
  3. Какая предельная длина кабеля?
    Зависит от скорости (USB2, USB3 Gen1, USB3 Gen2), от качества кабеля, от качества разъемов, от уже имеющихся потерь со стороны хоста и устройства, от качества трансиверов хоста и устройства. Примерная оценка:
    USB2: обычно 3 метра, часто до 5 метров, иногда больше.
    USB3 Gen1: обычно 2 метра, иногда до 3 метров.
    USB3 Gen2: обычно 0.5-0.8 метра, иногда до 1 м.
  4. А можно длиннее?
    До некоторой степени длину линка можно увеличить за счет редрайверов (частотно-зависимые усилители \ эквалайзеры). Такие микросхемы есть и для USB2, и для USB3. Они не сотворяют магию, но позволяют перевести линк из статуса “вообще не работает” в “работает плохо”, а “работающий плохо” в “работающий хорошо”, если проблема в ослаблении сигнала. Ожидать, что они позволят нарастить кабель в три раза, не надо. Исправить проблемы, вызванные отражениями (изменения импеданса, плохие разъемы и тому подобное) редрайверы не могут.
    Другой подход – ретаймеры (точнее, хабы в качестве ретаймеров). Плюсы – каждый новый сегмент независим от предыдущего. Минусы – количество хабов ограничено предельной глубиной дерева USB, это дорого, много потребляет, добавляет задержки и накладные расходы.
  5. А можно ДЛИННЕЕ?
    Если отказаться от медных проводов и упаковать сигнал в оптический линк, можно хоть 50 метров, хоть больше. Большинство “оптических” кабелей поддерживают только USB3 (без USB2), потому что они содержат два оптоволокна и напрямую кодируют состояние SSRX и SSTX в оптику. Это возможно, потому что линии SS однонаправленные и имеют лишь два состояния. Упаковать USB2 гораздо сложнее, там больше двух уровней напряжения, сигнал не всегда дифференциальный, и это двунаправленная шина.
  6. А можно сделать USB гальванически изолированным?
    Да, существуют специальные микросхемы/микросборки для разных протоколов.
    USB1.1: много вариантов, есть в наличии. Примеры – ISOUSB111, ADUM3160.
    USB2: мало вариантов, сложно купить. Примеры – ISOUSB211, ADUM3165
    USB3: легкодоступных вариантов для применения на печатной плате нет. Либо покупать заводской “оптический кабель” (осторожно, многие оптические кабели не реализуют гальваническую изоляцию), либо заводской изолированный хаб (USB-4630), либо заводской модуль изоляции (ADQ-USB-ISO-PS или AN-USB-EXT-3.0), либо пытаться найти экзотические оптоэлектронные модули.
  7. Куда подключать экран разъема (розетки) USB type C на печатной плате?
    Напрямую к сигнальной земле, как можно ближе к разъему.
  8. Какие особенности трассировки USB3?
    – один линк – две дифференциальные пары 90 Ом
    – разрывы опорного слоя запрещены (конденсаторы на границе разрыва не помогут)
    – можно использовать polarity inversion
    – обязателен AC-coupling, конденсаторы размером не больше 0402
    – обязательно кроссовер-подключение (TX хоста к RX устройства)
    – под контактными площадками разъемов, AC-конденсаторов, синфазных фильтров и ESD-сборок следует вырезать землю в ближайшем слое, чтобы снизить паразитную емкость и изменение импеданса линии
    – по тем же причинам нужно удалять на внутренних слоях пады переходных и монтажных отверстий
    – если сигнал меняет слой, рядом с местом перехода должны быть минимум 2 переходных отверстия GND, соединяющие опорные слои и обеспечивающие путь для возвратного тока (больше про оптимизацию переходных отверстий здесь)
    – выравнивать длину внутри диффпары, не выравнивать между диффпарами
  9. Обязательно подключать пины CC?
    Да. Они позволяют определить, что кабель подключен, ориентацию кабеля, допустимый ток потребления и режимы “зарядки”. Программа-минимум – подтяжки к питанию CC1 и CC2 на стороне хоста (Downstream Facing Port), подтяжки к земле CC1 и CC2 на стороне устройства (Upstream Facing Port). Больше здесь.
    Либо использовать специальные контроллеры вроде TUSB320.
  10. Должен ли хост предоставлять VCONN?
    VCONN обязателен, если порт поддерживает USB3 или PD. Нужно использовать контроллер, который будет подавать питание VCONN на нужный пин (CC1 или CC2) в зависимости от ориентации кабеля. Подробнее см. ссылку.
    Если порт имеет только USB2 и может отдавать не более 0.5А по VBUS, то подключать VCONN необязательно, достаточно подтяжек на CC1/CC2.
  11. Обязательно использовать пины SBU?
    Нет. Если не используете, можно не подключать. Хорошая практика – в этом случае добавить слабые подтяжки к земле (1 МОм), но необязательно.
  12. Я использую удлинитель USB-C. Почему не работает USB2?
    С вероятностью 50% сигналы USB2 окажутся не подключенными, если внутри удлинителя одна пара high-speed. Попробуйте перевернуть разъем.
    Существуют удлинители с двумя независимыми парами highspeed, которые добавляют новую проблему: если на хосте или девайсе пины A7/B7 и A6/B6 закорочены (довольно частый случай), вторая пара highspeed внутри удлинителя создаст стаб огромной длины.
  13. А в заводских устройствах бывает что-то интересное?
    Да. Многие смартфоны и ноутбуки от Гугла (пиксели, хромбуки) отдают логи ядра через UART, который выведен на пины SBU порта USB-C.

Further reading

Stay tuned!
t.me/brsbrs_ru

Published 02/09/2022
Category: posts_ru