Код 4B/5B
Перед тем как попасть на линию, данные в Ethernet 100 Мбит/с и в USB Power Delivery проходят одно и то же преобразование: каждые четыре бита заменяются пятью. Лишний бит — плата за управляющие символы, которые никогда не встречаются среди данных.
Обновлено Редакция GAW
Содержание
Код 4B/5B — блочный код линии, в котором каждая группа из четырёх бит данных (полубайт) заменяется пятибитным символом по фиксированной таблице. Из 32 возможных пятибитных комбинаций 16 отведены под данные, часть — под управляющие символы, а остальные запрещены и при приёме считаются ошибкой (LAN8720A, разд. 3.1.1.2; USB PD, табл. 5.2). Платой за это служит четверть лишней скорости на линии.
Где применяется
- Ethernet 100BASE-TX. В микросхеме PHY данные от MAC проходят цепочку: кодер 4B/5B, скремблер, преобразование в последовательный поток NRZI на 125 Мбод (в Ethernet переход означает единицу — наоборот по сравнению с NRZI в USB) и трёхуровневый код MLT-3, который и уходит в кабель через трансформатор (LAN8720A, рис. 3-1, разд. 3.1.1.3–3.1.1.4). Управляющие символы обозначают простой линии (IDLE), начало и конец кадра (J/K и T/R) и ошибку передачи (/H/).
- USB Power Delivery. Заголовок, данные и CRC каждого сообщения кодируются 4b5b и только потом передаются кодом BMC по линии CC; преамбула не кодируется. Управляющие символы (K-коды) образуют начало пакета, команды сброса и конец пакета (USB PD, разд. 5.3.1.1).
Пример
Байт 0x5A передаётся двумя полубайтами. По таблице кодов 5 → 01011, A → 10110 (одинаково в обеих таблицах). Порядок, в котором полубайты уходят на линию, задаёт уже конкретный стандарт.
Наш расчёт по описанию LAN8720A: 100 Мбит/с полезных данных после 4B/5B превращаются в 125 Мбит/с на линии — отсюда частота 125 МГц внутри PHY. Как PHY подключается к микроконтроллеру, рассказано в статье «Ethernet для микроконтроллера», об обмене по линии CC — в статье «USB Type-C и Power Delivery».
Не путать
С кодами линии вроде BMC, NRZI и MLT-3: они определяют, как биты превращаются в уровни и переходы сигнала, а 4B/5B лишь заменяет одни биты другими. Обычно их применяют вместе — сначала 4B/5B, затем код линии.
Частые вопросы
Зачем тратить пятый бит?
Из 32 пятибитных комбинаций данным нужны только 16. Остальные дают символы, которые никогда не встретятся внутри данных: начало и конец пакета, сброс, простой линии. Приёмник находит границы пакета по этим символам, а комбинации, не входящие ни в одну группу, считает ошибкой (USB PD, табл. 5.2; LAN8720A, разд. 3.1.1.2).
Почему у 100BASE-TX тактовая частота линии 125 МГц, а не 100?
Потому что после кода 4B/5B на каждые 4 бита данных приходится 5 бит на линии: 100 Мбит/с × 5/4 = 125 Мбит/с. LAN8720A так и описывает тракт: 4 бита на 25 МГц превращаются в 5 бит, а дальше идёт последовательный поток NRZI на 125 МГц (рис. 3-1).
Одинаковы ли таблицы 4B/5B в Ethernet и USB PD?
Коды данных — да: наше сравнение табл. 3-1 даташита LAN8720A и табл. 5.2 спецификации USB PD показывает одинаковые пятибитные коды для всех 16 значений от 0 до F. Управляющие символы у каждого стандарта свои по смыслу, хотя часть комбинаций совпадает: например, 11000 — это J в 100BASE-TX и Sync-1 в USB PD.
Источники
- Microchip. LAN8720A/LAN8720Ai Small Footprint RMII 10/100 Ethernet Transceiver with HP Auto-MDIX and flexPWR Technology, DS00002165C — рис. 3-1 и разд. 3.1.1.2 — тракт передачи 100BASE-TX: RMII 2 бита на 50 МГц, 4 бита на 25 МГц, кодер 4B/5B, скремблер, NRZI на 125 МГц, MLT-3; 16 из 32 кодовых групп — данные, остальные — управляющие или недопустимые; табл. 3-1 — коды (0 = 11110, 1 = 01001 … F = 11101, IDLE /I/ = 11111, J, K, T, R, /H/ — ошибка передачи); разд. 3.1.1.3 — скремблирование против узких пиков спектра; разд. 3.1.1.4 — MLT-3: смена уровня означает 1
- USB-IF. Universal Serial Bus Power Delivery Specification, Release 3.2, Version 1.2, August 19, 2026 — разд. 5.3.1.1.2 и табл. 5.2 — всё в пакете, кроме преамбулы, кодируется 4b5b; коды данных 0–F и K-коды Sync-1, Sync-2, Sync-3, RST-1, RST-2, EOP; K-код уже пятибитный и повторно не кодируется; остальные комбинации не используются; разд. 5.3.1.1.1 — преамбула 4b5b не кодируется
Нашли ошибку?
Смотрите также
- Код BMCСамосинхронизирующийся код линии в USB Power Delivery
- PHY EthernetМикросхема физического уровня между MAC и кабелем
- NRZIКодирование USB: ноль — смена уровня, единица — без смены
- Ethernet для микроконтроллераW5500, ENC28J60, MAC + PHY по RMII, LAN8720, DP83848, трансформатор и разводка
- USB Type-C и Power DeliveryCC, Rp и Rd, сообщения PD, PDO и RDO, PPS, EPR, кабели, контроллеры