Sdr приемник принцип работы кратко и схемы
Для этого нужно вернуться к истокам. Вспомним, как происходит формирование SSB сигнала.
Несущая подавляется в балансном смесителе, а ненужная боковая полоса подавляется с помощью фильтра (ЭМФ или кварцевого). При приеме однополосного сигнала при наличии помехи на частоте подавленной несущей фильтр выделяет полезный сигнал, а помеху подавляет.
Я лишь приведу некоторые схемы из них.
Структурная схема приемника очень проста: входной фильтр, смеситель и гетеродин, ФНЧ с необходимой полосой и усилитель НЧ, который и осуществляет основное усиление сигнала.
Т.е. кроме нужной боковой полосы принимается и ненужная (которая в данном случае является зеркальной) и помехоустойчивость резко снижается. И никакой фильтр не поможет. Каким же способом можно убрать ненужную полосу? Оказывается есть такой способ — фазовый. К сожалению у меня со сдвигом фазы не очень: знаю, что так бывает, а объяснить математически не силен. Поэтому изложение от Владимира Тимофеевича.
Все понятно? Ну и отлично, вернее не очень. Обратите внимание на последнее предложение. Как говорится. дьявол прячется в мелочах, а именно в возможности осуществлять нужные фазовые сдвиги в достаточно широкой полосе частот (100 — 3000 Гц). Если ошибка в сдвиге фаз всего 2% то подавление ненужной боковой — не более 40 дБ. В этом случае конечно проще сделать телеграфный приемник с полосой 1 кГц. Там сохранить точность сдвига фаз будет гораздо легче.
Итак, нам будет нужно иметь два сигнала гетеродина с одинаковой частотой, но со сдвигом фаз 90 град. , два смесителя и еще один фазовращатель — можно ВЧ, а можно НЧ. Если ВЧ фазовращатель нужно строить на дискретных элементах, то НЧ фазовращатель можно реализовать программно. Отсюда и блок-схема простейшего SDR приемника:
Все очень просто: входной полосовой фильтр Z1 (хотя можно и без него — зависит от динамического диапазона смесителя), после которого сигнал без всякого фазовращения подается на два смесителя, куда поступают от гетеродина сигналы, сдвинутые на 90 град. Продукты преобразования проходят через фильтры НЧ, которые не пропускают высокочастотные составляющие. На их выходах образуются два сигнала: I и Q (правда, напоминает IQ :)). Эти сигналы подаются на вход левого и правого каналов звуковой карты компьютера. Вот и все. Все остальное — программная обработка, программные сервисы и т.д.
Теперь о схемах. Вот самая простая, из того, что нашел (сам SDR не собирал, только собираюсь).
Еще одна очень простая схема.
Микросхема включает в себя 4 ключа. Два нижних вместе с катушкой и переменными конденсаторами включены как мультивибратор, сигнал с которого поочередно открывает ключи 3 и 4, на входы которых подается сигнал от катушки связи диапазонного контура. Фазовращатель LC. Конденсатор С3 должен быть подстроечный. ФНЧ на выходе нет, так же как и в предыдущей схеме.
А вот приемник посложнее.
Здесь смесители на транзисторных ключах (как у Полякова). На триггерах D1.1 и D1.2 микросхемы 74ACT74 собран цифровой фазовращатель, который обеспечивает отличную точность без всяких регулировок нв любых частотах. Генератор на схеме не показон, однако важно, что его частота должна быть в 4 раза выше рабочей. На выходе смесителей — простейший ФНЧ — конденсаторы С2, С3 и два усилителя на ОУ. Заморачивает двуполярное питание ОУ. Выходной сигнал можно подавать на линейные входы звуковой карты.
Сам непременно в ближайшее время попробую сделать приемник. В смесителе скорее всего буду использовать ключи.
На этот раз я хочу вам представить свой любимый и неповторимый, всеволновый, приемник-радиосканер RTL SDR V.3! Это универсальный приемник с огромным диапазоном принимаемых частот, последняя версия которого V.3 практически не имеет никаких глюков и недостатков — что говорит о серьезном отношении создателей.
Что такое SDR приемник
По версии Википедии, SDR приемник — это
Программно определяемая радиосистема (англ. Software-defined radio, SDR) — радиопередатчик и/или радиоприёмник, использующий технологию, позволяющую с помощью программного обеспечения устанавливать или изменять рабочие радиочастотные параметры, включая, в частности, диапазон частот, тип модуляции или выходную мощность, за исключением изменения рабочих параметров, используемых в ходе обычной предварительно определённой работы с предварительными установками радиоустройства, согласно той или иной спецификации или системы.
Приемник подключается к компьютеру через USB порт (может подключаться к смартфону), абсолютно не нуждается в интернете, работает с живым эфиром!
Выглядит вот так :

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

Алюминиевый корпус очень прочный, внутри выполнены ребра жесткости, выполняет защитную функцию платы и чипов, функцию радиатора ( чипы сильно греются градусов до 45-50- это нормальный режим работы), функцию экрана от радиопомех.
С одной стороны корпус заканчивается USB разъемом,с другой стоит антенный SMA разъем.
История создания сканера
История создания этого сканера — просто мистическая: приемник собран на микросхеме RTL2832U предназначенной для приема цифрового телевидения формата DVB-T, казалось бы ничего необычного,все смотрят телевизор, но неожиданным образом в 2012 году происходит утечка информации от производителя Realtek о недокументированных режимах работы микросхемы. Выяснилось, что микросхема может оцифровывать радиосигнал из антенного входа, а фильтровать и выделять полезный сигнал может процессор ПК. Радиолюбители всего мира просто обалдели: в один момент они получили радиосканер стоимостью в 20 долларов,практически идентичный тем, которые стоили свыше 500- 700 долларов!
Как выглядит приемник внутри
Вот так выглядит плата приемника:

Все четко и аккуратно, как на материнских платах компьютера.
Я покупал приемник с антенной, так как своей на разные диапазоны еще не делал, но этой антенны вполне достаточно для того, что бы послушать 2 метровый , 70 сантиметровый , FM диапазоны , можно даже декодировать цифровой сигнал радиостанций, чему я очень был удивлен :)!
Вот такая антенка идет в комплекте:

Телескопическая антенна с креплениями на гибкие ножки, можно прицепить куда угодно в любом положении( для приема вертикальной поляризации требуется ножки располагать вертикально), так же имеется крепление на стекло, что очень удобно — можно закрепить антенну на улице с внешней стороны окна.
Также в комплекте идет кабель с разъемами SMA длиной около 3 метров.
Что же реально можно послушать приемником ?
- самое первое и простое, что вы услышите при первом включении приемника это будет множество радиошумов:)
- потом выйдя в диапазон FM радио, вы услышите множество мощных FM станций.
Постепенно осваивая программное обеспечение и совершенствуя антенну услышите:
Установку и подключение радиосканера RTL-SDR , а также программное обеспечение, настройки и работу разберем в следующих выпусках.
В статье описаны основные аппаратные и программные средства программно определяемого радио SDR. Рассмотрены области применения, в частности, когнитивное радио. Приведены результаты сравнительного моделирования и практические примеры построения. Большое внимание уделено вопросу оптимизации характеристик.
В традиционном супергетеродинном приемнике обработка сигнала полностью производится электронными схемами (см. рис. 1а). Частота сигнала понижается до промежуточной частоты (ПЧ), после чего производится обработка.
В первых SDR-приемниках (см. рис. 1б) вместо демодулятора использовался АЦП. Демодуляция и частично фильтрация сигнала производились в сигнальном процессоре. Современные АЦП намного быстрее, поэтому DSP может выполнять больше функций. Для работы DSP необходимо знать амплитуду и фазу сигналов. Принятый сигнал разделяется на две компоненты: синфазную (I) и квадратурную (Q), смещенную на 90?.


После фильтрации сигналов основной полосы в ФНЧ они оцифровываются в паре АЦП. Далее в цифровом преобразователе частота сигнала понижается до рабочего диапазона сигнального процессора.
В современных передатчиках DSP-модулятор разделяет передаваемые данные на I и Q и передает их на повышающий преобразователь (см. рис. 3) и ЦАП. Сигнал фильтруется и поступает в смеситель для повышения частоты до частоты передачи. Затем сигнал проходит через усилитель и подается на антенну. По мере увеличения быстродействия преобразователей схема упрощается. Самые последние модели представляют собой фильтр и МШУ (см. рис. 4). Коммерческие приемники используют полосу до 30 МГц.


Основные элементы SDR — АЦП, ЦАП и сигнальные процессоры DSP. Частота выборки преобразователя постоянно повышается, преодолев уже гигагерцевый рубеж. Например, преобразователь ADC12Dxx00RF Texas Instruments имеет частоту выборки до 3,6 млрд выб/с.
Наряду со скоростью преобразования важный фактор — быстродействие процессора, который должен успевать обрабатывать данные. По большому счету вместо сигнального процессора можно использовать процессор общего назначения. Однако не всегда его использование будет оптимально, поскольку встречаются алгоритмы, для реализации которых требуются специализированные функции.
Другой подход — использовать заказной сигнальный процессор, имеющий специальную архитектуру, встроенную память и набор арифметико-логических инструкций, благодаря которым его быстродействие будет максимально высоким.
Все чаще DSP реализуются на матрицах FPGA. Такие функции как быстрое преобразование Фурье могут быть выполнены с помощью цифровых логических схем и легко реализуются на FPGA. Поскольку стоимость матрицы постоянно снижается, они приобретают все большую привлекательность в качестве замены сигнальным процессорам.
Еще один вариант — логические элементы с жесткими соединениями, которые можно использовать для реализации функций, не требующих гибкости программирования, таких как протоколы связи. Логические схемы имеют высокое быстродействие и малое потребление, занимают немного места на кристалле. Такие логические блоки часто называют аппаратными ускорителями. В качестве примера приведем СнК TMS320TC6614. Ее структура приведена на рисунке 5. Блок логического ускорителя делится на три части. В большинстве ускорителей первого уровня используются алгоритмы DSP.

Для оценки работы программно определяемого радио проводится моделирование. Для этого необходимо сформировать сигнал, соответствующий протоколу связи (WCDMA, WiMAX, LTE и др.), а также выполнить кодирование канала, перемежение и формирование импульса. После этого можно приступать к оценке воздействия частотных искажений. Для примера будем измерять величину вектора ошибок (EVM — error vector magnitude) или вероятность появления ошибочного бита (BER — bit error rate). Архитектура SDR должна поддерживать множество различных по сложности схем модуляции сигнала.
При настройке средств моделирования требуется задать следующие параметры: точность модуляции или EVM, режим вычислений с фиксированной точкой, частота квантования АЦП/ЦАП, отношение несущая-шум (CNR), динамический диапазон, свободный от шумов (SFDR), коэффициент мощности в соседнем канале (ACPR), отношение несущей к интермодуляционным составляющим третьего поряд-
ка (С/IM3dBc), спектральная маска.
Промоделируем в визуальной среде AWR работу программно определяемого приемника при захвате сигналов 16 QAM и 64 QAM. Цель — определить допустимое значение точки децибельной компрессии P1dB для входного усилителя и маску фазового шума гетеродина.
Исходная схема 16 QAM показана на рисунке 6. Для анализа системы следует определить характеристики сигнала и провести моделирование при изменении частоты (swept simulation) отношения сигнал-шум в зависимости от BER.



Затухание сигнала достигает –50 дБ на частотах 9,9 и 10,1 МГц от центральной. Информационный сигнал может быть обнаружен с желаемым уровнем BER. Следующий шаг — добавление фазового шума понижающего преобразователя. Моделирование поможет выявить его влияние на BER. С учетом фазового шума для обеспечения BER?=?10 -6 минимальное отношение сигнал-шум составляет 22 дБ.
Если условия в канале позволяют, лучше применять модуляцию более высокого порядка, чтобы повысить скорость передачи. Рассмотрим тот же пример, но с модуляцией 64 QAM. Программа автоматически настраивает приемник на детектирование сигнала 64 QAM. Результаты моделирования BER с учетом фазового шума показаны на рисунке 8. Самое низкое достижимое значение BER при 64 QAM равно 10 -3 . Как видно из графика на рисунке 9, частота появления ошибочных битов 10 -6 не может быть достигнута даже в отсутствие шума. Дополнительная интегральная кривая распределения для 16 QAM и 64 QAM показана на рисунке 10. Видно, что отношение пиковой мощности к средней в случае модуляции более высокого порядка увеличивается на 1 дБ. Для компенсации этой разницы P1dB усилителя устанавливается на уровне 14 дБ. Результаты моделирования BER для этого случая приведены на рисунке 11 (без учета фазового шума). Остается определить допустимый уровень фазового шума.
Файл данных для источника фазового шума в визуальной среде моделирования состоит из двух граф: смещение частоты от несущей (от 10 Гц до 1 МГц) и уровни сигнала. В шкале частот соседние значения различаются в 10 раз. При отклонении частоты на 10 Гц маска фазового шума –31,6 дБс/Гц, а при отклонении на 1 МГц она равна




–141,8 дБс/Гц. Значение фазового шума было уменьшено на 9 дБ, чтобы подстроиться под модуляцию 64 QAM. Из рисунка 12 видно, что при таком уровне шума можно получить BER = 10 -6 . На рисунке 13 показан график IQ при SNR = 30 дБ, на котором виден слабый шум, являющийся главным источником возникновения ошибок. Моделирование при этих же условиях для 16QAM дает SNR = 21 дБ при BER = 10 -6 .
Моделирование позволяет выявить также другие источники искажения сигнала, например, разбаланс составляющих IQ или интерференцию. Анализ сложных систем связи следует проводить на всех стадиях проектирования, чтобы получить требуемые характеристики.
Когнитивное радио (КГ) — еще одна концепция, которая расширяет применение SDR. Согласно одному из определений, когнитивное радио — это приемопередатчик, в котором системы связи знают, в какой среде работают, и каково внутреннее состояние канала. Они могут самостоятельно выбирать тактику поведения на основе мониторинга эфира и предустановленных задач. Информация об окружающей среде может включать или не включать данные о местоположении систем связи.
Приемник и передатчик когнитивного радио — SDR с быстрым частотным откликом и большим набором видов сигнала. Примерная структура КГ показана на рисунке 6. Отдельный когнитивный процессор выполняет специфические для когнитивного радио функции, проводя мониторинг статуса и параметров входных сигналов (М) в приемнике и передатчике.
Решения принимаются на основе этих и других сигналов, например, по данным из инструкций стратегии, которые хранятся в модуле памяти и определяют принципы работы при различных условиях. На основе принятого решения высылаются управляющие команды (С) на радио.
Важный аспект КР — динамический доступ к спектру (DSA), который позволяет настроиться на свободный канал. Это повышает эффективность использования частотного спектра. Когнитивный передатчик также дает инструкции программно определяемому радио касательно рабочей частоты, модуляции, уровня мощности, протоколов и других параметров, а кроме того производит настройку автоматически. КР — это программа, которая следит за SDR и по мере необходимости вносит коррективы в его работу.
Когнитивное радио решает в первую очередь проблему ограниченного спектра и взаимодействия между различными приемопередатчиками или беспроводными системами. Оно может найти свободный спектр и использовать его. Кроме этого, КР выбирает форму сигнала или протокол так, чтобы обеспечить качественный и надежный обмен данными с другими типами устройств связи.
Когнитивные приемопередатчики имеют классификацию. Например, их работа может быть основана на политике стратегий, когда есть предустановленный набор возможностей (форм сигнала и процедур). Пользователь выбирает одну или несколько предустановленных жестко прописанных функций. Функции записываются производителем или загружаются по беспроводному каналу. Другой вариант — полностью конфигурируемое радио, которое может быть перенастроено в процессе работы под новые приложения или условия связи.
Когнитивное радио позволяет повысить эффективность использования спектра и обеспечивает надежную беспроводную связь там, где нет сотовой сети (удаленные и сельские регионы). Кроме голосовой связи может обеспечиваться удаленный мониторинг и управление (в машинных приложениях — интеллектуальная сеть, камеры видеонаблюдения, наблюдение пациентов, сети датчиков — всем этим системам станет доступен свободный спектр).
Как показывает анализ, эффективность использования частотного спектра в большинстве регионов невысока. Например, под телерадиовещание отводится широкий диапазон, значительная часть которого свободна. КР позволяет использовать такие каналы в те интервалы, когда они не заняты. Это не мешает работе основного устройства, для которого предназначен канал, поскольку радио динамически выполняет сканирование и перестройку частоты на канал с самыми хорошими характеристиками.
Ускорить разработку поможет использование готовых решений. Например, GNU Radio — открытая платформа для разработки SDR. Она содержит набор процедур обработки сигнала (модуляции GMSK, PSK, QAM, OFDM и др.), корректирующие коды (Рида-Соломона, Виттерби, турбо-коды), фильтры, блоки БПФ, эквалайзеры и таймеры. Код может быть написан на С или Python. Работа с основными ОС (Windows, Linux, MacOS).
Платформа GNU Radio — универсальный модуль Universal Software Radio Peripheral (USRP), который содержит несколько плат, работающих на разных частотах, систему сбора данных и линии ввода-вывода (USB).
Компания Ettis Research предлагает линию полнодуплексных плат, работающих в разных диапазонах с возможностью переключения направления передачи. Мощность передаваемого сигнала и коэффициент усиления принятого сигнала регулируются. Типичная полоса 30 МГц. Цифро-аналоговые преобразователи имеют от 12 до 16 каналов и частоту выборки от 100 млн выборок в секунду. Плата NI USRP 2120 работает в диапазоне 50 МГц — 2,2 ГГц, NI USRP 2921 — в диапазоне 2,4 ГГц — 5,5 ГГц. Выходной сигнал передатчика передается на ПК по сети 1Gb Ethernet. Проектирование ведется в среде LabVIEW c использованием инструментов Modulation Toolkit.
Примером когнитивного радио является xMax (xG Technology), в нем для мобильной связи используется нелицензируемый спектр ISM — промышленных, исследовательских и медицинских частот 902…928 МГц. Мощность сигнала достигает 4 Вт. Спектр делится на 18 каналов шириной 1,44 МГц. Фазовая модуляция BPSK, доступ TDMA, возможность одновременной обработки до 12 голосовых вызовов на канал. Радио прослушивает канал на наличие интерференции, и в случае необходимости переключается на частоту с минимальным уровнем шума. Сканирование производится 33 раза в секунду.
В новом поколении устройств xG специальная гарнитура не используется, взаимодействие осуществляется через обычные смартфоны, которые обмениваются данными с мостом хMod.

На стыке интересных мне областей программирования и радио зародился долгий, но интересный проект по созданию цифрового приёмника прямого преобразования, в котором аналоговых частей будет абсолютный минимум.
С каждой частью статьи я планирую дорабатывать приёмник, улучшать его характеристики, обвешивать его разными доработками, а в итоге возможно и получить полноценный трансивер.
Базовый комплект будет построен на китайской АЦП AD9226.
Цифровым сердцем приёмника будет являться FPGA матрица Altera EP4CE10.
Для того, чтобы не мучатся с наушниками добавлен простейший УНЧ с питанием в 5 вольт и динамик.

Итак, соединяем все воедино (точки подключения особой роли не играют, всё настраивается и назначается программно).
Идея приёмника заключается в смешивании оцифрованного с помощью АЦП радиосигнала с гетеродином, выдающим 2 сигнала со смещением в 90 градусов (синус и косинус).
Тем самым мы получаем комплексный сигнал (I и Q), с помощью которого достаточно легко добиться подавления зеркального канала и демодулировать полезный сигнал.

Устанавливаем среду разработки Quartus.
Начинаем с подключения АЦП (вход и тактовый сигнал). Т.к. внешнего кварцевого генератора нет, будем тактовать модуль силами самой FPGA (а это очень плохо в плане качества приёма, но для первой версии сгодится).
Добавляем вход кварцевого генератора планы FPGA (50 мегагерц).
Первым делом создаём гетеродин, настроенный на частоту приёма. Его задача состоит в переносе частот с диапазона радиоволн в звуковой.
Его параметры на скриншотах:
Для управления частотой гетеродина в него необходимо передать слово частоты, задающее смещение фазы, для этого подготовим отдельный модуль. Сейчас частота будет статична, но дальше планирую менять её энкодером.
Слово частоты это число, получаемое делением необходимой частоты в герцах на частоту кварцевого генератора и умноженную на двойку в степени, равной разрядности DDS-генератора (гетеродина).
Полученный сигнал подаём на 2 смесителя (умножителя), которые обеспечивают смешивание сигнала АЦП (вход А) с сигналом гетеродина (вход B).
Полученный сигнал смещён на частоту гетеродина, т.е. выбранная частота теперь размещается в нулевой. А слева (да, в отрицательной части) и справа от неё находятся весь необходимый нам спектр.
Чтобы дальше эффективно работать с сигналом, нам необходимо его децимировать (уменьшить частоту выборок), эту роль выполняет CIC фильтр.
После этого частота выборок сокращается с 50 миллионов раз в секунду до 100 000.
Далее нам необходимо сделать полосовой фильтр, т.к. будем принимать SSB сигнал, то фильтр полоса пропускания потребуется в районе 2700гц. Для этого воспользуемся фильтром конечных импульсных характеристик (FIR).
Для его расчёта удобно использовать следующие программы:
Iowa Hills FIR Filter Designer
WinFilter
Также, фильтр сократит число выборок с 100 000 до 50 000, что подходит для вывода на динамик.
Далее сокращаем разрядность (количество бит) в потоке для дальнейшей обработки.
Ещё, потребуется PLL модуль для тактования частоты 50кгц (равной частоте дискретизации потока на текущем этапе).
Полученные сигналы уже можно выводить на динамик, но мы не избавились от основной проблемы приёмников прямого преобразования — зеркального канала. Т.е. слушая передачи слева и справа от принимаемой частоты будем принимать их одинаково хорошо. Необходимо получить однополосный приём.
Для этого поток Q (смешанный с синусом) необходимо довернуть по фазе на 90 градусов, тем самым потоки I и Q будут относительно друг друга в 180 градусах. Их дальнейшее сложение или вычитание будет давать USB и LSB полосу приёма соответственно, подавляя всё лишнее.
Помочь нам в этом может преобразователь (фильтр) Гильберта, рассчитанный в программе MatLab.
Т.к. фильтр Гильберта вызывает задержку сигнала на ((количество ступеней фильтра-1)/2) то необходимо задержать сигнал I на столько же шагов.
Далее мы можем сложить (или вычесть) коплексные составляющие сигнала, получив необходимую полосу приёма.
Итоговый результат подадим на дельта-сигма модулятор, смысл работы которого заключается в восстановлении синусоидального сигнала из ШИМ с помощью RC-цепочки (резистор 3.3к, конденсатор 47нф).
Программный код готов, можно привязать выводы в прошивке к ножкам FPGA.
Готово, можно включить приёмник, подключить антенну ко входу АЦП и наслаждаться его работой.
Следующим шагом наверное буду делать УВЧ, управление частотой, дисплей.
При создании были использованы материалы следующих статей, без которых было бы не реально сделать хоть что-то, огромное спасибо авторам.
14 мыслей о “Строим цифровой DDC SDR приёмник своими руками (часть 1)”
Дмитрий,
Наконец то нашел автора, который доходчиво объясняет подход к программированию на ПЛИС. Если знаешь структуру ППП, то разобраться в графической среде программирования не сложно, особенно, когда мысли излагаются так доходчиво. Есть один вопрос, не совсем в тему- я хочу собрать приемник с полным управлением и демодуляциеё на компе,и потому мне блоки демодуляции не нужны-их можно организовать программно, например в HDSDR , но вот как организовать управление и передачу на комп I Q потоков например через LAN8720 Модуль. Если бы вы такой проект в блоге написали было бы великолепно, а если нет-то хотя бы носом ткните в подобный проект с графическим отображением такого СДР приемника. А то что-то я подвис…Заранее спасибо!
SDR-приемник своими руками

SDR (Software Defined Radio) — это программно определяемая радиосистема, где софт преобразует радиосигнал в цифровой вид. В этой статье мы разберемся, как работает SDR, самым надежным методом — создав собственный приемник. И при этом постараемся не утонуть в пучине матанализа.
SDR-приемник своими руками
Один из самых популярных 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-применик
Раньше относительной популярностью пользовались 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°. Подробнее о смесителе Тейло можно прочитать в оригинальной статье. Далее сигналы отправляются на линейный вход аудиокарты.
Синтезатор
В ZetaSDR применен неперестраиваемый генератор, что дает полосу приема, равную полосе пропускания аудиокарты вокруг F/4. Думаю, ты согласишься, что это не очень много, так как любая аудиокарта редко имеет полосу пропускания больше 200 кГц. С другой стороны, ZetaSDR разрабатывался как приемник наблюдателя, и там полоса в 200 кГц перекрывает весь любительский диапазон на 40 м. Но мы-то хотим охватить несколько КВ-диапазонов! Кроме того, за последние десять лет стало гораздо проще с синтезаторами.
Поэтому воспользуемся микросхемой SI5351, которая представляет собой синтезатор частоты с цифровым интерфейсом, способный выхватывать несколько сигналов с частотой от 8 кГц до 160 мГц. При этом из обвязки требует лишь кварц и два подтягивающих резистора для I2C — все, как ты любишь. Для совсем уж ленивых людей в китайских онлайновых магазинах продавцы предлагают и вовсе собранные модули на этой микросхеме, что очень удобно для макетирования.
В качестве микроконтроллера я взял STM32F103C8T6, весьма популярный сегодня среди радиолюбителей благодаря плате Bluepill. Собираем макет на Bluepill и модуле SI5351, а в качестве интерфейсов используем I2C OLED-дисплей и энкодер. В итоге получается такая схема.

Для управления SI5351 я использовал библиотеку STM32-SI5351, которая представляет собой порт на С аналогичной библиотеки для Arduino на Wiring. Так как она использует код на HAL, а я уже сильно привык к функциям LibopenCM3, ее исходники пришлось чуть поправить. В основном изменения коснулись функций отправки и чтения данных. Кроме того, в заголовочном файле перед приватными переменными пришлось добавить модификатор static , иначе оно не хотело собираться.
В итоге адаптированные функции приняли следующий вид:
Из-за расхождений в обработке данных при передаче по I2C между HAL и LibopenCM3 функция si5351_write_bulk ( ) получилась несколько сложной. Но, учитывая небольшой объем данных, передаваемых в SI5351, я решил, что спускаться на уровень ниже и писать свой аналог для ‘i2c_transfer7()’ ради всего этого не стоит. А вот с заголовочным файлом пришлось поковыряться дольше. Для запуска синтезатора необходимо инициализировать SI5351, включить соответствующий порт и задать частоту.
Частота задается в si5351_set_freq ( ) в сотых долях герца, поэтому значение в килогерцах умножается на константу. Также крайне желательно указать тип константы — ULL (uint64). Микросхема может не только просто синтезировать произвольную частоту, но и генерировать несколько сигналов с заданным сдвигом фаз. Была реализована функция, генерирующая два опорных сигнала со сдвигом фаз в 90°.
Сначала я использовал именно эту функцию, и первый макет приемника не имел фазовращателя. Однако применение локального фазовращателя на 74AC74 дало лучший результат, поэтому от генерации двух сигналов я отказался (хотя этот вариант тоже оказался рабочим).
В качестве дисплея здесь применен OLED-экран на SSD1306, для него была написана библиотека, которая осуществляет форматный текстовый вывод и ограниченно поддерживает юникод. Настоящей засадой стал энкодер. С виду это очень удобная вещь для перестройки. Однако дешевый контактный энкодер стал быстро сбоить, и пользоваться им стало невозможно. А хотелось, чтобы ему сносу не было, как в Bruker AC200. И решение нашлось!
По сути, энкодер легко можно сделать из шагового двигателя, а у меня как раз завалялся один такой от принтера. Поэтому, вдохновившись одной публикацией и слегка адаптировав схему под имевшиеся у меня в наличии HEF4011 (К561ЛА7), я собрал вот такую конструкцию. Здесь собранные на инверторах триггеры Шмитта формируют цифровой выход.

Алгоритм дешифровки сигнала энкодера великолепно прост. По восходящему фронту одного из выходов энкодера случается прерывание, в котором определяется уровень на втором выходе. Если там ноль, то считаем, что энкодер вращается вперед, а если единица, то назад. Это отражено на графике.

Видим, что и здесь у нас квадратурные сигналы: в одном случае фаза отстает на 90°, а в другом опережает.
С контактным энкодером такой алгоритм работал без сбоев, однако с шаговым двигателем в обмотках возникла проблема — он делал сразу два шага. Кроме того, при смене направления первый шаг выполнялся неверно. Первую проблему я поборол программно, просто пропуская нечетные прерывания, а второй баг я в итоге банально игнорировал.
Любопытная особенность: прерывание срабатывает, лишь когда вывод сконфигурирован как float input, а когда его задаешь как input pullup/pulldown, оно не работает (хотя вроде как должно). Кнопками переключается шаг перестройки частоты и устанавливаются значения частот, соответствующих КВ-диапазонам. Исходники синтезатора, как всегда, доступны на GitHub.
Сборка SDR-приемника
Схема, которую я использовал, отличается от референсной лишь незначительно.

Сначала приемник и синтезатор были собраны на макетах, причем в первой версии не было фазовращателя, а оба опорных сигнала генерировались в SI5351.

Потом туда добавился фазовращатель (также на соплях), и, что самое интересное, все это работало! Вместо 74AC74 (K1554ТМ2) также можно взять 74HC74 (K555ТМ2), но тогда выше 10 МГц вряд ли удастся забраться, так как 74HC74 работает где-то до 40 МГц. А вот AC-серия уверенно держит до 120 МГц.
Убедившись в работоспособности конструкции, я перенес устройство на печатные платы, что несколько повысило качество сигнала, особенно после помещения плат в экран. Хотя разница была непринципиальная.
ВЧ-сигналы стоит передавать по коаксиальному кабелю и использовать при этом соответствующие разъемы, например SMA. На худой конец кабель можно и запаять. Провод, идущий к аудиокарте, тоже нужен экранированный. Необязательно высокочастотный, но непременно экранированный, иначе все утонет в помехах.
Печатные платы выполнены из двухстороннего фольгированного стеклотекстолита, на тыльной стороне сохранен слой меди и соединен с землей, перемычки сделаны из изолированного провода, а в месте входа в плату отверстия раззенкованы.

Сами платы помещены в жестяные корпуса, выполняющие роль экрана.

Энкодер синтезатора вместе с кнопками переключения диапазонов и изменения шага настройки выведен отдельно.

Вместо NE5532 можно взять LM358, но первая микросхема все же предпочтительнее, так как меньше шумит. И самый важный момент во всем деле — антенна. Хорошо бы, конечно, использовать достаточно длинную наружную антенну и желательно за городом, но за неимением лучшего сойдет и кусок провода, растянутый по комнате. Особенно если к нему подключить П-образный контур и подстраивать по максимуму сигнала.

Неплохих результатов можно добиться с магнитной антенной. Главное — при ее использовании будет куда лучше соотношение сигнал/шум, что особенно важно в городе.

Сама петля изготовлена из коаксиального кабеля и имеет диаметр 400 мм, транзистор J309 можно заменить на BF245 или КП303Е. Антенну и предусилитель также можно смонтировать на макетной плате.

Все это собрано буквально на коленке, из имевшихся дома запасов (чертов коронавирус!). Места занимает немного, но работает достаточно бодро, перекрывая диапазон от 5,8 МГц до 19 000 МГц. А если параллельно переменному конденсатору добавить емкость, то можно уйти и ниже.
Включение SDR-приемника

Для проверки работоспособности приемник сначала подключаем к осциллографу. На синтезаторе выставляем частоту 12 МГц (3 МГц после фазовращателя), а вместо антенны подключаем генератор сигнала (синусоида 3 МГц размахом 300 мкВ). Если синтезатор настроен правильно, то частота биений на выходе должна быть несколько герц. Собственно, по генератору я его и откалибровал, поправив частоту кварцевого резонатора в прошивке. Кстати, вместо правки частоты можно было в той же функции задать отклонение в ppm.
Также видим, что при переходе частоты биений через 0 скачкообразно изменяется сдвиг фаз между I и Q c 90° на –90°. Это значит, что все работает правильно. Теперь можно подключать к аудиокарте. Тут подойдет любая со стереофоническим линейным входом. Ширина полосы пропускания нас в данном случае волнует мало, так как мы всегда можем сдвинуть опорный сигнал.
Программы для работы с SDR-приемниками
Есть множество программ для работы с SDR-приемниками, однако сейчас все они ориентированы на работу с RTL-SDR и его более специализированными разновидностями, такими как HACK-RF, airspy и другими. Тем не менее из актуального софта SDR# поддерживает захват с аудиокарты. Это популярная программа, и мануалов по ней в Сети полно, хотя интерфейс и так интуитивен.
Поэтому устанавливаем, запускаем, выставляем желаемый диапазон на синтезаторе, подстраиваем антенну по максимуму сигнала, включаем АМ-демодулятор (большая часть всего интересного на КВ именно в АМ) — и вперед. Работает приемник очень устойчиво, с регенеративными аналогами (которые до сих пор иногда собирают) при схожей сложности тут по качеству просто нет никакого сравнения. Конечно, здесь видны и зеркальный канал, и отражения, особенно отчетливые на мощных станциях, но это расплата за простоту радиотракта. Побороть отражения можно, использовав ФНЧ на выходе операционного усилителя. А зеркальность реально подавить, отбалансировав каналы хотя бы по амплитуде.
Также для Windows есть совсем минималистичная и несколько устаревшая программа SDRadio, которая поддерживает и наш приемник. Впрочем, упомянуть ее стоило скорее ради ретроспективы.
Хорошо, а что в Linux? Тут чуть сложнее: gqrx ориентирована только на работу с чипами RTL и не поддерживает захват с аудиокарты. Так что воспользуемся GNU Radio!
Запускаем gnuradio — companion и строим несложный граф. В качестве источника используем audio source , в свойствах которого выставляем количество выходов ( 2 ) и sample rate = 48000 . Такие настройки любая аудиокарта потянет. Когда количество выходов audio source указано как два, автоматически используются левый и правый каналы захвата.
При необходимости можно выбрать одну из нескольких аудиокарт. Дальше ставим блок float to complex , который из двух реальных значений создает одно комплексное, к его входам подключаем наш источник. Также полезно между audio source и float to complex поставить умножение на константу, что позволит отбалансировать каналы по амплитуде. Теперь ставим фильтр низких частот, в котором указываем частоту среза 5 кГц. Фильтр выделит необходимую нам полосу сигнала 5 кГц вокруг нуля.
Очень полезная функция GNU Radio — возможность использовать переменные, значения которых задаются отдельно, или и вовсе изменять интерактивно с помощью элементов интерфейса. К выходу фильтра подключаем АМ-демодулятор, который находит модуль комплексного сигнала, и Audio Sink . А так как в данном случае sample rate источника и приемника равны, то согласовывать их ресемплингом нам не нужно. Простейший AM-приемник готов!
Он принимает станцию на частоте гетеродина, то есть в центре полосы, попадающей на аудиокарту. Хорошо, а как посмотреть спектр сигнала? Для этого добавляем элемент QT GUI : Frequency Sink , который отрисует нам спектр сигнала. Подключать его стоит к выходу блока float to complex . Похожим образом элемент QT GUI : Waterfall Sink отвечает за «водопад».
Как будто все хорошо в нашем приемнике. Вот только нет программной перестройки частоты в окне, а это крайне полезная штука, учитывая, что аудиокарты часто дают артефакты в разных частях окна. Моя вот, например, в нуле (+/–100 Гц): судя по всему, это наводки от электросети мешают приему сигнала.
Сделать программную перестройку достаточно просто, надо добавить еще один блок умножения между float to complex и Low Pass Filter , но в данном случае не на константу, а на функцию, то есть на второй сигнал. В качестве источника второго сигнала возьмем блок Signal Source , форма сигнала — косинус. Его частота должна быть равна той частоте, на которую необходимо сдвинуть сигнал.
Таким образом, мы добавили в приемник еще один преобразователь частоты, на этот раз уже программный. Теперь, перестраивая частоту Signal Source , мы можем выбирать, какую часть окна отправить на детектор. Иными словами, мы просто сдвигаем ноль в нашем окне. Полученный граф приемника выглядит как на схеме.

Если хочется послушать радиолюбителей — никаких проблем, только вместо модуля сигнала нам теперь нужна его действительная часть (или мнимая, или их сумма, тут непринципиально). Был приемник АМ, а стал прямого преобразования! Тут, конечно, стоит поправить полосу пропускания фильтра, так как мы уже на SSB. Лучше выставить где-нибудь 1500 Гц.

На 40 м хорошо слышны радиолюбители. А вот так выглядит уверенный прием в режиме АМ «Международного радио Китая», которое здорово слышно во всех вещательных КВ-диапазонах.

Бонус
Хорошо, но что делать, если в ноутбуке нет аудиокарты, а поползать по КВ-диапазону очень хочется? Можно, конечно, купить внешнюю аудиокарту или конвертер к RTL-SDR, но повышающий конвертер стоит в разы дороже самого RTL-свистка. Также в Китае продают модифицированные RTL-SDR v3, которые поддерживают direct conversion: цена приемлема, но все равно заметно выше, чем у RTL-SDR. Да и зачем покупать, когда девайс можно хакнуть.
Описанные манипуляции могут испортить твой RTL-SDR, а при неблагоприятном стечении обстоятельств выжечь порт USB и даже спалить материнскую плату. Поэтому повторяй эти действия на свой страх и риск и лишь в том случае, если точно знаешь, что делаешь. Я предупредил!
Как ты знаешь, RTL2832U имеет на входе АЦП. Более того, если прочитать импровизированный даташит, написанный энтузиастами, можно увидеть, что этих АЦП два и у обоих дифференциальный вход. При этом чип может оцифровать сигнал вплоть до 30 МГц. По сути, все, что надо, — это подать сигнал на вход, можно даже на один. В простейшем случае так и делают: выпаивают чип преобразователя частоты и припаивают антенну. Причем иногда чип даже оставляют на месте, просто перерезая соответствующие дорожки.
Но мы используем более элегантное решение. Если ты, выбирая свисток, следовал рекомендациям, то наверняка в качестве преобразователя там используется чип RT820 — и действительно, в нашем случае он более удобен. Дело в том, что RT820 использует только один вход I микросхемы RTL2832U (это выводы 1 и 2), а вход Q (выводы 4 и 5) остается незадействованным.
Вот именно к ним мы и подключимся. Более того, дополнительно можно воспользоваться трансформатором, что позволит задействовать дифференциальность входа, защитит от статики и несколько согласует сопротивления. Впрочем, с последним мы заморачиваться не будем. А вот защита от статики гораздо важнее, иначе в один неожиданный и не самый приятный момент девайс может превратиться в кирпич. Трансформатор мотается на ферритовом кольце тремя сложенными вместе проводами и содержит шесть витков, обмотки фазируются, как указано на схеме.

В принципе, даже мотать трансформатор необязательно, можно использовать готовый, например из ADSL-модема. Все в этой модификации хорошо, разве что шаг у RTL2832U 0.5 мм и выводы очень короткие. Так что припаять к самим контактам МГТФ 0.05 у меня не вышло. Вместо этого я подпаял к ним провод 0.1 мм, а уже к нему — выводы трансформатора. Чтобы вся эта конструкция держалась и не шевелилась, я использовал термоскотч.

Эта модификация, конечно, требует определенных навыков, но все вполне реально (у меня ушло на это около получаса). Запускаем gqrx с параметрами устройства rtl = 0 , direct_samp = 2 и видим, что все прекрасно работает (будем оптимистами). Подключаем рамочную антенну, и можно слушать эфир. Параметр direct_samp = 2 указывает на то, что надо использовать прямую оцифровку сигнала со входа Q. Кроме того, основная функциональность устройства по-прежнему присутствует и запуск со стандартными параметрами позволяет принимать УКВ.
Конечно, у такого простого решения есть и недостатки в виде наводок от FM-станций, ложных сигналов и прочих прелестей, но работает оно сравнимо с RTL-SDR v3. А если очень хочется, то устройство можно попробовать прокачать и дальше. Но это, на мой взгляд, излишне, разве что входной фильтр с частотой среза около 30 МГц и хороший, экранированный корпус точно еще никому не мешали.
Простой SDR приемник на 74HC4053.

Современные технологии уверенно заполоняют мир. Не исключение радиоприем и радиосвязь. В наши дни можно легко приобрести какой-нибудь SDR приемник-свисток, подключаемый к компьютеру через порт USB, или даже SDR трансивер, причем, многие модели этих аппаратов уже работают автономно, без подключения к компьютеру.
Но цель данной статьи-дать описание практической конструкции простого SDR-приемника, для сборки которого не нужны дорогостоящие комплектующие. Этот приемник даст возможность попробовать что же на самом деле представляет SDR техника. Честно говоря, для меня это тоже первая такая конструкция.
Схем для повторения в интернете валом-на любой вкус, от простейших, до сложных. Выбрал для повторения схему не самую примитивную, но достаточно простую, и собранную на имеющихся у меня в запасе комплектующих.
Схема прототипа собранного мной приемника представлен ниже:

На схеме указан и автор-некто hОne.
На этой схеме отсутствует гетеродин, который зачастую собирают на основе кварцевого генератора, поэтому пришлось приделать свой. Пришлось также внести еще пару изменений и дополнений.
Приемник работает в диапазоне 3,5 МГц и перекрывает часть SSB участка примерно в полосе 3615-3660 кГц. Диапазон 3,5 МГц выбран потому что, из-за особенностей схемотехники SDR приемников, гетеродин в них работает на частотах в 4 раза выше рабочего диапазона. В нашем случае гетеродин работает на частоте примерно 14560 кГц.
Финальная схема моего SDR приемника выглядит так:

Сигнал с антенны поступает на одиночный колебательный контур С1С2L1, настроенный на середину принимаемоего диапазона частот. Далее выделенный сигнал поступает на истоковый повторитель, собранный на транзисторе VT1 типа КП303Е. Строго говоря, он не очень то и нужен, но при тестовых включениях наблюдался эффект прямого детектирования посторонних сигналов. Поэтому и решил применить истоковый повторитель, дабы ослабить паразитное прямое детектирование. Надо сразу отметить, что проблему эту не устранил полностью, но ослабил заметно.
С истока VT1 сигнал поступает на ВЧ трансформатор Т1 и далее на микросхему DD1 типа 74НС4053, которая служит смесителем. С выхода смесителя (выводы 14 и 15) сигналы поступают на микросхему DA1 типа NE5532, на которой собраны усилители для каждого канала отдельно. С выходов NE5532 усиленные сигналы каждого канала (I и Q ) поступают на линейный вход звуковой карты компьютера.
Несколько слов о гетеродине.
Как уже указывалось, гетеродин должен работать на частотах в 4 раза выше принимаемого диапазона частот. Было бы логично применить в этом качестве кварцевый генератор на частоту примерно +/-14560…14600 кГц. Но у меня такого кварца не оказалось, да и желания искать не было.
Поэтому собрал гетеродин по традиционной схеме емкостной трехточки.
Чем выгоден такой вариант? А тем, что перестраивая гетеродин по частоте, можно перекрыть весь требуемый диапазон.
Нужно напомнить, что гетеродин работает на фиксированной частоте, а диапазон принимаемых частот определяется параметрами звуковой карты компьютера и осуществляется перестройка по диапазону уже средствами программы SDR. В случае с дешевой интегрированной картой диапазон перестройки будет 48 кГц. Более продвинутые звуковые карты обеспечат диапазон 96 кГц и более.
Итак, гетеродин собран по схеме емкостной трехточки на транзисторе VT2 типа 2N3906.
Сигнал для дальнейшей обработки снимается с базы этого транзистора и через конденсатор С12 подается на микросхему DD2. На правом выводе конденсатора С12 сигнал гетеродина имеет размах около 2 В. Катушка индуктивности намотана на кольце Amidon T50-2, это сделано специально, чтобы обеспечить требуемую стабильность частоты гетеродина.
Микросхема DD2 делит сигнал гетеродина на 4 по частоте, и обеспечивает на своих выходах ( выводы 6 и 9 ) прямоугольные импульсы, сдвинутые по фазе на 90 градусов, что необходимо для корректной работы микросхемы 74НС4053.
В качестве DD2 зачастую используют импортную 74АС74, но у меня такой не оказалось, поэтому с успехом использовал функциональный аналог КР1533ТМ2.
Форма сигналов на выходах КР1533ТМ2 выглядит так:

Здесь масштаб по вертикали 2 В/дел, по горизонтали 0,1 мкс/дел. Прекрасно виден сдвиг фаз 90 градусов-импульсы сдвинуты один по отношению к другому на четверть периода.
Приемник питается напряжение 9 В. Микросхемы DD1 и DD2 и гетеродин запитаны напряжением +5 В от интегрального стабилизатора 78L05.
О деталях.
Катушки L1 и L2 намотаны на кольцах Amidon T50-2 и содержат 28 и 14 витков провода диаметром 0,4 мм соответственно.
Трансформатор Т1 намотан на кольце из феррита 400НН и содержит 12 витков скрутки из трех проводов диаметром 0,12 мм.
Налаживание.
Усилительные каскады, собранные на NE5532, в налаживании не нуждаются и работают сразу. Это же касается и 74НС4053.
Проверяют работу гетеродина и подбором индуктивности катушки L2 и емкости подстроечного конденсатора С4 устанавливают необходимую частоту генерации. В моем случае-14560, которая после деления на 4 микросхемой КР1533ТМ2 даст среднюю частоту приема 3640 кГц.
Далее проверяют наличие прямоугольных импульсов на выходах КР1533ТМ2. При необходимости подбирают номиналы С1С2L1 для получения резонанса на частоте 3640 кГц. Вот и вся настройка-очень просто и быстро.
Приемник собран на печатной плате и выглядит вот так:

Настало время опробовать приемник в работе.
Для работы с этим SDR приемником опробовал ряд программ: HDSDR, M0KGK, SDRadio. Все они работают. Самая простая-это SDRadio. На ней я и остановился. SDRadio скачал отсюда.
Главное окно программы выглядит так:

В этой программе минимум настроек-как раз для применения с простыми SDR приемниками.
Подключив выход приемника ко входу звуковой карты и запустив SDRadio, сделал необходимые настройки. Сразу понял, что приемник «дышит»-прикоснувшись к антенному входу услышал в динамиках увеличение шумов. Подключив антенну, тут же увидел на спектре работающие станции.
Принимает сигналы чистенько. Отмечу очень даже приличную стабильность частоты настройки-подстраивать без конца не было необходимости. Вот такой вот первый положительный опыт с техникой SDR.
Было в самом деле интересно и познавательно.
Печатная плата лежит ЗДЕСЬ.
Короткое видео о работе приемника. Снято 16 сентября 2019 года, около 20 часов. Диапазон 80 м, антенна Инв В:
Простой SDR приёмник на ПЛИС
В этой статье я расскажу о том, как на базе отладочной платы DE0-nano сделать достаточно простой КВ SDR приёмник.
Пример принимаемых сигналов:
Про технологию SDR можно почитать здесь. Вкратце — это методика приёма радиосигнала, в которой большой объем обработки информации производится в цифровом виде. Благодаря использованию ПЛИС и высокоскоростного АЦП, можно сделать приёмник, в котором даже перенос частоты «вниз» производится цифровым способом. Такой метод называется DDC (Digital Down Conversion), подробнее про него можно прочитать здесь и здесь (больше теории). Используя эту методику, можно сильно упростить приёмник, в котором единственной аналоговой частью становится АЦП.
А теперь поподробнее о моем приёмнике.
Его основой является ПЛИС производства компании Altera, установленная на отладочной плате DE0-Nano. Плата относительно дешевая (60$ для студентов), правда, с достаточно дорогой доставкой (50$). Сейчас она становится все более популярной у радиолюбителей, начинающих знакомство с ПЛИС.
Главная задача ПЛИС — «захватить» цифровой сигнал с АЦП, перенести его в область низких частот, отфильтровать и отправить результат на компьютер. Структурная схема приёмника, реализованного мной, имеет такой вид: 
Рассмотрим последовательно компоненты, которые проходит радиосигнал и цифровая информация.
Антенна
У радиолюбителей есть поговорка «Хорошая антенна — лучший усилитель». Действительно, от антенны зависит очень многое. Большинство наиболее интересных сигналов на коротких волнах нельзя принять на простую антенну (например, на кусок провода). За городом особых проблем нет — достаточно длинный провод может работать хорошей антенной (на приём). В городе, особенно внутри крупных железобетонных домов все значительно хуже — длинную антенну не растянуть, при этом мешающих шумов очень много (бытовые приборы способны создавать в эфире очень большой уровень шума), так что выбор антенны становится непростым делом.
Для приёма радиосигналов я пользуюсь активной рамочной антенной, конструкция которой описана здесь.
Моя антенна выглядит так:
Фактически антенна представляет собой большой колебательный контур (конденсатор находится внутри коробки на столе). Установлена она на балконе, и достаточно неплохо работает. Основное достоинство рамочной антенны — за счет использования явления резонанса она позволяет подавлять шумы на неиспользуемых частотах, однако есть и недостаток — при переходе с одного диапазона частот на другой антенну нужно перестраивать.
Выбор АЦП тоже непрост. АЦП должен обладать большой разрядностью для повышения динамического диапазона, а для DDC приёмника — еще и высоким быстродействием. Обычно в хорошие DDC приёмники ставят АЦП с разрядностью 16-бит и быстродействием >50 MSPS. Однако стоимость таких АЦП больше 50$, и в экспериментальную конструкцию хотелось поставить что-нибудь попроще.
Я выбрал AD9200 — 10-битный 20 MSPS АЦП стоимостью 200 руб. Это очень посредственные характеристики для DDC приёмника, однако, как показала практика, АЦП вполне пригоден для приёма сигналов.
АЦП установлен на отдельной плате, которая вставляется в отладочную:
Снизу плата металлизирована, слой металла соединен с землей АЦП, что тоже защищает от помех.
Опыта разводки ВЧ конструкций у меня нет, так что возможно, что схему и разводку можно улучшить.
Так как АЦП оцифровывает только сигналы положительного уровня, а сигнал с антенны биполярный, то сигнал приходится смещать на половину опорного напряжения (для этого служат резисторы R1 и R2). Искусственно созданная постоянная составляющая затем вычитается уже из цифрового сигнала в ПЛИС.
Вся дальнейшая обработка сигнала после АЦП идет в ПЛИС.
Поток данных с АЦП составляет 200 Мбит (10-bit x 20 MSPS). Передать такой поток напрямую в компьютер, а потом его еще и обработать очень сложно, поэтому частоту сигнала нужно специально понизить. При переносе на более низкую частоту возникает явление «зеркального канала», для борьбы с которым используют квадратурное преобразование частоты — сигнал преобразовывают в комплексную форму (происходит разделение на два канала I/Q). Перенос на более низкую частоту производится путем умножения исходного сигнала на сигнал генератора. В используемой ПЛИС достаточно аппаратных умножителей, так что это не представляет проблемы.
Для того, чтобы переносить входной сигнал на нужную частоту, ее нужно создать. Для этого используется готовый компонент Quartus — NCO (numerically controlled oscillator). На генератор подается тактовая частота, такая же как и у АЦП (20 МГц), на его вход управления подается значение, определяющее частоту, и на его выходе формируется цифровой синусоидальный сигнал нужной частоты, дискретизованный с частотой 20 МГц. NCO способен параллельно формировать и косинусный сигнал, благодаря чему можно формировать квадратурный сигнал.
CIC-фильтр
После смешивания с сигналом генератора с выхода умножителей сигнал выходит уже перенесенный на более низкую частоту, но все еще с высокой частотой дискретизации (20 MSPS). Сигнал требуется децимировать, то есть отбросить часть выборок. Просто так отбросить лишние выборки нельзя, так как это приведет к искажению выходного сигнала. Поэтому сигнал нужно пропустить через специальный фильтр (CIC-фильтр). В данном случае я хотел получить на выходе приёмника частоту дискретизации сигнала 50 кГц. Из этого следует, что частота должна быть понижена в (20e6 / 50e3 = 400) раз. Децимацию придется производить в 2 этапа — сначала в 200, затем в 2 раза.
Первый этап выполняет именно CIC-фильтр. Я использовал 5-каскадный фильтр.
В результате работы CIC-фильтр за счет понижения полосы сигнала разрядность выходного сигнала увеличивается. С своем приёмнике я искусственно ограничил ее 16 битами.
Так как каналов в приёмнике два, то и фильтров потребуется тоже два.
К сожалению, CIC-фильтр имеет довольно крутую АЧХ, стремящуюся к 0 при приближении к выходной частоте дискретизации (100 кГц). Для компенсации ее кривизны служит следующий фильтр.
Компенсационный FIR-фильтр
Этот фильтр нужен для того, чтобы компенсировать спад АЧХ CIC-фильтра и выполнить еще один этап децимации (в два раза). В Altera уже позаботились о методике расчета этого фильтра — при создании CIC-фильтра автоматически формируется программа для Matlab, запустив которую, можно сформировать коэффициенты для компенсационного фильтра.
Вид АЧХ CIC, FIR и получающегося результата (графики строит та же программа для Matlab):
Видно, что на частоте 25 кГц CIC-фильтр ослабит сигнал на 20 Дб, что очень много, однако с использованием FIR-фильтра ослабление всего 10 Дб, а на более низких частотах ослабление практически отсутствует.
На выходе FIR-фильтра с учетом децимации будет частота дискретизации сигнала будет 50 кГц.
Почему нельзя сразу было произвести децимацию сигнала в 400 раз? Это связано с тем, что частота среза FIR-фильтра должна составлять 1/4 от его выходной. В данном случае частота дискретизации на выходе фильтра без децимации, как и на его входе, составляет 100 кГц. В результате этого частота среза будет как раз 25 кГц, что и видно на графиках выше.
Оба фильтра являются готовыми компонентами Quartus.
Передача данных на компьютер
Полученный поток данных ((16+16)bit x 50 KSPS = 1.6 Mbit) нужно передать на компьютер. Данные я решил передавать через Ethernet. На отладочной плате нет такого интерфейса. Наиболее правильно было бы сделать отдельную плату с контроллером PHY, запустить soft-процессор Nios, и передавать данные через них. Однако это значительно усложняет конструкцию. Я пошел более простым путем — Ethernet пакеты можно формировать на самой ПЛИС, таким образом можно передавать данные со скоростью 10 Mbit. В данном случае Ethernet кабель через разделительный трансформатор соединяется с выводами ПЛИС. Проекты с таким принципом работы можно посмотреть здесь и здесь.
В качестве основы я выбрал первый проект, частично его доработав. В изначальном проекте ПЛИС посылает на компьютер с заданным IP и MAC адресом определенный UDP-пакет. После переделки модуль Ethernet передатчика мог передавать 1024 байта, считывая их из RAM. В результате на компьютер в одном пакете отправляются 256 пар 16-битных значений сигнала, взятого с выходов фильтров. Так как данные поступают от АЦП непрерывно, а отправлять их на компьютер нужно пакетами, то пришлось реализовать двойную буферизацию памяти — в то время, пока одна RAM заполняется, данные из другой RAM передаются по Ethernet. После того, как первая RAM заполнится, обе RAM «меняются местами», за что отвечает довольно простой управляющий модуль.
Так как на выходе фильтров данные передаются потоком из пары 16 битных величин, а по Ethernet передаются отдельные байты, то для преобразования потоков в конструкцию введен модуль, который преобразует поток 32 бит 50 KSPS в 8 бит 200 KSPS.
Как оказалось, если передавать поток данных со скоростью 1.6 Mbit, то устройство, к которому подключен приёмник, даже не обнаруживает его (нет линка). Это связано с тем, что пакеты данных при этом передаются с периодом примерно 5 мс, а для того, чтобы сообщить другому сетевому устройству скорость подключения (10 Mbit), нужно каждые 8-24 мс передавать специальный короткий импульс (NLP). Из-за высокой частоты передачи пакетов, модуль Ethernet не успевает передавать эти импульсы, и Autonegotiation не происходит.
Поэтому, для того, чтобы противоположное устройство все же могло определить скорость соединения, достаточно при включении приёмника временно уменьшить частоту передачи пакетов (у меня — в 4 раза), благодаря чему модуль Ethernet успевает передать импульсы NLP.
Приём данных от компьютера
Для того, чтобы управлять приёмником (устанавливать частоту настройки), на него нужно передавать определенную величину, которая будет использоваться для задания частоты NCO.
Для приёма этой величины так же используется компонент с вышеуказанного сайта, модифицированный для приёма данных, и выдачи их в виде 24 битного числа. Так как модули приёмника и передатчика никак не связаны друг с другом, то реализовать ARP нельзя, и фактически это значит, что приёмник не будет иметь IP и MAC адреса. Передать информацию на него можно, если отправить в сеть широковещательный пакет.
Физически, как и в случае с передатчиком, сетевой провод соединяется с отладочной платой через трансформатор. Однако здесь уже нельзя подключаться к произвольным выводам ПЛИС, так как сигнал достаточно мал. Нужно использовать выводы, поддерживающие интерфейс LVDS — он является дифференциальным.
Ресурсы, используемые программой ПЛИС:
— 5006 LE
— 68 9-bit умножителей (64 из них используются в FIR -фильтре).
— 16,826 bit памяти (8 блоков M9K).
Вид проекта проекта в Quartus: 
Обработка данных на компьютере
После того, как компьютер принял данные, их нужно обработать. Лучше всего взять готовую программу. Обычно в SDR программах реализовывают нужные цифровые фильтры, алгоритмы, предназначенные для формирования звука и его фильтрацию, БПФ принятого сигнала, построение его спектра и «водопада».
Я использую программы HDSDR и SDRSharp, они обе поддерживают ввод данных при помощи одинаковых библиотек ExtIO (формат программы Winrad). Требования программ к библиотеке хорошо документированы.
Вот
Резистор соединяет средние точки трансформатора с 3.3 В платы — это улучшает приём и передачу данных по сети.
После того, как приёмник был полностью собран и все программы написаны, оказалось, что чувствительности не хватает. Даже на активную антенну принимались только вещательные радиостанции и сигналы радиолюбителей, работающих на больших мощностях.
Насколько я понимаю, это связано с низкой разрядностью АЦП. Для повышения чувствительности пришлось сделать дополнительный усилитель на транзисторе BF988 (находится внутри маленькой металлической коробочки). Усилитель смог заметно поднять чувствительность приёмника.
Внешний вид всей конструкции: 
Блок питания обеспечивает напряжение 12 В для питания усилителя антенны, в металлической круглой коробке находятся несколько диапазонных полосовых фильтров, которые снижают внедиапазонные сигналы, что улучшает прим сигналов. Отмечу, что во многих случаях приём возможен и без ДПФ.
Теперь о том, что же удается принять на КВ. Несмотря на достаточно высокий уровень шумов, удается принять достаточно много сигналов, хорошо принимаются вещательные радиостанции, неплохо принимаются радиолюбители.
Пример приема сигналов в программе HDSDR (приём велся во время CQ WW DX Contest):
Видео приёма:
Удается принять сигналы WSPRnet. WSPRnet — сеть радиолюбительских маяков, которые автоматически обмениваются короткими сообщениями друг с другом. Данные от маяков автоматически публикуются в интернете. В данном случае, установив специальную программу, можно декодировать принятые сигналы и отправлять их в сеть. На сайте есть возможность посмотреть карту, на которой показываются связи между маяками за определенный интервал времени.
Вот что получилось у меня за полдня приема:
Важная особенность WSPR — очень маленькая мощность передатчиков (меньше 5 Вт), узкая полоса передаваемого сигнала, и большая длительность передачи одного сообщения (2 мин). Благодаря цифровой обработке в программе-декодере удается принимать очень слабые сигналы. Мне удавалось принять сигнал маяка мощностью 100 мВт, находящегося на расстоянии
Радиолюбители, работающие с использованием JT65. JT65 — это один из протоколов цифровой связи между радиолюбителями. Как и в WSPR, в нем используются маленькие мощности и длительные передачи (1 мин). Принимаются сообщения автоматически, так что можно оставить приемник на длительное время, а потом смотреть, кого удалось принять.
Пример приема: 
Цифровое радиовещание (DRM). Некоторые вещательные радиостанции передают звук в цифровом виде. Принять такие сигналы непросто в условиях города — не хватает уровня сигнала. Одну станцию принять удалось: 
Существует множество других радиосигналов, которые было бы интересно принять. Есть еще погодные факсы, станция точного времени RBU (на чудной частоте 66.6 кГц), и другие.
