Кодирование 8b / 10b - 8b/10b encoding

редактировать
Отображение линейного кода 8-битные слова в 10-битные символы

Fibre Channel
Уровень 4. Отображение протокола
Маскирование LUN ​​
Уровень 3. Общие службы
Уровень 2. Сеть
Структура Fibre Channel. Зонирование Fibre Channel. Уведомление об изменении зарегистрированного состояния
Уровень 1. Канал передачи данных
Кодирование Fibre Channel 8B / 10B
уровня 0. Физический

В телекоммуникациях, 8b / 10b - это линейный код, который отображает 8 -бит слов до 10-битных символов для достижения баланса постоянного тока и ограниченного несоответствия, и при этом обеспечить достаточное количество изменений состояния, чтобы позволить разумный восстановление часов. Это означает, что разница между счетчиками единиц и нулей в строке из не менее 20 бит не более двух и что в строке не более пяти единиц или нулей. Это помогает снизить потребность в нижнем пределе полосы пропускания канала, необходимом для передачи сигнала.

Код 8b / 10b может быть реализован различными способами, при этом дизайн может быть ориентирован на конкретные параметры, такие как требования к оборудованию, Баланс постоянного тока и т. Д. К. Одака разработал одну реализацию для цифрового аудиомагнитофона DAT. Кис Шухамер Имминк разработал код 8b / 10b для DCC диктофон. Реализация IBM была описана в 1983 году Эл Видмером и Питером Франашеком.

Содержание
  • 1 Как это работает для кода IBM
    • 1.1 Таблицы кодирования
      • 1.1.1 Запуск несоответствие
      • 1.1.2 Код 5b / 6b (abcdei)
      • 1.1.3 Код 3b / 4b (fghj)
      • 1.1.4 Управляющие символы
      • 1.1.5 Пример кодирования D31.1
  • 2 Технологии, использующие 8b / 10b
    • 2.1 Fibre Channel (только варианты 4GFC и 8GFC)
    • 2.2 Цифровое аудио
  • 3 Альтернативы
  • 4 Ссылки
  • 5 Внешние ссылки
Как это работает для Код IBM

Как следует из названия схемы, восемь бит данных передаются в виде 10-битного объекта, называемого символом или символом. Младшие пять битов данных кодируются в 6-битную группу (часть 5b / 6b), а верхние три бита кодируются в 4-битную группу (часть 3b / 4b). Эти кодовые группы объединяются вместе, чтобы сформировать 10-битовый символ, который передается по сети. Символы данных часто обозначаются как D.x.y, где x находится в диапазоне от 0 до 31, а y - от 0 до 7. Стандарты, использующие кодировку 8b / 10b, также определяют до 12 специальных символов (или управляющих символов), которые могут быть отправлены вместо символа данных. Они часто используются для обозначения начала кадра, конца кадра, отсутствия связи, пропуска и аналогичных условий на уровне канала. По крайней мере, один из них (т.е. символ «запятая») должен использоваться для определения выравнивания 10-битных символов. Они называются K.x.y и имеют кодировку, отличную от кодировки любого из символов D.x.y.

Поскольку кодирование 8b / 10b использует 10-битные символы для кодирования 8-битных слов, некоторые из возможных 1024 (10 бит, 2) кода могут быть исключены, чтобы предоставить ограничение длины серии в 5 последовательных одинаковых битов. и добиться, чтобы разница в количестве нулей и единиц была не более двух. Некоторые из 256 возможных 8-битных слов можно закодировать двумя разными способами. Используя эти альтернативные кодировки, схема может достичь долгосрочного баланса постоянного тока в последовательном потоке данных. Это позволяет передавать поток данных по каналу с характеристикой верхних частот, например, через неэкранированную витую пару или оптические приемники с автоматической регулировкой усиления.

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

Обратите внимание, что в следующих таблицах для каждого входного байта A - это младший бит, а H - самый старший. Выходные данные получают два дополнительных бита: 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.

Для каждого кода 5b / 6b и 3b / 4b с неравным количеством единиц и нулей есть две битовые комбинации, которые могут использоваться для его передачи: один с двумя дополнительными "1" "биты, и один со всеми инвертированными битами и, таким образом, еще два нуля. В зависимости от текущего текущего несоответствия сигнала механизм кодирования выбирает, какую из двух возможных шести- или четырехбитовых последовательностей отправить для заданных данных. Очевидно, что если шестибитный или четырехразрядный код имеет равное количество единиц и нулей, выбора нет, так как диспаратность будет неизменной, за исключением подблоков D.07 (00111) и Dx3. (011). В любом случае несоответствие остается неизменным, но если RD положительно, когда встречается D.07, используйте 000111, а если оно отрицательное, используйте 111000. Аналогично, если RD положительно, когда встречается Dx3, используйте 0011, а если оно отрицательное, используйте 1100. Это точно отражено в диаграммах ниже, но заслуживает дополнительного упоминания, так как это единственные два субблока с равным количеством единиц и нулей, каждый из которых имеет два возможных кодирования.

Правила для текущего несоответствия
предыдущий. RDДиспаратность. кодового словаДиспаратность. выбранаследующая. RD
−100-1
−1±2+2+1
+100+1
+1±2−2-1

код 5b / 6b (abcdei)

ВходRD = -1RD = +1ВходRD = −1RD = +1
КодEDCBAabcdeiКодEDCBAabcdei
D.0000000100111011000D.1610000011011100100
D.0100001011101100010D.1710001100011
D.0200010101101010011D.1810010010011
D.0300011110001D.1910011110010
D.0400100110101001010D.2010100001011
D.0500101101001D.2110101101010
D.0600110011001D.2210110011010
D.0700111111000000111D.23 †10111111010000101также используется для символа K.23.7 ​​
D.0801000111001000110D.2411000110011001100
D.0901001100101D.2511001100110
D.1001010010101D.2611010010110
D.1101011110100D.27 †11011110110001001также используется для символа K.27.7
D.1201100001101D.2811100001110
D.1301101101100D.29 †11101101110010001также используется для символ K.29.7
D.1401110011100D.30 †11110011110100001также используется для символа K.30.7
D.1501111010111101000D.3111111101011010100
не используется1111 000000 11K.28 ‡11100001111110000искл. обычно используется для символов K.28.x

† также используется для кода 5b / 6b для Kx7

‡ исключительно для кода 5b / 6b для K.28.y

Код 3b / 4b (fghj)

ВходRD = -1RD = +1ВходRD = -1RD = +1
КодHGFfghjКодHGFfghj
Dx000010110100Kx000010110100
Dx10011001Kx1 ‡00101101001
Dx20100101Kx201010100101
Dx301111000011Kx301111000011
Dx410011010010Kx410011010010
Dx51011010Kx5 ‡10101011010
Dx61100110Kx611010010110
DxP7 †11111100001Kx7 ‡11101111000
DxA7 †01111000

† Для Dx7 необходимо выбрать первичную (DxP7) или альтернативную (DxA7) кодировку, чтобы избежать серия из пяти последовательных 0 или 1 в сочетании с предыдущим кодом 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 управляющих символов:

Управляющие символы
ВходныеRD = -1RD = +1
SymbolDECHEXHGF EDCBAabcdei fghjabcdei fghj
K.28.0281C000 11100001111 0100110000 1011
K.28.1 †603C001 11100001111 1 001110000 0 110
K.28.2925C010 11100001111 0101110000 1010
K.28.31247C011 11100001111 0011110000 1100
K.28.41569C100 11100001111 0010110000 1101
K.28.5 †188BC101 11100001111 1 010110000 0 101
K.28.6220DC110 11100001111 0110110000 1001
K.28.7 ‡252FC111 11100001111 1 000110000 0 111
K.23.7 ​​247F7111 10111111010 1000000101 0111
K.27.7251FB111 11011110110 1000001001 0111
K.29.7253FD111 11101101110 1000010001 0111
K.30.7254FE111 11110011110 1000100001 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

D31.1 для обоих текущих случаев диспаратности
ВходRD = -1RD = +1
КодDECHEXHGF EDCBAabcdei fghjabcdei fghj
D31.1633F001 11111101011 1001010100 1001
Технологии, использующие 8b / 10b

После истечения срока действия вышеупомянутого патента IBM, схема стала еще более популярной и была выбрана в качестве линейного кода без постоянного тока для нескольких коммуникационных технологий.

Среди областей, в которых находит применение кодировка 8b / 10b, следующие:

Fibre Channel (только варианты 4GFC и 8GFC)

Стандарт FC-0 определяет, какую схему кодирования следует использовать (8b / 10b или 64b / 66b) в системе Fibre Channel - варианты с более высокой скоростью обычно используют 64b / 66b для оптимизации полосы пропускания эффективность (поскольку накладные расходы на полосу пропускания составляют 20% в системах 8b / 10b против примерно 3% (~ 2/66) в системах 64b / 66b). Таким образом, кодирование 8b / 10b используется для вариантов 4GFC и 8GFC; для вариантов 10GFC и 16GFC это 64b / 66b. Уровень канала передачи данных FC1 Fibre Channel затем отвечает за реализацию кодирования и декодирования сигналов 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».

Пример:

Биты входных данных: ABCDEFGH
Данные разделяются: ABC DEFGH
Данные перемешиваются: DEFGH ABC

Теперь эти биты преобразуются в десятичную форму. они парные.

Входные данные

C3 (HEX) = 11000011 = 110 00011 = 00011 110 = 3 6

E 8B / 10B = D03.6

Цифровое аудио

Схемы кодирования 8b / 10b нашли широкое применение в приложениях для хранения цифрового аудио, а именно

. Для аудио компакт-дисков и компакт-дисков :

  • компакт-дисков <используется другая, но родственная схема. 157>Модуляция восемь-четырнадцать
Альтернативы

Обратите внимание, что 8b / 10b - это схема кодирования, а не конкретный код. Хотя многие приложения действительно используют один и тот же код, существуют некоторые несовместимые реализации; например, Дифференциальная сигнализация с минимальным переходом, которая также расширяет 8 бит до 10 бит, но для этого использует совершенно другой метод.

Кодировка 64b / 66b, представленная для интерфейсов 10 Gigabit Ethernet 10GBASE-R Physical Medium Dependent (PMD), является более низкой -заголовок альтернатива кодированию 8b / 10b, имеющий двухбитные накладные расходы на 64 бита (вместо восьми битов) закодированных данных. Эта схема значительно отличается по конструкции от кодирования 8b / 10b и явно не гарантирует баланс постоянного тока, короткую длину цикла и плотность переходов (эти функции достигаются статистически с помощью скремблирования ). Кодирование 64b / 66b было расширено до вариантов кодирования 128b / 130b и 128b / 132b для PCI Express 3.0 и USB 3.1 соответственно, заменив кодировку 8b / 10b в более ранних версиях каждый стандарт.

Ссылки
Внешние ссылки
Последняя правка сделана 2021-07-19 06:13:11
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте