МАРСОХОД

Open Source Hardware Project

FPGA & CPLD Блогchips

САПР Altera Quartus II / Quartus Prime, язык Verilog HDL, ПЛИС Cyclone III, Cyclone IV, MAX II, MAX10.
Платы разработчика серии Марсоход, Марсоход2, Марсоход3.


Протокол передачи для SDR радио

5 byte serial port protocol for SDR radio

В продолжение предыдущей статьи об SDR радиоприемнике на основе платы Марсоход2.

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

В нашем SDR радио прием и первичная обработка происходят в плате Марсоход2. Однако потом все накопленные данные нужно передать программе SDR радио. Я использую программу HDSDR из http://www.hdsdr.de/index.html

Чтобы программа HDSDR могла взаимодействовать с нашей платой нужно написать специальную DLL, которая будет экспортировать функции согласно спецификации Winrad API, http://www.winrad.org/bin/Winrad_Extio.pdf. Чтобы понять какие данные нужно передавать, как передавать, как часто передавать — придется изучить эту спецификацию Winrad да и вообще нужно основательно погрузиться в тему цифрового радио.

В своей работе я значительно опирался на статью на хабре "Простой SDR приёмник на ПЛИС".

Из изученного стало понятно, что:

  • данные пересылаемые по направлению от HDSDR к плате редки и малы — это всего лишь целое число, определяющее частоту тюнера. Может быть 32-х битным числом.
  • данные от платы к компьютеру, к программе HDSDR – это поток, например, 50000 выборок в секунду. Каждая выборка — это пара чисел, так называемые I / Q каналы. Числа могут быть целые знаковые 16-ти битные, 24-х битные, 32-х битные или даже 32-х битные числа с плавающей точкой.

Есть несколько способов передавать данные из платы Марсоход2 в компьютер:

  • поставить Ethernet шилд и передавать данные по сети, хоть UDP пакетами
  • передавать через последовательный порт, на плате стоит USB-FTDI чип и у него скорость последовательного порта до 12 Мбит/сек. Вероятно этого хватит?
  • можно еще передавать через тот же USB-FTDI в режиме MPSSE, тогда скорость передачи будет еще больше.

Из всех способов передачи самый простой — это последовательный порт. Давайте попробуем посчитать, хватит ли его пропускной способности.

SDR радио приемник.

7-го мая мы будем отмечать день Радио. К этому празднику мы подготовили проект — SDR радио приемник из платы Марсоход2. Теперь наше радио работает!

На видео демонстрации выше видно, что к ноутбуку кабелем USB подключена плата Марсоход2. К плате Марсоход2 подключен просто кусок провода примерно 5 метров, он вывешен на удочке на улицу в окно нашей лаборатории. На ноутбуке запущена программа HDSDR с помощью которой можно перестраивать приемник и слушать радио трансляции. Мы не делали никаких предварительных активных усилителей или фильтров (да, мы знаем, что это не очень правильно), но вот так — просто прием на кусок провода, подключенный к АЦП платы. Несколько станций в принципе ловятся: некоторые на английском языке, некоторые неизвестных нам языках, может китайский или вьетнамский. Довольно сильный сигнал от http://russian.cri.cn/ – международное радио Китая, на русском языке — как раз на видео ролике вверху мы его и ловим.

Вот еще одна видео демонстрация:

Может быть эта демонстрация даже чем-то еще интересней. Здесь одна плата Марсоход2 выступает в роли АМ передатчика и транслирует музыку в эфир на антенну — кусок провода свернутый в колечко. У нас был проект АМ радио передатчика — вот его и используем (правда немного модифицированный проект, здесь несущая частота 7МГц). Ну а вторая плата Марсоход2 выступает в роли SDR радиоприемника. Одной платой передаем радиосигнал, а второй ловим и слушаем. Ну да, дистанция не большая — всего-то метр, но все равно интересно.

Игра Жизнь 64x32

Игра "жизнь". Классика жанра.

Для платы Марсоход2 мы ее уже делали, но там была проблемка - маленькое игровое поле.
Поскольку в плате Марсоход3 с ПЛИС MAX10 у нас есть 50 тысяч логических элементов, то теперь здесь можно значительно расширить игровое поле. Теперь в этом проекте доступно 64x32 клетки. Проект для платы Марсоход3 фактически повторяет проект платы Марсоход2, но есть и отличия - вместо VGA монитора теперь подключается HDMI монитор.

Весь проект можно взять на гитхабе: https://github.com/marsohod4you/FPGA_game_life

 

КИХ фильтр на Verilog

title img

В этой статье я хочу рассказать о своих экспериментах по созданию простого параметрического цифрового КИХ фильтра на Verilog HDL. До сегодняшнего дня я старался избегать тем цифровой обработки сигналов на нашем сайте: все таки это довольно сложно. Ну а когда сложно, то приходится много времени тратить просто на самостоятельное изучение вопроса. Вот сейчас только неделю читал сайт http://www.dsplib.ru/content/filters/ch10/ch10.html - очень интересный ресурс, где все довольно лаконично и понятно. После прочтения нескольких статей с сайта dsplib.ru я понял, что теорию мне лучше не писать. А вот свое понимание и свою реализацию фильтра на Verilog я пожалуй смогу предложить.

Итак, цифровые фильтры - это устройства цифровой обработки сигналов.

Отрисовка спектра сигнала в программе на Python

scipy

Меня тут немного покритиковали за мою предыдущую статью. Я сделал генератор псевдослучайных чисел в ПЛИС платы Марсоход3бис и сказал, что мол визуально шумит - значит работает. Визуально распределение равномерное - значит - работает.

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

Кто не знает, что такое спектр, пожалуй дам ссылку на свою же очень давнюю статью.

Теперь к делу..


facebook  GitHub  YouTube  Twitter
Вы здесь: Начало