канальне кодування
1. Загальна структура канального кодування
Для захисту від помилок в каналах радіозв'язку систем стандарту TETRA використовується помехоустойчивое канальне кодування сигналу, яке здійснюється шляхом введення до складу переданого сигналу досить великого обсягу додаткової (надлишкової) інформації. У стандарті TETRA канальне кодування реалізується у вигляді 4-х процедур:
- блочного кодування (block-encoding);
- сверточного кодування (convolutional encoding);
- перемежения (interleaving);
- скремблювання (scrambling).
При блоковому кодуванні вхідні інформація розбивається на блоки по k символів, які перетворюються за певним законом в n-символьні блоки, де n> k [14]. Блочне кодування призначене, в основному, для виявлення одиночних і групових помилок в каналі зв'язку і в певних випадках для їх виправлення.
При сверточное кодуванні кожен символ вхідний інформаційної послідовності, що складається з k біт, перетворюється в n-бітовий символ вихідний послідовності, причому n> k. Сверточное кодування є потужним засобом боротьби з поодинокими помилками, хоча і не забезпечує їх виявлення.
При перемежением проводиться зміна порядку проходження символів інформаційної послідовності таким чином, що стояше поруч символи виявляються розділеними декількома іншими. Перемеженіє забезпечує перетворення групових помилок в каналі зв'язку в поодинокі.
Скремблирование полягає в перетворенні вхідної інформаційної послідовності в вихідну шляхом її побітного складання по модулю 2 із спеціально формованої шифрувальної послідовністю. Скремблирование використовується для певного захисту переданої інформації, а також для аутентифікації абонентів.
Структура канального кодування, представлена на рис. 8.1, є спільною для всіх типів логічних каналів, хоча параметри кожної з процедур канального кодування для різних логічних каналів, як правило, відрізняються. Тому в подальшому будуть приведені загальні алгоритми перетворень по кожній з процедур, а потім вказані параметри цих перетворень для кожного типу логічного каналу.
Стандарт TETRA описує процес канального кодування як послідовне перетворення даних на 4-х рівнях, при цьому вхідні дані позначаються як біти типу 1 в блоках типу 1, дані після блочного кодування - біти типу 2 в блоках типу 2 і т. Д. Після блочного кодування до бітам, закодованим блоковим кодом, додаються т. н. "Хвостові" біти.
Мал. 8.1. Загальна схема канального кодування в стандарті TETRA.
Для подальшого опису процедур канального кодування введемо такі позначення:
- x - порядковий номер типу біт і блоків, x = 1,2,3,4,5;
- Kx - число бітів, які переносяться одним блоком типу x;
- k - номер біта, k = 1,2. Kx;
- bx (k) - біт типу x в с номером k в блоці типу x.
2. блочне кодування
Блоковий кодер позначається (K2, K1), де K1 - число символів в блоці вхідної послідовності, а K2 - число символів в блоці вихідний послідовності. Відношення R = K1 / K2 носить найменування швидкості кодування (coding rate) і характеризує міру надмірності, що вноситься кодером.
При блоковому кодуванні в стандарті TETRA використовується двійковий систематичний кодер, т. Е. Кодер, у якого кожен символ вхідний і вихідний послідовності відповідає одному біту, а до складу блоку вихідної інформації повністю включається блок вхідної інформації, який доповнюється p-бітовим кодом циклічного контролю надмірності (CRC - Cyclic Redundancy Check). Таким чином, K1 бітів типу 1 перетворюються в K2 біта типу 2, де K2 = K1 + p.
CRC-коди обчислюються за правилом
F (X) = X n-K1 M (X) mod G (X),
G (X) - формує поліном, різний для різних логічних каналів;
n-K1 - кількість створюваних бітів парності.
Многочлен F (X) є многочленом ступеня (n-K1-1) з коефіцієнтами f (0), f (1). f (n-K1-1), т. е.
Тоді K2 біт типу 2 мають вигляд:
b2 (k) = b1 (k) при k = 1,2. K1
b2 (k) = f (k-K1-1) при k = K1 + 1, K1 + 2. n.
Породжує поліном для каналу мовного трафіку має вигляд:
для інших каналів:
G (X) = 1 + X 5 + X 12 + X 16.
Для одного з логічних каналів - каналу призначення доступу AACH - використовується блочне кодування на основі коду Ріда-Маллера. Коди Ріда-Маллера представляють собою клас лінійних кодів з простим описом і декодуванням, здійснюваним методом простого голосування [15].
Породжує матриця коду Ріда-Маллера r-го порядку довжиною 2 m визначається як сукупність блоків
де G0 - вектор розмірності n = 2 m. що складається з одних одиниць; Gp - (m х 2 m) - матриця, що містить в якості стовпців все виконавчі m-послідовності; рядки матриці Gp отримані з рядків матриці G1 як всі можливі твори p рядків з G1 [15].
При блоковому кодуванні каналу AACH стандарту TETRA 14 біт вхідний інформаційної послідовності має перетворюватися в 30-розрядний вихідний блок відповідно до рівняння
де G - породжує матриця, що має вигляд
де I14 - одинична матриця розміром 14х14, а GRM - породжує матриця коду Ріда-Маллера розмірністю 16х14.
Це означає, що при блоковому кодуванні AACH перші 14 біт вихідної послідовності відповідають бітам вхідного інформаційного блоку, а наступні 16 біт утворюються за допомогою коду Ріда-Маллера.
3. сверточное кодування
Сверточное кодування забезпечує перетворення K2 вхідних біт типу 2, отриманих в результаті блокового кодування, в K3 біт вихідної послідовності, причому K3> K2. Кожен біт вихідної послідовності виходить як результат підсумовування по модулю 2 декількох наступних один за одним бітів вхідний послідовності.
Згорткові кодери зазвичай позначаються як n, k, K, де n - кількість біт в одному символі вихідний послідовності, які формуються за один такт роботи кодера (відповідає числу суматори за модулем 2 в схемі кодера); k - кількість біт в одному символі вхідної послідовності, що надходять на вхід кодера за один такт; K - довжина обмеження (constraint length), т. Е. Числове значення, відповідне довжині зсувного регістру, який бере участь у формуванні одного вихідного символу. (Символи можуть складатися з одного або декількох біт.) При цьому відношення R = k / n, як і в блочному кодере, називається швидкістю кодування.
Однак оскільки в стандарті TETRA безпосередньо сверточное кодування доповнюється процедурою проріджування отриманої інформації, що змінює кількість біт вихідної послідовності, під швидкістю кодування будемо розуміти відношення сумарної кількості біт вхідної послідовності до сумарної кількості біт вихідної послідовності (K2 / K3).
У зв'язку з тим, що обсяги блоків, а також вимоги щодо завадостійкості і швидкості передачі інформації в різних логічних каналах відмінні один від одного, згорткові коди для цих логічних каналів також різняться. Сверточное кодування в стандарті TETRA складається з двох процедур:
- кодування "материнським" кодом з фіксованою швидкістю (для каналу мовних повідомлень TCH / S вона відповідає 1/3, для всіх інших каналів - 1/4);
- перфорування (проріджування, виколювання) отриманої послідовності, т. е. пропуску деяких кодованих символів з метою приведення структури розміщення біт у відповідність зі структурою кадру. Зміна алгоритмів перфорирования дозволяє забезпечити різну швидкість сверточного кодування для різних логічних каналів.
Кодування материнським кодом
При кодуванні материнським кодом використовується сверточних кодер (n, 1,5), де n - для каналу трафіку мови (TCH / S) дорівнює 3, а для всіх інших каналів - 4.
Будь-який з породжують многочленів материнського коду може бути записаний у вигляді
де gi, j = 0 або 1, j = 0,1,2,3,4.
Це означає, що закодовані біти визначаються як
де сума береться по модулю 2, а b2 (k-j) = 0 при k≤j.
Породжують многочлени материнського коду мають вигляд:
- для каналу трафіку мови:
G1 (D) = 1 + D + D 2 + D 2 + D 3 + D 4
G2 (D) = 1 + D + D 3 + D 4
G3 (D) = 1 + D 2 + D 4
В якості ілюстрації на рис. 8.2 показана схема сверточного кодера для всіх логічних каналів стандарту TETRA, відмінних від каналу мовного трафіку.
Перфорування материнського коду
Перфорування материнського коду проводиться шляхом відбору K3 бітів з nK2 бітів V (k), отриманих при сверточное кодуванні. Відбір, т. Е. Визначення бітів вихідний послідовності,
проводиться за допомогою т. зв. коефіцієнтів перфорирования P (1), P (2). P (t), що визначають номер обраного біта в відрізку вхідної послідовності довжиною Period (значення t відповідає кількості обираних бітів в даному відрізку), відповідно до правила обчислення значення k
k = Period · ((i-1) div t) + P (i - t (i-1) div t)),
де div означає результат цілочисельного ділення.
Мал. 8.2. Схема сверточного кодера логічних каналів TETRA.
Значення Period, i, t, а також конкретні значення P (1), P (2). P (t) визначаються для кожного типу логічного каналу окремо. Для більшості каналів i = j, однак для деяких з них значення i обчислюється більш складним чином, наприклад, для каналу TCH / 4,8
i = j + (j-1) div 65.
Period для більшості логічних каналів дорівнює 8, в каналах мовного трафіку він може приймати значення 12 і 24. Параметр t може приймати значення 3, 6, 9, 17.
При перемежением забезпечується перетворення K3 біт вхідної послідовності, отриманої в результаті сверточного кодування, в K4 біт вихідної послідовності, причому K3 = K4, т. Е. Перемежение не вносить в сигнал надмірність, а тільки виробляє перестановку бітів в інформаційному блоці.
Перемеженіє використовується для перетворення групових помилок, що виникають в каналі зв'язку через наявність глибоких завмирань сигналу в умовах багатопроменевого поширення, в поодинокі, з якими легше боротися за допомогою блочного і сверточного кодування [14].
У стандарті TETRA застосовується 2 види перемежения: блокове і перемежение по N блокам.
Блоковий перемежітель позначається (K, J), де K означає кількість біт у вхідному інформаційному блоці, а J - кількість біт, на яке розносяться сусідні для вхідного блоку біти. При блоковому перемежением відповідність бітів вихідного блоку бітам вхідної послідовності, т. Е.
проводиться за наступним правилом:
Роботу схеми блокового перемежітеля можна уявити як проведення послідовної порядкової запису вхідний інформаційної послідовності в матрицю, в якій довжина рядка відповідає J (число стовпців (K div J + 1)), а потім зчитування записаної інформації за стовпцями.
Блочне перемежение з різними параметрами перетворення використовується в каналах SCH / HD, SCH / HU, SCH / F, BNCH, STCH, BSCH і TCH / S.
Перемеженіє по N блокам
Перемеженіє по N блокам застосовується в логічних каналах передачі даних TCH / 2,4 і TCH / 4,8, інформація з яких передається блоками довжиною 432 біта.
При такій схемі перемежения блокова перестановка бітів доповнюється т. Н. діагональним перемежением. Його особливістю є те, що воно проводиться одночасно для декількох послідовних блоків, т. Е. Може здійснюватися перестановка бітів з одного блоку в інший. Кількість блоків, що беруть участь в перемежением, (N), може бути рівним 1, 4 або 8 (N = 1 - вироджений випадок, при якому перемежение здійснюється в межах одного блоку). При цьому в результаті перемежения утворюється M + N-1 блоків по 432 біта, де M - ціле число, т. Е. Процедура перемежения по N блокам може збільшувати загальна кількість інформаційних блоків.
Таким чином, при перемежением по N блокам перетворення вхідної інформації проводиться в 2 етапи: 1-й етап - діагональне перемежение зі збільшенням загальної кількості блоків, 2-й етап - блочне перемежение в кожному з отриманих блоків.
Спочатку M блоків B3 (1), B3 (2). B3 (M), що беруть участь в перетворенні, за допомогою діагонального перемежітеля перетворюються в M + N-1 блоків B3 '(1), B3' (2). B3 '(M + N-1). Якщо позначити k-й біт блоку B3 '(m) як b3' (m, k), де k = 1,2. 432, а m = 1,2. M + N-1, то
b3 '(m, k) = 0 поза цією областю, де
j = (k-1) div (432 / N) і i = (k-1) mod (432 / N).
Практично це означає формування M + N-1 блоків, кожен з яких складається з 1 / M-х частин наступних один за одним M блоків (при M = 2 це половина блоку, при M = 3 - 1/3 блоку і т. Д .). Для перших і останніх блоків, кількість яких відповідає збільшенню загального числа блоків, вільні розряди заповнюються нулями (при M = 2 нулями заповнюється друга половина першого і перша половина останнього блоку, при M = 3 нулями заповнюються перші дві третини першого блоку, перша третина другого блоку , перша третина передостаннього блоку і перші дві третини останнього блоку). При цьому слід враховувати, що попередньо в кожному з N блоків біти також переставляються шляхом складання в блоці спочатку біт з номерами 1, 1 + M, 1 + 2M. потім 2, 2 + M, 2 + 2M і т. д.
На другому етапі проводиться блочне перемежение бітів в кожному з отриманих блоків відповідно до правила
де i = 1 + ((103 · k) mod 432), а k = 1,2. 432.
Скремблирование забезпечує перетворення K4 бітів вхідного інформаційного блоку, що надходить від перемежітеля, в K5 біт вихідного блоку шляхом побітового складання по модулю 2 з шифрувальної послідовністю.
Ініціалізація 32-розрядної зсувного регістру з зворотними зв'язками, що використовується для формування шифрувальної послідовності, проводиться за допомогою розширеної навчальної послідовності c1, c2. c30, наведеної в розділі 5.2, і двох додаткових біт, рівних 1.
Особливості канального кодування для різних логічних каналів
Канальне кодування кожного з логічних каналів має свої відмінності, що стосуються наявності або відсутності окремих процедур кодування, видів блочного кодування і перемежения, а також параметрів всіх процедур канального кодування. На рис. 8.3 і 8.4 показана структура канального кодування для всіх логічних каналів за винятком каналу мовного трафіку TCH / S.
Мал. 8.3. Структура канального кодування логічних каналів TCH7,2; SCH / HD; SCH / HU; SCH / F; BNCH; STCH.
Мал. 8.4. Структура канального кодування логічних каналів AACH; BSCH; TCH4,8; TCH2,4.
Особливість канального кодування трафіку мови полягає в поділі первинного інформаційного блоку з 137 біт, що надходять з виходу мовного кодера, на 3 класу відповідно до чутливістю до помилок в каналі зв'язку. (Біти 1-го класу є найменш чутливими і кодуються досить слабо, біти класу 3 мають високу чутливість до перешкод і тому піддаються найбільш потужному помехоустойчивому кодування.)
Тимчасової кадр, як правило, включає в себе 2 мовних кадру, кожен з яких на виході мовного кодека має розмірність 137 біт (див. Розділ 7). Після канального кодування інформація з виходу мовного кодека (2 137 біт) перетворюється в інформаційний кадр довжиною 432 біта.
1-й клас включає 51 з кожного мовного кадру (2 51), 2-й клас - 56 біт (2 56), 3-й клас - 30 біт (2 56). До найбільш чутливого 3-го класу відносяться:
- 12 біт, що містять 4 старших розряду 3-х 8-розрядних коефіцієнтів лінійного передбачення;
- 6 біт, що містять 6 старших розрядів 8-розрядного значення періоду основного тону першого (з 4-х) сегмента мовного кадру;
- 12 біт, що містять 3 старших розряду 4-х 6-розрядних коефіцієнтів посилення для кожного з сегментів мовного кадру.
- Кодування проводиться окремо для кожного з класів:
- біти 1-го класу піддаються тільки перемежением і Скремблювання;
- над бітами 2-го класу проводиться сверточное кодування, перемежение і скремблирование;
- біти 3-го класу піддаються всім видам канального кодування: блоковому і сверточное кодування, перемежением і Скремблювання.
Слід зазначити, що перемежение і скремблирование виробляються над повним блоком з 432 біт, в який включаються біти всіх класів чутливості.
Структура кодування для каналу мовного трафіку представлена на рис. 8.5.
Мал. 8.5. Структура канального кодування мовного трафіку.