SDR (Software Defined Radio) — это программно определяемая радиосистема, где софт преобразует радиосигнал в цифровой вид. Это открывает широчайшие возможности для анализа сигнала. Появление все более доступных систем SDR стало дивным подарком радиолюбителям. В этой статье мы разберемся, как работает SDR, самым надежным методом — создав собственный приемник. И при этом постараемся не утонуть в пучине матанализа.
Один из самых популярных SDR сегодня — это китайский «свисток» RTL-SDR, мы о нем неоднократно писали (можешь посмотреть, например, статью «Делаем первые шаги с RTL-SDR»). Он обладает просто фантастическими возможностями для своей цены.
Схема RTL2832 + RT820 выглядит вот так.
Сигнал поступает на вход радиотракта, реализованного на RT820, где выполняется первое преобразование частоты в промежуточную, здесь 3,57 МГц. Зеркальный канал при этом подавляется фильтрами, насколько это возможно.
Такое решение позволяет покрыть огромный диапазон частот от нескольких десятков мегагерц до пары гигагерц. Не весь сразу, конечно, а только кусочками по несколько мегагерц (судя по документации, RTL2832 способен оцифровать и сигнал частотой в несколько десятков мегагерц, однако упирается в пропускную способность USB). На самом деле зачастую достаточно и этого.
Полученный сигнал ПЧ оцифровывается в RTL2832, после чего подвергается второму программному преобразованию частоты. Здесь уже используется квадратурный гетеродин, реализованный программно как скалярное произведение входящего сигнала на опорный. А в случае квадратурного гетеродина в качестве опорных использованы два сигнала с одной и той же частотой, но сдвинутые по фазе на π/2. На выходе смесителей стоят фильтры низкой частоты, которые фильтруют сигнал с удвоенной опорной частотой. В результате на выходе тоже имеем два сигнала: синфазный (I) и квадратурный (Q). Впрочем, названия до некоторой степени условны.
Сигналы в виде потока данных передаются по 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, созданный за пару минут.
RTL-SDR выступает в роли источника, выдающего поток комплексных Z-значений, что равносильно обоим потокам I и Q. Далее сигнал попадает в цифровой фильтр низких частот ФНЧ, который вырезает интересующую нас полосу. Так как в данном случае ожидается частотная модуляция, то нам потребуется полоса в ~200 кГц, с центром в нуле, которому соответствует выставленная на RTL-SDR частота. Далее сигнал попадает на частотный детектор, на выходе которого получается реальный звуковой сигнал, подходящий для звуковой карты. Ресемплер нужен, чтобы согласовать битрейт сигнала. Итого — половина приемника всего в несколько кликов мышки!
Раньше относительной популярностью пользовались SDR-приемники, которые использовали звуковую карту компьютера в качестве АЦП. Большинство имели схожую конструкцию и состояли из опорного генератора, фазовращателя, смесителя и усилителя низкой частоты. Выход усилителя подключался к линейному входу звуковой карты. Чувствуешь аналогию с рассмотренным выше RTL2832? Суть та же, только промежуточная частота тут ниже и оцифровывается уже квадратурный сигнал.
Рассмотрим схему популярного приемника ZetaSDR.
Сигнал с тактового генератора частотой F идет к фазовращателю, выполненному на двух D-триггерах, соединенных в счетчик Дженсона. Тот представляет собой сдвиговый регистр, последний инвертированный выход которого подан на вход. При подаче тактового сигнала по выходам сдвигового регистра будет распространяться попеременно волна нулей и единиц. В нашем случае на выходах Q0 и Q1 будут последовательно устанавливаться состояния 00, 01, 11, 10, что в десятичной системе соответствует 0, 1, 3, 2. С точки зрения сигналов это два меандра частотой F/4, сдвинутые по фазе на 90 градусов.
Далее полученные опорные сигналы поступают на ключевой смеситель Дэна Тейло (Dan Tayloe), выполненный на мультиплексоре 74HC4052. Смеситель умножает один сигнал на другой, поэтому если один из сигналов — меандр, то умножение сводится к простому переключению.
На приведенной ниже картинке показана диаграмма работы мультиплексора, где включенному каналу условно соответствует высокий уровень на нем.
Принимая канал X0 за 0°, видим, что 90° — это X1, 180° — X3, а 270° — X4. Соответствующим образом подключены и операционные усилители. В результате на выходе получаем сигналы I и Q, смещенные на 90°. Подробнее о смесителе Тейло можно прочитать в оригинальной статье. Далее сигналы отправляются на линейный вход аудиокарты.
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее
1 год7690 р. |
1 месяц720 р. |
Я уже участник «Xakep.ru»
Читайте также
Последние новости