banner
Дом / Блог / Начало работы с GNU Radio
Блог

Начало работы с GNU Radio

Jun 18, 2023Jun 18, 2023

Программно-определяемое радио (SDR) – возможность обрабатывать радиосигналы с использованием программного обеспечения, а не электроники – несомненно, увлекательно. Однако существует большой разрыв между возможностью использовать готовое программное обеспечение SDR и писать свое собственное. В конце концов, SDR требуют большого количества цифровой обработки сигналов (DSP) на высоких скоростях.

Не многие люди могут собрать современный ПК с нуля, но почти каждый может получить материнскую плату, несколько плат ввода-вывода, блок питания и корпус и собрать собственную систему. Это идея GNU Radio и SDR. GNU Radio предоставляет множество функций Python, которые вы можете использовать для создания сложного приложения SDR (или любого приложения DSP).

Если вам все еще не нравится Python (или даже если это так), есть еще более простой способ использовать GNU Radio: GNU Radio Companion (GRC). В основном это графический подход, позволяющий вам графически объединять модули и создавать простые графические интерфейсы для управления новым радиомодулем.

Несмотря на то, что вы обычно думаете, что GRC касается радио, на самом деле это хорошая основа для создания любого приложения DSP, и это я покажу вам в видео ниже. GRC имеет блок генератора сигналов и интерфейсы к вашей звуковой карте. Он даже имеет возможность чтения и записи данных в файловую систему, поэтому вы можете использовать его для выполнения многих приложений DSP или моделирования без дополнительного оборудования.

ОБНОВЛЯТЬ:Не пропустите следующую публикацию, в которой используется SDRPlay для создания приемника на базе GNU Radio.

Существует несколько ключевых строительных блоков, которые в совокупности делают возможным использование СДР. Первый — это некое устройство ввода (источник), которое дискретизируется с некоторой частотой дискретизации. Для аудиоустройства выборки будут действительными числами. Однако радиоустройства, скорее всего, будут выдавать комплексные числа с компонентами I и Q.

Если вы не знакомы с выражением сигналов в виде компонентов I и Q (иногда называемых квадратурными данными), это большая тема (с отличным трехмерным объяснением, одно от Tektronix, а другое от National Instruments). Однако вам не нужно напрямую понимать теорию квадратурных сигналов, чтобы начать работу с GRC. Просто знайте, что сигналы I и Q могут объединяться, чтобы выразить любую форму сигнала, и, наоборот, любой сигнал может разбиться на серию значений I и Q. Однако в случае GRC не так важно (в большинстве случаев) это понимать, точно так же, как вы можете использовать видеокарту, не зная точно, какие сигналы находятся на экспресс-шине PCI.

Простой стартовый проект вы можете найти на видео ниже. GRC использует блок-схему (блок-график) для представления вашего проекта. Когда вы создадите новый граф потока, вы увидите уже существующие два блока: один для параметров и переменную с именем samp_rate. Самая важная часть блока параметров устанавливает набор графических инструментов, которые вы хотите использовать (графические виджеты WX или виджеты QT). Для наших целей это не имеет особого значения, но в видео я выберу Qt. Частота дискретизации настолько важна для вашего проекта, что для нее существует специальная переменная. Большинство других блоков получают значение этой переменной и используют ее для своей частоты дискретизации. Однако это не всегда то, что вам нужно, но это хорошая отправная точка. В этом примере я в конечном итоге собираюсь получить входные данные от звуковой карты, поэтому мне нужна частота дискретизации, которую поддерживает большинство звуковых карт (48 кГц). Однако для начала я сделал пример очень простым, как вы можете видеть на диаграмме выше.

Для начала вы разместите источник сигнала, который генерирует данные IQ (в виде комплексных чисел) на графе потока. Блок генератора сигналов может фактически генерировать слишком много данных и замедлять работу процессора. Поскольку частота дискретизации составляет 48 кГц, нет смысла генерировать более 48 000 выборок в секунду. Чтобы убедиться в этом, вы добавите блок дроссельной заслонки и подключите его к генератору.

Подключить порты, имеющие одинаковый цвет (и, следовательно, один и тот же тип данных), очень просто. Просто нажмите на один порт, а затем нажмите на другой. Порядок не имеет значения, и вы можете подключить более одного входа к одному выходу. Если тип данных порта не совпадает, вам придется использовать преобразователь типов (и пример видео покажет это позже).