22 November 2012

Software Defined Radio (SDR)

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

Шерлок Холмс (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, который я получил в подарок, использующий в качестве АЦП — звуковую карту ПК, записать своё видео работы я не стал, поэтому выкладываю найденное на просторах ютуба — мой приемник работает точно так же, первая фотка в статье — он и есть
Tags: SDR Радио радиоволны модуляция связь
Hubs: Network standards
+40
105.5k 308
Comments 32
Ads