Что такое sdr технология – Статья ‘Технология SDR в общих чертах’

Содержание

Software Defined Radio — как это работает? Часть 1 / Habr

Привет, Хабр.

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

За последние 100 лет радио изменилось настолько, что вряд ли тогдашний инженер вообще понял бы, как это работает.

Мы все же попробуем разобраться.

История


Идея software defined radio базируется на двух китах:
  • Передача широкополосного сигнала с радиоприемника в компьютер. Ширина обрабатываемой полосы может быть от 48КГц (звуковая карта ПК) до 50МГц (сверхбыстрый АЦП с передачей сигнала по Gigabit Ethernet или USB3.0).
  • Демодуляция сигнала — все то, что «обычный» радиоприемник (AM, FM, фильтры и пр) делает в «железе» — в SDR делается на компьютере, математическими алгоритмами. Сам радиоприемник конечно, все равно нужен, но только его «половина» — та часть, которая собственно принимает радиосигнал.

Как подсказали в комментариях, SDR в принципе может работать и автономно, без ПК, если вся «математика» делается прямо в устройстве. Однако это скорее экзотика, так что мы будем рассматривать приемники «обычные». Хотя последнее время новые модели приемников и трансиверов стали делаться по принципу SDR, что конечно радует.

Назвать точную дату, когда в продаже появились первые SDR-приемники, довольно сложно. Сама идея оцифровки радиосигналов звуковой картой существовала довольно давно — так например, декодировали RTTY или пейджинговые сообщения, но не было подходящих алгоритмов, чтобы объединить все это вместе.

Первая версия Winrad датируется 2007 годом, и выглядела она примерно так (можно обратить внимание на системные требования 🙂

Как можно видеть, интерфейс весьма минималистичный, но программа уже умела воспроизводить AM, FM, USB и LSB, и показывать спектр сигнала. По сравнению с шириной полосы обычного выхода для наушников любого приемника это был… ну почти прорыв. Разумеется, в проф. системах панорамные приставки существовали и раньше, но «простым смертным» оно было практически недоступно, а звуковая карта у каждого в ПК и так есть.

Типичным бюджетным решением для радиолюбителей были приемники Softrock — однодиапазонные приемники, содержание переключаемый кварц, смеситель и выход на звуковую карту.

Разумеется, это было только начало. Появились приемники с перестраиваемой частотой, а всего за 2 года Winrad заметно эволюционировал, и в 2010 году выглядел уже так:

Стали появляться и профессиональные решения, тогда же в 2010 появился Perseus SDR — приемник с 14-битным DDC АЦП, частотным диапазоном 10КГц-30МГц и шириной полосы пропускания 1.6МГц (в принципе, параметры вполне достаточные и на сегодня).

Цена приемника составляла 825Евро, что для тех лет было не так уж мало.

Кстати, страница http://microtelecom.it/perseus/ существует до сих пор, и на ней также висят скриншоты под XP, хотя продается приемник или нет, непонятно.

Начало было положено, дальше уже как говорится, дело техники — стали появляться разные модели, чипы стали дешеветь и так далее. Следующим прорывом в любительской технике стало появление приемника на чипе rtl-sdr. Сообщение с форума radioscanner за 2012 год можно процитировать дословно, как говорится, не убавить, не прибавить:

Оказалось, что DVB донглы на базе чипа Realtek RTL2832U, рекламируемые иногда также как поддерживающие FM, DAB(+), способны передавать на компьютер поток 8ми битных квадратур при частоте дискретизации около 3-х MSPS.

Принимаемый диапазон ограничивается использованным в определенной модели донгла тюнером, например у Elonics E4000 от 64 до 1700 МГц. Этот тюнер используется также в FunCube донгле, только с дополнительным МШУ.

По этому поводу основан проект. Уже успешно были приняты TETRA (~430 МГц) и сигналы спутника Турaйя (~1550 МГц), что для 8-ми битных квадратур весьма и весьма неплохо.

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

Первые 1-2 года толку от rtl-sdr было довольно мало — под них просто не было интересного софта. Потом появился SDR#, разные плагины, стало расти сообщество энтузиастов, и сейчас rtl-sdr наверное самый популярный (прежде всего, в силу цены) SDR-приемник. Современные версии RTL SDR V3 умеют принимать уже и КВ (хотя и с небольшой чувствительностью и динамикой), но при цене в 30$ и это весьма неплохо. Как работает RTL SDR на КВ, можно посмотреть на видео.

Виды SDR


Существующие SDR можно разделить на 3 вида:

— Уже устаревшие модели на базе звуковой карты — оцифровка сигнала в них происходит в ПК, а сигнал передается на линейный вход по аудиокабелю. Сейчас они давно сняты с производства, но иногда могут появиться на барахолке. Брать по большому счету, смысла никакого, разве что отдадут даром — цена хорошей звуковой карты превысит цену самого SDR. Интересующиеся «цифровой археологией» могут почитать сообщения на cqham за 2010 год о выборе звуковой карты для SDR.

— SDR, имеющие встроенный АЦП и передающие сигналы в ПК в цифровом формате. Это большинство современных устройств среднего ценового диапазона. Они построены по принципу гетеродинного приема, только после переноса частоты вместо НЧ-блока стоит АЦП. Такие приемники имеют ширину полосы пропускания от 2 до 10МГц, есть разные модели на разные частоты и диапазоны (rtl sdr, SDRPlay, Airspy). Недостаток любого супергетеродинного приемника — наличие зеркальных каналов приема — поскольку фильтры неидеальны, станции принимаются там где реально их нет. Даже если фильтры более-менее неплохие, сигналы мощных станций все равно могут «пролезать» и воспроизводиться в виде помех.

— DDC (direct down conversion) SDR. Это самая современная технология на сегодняшний день. Суть в том, что гетеродин здесь не нужен — сверхбыстрый АЦП с частотой оцифровки порядка 100млн семплов/с оцифровывает непосредственно входной сигнал с эфира, что позволяет (согласно теореме Котельникова/Шеннона) иметь прием до частоты, равной половине частоты дискретизации, т.е. в нашем примере до 50МГц. Битовый поток желающие могут прикинуть самостоятельно — на компьютер оно разумеется, не передается, а обрабатывается в быстродействующей ПЛИС прямо на плате, и нужная полоса (обычно до 6МГц) передается в компьютер. Такой приемник не имеет зеркальных каналов, и в нем все хорошо (кроме цены:).

Верхний предел частоты DDC-приемников обычно ограничен 30-50МГц, т.к. более быстродействующих АЦП в продаже либо нет, либо они стоят космических денег (кстати, сверхбыстрые АЦП вроде попадают в американские ограничения по поставке высокотехнологичных электронных компонентов в страны третьего мира, но это не точно). Их самого топового, что доводилось видеть в прайсах — Flex 6600 с 16bit 245.76Msps АЦП стоит порядка 4000$, т.е. им можно принимать в режиме DDC до частоты 122МГц. Вряд ли мы в скором времени увидим DDC-приемники до гигагерца, хотя хотелось бы. Есть ли что-то быстрее, например для военки — наверно есть, кто знает, напишите в комментариях.

Другой важный параметр — тип подключения. Большинство SDR подключаются по USB, но есть модели и с LAN-портом (Afedri, Colibri):

Это может быть удобно для организации удаленного приема или передачи — приемник или трансивер можно разместить на даче/в деревне, и использовать его из города. KiwiSDR делает даже готовые устройства, зайти на которое можно непосредственно через web-интерфейс. Свой приемник владельцы KiwiSDR даже могут «расшарить» другим, посмотреть список доступных устройств можно на https://sdr.hu.

Последний, но не менее важный параметр —

разрядность АЦП. Дешевые RTL SDR имеют всего 8бит АЦП, и этого мало, приемник легко перегружается сильными сигналами, ему крайне желателен аттенюатор и преселектор. SDRPlay имеют 12-бит АЦП, более дорогие модели имеют 14-бит, что достаточно для большинства случаев. Топовыми являются 16-бит АЦП, и в принципе, не каждая антенна способна выдавать диапазон сигналов, способных перегрузить такой приемник.

И наконец, о ценах. Их диапазон весьма варьируется, от 30$ за RTL SDR v3, 150$ за SDRPlay RSP2 до 600$ за ELAD FDM-S2. SDR-трансиверы (способные работать не только на прием, но и на передачу) дороже, SunSDR2 стоит порядка 1500$, FLEX-6400 стоит 2000$.

Отдельно стоит упомянуть платы для цифровой обработки сигналов. Это например, HackRF, LimeSDR, USRP, Red Pitaya. Эти устройства изначально предназначались для опытов с радиосигналами в пределах «рабочего стола», и на дальний прием просто не рассчитаны — ни регулируемого усилителя, ни аттенюатора, ни фильтров в схеме зачастую просто нет. Ловить что-то они будут, но весьма плохо, либо потребуется «доработка напильником». Они также могут работать на передачу, но с мощностью порядка 100мВт (где «м» это милли а не мега;), и зачастую никакого софта кроме пары DLL и SDK для них просто нет.

О том зачем все это нужно, преимуществах и недостатках SDR, и о том, как получить данные из SDR с помощью Python, будет рассказано во второй части.

habr.com

Software Defined Radio (SDR) / Habr

«Подобные технологии могут стоить несметного состояния.
Представьте управление любым устройством… лишь посылая команды при помощи радиоволн.
Это будущее, Ватсон.»

Шерлок Холмс (Sherlock Holmes)-2009

Трудно представить сегодняшний мир без компьютеров и различных электронных устройств. А ведь с момента изобретения транзистора прошло всего 56 лет. При том, что электричеством люди владеют примерно с конца 18 века — просто поразительно как быстро в нашу жизнь ворвались компьютеры, телефоны, интернет и прочие блага цивилизации, так привычные нам, но о которых — лет 30 назад человечество могло только мечтать. Миллионы людей получили в свои руки мощнейший инструмент для самореализации и самовыражения — ведь правда — вы когда нибудь задумывались — как здорово, что мы можем вот просто так взять и реализовать свою идею без каких либо особых материальных вложений? Компьютер позволил умным и талантливым людям реализовать себя, интернет дал доступ к петабайтам информации, позволил миллионам людей общаться друг с другом, находить единомышленников, учиться, осваивать профессии, зарабатывать — и всё это не вставая с кресла… В общем — хватит лирики, в статье речь пойдет о Программно определяемом радио — что это и как оно работает — узнаете под катом
Немного теории (ага — как же говорить о такой сложной штуке без неё)

Начнём, пожалуй, с того, что Максвелл написал свои знаменитые уравнения и анализируя их — предсказал существование радиоволн, которые позже подтвердил Герц. Уравнения эти нам говорят о том, что переменное магнитное поле порождает электрическое, а переменное электрическое — магнитное, образуя электромагнитную волну, которую один раз пустил, выключил передатчик, а волна всё живёт и улетает в пространство. Электрическое поле может породить не только переменное магнитное, но еще и заряд, что следует из уравнения Максвелла (Закон Гаусса)

Заряд порождает поле, если мы возьмем 2 заряда на некотором расстоянии друг от друга и один из них начнём дергать с какой то частотой, то через некоторое время — с такой же частотой начнет дергаться и второй — тут два заряда ведут себя идентично двум поплавкам в воде — если мы хотим передать информацию с одного берега озера на другой — помещаем на обоих сторонах по поплавку и начинаем за один из них дергать — от него начнет распространяться волна, которая через некоторое время дойдет до другого берега и покоившийся до этого на другом берегу поплавок начнет колебаться. В случае с водой — мы можем увидеть саму волну. Электрическое поле — вообще говоря непонятно что такое — его нельзя увидеть, нельзя потрогать, это некая абстракция, при помощи которой всё удобно объясняется, а поскольку увидеть и потрогать мы абстракцию не можем — о её наличии мы можем судить только по действию поля на заряды — по аналогии с поплавками — мы можем смотреть только на поплавок. Если на озере нет ветра — поплавок покоится, когда волны нет, но в реальности такого почти не бывает — дует ветерок — по воде идет легкая рябь, где то плеснула водой рыба или лягушка, рядом с нашим поплавком пристроился еще кто то и начинает дергать им, передавая свою информацию, или кто то кинул камень в воду и от всего этого идут волны, они отражаются от берегов и камней, складываются, усиливают друг друга и ослабляют и обо всей этой композиции событий мы можем судить, лишь смотря на поплавок. Добро пожаловать в радио эфир.
«Мир» «Ленин» «СССР» или — как отправить послание внеземным цивилизациям

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

Ну что — возьмём металлический штырь, распилим в центре и вставим в центр генератор переменного напряжения — во время первого полупериода — на одном штыре будет плюс, на другом 0. Электроны, которые находятся в любом металле и только и ждут, чтобы их пнули — тут же побегут к плюсу, пока не скомпенсируют его и не сделают и на этом штыре 0, но тут наступает второй полупериод и электроны начинают перебегать с одного штыря на другой, проходя через генератор напряжения. Генератор по центру палки конечно хорошо, но не очень удобно( генератор хочется перепаивать, а на крышу вечно лазить неохота). Не проблема — подцепляем к палкам два провода и уводим к себе в квартиру, при этом — провода это тоже антенны, ведь по ним же бегают заряды в пространстве, но провода находятся очень близко и заряды бегут в разные стороны, волны, генерируемые каждым проводом встречаются в противофазе и убивают друг друга, так что рабочей частью остается только штырь и всё выглядит так, будто заряды сами по себе бегают с одного конца антенны на другой. Итак — с передачей разобрались — для приема нам нужно сидеть и ждать, пока придет волна и начнет дергать наши электроны в антенне, те, перебегая с одного конца на другой — пробегут через детектор, у детектора есть какое то сопротивление, на этом сопротивлении ток преобразуется в напряжение, а напряжение мы уже можем мерить и усиливать(на самом деле в реальных схемах далеко не так, но не буду вас грузить такими вещами как волновое сопротивление и согласование линии, вообще это все довольно сложно, так что считайте пока, что создаваемый волной ток пробегает через сопротивление детектора и преобразуется в напряжение) — Итак — мы научились принимать и передавать радио волны — Mission Completed.
Level 2 — Модуляция

Смотреть на дергающиеся в конвульсиях поплавки конечно весело и интересно, но быстро надоедает и хочется поговорить с любимой бабушкой, а мы пока и умеем, что отправлять неосмысленную волну в космос — для того, чтобы передать какую то информацию при помощи волны — её нужно промодулировать — например мы можем дергать поплавок с маленькой амплитудой — это будет соответствовать логическому 0, с большой амплитудой — логической 1. Или можем дергать чаще или реже — главное договориться — что означают наши коды. Теперь немного простой(и не очень) математики — существует 3 типа модуляции:
Амплитудная
Частотная
Фазовая
Картинки можно посмотреть вот в этой статье:
Модуляция а я пожалуй остановлюсь на кое каких моментах из математики, без которых — на мой взгляд понять что то на нормальном уровне — проблематично.
Итак — мы хотим передать какой то меняющийся во времени сигнал

который имеет спектр

и вообще говоря — желательно бы иметь возможность этот спектр перемещать, ведь если мы все будем использовать одну и ту же полосу частот — спектры разных радиостанций будут перекрываться и информация искажаться. Есть технологический фон (например 50 герц от электросети), шум вида 1/f и прочее — в низкочастотной области нам передавать очень неудобно. Кроме того различные частоты имеют различные особенности распространения, что и рассказывается в вышеупомянутой статье. Имея кое какой уровень математической культуры — можно заметить, что если домножить начальную функцию на комплексную экспоненту — спектр сигнала сдвинется на частоту, которая стоит в показателе экспоненты

спектр сигнала после домножения получается следующим:

Но к сожалению комплексная экспонента — математическая абстракция, реальных сигналов, удовлетворяющих нашим нуждам не существует, зато существует косинус приходится довольствоваться этим — домножаем сигнал на косинус

делаем замену по формуле Эйлера


Подставляем, немного преобразуем и получаем нечто такое

И окончательно

Получается, что исходный спектр разделился на два — один уполз вправо, второй влево по оси частот, причем тот, который попадет в отрицательную область частот отражается относительно 0 и в итоге мы получаем такую картинку:

тут есть небольшое несоответствие написанным формулам — дело в том, что я домножал косинус просто на сигнал, а домножают как правило на 1 + mx(t), где m — некоторый коэффициент — тогда получается, что к двум симметричным спектрам еще добавляется несущая частота
Передавать АМ сигнал в чистом виде — нерационально из за избыточности — он занимает в 2 раза большую полосу частот, чем исходный спектр — место в полосе частот дорого, поэтому одно из боковых полос вместе с частью несущей подавляют фильтром —

несущая сама по себе не несет в себе никакой информации — поэтому не страшно если мы её уменьшим, даже сэкономим на мощности передатчика немного.
Ну вот — теперь мы умеем передавать полезный сигнал в нужной нам полосе частот. Главное отличие модуляций друг от друга — помехоустойчивость — амплитудная модуляция передаёт исходный спектр как есть только в другой полосе частот, а в той полосе частот, куда мы двигаем исходный спектр — есть свои помехи, которые суммируются с полезным сигналом и его портят. Кроме того — амплитуда сигнала будет меняться в зависимости от расстояния до передатчика, если есть здания — будут возникать отражения, один и тот же сигнал мы будем принимать с задержкой и слышать эхо. Частотная модуляция занимает бОльшую полосу частот в спектре и за счет этого обладает высокой помехоустойчивостью — если на пальцах — мы размазываем полезную информацию по широкой полосе частот и если на какой то частоте придет помеха, которая испортит сигнал, то она испортит лишь его небольшую часть, потому что сигнал размазан по спектру. На самом деле про модуляции и прочее можно сказать очень много, особенно про передачу цифровых сигналов, но там очень много математики и чтобы особо не пугать — в данной статье более подробно раскрывать вопрос не буду.
Суть технологии SDR

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

но поскольку мы имеем такую штуку как компьютер — мы можем не думать — как бы нам воткнуть пару транзисторов, так чтобы выходной сигнал зависел от входного по нужной нам зависимости — мы просто берем и программируем нужную нам формулу. Только вот нам бы получить сигнал в цифровом виде, чтобы было над чем работать — за это и отвечает SDR. Оцифровывает аналоговый радио сигнал (или наоборот делает аналоговый из цифрового если речь идет о передаче). Как мы помним — сигнал мы передаем в высокочастотной области, а для оцифровки сигнала нам нужно иметь АЦП, который согласно теореме Котельникова должен иметь частоту дискретизации минимум в два раза больше максимальной частоты сигнала. Хотя современные АЦП уже позволяют оцифровывать радиочастотный сигнал напрямую — это немного неразумно — имея возможность перемещать частоту как нам хочется — ставить супердорогую молотилку на 2 ГГц, которая будет оцифровывать сигнал напрямую. Вспомним — как мы вообще получили высокочастотный спектр — домножили на косинус и спектр уехал вверх и вниз на частоту этого косинуса. А что нам собственно мешает сделать то же самое еще раз? Домножаем сигнал с антенны на косинус — снова спектр делится на 2 — один ползет в область низких частот, другой — в область высоких, ВЧ спектр мы обрезаем фильтром, а НЧ — оцифровываем, хоть АЦП звуковой карты — теперь, когда мы можем оцифровывать любую частоту — скорость АЦП влияет только на ширину, оцифровываемой полосы. Ну а дальше — после оцифровки мы уже можем создать свой приемник при помощи программирования — не нужны даже знания радиотехники, только математика, забота радиотехников — чтобы сигнал попал в компьютер. Собственно в следующих статьях, если тема вызовет интерес — собираюсь рассказать, как о железной части SDR приемника, так и о программной, можно еще о современных способах передачи и кодирования информации. Ну и в заключение — вот так вот примерно работает мой радиолюбительский SDR — Softrock RX/TX Ensemble II, который я получил в подарок, использующий в качестве АЦП — звуковую карту ПК, записать своё видео работы я не стал, поэтому выкладываю найденное на просторах ютуба — мой приемник работает точно так же, первая фотка в статье — он и есть

habr.com

НИИ Автоматики, телемеханики и метрологии

Введение

Как известно, Герц не предвидел возможности применения электромагнитных волн в технике. В самом деле, было трудно увидеть в слабых искорках, которые Герц рассматривал в лупу, будущее средство связи, перекрывающие ныне космические расстояния до Венеры и Марса и позволяющее управлять самоходным аппаратом на Луне. Даже человеку с неистощимой фантазией, знаменитому писателю Жюлю Верну не удалось предвидеть радиосвязь, и герои его романа “Плавучий остров”, написанного после опытов Герца, не знают способов беспроволочной связи.

ИСтория открытия радио, в которой сплелись имена многих исследователей разных стран, еще раз подтверждает важный закон истории науки, о котором писал Ф. Энгельс, об этом говорит его изречение: «Если время для открытия созрело, то это открытие должно было сделано!»
Открытие радио подтвердило справедливость теории Максвелла высшим критерием истины — практикой. Теория Максвелла выдвинула перед физикой ряд острых и глубоких вопросов, решение которых привело к новому революционному этапу в истории физики.

Сегодня же современный мир невозможно представить без радиосвязи, телевидения, радиовещания, радионавигации. В основе этих отраслей лежат принципы генерации и распространения электромагнитных волн в пространстве. Радиотехнические методы и устройства применяются в автоматике, вычислительной технике, астрономии, физике, химии, биологии, медицине.
Современные ноутбуки, сотовые телефоны, КПК и прочие мобильные устройства имеют множество дополнительных функций, позволяющих поддерживать связь друг с другом, выходить в шнтернет, обмениваться информацией, слушать радио, управлять различными устройствами и т.п.

Зачастую одно и то же устройство оснащено поддержкой нескольких стандартов и методов передачи, причём как проводных, так и беспроводных. Однако для корректной одновременной работы нескольких приложений необходимо, чтобы информация передавалась по нескольким параллельным каналам.
Сейчас это реализуется с помощью многоядерных процессоров или на нескольких кристаллах. Но есть более подходящий путь: использование программно-конфигурируемого радио — Software Defined Radio (SDR).

Все его настройки и параметры задаются программно, а само устройство помещается на одном кристалле, имеет очень малый размер и значительные функциональные возможности.

Глава 1. Технология SDR

«Прогресс в развитии технологии построения устройств цифровой обработки сигналов привел к появлению ряда новых концепций выполнения радиооборудования. Определения этих концепций, их трактование, зачастую отличаются у различных групп исследователей.»(5)

«Разработчики и производители беспроводного оборудования уделяют много внимания технологии программно-управляемого радио (Software Defined Radio — SDR), позволяющей изменять эксплуатационные параметры радиооборудования на уровне ПО. Первая лицензия на использование данной технологии выдана в начале 2006 года ирландским государственным органом в сфере регулирования связи.»(5)

Устройства связи, в которых предусмотрена возможность изменения рабочего диапазона, типа модуляции, стандарта связи и ряда других параметров, можно назвать настоящей панацеей в нынешней ситуации, когда мы имеем несколько различных стандартов и технологий, нацеленных на разные приложения, и массу зачастую несовместимого радиооборудования. Технология SDR призвана решить проблемы несовместимости, она позволяет создавать унифицированные многофункциональные беспроводные терминалы с большим сроком жизни.

Существует так же несколько определений SDR технологий, которые можно встретить в информационных ресурсах.

На Форуме разработчиков SDR можно найти и совсем короткое, но емкое определение:

  • «Оборудование SDR – это элементы беспроводной сети, режимы работы и параметры которой могут быть изменены или расширены уже после изготовления элементов с помощью программного обеспечения.»(4)


Определение шнститута инженеров по электротехнике и электронике:

  • В программно определяемом радиооборудовании РЧ параметры функционирования, могут быть установлены или изменены при помощи программного обеспечения и/или оборудования, с помощью которого это достигается. Это касается диапазонов частот, типа модуляции, выходной мощности, но не ограничивается только этими параметрами.
  • Концепция SDR применима ко многим технологиям радио и стандартам. В мобильном оборудовании SDR методы применимы и к передатчикам, и к приемникам. Концепция не относится к изменениям параметров режима работы, которые происходят в течение нормального предустановленного (pre-installed) и предопределенного (predetermined) функционирования радиооборудования, соответствующего системным техническим требованиям или стандарту.


Определение SDR, данное Федеральной комиссией связи FCC (США):

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

Рис.1 Обобщенная структура SDR радиооборудования. (5)


Такая концепция выполнения радиооборудования является альтернативой традиционным многодиапазонным и многомодовым устройствам, в которых для каждого диапазона, стандарта или технологии используются отдельные специализированные компоненты или даже тракты РЧ блока.

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

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

Таким образом, программно-определяемое радиооборудование обладает рядом характерных свойств. Основной отличительной чертой такого радиооборудования является то, что программируемость устройств, реализованная программно (software programmability), в отличие от реализованной аппаратно (hardware programmability), позволяет изменять основные параметры и характеристики радиооборудования наиболее простым образом.

«За последние пять — семь лет количество абонентов сотовой связи увеличилось в сотни раз, а сама сотовая связь превратилась из роскоши в область услуг с жесточайшей конкуренцией. За это же время сменилось поколение сотовой связи (кто из неспециалистов сейчас вспомнит, например, про стандарт AMPS?). Более того, уже разработаны и активно внедряются системы связи третьего поколения (3GPP и 3GPP2).»(2)

Ресурс дорогостоящего оборудования, такого как базовые станции сотовой связи, на сегодняшний день существенно превышает срок их конкурентоспособности по предоставляемым услугам и параметрам. В то же время модернизация уже развернутых систем связи практически невозможна, поскольку требует полной замены существующего оборудования. Разрабатываемые в рамках тех или иных стандартов улучшенные алгоритмы обработки сигнала и новые виды сервиса не могут быть внедрены по причине их низкой окупаемости. Аналогичный эффект — в случае перехода от одного стандарта связи к другому. Существующие приемопередатчики разработаны, как правило, для работы с сигналами, соответствующими одному определенному стандарту связи. При необходимости работы с сигналами других стандартов пользователь вынужден полностью менять оборудование. Конкурентные преимущества в этих условиях получают системы с наибольшей гибкостью.

Технология SDR (Software Defined Radio) позволяет решать такие проблемы и позволяет «малой кровью» модернизировать одну из наиболее сложных и дорогих частей приемо-передающей аппаратуры — ее трансивер. Трансивер, разработанный в концепции SDR, обеспечивает поддержку широкого спектра стандартов связи. Перепрограммирование трансивера для его адаптации под другой стандарт связи не влечет за собой изменения в аппаратной части. Отличительными чертами таких устройств являются:

  • «Сверхширокополосная и малошумящая радиочастотная часть, обладающая большим динамическим диапазоном;
  • Высокоскоростной с большим динамическим диапазоном тракт аналого-цифрового преобразования;
  • Обладающий большой вычислительной мощностью сигнальный процессор и специализированный цифровой тракт фильтрации.»(2)


ИСпользование SDR технологии обусловлено тем, что она позволяет принимать и передавать сигналы с использованием разных частот и стандартов, выбор которых зависит от самых различных факторов. Эта технология поддерживается как производителями оборудования, так и поставщиками услуг систем связи и позволяет устранить противоречие между ними: производители используют стандарты, четко описывающие систему и позволяющие им производить крупные партии стандартных устройств, поставщики же не любят эти стандарты, поскольку стандарт делает затруднительным дифференциацию услуг. SDR технология позволяет
производить стандартные устройства и делать эти устройства уникальными программным способом. При этом конечный пользователь получает большую «мобильность», благодаря возможности использования мультистандартных мобильных станций, в которых переключение с одного стандарта на другой происходит автоматически без участия последнего.

Одной из составных частей концепции SDR является использование цифровой ПЧ (промежуточной частоты) для обеспечения режимов Digital IF на прием и Direct IF на передачу, и перепрограммируемых устройств частотной селекции сигнала.

«Приемники (как и передатчики) с цифровой ПЧ являются на настоящий момент быстро развивающейся областью, находящей применение в современных базовых станциях 2-3 поколения. Использование цифровой ПЧ стало реальностью благодаря появлению высокоскоростных АЦП и ЦАП с большой разрядностью и высокой линейностью, а также высокопроизводительных устройств цифровой обработки сигналов. Произошедший в последние годы прорыв в технологии производства электронных компонентов и в первую очередь высокоскоростных сигнальных процессоров подстегнул интерес к этой тематике.»2

Важность использования цифровой ПЧ в идеологии построения приемника тесно связана с удешевлением аналоговой его части. Если параметры цифрового фильтра могут быть улучшены за счет повышения его порядка и разрядности, то для аналогового фильтра ситуация совсем иная. Параметры цифровой фильтрации и гетеродинирования на практике обычно ограничены здравым смыслом разработчика, в то время как для аналоговых устройств ограничения чисто физические, такие как самые разнообразные шумы и нелинейности. Именно этим обусловлено использование нескольких гетеродинов и поэтапной аналоговой фильтрации.

SDR включает аппаратную и программную части. Аппаратная состоит из трех функциональных блоков

Рис.2 Схема аппаратной части SDR. (1)


«RF-секция, IF-секция и секция базовой станции. RF-секция (называемая также RF front-end) включает только аналоговые аппаратные модули (в то время как две другие целиком содержат цифровую аппаратуру) и отвечает за передачу/прием радиосигнала. IF-секция отвечает за цифро-аналоговое преобразование и модуляцию/демодуляцию сигнала.»(1)

Секция базовой станции, содержащая протокол второго уровня (Layer 2, согласно семиуровневой модели OSI), выполняет базовые операции связи: установку сеанса связи, уравнивание, хоппинг, восстановление тайминга, корреляцию и т. д. В программно-управляемом радио протокол второго уровня и операции модуляции/демодуляции реализованы программно.

Архитектура программной части изображена на схеме:

Рис.3 Схема программной части SDR. (1)


По сути, ее функция сводится к распределению ресурсов аппаратных средств для их использования различными приложениями связи и трансляции протокола второго уровня вышестоящим протоколам (WAP, TCP/IP).

«Устройства нулевого уровня поддержки (свидетельствующего о полном отсутствии поддержки SDR) представляют собой чисто аппаратные решения, отсюда и название — Hardware Radio. Любое изменение функциональности таких устройств невозможно без изменения их конструкции.»(1)

«Первый уровень сформирован так называемым программно-управляемым оборудованием (Software Controlled Radio). Эти устройства характеризуются ограниченными функциями программного управления. Тип модуляции или рабочий диапазон остаются неизменными. Использование нескольких программно-управляемых приемопередатчиков в одном устройстве позволяет организовать поддержку многостандартности. В качестве примера можно привести двухстандартные (GSM/CDMA) мобильные телефоны, а также двухдиапазонные точки доступа Wi-Fi.»(1)

«Второй уровень (Software Defined Radio) составляют собственно SDR-устройства. В них с помощью ПО можно управлять такими параметрами, как ширина полосы пропускания, тип модуляции, безопасность (например, хоппинг) в широком диапазоне частот. В настоящее время отдельные элементы, относящиеся в этому уровню, используются в базовых станциях операторов беспроводной связи. Ожидается, что ведущие производители оборудования широкополосного беспроводного доступа реализуют SDR в своих WiMAX-системах. В результате не возникнет проблем, например, с использованием оборудования, сертифицированного для диапазона 5,8 ГГц и даже, возможно, свыше 6 ГГц. В более отдаленные планы входит реализация SDR в абонентских терминалах.»(1)

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

«Есть и четвертый уровень — Ultimate Software Radio (полностью программируемые радиоустройства). По определению SDR Forum, оборудование, соответствующее данному уровню, допускает полный контроль и управление трафиком, поддерживает широкий диапазон частот, радиоинтерфейсов и приложений. Способно мгновенно переключаться с одного радиоинтерфейса на другой, использовать систему GPS для отслеживания местоположения пользователя, обеспечивать трансляцию видео на мобильный терминал с ближайшей вещательной станции, передавать спутниковый сигнал и т. д.»(4)

В приемной аппаратуре построение дешевого и малошумящего аналогового тракта возможно только за счет ослабления требований по фильтрации в нем сигнала и обеспечении всей необходимой избирательности в цифровом тракте. С учетом мультистандартного характера проектируемого устройства, которое к тому же может быть многоканальным, использование цифровой ПЧ представляется единственно возможным вариантом обработки принимаемого сигнала.

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

Таким образом, использование технологии SDR обусловлено тем, что она позволяет обрабатывать и передавать сигналы с использованием разных частот и стандартов, выбор которых зависит от самых различных факторов.

Глава 2. Основные особенности SDR

  1. «Многополосность. Для решения ряда задач требуется одновременная работа на нескольких частотах. Обычно для этого используют несколько приёмников с разными диапазонами. Программируемое радио может заменить их и работать как на одной полосе частот, так и на нескольких одновременно.» (7)
  2. «Многоканальность. SDR может работать одновременно на нескольких частотах, например, передавать данные и голос на двух разных несущих частотах.»(7)
  3. «Способность одновременной работы в разных стандартах (AM, FM, GMSK, CDMA и др.).»(7)
  4. «Возможность передавать данные с разной скоростью, например, при одно временной работе с двумя сигналами в разных стандартах или при обработке частей одного и того же сигнала (многоскоростной фильтр).»(7)
  5. «Полоса пропускания программируемого радио определяется цифровыми фильтрами, поэтому её можно легко менять. Более того, цифровые фильтры не реагируют на некоторые помехи, а также могут компенсировать искажения, вносимые линией передачи.»(7)


Ниже на рис. 4 и 5 соответственно иллюстрируются основные недостатки традиционного аналогового подхода и достоинства использования цифрового SDR приемника для построения радиоприемных каналов.
Принятые на рис. 4 и рис. 5 сокращения: ВЧ — высокая частота; ПЧ — промежуточная частота; НЧ — низкая частота.

Рис.4 Традиционные аналоговый подход. (7)

Рис.5 Цифровой SDR приемник. (7)


Недостатки традиционного аналогового приемника: требуется точная настройка; чувствительный к температуре и разбросу параметров компонентов; нелинейные искажения; сложно строить перестраиваемые фильтры и фильтры с подавлением более 60ДБ.

Достоинства SDR приемника: не требует настройки; низкая чувствительность к температуре и разбросу параметров компонентов; простая реализация перестраиваемых фильтров с подавлением более 100Дб; высокая точность и широкий диапазон перестройки фазы и частоты гетеродина.

Глава 3. Перспективы SDR технологии

«Над разработкой SDR сейчас работают IMEC, Altera и BittWar, ESD, Nallatech, Samsung, NXP Semiconductors, T3G Technologies и другие компании.»(7)

«В центре IMEC уже разработан прототип чипа SDR, который имеет всего одну полосу пропускания и поддерживает WiFi, WiMax, мобильное телевидение и 3GPP LTE. Переключение и настройка диапазонов передачиосуществляется только программным методом. Это не самое удачное решение, но уже первый шаг на пути к настоящему SDR.»(7)

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

Глава 4. Технологии SDR на службе у разработчиков систем

В телекоммуникационных технологиях продолжается стремительный переход от аналоговых методов передачи и обработки сигналов к цифровым. Все больше функций современных радиосистем реализуются посредством программного обеспечения (ПО), что приводит к появлению радиооборудования, функциональность которого задается и изменяется программно. Речь идет о технологии
SDR (Software-Defined Radio, программно определяемое радио). До недавнего времени с этой технологией связывали исключительно телекоммуникационные приложения. Однако специалисты компании «Центр АЦП» создали SDR-платформу, позволяющую строить на ее основе не только телекоммуникационное, но и контрольно-измерительное оборудование.

«В SDR-оборудовании форма модулированного радиосигнала задается в ПО. Формируется цифрой сигнал, который затем с помощью широкополосного ЦАП преобразуется в аналоговый на промежуточной частоте (ПЧ). Далее сигнал ПЧ посредством преобразования вверх превращается в высокочастотный сигнал. В приемнике все происходит в обратном порядке. Широкополосный АЦП преобразует в цифровой вид множество узкополосных сигналов, попадающих во входной тракт приемника. В соответствии со встроенным ПО приемник извлекает, преобразует вниз и демодулирует сигналы каждого канала, т.е. технология SDR позволяет изменять эксплуатационные параметры радиооборудования на уровне ПО.»(6)

«Технология SDR использует комбинацию методов, затрагивающих аппаратную и программную части. Аппаратная часть включает многодиапазонные антенны и радиочастотные преобразователи; широкополосные ЦАП и АЦП; а обработка сигналов ПЧ, демодулированных сигналов и результирующего цифрового потока происходит с помощью программируемых процессоров общего назначения. Традиционный аналоговый приемник, где АЦП преобразует сигнал с выхода аналоговых квадратурных каналов, имеет следующие недостатки: необходимость точной настройки; чувствительность к температуре и разбросу параметров компонентов; нелинейные искажения; сложность построения перестариваемых фильтров и фильтров с подавлением более 60 дБ. Но благодаря развитию современной полупроводниковой элементной базы, в первую очередь – АЦП и ЦАП, теперь можно преобразовывать сигнал непосредственно с выхода промежуточной частоты. Достоинства SDR-приемника: не требует настройки; низкая чувствительность к температуре и разбросу параметров компонентов; простота реализации перестраиваемых фильтров с подавлением более 80 дБ; высокая точность и широкий диапазон перестройки фазы и частоты гетеродина. Технология SDR традиционно используется в специальных областях телекоммуникаций (например, для создания систем связи специального назначения). Однако ее с успехом можно применять для весьма широкого круга задач, в том числе – для создания высокочастотного контрольно-измерительного оборудования.»(6)

«Яркий представитель SDR-устройств – плата DSP5016-1402 компании «Центр АЦП». Она предназначена для работы с сигналами промежуточной частоты в диапазоне от 3 до 250 МГц. Плата включает АЦП с частотой дискретизации 200 МГц и разрешением 14 бит, устройство цифровой обработки сигнала и интерфейса связи с компьютером. В качестве АЦП использован преобразователь фирмы Texas Instruments ADS5546, обладающий оптимальным сочетанием динамических характеристик и частотных параметров (рис.2). После преобразования данные поступают в модуль цифровой обработки (цифровой SDR-приемник). Он выполнен на ПЛИС и специализированной СБИС. Цифровой приемник с двумя независимыми каналами выполняет квадратурное демодулирование, перенос заданного сигнала на нулевую несущую частоту (удаление высокочастотной несущей с выделением модулированного сигнала), фильтрацию и прореживание (децимацию) с программируемыми параметрами. Непрерывная квадратурная демодуляция выполняется в полосе частот до 30 МГц.»(8)

Рис.6 Тех. характеристики схемы. (6)

Рис.7 Функциональная схема.(6)


Сигнал после первичной обработки в цифровом приемной обработке во внешнем устройстве (компьютере). Для передачи непрерывного цифрового потока IQ внешнему устройству предусмотрен интерфейс USB 2.0 (сигнал с полосой от 30 кГц до 3 МГц), а также цифровой порт вывода (полоса от 30 кГц до 30 МГц).

Высокая частота дискретизации 200 МГц с мгновенным линейным динамическим диапазоном 87 дБ обеспечивают минимальное время измерения параметров сигнала во всей полосе частот и минимальное число пораженных частот, а также позволяет работать с широкополосными сигналами. Кроме того, благодаря высокой частоте дискретизации достигаются высокие соотношения сигнал/шум в узкой полосе частот за счет дополнительной цифровой фильтрации.

«Мгновенная широкая полоса анализа и большой динамический диапазон позволяет работать с многочисленными сигналами в линейном диапазоне. Например, если в полосе имеется 1000 узкополосных сигналов, то можно, не опасаясь перегрузки, работать с любым из них (при условии, что динамический диапазон суммы этих сигналов не превышает 87 дБ). Конечно, для отдельно взятой задачи аппаратные средства платы могут оказаться избыточными. Но это оправданно, поскольку на базе единой SDR-платы DSP5016-1402 можно строить разнообразные приемники, спектроанализаторы, селективные вольтметры, другие измерительные приемные устройства и т.п. Для этого пользователю достаточно поменять программное обеспечение. Плату можно использовать и как OEM-модуль для широкого ряда приборов и систем радиотехнического назначения.»(8)

Заключение

В будущем системы связи будут совмещать множество технологий передачи информации. С точки зрения пользователя это означает, что все возможные операции можно будет проводить с помощью одного и того же устройства. Для этого нужна поддержка всех скоростей работы, типов модуляции, физических полос пропускания и несущих частот в одном устройстве.

Возможно, потребуется наличие нескольких антенн и передатчиков для работы параллельных приложений. Такие системы уже начинают появляться. Однако проблем на пути к системам программно-определяемой связи остаётся ещё очень много.

Список литературы

  1. Web: Статья «Умное Радио» 2006г. С. Прокопенко. http://citcity.ru/13782/
  2. Web: Статья «»Мультифлекс» — технология SDR для радиосвязи и радиолокации» 2005г. http://multicore.ru/index.php?id=20
  3. Web: Статья «Технология SDR или Умное радио» 2006г. http://web.geowap.mobi/703-tehnologia-sdr.html
  4. Web:SDR-Forum http://www.wirelessinnovation.org/mc/page.do;jsessionid=967A985721780597469FE3B4130C1DB9.mc0?sitePageId=98428
  5. Web: Статья «Программно определяемое радиооборудование
  6. SDR (Software Defined Radio)» 2007г. http://www.rfdesign.ru/multi/sdr.htm
  7. Журнал «Электроника: Наука, технология, бизнес», статья «Технологии SDR на службе у разработчиков систем», П. Руднев, 2009г.
  8. Журнал «Электронные Компоненты №9», статья «SDR — ПРОГРАММНО- КОНФИГУРИРУЕМОЕ РАДИО», Е. Клюева, 2008г.
  9. Web: Портал: «СОВРЕМЕННЫЕ ЦИФРОВЫЕ ТЕХНОЛОГИИ» http://www.centeradc.ru/produkcija/platy-s-cifrovoj-obrabotkoj-signala/dsp5016-1402

www.niiatm.ru

Делаем первые шаги с RTL-SDR — «Хакер»

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

Все материалы сюжета:

Уверен, для многих из вас, как и для меня совсем недавно, происходящее в радиоэфире было настоящей магией. Мы включаем телевизор или радио, поднимаем трубку сотового телефона, определяем свое положение на карте по спутникам GPS или ГЛОНАСС — и все это работает автоматически. Благодаря RTL-SDR у нас появился доступный способ заглянуть внутрь всего этого волшебства.

Как уже говорилось, RTL-SDR — это целое семейство дешевых ТВ-тюнеров, способных выполнять функцию SDR-приемника. У этих игрушек разные названия и бренды, но объединяет их одно — все они построены на чипсете RTL2832. Это микросхема, содержащая два 8-битных АЦП с частотой дискретизации до 3,2 МГц (однако выше 2,8 МГц могут быть потери данных), и интерфейс USB для связи с компьютером. Эта микросхема на входе принимает I- и Q-потоки, которые должны быть получены другой микросхемой.

R820T и E4000 — это две наиболее удобные для SDR микросхемы, реализующие радиочастотную часть SDR: усилитель антенны, перестраиваемый фильтр и квадратурный демодулятор с синтезатором частоты. На рисунке — блок-схема E4000.

Блок-схема тюнера E4000

Разница между ними следующая: E4000 работает в диапазоне ~52–2200 МГц и имеет немного большую чувствительность на частотах менее 160 МГц. Из-за того что производитель E4000 обанкротился и микросхема снята с производства, остающиеся тюнеры покупать все труднее, и цены на них растут.

R820T работает в диапазоне 24–1766 МГц, однако диапазон перестройки внутренних фильтров сильно затрудняет работу R820T выше 1200 МГц (что делает невозможным, например, прием GPS). На данный момент тюнеры на этой микросхеме легко купить, и стоят они около 10–11 долларов.

Также продаются тюнеры на микросхемах FC0012/FC0013/FC2580 — у них очень серьезные ограничения по частотам работы, и лучше их не покупать. Узнать, на какой микросхеме сделан тюнер, можно в описании товара или спросив у продавца. Если информации по используемым чипам нет — лучше купить в другом месте.

 

Покупка

В розничных магазинах их не найти, поэтому нам поможет aliexpress.com. Пишем в поиске R820T или E4000, сортируем по количеству заказов, внимательно читаем описание (там должно быть явно написано, что тюнер использует микросхемы RTL2832 + E4000 или RTL2832 + R820T), и можно заказывать. Присылают обычно почтой России, в течение 3–6 недель.

В комплекте с тюнером будет и крошечная антенна — ее, конечно, лучше заменить. Хорошие результаты можно получить, используя обычную комнатную телевизионную антенну МВ-ДМВ «рога». В описании товара также нужно обратить внимание на разъем антенны — и либо искать тюнер с обычным телевизионным разъемом, либо расчехлять паяльник и делать переходник / перепаивать разъем. При пайке очень легко убить устройство статическим электричеством, так что заземляйтесь.

Типичный приемник на основе RTL2832 — EzTV668

На многих тюнерах рядом с коннектором антенны отсутствуют защитные диоды (в данном случае U7) — их можно либо впаять самому (один к земле, один от земли — я, например, впаял 1N4148), либо оставить как есть, и антенну голыми руками не трогать и всячески беречь от статического электричества.

 

Софт и API для работы с RTL2832

rtl_sdr

Rtl_sdr – драйвер, обеспечивающий «нецелевое» использование данных с TV-тюнеров на базе rtl2832. В Windows вам придется заменить драйвер тюнера по умолчанию на WinUSB с помощью программы Zadig.

Rtlsdr.dll требуют все SDR-программы, и зачастую эта DLL уже идет в поставке софта, использующего RTL2832.

Rtl_sdr также можно использовать и через консольную утилиту, чтобы протестировать тюнер или слить кусок эфира в файл:

rtl_sdr -f 1575520000 -g 34 -s 2048000 out.dat

При дальнейшей обработке нужно помнить, что в файле байты I- и Q-потоков идут поочередно.

SDRSharp

SDRSharp — одна из популярных и простых в использовании программ под Windows для работы с RTL2832 (и некоторыми другими SDR). При старте нужно выбрать RTL2832, нажав на кнопку Front-end. Вводить частоту руками нужно в поле Center.

Слева вверху — выбор типа демодулирования. FM используется для обычного FM-вещания и аудио в аналоговом телевидении, AM — в радиостанциях на низких частотах и переговоров самолетов, NFM — в рации.

Прием переговоров по рации на частоте 446 МГц в SDRSharp

Многие внешние декодеры цифровых передач работают через «аналоговый» интерфейс — то есть ты запускаешь SDRSharp, устанавливаешь программу Virtual Audio Cable (программа платная), настраиваешь SDRSharp, чтобы он декодированный звук выводил в VAC, и в системных настройках Windows указываешь VAC как устройство записи по умолчанию. В результате внешняя программа-декодер будет получать звук от SDRSharp.

Таким образом подключаются декодеры P25 раций (милиция), данных с метеоспутников, пейджеров, навигационных сообщений самолетов (ADS-B) и многого другого (об этом ниже). Такой необычный способ подключения сложился исторически — раньше к компьютеру подключали аналоговые приемники. Со временем декодеры дописывают, чтобы они напрямую работали с RTL-SDR.

GNU Radio

GNU Radio — настоящий зубр SDR. Это программный пакет, предназначенный для обработки данных, полученных от SDR-приемника, в реальном времени. Являющаяся стандартом де-факто для всех более-менее профессиональных забав в области радио, программа построена на модульной основе с учетом парадигмы ООП. Это настоящий радиоконструктор, в котором роль элементов отведена функциональным блокам: фильтрам, модуляторам/демодуляторам и несметному множеству других примитивов обработки сигналов. Таким образом, имеется возможность составить из них практически любой тракт обработки. Делается это в прямом смысле слова в несколько кликов мышкой в наглядном графическом редакторе, имя которому gnuradio-companion. Более того, gnuradio-companion написан на Python и позволяет генерировать схемы на Python. Но у такой гибкости есть и обратная сторона — освоить GNU Radio за десять минут невозможно.

 

Аппаратные дополнения

Расширение диапазона поддерживаемых частот

Ниже ~52 МГц / 24 МГц находится бОльшая часть интересного в радиоэфире — поэтому ограничение по минимальной частоте серьезно сужает возможности этих приемников. Расширить диапазон можно, купив up-converter, который сдвинет сигнал с антенны на 100 или 125 МГц вверх. Среди продающихся конвертеров пока лучше всех себя показывает NooElec — Ham It Up v1.2 с кварцем на 125 МГц. Использование кварца на 125 МГц очень важно, так как в районе 100 МГц находится много мощных FM-станций и без очень качественного экранирования всех частей системы они будут мешать приему.

RF-конвертер NooElec — Ham It Up v1.2

Этот конвертер можно использовать с любыми SDR-системами, в том числе и работающими на передачу (есть ограничение на мощность).

Для приема на частотах менее 50 МГц придется больше внимания уделить антенне, так как габариты ее растут пропорционально увеличению длины волны. Конструкций антенн для любительской радиосвязи в КВ-диапазоне очень много, но в самом простейшем случае — это спускаемый с балкона провод длиной 5–20 м.

Малошумящий усилитель

И E4000, и R820T — кремниевые микросхемы, и усилитель внутри них шумит сильнее, чем более дорогие отдельные GaAs-усилители. Для некоторого снижения уровня шумов (на 1,5–3 дБ) и улучшения возможностей приема очень слабых сигналов можно купить малошумящий усилитель, который включается между антенной и тюнером.

Один из вариантов — LNA for all.

Малошумящий усилитель LNA for all

 

Что послушать в радиоэфире?

 

Радиопереговоры в безлицензионных диапазонах

Гражданские рации, не требующие регистрации в России, работают на частотах 433 и 446 МГц. Впрочем, в Москве русскую речь там услышать сложно. Их сразу и без проблем слышно в SDRSharp, модуляция NFM.

Поскольку каналов много, очень полезен плагин для SDRSharp AutoTuner Plugin — он автоматически включает частоту, на которой ведется передача, и таким образом можно слушать сразу все каналы раций.

Чтобы слушать рации на частоте 27 МГц, нужен тюнер с микросхемой R820T или внешний конвертер в случае E4000 (например, описанный ранее Ham It Up v1.2). Оптимальная антенна для 27 МГц уже требуется более серьезная, длиной ~2,59 или ~1,23 м.

Радиопереговоры полиции

Полиция в Москве и во многих других регионах России перешла на использование цифровых радиостанций, работающих в стандарте APCO-25 (P25). В P25 данные передаются в цифровом виде со сжатием и кодами коррекции ошибок — это позволяет увеличить дальность устойчивой связи и больше каналов впихнуть в ту же полосу радиочастот. Также существует опциональная возможность шифрования переговоров, однако обычная полиция работает без шифрования.

Для приема P25-раций можно использовать декодер DSD. DSD ожидает аудиоданные на входе. Перенаправить аудио с SDRSharp в DSD можно с помощью Virtual Audio Cable. DSD весьма критичен к настройкам SDRSharp — я рекомендую устанавливать AF Gain около 20–40%, возможно отключать галочку Filter Audio. Если все идет по плану — в окне DSD побегут декодированные пакеты, а в наушниках будут слышны переговоры. Эта схема также работает с упомянутым плагином AutoTuner в SDRSharp.

Найти частоты предлагаю читателям самостоятельно, так как эта информация не является открытой.

Радиопереговоры самолетов и диспетчеров

По историческим причинам для радиосвязи в авиации используется амплитудная модуляция. Обычно передачи с самолетов лучше слышно, чем от диспетчеров или погодных информаторов на земле. Диапазон частот — 117–130 МГц.

Прием сигналов с автоматических передатчиков самолетов ADS-B

ADS-B используется для того, чтобы и диспетчер, и пилот видели воздушную обстановку. Каждый самолет регулярно передает параметры полета на частоте 1090 МГц: название рейса, высота, скорость, азимут, текущие координаты (передаются не всегда).

Эти данные можем принять и мы, чтобы лично наблюдать за полетами. Два популярных декодера ADS-B для RTL2832 — ADSB# и RTL1090. Я использовал ADSB#. Перед запуском желательно настроиться на 1090 МГц в SDRSharp, посмотреть, есть ли сигнал и какая ошибка частоты из-за неточности кварцевого генератора. Эту ошибку необходимо скомпенсировать в настройках Front-end’а: Frequency correction (ppm). Нужно помнить, что величина этой ошибки может изменяться вместе с температурой приемника. Найденную коррекцию нужно указать и в окне ADSB### (предварительно закрыв SDRSharp).

Оптимальная антенна-монополь для 1090 МГц получается длиной всего 6,9 см. Так как сигнал очень слабый, тут очень желательно иметь дипольную антенну, установленную вертикально с такой же длиной элементов.

ADSB# декодирует пакеты и ждет подключений по сети от клиента, отображающего воздушную обстановку. В качестве такого клиента мы будет использовать adsbSCOPE.

После запуска adsbSCOPE необходимо открыть пункт меню Other -> Network -> Network setup, нажать внизу на кнопку adsb#, убедиться, что указан адрес сервера 127.0.0.1. Затем на карте необходимо найти твое местоположение и выполнить команду Navigation -> Set Receiver Location. Затем запустить подключение к ADSB#: Other -> Network -> RAW-data client active.

Если все сделано правильно, то в течение нескольких минут ты сможешь увидеть информацию о самолетах (если, конечно, они пролетают рядом с тобой). В моем случае с антенной-монополем можно было принимать сигналы от самолетов на расстоянии примерно 25 км. Результат можно улучшить, взяв более качественную антенну (диполь и сложнее), добавив дополнительный усилитель на входе (желательно на GaAs), используя тюнер на основе R820T (на этой частоте он имеет более высокую чувствительность по сравнению с E4000).

Декодированные сообщения ADS-B
Прием длинно- и коротковолновых аналоговых и цифровых радиостанций

До прихода интернета КВ-радиостанции были одним из способов узнавать новости с другого конца земного шара — короткие волны, отражаясь от ионосферы, могут приниматься далеко за горизонтом. Большое количество КВ-радиостанций существует и поныне, их можно искать в диапазоне ~8–15 МГц. Ночью в Москве мне удавалось услышать радиостанции из Франции, Италии, Германии, Болгарии, Великобритании и Китая.

Дальнейшее развитие — цифровые DRM-радиостанции: на коротких волнах передается сжатый звук с коррекцией ошибок + дополнительная информация. Слушать их можно с помощью декодера Dream. Диапазон частот для поиска — от 0 до 15 МГц. Нужно помнить, что для таких низких частот может понадобиться большая антенна.

Помимо этого, можно услышать передачи радиолюбителей — на частотах 1810–2000 кГц, 3500–3800 кГц, 7000–7200 кГц, 144–146 МГц, 430–440 МГц и других.

Радиостанция «судного дня» — UVB-76

UVB-76 расположена в западной части России, передает на частоте 4,625 МГц с начала 80-х годов и имеет не до конца ясное военное назначение. В эфире время от времени передаются кодовые сообщения голосом. Мне удалось принять ее на RTL2832 с конвертором и 25-метровую антенну, спущенную с балкона.

GPS

Одна из самых необычных возможностей — прием навигационных сигналов со спутников GPS на TV-тюнер. Для этого понадобится активная GPS-антенна (с усилителем). Подключать антенну к тюнеру нужно через конденсатор, а до конденсатора (со стороны активной антенны) — батарейка на 3 В для питания усилителя в антенне.

Далее можно либо обрабатывать слитый дамп эфира matlab-скриптом — это может быть интересно в целях изучения принципов работы GPS, — либо использовать GNSS-SDR, который реализует декодирование сигналов GPS в реальном времени.

Принять аналогичным способом сигнал с ГЛОНАСС-спутников было бы затруднительно — там разные спутники передают на разных частотах, и все частоты в полосу RTL2832 не помещаются.

Другие применения и границы возможного

RTL2832 можно использовать для отладки радиопередатчиков, подслушивания за радионянями и аналоговыми радиотелефонами, для разбора протоколов связи в игрушках на радиоуправлении, радиозвонках, пультов от машин, погодных станций, систем удаленного сбора информации с датчиков, электросчетчиков. С конвертором можно считывать код с простейших 125 кГц RFID меток. Сигналы можно записывать днями, анализировать и затем повторить в эфир на передающем оборудовании. При необходимости тюнер можно подключить к Android-устройству, Raspberry Pi или другому компактному компьютеру для организации автономного сбора данных из радиоэфира.

Можно принимать фотографии с погодных спутников и слушать передачи с МКС — но тут уже потребуются специальные антенны, усилители. Фотографии декодируются программойWXtoImg.

Есть возможность захватывать зашифрованные данные, передаваемые GSM-телефонами (проект airprobe), в случае если в сети отключен frequency-hopping.

Возможности SDR на основе RTL2832 все-таки не безграничны: до Wi-Fi и Bluetooth он не достает по частоте, и, даже если сделать конвертер, из-за того, что полоса захватываемых частот не может быть шире ~2,8 МГц, невозможно будет принимать даже один канал Wi-Fi. Bluetooth 1600 раз в секунду меняет рабочую частоту в диапазоне 2400–2483МГц, и за ним будет не угнаться. По этой же причине невозможен полноценный прием аналогового телевидения (там нужна принимаемая полоса 8 МГц, с 2,8 МГц можно получить только черно-белую картинку без звука). Для таких применений нужны более серьезные SDR-приемники: HackRF, bladeRF, USRP1 и другие.

Тем не менее возможность исследовать как аналоговый, так и цифровой радиоэфир, прикоснуться к спутникам и самолетам теперь есть у каждого!

 

xakep.ru

Software Defined Radio руками шестнадцатилетнего подростка / Habr

SDR, или программно-определяемая радиосистема – это устройство для работы с радио, в котором работает мини-компьютер со специальным программным обеспечением. Он заменяет традиционные аппаратные компоненты: фильтры, усилители, модуляторы и демоуляторы. Это позволяет создать радиоприемник, работающий с самыми разными протоколами. Вообразите себе радиолу, которая кроме «ХитFM» может принимать аналоговое и цифровое телевидение, связываться по Wi-Fi, Bluetooth и GPS, а также засекать излучение пульсаров.


А теперь представьте себе американского девятиклассника, который решил сделать такую радиолу, заказал через интернет ПЛИС, радиомодуль, развёл шестислойную плату, а потом своими руками смонтировал на неё почти 300 компонентов. И через три ревизии это всё у него заработало!


Что такое SDR

Кому может понадобиться такая радиола? Радиолюбителям, которые здорово эволюционировали! Двадцать лет назад увлеченный человек покупал сложный приёмник и часами сидел в наушниках, вращая частоты в поисках интересных сигналов. В современном мире радиоэфир переполнен информацией, но вся она цифровая. Слушать в наушниках пакеты Wi-Fi не представляет никакого интереса. Сегодня радиолюбитель находит в эфире интересные цифровые радиостанции, а потом подбирает софт, который разбирает протокол передачи и преобразует информацию. К примеру, можно принимать данные телеметрии гражданской авиации – на основе такого рода информации от множества радиолюбителей по всему миру сайт flightradar публикует данные о воздушных судах.

Вы можете прямо сейчас своими глазами увидеть работу Software Defined Radio. Университет Твенте содержит увлекательный проект онлайн SDR-приёмника, который принимает сразу кусок спектра шириной в 29MHz, после чего радиолюбители могут параллельно прослушивать различные несущие этого диапазона. Каталог подобных радиопроектов собран на сайте

Большую роль в популярности любительского SDR играет небольшая стоимость минимального комплекта оборудования. Обнаружились недорогие TV-тюнеры, реализованные на Software-Defined Radio, и в интернете немедленно появились инструкции о том, как использовать такие тюнеры, чтобы прослушивать с их помощью не только телевизионный сигнал. Специализированный комплект на китайском рынке стоит всего 35$ правда, он приходит разобранным (в необходимости предварительно спаять и заключается его шарм) и поддерживает диапазон только 100KHz-1.7GHz. Конечно, аппетит приходит во время еды, и очень скоро радиолюбитель начинает смотреть в сторону оборудования, которое может принимать широкие частотные диапазоны на высокой скорости. Давайте рассмотрим, какие серьёзные приборы сейчас наиболее популярны.


Полный список на Википедии

В двух словах: начинать знакомство с SDR можно с дешёвых вариантов типа RTL-SDR. Когда аппетит исследователя превысит небольшие возможности устройства, придётся искать замену подороже. Устройства типа Per Vices Crimson используются очень серьёзными специалистами, чьи компьютеры достаточно производительны для обработки таких потоков информации. LimeSDR на данный момент только-только закончил сбор средств на Kickstarter. Выглядит очень заманчиво: частота семплирования максимальна для USB3.0, а ширина канала достаточна для поднятия шести 10MHz сот LTE.

Однако, ещё недавно выбор не был так велик, и если не устраивал hackRF за $300, то следующим вариантом был USRP сразу за $750, и никакого компромисса. В связи с этим, шестнадцатилетний Лукас Лао Бейер решил самостоятельно разработать SDR-плату и недавно опубликовал отчёт о своём проекте. Сказать, что мы были поражены – ничего не сказать, лучше просто промолчать.

«Да что эти американские школьники себе позволяют!» — кричат в комментариях к статье Лукаса. Люди годами совершенствуют своё мастерство, а этот мальчишка сделал всё между уроками! Мы решили, что так это оставлять нельзя, и связались с Лукасом. В этой серии статей мы рассмотрим все аспекты создания подобного устройства, чтобы российские школьники перенимали опыт и делали не менее восхитительные вещи. Начнём с перевода на русский язык дневника Лукаса, в котором можно пронаблюдать ход проекта и его переживания в связи с ним. Затем мы разберём выбранные решения и попробуем изготовить такое устройство в российских условиях.


Разработка аппаратной части

Из дневника Лукаса Лао Байер
FreeSRP – доступная программно-определяемая радиосистема. Я ее разработал, потому что не нашел устройств с более высокой пропускной способностью, чем HackRF за 300$, но дешевле более производительной USRP за 700$. Некоторые компоненты еще требуют доработки, но система будет полностью соответствовать философии Open Source.

FreeSRP основана на трансивере Analog Devices AD9364. Ключевые возможности:


  • Полоса в 56MHz
  • Частотный диапазон 70MHz — 6GHz
  • Полнодуплексный режим работы.

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

Я начал работу над системой два года назад, летом 2014, когда мне было 16. На тот момент у меня не было опыта серьезной работы с железом, не считая низкопроизводительных плат для моего проекта High Altitude Balloon. Поэтому я понимал, что разработка FreeSRP будет непростой во всех аспектах: скоростные шины (100MHz), USB3.0, сигнальные дорожки с производительностью до 6GHz, сложные схемы питания с семью различными напряжениями… Очень хотелось собрать компактную систему на современных компонентах, так что пришлось познакомиться с такими компонентами, как BGA или QFN.


Сравните мою предыдущую плату и нынешнюю

Что и говорить, амбициозность проекта колоссальна. Однако, меня это нисколько не пугало, и я начал с чистого листа, исходя лишь из того, что я точно буду использовать трансивер AD9346, а мост между трансивером и USB3.0 реализую на ПЛИС. Недолгие поиски привели меня к Xilinx Artix 7 и контроллеру Cypress EZ-USB FX3. Эти игрушки показались мне оптимальными рещениями в плане цены.

На основе даташитов и референсных дизайнов я постепенно подготовил принципиальную схему, в которой решил вопросы по всем остальным компонентам. Для разработки я использовал Altium Designer. Хотя он и не open source, для меня это был наиболее интуитивно понятный пакет дизайна печатных плат. Многие его прекрасные функции весьма помогли мне в разработке: жизнь становится гораздо проще, если у тебя есть инструменты для отрисовки параллельных шин или дорожек с конкретным сопротивлением. Впрочем, когда я закончу устранение недочётов в дизайне, я перерисую всё в KiCad, чтобы большему числу людей было удобнее пользоваться моими разработками.

От дизайна к прототипу


Когда схема готова, пора выпускать шаблон платы. Для прототипа очень важна цена изготовления, и в мой бюджет еле-еле умещалась четырёхслойная плата от нашего американского сервиса OSH Park, который славится низким ценником на штучные заказы. Пусть у них есть только четырёхслойки, параметры изготовления весьма хороши — дорожки 5 mil с такими же промежутками, 10 mil для отверстий, а также прекрасный субстрат Isola FR408, от качества которого зависит радиосигнал.

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



С первого раза, разумеется, вышло не идеально, и довольно долго я увлеченно переделывал плату, пока наконец не понял, что уже всё хорошо. Самая сильная боль наступила, когда я начал разводить BGA на своей четырёхслойной плате. Тем не менее, я справился. Дизайн прошёл все проверки, и я ещё на несколько раз проверил всё вручную. Совершенно не хотелось рвать на себе волосы после изготовления платы с ошибкой, потому что это, конечно, было бы уже никак не исправить.

Изготовление прототипа
После долгих треволнений, я всё же заказал три платы, и в январе 2015 они — УРА! — приехали. Я намеревался самостоятельно собирать плату, поэтому дополнительно заказал шаблон монтажа на пленке для паяльной пасты. Для монтажа я использовал галогеновую печку и контроллер собственной разработки.


Так как FreeSRP основан на двухсторонней плате, я сначала монтировал нижний слой. В дизайне я расположил снизу только маленькие компоненты: когда я буду запекать плату второй раз при монтаже верхнего слоя, маленькие компоненты удержатся на плате даже вверх ногами.



Частичная сборка
У меня было три печатные платы, поэтому я сначала собрал прототип лишь частично. На одной плате установил только регуляторы напряжения, и благодаря этому обнаружил проблему с регулятором на 1.8В. Ничего страшного, я заменил его внешним источником питания. А вот проблему с регулятором на 1.3В я устранить не смог, потому что здесь уже проблема заключалась в ошибке проектирования, так что в первой ревизии я не смог запустить радио.



На второй плате я собрал всю цифровую часть: USB и FPGA. Впервые мне довелось монтировать BGA, и я делал это вручную. После долгих часов напряжённого и кропотливого монтажа дорогущих компонентов без права на ошибку, я дрожащими руками аккуратно положил плату в печь. Ожидание было мучительным, и как же я ликовал, когда всё прошло идеально!

Первое включение



Конечно, я невероятно страшился первого включения платы. Хотя цепи питания были проверены на первой плате, я всё равно не исключал, что сейчас мои драгоценные компонентики вспыхнут синим пламенем. Возможно есть какой-то безопасный способ включать не тестированную плату. Мне ничего лучше не пришло в голову, как плавно повышать ток на блоке питания, и молиться, чтобы нигде не пошёл дым.

Тест на дым был пройден успешно, и лампочки загорелись. Ни ПЛИС, ни USB на ощупь не нагревались. Я подключил USB в компьютер, и операционка обнаружила чип Cypress. Затем я запустил приложения Xilinx, и они подключились к ПЛИС через JTAG. Похоже, всё заработало! Рассмотрев детальней, я конечно нашёл ошибку: криво развёл разьём USB3.0, так что заработала только вторая версия. Ничего страшного, начнём тестировать в таком виде, и исправим проблему позже.

Вторая ревизия
Во второй ревизии мне понадобилось устранить проблемы с питанием и разводкой USB3.0. В результате, я получил полностью рабочую цифровую часть платы, и пора было переходить к радиочасти.
Сначала я не стал трогать трансивер, и собрал все остальные компоненты. Параллельно, началась разработка программной части проекта. До этого я никогда не программировал ПЛИС, поэтому мне пришлось изучать Verilog с нуля. На этом этапе я решил реализовать параллельный интерфейс к USB-контроллеру. Хотя все части проекта были не тривиальны, разработка ПЛИС для меня стала самой жуткой частью проекта. Очень сложно найти документацию для чайников по использованию инструментов и IP-блоков. Сообщения, которые писала Vivado Design Suite, были для меня китайской грамотой, а включение готовых IP-блоков приводило к сотням непонятных уведомлений. Скорее всего, я просто не умею пока правильно готовить на этой кухне.Даже самые минимальные изменения в дизайне требовали мучительно долгого обсчёта программой, поэтому всё необходимо симулировать — а это еще больше усложняет вход в чудесный мир ПЛИС. А отладка! Без Integrated Logic Analyzer отлаживать что-либо совершенно невозможно, а он стал бесплатным только в 2016 году– до этого прайс был очень высоким. Поэтому пришлось при отладке передавать часть тестовой информации морганием диода, а часть — на ножки GPIO и смотреть сигнал осциллоскопом.



В вопрос по тактированию я вник до конца не сразу – только к третьей попытке пришло осознание, что тактовый сигнал трансивера нужно было обязательно завернуть в clock-inputs на ПЛИС.
Наигравшись с Verilog, я решил, что самое время впаивать трансивер. Я взял третью плату, вновь установил на неё три сотни компонентов, как и ранее, начав с нижней стороны. Но когда я паял верхнюю сторону, контроллер моей печки объявил забастовку и не выключил печь. Я не мог получать показания по температуре в печи, а контролировать агрегат удавалось только включая-выключая его или открывая дверцу. Никакие мои молитвы не помогли: на дорожках появилось КЗ. Я попытался починить, но тщетно: при включении ПЛИС нагревался. Увы, я только что сжег в печи четыре сотни баксов, и этот факт совсем не придавал мне уверенности.

Тем не менее, я был решительно настроен закончить проект, поэтому разбил копилку, вновь заказал компоненты и через несколько недель предпринял еще одну попытку всё собрать. Вы не представляете, как я потел в этот раз, словно в финале турнира по покеру! К счастью, всё прошло без сюрпризов.



Цифровая часть в новом прототипе работала идеально. А вот трансивер работать не хотел, его конфигурационный порт просто не отвечал. Потом я заметил, что трансивер на ощупь горячий. Почему он так нагрелся, было непонятно, ведь он должен спать без конфигурации. Я безуспешно пытался найти проблемы в питания. Излазил все схемы, перепроверил все на сто раз. И потом я обнаружил следующую вещь.

Оказывается, я по ошибке последовательно включил два резистора — 698Ом и 536ОМ (в сумме 1234Ом) вместо 14.3 килоомного резистора из документации! Я заменил резисторы, и чип перестал греться, но он всё равно не работал. Похоже, я его спалил.


В общем, в этот момент я решил, что сделано уже достаточно много для такого юного специалиста без глубоких знаний электроники, и пора проект отложить. Но у меня осталась работающая ПЛИС, поэтому я стал развлекаться с ней.

В результате долгих экспериментов, я прикрутил драйвер трансивера и справился с генерацией тестовых сигналов. У меня заработала цепочка передачи сигнала от ПЛИС к USB, так что дальше я мог управлять своей SDR с компьютера с помощью библиотеки на более знакомом мне C++. Затем я реализовал совместимость моей платы с GNURadio, так что теперь с этой платой могли работать все полезные программы, реализованные на базе GNURadio.

Третья ревизия



В какой-то момент я нашёл силы на ещё один рывок и сделал третью ревизию. Я исправил досадную ошибку с 14.3 килоомным резистором, соединил clock-inputs с FPGA, и заменил осциллятор трансивера на кристалл, чтобы упростить раздачу тактового сигнала и исключить дальнейшие проблемы.

Конечно, проект вышел за рамки срока и бюджета, но сейчас мне уже кажется, что иметь всего три ревизии до работающей платы — это совсем неплохо!

Также на этой ревизии я перешёл на шестислойную печатную плату. Прототипы стали стоить дороже, но расстояние между сигнальными дорожками значительно увеличились, и я достиг максимальной тактовой частоты в шинах.

Кроме того, я купил отличные шаблоны из нержавейки, которые, в отличие от каптоновых, гораздо проще использовать.



Раз софт у меня уже был готов, я сразу смог запустить трансивер на прием, и вот они долгожданные первые сэмплы в GNURadio!



Наконец-то вся тяжелая работа дала свои плоды. Еще через несколько недель я смог запустить передатчик, и убедился, что полнодуплексный режим у меня взлетел, пусть и не в полную ширину. И тут я нашёл новую проблему с усилком на передаче, поэтому сигнал получился очень слабым.
В любом случае, у меня есть полнофункциональная SDR-плата, ребята! Да, ещё много нужно доделать. Я хочу тщательно измерить производительность приемника и передатчика. Очень хочется запустить мелкосерийное производство, но перед этим мне нужно ещё немного оптимизировать дизайн и быть на 100% уверенным, что я не оставил в плате ещё каких-то сюрпризов.

Постановка задачи
Большое спасибо Лукасу за его подробный отчёт, а сейчас давайте рассмотрим его решения.
Итак, Лукас хотел сделать широкополосную программно-определяемую радиосистему с характеристиками лучше, чем у hackRF, и дешевле USRP. Давайте рассмотрим, как устроено оборудование конкурентов.

USRP



bladeRF


hackRF



Последнее изображение выглядит наиболее лаконично, однако все три устройства имеют одинаковую архитектуру: сигнал принимается из эфира, оцифровывается и передаётся в USB. Есть различия в деталях. В hackRF радиочасть реализована в виде нескольких компонент: сигнал после приёма с помощью миксера сдвигается в промежуточную частоту диапазона 2.3-2.7GHz, затем преобразуется в синфазную и квадратурную составляющую сигнала, которая уже оцифровывется. Другие устройства решают эту задачу одним компонентом — трансивером. Преобразование цифрового сигнала для передачи в USB, а также управление радиотрактом, осуществляется при помощи ПЛИС (FPGA) либо микроконтроллера.

Проектируя систему сверху вниз, мы разделим её на три части: RF, FPGA и USB, и сначала проработаем каждый блок по отдельности, а затем разберёмся, как связать их вместе.

RF-часть
Радиомодуль в такой системе — самое хрупкое дело. Дискретные биты должны превратиться в волну и с нужной мощностью полететь в антенну. Для этого раньше требовалась целая россыпь восхитительных штучек: фильтры, интерполяторы, дециматоры, цифро-аналоговые преобразователи, синтезаторы, миксеры и различные усилители. До сих пор существует класс людей, предпочитающих самостоятельно контролировать каждый аспект их радиомодуля и собирающих их из маленьких кусочков. Какое же решение предпочтёт школьник? Конечно, он будет рад, если один суперчип решит для него все эти проблемы. Вот какие есть варианты:

Как в hackRF
Майкл Оссманн, кстати говоря, тоже радиолюбитель, а не радиопрофессионал, и единственная причина, почему он не решил радиочасть в своём проекте в виде одного умного кусочка кремния — это доллары, которые для этого потребовались бы. Майкл выбрал компромисс: он использует три кусочка кремния и экономит примерно половину стоимости, что делает hackRF таким доступным по цене. Радиосигнал в hackRF приходит на RFFC5071, который понижает частоту до ~2.5GHz (это называется LO-синтез), затем этот сигнал попадает в узкополосный трансивер MAX2837, превращается в baseband и в таком виде идёт в MAX5864 — это как раз цифро-аналоговый (и обратно) преобразователь.

AD9364
Analog Devices выпускают отличные трансиверы, которые часто используются в различных SDR-проектах. Выше на схеме видно, что такой чип, к примеру, комфортно себя чувствует на устройствах USRP. У производителя можно купить чип на демонстрационной плате AD-FMCOMMS4-EBZ, которая в принципе является готовой примитивной SDR.

LMS6002D
Чипы Lime Micro используются во множестве систем (bladeRF, например), в том числе и в российской SDR-разработке umTRX, а в этом году они замахнулись на собственную SDR-систему и успешно собрали на Kickstarter средства для запуска LimeSDR в продакшн. В целом, Лукас вполне имел право использовать этот чип в своей работе, он прекрасен, и главный его недостаток — диапазон принимаемых частот вполовину уже, чем у AD9364.

Поэтому в итоге Лукас выбрал вариант с AD9364, и немедленно заказал его.

Выбор FPGA
Самое сложное при выборе ПЛИС — это определиться Altera или Xilinx. Эти компании словно Sony и Nintendo производят одинаково крутое железо, и дьявол лишь в деталях. Какая же разница между Altera и Xilinx?

Altera славится очень долгой поддержкой своих микросхем. Среда разработки Xilinx Vivado работает только с последней (седьмой) серией микросхем, тогда как Altera’s Quartus поддерживает даже Flex 10K, которому пятнадцать лет исполнилось с момента первого выпуска. На момент старта проекта, софт для отладки Xilinx стоил 700$ (и стал бесплатным только в этом году), а у Altera он бесплатен. IP-блоки (готовые программные библиотеки) в Altera можно попробовать во время демо-периода с ограничениями. В итоге, для новичка-любителя Altera выглядит предпочтительней. Зато в Xilinx умнее DSP часть, в ней есть не только умножение (как в Altera), но и предсложение с аккумулятором, что уменьшает количество необходимых логических блоков для решения задачи.

Но Лукаc выбрал Xilinx. Он утверждает, что из-за цены, но я думаю, что наугад (сравните, Xilinx Aritx-7 и Altera Cyclone V).

Как выбрать конкретную модель микросхемы у Xilinx? Два года назад выбор стоял между Spartan-6 и Artix-7, которые считаются low-cost предложением Xilinx. Spartan-6 отпадает, потому что его не поддерживает программное обеспечение Vivado.

Все BGA семейства Artix-7 совместимы что называется pin-to-pin, поэтому дальше Лукас просто ткнул в модель 50T, решив определиться с конкретной моделью, когда софт будет готов и точно определятся требования к производительности микросхемы.

Какие FPGA используют в других аналогичных проектах?


SDR Модель FPGA Logic Cells
USRP B200 Xilinx Spartan 6 LX150 150k
USRP B210 Xilinx Spartan 6 LX75 75k
bladeRF x40 Altera Cyclone 4 40k
bladeRF x115 Altera Cyclone 4 115k
hackRF CPLD xx

Автор hackRF не стал ставить FPGA, а выбрал более дешёвую технологию — CPLD, что является, скажем так, упрощённой версией FPGA. В результате, он практически ничего полезного не может в ней делать и вообще планирует исключить ПЛИС из своего дизайна, переведя управление трансивером на чип USB-контроллера.

USB3.0
Осталось определиться с решением для USB3.0. Самое популярное решение здесь — микроконтроллер Cypress FX3, и сложно придумать причины не использовать его. Тем не менее, рассмотрим альтернативы.

Первым на ум приходит FTDI FT60x — микроконтроллер в корпусе QFN. Компания FTDI знаменита тем, что любит выпускать драйвера, которые намеренно убивают твой чип, если он является подделкой. Если для USB2.0 чипы этой компании считались стандартом де-факто, то в USB3.0 они, к сожалению, упустили свой рынок таким странным отношением к оборудованию конечного пользователя и низким качеством софта.

Другой вариант — взять трансивер от Texas Instruments TUSB1310A, а MAC-уровень реализовать в ПЛИС. Трансивер стоит на 20$ дешевле, чем микроконтроллер от Cypress FX3, и я затрудняюсь прокомментировать, почему Лукас не сделал именно так.

Изготовление печатной платы
Если вам больше хочется программировать, чем развлекаться с паяльником, я бы рекомендовал делать прототип на готовой плате. Хороший список готовых плат на разных ПЛИС можно найти на специальном сайте. Для этого конкретного проекта есть идеальный вариант готовой платы с USB3.0 и FPGA Artix 7 остаётся только скоммутировать трансивер и можно немедленно приступать к экспериментам.

Однако, Лукасу в этом проекте были интересны все этапы. Более того, он даже монтировать плату хотел сам. Прототипы Лукас изготовил в OSH Park — это очень популярный сервис среди американских студентов. Цена у них идёт от площади платы (10$ за квадратный дюйм), и с учётом расположения в США вся процедура занимает весьма короткий промежуток времени. Однако, сейчас, когда на плату есть заказы и её нужно изготавливать десятками, имеет смысл поискать самый оптимальный вариант для её изготовления. Ниже в таблице я привёл сравнение российских и зарубежных сервисов по изготовлению плат без монтажа на них.

Сравнение цен на изготовление печатной платы. Требования:


  • 5 mil=0,127 мм минимум дорожки
  • 5 mil=0,127 мм минимум промежутки
  • 10 mil=0,254 мм минимальное отверстие
  • Субстрат для платы с хорошими характеристиками
  • Размеры платы: 74 * 108mm

Предприятие Стоимость за пять штук шестислойки Пять штук четырёхслойки
OSH Park Шестислойную не делают 123$ за три штуки, опт — от 150 квадратных дюймов
PCB tech 614$
Резонит 153$
EasyEDA 284$
seeedstudio.com 158$
pcbwing 348$ 299$
PCB Offshore 280$ / 4pcs 140$ / 4pcs
PCBCart 191$ 93$

Часть российских заводов ответили отказом или выставили заградительные цены: не хотят связываться с мелкосерийным заказом. Хочу обратить внимание, что при текущем курсе доллара услуги российской компании Резонит оказываются даже предпочтительней китацев. Плюс, они готовы сами смонтировать платы, если вы предоставите им комплектующие. На данный момент, из этого списка я лично работал только с EasyEDA, и нареканий нет. Цены Резонита приятно удивили Лукаса, и сейчас мы планируем разместить там заказ платы по его проекту. Когда у нас всё получится, я обязательно расскажу вам детали взаимодействия с заводом, а также подготовлю статью о процессе проектирования печатной платы и подготовке проекта к изготовлению.


Пишем ПО

Из дневника Лукаса Лао Байер
Чтобы эта плата начала приносить пользу, необходимо разработать несколько компонент:


  • Логика ПЛИС, которая послужит интерфейсом между AD9364 и USB
  • Прошивку для USB контроллера
  • Драйвер для PC, который выступит интерфейсом между платой и традиционными библиотеками.

Для персонального компьютера я написал C++ библиотеку на основе libusb. Однако, чтобы не изобретать велосипед, я решил интегрироваться в какой-нибудь популярный фреймворк, и очевидным выбором была GNU Radio.

Сначала я собирался просто написать собственный блок для GNU Radio, но затем я натолкнулся на проект gr-osmosdr, который осуществляет поддержку многих популярных SDR. В комплекте с ним идёт анализатор спектра, генератора сигнала. Плюс, эта библиотека уже используется другими приложениями (например, Gqrx, AirProbe/gr-gsm). Соответственно, если я сделаю патч в этот проект, то моя плата автоматически появится в этих приложениях.

Потому я скопировал себе актуальную версию gr-osmosdr, и дальше просто смотрел какие правки делались для поддержки других SDR. В итоге, потребовались очень небольшие правки, чтобы библиотека увидела мою плату. Дальше появились функции для настройки частоты, ширины спектра и т.д. Ключевая функция — work — производит или потребляет данные из потока GNU Radio. Сначала я реализовал простую очередь, чтобы как можно быстрее начать играть с платой, но, конечно, это неэффективно. Сейчас я обновил алгоритм и сделал, как делают все папы: через обратные вызовы и синхронизацию с помощью условных переменных

В общем, теперь для работы с моей платой через gr-osmosdr нужно просто указать аргумент freesrp.

Проверяем корректность потока данных
Я начал баловаться с GNU Radio начиная со второй ревизии моей платы, когда трансивер ещё не очень-то работал. Я просто посылал сигнал и разворачивал его обратно в приёмный тракт. Так я мог проверить, что в цифровой части платы ничего не искажается.

Чтобы проверить частоту дискретизации платы, я гнал сигнал из блока GNU Radio «probe rate», а на ПЛИС собрал простой счётчик:



Сигнал генерируется в ПЛИС и принимается в GNU Radio. Частота дискретизации вбита прямо в код. Получаемая частота дискретизации выводится в отладочное окно.

Дальше тестировал цепь передачи сигнала. Теперь сигнал генерируется в GNU Radio и сливается в (sink block).


Теперь проверяем, что ПЛИС правильно декодирует данные: драйвер должен возвращать 32-битное слово, в котором будет два 12-битных сэмпла (I и Q) и выравнивающая пустота. С помощью программы Integrated Logic Analyzer я мог получить доступ к 12-битным сэмплам в ПЛИС и сравнить их с тем, что я вижу на моём компьютере.



I и Q сигналы на конце цепочки передачи данных в ПЛИС.

GNU Radio генерировал синусы и косинусы, но данные где-то портились. В итоге оказалось, что ошибка была в моей библиотеке freesrp, она неправильно форматировала данные. Когда я её починил, то собрал петлю в ПЛИС:


И всё почти работало. Только некоторые сэмплы терялись и заменялись на нули. На следующей картинке мы видим сгенерированный синий сигнал I, красный Q и сигнал, который прилетел обратно — зелёный I и чёрный Q:



Периодичность потери сигнала натолкнула меня на мысль, что проблема где-то в моём конечном автомате, который управляет чтением и записью в USB-контроллер: переход в состояние записи происходило за цикл до попадания данных в регистры, которые нужно записать. Я сдвинул этот переход на один такт, и всё стало гладенько:



На третьей ревизии платы я повторил все тесты, чтобы убедиться в полной работоспособности. Для лупбэка я использовал внутреннюю петлю AD9364, таким образом покрыв тестом всю цифровую часть прототипа.

Весёлые эксперименты с GNU Radio
Теперь мне очень хотелось попробовать декодировать реальные сигналы. Первыми моими жертвами стали GSM и Zigbee, потому что для них есть готовые библиотеки gr-gsm and gr-ieee802-15-4.

GSM
Внешние модули GNU Radio собираются через cmake, потому всё просто:

mkdir build # Creates a blank directory for the build to run in
cd build
cmake .. # Load CMake build script in root of the module's directory and run it
make # Run the CMake-generated makefile
sudo make install # Install the module
sudo ldconfig

В пакете gr-gsm идёт некоторое количество пробных приложений. Самые интересные — grgsm_scanner and grgsm_livemon. С помощью первого можно поискать GSM вещание и вычленить из них какие-то идентификаторы, а также получить список базовых станций.



Поглядите, кстати, я в качестве аргумента указываю код своей платы freesrp — и всё работает. Это очень приятное чувство.

Второе приложение позволяет настроиться на один из GSM каналов, расшифровать данные и отправить их в твою локальную сеть, где их можно послушать через Wireshark. Я добавил в программу модуль gr-fosphor, чтобы скриншот стал более красочным:


802.15.4 (Zigbee)

У меня дома было несколько XBee модулей, и я решил с ними взаимодействовать. На этом примере я хотел проверить отправку данных.

Установка модуля настолько же проста, как и в случае с gr-gsm. Примеры, которые идут с библиотекой, сделаны для коммуникационного стека Rime, поэтому я отрезал от него всё, что не касается самого Zigbee, и добавил блок TCP Server, чтобы можно было по локальной сети подключаться и отправлять данные:


Для примера я написал два Python-скрипта: один подключается к XBee через USB, а другой цепляется на TCP порты в GNU Radio. И затем я просто передавал текстовые сообщения через протокол 802.15.4, как в чате.


О разработке драйвера
Дизайн ПЛИС и USB-контроллера
Сейчас моя ПЛИС ничего особого не делает, кроме как служит интерфейсом между трансивером и USB. Из-за простоты реализации, я запустил на MicroBlaze драйвер от AD9364, который производит настройку и калибровку. Драйвер взаимодействует с USB через UART. Вскоре я перенесу этот драйвер на контроллер USB.

AD9364 выдаёт семплы в 12-битный порт чередуя I и Q. Есть ещё один 12-битный порт, куда надо отправлять исходящией I\Q значения. Так же трансивер предоставляет DDR-клок в зависимости от выбранной частоты дискретизации. Во входной сигнальной цепи происходит обратное перемежение и складывание в 24битную очередь.

В контроллере USB есть механизм DMA, куда ПЛИС может напрямую писать (и оттуда же читать) данные через 32битную шину. Поэтому когда в очереди ПЛИС накопилось достаточно данных, а FX3 готова к приёму, конечный автомат перебрасывал данные.

Сейчас я использую только 24 бита из доступных 32. Влезает один I\Q семпл, и остальные 8 бит я просто отбрасываю. Но для полнодуплексной передачи данных нужно будет использовать все 32 бита.

USB контроллер предоставляет следующие контрольные точки:


  • INTERRUPT OUT — отправляет команды в MicroBlaze на драйвер AD9364
  • INTERRUPT IN — принимает ошибки или ответы на эти команды
  • BULK OUT — для отправляемых данных
  • BULK IN — для приёма данных

После включения FPGA можно настроить через INTERRUPT OUT.

Libfreesrp
Библиотека взаимодействия с FreeSRP очень проста. Для приёма и отправки используется интерфейс libusb. Это позволяет накапливать в очередь данные для оптимальной обработки операционной системой. Пользователь указывает колбэк, который будет вызван если поступили новые данные или буферы отправки освободились.

Планы
Дмитрий Стольников из gr-osmosdr уже связался со мной и предложил слить мои изменения в основную ветку библиотеки. Я вскоре закончу её полировать и сделаю это.

Когда я избавлюсь от MicroBlaze и перенесу драйвер на FX3, ПЛИС почти полностью освободится. Я бы хотел воспользоваться этим для экспериментов с обработкой сигналов в реальном времени прямо на ПЛИС.

Очень хочется получить более точные характеристики производительности радиочасти. Я не приблизился к этому ни на шаг, потому что у меня нет приборов, да и других дел полно.


Выпуск продукта


В апреле Лукас запустил краудфандинг для своего продукта и получил первую партию заказов на 20000$ (то есть, порядка пятидесяти экземпляров).

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

Справочные ссылки
→ Схематика FreeSRP
→ Исходники FPGA
→ Исходники USB Контроллера
→ Сайт проекта

habr.com

Что такое SDR приёмник, советы по выбору: radionew — LiveJournal

SDR приёмник, это маленькое устройство, подключаемое в USB порт компьютера, ноутбука или планшета. По внешнему виду напоминает флешку.

Принцип работы простыми словами. В приёмнике находится небольшой процессор, который оцифровывает радиоволны и выводит их на компьютер. То есть в обычном приёмнике вы крутите ручку настройки и можете слышать только ту станцию, на которую настроились. А в SDR приёмнике вся информация выводится на экран, где вы можете видеть сразу все станции, которые работают в данный момент в эфире. Это очень удобно, т.к. не нужно наугад крутить ручку приёмника, выискивая станции. Вы их сразу видите на экране. Вот, посмотрите:

Как видите, сигналы радиолюбительских станций отображаются в виде спектральных сигналов на экране вашего компьютера. То есть, увидели сигнал – перенесли курсор мышки на него и сразу слушаете радиолюбителей. Очень удобно. Да, с одной стороны, конечно, теряется романтика поиска, когда на обычном приёмнике крутишь ручку и в шумах выискиваешь слабые сигналы)). С другой стороны, для начинающих радиолюбителей это более удобно, т.к. сразу видно, на какой частоте появился сигнал радиолюбителя.

Какой SDR приёмник выбрать и где приобрести.
SDR приёмников выпускается великое множество. Больше всего их производится в Китае, но, так же есть и отечественные. Отечественные, бесспорно более высокого качества и класса, но, и цена у них, не очень, конечно интересная)). Для примера: https://store.eesdr.com/receivers

Поэтому для начинающих радиолюбителей самый лучший вариант – приобрести простой и дешевый китайский SDR приёмник. Рекомендовать к приобретению будем только тот, который лично используем. Вот этот: http://ali.pub/1p0ml2

Согласитесь, это бесспорно дешевле, чем обычный SSB приёмник? http://ali.pub/1swq1b

Но, чтобы быть объективными, сразу укажем все плюсы и минусы SDR приёмников.
Плюсы:
— очень низкая цена (по сравнению с обычными SSB приёмниками)
— маленький размер (как флешки)
— гораздо более высокая чувствительность
— станции сразу видно на экране
— очень богатый функционал

Минусы:
— для работы SDR приёмника нужен компьютер (ноутбук, планшет)
— необходимо устанавливать драйвера и программу управления, что может вызвать сложности у тех, кто плохо владеет компьютером.
— для приёма радиолюбителей на коротких волнах необходимо приобрести или самому спаять конвертер, поскольку дешёвые SDR приёмники плохо или вообще не работают ниже 24-30МГц.

В следующих статьях подробно расскажем, как установить драйвера и программу для SDR приёмника, а так же, как приобрести, или самому спаять конвертер.

radionew.livejournal.com

Автономный SDR приёмник на ПЛИС / Habr


Ранее я уже писал про самодельный SDR приемник, сделанный на базе отладочной платы DE0-nano. Как и большинство других SDR приемников, он не был способен работать без подключения к компьютеру. При этом в использованной ПЛИС оставалось еще большое количество неиспользованных ресурсов, так что я решил сделать приемник полностью автономным.
О том, как же работает весь SDR приемник целиком, и как его реализовать — далее.
Немного про предыдущий проект

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

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

В большинстве современных приемников перенос сигнала с более высокой частоты на более низкую производится путем смешивания (перемножения) исходного сигнала с сигналом от опорного генератора — гетеродина. В результате на выходе смесителя появляется сигнал с частотой, равной разности частот исходного сигнала и гетеродина.

Однако при этом могут приниматся сигналы, находящиеся как ниже, так и выше частоты гетеродина (частоты A и B на рисунке). Это явление называется «зеркальным каналом». Для борьбы с ним в аналоговых приемниках совместно используются фильтры и перенос на промежуточные частоты.

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

Так как в цифровой форме можно абсолютно одинаково обработать несколько различных сигналов, то появилась возможность создавать довольно простые, но эффективные приемники. В таких приемниках сигнал после квадратурного смесителя отфильтровывается от ВЧ сигналов, усиливается, оцифровывается АЦП и передается на компьютер или DSP. Именно эта технология используется в большинстве SDR приемников.
Структурная схема такого приемника:

При наличии подходящего высокоскоростного АЦП и ПЛИС можно выполнять в цифровой форме даже квадратурное преобразование и децимацию получившегося сигнала. Приемники такого типа называются DDC (Digital Down Conversion). За счет того, что в таком приемнике практически нет аналоговых компонентов, можно получить очень высокий коэффициент подавления «зеркального канала».
Именно такой приемник я описывал ранее. Он включал в себя внешний АЦП, и реализованные в ПЛИС умножители сигналов, цифровой генератор сигналов, CIC и FIR фильтры, а также модули для передачи полученной информации на компьютер. Приемник выдавал через Ethernet поток данных 16 бит x 50 ksps x 2 канала.

А теперь стоит перейти к описанию SDR приемника, способного работать автономно.

Выделение сигнала и его демодуляция

Ранее в моем приемнике эти операции выполнял компьютер. Теперь требовалось реализовать их на ПЛИС.
Структурная схема получившегося демодулятора:

Так как хотелось иметь возможность изменять частоту принимаемого сигнала, не изменяя при этом основную частоту настойки приемника, то потребовалось добавить в блок демодулятора дополнительные генератор и комплексный умножитель. Генератор (NCO1) формирует синусоиду и косинусоиду, и может перестраиваться в диапазоне 0-25 кГц.
Для переноса нужного сигнала в область нулевых частот используется квадратурный умножитель. Важная особенность его работы — за счет того, что перемножаются комплексные сигналы, на его выходе не возникает зеркального канала.
Также имеется модуль, позволяющий поменять местами шины, соединяющие NCO1 и умножитель, за счет чего изменяется направление сдвига сигнала (на схеме этот модуль не показан).
Результат переноса сигналов:

Однако вышеупомянутый перенос частоты не решает проблемы зеркального канала.
Фаза сигналов на выходе квадратурного смесителя зависит от их положения относительно частоты гетеродина: находящиеся выше этой частоты будут иметь разность фаз в каналах I и Q +90 градусов, ниже -90 градусов.
Таким образом, если дополнительно сдвинуть все сигналы в канале I на +90 градусов, то разность фаз сигналов будет составлять уже либо 180, либо 0 градусов. Достаточно сложить получившиеся сигналы друг с другом, и нежелательный зеркальный канал будет подавлен (сложение сигналов с разностью фаз в 180 градусов дает ноль). Если вместо сложения выполнять вычитание сигналов — то будет приниматься именно зеркальный канал — таким образом можно переключать вид принимаемой полосы: LSB/USB.

Для выполнения фазового сдвига в модуль демодулятора введен цифровой фазосдвигающий фильтр — преобразователь Гильберта (Hilbert Transform). Он осуществляет сдвиг фаз всех частотных составляющих сигнала на 90 градусов.
Фильтр был рассчитан при помощи инструмента FDATool, входящего в состав Matlab. Фактически, фильтр Гильберта — это просто разновидность КИХ-фильтра с определенными коэффициентами. FDATool позволяет даже сгенерировать VHDL-код для получившегося фильтра. Порядок использованного фильтра — 65.
Особенность фильтра Гильберта — на частотах 0 и Fs/2 его коэффициент пропускания стремится к 0. В данном случае это значит, что частоты в НЧ области от 0 до ~500 Гц приниматься не будут.

Фильтр Гильберта задерживает сигнал на N/2 выборок, где N-порядок фильтра. Для компенсации этого эффекта в канал Q введена линия задержки (FIFO буфер), задерживающий сигнал на 34 выборки.

После того, как сигналы каналов I и Q сложены, получившийся сигнал нужно отфильтровать, пропустив на выход сигналы, находящиеся в полосе 0-3 кГц. Это делается для облегчения приема SSB сигналов, которые обычно имеют такую полосу. Замечу, что если в эту полосу попадут несколько радиостанций, работающих телеграфом, то все они будут слышны.
В качестве фильтра используется готовый КИХ-фильтр из Quartus. Он имеет порядок 32, коэффициенты для него, были также рассчитаны в FDATool.
АЧХ получившегося фильтра:

Все модули демодулятора имеют разрядность 12 бит. Меньшая разрядность давала бы не очень качественный звук, большая потребовала бы больше ресурсов ПЛИС, которых явно не хватало. Тактовой частотой для всех модулей является частота 50 кГц (скорость потока данных на выходе децимирующих фильтров).

Вывод звука

Для того, чтобы вывести звуковой сигнал из ПЛИС, я использовал формирователь ШИМ. Это не самый лучший способ создания звукового сигнала, но наиболее простой. Тактовая частота формирователя ШИМ выбрана достаточно высокой — 100 МГц. С такой частотой при разрядности 12 бит частота импульсов ШИМ — 24кГц.

Так как принимаемые сигналы имеют очень большой динамический диапазон, то для нормального приема в конструкцию пришлось ввести программную автоматическую регулировку усиления (AGC). Реализована она довольно просто — при слишком большой амплитуде сигнала на выходе демодулятора модуль АРУ ослабляет сигнал на входе демодулятора (для этих целей используется входящий в него блок Right Shifter). Сигнал ослабляется в 2^N раз за счет простого сдвига, что не очень удобно, но очень просто реализуется программно и практически не требует ресурсов ПЛИС. Если в течении 0.2 сек сигнал на выходе демодулятора будет низким, то ослабление сигнала уменьшается. Недостаток такого метода — переключение усиления иногда довольно хорошо слышно.

FFT, вывод спектра на экран и управление приемником

Ранее я уже реализовывал на DE0-nano работу с VGA монитором. Также я экспериментировал с модулем FFT.
Таким образом достаточно было перенести имеющиеся модули в проект приемника, и подключить выходы децимирующих фильтров к входу модуля FFT — и появилась возможность наблюдать спектр радиосигнала в полосе +-25кГц от частоты главного гетеродина — NCO2. Демодулятор звука и FFT при этом работают независимо, так что можно изменять частоту принимаемого сигнала, не изменяя частоты настройки приемника.
Модуль FFT — готовый из Quartus, длинной 512 точек, работает совместно с модулем оконной функции.

Традиционно при отображении спектра используют его логарифмическое представление. Однако мне оно показалось не очень информативным, кроме того, модуль аппаратного вычисления логарифма занимал слишком много ресурсов ПЛИС, а вычисление логарифма программно выходило слишком долгим. Так что значение амплитуды спектра перед выводом на экран просто уменьшается в 2^N раз, число N можно изменять программно.

В данном проекте захват данных от модуля FFT, вывод данных на VGA экран, работа с SDRAM, управление приемником идет при помощи системы SOPC, в состав которой входит софтовый процессор NIOS II.
Упрощенная структурная схема SOPC:

Для управления приемником я решил использовать мышь с интерфейсом PS/2. Он довольно прост, вся связь идет по двум проводам. На сайте Altera среди примеров для некоторых отладочных плат явно упоминался модуль для SOPC, предназначенный для работы с PS/2. Попадался и код (ссылок указать не могу, так как вновь найти нужные не удалось). Найденный пример пришлось изменить для работы с моей системной частотой, однако вначале он все равно не заработал. Ситуация осложнялась тем, что шина PS/2 — двунаправленная, причем пятивольтовая, а ПЛИС работает от 3.3В. Как оказалось, для того, чтобы мышь нормально заработала, нужно подавать на нее 5В (при 3.3В мышь не запускается), в настройках Quartus выводы, используемые для PS/2 должны быть указаны как работающие от 3.3В (остальные выводы у меня настроены на 2.5 В). Также для надежной работы пришлось установить конденсатор в 470пФ между линией CLK и землей. Возможно, если использовать внешний преобразователь уровней напряжений, то проблем можно было бы избежать.
Далее удалось наладить связь с мышью из Nios, но и тут возникла проблема — мне не удавалось настроить частоту выдачи данных мышью. Как оказалось позже, это была проблема конкретного вида мыши. Работа с мышью на программном уровне не сложна — после инициализации при перемещении она посылает на ПЛИС 3 байта, которые принимает контроллер мыши в SOPC. Он же генерирует прерывание для Nios, в обработчике которого Nios вычисляет новые координаты курсора.

Интерфейс, реализованный на Nios, позволяет наблюдать спектр, «водопад», управлять настройкой приемника (главным гетеродином), настройкой частоты приема звука, видом принимаемой полосы — USB/LSB. Частоту настройки можно изменять, нажимая на соответствующую цифру на индикаторе частоты левой/правой кнопкой мыши (аналогичным образом частоту можно менять во многих компьютерных SDR программах). Частоту настройки приема звука можно менять, нажимая мышью в нужное место на спектре или «водопаде».

Структурная схема всего приемника:

Схема в Quartus
Ресурсы ПЛИС, используемые проектом

Как я уже писал выше, в процессе создания проекта возникли определенные трудности, связанные с объемом проекта. В нем используется большое количество фильтров, которые занимают место как в логических элементах (LE), так и используют аппаратные умножители. При настройке параметров каждого блока приходилось выбирать, какую длину фильтра использовать. Из-за недостатка ресурсов некоторые фильтры пришлось переключить в симметричный режим, что позволяет сократить число используемых фильтром умножителей вдвое. Тем не менее, параметры фильтра Гильберта и КИХ-фильтра в демодуляторе вышли достаточно посредственными (в компьютерных программах они гораздо эффективней). Стоит заметить, что в получившейся конструкции ресурсы ПЛИС используются не в полную силу — тактовая частота большинства модулей — 50кГц, хотя они могут работать на куда более высокой частоте.
Также достаточно много ресурсов занимает SOPC вместе с Nios — более 6000 LE.
Всего в проекте используется:
LE: 21,445 / 22,320 (96 %)
9-битных умножителей: 98 / 132 (74 %)
Как видно, практически все LE ПЛИС использованы.

Общий вид приемника:

Крупным планом:

Вид экрана во время работы (во время CQ WW RTTY DX Contest):

Прием SSB:

Видео работы приемника:

Из видео можно судить о качестве работы приемника. Стоит заметить, что на слух звук несколько лучше, чем на записи на видео телефоном. Также, как я упоминал ранее в предыдущем посте, антенна используется не лучшая.
На приемник удавалось принять сигналы rtty (подключенный к приемнику КПК их декодировал), принимались сигналы JT65 (они декодировались на компьютере). Хорошо было слышно немецкую радиостанцию, передававшую метеофакс.

Ссылка на проект

habr.com

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *