Кодирование 8b/10b
Эта статья нуждается в дополнительных цитатах для проверки . ( январь 2015 г. ) |
оптоволоконный канал | |
---|---|
Уровень 4. Сопоставление протоколов | |
Маскировка LUN | |
Уровень 3. Общие услуги | |
Уровень 2. Сеть | |
Ткань Fibre Channel Зонирование Fibre Channel Уведомление об изменении зарегистрированного состояния | |
Уровень 1. Канал передачи данных | |
Кодирование Fibre Channel 8b/10b | |
Уровень 0. Физический |
В телекоммуникациях , 8b/10b — это линейный код который отображает 8-битные слова в 10-битные символы для достижения баланса постоянного тока и ограниченного несоответствия и в то же время обеспечивает достаточное количество изменений состояния, чтобы обеспечить разумное восстановление тактовой частоты . Это означает, что разница между количеством единиц и нулей в строке длиной не менее 20 бит составляет не более двух и что в строке находится не более пяти единиц или нулей. Это помогает снизить требования к нижнему пределу полосы пропускания канала, необходимому для передачи сигнала. [1]
Код 8b/10b может быть реализован различными способами с акцентом на разные параметры производительности. Одна реализация была разработана К. Одакой для DAT . цифрового аудиорекордера [2] Кес Шухамер Имминк разработал код 8b/10b для DCC . аудиорекордера [3] Реализация IBM была описана в 1983 году Элом Видмером и Питером Франашеком . [4] [5]
реализация IBM
[ редактировать ]Как следует из названия схемы, восемь бит данных передаются как 10-битный объект, называемый символом или символом . Младшие пять битов данных кодируются в 6-битную группу (часть 5b/6b), а старшие три бита кодируются в 4-битную группу (часть 3b/4b). Эти группы кодов объединяются вместе, образуя 10-битный символ, который передается по проводу. Символы данных часто обозначаются как Dxy, где x находится в диапазоне от 0 до 31, а y — от 0 до 7. Стандарты, использующие кодировку 8b/10b, также определяют до 12 специальных символов (или управляющих символов ), которые могут быть отправлены вместо символа данных . Они часто используются для обозначения начала кадра, конца кадра, простоя канала, пропуска и подобных состояний на уровне канала. По крайней мере один из них (т.е. символ «запятая») должен использоваться для определения выравнивания 10-битных символов. Они называются Kxy и имеют кодировку, отличную от любого из символов Dxy.
Поскольку при кодировании 8b/10b для кодирования 8-битных слов используются 10-битные символы, некоторые из возможных 1024 (10 бит, 2 10 ) символы могут быть исключены, чтобы обеспечить ограничение длины серии в 5 последовательных равных битов и обеспечить, чтобы разница между количеством нулей и единиц была не более двух. Некоторые из 256 возможных 8-битных слов можно закодировать двумя разными способами. Используя эти альтернативные кодировки, схема способна достичь долговременного баланса постоянного тока в потоке последовательных данных. Это позволяет передавать поток данных через канал с высокочастотной характеристикой, например, или через неэкранированную витую пару с трансформаторной связью Ethernet оптические приемники с автоматической регулировкой усиления.
Таблицы кодирования и кодирование байтов
[ редактировать ]Обратите внимание, что в следующих таблицах для каждого входного байта (представленного как HGF EDCBA
), A обозначает младший значащий бит (LSB), а H — самый значимый (MSB). На выходе появляются два дополнительных бита: i и j . Биты передаются из младшего разряда в старший разряд: a, b, c, d, e, i , f, g, h и j ; т.е. за кодом 5b/6b следует код 3b/4b. Это обеспечивает уникальность специальной битовой последовательности в символах запятой.
Остаточное влияние на поток количества передаваемых нулей и единиц поддерживается в виде текущего несоответствия ( RD ), а эффект нарастания уравновешивается выбором кодировки для следующих символов.
Код 5b/6b представляет собой парный код несоответствия , как и код 3b/4b. Каждое 6- или 4-битное кодовое слово имеет либо одинаковое количество нулей и единиц (несоответствие нулей), либо имеет пару форм, в одной из которых на два нуля больше, чем на единицы (четыре нуля и две единицы или три нуля и на один соответственно) и на один на два меньше. Когда используется 6- или 4-битный код, который имеет ненулевое несоответствие (счет единиц минус количество нулей; т. е. -2 или +2), выбор кодирования положительного или отрицательного несоответствия должен быть таким, который переключает бегущее неравенство. Другими словами, коды ненулевой диспаратности чередуются.
Текущее неравенство
[ редактировать ]Кодирование 8b/10b не содержит постоянного тока, а это означает, что долговременное соотношение передаваемых единиц и нулей составляет ровно 50%. Для этого разница между количеством переданных единиц и количеством переданных нулей всегда ограничивается ±2, а в конце каждого символа она равна либо +1, либо -1. Эта разница известна как текущее неравенство (RD).
Этой схеме нужны только два состояния для текущего несоответствия +1 и -1. Оно начинается с −1. [6]
Для каждого кода 5b/6b и 3b/4b с неодинаковым количеством единиц и нулей существует два битовых шаблона, которые можно использовать для его передачи: один с двумя дополнительными битами «1» и один со всеми инвертированными битами и, следовательно, с двумя битами «1». больше нулей. В зависимости от текущего несоответствия сигнала механизм кодирования выбирает, какую из двух возможных шести- или четырехбитных последовательностей отправить для данных данных. Очевидно, что если шестибитный или четырехбитный код имеет равное количество единиц и нулей, выбора нет, так как несоответствие останется неизменным, за исключением подблоков D.07 (00111) и Dx3 ( 011). В любом случае несоответствие остается неизменным, но если RD положителен при обнаружении D.07, используется 000111, а если он отрицательный, используется 111000. Аналогично, если RD положителен при обнаружении Dx3, используется 0011, а если он отрицательный, используется 1100. Это точно отражено на диаграммах ниже, но об этом стоит упомянуть дополнительно, поскольку это единственные два подблока с одинаковым количеством единиц и нулей, каждый из которых имеет две возможные кодировки.
предыдущий РД |
Несоответствие кодовое слово |
Несоответствие выбранный |
следующий РД |
---|---|---|---|
−1 | 0 | 0 | −1 |
−1 | ±2 | +2 | +1 |
+1 | 0 | 0 | +1 |
+1 | ±2 | −2 | −1 |
Код 5b/6b (abcdei)
[ редактировать ]Вход | РД = −1 | РД = +1 | Вход | РД = −1 | РД = +1 | ||||
---|---|---|---|---|---|---|---|---|---|
Код | ЭДКБА | а б в г е я | Код | ЭДКБА | а б в г е я | ||||
Д.00 | 00000 | 100111 | 011000 | Д.16 | 10000 | 011011 | 100100 | ||
Д.01 | 00001 | 011101 | 100010 | Д.17 | 10001 | 100011 | |||
Д.02 | 00010 | 101101 | 010010 | Д.18 | 10010 | 010011 | |||
Д.03 | 00011 | 110001 | Д.19 | 10011 | 110010 | ||||
Д.04 | 00100 | 110101 | 001010 | Д.20 | 10100 | 001011 | |||
Д.05 | 00101 | 101001 | Д.21 | 10101 | 101010 | ||||
Д.06 | 00110 | 011001 | Д.22 | 10110 | 011010 | ||||
Д.07 | 00111 | 111000 | 000111 | Д.23 † | 10111 | 111010 | 000101 | также используется для символа K.23.7 | |
Д.08 | 01000 | 111001 | 000110 | Д.24 | 11000 | 110011 | 001100 | ||
Д.09 | 01001 | 100101 | Д.25 | 11001 | 100110 | ||||
Д.10 | 01010 | 010101 | Д.26 | 11010 | 010110 | ||||
Д.11 | 01011 | 110100 | Д.27 † | 11011 | 110110 | 001001 | также используется для символа K.27.7 | ||
Д.12 | 01100 | 001101 | Д.28 | 11100 | 001110 | ||||
Д.13 | 01101 | 101100 | Д.29 † | 11101 | 101110 | 010001 | также используется для символа K.29.7 | ||
Д.14 | 01110 | 011100 | Д.30 † | 11110 | 011110 | 100001 | также используется для символа K.30.7 | ||
Д.15 | 01111 | 010111 | 101000 | Д.31 | 11111 | 101011 | 010100 | ||
не используется | 1111 00 | 0000 11 | К.28 ‡ | 11100 | 00 1111 | 11 0000 | используется исключительно для символов K.28.x |
† также используется для кода 5b/6b Kx7.
‡ используется исключительно для кода 5b/6b K.28.y.
Код 3b/4b (fghj)
[ редактировать ]Вход | РД = −1 | РД = +1 | Вход | РД = −1 | РД = +1 | |||
---|---|---|---|---|---|---|---|---|
Код | HGF | ж г ч j | Код | HGF | ж г ч j | |||
Дх0 | 000 | 1011 | 0100 | Кх0 | 000 | 1011 | 0100 | |
Дх1 | 001 | 1001 | Кx1 ‡ | 001 | 0 110 | 1 001 | ||
Дх2 | 010 | 0101 | Кх2 | 010 | 1010 | 0101 | ||
Дх3 | 011 | 1100 | 0011 | Кх3 | 011 | 1100 | 0011 | |
Дх4 | 100 | 1101 | 0010 | Кх4 | 100 | 1101 | 0010 | |
Dx5 | 101 | 1010 | Кx5 ‡ | 101 | 0 101 | 1 010 | ||
Dx6 | 110 | 0110 | Крx6 | 110 | 1001 | 0110 | ||
ДхП7 † | 111 | 1110 | 0001 | Крx7 ‡ | 111 | 0 111 | 1 000 | |
DxA7 † | 0111 | 1000 |
† Для Dx7 необходимо выбрать либо основную (DxP7), либо альтернативную (DxA7) кодировку, чтобы избежать серии из пяти последовательных нулей или единиц в сочетании с предыдущим кодом 5b/6b.
Последовательности ровно из пяти одинаковых битов используются в символах запятой для проблем синхронизации.
используется только DxA7
- когда RD = −1: для x = 17, 18 и 20 и
- когда RD = +1: для x = 11, 13 и 14.
При x =23, x =27, x =29 и x =30 часть кода 3b/4b, используемая для символов управления Kx7, такая же, как и для DxA7.
Любой другой код DxA7 использовать нельзя, так как это может привести к смещению последовательностей запятых.
‡ Только K.28.1, K.28.5 и K.28.7 генерируют символы запятой, которые содержат битовую последовательность из пяти нулей или единиц.
Символ имеет формат 11 0000 0 1xx или 00 1111 1 0xx.
Символы управления
[ редактировать ]Управляющие символы внутри 8b/10b представляют собой символы 10b, которые представляют собой действительные последовательности битов (не более шести единиц или нулей), но не имеют соответствующего байта данных 8b. Они используются для функций управления низкого уровня. Например, в Fibre Channel K28.5 используется в начале четырехбайтовых последовательностей (называемых «упорядоченными наборами»), которые выполняют такие функции, как арбитраж цикла, слова заполнения, сброс канала и т. д.
На основании таблиц 5b/6b и 3b/4b разрешена передача следующих 12 управляющих символов:
Вход | РД = −1 | РД = +1 | |||
---|---|---|---|---|---|
Символ | Декабрь | шестигранник | HGF EDCBA | abcdei fghj | abcdei fghj |
К.28.0 | 28 | 1С | 000 11100 | 001111 0100 | 110000 1011 |
К.28.1 † | 60 | 3С | 001 11100 | 00 1111 1 001 | 11 0000 0 110 |
К.28.2 | 92 | 5С | 010 11100 | 001111 0101 | 110000 1010 |
К.28.3 | 124 | 7С | 011 11100 | 001111 0011 | 110000 1100 |
К.28.4 | 156 | 9С | 100 11100 | 001111 0010 | 110000 1101 |
К.28.5 † | 188 | до нашей эры | 101 11100 | 00 1111 1 010 | 11 0000 0 101 |
К.28.6 | 220 | округ Колумбия | 110 11100 | 001111 0110 | 110000 1001 |
К.28.7 ‡ | 252 | ФК | 111 11100 | 00 1111 1 000 | 11 0000 0 111 |
К.23.7 | 247 | F7 | 111 10111 | 111010 1000 | 000101 0111 |
К.27.7 | 251 | ФБ | 111 11011 | 110110 1000 | 001001 0111 |
К.29.7 | 253 | ФД | 111 11101 | 101110 1000 | 010001 0111 |
К.30.7 | 254 | ИП | 111 11110 | 011110 1000 | 100001 0111 |
† В управляющих символах K.28.1, K.28.5 и K.28.7 являются «символами запятой». Символы запятой используются для синхронизации (нахождения выравнивания кодов 8b/10b в битовом потоке). Если K.28.7 не используется, уникальные последовательности запятых 00 11111 0 или 11 00000 1 не могут случайно появиться в любой позиции бита в любой комбинации обычных кодов.
‡ Если K.28.7 разрешен в фактическом кодировании, необходимо использовать более сложное определение шаблона синхронизации, чем предложено †, поскольку комбинация K.28.7 с несколькими другими кодами образует ложный смещенный символ запятой, перекрывающий два кода. . Последовательность нескольких кодов K.28.7 не допускается ни в коем случае, так как это приведет к необнаружимым смещенным символам запятой.
K.28.7 — единственный символ запятой, который не может быть результатом ошибки в один бит в потоке данных.
Пример кодировки D31.1
[ редактировать ]Вход | РД = −1 | РД = +1 | |||
---|---|---|---|---|---|
Код | Декабрь | шестигранник | HGF EDCBA | abcdei fghj | abcdei fghj |
Д31.1 | 63 | 3эт. | 001 11111 | 101011 1001 | 010100 1001 |
Технологии, использующие 8b/10b
[ редактировать ]После истечения срока действия вышеупомянутого патента IBM схема стала еще более популярной и была выбрана в качестве линейного кода без постоянного тока для нескольких технологий связи.
Среди областей, в которых находит применение кодирование 8b/10b, можно выделить следующие:
- Аврора
- Последовательный интерфейс камеры
- КоаXPress
- Общий интерфейс общественного радио (CPRI)
- DVB Асинхронный последовательный интерфейс (ASI)
- DVI и HDMI Video Island ( дифференциальная передача сигналов с минимизацией переходов )
- ДисплейПорт 1.x
- ESCON (подключение к корпоративным системам)
- оптоволоконный канал
- Gigabit Ethernet (кроме витой пары на основе 1000BASE-T )
- IEEE 1394b (FireWire и другие)
- ИнфиниБэнд
- ДЖЕСД204Б
- ОБСАИ РП3 Интерфейс
- PCI Express 1.x и 2.x
- Серийный RapidIO
- SD UHS-II
- Серийный АТА
- SAS 1.x, 2.x и 3.x
- ССА
- ServerNet (начиная с ServerNet2)
- СГМИИ
- ЮниПро М-ФИЗ [7]
- USB 3.0
- Thunderbolt 1.x и 2.x
- ХАУИ
- СЛВС-ЕС
Fibre Channel (только варианты 4GFC и 8GFC)
[ редактировать ]Стандарт FC-0 определяет, какая схема кодирования должна использоваться (8b/10b или 64b/66b) в системе Fibre Channel. [8] – варианты с более высокой скоростью обычно используют 64b/66b для оптимизации эффективности использования полосы пропускания (поскольку накладные расходы на полосу пропускания составляют 20% в 8b/10b по сравнению примерно с 3% (~ 2/66) в системах 64b/66b). Таким образом, кодировка 8b/10b используется для вариантов 4GFC и 8GFC; для вариантов 10GFC и 16GFC это 64b/66b. [9] Канальный уровень Fibre Channel FC1 затем отвечает за реализацию кодирования и декодирования сигналов 8b/10b.
Схема кодирования Fibre Channel 8b/10b также используется в других телекоммуникационных системах. Данные расширяются с помощью алгоритма, который создает одно из двух возможных 10-битных выходных значений для каждого входного 8-битного значения. Каждое 8-битное входное значение может сопоставляться либо с 10-битным выходным значением с нечетным несоответствием, либо с четным несоответствием. Такое сопоставление обычно выполняется в тот момент, когда параллельные входные данные преобразуются в последовательный выходной поток для передачи по оптоволоконному каналу. Выбор нечетного/четного выполняется таким образом, что сохраняется долговременное нулевое несоответствие между единицами и нулями. Это часто называют «балансировкой постоянного тока».
Схема преобразования 8-бит в 10-бит использует только 512 из 1024 возможных выходных значений. Из оставшихся 512 неиспользуемых выходных значений большинство содержат слишком много единиц (или слишком много нулей) и поэтому не допускаются. Это по-прежнему оставляет достаточно запасных 10-битных пар кодирования «нечет + чет», чтобы можно было использовать как минимум 12 специальных символов, не являющихся данными.
Коды, представляющие 256 значений данных, называются кодами данных (D). Коды, которые представляют 12 специальных символов, не являющихся данными, называются управляющими кодами (K).
Все коды можно описать, указав 3 восьмеричных значения. Это делается с использованием соглашения об именах «Dxx.x» или «Kxx.x». (Обратите внимание, что в таблицах в предыдущих разделах используются десятичные, а не восьмеричные значения для Dxx.x или Kxx.x)
Пример:
- Биты входных данных: ABCDEFGH
- Данные разделены: ABC DEFGH
- Данные перемешиваются: DEFGH ABC
Теперь эти биты преобразуются в десятичные числа так, как они спарены.
Входные данные
C3 (HEX) = 11000011 = 110 00011 = 00011 110 = 3 6
И 8Б/10Б = Д03.6
Цифровое аудио
[ редактировать ]Схемы кодирования 8b/10b нашли широкое применение в приложениях для хранения цифрового звука, а именно:
- Цифровая аудиокассета , патент США № 4 456 905, июнь 1984 г., К. Одака.
- Цифровая компактная кассета (DCC), патент США 4620311, октябрь 1986 г., Кес Шухамер Имминк .
используется другая, но схожая схема Для аудио компакт-дисков и компакт-дисков :
Альтернативы
[ редактировать ]Обратите внимание, что 8b/10b — это схема кодирования, а не конкретный код. Хотя многие приложения используют один и тот же код, существуют некоторые несовместимые реализации; например, Transition Minimized Differential Signaling , который также расширяет 8 бит до 10 бит, но использует для этого совершенно другой метод.
Кодирование 64b/66b , представленное для (PMD) 10 Gigabit Ethernet интерфейсов 10GBASE -R Physical Medium Dependent , представляет собой альтернативу кодированию 8b/10b с меньшими издержками, имеющую двухбитные издержки на 64 бита (вместо восьми битов). закодированных данных. Эта схема значительно отличается по конструкции от кодирования 8b/10b и не гарантирует явного баланса постоянного тока, короткой длины прогона и плотности перехода (эти функции достигаются статистически посредством скремблирования ). Кодировка 64b/66b была расширена до вариантов кодирования 128b/130b и 128b/132b для PCI Express 3.0 и USB 3.1 соответственно, заменив кодировку 8b/10b в более ранних версиях каждого стандарта. [10]
Ссылки
[ редактировать ]- ^ Кес Шухамер Имминк (март 1997 г.). «Оценка производительности многомодовых кодов без постоянного тока». Транзакции IEEE в области коммуникаций . 45 (3): 293–299. дои : 10.1109/26.558690 .
Сбалансированные по постоянному току или беспостоянные коды, как их часто называют, имеют долгую историю, и их применение, конечно, не ограничивается практикой записи.
- ^ US 4456905 , «Способ и устройство для кодирования двоичных данных», опубликован 26 июня 1984 г.
- ^ US 4620311 , «Способ передачи информации, устройство кодирования для использования в способе и устройство декодирования для использования в способе», опубликовано 28 октября 1986 г.
- ^ Эл X. Видмер, Питер А. Франашек (1983). «Сбалансированный по постоянному току, разделенный блок, код передачи 8B/10B» . Журнал исследований и разработок IBM . 27 (5): 440–451. дои : 10.1147/rd.275.0440 .
- ^ США 4,486,739 , «Байт-ориентированный сбалансированный (0,4) 8B/10B код передачи разделенных блоков постоянного тока», опубликован 4 декабря 1984 г.
- ^ Тэтчер, Джонатан (1 апреля 1996 г.). «Мысли о физическом гигабитном Ethernet» . ИБМ . Проверено 17 августа 2008 г.
- ^ «Спецификации физического уровня» . Мипи.орг . МИПИ Альянс . Проверено 20 апреля 2014 г.
- ^ Оптоволоконный канал Фрейминг и сигнализация - 3 (FC-FS-3) Версия 1.1 Разделы 5.2.1 и 5.3.1 [1]
- ^ ВОЛОКОННЫЙ КАНАЛ Физический интерфейс-5 (ФК-ПИ-5) РЕД. 6.10 Раздел 5.7 [2]
- ^ Махеш Ваг (6 августа 2011 г.). «Кодирование PCIe 3.0 и логика PHY» (PDF) . pcisig.com . Проверено 5 июня 2015 г.
Внешние ссылки
[ редактировать ]- «Определение кодировки 8b/10b» . Архивировано из оригинала 8 июня 2014 года . Проверено 2 сентября 2014 г.