Поскольку сегодня, 7-го мая, мы отмечаем День Радио, то позвольте представить вашему вниманию серию проектов для FPGA плат, которые были выполнены мной в разное время, но так или иначе связаны с радио. На этом видео выше есть демонстрация маленького чуда — сеанс радиосвязи на столе. Две одинаковые платы с ПЛИС служат одна передатчиком, а другая радиоприемником.
Далее расскажу, как я это сделал.
Радиопередатчик с амплитудной модуляцией очень прост: это ведь всего лишь умножитель двух частот.
Несущая частота, как синусоидальное колебание, задана в виде таблицы в ПЛИС, звуковой файл передается в плату из ноутбука через последовательный порт со скоростью 230400 бод, что примерно соответствует обычной звуковой дорожке 22050 samples/sec, 8 бит, моно. Два сигнала: несущая частота и звуковой сигнал перемножаются и происходит перенос спектра в область высоких частот, плюс еще несущая. Потом этот цифровой сигнал отправляется на аналогово-цифровой преобразователь, в нашем случае — это простейший R2R DAC — и затем на антенну. Антенна — несколько витков провода и конденсатор. Они подобраны примерно так, чтобы резонансная частота этого колебательного контура была в районе несущей частоты. Обычный бытовой приемник может принимать такой радиосигнал на расстоянии нескольких метров. Несущая частота оригинального проекта 1,5МГц, но лучше взять чуть повыше — 7МГц.
Полное описание проекта и исходные текста всех программ и проекта для ПЛИС Altera Cyclone III для платы Марсоход2 можно взять вот здесь: marsohod.org/projects/marsohod2/298-am-radio-transmitter
Радиоприемник — это гораздо более сложная штука.
Я сделал его так же на основе платы Марсоход2, но я взял за основу другой проект "Простой SDR приемник на ПЛИС" автора iliasam. Большое ему спасибо за замечательную эту статью.
Проект выполнен по вот такой структурной схеме:
Мой ПЛИС проект имеет несколько отличий от оригинального:
- для связи с ПК используется не ethernet, а последовательный порт, 12Мбод, это проще;
- используется АЦП платы Марсоход2 20MSamples/sec, всего 8бит, то есть разрядности в вычислениях и разрядности фильтров в проекте получаются другие;
- корректирующий FIR фильтр перерасcчитан на меньшее число тапов (21), так как немного не хватает умножителей в ПЛИС Cyclone III;
- используются 32-х битные (вместо 16-ти битных) выборки каналов I/Q, которые передаются в программу HDSDR — это значительно улучшает свойства приемника.
Подробнее о проекте написано вот здесь.
Исходники можно взять на github github.com/marsohod4you/FPGA_SDR.
Есть еще один мой проект: FM радиопередатчик из той же самой платы Марсоход2.
Это вообще один из моих самых любимых проектов!
FM диапазон находится на частотах выше 80МГц, так что даже для ПЛИС манипулировать данными на таких частотах не очень просто.
Для имитации FM модулированного сигнала в ПЛИС был реализован вот такой модулятор:
Это 5 соединенных последовательно триггеров, но имеющие обратную связь назад на 5 или 4 шага. После сброса схемы в триггерах движется по большому кругу единичный импульс. На выходе схемы получается частота в 5 раз меньше, чем тактовая. Если тактовая около 450МГц, то на выходе схемы будет 90МГц.
Иногда на схему можно подавать управляющие импульсы short — и тогда единичка будет двигаться в триггерах по малому кругу, а частота на выходе схемы значительно возрастет и будет 450/4~112МГц. Таким образом, можно добиться некоторой девиации средней частоты, если вставлять короткие периоды среди нескольких длинных. Например, 4 длинных периода и один короткий — коэффициент деления получится 4,8, то есть при тактовой 450МГц на выходе получится 93,73МГц.
Тогда FM передатчик получается вот таким:
Принятый поток байт WAV файла (8 бит, моно) пропускается через заранее составленную таблицу, которая говорит, через сколько длинных периодов делать короткую вставку. Так можно добиться средней девиации частоты, например, в полосе 50КГц.
Весь проект описан вот здесь, в наше блоге: marsohod.org/projects/marsohod2/246-fmradio
Ну вот, получается, одна плата Марсоход2 позволяет пощупать такие разные темы связанные с радиосвязью: АМ передача, SDR прием, FM передача.
Ну и еще раз: с Днем Радио!
Поделиться с друзьями
Комментарии (4)
pftbest
07.05.2016 20:05+1А можно ли так ножку повредить? Нагрузка ведь индуктивная получается.
nckma
07.05.2016 20:12Пока таких повреждений не наблюдали…
Ну там токи маленькие, к тому же на плате Марсоход2 сделано так, что все пины ПЛИС идут через небольшой резистор, чтобы случайно во время экспериментов не повредить их.
iliasam
В статью не помешало бы добавить побольше фотографий, а то видео не всегда можно посмотреть.
Не слишком ли маленькое сопротивление резисторов перед АЦП приемника?
И конечно, даже самый простой LC фильтр высоких частот не помешал бы.
nckma
Может быть и маленькое сопротивление… эксперименты продолжаются.
А насчет фильтров — чего-то я с ними не дружу. И разными программами вроде QUCs считал, и наматывал руками катушечки по инструкциям http://coil32.ru/calc/one-layer.html как-то не получаются они у меня… Конечно фильтр — должен быть, тут спору нет. Постараюсь таки его сделать.