Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

diplov / file1

.pdf
Скачиваний:
108
Добавлен:
12.05.2015
Размер:
13.4 Mб
Скачать

(stop-and-wait ARQ), показана на мал. 1.7, а. Її реалізація вимагає тільки напівдуплексного з'єднання, оскільки передавач перед початком наступної передачі чекає підтвердження про успішний прийом (acknowledgement — ACK)

попередньої. В прикладі, приведеному на рисунку, переданий третій блок даних прийнятий з помилкою. Отже, приймач передає негативне підтвердження прийому (negative acknowledgement — NAK); передавач повторює передачу третього блоку повідомлення і лише після цього передає черговий блок даних.

Друга процедура ARQ, неперервний запит ARQ із поверненням (continuous ARQ with pullback), показана на мал. 1.7, б. Тут необхідне повнодуплексне з'єднання. Два кінцеві пристрої починають передачу одночасно: передавач відправляє інформацію, а приймач передає підтвердження про прийом даних.

Слід зазначити, що кожному блоку переданих даних привласнюється порядковий номер. Крім того, номери кадрів ACK і NAK повинні бути узгоджені; інакше кажучи, затримка розповсюдження сигналу повинна бути відомою апріорі, щоб передавач знав, до якого блоку повідомлення відноситься даний кадр підтвердження прийому. У прикладі на рис. 1.7,б час підібрано так,

що між відправленим блоком повідомлення і одержаним підтвердженням про прийом існує постійний інтервал в чотири блоки. В блоці 4, 7 є помилка -

передається сигнал NAK. При використанні процедури ARQ передавач

―повертається‖ до повідомлення з помилкою і знову передає всю інформацію,

починаючи з пошкодженого повідомлення. Третя процедура називається неперервним запитом ARQ із вибірковим повторенням (continuous ARQ with selective repeat) показана на рис 1.7, в. Тут, як і в другій процедурі потрібне повнодуплексне з'єднання. Втім, в цій процедурі повторно передається тільки спотворене повідомлення; потім передавач продовжує передачу з того місця, де вона перервалася, не виконуючи повторної передачі правильно прийнятих повідомлень [43].

31

Рис.1.7 Автоматичний запит повторної передачі

а) запит ARQ із зупинками, б) неперервний запит ARQ з поверненням, в)

неперервний запит ARQ із вибірковим повторенням

Вибір конкретної процедури ARQ є компромісом між вимогами ефективності застосування ресурсів зв'язку і необхідністю повно-дуплексного зв'язку. Напівдуплексний зв'язок вимагає менших витрат, ніж повнодуплексний зв'язок, в цей же час він є менш ефективним, що можна визначити по кількості пустих часових інтервалів. Більш ефективніша робота, показана на рис. 1.7,б

вимагає дорожчого повнодуплексного зв'язку.

Головна перевага схем ARQ перед схемами прямого виправлення помилок

(forward error correction – FEC) полягає в тому, що виявлення помилок вимагає більш простих декодуючих пристроїв і меншої надлишковості, ніж корекція помилок. Крім цього, ця схема є більш гнучкою: інформація передається повторно тільки за виявлення помилки.

Метод FEC передбачає, що декодер на основі властивостей коду сам виправить помилки, які виникли під час передачі. Цей метод в певних ситуаціях може виявитися більш зручним, ніж ARQ через декілька причин:

зворотній канал недосяжний;

алгоритм зворотної передачі неможливо реалізувати зручним способом;

32

за очікуваної кількості помилок необхідно виконати багато повторних передач.

1.4. Класифікація кодів

Існує декілька критеріїв класифікації канальних кодів [8]. Перший з них – функція, яку вони виконують. За цією ознакою канальні коди діляться на:

коди виправлення помилок;

коди виявлення помилок.

Різниця між цими двома категоріями пояснювалася вище.

Другий критерій – це спосіб утворення кодів. Коди можуть бути:

блочними – до k-бітного блоку додаються r перевірочних розрядів утворюючи кодову комбінацію довжиною n;

згортковими, якщо кодове слово cj, є функцією поточного інформаційного блоку aj і декількох попередніх блоків aj-1, aj-2, ..., aj-i.

Кодер з блочним кодуванням може бути реалізований на логічних елементах, а кодер із згортковим кодуванням є автоматом і вимагає наявності елементів пам'яті. Термін ―згортковий код‖ виник завдяки тому, що двійкову послідовність на виході кодера можна рахувати дискретною згорткою вхідного двійкового потоку з імпульсним відгуком кодера. Під поняттям ―імпульсний відгук кодера‖ мається на увазі відгук кодера на одну ―одиницю‖, після якої слідує потік ―нулів‖.

Третій критерій класифікації базується на кількості різних символів, з яких будуються кодові слова. Символи, в основному, двійкові. Код, в якому кодові слова складаються з двійкових символів, називається двійковим кодом. Всі операції над елементами кодових слів проводяться на полі алгебри, що складається з двох елементів - нуля і одиниці. Таким чином, операція підсумовування представляє собою додавання по модулю 2, а операція перемножування – логічну кон'юнкцію.

33

У деяких випадках використовуються недвійкові коди. Для представлення кодових слів використовується кілька символів, навідміну від двійкових кодів з двома символами ―0‖, ―1‖. Типовий приклад застосування недвійкових кодів -

це виправлення потоку двійкових даних, спотвореного пакетом помилок.

Символи, що складають кодове слово недвійкового коду, вибираються з набору цифр {0,...,(2m-1)}. Кодове слово будується так, щоб складові його і наступні один за одним символи представлялися m-бітними блоками. В цьому випадку операція підсумовування - додавання по модулю 2m, а операція перемножування - кон'юнкція по модулю 2m. Якщо розмір пакету помилок не перевищує m бітів, будуть спотворені не більше двох наступних недвійкових кодових слів. Тобто для того, щоб виправити всі пакети помилок довжиною m

бітів, досить застосувати недвійковий код, здатний виправити, принаймні, два помилкові символи.

1.5. Блочні коди

Яскравими представниками класу блочних кодів є коди Хемінга та

циклічні коди [50].

Код Хеммінга (Hamming code) - це простий клас блокових кодів, який має

наступну структуру:

n, k 2m 1,2m 1 m ,

(1.9)

де m = 2, 3,..Z. Мінімальна кодова відстань для цього коду дорівнює 3, тому він здатний виправляти всі однократні помилки, або визначати всі моделі помилки з двох або меншого числа помилок в блоці. Хоча код Хеммінга не є дуже потужним, він належить до дуже обмеженого класу блокових кодів, які називаються досконалими. Хеммінгом була визначена границя, яка встановлює співвідношення між кількістю перевірочних бітів та можливостями коду щодо корекції помилок кратності t:

34

2n k 1 C n C n ...C n .

(1.10)

1 2

t

 

Для досконалих кодів ця нерівність перетворюється у рівність.

Якщо n та k мають великі значення, на практиці зручніше записати метод генерації кодових комбінацій в поліноміальному представленні. Кожна кодова комбінація записується у вигляді поліному.

С(x) = сn-1xn-1 + сn-2xn-2 + … + с1x1 + с0.

(1.11)

Представлення кодових комбінацій у формі (1.11) дозволяє виконувати дії з кодовими комбінаціями так само як із многочленами. Додавання многочленів зводиться до сумування по модулю два коефіцієнтів при рівних степенях;

множення відбувається за звичайним правилом множення степеневих функцій та додаванням за модулем два отриманих коефіцієнтів при рівних степенях;

ділення відбувається за правилом ділення степеневих функцій із операцією додаванням за модулем два, що замінює операцію віднімання.

Циклічні коди одержали широке застосування завдяки їхній ефективності при виявленні і виправленні помилок. Схеми кодуючих та декодуючих пристроїв для цих кодів прості і будуються на основі звичайних регістрів зсуву.

Назва цих кодів походить від їх властивості, яка полягає в тому, що частина, або всі дозволені кодові комбінації можуть бути одержані шляхом циклічної перестановки символів комбінації, котра належить до цього ж коду.

Якщо кодова комбінація c0, c1, c2,…cn-1 є дозволеною кодовою комбінацією,

тоді комбінація cn-1, c0, c1, c2,…cn-2 також є дозволеною.

Побудова циклічних кодів базується на використанні породжуючих

(генераторних) поліномів - g(x), які використовуються для знаходження дозволених кодових комбінацій. Породжуючим називають поліном, який не ділиться без остачі на інші поліноми, крім самого себе та одиниці.

Ідея корекції помилок в циклічних кодах базується на тому, що дозволені

35

кодові комбінації діляться без остачі на деякий породжуючий поліном. Якщо в прийнятій кодовій комбінації наявна помилка, після ділення на породжуючий поліном остача буде відмінна від нуля. Коректуючі здатності циклічного коду визначаються породжуючим поліномом.

Отримати дозволену кодову комбінацію циклічного коду можна перемноживши інформаційну комбінацію на породжуючий поліном. Таким чином, можна отримати всі необхідні кодові комбінації. При використанні такого методу точно вказати розташування інформаційних та перевірочних бітів буде складно. Отримаємо кодові комбінації в неканонічній формі представлення.

C(x) = a(x)∙g(x).

(1.12)

При використанні іншого способу побудови кодових комбінацій поліном повідомлення множиться на одночлен виду xn-k, а після цього ділиться на породжуючий поліном g(x) для знаходження остачі від ділення. Результат таких операцій можна представити в такому вигляді:

xn k a(x)

q(x)

p(x)

,

(1.13)

g(x)

g(x)

 

 

 

де p(x) – остача від ділення; q(x) – частка від ділення.

Помноживши праву та ліву частини на g(x) отримаємо:

xn k a(x) q(x)g(x) p(x) .

(1.14)

Додаючи p(x) до обох частин рівняння (1.14) використовуючи сумування за модулем два, отримаємо дозволену кодову комбінацію з чітко розділеними бітами повідомлення та перевірки:

36

xn k m(x) p(x) q(x)g(x) U (x) ,

 

C(x)

(ak 1 ,...a1 , a0

pn k 1 ,...p1 , p0 ) .

(1.15.)

 

 

 

 

 

k біт

n k біт

 

 

повідомлення

перевірки

 

Серед циклічних кодів особливо важливе значення мають коди БЧХ (англ.

ВСН - Bose-Chadhuri-Hocquenghem). При використанні цих кодів можна проводити коректування більш ніж однієї помилки, а мінімальна відстань між кодовими словами довжиною n в коді БЧХ більша, ніж мінімальна відстань між кодовими словами тієї ж довжини в інших кодах.

1.6. Згорткові коди

Згорткові коди є дуже важливим класом кодів з корекцією помилок. Вони все частіше використовуються в цифрових системах зв'язку [43]. До основних переваг згорткових кодерів можна віднести простоту процедури кодування і добре відомі технології декодування як з м'яким, так і з жорстким рішенням.

Кодування з допомогою згорткового кодера

На відміну від блочного кодування де є чітко встановлений розмір кодового блоку в згорткових кодах використовується кодове обмеження.

Довжина кодового обмеження – розмір регістру зсуву який використовується під час кодування на рис. 1.8 зображено згортковий кодер.

Пояснимо роботу згорткового кодера. На вхід кодера поступають біти mi,

які записуються в запам’ятовуючий регістр. За один такт в регістр може бути записано до k біт - k біт зліва займають місце правих k біт, а вільне місце заповнюється вхідними бітами. Таким чином, вхідні біти пересуваються зліва направо. Кількість розрядів регістра дорівнює k∙K (k – кількість біт, які будуть записані в регістр за один такт роботи, K – довжина кодового обмеження).

37

Рис.1.8 Згортковий кодер

Довжина кодового обмеження визначає кількість k-бітих зсувів після яких один інформаційний біт може вплинути н вихідний сигнал кодера. До окремих бітів регістра приєднані суматори з модулем 2. Їхня кількість може становити від 1 до n. Таким чином, вхідні інформаційні біти рухаючись зліва направо в регістрі зсуву поступають на входи суматорів, а результат операції сумування з модулем 2 буде визначати частинку закодованої комбінації. Спеціальний комутатор за один такт опитує виходи всіх суматорів формуючи вихідну закодовану комбінацію. Оскільки для кожної вхідної групи бітів довжиною k на виході кодера утворюється n біт коду ступінь кодування складає k/n. На відміну від блочних кодів які мають фіксовану довжину комбінації n, в згорткових кодах немає чітко визначеної довжини комбінації. Проте, згортковим кодам надають блочну структуру, що вимагає додання певної кількості нульових розрядів в кінці вхідної послідовності інформації. Додають ці нульові біти для

―очищення‖ регістру від даних. Таким чином ефективна ступінь кодування буде меншою за відношення k/n.

Вибір зв’язку між суматорами та розрядами регістру впливає на характеристики коду. Зв’язки кодера можна описати за допомогою поліноміального генератора. Згортковий кодер можна представити у вигляді набору із n поліноміальних генераторів, кожен з яких відповідає певному

38

суматору. На рис. 1.9 зображено згортковий кодер із двома суматорами за модулем два.

Рис.1.9 Згортковий кодер з двома суматорами за модулем 2

Аналізуючи зв’язки суматорів з регістрами, сигнал на виході кодера можна знайти за допомогою поліноміальних генераторів.

g1(X) = 1 + X + X2 (для суматора 1) g2(X) = 1 + X (для суматора 2)

Сигнал на виході кодера буде визначатися таким чином:

U(X) = [m(X)∙g1(X) перемішування m(X)∙g2(X)]

Припустимо, що на вхід кодера прийшла послідовність m = 1 0 1,

запишемо її у вигляді поліному m = 1 + X2.

 

1

X1

X2

X3

X4

m(X)∙g1(X)

1

1∙X1

0∙X2

1∙X3

1∙X4

 

 

 

 

 

 

m(X)∙g2(X)

1

1∙X1

1∙X2

1∙X3

0∙X4

 

 

 

 

 

 

U(X)

(1,1)

(1,1)

(0,1)

(1,1)

(1,0)

 

 

 

 

 

 

U

11

11

01

11

10

 

 

 

 

 

 

Існує кілька способів опису роботи згорткових кодерів: діаграма станів,

деревоподібна діаграма, решітчаста діаграма. Оскільки згортковий кодер належить до класу пристроїв відомих як скінчені автомати – його роботу можна

39

описати діаграмою станів. Якщо використовується деревоподібна діаграма,

описати роботу кодера стає складніше, оскільки кількість відгалужень дерева збільшується пропорційно 2L, L – кількість кодових комбінацій (кількість бітів n). Тому найчастіше використовується решітчаста діаграма рис. 1.10.

Стани кодера -

 

Моменти часу надходження бітів

можливий вміст K-1

 

інформації

крайніх правих

 

 

 

комірок регістра

 

 

 

 

 

t1

00

а=00

11

 

b=10

t2

00

t3 00

t4 00

t5 00

t6

 

11

11

11

11

 

 

11

11

11

 

00

00

00

10

10

10

10

c=01

01

01

01

01

 

 

 

01

01

01

d=11

 

10

10

10

 

 

 

Вхідний біт 0

Кодові комбінації на

 

 

 

Вхідний біт 1

виході кодера k = 1, n = 2

 

 

 

 

Рис.1.10 Решітчаста діаграма згорткового кодера

Такий тип діаграми описує можливі переходи кодера із станів в і-й момент часу в інші стани і + 1-го моменту часу. Блоки бітів на виході відповідають конкретним переходам між станами і зображені на рис. 1.10 над лініями із стрілками, які символізують ці переходи. Збудження, які зумовлюють переходи між станами, зображені суцільними лініями у разі нульового вхідного сигналу і пунктирними лініями у разі вхідного сигналу, рівного логічній одиниці.

Звернемо увагу на те, що в даному кодері кожному біту на вході відповідають два біти на виході, тобто для даного коду коефіцієнт кодування складає R = k/n

= 1/2. На рис. 1.10 зображені всі можливі переходи між станами в і-й момент часу. Можна легко представити весь ланцюжок переходів, починаючи з

40

Соседние файлы в папке diplov