SDR приемник
Часть 1. SDR приемник с кварцевым гетеродином
Как показывает время, интернет и сотовая связь не могут в полной мере заменить старое доброе радио. Ведь слушать радио эфир на коротких волнах, а тем более проводить любительские радиосвязи намного интереснее, чем общаться по сотовому телефону или через Skype. В любительском радио эфире можно пообщаться с коллегами по увлечению, обсудить технические вопросы, наконец, просто поговорить с человеком, находящимся за многие тысячи километров от вас. Кроме того — простор для творчества, ведь многие радиолюбители традиционно используют самодельные трансиверы, приемники, антенны. В общем, радиолюбители — люди увлеченные, у них никогда не возникает вопроса, чем заняться в Новогодние каникулы и выходные дни. У нормальных людей фантазия обычно не идет дальше просмотра телевизора и ремонта квартиры.
Но я немного отвлекся. Пора перейти к описанию самодельного коротковолнового приемника, который позволит начинающим сделать первые шаги в эфире, а более опытным радиолюбителям познакомиться с новым направлением в радиосвязи — SDR. Описание этого приемника было опубликовано в журнале «Радио» №12 за 2010 г., стр. 51. 55.
При использовании технологии software-defined radio (SDR) практически весь объем работ по обработке и демодуляции радиосигнала перекладывается на программное обеспечение, которое запускается на персональном компьютере. С помощью программных алгоритмов могут быть реализованы такие функции, которые очень сложно получить при аналоговой обработке.
В идеальном SDR приемнике принимаемый сигнал с антенны через диапазонный полосовой фильтр поступает на быстродействующий аналого-цифровой преобразователь (АЦП), который оцифровывает весь спектр КВ диапазона. Оцифрованный сигнал можно передавать непосредственно в компьютер. Но пока вычислительной мощности персональных компьютеров недостаточно для обработки такого большого объема информации в реальном времени. Поэтому сигнал с АЦП подается на микросхему программируемой логики — FPGA, где проходит предварительную обработку. Из всего спектра вырезаются участки необходимой ширины и передаются в компьютер для дальнейшей обработки.
Аппаратно все получается очень просто — не нужно никакого ГПД, аналоговая часть приемника сведена к минимуму. Соответственно, никаких побочных каналов приема, а динамический диапазон определяется разрядностью АЦП.
К сожалению, пока комплектующие для подобных вещей довольно дефицитные и дорогие. Да и изготовить плату, а затем смонтировать микросхему в корпусе на 208 выводов с шагом 0,5 мм в домашних условиях по силам далеко не каждому радиолюбителю. А ведь FPGA еще нужно запрограммировать. Поэтому, по крайней мере в ближайшие годы, конструирование SDR аппаратуры c непосредственной оцифровкой всего спектра сигнала с антенны останется уделом профессионалов. Хочется верить, что при серийном выпуске стоимость таких SDR приемников и трансиверов будет не очень высокой.
В настоящее время в любительских условиях реализация SDR реальна только на низких частотах (десятки килогерц) т.к. в качестве АЦП и ЦАП обычно используется звуковая карта компьютера. Для переноса спектра ВЧ сигналов на низкую промежуточную частоту в радиолюбительских устройствах целесообразно использовать принцип прямого преобразования. Этот принцип был предложен очень давно. Радиолюбителям со стажем наверняка хорошо знакомы работы В.Т.Полякова (RA3AAE), который в 80-е годы прошлого века предложил много идей и схемотехнических решений для аппаратуры прямого преобразования.
SDR приёмник способен принимать и демодулировать практически все виды модуляции CW, SSB, AM, FM, а с помощью дополнительного программного обеспечения и цифровые виды связи, как радиолюбительские так и коммерческие, например DRM цифровое радиовещание. Практически все SDR программы имеют панорамный анализатор спектра.
Ну а теперь перейдем к описанию схемы и конструкции моего SDR приемника. При его разработке я поставил цель создать по возможности простой и доступный для повторения всеволновый SDR КВ приемник с непрерывным диапазоном принимаемых частот 30 кГц … 65 мГц. Это не одноплатная конструкция, каждый блок смонтирован на отдельной плате и функционально закончен. Своего рода «электронные кубики». В зависимости от целей и возможностей каждый радиолюбитель может сначала собрать простой однодиапазонный приемник. Затем модернизировать его, превратив в всеволновый. Кроме того, любой блок можно собрать по другой схеме и на других комплектующих.
Приемник с кварцевым гетеродином будет перекрывать участок диапазона, равный частоте дискретизации звуковой карты компьютера. Обычно 48 кГц, т.е +/- 24 кГц от средней частоты. За основу я взял одну из схем, предложенных известным радиолюбителем, пропагандистом SDR аппаратуры — Tasa (YU1LM/QRP). Ознакомиться с его описанием можно на сайте http://www.yu1lm.qrpradio.com/sdr%20rx%20yu1lm.htm. По классификации автора эта схема известна как приемник DR2G. Это, на мой взгляд, одна из его самых совершенных и продуманных схем. Я внес в нее лишь несколько «косметических» изменений, исправил некоторые неточности и перевел чертеж платы в формат Sprint Layout, попутно скорректировав конфигурацию некоторых печатных проводников.
Приемник собран на микросхемах серии 74LVC. Эта серия функциональный аналог 74HC, но она имеет существенно большее быстродействие. Например, триггер 74LVC74 может работать на частотах до 250 мГц, а ключи 74LVC4066 работают с частотой коммутации до 100 мГц и имеют сопротивление в открытом состоянии около 5 Ом. Но напряжение питания этой серии не должно превышать 3,6 В.
В качестве гетеродина использован кварцевый генератор, собранный по классической схеме. Частоты кварцев должны быть в 4 раза выше желаемых частот приема. Например, для кварца 28328 кГц диапазон частот приема будет 7082 +/-24 кГц. Переключателем SA1 переключаются 2 кварцевых генератора, поэтому прием можно вести на двух участках по 48 кГц каждый. Учитывая возможность работы фазовращателя приемника в режиме деления на 2, возможен прием еще в двух участках КВ диапазона на частотах в два раза выше. Для приведенного выше примера это 14164 +/-24 кГц, но избирательность по зеркальному каналу в этом случае будет гораздо хуже.
Более детально схема, конструкция и методика наладки описана в подробном описании (ссылка в конце странички). Хочу еще обратить особое внимание на антенну. В 80-е годы прошлого века в Кирове на кусок провода длиной 2-3 метра, протянутый около окна на кухне, на трансивер «РАДИО-76» я на 57-58 принимал любительские станции 5-го района в диапазоне 160 м. А на активную рамочную антенну диаметром около 30 см можно было уверенно слушать сигналы любительских спутников серии «Радио» в диапазоне 28 мГц.
Сейчас такой номер не проходит. В городских условиях на комнатную антенну даже вещательные станции услышать почти невозможно. Никакие эксперименты с «балконными антеннами», магнитными рамками и т.п. не дают положительных результатов. Многочисленные импульсные блоки питания бытовой техники, компьютеры, сотовая связь и многое другое отнюдь не улучшают электромагнитную обстановку.
Поэтому, во избежание разочарований, необходимо использовать только наружную антенну. Хотя бы кусок провода длиной около 20 м, брошенный из окна на ближайшее дерево или фонарный столб. Но не забывайте про электробезопасность. Этот провод не должен проходить ни под, ни над линиями электропередач. Для снятия статического электричества его следует соединить через резистор порядка 10 кОм с «землей». В качестве «земли», если нет других вариантов, можно использовать трубы отопления или (лучше) водопровода.
Наконец, аппаратная часть готова. Можно устанавливать и запускать программу SDR. Для приемника с кварцевым гетеродином можно использовать одну из следующих:
KGKSDR: http://www.m0kgk.co.uk/sdr/,
Rocky: http://www.dxatlas.com/Rocky/,
SDRadio или WinRad: http://www.weaksignals.com/.
Управление и настройка этих программ интуитивно понятны и я не буду подробно описывать эти вопросы. При необходимости всегда можно почитать встроенную справку по конкретной программе или поискать информацию по ней на форумах в Интернет.
Несколько слов о звуковой карте. Безусловно, это очень важный компонент приемной системы и от ее качества зависят все параметры приемника. Полоса обзора на панорамном индикаторе равна частоте дискретизации звуковой карты. Например, если частота дискретизации 48 кГц, приемник можно будет программно перестраивать в диапазоне +/- 24 кГц от частоты гетеродина.
Но я бы не рекомендовал сразу бежать в магазин в поисках качественной звуковой карты стоимостью в несколько сотен долларов. Очень даже не плохие результаты получаются и со встроенной AC97. И только, если что-то не устраивает, можно подумать о приобретении другой, более качественной.
Хочу отметить еще один важный элемент приемной системы — мышку. Ведь это будет основной орган настройки. Особо следует обратить внимание на плавность вращения колеса прокрутки, надежность и отсутствие дребезга в кнопках, а также отсутствие случайных бросков курсора по экрану при движении мышки.
О том, как превратить этот приемник во всеволновый с непрерывным диапазоном принимаемых частот 30 кГц … 65 мГц читайте во второй части статьи.
Источник
Блог UA3REO
Строим цифровой DDC SDR приёмник своими руками (часть 1)
На стыке интересных мне областей программирования и радио зародился долгий, но интересный проект по созданию цифрового приёмника прямого преобразования, в котором аналоговых частей будет абсолютный минимум.
С каждой частью статьи я планирую дорабатывать приёмник, улучшать его характеристики, обвешивать его разными доработками, а в итоге возможно и получить полноценный трансивер.
Базовый комплект будет построен на китайской АЦП 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.
Готово, можно включить приёмник, подключить антенну ко входу АЦП и наслаждаться его работой.
Следующим шагом наверное буду делать УВЧ, управление частотой, дисплей.
При создании были использованы материалы следующих статей, без которых было бы не реально сделать хоть что-то, огромное спасибо авторам.
13 мыслей о “Строим цифровой DDC SDR приёмник своими руками (часть 1)”
Здравствуйте Дмитрий. Вопрос по коэффициентам FIR-фильтра. Я загружаю в визард коэффициенты одного фильтра но в разном формате: Fixedpoint и Float и получаются разные АЧХ. На форуме Марсохода: https://marsohod.org/forum/5-altera-quartus-ii/1256-voprosy-novichka?start=230#7728 , мне ответили что это масштаб другой. Посмотрите пожалуйста там прикреплены две картинки по таблице видно что данные одни. Получается не важно, какие значения на оси Y, главное относительные величины пропускаемого диапазона частот и подавляемого? В этой статье тоже полезный сигнал «усиливается на сто db», чему верить?
Принципиального различия в формате чисел я не увидел, одно время даже написал конвертер из float в integer https://ua3reo.ru/services/float_to_dec_coeff.php
Дмитрий,
Наконец то нашел автора, который доходчиво объясняет подход к программированию на ПЛИС. Если знаешь структуру ППП, то разобраться в графической среде программирования не сложно, особенно, когда мысли излагаются так доходчиво. Есть один вопрос, не совсем в тему- я хочу собрать приемник с полным управлением и демодуляциеё на компе,и потому мне блоки демодуляции не нужны-их можно организовать программно, например в HDSDR , но вот как организовать управление и передачу на комп I Q потоков например через LAN8720 Модуль. Если бы вы такой проект в блоге написали было бы великолепно, а если нет-то хотя бы носом ткните в подобный проект с графическим отображением такого СДР приемника. А то что-то я подвис…Заранее спасибо!
Источник