4B5B

4B5B — это тип линейного кодирования для передачи данных. 4B5B отображает группы 4 бит данных в группы 5 бит для передачи. Эти 5-битные слова определены в словаре и они выбираются таким образом, чтобы обеспечить достаточное количество переходов в состоянии линии для генерации самосинхронизирующегося сигнала. Побочным эффектом такого кодирования является то, что для передачи той же информации требуется на 25% больше бит.

Альтернативой использованию кодирования 4B5B является применение скремблера. Некоторые системы используют скремблеры совместно с кодированием 4B5B для обеспечения баланса по постоянному току и улучшения электромагнитной совместимости.

В зависимости от интересующего стандарта или спецификации, некоторые 5-битные выходные коды могут оставаться неиспользуемыми. Обнаружение любого из неиспользуемых кодов в потоке данных может служить индикатором неисправности где-либо в линии связи. Таким образом, неиспользуемые коды могут применяться для обнаружения ошибок в потоке данных.

Приложения

Кодирование 4B5B получило распространение благодаря стандарту FDDI (англ. Fiber Distributed Data Interface) в середине 1980 годов. В 1989 кодирование было принято для передачи цифрового аудиосигнала MADI (англ.  Multichannel Audio Digital Interface)[1], а в 1995 году — стандартом Fast Ethernet.

Под названием 4B5B обычно подразумевается версия, используемая в FDDI. Другие кодировки из 4 бит в 5-бит используются для магнитной записи и известны как групповая кодированная запись (GCR), но они являются кодами с (0,2) ограниченной длиной последовательности нулей типа (0,2), допускающими не более двух нулей подряд. 4B5B позволяет до трёх последовательных нулей (RLL код типа (0,3)), что обеспечивает большее разнообразие управляющих кодов.

На оптическом волокне выход 4B5B кодируется методом NRZI. FDDI по медному кабелю (CDDI) использует вместо этого кодирование MLT-3, как и 100BASE-TX Fast Ethernet.

Кодирование 4B5B применяется также для связи USB Power Delivery (USB-PD)[2], где код передаётся через пин USB-C CC (дополнительно кодируется с помощью двухфазного кодирования сигнала) или по силовым линиям USB-A/B (дополнительно кодируется с частотной модуляции).

Синхронизация

Коды 4B5B разработаны так, чтобы в каждом 5-битном выходном коде гарантировано было как минимум два перехода. Эти переходы необходимы приёмнику для восстановления тактовой частоты. Например, последовательность из 4 бит, таких как 00002, при использовании кодирования NRZI не содержит переходов, что может вызвать проблемы синхронизации у приёмника. Кодирование 4B5B решает эту проблему, назначая 4-битному блоку 5-битный код, в данном случае, 111102.

Существует восемь 5-битных кодов, содержащих три последовательных нуля: 00000, 00001, 00010, 01000, 10000, 00011, 10001, 11000. Таким образом, остаётся 24 доступных кода.

Таблица кодирования

Данные Код 4B5B
(Hex) (Binary)
0 0000 11110
1 0001 01001
2 0010 10100
3 0011 10101
4 0100 01010
5 0101 01011
6 0110 01110
7 0111 01111
Данные Код 4B5B
(Hex) (Binary)
8 1000 10010
9 1001 10011
A 1010 10110
B 1011 10111
C 1100 11010
D 1101 11011
E 1110 11100
F 1111 11101
Символ Код 4B5B Описание FDDI Fast Ethernet USB-PD
H 00100 Останов Да Да Нет
I 11111 Ожидание Да Да Нет
J 11000 Старт #1 Да Да Да
K 10001 Старт #2 Да Да Да
L 00110 Старт #3 Нет Нет Да
Q 00000 Тишина (потеря сигнала) Да Да Нет
R 00111 Сброс Да Да Да
S 11001 Установить Да Нет Да
T 01101 Конец (завершить) Да Да Да

Три последовательных нулевых бита в обычных данных встречаются только тогда, когда код, заканчивающийся двумя нулями (2, E), сопровождается кодом, начинающимся с нуля (1, 4, 5, 6, 7). Следовательно, они всегда будут разделены кратным длиной закодированного 5-битного символа и никогда не будут разделены одним символом. Нарушения этого свойства используются для специальных синхронизирующих кодов.

Командные символы

Следующие коды иногда называют управляющими символами. Они обычно используются парами, хотя USB-PD использует последовательности из 4 символов для начала своих пакетов.

Контроьлный символ Символ 5b Цель
JK 11000 10001 Sync, начальный разделитель
I 11111 100BASE-X маркер простоя
T 01101 USB-PD конечный разделитель
TT 01101 01101 FDDI конечный разделитель
TS 01101 11001 Не используется
IH 11111 00100 SAL
TR 01101 00111 100BASE-X конечный разделитель
SR 11001 00111 Не используется
SS 11001 11001 Не используется
H 00100 100BASE-X ошибка передачи
JJJK 11000 11000 11000 10001 USB-PD Начало пакета (SOP)
JJLL 11000 11000 00110 00110 USB-PD SOP′
JLJL 11000 00110 11000 00110 USB-PD SOP″
JSSL 11000 11001 11001 00110 USB-PD SOP′_Отладка
JSLK 11000 11001 00110 10001 USB-PD SOP″_Отладка
RRRS 00111 00111 00111 11001 USB-PD Жёсткая перезагрузка
RJRL 00111 11000 00111 00110 USB-PD Сброс кабеля

См. также

Примечания

Литература

  • 5.3 Symbol Encoding // Universal Serial Bus Power Delivery Specification. — Revision 2.0 Version 1.3. — USB Implementers Forum, 2017.
    Цитата: «Следует использовать кодирование 4b5b. Оно кодирует 4-битные данные в 5-битные символы для передачи и декодирует 5-битные символы в 4-битные данные для использования приёмником.»

Ссылки