GNU Radio, краткий справочник |
![]() |
Добавил(а) microsin | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Сборник информации из разных источников (см. "Ссылки"), помогающий ориентироваться в системе GNU Radio Companion (GRC). Непонятные термины и сокращения см. в разделе "Словарик", в конце статьи. [Функциональные блоки GRC] Блоки, из которых строится проект, делятся на следующие основные категории: Source. Источник сигнала, служит поставщиком цифровых данных представляющих сигнал. Например, это блоки osmocom Source, RTL-SDR Source (SDR-радиоприемники), Signal Source (синтез периодического сигнала), Wav File Source (данные из стандартного WAV-файла [5]), File Source (потоковые данные из файла), и т. д. Источник сигнала имеет только выходной коннектор (out), расположенный в диаграмме справа от блока.
Sink. Получатель сигнала, служит для конечной обработки приходящих данных - например для визуализации или вывода в виде звука на audio-карту PC. Примерами могут служить WX GUI Waterfall Sink (отображение спектра во времени в виде водопада), Scope Sink (осциллограмма), и т. п. Получатель сигнала имеет только входной коннектор (in), расположенный в диаграмме справа от блока.
Промежуточные блоки. Это фильтры, умножители, интерполяторы, дециматры и т. д. Служат для пробразования сигналов, и имеют как входные коннекторы (in), так и выходные (out).
Блоки Source и Sink могут быть в одном из 2 состояний: Enabled (блок активен), Disabled (блок отключен, он не используется в проекте). Промежуточные блоки (через который проходит сигнал) также могут быть в состоянии Bypass, когда этот блок ведет себя просто как линия соединения входа с выходом, т. е. обработка сигнала в блоке отключена. Визуальные управляющие блоки. Это движки (слайдеры), которые служат для плавного регулирования какой-либо величины (например изменения частоты настройки или уровня сигнала), радиокнопки, галочки и т. п. (часто их называют элементы GUI, или блоки GUI). Визуальные управляющие блоки не имеют коннекторов, они просто создают значение переменной для проекта GNU Radio.
К визуальным блокам также можно отнести средства отображения спектра (FFT Sink, Frequency Sink) и формы сигнала (Scope Sink). Пример, как выглядят визуальные блоки управления: Примечание: многие визуальные блоки бывают двух видов: QT и WX. Это префиксы, отражающие способ создания блока, причем блоки QT и WX часто несовместимы друг с другом. В настоящее время больше всего функциональных блоков WX, однако в будущем разработчики GNUradio планируют полностью перейти на блоки QT. Невизуальные блоки. Создают глобальные переменные, константы, опции. Служат для удобства управления проектом GNU Radio, чтобы какую-либо величину можно было задавать только в одном месте. Самый хороший пример - переменная samp_rate (блок Variable), которая автоматически создается вместе с новым проектом (samp_rate определяет частоту дискретизации по умолчанию для различных блоков цифровой обработки). Также к невизуальным блокам можно отнести блок Options, в котором определяются опции проекта (размер окна, заголовок, описание и т. д.). [Управление размещением визуальных блоков] У всех блоков GUI есть свойство Grid Position, позволяющее управлять размещением элементов управления на форме запущенного проекта. Для каждого параметра Grid Position можно использовать 2 или 4 числа. Первые 2 числа указывают номер строки (row) и столбца (column) на отображаемой форме (оба номера отсчитываются относительно 0). Это можно представить как сетку, в которой столько строк и столбцов, сколько Вам нужно. Если в параметре Grid Position используются 4 числа, то значение первых двух остается таким же (номер столбца и строки). Однако оставшиеся 2 числа задают, на сколько столбцов и строк продолжается блок GUI. Например, если на верхней строке формы есть 3 элемента управления - блока GUI (у которых параметры Grid Position [0,0], [0,1] и [0,2]), то можно управлять размерами блоков GUI в первом ряду, указывая Grid Position как [1,0,1,3] (здесь квадратные скобки указаны просто для удобочитаемости, на самом деле в параметре Grid Position их вставлять не надо). На картинке ниже показана в качестве примера окно запущенного GRC-проекта, где верхние пять строк графика FFT занимает 5 строк и 4 столбца. Важно помнить, что нумерация строк и столбцов начинается от нуля, так что следующая пустая строка после графика FFT будет 5, где размещено два GUI-блока, показывающие частоту (в столбцах 1 и 3). [Частота оцифровки сигнала] Самый важный параметр системы SDR - та частота, с которой оцифровываются входные данные (радисигнал). Это частота оцифровки, или частота выборок АЦП, английский термин Sample Rate (в проекте GRC задается значением переменной samp_rate). Чем выше эта частота, чем может быть шире обзор спектра SDR-радиприемника. Например, если Вы хотите принимать сигнал в полосе частот 1 МГц, то необходимо, чтобы частота выборок была не меньше 2 МГц. Однако если Вы хотите выполнить сложные преобразования сигнала, или хотите перейти к обработке звуковых частот, то следует сузить диапазон частот и уменьшить частоту выборок. Блоки GRC используют две функции для управления текущей частотой выборок - децимация и интерполяция. Децимация делит частоту выборки на целое число, а интерполяция умножает. Например, когда вы делаете децимацию сигнала на 4, то в сущности делите sample rate на 4. Интерполяция на 3 утраивает sample rate. Часто децимация и интерполяция используется для получения дробных значений коэффициента деления частоты выборок. Например, чтобы подогнать sample rate 1000 кГц к стандартной частоте выборок звуковой карты 44.1 кГц, Вы могли бы сначала выполнить интерполяцию сигнала на 441, после чего децимацию на 1000. [Коннекторы и типы данных] Коннекторы блоков имеют цвет, который показывает тип данных этого коннектора. Синий для комплексных данных (Complex), оранжевый для данных с плавающей запятой (Float), темно-зеленый для 32-битных целых со знаком (Int), желтый для 16-битных целых со знаком (Short), фиолетовый для 8-битных со знаком (Char). Есть и другие типы данных, встречающиеся не так часто, они также обозначаются разными цветами. Ниже в таблице показана легенда цветов типов данных, которая доступна вызовом меню Help -> Types (обратите внимание, что комплексные данные занимают в 2 раза больше места в памяти, чем обычные):
Входы и выходы блоков (их соответствующие коннекторы) можно соединять друг с другом связями. Для этого сначала делается клик мышью на одном коннекторе, затем еще один клик на другом коннекторе. Получается линия связи со стрелочкой, показывающе направление данных. При создании соединений существуют простые правила. Во-первых, нельзя соединять друг с другом выходы. Во-вторых, должны совпадать типы данных на концах линии связи. Ошибки в проекте (неправильные связи, ошибочно настроенные или не соединенные блоки) среда разработки GNU Radio Companion показывает красным цветом. [Часто используемые блоки] Ниже в таблицах представлены основные блоки, которые используются чаще всего, с их кратким описанием.
[Filter Design Tool] В GRC есть инструмент Tools -> Filter Design Tool, упрощающий разработку фильтров. [FAQ] 2048000 Предельные значения samp_rate для других SDR-приемников (в мегасемплах в секунду):
Свойства RTL-SDR Source (или osmocom Source) -> Device Arguments -> driver=rtlsdr,rtl=1 Возможно частота дискретизации звуковой карты не совпадает точно с частотой выборок входных данных блока Audio Sink. Согласовать частоты выборок можно с помощью блока Rational Resampler, его надо поставить на входе блока Audio Sink. После этого надо подобрать коффициенты Interpolation (умножение) и Decimation (деление) так, чтобы частота на выходе Rational Resampler точно совпадала с Sample Rate блока Audio Sink. Коэффициенты Interpolation и Decimation блока Rational Resampler проще всего подбирать с помощью таблиц Microsoft Excel. В строке инициализации компонента RTL-SDR Source (или osmocom Source) подстройте параметр N: driver=rtlsdr,rtl=N Обычно подходит 0 или 1. Такие искажения может вносить блок Throttle. Потому что неправильно настроены (или не настроены) переменные окружения, необходимые для работы подсистемы Python. В среде операционной системы Windows редактор GRC в процессе своего старта настраивает следующие переменные окружения: GRC_BLOCKS_PATH=C:\GNURadio-3.7\bin\..\share\gnuradio\grc\blocks PYTHONHOME=C:\GNURadio-3.7\bin\..\gr-python27 PYTHONPATH=C:\GNURadio-3.7\bin\..\gr-python27\Lib\site-packages;C:\GNURadio-3.7\ bin\..\gr-python27\dlls;C:\GNURadio-3.7\bin\..\gr-python27\libs;C:\GNURadio-3.7\ bin\..\gr-python27\lib;C:\GNURadio-3.7\bin\..\lib\site-packages;C:\GNURadio-3.7\ bin\..\gr-python27\Lib\site-packages\pkgconfig;C:\GNURadio-3.7\bin\..\gr-python27\ Lib\site-packages\gtk-2.0\glib;C:\GNURadio-3.7\bin\..\gr-python27\Lib\site-packages\ gtk-2.0;C:\GNURadio-3.7\bin\..\gr-python27\Lib\site-packages\wx-3.0-msw;C:\ GNURadio-3.7\bin\..\gr-python27\Lib\site-packages\sphinx;C:\GNURadio-3.7\bin\..\ gr-python27\Lib\site-packages\lxml-3.4.4-py2.7-win.amd64.egg;C:\GNURadio-3.7\bin\ ..\lib\site-packages\gnuradio\zeromq UHD_IMAGES_DIR=C:\GNURadio-3.7\bin\..\share\uhd\images UHD_PKG_DATA_PATH=C:\GNURadio-3.7\bin\..\share\uhd;C:\GNURadio-3.7\bin\..\share\uhd\images UHD_RFNOC_DIR=C:\GNURadio-3.7\bin\..\share\uhd\rfnoc\ Здесь C:\GNURadio-3.7 это папка, в которую установлена система GNU Radio (у Вас это может быть другой каталог, например расположенный в папке C:\Program Files). Кроме того, в переменную окружения %Path% добавляются пути поиска исполняемых файлов Python: Path=C:\GNURadio-3.7\bin\;C:\GNURadio-3.7\bin\..\gr-python27\dlls;C:\GNURadio-3.7\ bin\..\gr-python27;C:\Python27;... (далее идут другие пути поиска) ... Примечание: все необходимые настройки переменных окружения выполняет командный файл run_gr.bat, который находится в папке bin каталога установки GNU Radio. Проблема решается просто: 1. Запустите командную строку GNURadio Companion Prompt (соответствующий ярлычок появляется в меню Пуск после установки GNU Radio). Примечание: ярлычок GNURadio Companion Prompt запускает командный файл run_gr.bat, находящийся в папке bin каталога установки GNU Radio. Этот командный файл делает все необходимые настройки переменных окружения. 2. В появившейся командной строке будут настроены все необходимые переменные окружения GRC. Теперь для запуска проекта проекта GRC достаточно выполнить команду: python.exe top_block.py [Словарик] ADS-B Automatic Dependent Surveillance-Broadcast, специальная технология определение позиции самолета, альтернатива радарным системам (подробнее см. Википедию). AM Amplitude Modulation, амплитудная модуляция. ATC Air Traffic Control, радиосигналы управления авиационным сообщением. Bias T устройство для подачи в антенный кабель питания внешнего усилителя. "T" в названии отражает ветвление постоянной и переменной составляющей на антенном разъеме, в который подается питание для антенного усилителя. BPF Band Pass Filter, полосовой фильтр. DAB Digital Audio Broadcast, цифровое радиовещание. FFT Fast Fourier Transform, быстрое преобразование Фурье (БПФ). Преобразование данных выборок сигнала из временной области в частотную, используется для получения спектра сигнала. FIR Finite Impulse Response, фильтр с конечной импульсной характеристикой (КИХ-фильтр). Это цифровой фильтр без обратных связей с выхода на вход. FIR-фильтр блее стабилен, чем IIR-фильтр. FM Frequecy Modulation, частотная модуляция. Обычно имеется в виду радиовещание в диапазоне 88 - 108 МГц. GRC GNU Radio Companion, GUI-среда разработки проектов GNUradio. HF High Frequincy, высокая частота. Обычно имеются в виду частоты КВ-диапазона и выше (начиная с 10 МГц). Hi-Z высокое сопротивление. HPF High-Pass Filter, фильтр высоких частот (ФВЧ). IF Intermediate Frequency, промежуточная частота. I/Q реальная (I) и мнимая (Q) составляющие комплексного сигнала, обработка которого используется в SDR-приемниках [5]. IIR Infiite Impulse Response, фильтр с бесконечной импульсной характеристикой (БИХ-фильтр). Это цифровой фильтр с обратными связями с выхода на вход. IIR-фильтр при одинаковом количестве каскадов фильтра (порядка фильтра) позволяет получать более крутую АЧХ, чем FIR-фильтр. LF Low Frequency, диапазон длинных волн (ДВ). LNA Low-Noise Amplifier, малошумящий усилитель. Low IF, LIF режим низкой промежуточной частоты SDR-приемника. LPF Low-Pass Filter, фильтр низкой частоты (ФНЧ). В радиотехнике это не обязательно должны быть звуковые частоты, имеются в виду, что фильтр пропускает частоты ниже заданной частоты фильтра. MW Middle Wave, средние волны (СВ). QT, WX префиксы названий визуальных блоков, обозначающий способ из создания. Блоки могут быть написаны либо на C++ с помощью кроссплатформенной системы программирования Qt (тогда в начале названия блока будет QT), либо на основе кроссплатформенной библиотеки "виджетов" wxWidgets (тогда название блока получит префикс WX). В Интернете проскакивала информация, что разработчики намерены полностью перейти на Qt и отказаться от использования блоков WX. RF Radio Frequency, радиочастота. SSB однополосная амплитудная модуляция. taps, filter taps коэффициенты, используемые в цифровом фильтре. TCXO температурно-компенсированный кварцевый генератор. UHF Ultra High Frequincy, очень-очень высокая частота, соответствует диапазону радиочастот свыше 120 МГц. USRP Universal Software Radio Peripheral, семейство SDR-радиоустройств, разработанных и продаваемых Ettus Research и их дочерней компанией National Instruments (NI). VHF Very High Frequincy, очень высокая частота, соответствует диапазону радиочастот 50 - 110 МГц. Zero IF, ZIF режим нулевой промежуточной частоты SDR-приемника. анти-алиасинг в контексте радиоприема означает подавления помех от наложения спектров сигнала. [Ссылки] 1. Блог GNUradio site:my-gnuradio.org. |