Следующая новость
Предыдущая новость

ZetaSDR. Собираем программно-определяемый радиоприемник своими руками

08.05.2020 19:02
ZetaSDR. Собираем программно-определяемый радиоприемник своими руками

Содержание статьи

  • Simple SDR
  • Синтезатор
  • Сборка приемника
  • Включаем
  • Софт
  • Бонус

SDR (Software Defined Radio) — это программно определяемая радиосистема, где софт преобразует радиосигнал в цифровой вид. Это открывает широчайшие возможности для анализа сигнала. Появление все более доступных систем SDR стало дивным подарком радиолюбителям. В этой статье мы разберемся, как работает SDR, самым надежным методом — создав собственный приемник. И при этом постараемся не утонуть в пучине матанализа.

Один из самых популярных SDR сегодня — это китайский «свисток» RTL-SDR, мы о нем неоднократно писали (можешь посмотреть, например, статью «Делаем первые шаги с RTL-SDR»). Он обладает просто фантастическими возможностями для своей цены.

Схема RTL2832 + RT820 выглядит вот так.

Сигнал поступает на вход радиотракта, реализованного на RT820, где выполняется первое преобразование частоты в промежуточную, здесь 3,57 МГц. Зеркальный канал при этом подавляется фильтрами, насколько это возможно.

Такое решение позволяет покрыть огромный диапазон частот от нескольких десятков мегагерц до пары гигагерц. Не весь сразу, конечно, а только кусочками по несколько мегагерц (судя по документации, RTL2832 способен оцифровать и сигнал частотой в несколько десятков мегагерц, однако упирается в пропускную способность USB). На самом деле зачастую достаточно и этого.

Полученный сигнал ПЧ оцифровывается в RTL2832, после чего подвергается второму программному преобразованию частоты. Здесь уже используется квадратурный гетеродин, реализованный программно как скалярное произведение входящего сигнала на опорный. А в случае квадратурного гетеродина в качестве опорных использованы два сигнала с одной и той же частотой, но сдвинутые по фазе на π/2. На выходе смесителей стоят фильтры низкой частоты, которые фильтруют сигнал с удвоенной опорной частотой. В результате на выходе тоже имеем два сигнала: синфазный (I) и квадратурный (Q). Впрочем, названия до некоторой степени условны.

ZetaSDR. Собираем программно-определяемый радиоприемник своими руками

Сигналы в виде потока данных передаются по USB. Собственно, перед отправкой и происходит ресемплирование, когда скорость передачи понижается до примерно 2 Мвыб/с, в данной схеме это «бутылочное горлышко». Почему именно квадратурный гетеродин? Из теории цифровой обработки сигналов известно, что, имея только сигналы I и Q, можно декодировать сигнал с любым из существующих способов модуляции. Например, АМ-модуляция, на которой мы ниже и сосредоточимся, реализуется наиболее просто.

Если представить, что I — это действительная часть, а Q — мнимая часть комплексного сигнала Z, то |Z| = (I^2 + Q^2)^1/2 и есть искомый демодулированный сигнал. C ЧМ и ФМ уже будет сложнее, но не принципиально. Впрочем, теория цифровой обработки сигналов слишком тяжела, чтобы пересказывать ее в двух словах, — при желании можешь почитать подробнее сам.

Дальше сигнал обрабатывает уже компьютер, где из отдельных семплов I и Q формируется комплексный семпл Z = I + jQ. Однако, как ты понимаешь, это тоже некоторая условность, позволяющая использовать математический аппарат комплексного исчисления к сигналу.

По существу, все это реализуется такими программными пакетами, как SDR# (Windows), Gqrx (Linux) или GNU radio (Linux). Последний нам наиболее интересен, так как позволяет не только пробежаться по диапазону, но и понять, как программная часть реализована внутри. И при этом вовсе не нужно залезать в дебри программирования, а можно при помощи мыши составить структурную схему (граф) из отдельных блоков. Блоки обычно реализуют одну операцию (в лучших традициях Unix). Вот так в GNU Radio выглядит простейший FM-приемник на RTL-SDR, созданный за пару минут.

ZetaSDR. Собираем программно-определяемый радиоприемник своими руками
Простейший пример

RTL-SDR выступает в роли источника, выдающего поток комплексных Z-значений, что равносильно обоим потокам I и Q. Далее сигнал попадает в цифровой фильтр низких частот ФНЧ, который вырезает интересующую нас полосу. Так как в данном случае ожидается частотная модуляция, то нам потребуется полоса в ~200 кГц, с центром в нуле, которому соответствует выставленная на RTL-SDR частота. Далее сигнал попадает на частотный детектор, на выходе которого получается реальный звуковой сигнал, подходящий для звуковой карты. Ресемплер нужен, чтобы согласовать битрейт сигнала. Итого — половина приемника всего в несколько кликов мышки!

Simple SDR

Раньше относительной популярностью пользовались SDR-приемники, которые использовали звуковую карту компьютера в качестве АЦП. Большинство имели схожую конструкцию и состояли из опорного генератора, фазовращателя, смесителя и усилителя низкой частоты. Выход усилителя подключался к линейному входу звуковой карты. Чувствуешь аналогию с рассмотренным выше RTL2832? Суть та же, только промежуточная частота тут ниже и оцифровывается уже квадратурный сигнал.

Рассмотрим схему популярного приемника ZetaSDR.

ZetaSDR. Собираем программно-определяемый радиоприемник своими руками
Схема ZetaSDR

Сигнал с тактового генератора частотой F идет к фазовращателю, выполненному на двух D-триггерах, соединенных в счетчик Дженсона. Тот представляет собой сдвиговый регистр, последний инвертированный выход которого подан на вход. При подаче тактового сигнала по выходам сдвигового регистра будет распространяться попеременно волна нулей и единиц. В нашем случае на выходах Q0 и Q1 будут последовательно устанавливаться состояния 00, 01, 11, 10, что в десятичной системе соответствует 0, 1, 3, 2. С точки зрения сигналов это два меандра частотой F/4, сдвинутые по фазе на 90 градусов.

ZetaSDR. Собираем программно-определяемый радиоприемник своими руками
Диаграмма сигналов на счетчике Дженсона

Далее полученные опорные сигналы поступают на ключевой смеситель Дэна Тейло (Dan Tayloe), выполненный на мультиплексоре 74HC4052. Смеситель умножает один сигнал на другой, поэтому если один из сигналов — меандр, то умножение сводится к простому переключению.

ZetaSDR. Собираем программно-определяемый радиоприемник своими руками
Принцип работы смесителя Тейло

На приведенной ниже картинке показана диаграмма работы мультиплексора, где включенному каналу условно соответствует высокий уровень на нем.

ZetaSDR. Собираем программно-определяемый радиоприемник своими руками
Работа мультиплексора

Принимая канал X0 за 0°, видим, что 90° — это X1, 180° — X3, а 270° — X4. Соответствующим образом подключены и операционные усилители. В результате на выходе получаем сигналы I и Q, смещенные на 90°. Подробнее о смесителе Тейло можно прочитать в оригинальной статье. Далее сигналы отправляются на линейный вход аудиокарты.

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

1 год

7690 р.

1 месяц

720 р.

Я уже участник «Xakep.ru»

Источник

Последние новости