Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Линейный код, отображающий 8-битные слова в 10-битные символы.
Line code mapping 8 bit words to 10 bit symbols
В телекоммуникациях 8b/10b — это линейный код, который отображает 8-битные слова в 10-битные символы для обеспечения баланса по постоянному току и ограниченной разности между единицами и нулями, а также достаточного количества переключений для надёжного восстановления тактовой частоты. Это означает, что разница между количеством единиц и нулей в последовательности длиной не менее 20 бит не превышает двух, и что в последовательности не более пяти единиц или нулей подряд. Это помогает снизить требования к нижней границе полосы пропускания канала, необходимой для передачи сигнала. Код 8b/10b может быть реализован различными способами с упором на разные параметры производительности. Одна из реализаций была разработана К. Одакой для цифрового аудиомагнитофона DAT. Кис Шуамер Имминк разработал код 8b/10b для аудиомагнитофона DCC. Реализация IBM была описана в 1983 году Аль Видмером и Питером Франжеком.
In telecommunications, 8b/10b is a line code that maps 8 bit words to 10 bit symbols to achieve DC balance and bounded disparity, and at the same time provide enough state changes to allow reasonable clock recovery. This means that the difference between the counts of ones and zeros in a string of at least 20 bits is no more than two, and that there are not more than five ones or zeros in a row. This helps to reduce the demand for the lower bandwidth limit of the channel necessary to transfer the signal. An 8b/10b code can be implemented in various ways with focus on different performance parameters. One implementation was designed by K. Odaka for the DAT digital audio recorder. Kees Schouhamer Immink designed an 8b/10b code for the DCC audio recorder. The IBM implementation was described in 1983 by Al Widmer and Peter Franaszek.
Внедрение 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-битных слов могут быть закодированы двумя различными способами. Используя эти альтернативные кодировки, схема способна обеспечить долгосрочный баланс постоянного тока в последовательном потоке данных. Это позволяет передавать поток данных по каналу с высокочастотными характеристиками, например, через трансформаторно-связанную витую пару Ethernet или оптические приемники с автоматической регулировкой усиления.
As the scheme name suggests, eight bits of data are transmitted as a 10 bit entity called a symbol, or character. The low five bits of data are encoded into a 6 bit group (the 5b/6b portion) and the top three bits are encoded into a 4 bit group (the 3b/4b portion). These code groups are concatenated together to form the 10 bit symbol that is transmitted on the wire. The data symbols are often referred to as D. x. y where x ranges over 0–31 and y over 0–7. Standards using the 8b/10b encoding also define up to 12 special symbols (or control characters) that can be sent in place of a data symbol. They are often used to indicate start of frame, end of frame, link idle, skip and similar link level conditions. At least one of them (i. e. a "comma" symbol) needs to be used to define the alignment of the 10 bit symbols. They are referred to as K. x. y and have different encodings from any of the D. x. y symbols. Because 8b/10b encoding uses 10 bit symbols to encode 8 bit words, some of the possible 1024 (10 bit, 210) symbols can be excluded to grant a run length limit of 5 consecutive equal bits and to ensure the difference between the count of zeros and ones to be no more than two. Some of the 256 possible 8 bit words can be encoded in two different ways. Using these alternative encodings, the scheme is able to achieve long term DC balance in the serial data stream. This permits the data stream to be transmitted through a channel with a high pass characteristic, for example Ethernet's transformer coupled unshielded twisted pair or optical receivers using automatic gain control.
Таблицы кодирования и байтовое кодирование
Обратите внимание, что в следующих таблицах для каждого входного байта (представленного как ), A обозначает наименее значимый бит (LSB), а H – наиболее значимый (MSB). Выходные данные получают два дополнительных бита, i и j. Биты передаются от LSB к MSB: 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), выбор кодирования с положительной или отрицательной дисперсией должен быть таким, чтобы изменить текущую дисперсию. Иными словами, коды с ненулевой дисперсией чередуются.
Note that in the following tables, for each input byte (represented as ), A denotes the least significant bit (LSB), and H the most significant (MSB). The output gains two extra bits, i and j. The bits are sent from LSB to MSB: a, b, c, d, e, i, f, g, h, and j; i. e., the 5b/6b code followed by the 3b/4b code. This ensures the uniqueness of the special bit sequence in the comma symbols. The residual effect on the stream to the number of zero and one bits transmitted is maintained as the running disparity (RD) and the effect of slew is balanced by the choice of encoding for following symbols. The 5b/6b code is a paired disparity code, and so is the 3b/4b code. Each 6 or 4 bit code word has either equal numbers of zeros and ones (a disparity of zero), or comes in a pair of forms, one with two more zeros than ones (four zeros and two ones, or three zeros and one one, respectively) and one with two less. When a 6 or 4 bit code is used that has a non zero disparity (count of ones minus count of zeros; i. e., −2 or +2), the choice of positive or negative disparity encodings must be the one that toggles the running disparity. In other words, the non zero disparity codes alternate.
Код 5b/6b (абцдей)
Вход RD = −1 RD = +1 Вход RD = −1 RD = +1 Код EDCBA a b c d e i Код EDCBA a b c d e i D.00 00000 100111 011000 D.16 10000 011011 100100 D.01 00001 011101 100010 D.17 10001 100011 D.02 00010 101101 010010 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 не используется 111100 000011 K.28 ‡ 11100 001111 110000 используется исключительно для символов K.28. x
Input RD = −1 RD = +1 Input RD = −1 RD = +1 Code EDCBA (Bits of a 5 bits with MSB on the left and LSB on the right) a b c d e i Code EDCBA a b c d e i D.00 00000 100111 011000 D.16 10000 011011 100100 D.01 00001 011101 100010 D.17 10001 100011 D.02 00010 101101 010010 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 also used for the K.23.7 symbol 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 also used for the K.27.7 symbol D.12 01100 001101 D.28 11100 001110 D.13 01101 101100 D.29 † 11101 101110 010001 also used for the K.29.7 symbol D.14 01110 011100 D.30 † 11110 011110 100001 also used for the K.30.7 symbol D.15 01111 010111 101000 D.31 11111 101011 010100 not used 111100 000011 K.28 ‡ 11100 001111 110000 exclusively used for K.28. x symbols
† also used for the 5b/6b code of K. x.7
‡ exclusively used for the 5b/6b code of K.28. y
† также используется для 5b/6b кода K. x.7
‡ используется исключительно для 5b/6b кода K.28. y
Input RD = −1 RD = +1 Input RD = −1 RD = +1 Code EDCBA (Bits of a 5 bits with MSB on the left and LSB on the right) a b c d e i Code EDCBA a b c d e i D.00 00000 100111 011000 D.16 10000 011011 100100 D.01 00001 011101 100010 D.17 10001 100011 D.02 00010 101101 010010 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 also used for the K.23.7 symbol 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 also used for the K.27.7 symbol D.12 01100 001101 D.28 11100 001110 D.13 01101 101100 D.29 † 11101 101110 010001 also used for the K.29.7 symbol D.14 01110 011100 D.30 † 11110 011110 100001 also used for the K.30.7 symbol D.15 01111 010111 101000 D.31 11111 101011 010100 not used 111100 000011 K.28 ‡ 11100 001111 110000 exclusively used for K.28. x symbols
† also used for the 5b/6b code of K. x.7
‡ exclusively used for the 5b/6b code of K.28. y
Пример кодирования D31.1
+ D31.1 для обоих случаев бегущей диспропорции Вход RD = −1 RD = +1 Код DEC HEX HGF EDCBA abcdei fghj abcdei fghj D31.1 63 3F 001 11111 101011 1001 010100 1001
Обратите внимание, что 8b/10b – это схема кодирования, а не конкретный код. Хотя многие приложения используют один и тот же код, существуют несовместимые реализации; например, Transition Minimized Differential Signaling, которая также преобразует 8 бит в 10, но использует для этого совершенно другой метод. Кодирование 64b/66b, представленное для интерфейсов 10GBASE R Physical Medium Dependent (PMD) 10 Gigabit Ethernet, является альтернативой с меньшими накладными расходами по сравнению с 8b/10b, имея двухбитные накладные расходы на каждые 64 бита (вместо восьми бит) закодированных данных. Эта схема значительно отличается по конструкции от кодирования 8b/10b и не обеспечивает явного баланса постоянного тока, короткой длины последовательности и плотности переходов (эти характеристики достигаются статистически посредством скремблирования). Кодирование 64b/66b было расширено до вариантов 128b/130b и 128b/132b для PCI Express 3.0 и USB 3.1 соответственно, заменяя кодирование 8b/10b в более ранних версиях каждого стандарта.
Note that 8b/10b is the encoding scheme, not a specific code. While many applications do use the same code, there exist some incompatible implementations; for example, Transition Minimized Differential Signaling, which also expands 8 bits to 10 bits, but it uses a completely different method to do so. 64b/66b encoding, introduced for 10 Gigabit Ethernet's 10GBASE R Physical Medium Dependent (PMD) interfaces, is a lower overhead alternative to 8b/10b encoding, having a two bit overhead per 64 bits (instead of eight bits) of encoded data. This scheme is considerably different in design from 8b/10b encoding, and does not explicitly guarantee DC balance, short run length, and transition density (these features are achieved statistically via scrambling). 64b/66b encoding has been extended to the 128b/130b and 128b/132b encoding variants for PCI Express 3.0 and USB 3.1, respectively, replacing the 8b/10b encoding in earlier revisions of each standard.