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 году Эл Видмером и Питером Франашеком.
Как следует из названия схемы, восемь бит данных передаются в виде 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 |
---|---|---|---|
−1 | 0 | 0 | -1 |
−1 | ±2 | +2 | +1 |
+1 | 0 | 0 | +1 |
+1 | ±2 | −2 | -1 |
Вход | RD = -1 | RD = +1 | Вход | RD = −1 | RD = +1 | ||||
---|---|---|---|---|---|---|---|---|---|
Код | EDCBA | abcdei | Код | EDCBA | abcdei | ||||
D.00 | 00000 | 100111 | 011000 | D.16 | 10000 | 011011 | 100100 | ||
D.01 | 00001 | 011101 | 100010 | D.17 | 10001 | 100011 | |||
D.02 | 00010 | 101101 | 010011 | D.18 | 10010 | 010011 | |||
D.03 | 00011 | 110001 | D.19 | 10011 | 110010 | ||||
D.04 | 00100 | 110101 | 001010 | D.20 | 10100 | 001011 | |||
D.05 | 00101 | 101001 | D.21 | 10101 | 101010 | ||||
D.06 | 00110 | 011001 | D.22 | 10110 | 011010 | ||||
D.07 | 00111 | 111000 | 000111 | D.23 † | 10111 | 111010 | 000101 | также используется для символа K.23.7 | |
D.08 | 01000 | 111001 | 000110 | D.24 | 11000 | 110011 | 001100 | ||
D.09 | 01001 | 100101 | D.25 | 11001 | 100110 | ||||
D.10 | 01010 | 010101 | D.26 | 11010 | 010110 | ||||
D.11 | 01011 | 110100 | D.27 † | 11011 | 110110 | 001001 | также используется для символа K.27.7 | ||
D.12 | 01100 | 001101 | D.28 | 11100 | 001110 | ||||
D.13 | 01101 | 101100 | D.29 † | 11101 | 101110 | 010001 | также используется для символ K.29.7 | ||
D.14 | 01110 | 011100 | D.30 † | 11110 | 011110 | 100001 | также используется для символа K.30.7 | ||
D.15 | 01111 | 010111 | 101000 | D.31 | 11111 | 101011 | 010100 | ||
не используется | 1111 00 | 0000 11 | K.28 ‡ | 11100 | 001111 | 110000 | искл. обычно используется для символов K.28.x |
† также используется для кода 5b / 6b для Kx7
‡ исключительно для кода 5b / 6b для K.28.y
Вход | RD = -1 | RD = +1 | Вход | RD = -1 | RD = +1 | |||
---|---|---|---|---|---|---|---|---|
Код | HGF | fghj | Код | HGF | fghj | |||
Dx0 | 000 | 1011 | 0100 | Kx0 | 000 | 1011 | 0100 | |
Dx1 | 001 | 1001 | Kx1 ‡ | 001 | 0110 | 1001 | ||
Dx2 | 010 | 0101 | Kx2 | 010 | 1010 | 0101 | ||
Dx3 | 011 | 1100 | 0011 | Kx3 | 011 | 1100 | 0011 | |
Dx4 | 100 | 1101 | 0010 | Kx4 | 100 | 1101 | 0010 | |
Dx5 | 101 | 1010 | Kx5 ‡ | 101 | 0101 | 1010 | ||
Dx6 | 110 | 0110 | Kx6 | 110 | 1001 | 0110 | ||
DxP7 † | 111 | 1110 | 0001 | Kx7 ‡ | 111 | 0111 | 1000 | |
DxA7 † | 0111 | 1000 |
† Для Dx7 необходимо выбрать первичную (DxP7) или альтернативную (DxA7) кодировку, чтобы избежать серия из пяти последовательных 0 или 1 в сочетании с предыдущим кодом 5b / 6b.. Последовательности ровно из пяти идентичных битов используются в символах запятой для проблем синхронизации.. DxA7 используется только
При 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 = -1 | RD = +1 | |||
---|---|---|---|---|---|
Symbol | DEC | HEX | HGF EDCBA | abcdei fghj | abcdei fghj |
K.28.0 | 28 | 1C | 000 11100 | 001111 0100 | 110000 1011 |
K.28.1 † | 60 | 3C | 001 11100 | 001111 1 001 | 110000 0 110 |
K.28.2 | 92 | 5C | 010 11100 | 001111 0101 | 110000 1010 |
K.28.3 | 124 | 7C | 011 11100 | 001111 0011 | 110000 1100 |
K.28.4 | 156 | 9C | 100 11100 | 001111 0010 | 110000 1101 |
K.28.5 † | 188 | BC | 101 11100 | 001111 1 010 | 110000 0 101 |
K.28.6 | 220 | DC | 110 11100 | 001111 0110 | 110000 1001 |
K.28.7 ‡ | 252 | FC | 111 11100 | 001111 1 000 | 110000 0 111 |
K.23.7 | 247 | F7 | 111 10111 | 111010 1000 | 000101 0111 |
K.27.7 | 251 | FB | 111 11011 | 110110 1000 | 001001 0111 |
K.29.7 | 253 | FD | 111 11101 | 101110 1000 | 010001 0111 |
K.30.7 | 254 | FE | 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 - единственный символ запятой, который не может быть результатом единственной битовой ошибки в потоке данных.
Вход | RD = -1 | RD = +1 | |||
---|---|---|---|---|---|
Код | DEC | HEX | HGF EDCBA | abcdei fghj | abcdei fghj |
D31.1 | 63 | 3F | 001 11111 | 101011 1001 | 010100 1001 |
После истечения срока действия вышеупомянутого патента IBM, схема стала еще более популярной и была выбрана в качестве линейного кода без постоянного тока для нескольких коммуникационных технологий.
Среди областей, в которых находит применение кодировка 8b / 10b, следующие:
Стандарт 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».
Пример:
Теперь эти биты преобразуются в десятичную форму. они парные.
Входные данные
C3 (HEX) = 11000011 = 110 00011 = 00011 110 = 3 6
E 8B / 10B = D03.6
Схемы кодирования 8b / 10b нашли широкое применение в приложениях для хранения цифрового аудио, а именно
. Для аудио компакт-дисков и компакт-дисков :
Обратите внимание, что 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 в более ранних версиях каждый стандарт.