МАРСОХОД

Open Source Hardware Project

FPGA & CPLD Блогchips

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


Структура библиотеки Winrad DLL для SDR радио

vs logo

Программа радиоприемника HDSDR может взаимодействовать с аппаратными SDR приемниками разных производителей. Чтобы добавить поддержку нашей платы Марсоход2 как SDR приемника придется написать интерфейсную DLL со специальным набором экспортируемых функций. Этот набор функций — Winrad API.

На самом деле, Winrad API довольно хорошо описано http://www.winrad.org/bin/Winrad_Extio.pdf , там в PDF даже есть фрагмент кода.

Имеющийся код мне придется адаптировать под прием и передачу через последовательный порт и под протокол передачи, который мы сами себе придумали (5-ти байтные пакеты).

Вкратце расскажу, что же такое эта Winrad DLL. Winrad DLL - это динамически загружаемая библиотека, которая предоставляет программе HDSDR интерфейс для работы с аппаратным приемником. Библиотека Winrad DLL обязана предоставить некоторый минимальный набор функций.

Протокол передачи для 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 я пожалуй смогу предложить.

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


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