Телекоммуникацияда 8b/10b – 8 биттік сөздерді 10 биттік символдарға шамалап сәйкестендіретін желілік код, ол DC тепе-теңдігі мен шектелген айырмашылықты қамтамасыз ету үшін, сонымен қатар сағатты қалпына келтіруге жеткілікті күй өзгерістерін жасауға мүмкіндік береді. Бұл дегеніміз, кемінде 20 биттен тұратын тізбекте бірліктер мен нөлдердің санының айырмасы екіден аспайды және қатарынан бестен артық бірлік немесе нөл болмайды. Бұл сигналды тарату үшін қажетті арнаның ең төменгі өткізу қабілетіне қойылатын талапты азайтуға көмектеседі. 8b/10b коды әртүрлі өнімділік параметрлеріне назар аудара отырып, әртүрлі тәсілдермен жүзеге асырылуы мүмкін. Бір нұсқасын К. Одака DAT цифрлық аудио жазғышы үшін жасаған. Кис Шуамер Имминк DCC аудио жазғышы үшін 8b/10b кодын жасады. 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 кодтамасы 8 биттік сөздерді кодтау үшін 10 биттік символдарды пайдаланатындықтан, мүмкін болатын 1024 (10 бит, 210) символдардың кейбіреулерін 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.
Кодтау кестелері мен байт кодтау
Келесі кестелерде әрбір кіріс байты үшін (ағылш. ) А ең аз маңызды битті (LSB) және H ең маңызды битті (MSB) білдіреді. Шығыс екі қосымша битті, i және j алады. Биттер LSB-ден MSB-ге жіберіледі: a, b, c, d, e, i, f, g, h және j; яғни 5b/6b коды 3b/4b кодымен бірге келеді. Бұл үтір белгілеріндегі ерекше бит тізбегінің бірегейлігін қамтамасыз етеді. Биттер ағынындағы қалдық әсер, берілген нөлдер мен бірліктер саны арқылы сақталатын жұмыс істеп тұрған айырмашылық (RD) ретінде ұсталады, ал slew әсері келесі символдарға арналған кодтауды таңдау арқылы тепе-теңдетіледі. 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 коды (abcdei)
Input RD = −1 RD = +1 Input RD = −1 RD = +1 Code EDCBA (5 биттің биттері, MSB сол жақта және LSB оң жақта) 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 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
† сонымен қатар K. x.7 кодының 5b/6b үшін де қолданылады
† also used for the 5b/6b code of K. x.7
‡ тек қана K.28 5b/6b коды үшін қолданылады. y
‡ 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 битке дейін кеңейтеді, бірақ мұны жасау үшін мүлдем басқа әдіс қолданады. 10 Гбит Ethernet-тің 10GBASE R физикалық ортаға тәуелді (PMD) интерфейстері үшін енгізілген 64b/66b кодтау, 8b/10b кодтауға қарағанда аз үстемелі, әр 64 бит дерек үшін 2 бит үстеме (8 бит емес) қосады. Бұл схема 8b/10b кодтаудан түбегейлі өзгеше және DC теңгерімін, қысқа серия ұзындығын және өтпелдік тығыздықты тікелей кепілдемейді (бұл мүмкіндіктер статистикалық түрде шашырату арқылы қамтамасыз етіледі). 64b/66b кодтау PCI Express 3.0 және USB 3.1 үшін 128b/130b және 128b/132b кодтау нұсқаларына дейін кеңейтілді, бұл әр стандарттың бұрынғы нұсқаларындағы 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.