Дослідження математичної моделі WiMax та розрахунок покриття на її основі

курсовая работа

2.Дослідження імітаційної моделі WiMax

На фізичному рівні стандарту IEEE 802.16 передбачено три принципово різні методи передачі даних - метод модуляції одної несучої(SC, в діапазоні нижче 11 ГГц - SCa), метод модуляції за допомогою несучих OFDM(orthogonal frequency division multiplexing) і метод мультиплексування (множинного доступу) за допомогою ортогональних несучих OFDMA(orthogonal frequency division access). Даний математичний апарат побудований на основі методу WirelessMAN-OFDM, але може бути легко модифікований під будь-який з перелічених методів.

Режим OFDM - це метод модуляції потоку даних в одному частотному каналі(шириною 1-2МГц і більше) з центральною частотою fc. Ділення на канали - частотне. При модуляції даних під дією ортогональних несучих в частотному каналі виділяється N піднесучих так, щоб fk=fc+k*?f, де k - ціле число із діапазону [-N/2,N/2]. Відстань між ортогональними несучими ?f=1/Tb, де Tb - тривалість передачі даних. Крім даних в OFDM-символі передається захисний інтервал, що являється копією кінцевого фрагмента символу. Його тривалість може бути 1/4, 1/8, 1/16 та 1/32 від Tb.

Модуляція OFDM основана на двох основних принципах: розбиття одного каналу із змінними параметрами на паралельні гаусівські канали із різними співвідношеннями сигнал-шум і точне вимірювання характеристик каналу. У відповідності із першим принципом OFDM кожна несуча модулюється незалежно під дією квадратурної амплітудної модуляції. Загальний сигнал вираховується під дією зворотного швидкого перетворення Фурє як

[1]

де Ck - комплексне представлення символу квадратурної модуляції. Комплексне представлення зручне, оскільки генерація радіосигналу проходить відповідно до виразу

Sk(t) = Ik*cos(2рfc)-Qksin(2рfc) [2],

де Ik і Qk - синфазна і квадратурна складова комплексного символу.

Для роботи алгоритмів ШПФ/ОШПФ зручно, щоб кількість точок відповідала 2^m. Тому число несучих вибирають рівними мінімальному числу Nfff = 2^m. В режимі OFDM стандарту IEEE 802.16 N=200, відповідно Nfff=256. З них 55 створюють захисний інтервал на границі частотного інтервалу каналу. Інші 200 - інформаційні.

У відповідності до другого принципу OFDM для точного визначення параметрів каналу необхідні так звані пілотні несучі частоти, метод модуляції і передаючий сигнал, що точно відомий всім станціям в мережі. В OFDM передбачено використання 8 пілотних частот(з індексами 88, 63, 38 та 13). Інші 192 несучі розбиті на 16 підканалів по 12 несучих в кожному. Ділення на підканали необхідне, оскільки в режимі WirelessMAN-OFDM передбачена можливість роботи не у всіх 16, а в 1, 2, 4 чи 8 підканалах - тобто закладені передумови OFDMA. Для цього кожний підканал і кожна група має свій індекс(від 0 до 31).

Тривалість корисної частини Tb OFDM-символу залежить від ширини смуги каналу BW та системної тактової частоти(частоти дискретизації) Fs. Fs=Nfff/Tb. Співвідношення Fs/BW=n нормується і в залежності від ширини смуги каналу приймає значення 86/75(BW кратне 1.5МГц), 144/125(BW кратне 1.25МГц), 316/275(BW кратне 2,75МГц), 57/50(BW кратне 2МГц) та 7/8(BW кратне 1,75МГц і у всіх інших випадках).

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

Рис.1.1. Математична імітаційна модель стандарту IEEE 802.16 на основі методу WirelessMAN-OFDM

До її складу входять наступні функціональні блоки:

o Randomizer

Рис.1.2. Randomizer WiMax

ь PN Sequence Generator (Генератор псевдовипадкової шумоподібної послідовності) створює псевдовипадкову шумоподібну (PN) послідовність використовуючи лінійний регістр зсуву із зворотнім звязком(LFSR).

Рис.1.3. Блок-схема генератора псевдовипадкової шумоподібної послідовності.

LFSR для свого функціонування використовує просту конфігурацію генератора 15-розрядного регістра зсуву (SSRG чи Фібоначчі).

В якості поліному генератора використовується наступна послідовність: 1000000000000011 (Задаючий поліном c(x) = x^15+x^14+1). Дані значення призначенні для визначення звязків регістра зміщення. Для будь якого поліному у вигляді двійкового вектора перший і останній біти повинні бути одиницею. Початковий стан регістру зміщення представлений поліномом 100101010000000 (16x4A80).

Інформація обробляється кадрами по 280 біт.

ь Logical Operator XOR (Логічний оператор „виключне або”) виконує логічну операцію XOR між PN послідовністю та вхідним сигналом. В результаті на виході отримується 1 при непарній кількості одиниць на вході, тобто коли лише із одного входу поступає одиниця.

ь Zero Pad (Доповнювач нулями) доповнює або відкидає значення у стовпцях для досягання розміру 288 біт. Якщо довжини на вході та виході рівні, блок інформації просто передається. Доповнення та усікання відбувається в кінці сигналу.

o Block Encoder

Рис.1.4. Блочний кодер WiMax.

ь Bit to Integer Converter (Перетворювач біт - ціле десяткове число) перетворює групу із 8 бітів у вихідний сигнал у вигляді цілих чисел. Для прикладу, при вхідному сигналі [0000011100001101] на виході буде [7,13]. Із кадру довжиною 288 вхідних біт отримується послідовність із 36 цілих десяткових чисел.

ь Zero Pad to Code Word Size(Доповнювач нулями до розміру кодового слова) доповнює або відкидає значення у стовпцях для досягання розміру 239 біт. Доповнення відбувається на початку сигналу за допомогою додавання певної кількості нулів.

ь Integer-Input RS Encoder(Кодер Ріда-Соломона з цілочисельним значенням на виході) кодує 239 бітне кодове слово(K) кодом Ріда-Соломона із символами із поля Галуа GF(256), в результаті чого отримується повідомлення довжиною 255 біт(N). Тобто додається 16 перевірочних бітів. Даний код може виправляти (N-K)/2=8 символьних помилок(не лише 8 біт). Параметри вибираються так, щоб N-K було парним цілим числом. Тоді значення М визначається як найменше ціле число, що більше чи рівне log2(N+1) і рівне 8. Для конкретизації певних полів Галуа GF(2^M), які формують повідомлення, використовується примітивний многочлен 100011101 (X^8+X^4+X^3+X^2+1). В якості породжуючого поліному використовується поліном, сформований за допомогою команди genPoly = conv(genPoly, [1 gf(2,8)^idx]). Породжуючий поліном відповідає наступній формі:

g(x)= (x+A^b)(x+A^(b+1))(x+A^(b+2))...(x+A^(b+N-K-1)),

де А - примітивний елемент поля Галуа, через який визначається вхідний елемент, b - ціле число.

Для прикладу, нехай М = 3, N = 2^3-1 = 7, і K = 5. Тоді повідомлення представляється вектором довжиною 5 цілих символів, що лежать в межах від 0 до 7. Наступна фігура ілюструє можливий вхідний і вихідний сигнали:

Рис.1.5. Приклад обробки сигналу за допомогою кодера Ріда-Соломона

ь Selector(Прилад відбору) створює вихідний сигнал на основі відбору та перерозподілу вказаних елементів вхідного векторного сигналу за допомогою вектора елементів вхідного сигналу з індексами 240-243 та 204-239. На виході отримується 40 бітні повідомлення.

ь Integer to Bit Converter перетворює вектор вхідного сигналу із десяткових цілих чисел у рамку бітів по 8 біт з одного цілого числа. На виході створюється 320 бітний кадр.

o Convolutional Encoder(Згортковий кодер)

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

ь Convolutional Encoder кодує двійкову інформацію перед передачею через канал із шумом. На виході кодера створюється потік інформації, вдвічі більший за вхідний(згортковий код із швидкістю R=1/2). Протягом кодування k вхідних бітів кодуються у n вихідних бітів з подальшою швидкістю k/n потоку кодованих бітів. Кодер складається з регістру зсуву з k*L ланками (L - обмеження довжини коду), куди за один кодовий такт входять k символів, і n суматорів, повязаних із відповідними розрядами регістрів. Звязок j-го суматора по mod2 описується шляхом задання j-го породжуючого поліному gi=(gi0,gi1,…,gi(m-1)) , де і = 1...k, m- довжина регістра, а наявність коефіцієнтів відповідає наявності зєднань. Породжуючи поліноми повністю визначають структуру кодера двійкового загорткового коду. Вихідні кодові символи можна представити у вигляді згортки послідовності інформаційних символів і породжуючи поліномів коду, що задають лінійні рекурсивні правила кодування. В перегляді D5 версії IEEE WIMAX 802.16 використовується кодер з обмеженням довжини 7 та породжуючими поліномами g0 = 171oct і g1 = 133oct, що в даній імітаційній моделі задається командою poly2trellis(7 [171 133]). Його будова показана на рис.1.7, де g0 і g1- породжуючі поліноми, а D-ланка затримки. Для програмної побудови кодера першим кроком є представлення вхідної послідовності як поліному. Згортковий кодер представляється у вигляді:

g0 = 1 + D + D2 + D3 + D6

g1 = 1 + D2 + D3 + D5 + D6

Далі згортковий кодер помножує породжуючий поліном на вхідний потік бітів:

A(x) = g0(x) * I(x) = a b c … g

B(x) = g1(x) * I(x) = P Q R … V

Чергуючи обидва виходи згорткового кодера отримаємо E(x) = aPbQcR … gV, що можу бути записано, як:

E(x) = (a0 b0 c0 … g0) + (0P0Q0R … 0V) = A(x2) + x*B(x2)

Тому,

E(x) = A(x2) + x * B(x2) , а A(x2) = g0(x2) * I(x2) і B(x2) = g1(x2) * I(x2)

Далі

E(x) = g0(x2) * I(x2) + x * g1(x2) * I(x2) = I(x2) * (g0(x2) + x * g1(x2)) = I(x2) * G(x), де G(x) = g0(x2) + x * g1(x2)

G(x) = 1 + x2 + x4 + x6 + x12 + x * (1 + x4 + x6 + x10 + x13) = 1 + x + x2 + x4 + x5 + x6 + x7 + x11 + x12 + x13

Рис.1.7. Блок-схема загорткового кодера WiMax.

ь Runcture(виколювач) створює вихідний сигнал на основі видалення певних бітів із вхідної послідовності із збереженням усіх інших біт. В даному випадку виколювання відбувається за допомогою функції reshape([1 0 1 0 1;1 1 0 1 0], 10, 1) і отримується 384 вихідні біти.

Для прикладу при виколюванні вектора виколювача [1;0;1;1;1;0] буде видалятися 2 та 6 елементи з вхідної 6-символьної послідовності:

Рис.1.8. Приклад виколювання бітів.

o Interleaver(Перемішувач) реорганізовує порядок вхідних елементів без проведення повторення чи видалення елементів вхідного вектора.

o

Мал.1.9. Перемішувач.

Для прикладу, якщо вхідний вектор [40;32;59;1], а параметр „елементи” перемішувача [4,1,3,2], то буде побудований вихідний вектор [1;40;59;32].

o Modulator

Мал.1.10. Модулятор QPSK.

ь Bit to Integer Converter1(Перетворювач біт - ціле десяткове число) перетворює групу із 2 бітів у вихідний сигнал у вигляді цілих чисел. Із кадру довжиною 384 вхідних біт отримується послідовність із 192 цілі десяткові числа.

ь General QAM Modulator Baseband(QAM модулятор) модулює вхідний сигнал використовуючи метод квадратурної фазової модуляції(QPSK), що заміняє 2бітову послідовність за допомогою одного символу із відповідною синфазною(I) і квадратурною складовою(Q) з векторних діаграм Грея.

Рис.1.11. Векторна діаграма Грея для QPSK.

o Normalize(Нормалізатор) розкладає комплексний сигнал Z після модуляції на real(Z) - i*imag(Z) та перемножує на величину 1/v2:

Рис.1.12. Нормалізатор.

o OFDM Symbols(Формувач OFDM повідомлення) проводить OFDM модуляцію потоку даних в одному частотному каналі. Для цього елементи вхідного потоку інтерпретуються як 192 несучі, що групується по 12 та передається 16 групами на вихідні порти. До них додаються дві групи(27 і 28 несучих), що утворюють захисний інтервал на границі частотного діапазону. В результаті обєднання груп утворюється вихідний сигнал, над яким проходиться зворотнє швидке перетворення Фурє та додається циклічний префікс (коефіцієнти 193-256 та 1-256).Утворений сигнал із 320 символів передається через канал звязку.

Рис.1.13. OFDM-модулятор.

o OFDM Data(відновлювач даних з OFDM - повідомлення) отримує сигнал після проходження ним каналу звязку. Він відкидає циклічний префікс, проводить швидке перетворення Фурє, обєднує інформацію в кадри по 256символів, видаляє елементи із 29 до 128 та від 130 до 229. На виході отримується кадр із 192 символів.

Рис.1.14. OFDM-демодулятор.

o Denormalize(Денормалізатор) являється точною копією блока Normalize.

o Demodulator виконує QPSK демодуляцію та перетворює цілі числа до біт з відповідністю 1 число до 2-х біт. На виході отримується рамка із 384 бітів.

o

Рис.1.13. Демодулятор QPSK.

o Deinterleaver(зворотній перемішувач) відновлює початковий порядок бітів, аналогічний послідовності до обробки перемішувачем на передаючій стороні.

Рис.1.14. Зворотній перемішувач.

Viterbi Decoder

Рис.1.15. Декодер Вітербі

ь Unipolar to Bipolar Converter(перетворювач однополярного коду до двополярного) перетворює вхідний однополярний сигнал до двополярного вихідного сигналу. Так вхідний сигнал містить значення одиниць та нулів, в той час як вихідний 1 та -1.

ь Insert Zero(Блок додавання нулів) будує вихідний вектор на основі додавання нулів до вхідної послідовності для розширення її із 384 до 640 бітів. Відбувається вставка 4 нулів на кожні 6 символів згідно алгоритму reshape([1 0 1 0 1;1 1 0 1 0], 10, 1). Для прикладу, додавання нулів із початковим вектором [1,0,1,1,1,0] цього блоку буде виглядати наступним чином:

Рис.1.16. Приклад роботи блоку додавання нулів.

ь Viterbi Decoder(Декодер Вітербі) використовує алгоритм Вітербі для декодування кодованої вхідної інформації. Ідея алгоритму Вітербі полягає в тому, що в декодері відтворюють всі можливі шляхи послідовних змін стану сигналу, порівнюючи при цьому кодові символи із прийнятими аналогами із каналу звязку, і на основі аналізу помилок між прийнятими і потрібними символами вибирають оптимальний шлях. Декодування по методу Вітербі являє собою алгоритм пошуку найкращого, максимально правдоподібного шляху на графі - решіточній діаграмі коду. До складу декодеру Вітербі входять три основні блоки:

· гілкового метричного обчислення(BMC);

· додавання-порівняння і відбору(FCS);

· зворотного декодування (TBD).

Рис.1.17. Блок-схема декодера Вітербі.

Як приклад, побудова BMC для 1/2 швидкості та nsdec = 3 буде наступною:

Рис.1.18. Будова блоку гілкового метричного обчислення(BMC).

ACS складову в загальному вигляді відображає наступний рисунок:

Рис.1.19. Будова блоку додавання-порівняння і відбору(FCS).

o Block Decoder

Рис.1.20. Блочний декодер.

ь Bit to Integer Converter2(Перетворювач біт - ціле десяткове число2) перетворює послідовність з 8 бітів в одне ціле десяткове число.

ь Selector1(Прилад відбору1) відбирає елементи з порядковим номером від 2 до 40, а перший елемент додається в кінець послідовності.

ь Zero Pad to Code Word Size1(Доповнювач нулями до розміру кодового слова1) збільшує розмір повідомлення з 40 до 239 додаючи на початок повідомлення необхідну кількість нулів.

ь Zero Pad to Code Word Size2(Доповнювач нулями до розміру кодового слова2) збільшує розмір повідомлення з 239 біт до 255 додаючи необхідну кількість нулів у кінці повідомлення.

ь Integer-Output RS Decoder(Декодер Ріда-Соломона з цілочисельним значенням на виході) відновлює повідомлення із кодового слова Ріда-Соломона. Для належного декодування параметри даного блока повинні збігатися із параметрами кодера. В результаті декодування отримується 239бітна послідовність.

ь Selector2(Прилад відбору2) вибирає біти з індексами 204-239 та будує з них вихідну послідовність.

ь Integer to Bit Converter3(Перетворювач ціле десяткове число - біт3) перетворює ціле число у послідовність із 8 бітів.

o De-Randomizer відбирає перші 280 біт із 288бітного вхідного вектора та проводить логічну операцію XOR між отриманою послідовністю після селектора та псевдовипадковою послідовністю, в результаті чого отримується початковий сигнал.

Рис.1.21. De-Randomizer.

Делись добром ;)