Введення до навчального посібника

&gt;. Next: Working with GRC

= Ввід в GNU Radio та Software Radio =

Що таке GNU Radio?
GNU Radio це фреймворк (базовий набір програмного забезпечення), який дозволяє користувачам створювати, моделювати і розгортати високоспроможні реальні радіосистеми. Це модульний, "Flowgraph"-орієнтований фреймворк (Flowgraph - потоковий граф). Він поставляється з великою бібліотекою блоків(модулів), котрі можуть бути легко об'єднані, щоб виконувати складну обробку сигналу. GNU Radio використовується для величезної кількості програм, для роботи з реальними радіомережами, в тому числі для обробки аудіо, мобільного зв'язку, відстеження супутників, радіолокаційних систем, GSM мереж, DRM (Digital Radio Mondiale – набір технологій для цифрової радіотрансляції) та багато іншого — і все це програмно. Сам по собі GNU Radio не є засобом для якихось конкретних апаратних засобів(заліза, пристроїв). Тут також нема готового рішення, для зовнішньої роботи з деякими спеціалізованими радіосистемами (e.g., 802.11, ZigBee, LTE і тому подібні), проте він може бути (і був) використаний для розробки практично будь-яких комунікаційних стандартів.

Для чого мені потрібно GNU Radio?
Раніше, під час розробки систем радіокомунікації, інженер мусив розробляти спеціальну схему, для детектування(виявлення) певного класу сигналів. Розробити спеціальну схему, яка б дозволила кодувати та декодувати цю конкретну передачу. Налагоджувати ці системи за допомогою додаткових засобів. Software-Defined Radio (SDR, програмно-кероване радіо) - виконує обробку прийнятого аналового сигналу, та передає його для обробки програмними засобами комп'ютера. Звісно, ви можете писати програмне забезпечення для свого підключеного до комп'ютера пристрою, але це стане досить громіздкою роботою. Чому ви повинні писати код стандартних фільтрів раз за разом? Чому повинні піклуватись про переміщення даних між різними блоками обробки? Чому б не використовувати готові оптимізовані та попередньо перевірені реалізації, замість того що б раз за разом винаходити велосипед? І як добре ваша програма буде масштабуватись на багатоядерній архітектурі? Чи запрацює на вбудованому пристрої всього в кілька Вт потужності? GNU Radio: фреймворк призначений для написання софту який обробляє сигнали на звичайних комп'ютерах. GNU Radio вкладає функціональність у прості блоки, які зручно і легко використовувати багато разів, забезпечує прекрасну масштабованість, надає велику бібліотеку стандартних алгоритмів, а також, в значній мірі, оптимізований для різноманітних загальних платформ. Він також поставляється з великою кількістю прикладів, з якими ви можете легко почати працювати.

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

Трохи про теорію сигналів
Для того що б працювати з сигналом, він має стати цифровим. Але що це значить, цифровий сигнал? Що б краще це зрозуміти, давайте подивимось на стандартний сценарій, де голос записується для передачі по мобільному телефону. Людина фізично створює “сигнал” звук — сигнал, в данному випадку, складається з хвиль тиску повітря, які виникають внаслідок проходження повітря, через голосові зв'язки людини. Простіше кажучи — людина говорить, створює відповідні коливання повітря. Зміна в часі якоїсь величини (в данному випадку тиску повітря) і називається сигналом.



Коли хвилі досягають мікрофона, він перетворюється на аналогічні коливання електричного струму. (Тому це називають аналоговим сигналом — коливання струму, на скільки можливо, повторюють коливання повітря)



Тепер, коли сигнал вже електричний, ми можемо працювати з ним. Звуковий сигнал є аналоговим, наш комп'ютер ще не може працювати з ним. Для обробки сигнал має стати цифровим, це означає дві речі:

1. Він повинен мати обмежену кількість значень. 2. Він існує в обмеженому проміжку часу.



Таким чином, цей цифровий сигнал може бути представлений у вигляді набору чисел, які називають samples (вибірками). Фіксований час між вибірками — створює sampling rate (частоту дискретизації) сигналу. (Чим більша ця частота, тим більш точно цифровий сигнал відповідає аналоговому, але займає більше пам'яті, та вимагає більше ресурсів для обробки). Процес перетворення фізичної величини (напруга) що міняється в часі, та перетворення її в цифрові вибірки здійснює Analog-to-Digital Converter (ADC) (Аналогово-Цифровий перетворювач, АЦП). В той час, як інший пристрій Digital-to-Analog Converter (DAC) (Цифро-Аналоговий перетворювач, ЦАП) виконує зворотню задачу, бере цифрові данні з комп'ютера і перетворює їх в аналог, який ми з вами здатні сприйняти (людина не розуміє шаленний потік ціфрової інформації, але почує голос з динаміка, прочитає текст ітд.) Тепер, коли ми отримали послідовність чисел, наш ПК може її обробити якимось чином. Наприклад, застосувати цифровий фільтр що б стиснути сигнал, або розпізнати мову, чи передати сигнал методами цифрової комунікації.

Застосування цифрової обробки сигналів для радіотрансляції
Той же самий принцип що й для звуку, можна застосувати для радіохвиль: Сигнал, в данному випадку електромагнітні хвилі, може бути перетворений в змінний струм.



Цей електричний сигнал міститься на “Опорній частоті”, як правило це МегаГерци або ГігаГерци. В свою чергу, цифровий сигнал можна отримати використовуючи традиційні приймачі різних типів, які мають можливість підключатись як периферійний пристрій до ПК, або ж використовуючи перероблений телевізійний тюнер (RTL-SDR) чи спеціалізовані SDR приймачі.

Модульні flowgraph (потокові графи) що базуються на цифровій обробці сигналів
Процес цифрової обробки сигналу, можна організувати як послідовні окремі етапи обробки (фільтрація, аналіз, корекція, детектування) що відбуваються в окремих блоках, які пов'язані між собою символами стрілок (де стрілки — потоки обробленого сигналу від блоку до блоку).



Коли будується програмний засіб для цифрової обробки сигналу, достатньо буде створити завершений граф блоків, такий граф називають flowgraph (потоковий граф) у GNU Radio.



GNU Radio є основою для розробки таких блоків, та створення з них потокових графів, які включають в себе і програмні засоби для роботи з радіо. Як користувач GNU Radio, ви можете об'єднати вже існуючі блоки в потоковий граф високого рівня, що виконує якусь складну роботу, наприклад оброку сигналу з цифровим типом модуляції(маніпуляції) і GNU Radio буде автоматично переміщати данні між цими блоками та викликати обробку данних, коли вони будуть готові до обробки. GNU Radio поставляється з великим набором готових блоків. Просто що б ви мали уявлення, от перелік маленької частини з них. Тут популярні блоки та їх члени:


 * Waveform Generators
 * Constant Source
 * Noise Source
 * Signal Source


 * Modulators
 * AM Demod
 * Continuous Phase Modulation
 * PSK Mod / Demod
 * DPSK Mod / Demod
 * GMSK Mod / Demod
 * QAM Mod / Demod
 * WBFM Receive
 * NBFM Receive


 * Instrumentation
 * Constellation Sink
 * Frequency Sink
 * Histogram Sink
 * Number Sink
 * Time Raster Sink
 * Time Sink
 * Waterfall Sink


 * Math Operators
 * Abs
 * Add
 * Complex Conjugate
 * Divide
 * Integrate
 * Log10
 * Multiply
 * RMS
 * Subtract


 * Channel Models
 * Channel Model
 * Fading Model
 * Dynamic Channel Model
 * Frequency Selective Fading Model


 * Filters
 * Band Pass / Reject Filter
 * Low / High Pass Filter
 * IIR Filter
 * Generic Filterbank
 * Hilbert
 * Decimating FIR Filter
 * Root Raised Cosine Filter
 * FFT Filter


 * Fourier Analysis
 * FFT
 * Log Power FFT
 * Goertzel (Resamplers)
 * Fractional Resampler
 * Polyphase Arbitrary Resampler
 * Rational Resampler (Synchronizers)
 * Clock Recovery MM
 * Correlate and Sync
 * Costas Loop
 * FLL Band-Edge
 * PLL Freq Det
 * PN Correlator
 * Polyphase Clock Sync

Використовуючи ці блоки, багато стандартних завдань, як то нормалізація сигналу, синхронізація, вимірювання, візуалізація сигналу може бути виконана тільки при підключенні відповідного блоку до вашого потокового графу. Також, ви можете написати свої власні блоки, або об'єднати існуючі блоки що б забезпечити виконання певних завдань, або виможете зробити власний блок що приймає якісь дані і передає далі їх вже обробленими. Таким чином, GNU Radio в основному являється фреймворком для створення блоків обробки сигналу та їх взаємодії. Він поставляється з великою бібліотекою готових блоків та засобів, на які користувач може спиратись. Проте, саме по собі GNU Radio не є готовим програмним забезпеченням яке робить щось конкретне — це завдання користувача, зробити на цій основі щось дієздатне, хоча  GNU Radio поставляється з великою кількістю робочих прикладів. Думайте про GNU Radio, як про велику кількість будівельних блоків, з яких ви щось хочете побудувати.

&gt;. Next: Working with GRC