Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Зошит 2.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
241 Кб
Скачать
☆

4.4 Логічне кодування

Деякі різновиди цифрового кодування дуже чутливі до характеру передаваних даних. Наприклад, при передачі довгих послідовностей логічних нулів за допомогою потенційного коду типу NRZ або AMI сигнал на лінії довгий час не змінюється, і приймач може помилитися з початком прочитування чергового біта. Для коду NRZ подібні проблеми виникають і при передачі довгих послідовностей логічних одиниць.

Логічне кодування (якому може піддаватися початкова послідовність даних) повинне упроваджувати в довгі послідовності біт, біти з протилежним значенням, або взагалі замінювати їх іншими послідовностями. Окрім виключення “проблемних” бітових послідовностей, логічне кодування дозволяє також збільшити кодову відстань між символами (для спрощення декодування), поліпшити спектральні характеристики сигналу, та окрім того передавати в загальному потоці службові сигнали.

Для логічного кодування застосовуються три групи методів: вставка біт, надмірне кодування і скремблювання.

Вставка біт (bit stuffing) – найбільш прямолінійний спосіб виключення довгих послідовностей, наприклад, логічних одиниць. Якщо в передаваній послідовності зустрічається безперервний ланцюжок “1”, то передавач вставляє “0” після кожної, наприклад, п'ятої “1”. Приймач відкидає всі ці зайві “0”, які зустрічаються після п'яти “1”. Зрозуміло, можна проводити і зворотню операцію – вставку “1” в довгі послідовності “0”. Схема вставки біт застосовується, наприклад, в протоколі HDLC.

Надмірне кодування засноване на розбитті початкової послідовності біт на ділянки однакової довжини – символи. Потім кожний символ замінюється (як правило, табличним способом) на новий, такий, що має або більшу кількість біт, або іншу підставу системи числення (наприклад, на символ, що складається з трійкових розрядів).

Розглянемо деякі поширені схеми логічного кодування.

Логічний код 4B/5B замінює кожні 4 біта вхідного потоку (початковий символ) на 5-бітовий вихідний символ. Оскільки кількість різних 5-бітових символів дорівнює 32, а початкові символи можуть містити лише одну з 16 бітових комбінацій, серед можливих вихідних кодів можна відібрати 16 “зручних” комбінацій – що не містять великої кількості нулів (більше трьох підряд), серед кодів, що залишилися, виділити службові символи (для підтримки синхронізації, виділення меж кадрів та їх полів і так далі), а коди, що залишилися, вважати забороненими.

Таблиця 4.1. – Код 4B/5B

Вхідний

символ

Вихідний

символ

Вхідний

символ

Вихідний

символ

0000

11110

1000

10010

0001

01001

1001

10011

0010

10100

1010

10110

0011

10101

1011

10111

0100

01010

1100

11010

0101

01011

1101

11011

0110

01110

1110

11100

0111

01111

1111

11101

Накладні витрати при кодуванні 4B/5B становлять 25% (один зайвий біт на чотири біта даних), відповідно для досягнення тієї ж пропускної спроможності, що і без логічного кодування, передавач повинен працювати на підвищеній на 25% частоті. Код 4B/5B використовується в FDDI і Fast Ethernet: 100BaseFX і 100BaseTX.

Логічний код 8B/10B замінює кожний 8-бітовий початковий символ 10-бітовим вихідним символом. При тому ж рівні накладних витрат (25%), що в коді 4B/5B, має 4-кратну надмірність (1024 вихідних символів і 256 початкових символів).

При кодуванні 8B/10B кожному початковому символу зіставлене два вихідних символи, вибір з яких здійснюється залежно від останнього біту попереднього переданого символу. Як наслідок, код забезпечує стабільне співвідношення “0” і “1” у вихідному потоці, незалежно від початкових даних. Ця властивість важлива для лазерних передавачів, оскільки від даного співвідношення залежить їх нагрівання і кількість помилок прийому. Код 8B/10B використовується в Gigabit Ethernet: 1000BaseSX,LX,CX.

Логічний код 8B/6T кодує кожні 8 біт початкової інформації шістьма трійковими (T – ternary, трійковий) розрядами, що приймають значення {+, 0, –}. Наприклад, “00000000” = “+–00+–“, “11111110” = “– +0+00”. Надмірність коду 8B/6T вища, ніж у коду 4B/5B і становить 36/28 = 729/256 = 2,85. Застосовується в 100BaseT4.

Скремблювання полягає в побітному обчисленні вихідної послідовності на підставі значень біт початкової послідовності і вже обчислених біт результату. Наприклад, скремблер може обчислювати для кожного біта такий вираз: Bi=AiBi-5 Bi-7, де Ai – i-й біт початкової послідовності, Bi – i-й біт результату скремблювання,  – операція додавання по модулю 2. Різні алгоритми скремблювання відрізняються різною кількістю доданків і різним зрушенням між доданками (у наведеному вище прикладі використовується два доданки зі зрушеннями 5 і 7). Наприклад, в ISDN використовується два варіанти скремблювання: зі зрушеннями 5 і 23, та зі зрушеннями 18 і 23.

Існують спеціальні методи скремблювання, вживані спільно з певними методами фізичного кодування. Наприклад, для поліпшення коду AMI застосовуються методи B8ZS і HDB3. Метод B8ZS (Bipolar win 8-Zeros Substitution, біполярний із заміною 8 нулів) замінює послідовності, що складаються з 8 нулів на “000V10V1”, де V – сигнал одиниці забороненої в даному такті полярності, а 1 – сигнал одиниці коректної полярності. Якщо на 8 тактах приймач спостерігає три початкові нулі і два спотворення полярності, то він замінює ці 8 біт на 8 логічних нулів. Метод HDB3 (High-Density Bipolar 3-Zeros, біполярний трьох-нульової високої щільності) замінює послідовності з чотирьох нулів, що йдуть чередою, на один з чотирьох біполярних кодів залежно від передісторії – полярності попереднього імпульсу і попередньої заміни.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]