Перейти к содержанию

BMC — двухфазный код с меткой

Сообщения USB Power Delivery идут по одной линии CC без отдельного такта. Чтобы приёмник восстановил такт из самого сигнала и чтобы на линии не копилась постоянная составляющая, биты передают кодом BMC.

Обновлено Редакция GAW

BMC (Biphase Mark Code, двухфазный код с меткой) — способ кодирования битов на линии, при котором в начале каждого битового интервала уровень меняется всегда, а в середине интервала — только при передаче единицы. Ноль, таким образом, — один переход за бит, единица — два. Спецификация USB Power Delivery называет BMC разновидностью манчестерского кода и ссылается на стандарт IEC 60958-1 (USB PD, разд. 2.3, 5.3.3). В USB PD это код физического уровня: им передаются все сообщения по каналу конфигурации CC.

Почему именно BMC

  • Такт внутри сигнала. Переход в начале каждого бита позволяет приёмнику восстановить такт без отдельной линии.
  • Нет постоянной составляющей. Каждая единица сбалансирована сама по себе, два нуля подряд — тоже, поэтому разбаланс за пакет не превышает одного бита (разд. 5.3.3). Для линии CC это важно: на ней одновременно лежит постоянное напряжение от резисторов Rp и Rd, по которому определяется подключение и ток.
  • Полярность не важна. Значение бита определяется наличием перехода в середине, а не его направлением.

Как устроен пакет USB PD

Пакет начинается с преамбулы — 64 бит чередующихся нулей и единиц, закодированных только BMC. Затем идут стартовая последовательность SOP* (по ней отличают сообщения для потребителя и для вилки кабеля), заголовок и данные, контрольная сумма CRC и конец пакета. Всё, кроме преамбулы, предварительно перекодируется кодом 4b5b и лишь потом передаётся BMC (разд. 5.3.1). Номинальная скорость — 300 кбит/с, допустимо от 270 до 330 кбит/с (табл. 5.9). Как эти сообщения складываются в договорённость о напряжении, рассказано в статье «USB Type-C и Power Delivery».

Не путать

С кодом NRZI, которым передаются данные USB 2.0 по линиям D+ и D−: в NRZI переход означает ноль, а единица — отсутствие перехода, и такт приходится поддерживать вставкой битов. В BMC переход в начале бита есть всегда.

Частые вопросы

Чем BMC отличается от манчестерского кода?

В классическом манчестерском коде значение бита задаёт направление перехода в середине интервала. В BMC важно не направление, а наличие перехода: в начале каждого бита уровень меняется всегда, а в середине — только у единицы. Поэтому BMC не боится перепутанной полярности линии.

Какова скорость BMC в USB PD?

Номинально 300 кбит/с с допуском от 270 до 330 кбит/с, то есть битовый интервал от 3,03 до 3,70 мкс (USB PD, табл. 5.9). Такая скорость передаётся по тому же проводу CC, где лежит постоянное напряжение от резисторов Rp и Rd.

Зачем перед данными 64 бита преамбулы?

Преамбула — чередующиеся нули и единицы — будит приёмник и даёт ему подстроиться под скорость передатчика. По её последним 32 битам приёмник вычисляет опорную скорость пакета, а сама преамбула в отличие от данных не перекодируется 4b5b (USB PD, разд. 5.3.1).

Источники

  1. USB-IF. Universal Serial Bus Power Delivery Specification, Release 3.2, Version 1.2, August 19, 2026 — разд. 2.3 (термины) — BMC: модификация манчестерского кода, у нуля один переход, у единицы два, ссылка на IEC 60958-1; разд. 5.3.1 — пакет: преамбула 64 бита из чередующихся 0 и 1 (кодируется только BMC, без 4b5b), затем SOP*, заголовок и данные в коде 4b5b, CRC; разд. 5.3.3 — переход в начале каждого битового интервала и второй в середине при передаче единицы, код практически не имеет постоянной составляющей; табл. 5.9 — fBitRate 270–300–330 кбит/с, tUnitInterval 3,03–3,70 мкс
  2. USB-IF. USB Type-C Cable and Connector Specification, Release 2.5, March 2026 — разд. 4.5 — сообщения USB PD передаются по проводу CC поверх напряжения, заданного Rp и Rd

Нашли ошибку?