Приколи з передаванням інформації
Сьогодні я покажу дещо з того, чим займався в інституті, і чого знову торкнувся впродовж останнього тижня. Подана інформація поділена на дві частини, перша призначена для тих, хто поняття не має, про що взагалі може йти мова, друга буде по суті.
У сучасних системах зв’язку використовуються електромагнітні хвилі (світло або радіохвилі) для передавання інформації. Саме по собі таке випромінювання нафіг нікому не впало, але якщо на нього певним чином повпливати, то ситуація різко змінюється. Вплив може бути різний. Наприклад, можна вимикати або вмикати генератор випромінювання, припускаючи, що коли він увімкнений, передається логічна одиничка, а коли вимкнений — нуль (не треба ж пояснювати, що вся інформація в сучасних мережах передається в цифровому вигляді?). Аналогічно можна змінювати не тільки наявність сигналу, а і його інтенсивність, частоту/фазу (я так написав, бо це одне й те саме, насправді), поляризацію або кілька цих параметрів одночасно. Загалом, такий процес впливання на сигнал залежно від інформації, яку потрібно передати, називається модуляцією.
Зафіксували. Ще раз: щоб передати інформацію на якусь відстань за допомогою електромагнітної хвилі, потрібно на цю хвилю вплинути так, щоб її параметри змінювалися відповідно до інформації, яку потрібно передати. Інакше окрім марного нагрівання довкілля толку не буде.
Тепер згадаємо про те, у якому середовищі розповсюджуються електромагнітні хвилі. У системах зв’язку їх кілька: наприклад, оптоволокно і, наприклад, вільний простір (в смислі, «повітря», але повітря тут ні до чого). Оптоволокно — це круто і прикольно, але в ньому не так шумно, як у вільному просторі. Поясню. Будь-що, що працює за рахунок електроенергії (а таких приладів цивілізація придумала мільйон: від трамваїв до ноутбуків), випромінює електромагнітні хвилі. Що відбувається, коли стикається електромагнітна хвиля з корисною інформацією, яку нам треба конче передати, з електромагнітною хвилею від швидкісного трамвая №3? Та те ж саме, що відбувається, коли двоє розмовляють, а третій просто кричить — гірше чути. Так і в системах зв’язку: чим більше сторонніх завад, тим гірше чути передавач; у теорії інформації кажуть, що корисна інформація втрачається.
Зафіксували і це? Повторю: радіоефір шумить (шуми і завади, між іншим, — це різні речі, але я не збираюся тут цього пояснювати, тому говоритиму просто про шум), і за цим шумом, якщо він занадто сильний, погано чути корисний сигнал.
А тепер давайте згадувати про модуляцію. Там було щось про різний вплив на параметри електромагнітної хвилі. Постає питання: чи однаково погано буде чути передавач, якщо він передає сигнал, змінений за законом А, і сигнал за законом Б за однакової інтенсивності шумів? Іншими словами: чи краще зрозуміє приймач те, що йому передали, якщо під час модуляції змінювали не один параметр сигналу, а інший, а може навіть кілька одночасно?
Звісно, щоб оцінити (визначити якомога точно) ступінь розбірливості корисного сигналу, вводять поняття якості (на фізичному рівні), яке можна доволі точно обчислити у вигляді десяткового числа за допомогою простих (у випадку простої модуляції) або дуже складних (у випадку, коли під час модуляції змінюють кілька параметрів сигналу одночасно та ще й не різко, а дрібними скачками між рівнями, яких може бути дофіга) формул. Як правило, таким показником якості є ймовірність бітової помилки, тобто, число, яке показує, з якою ймовірністю замість 1 прийде 0. Або навпаки.
Це була перша частина :). Тепер до справи.
У дипломній роботі, з-поміж іншого, я стикнувся з порівнянням двох модуляцій: КАМ-16 і ФМ-16. Для тих, хто не дуже в курсі, що це за коні, поясню.
КАМ-16 — це така модуляція, під час якої змінюється і інтенсивність сигналу, і його фаза одночасно. «КАМ» розшифровується як «квадратурно-амплітудна модуляція», тобто сигнал гуляє у квадратурній площині, змінюючи свою амплітуду. Пам’ятаючи, що є дві квадратури (гарним словом «квадратура» названа звичайна синусоіда з початковою фазою 0° або 90°; чому саме синусоіди використовуються для передавання сигналів, можу розказати окремо), I та Q, згадавши, що квадратури перпендикулярні між собою, і уявивши, що буде, якщо розмістити нещасні 16 точок з різною амплітудою і фазою на такій площині, то отримаємо класичну картинку з вікіпедії:
Ця картинка має романтичну назву «сигнальне сузір’я». Кожній точці відповідає 4 біти інформації, відповідно, один символ КАМ-16 несе в собі 4 біти, а тому це модуляція високого порядку. Є такі ж модуляції, але ще вищого порядку: КАМ-32, КАМ-64, КАМ-256, навіть КАМ-1024.
Відстань від початку координат до якоїсь точки (то, насправді, точки, а не круги, кругами вони намальовані, щоб було видніше) і є амплітудою сигналу (насправді, енергією, але who cares). Ви помітили, що на осях нема позначок? Насправді, для зручності, відстань між штрихами беруть за одиницю, а для розрахунків усе нормують відносно максимальної амплітуди, тобто, відносно відстані від початку координат до найвіддаленішої точки сузір’я так, щоб саме ця відстань дорівнювала одиниці. Я це спеціально виділив, бо тут зарита дуже велика і дуже дохла собака, про яку я скажу далі.
Окремо слід зауважити про те, яким точкам які біти відповідають. Поширено два типи нумерації: лінійний (точки нумеруються підряд: 0000, 0001, 0010 тощо) і хитрий, який задіює код Грея. Код Грея розкидає точки сузір’я так, щоб відстань між сусідніми символами була мінімум 1 біт, а між діагональними — два. Код Грея прикольний тим, що не вносячи надлишковість в інформацію, він покращує завадостійкість тільки за рахунок конфігурації сигнального сузір’я, формуючи повноцінну сигнально-кодову конструкцію. Задача пошуку оптимальної конфігурації для квадратних сузір’їв проста, а для неквадратних (КАМ-32, наприклад) — не дуже. Для ФМ-n там взагалі шукати нічого, переставляй собі біти лінійно, і буде ОК.
ФМ-16 — це така модуляція, кожний символ якої також несе 4 біти (тому їх також усього 16), але на відміну від КАМ-16, усі амплітуди рівні (і дорівнюють одиниці). Відповідно, сигнальне сузір’я ФМ-16 — це 16 точок по колу:
Тепер розберемося з тим, як діють шуми на корисний сигнал. Для того, щоб сигнал зафіксувався у певній точці сигнального сузір’я, докладаються певні зусилля, тобто, витрачається енергія передавача. Така ж сама енергія витрачається і джерелами завад, тільки ця енергія витрачається на те, щоб вивести сигнал із визначеної точки. Відповідно, якщо побудувати сигнальне сузір’я того ж КАМ-16, але не теоретичне, а реальне, по факту прийому, вийде отака картинка:
Бачите? Воно ніби та ж сама решітка, але сигнали розсіяні туди-сюди, бо на них діяло щось небажане. І це ще невеликі з виду шуми, бо жоден сигнал не відхилився від початкового положення настільки, щоб приймач його сплутав із сусіднім. А якщо відхилиться? Тоді замість, наприклад, «1011» приймач прийме «1111», і з’явиться один неправильний біт. Катастрофічного в цьому нічого немає, це нормальна робота будь-якої системи передавання інформації, але нас цікавить інший аспект питання: чи так же легко вивести сигнал зі своєї точки в сусідню в КАМ-16, як і в ФМ-16? Іншими словами: яка ймовірність бітової помилки за вказаної потужності шуму за використання КАМ-16 і ФМ-16? Ще іншими словами: чи однакову потенційну завадостійкість забезпечують КАМ-16 і ФМ-16?
Звісно, відповідь ховається в питанні: різну. Інакше б я цього всього не писав. Часто говорять, що КАМ-16 і придумали для того, щоб передавати стільки ж, скільки й за допомогою ФМ-16, але надійніше, бо змінюється ще один параметр сигналу — амплітуда, і завдяки цій додатковій ознаці розрізнення сусідніх сигналів між собою покращується завадостійкість. Плата за таку надійність — невелике ускладнення передавача та приймача. Якби ж усе було так просто.
Щоб визначити, хто правий, а хто не дуже, не треба будувати передавачі та приймачі, достатньо побудувати невелику імітаційну модельку, і за допомогою неї визначити ту саму ймовірність бітової помилки, про яку я вже казав вище, якщо використовуються різні модуляції.
Таку модельку можна занєфіг побудувати в MATLAB’і, наприклад, але ми ж не шукаємо легких шляхів (та і якість матлабівських КАМ-модуляторів я ставлю під сумнів через згадану вище нормалізацію, читайте далі, вопсчєм), тому в дипломі я написав з нуля повноцінну модель на Java, а за останній тиждень переписав її на чистому C99, щоправда, без графічного інтерфейсу (кому він був потрібен, окрім мого наукового керівника?).
А тепер про нормалізацію. Якщо з ФМ-16 усе ясно (всі амплітуди рівні, всі одиничні, що тут нормалізувати?), то з КАМ-16 усі, кому не лінь (гражданє Прокіс, Скляр і всякі корифеї зарубіжної telecommunication science), припускаються грубєйшої помилки, нормалізуючи не за максимумом енергії, а за середнім значенням. Якщо припустити, що сузір’я нормалізоване за середньою енергією, то виходить, що крайні точки з максимальною енергією мають умовну амплітуду, більшу за 1. А тепер згадаємо теорію передавачів. Сигнал передається на лінійній ділянці вольт-амперної характеристики підсилювача, і якщо виходить за її межі, то спотворюється. Так от нормалізація за середньою енергією — це допущення того, що сигнал частково (крайні точки) передається за межами лінійної ділянки підсилення, тобто, спотвореним, а в розрахунках це не враховується. Тому таким даним вірити не можна.
Будемо відновлювати справедливість. Побудована модель дуже точно вивірена з теорією Фінка і Зюко (в смислі, експериментальні дані сходяться повністю з результатами, отриманими з аналітичних виразів), тому нема нічого простіше, як вказати їй вхідні дані, нажати Ентер, отримати стовпчик чисел, а потім згодувати їх gnuplot’у. Далі наводяться графіки для бітової помилки, але для символьної їх характер зберігається.
Ітак, канал з адитивним білим гаусовим шумом, завадостійке кодування не застосовується:
АБГШ — це такий сферичний канал у вакуумі, де є тільки шуми і прямий промінь передавання. Він використовується для характеризування потенційних здатностей, але до реальних умов мало застосовний. Завадостійке кодування використовується для того, щоб зменшити кількість помилок суто математичними методами, збільшуючи при цьому обсяг інформації, яка передається (за все ж треба платити). Я далі покажу графік, для побудови якого в моделі використовувався такий код, який може виправляти 1 біт із 4 (але зауважу, що коди — не панацея, бо іноді від них тільки гірше; якщо цікаво, можу розказати, чому).
Так і що ж ми бачимо на цьому графіку? А ми бачимо, що до співвідношення сигнал-шум (насправді, це не сигнал-шум, а енергія до спектральної щільності потужності, але, блін, again, who cares?) десь 12,2 дБ ФМ-16 забезпечує кращу ймовірність бітової помилки. А як же вищі значення, де КАМ-16 виграє? А вони нас не цікавлять. Де ви бачили радіоканал, у якому сигнал настільки потужний, що переважає над шумом у 20 (двадцять!) разів?
Давайте зробимо те ж, але з перламутровими пуговицямизавадостійким кодуванням:
Картінка та сама, тільки перетин змістився ще більше вправо. No comments.
Тепер звернемося від АБГШ до каналу із завмираннями. Звісно, це також неідеальна модель (ідеальних моделей радіоканалів нема), але вона ближче до реальності, бо враховує багатопроменевість. До чого тут багатопроменевість? А уявіть собі: ви в місті, вишка мобільного зв’язку світить з 16-поверхівки на вас, а ще на сусідній будинок із залізобетону, від якого хвиля частково відбивається і також доходить до вас. Таким чином, ваша мобілка приймає два (насправді, більше набагато) сигнали, зміщені за фазою (в часі). Понятно, що така модель дає гіршу ймовірність помилки? Понятно. Дивимося:
Ну афігєть. They are similar! Але після 20 дБ. А до того ФМ-16 має кращий показник BER.
Давайте те ж, але з кодуванням:
Тепер картінка взагалі однозначна. І хочеться спитати тих інженерів, які придумали КАМ-16, про що ж вони думали.
Звісно, постає два питання: 1) як ці модуляції поводять себе в реальних каналах зв’язку, а не в моделях, бо потенційна завадостійкість потенційною завадостійкістю, а реальні канали постійно дихають, рухаються, ворушаться і живуть?; 2) як поводить себе пара ФМ-32/КАМ-32?
На перше питання відповідь може дати тільки реальне обладнання. На друге питання я міг би дати відповідь, але знайти (квазі)оптимальне сузір’я КАМ-32 поки не вдалося (алгоритми є, розбиратися треба). Тому, може, далі буде.
Сумніваюся, що є якісь запитання, але якщо є, я завжди готовий.
Залишити відповідь