SDR-Radio в плате Марсоход3GW2

Это демонстрация SDR-Radio реализованного в FPGA плате Марсоход3GW2.

Здесь почти 20 минут записи на которой я сканирую эфир от 800КГц до 10МГц. Мной было найдено довольно много радиостанций (частоты в КГц):

855 (музыка), 864, 999 (русский), 1026, 1035 (русский), 1071, 1188, 1377, 1413 (русский), 6015, 6040, 6070, 6145, 6165 (английский), 7220, 7255 (английский), 7265 (музыка, китайский на русском), 7300 (музыка), 7350 (музыка), 7420, 7445 (китайский), 9370, 9485, 9630 (музыка), 9760, 9820, 9860.

Иногда я слышал французскую речь, иногда итальянскую или арабскую (но тут могу ошибаться). Многое зависит от времени прослушивания эфира и даже от погоды. Я заметил, что для меня появляется довольно много станций именно в вечернее время, где-то после 20:00 по московскому времени. В то же время днём или утром или днём не слышно почти ничего.

Конечно, я должен признать, что качество звука неудовлетворительное. Многие передачи только слышно, что есть какое-то вещание, но даже слов не разобрать. Некоторые передачи более четкие. Зависит от мощности передатчика. К примеру, в моем регионе 999КГц вещает довольно сильно. Да и китайские станции вроде 7445 довольно мощные.

Однако, я думаю, что причин неуверенного и некачественного приёма есть несколько:

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

Это основные причины.

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

Тем не менее, я все же считаю, этот FPGA проект интересным с точки зрения обучения и демонстрации возможности цифровой обработки сигналов. 

Далее расскажу подробнее о приёмнике и его реализации в FPGA.

Я уже делал похожий радиоприемник в плате Марсоход2. По сути дела этот проект есть просто продолжение ранее начатого и портирование на новую элементную базу. Теперь у меня FPGA чип от компании Gowin на плате Марсоход3GW2.

Структурная схема приёмника остаётся почти такой же как и была раньше:

sdr radio structure

Из не очень принципиальных отличий здесь только то, что 

  1. оцифровка входного сигнала теперь ведется на частоте 50МГц, а не на 20МГц, так как на последних платах Марсоход3GW2 стоят пятидесятимегагерцовые АЦП;
  2. децимация сигнала теперь идет не в 200 раз, а в 500, чтобы получить на выходе CIC те же самые 100 КВыборки в секунду, как и раньше;
  3. CIC и FIR фильтры теперь реализованы с помощью IP Core Gowin, а не альтеровские как раньше (раньше была ПЛИС Альтеры);
  4. используется один экземпляр FIR фильтра, но двухканальный.

NCO (Numerically Controlled Oscillator) теперь реализован с помощью компонента Gowin CORDIC. Про это у меня был отдельный проект и отдельная статья.

Фильтры Gowin IP Core для CIC и FIR фильтров я так же изучал в отдельном проекте и даже провёл измерение их фактической Амплитудно-Частотной Характеристики.

Для полноты картины приведу фото моей антенны:

antenna

Как я уже сказал, это просто кусок провода, который свисает с балкона. К плате Марсоход3GW2 он подключен непосредственно ко входу АЦП и через делитель напряжения, у меня это переменный резистор и я могу выставить центральную точку:

antenna conn

На самом деле, даже если у вас нет никакой антенны вы можете испытать приемник в работе. В проекте FPGA  предусмотрен встроенный "бипер", модуль который иммитирует АМ сигнал на частоте 1562,5КГц. В верилог модуле бипера есть таблица синусов на 32 элемента. Модуль работает на частоте 50МГц. Получается 50000000 / 32 = 1562500 Гц несущая частота ну и она модулирует периодические сигналы бип-бип-бип.. Если нажать кнопку KEY0 на плате, то входные сигналы приёмника будут браться не из АЦП, а с бипера. Таким образом можно убедиться, что проект работает даже в лабораторных условиях, без антенны.

Какое ПО нужно на компьютере, чтобы испытать приёмник в работе?

Я использую программу HDSDR для ОС Windows, программу я скачиваю с сайта https://www.hdsdr.de/index.html. Это основное ПО. К каждой аппаратной части нужен свой плагин. В нашем случае я должен предоставить специальную DLL. Исходные тексты этой DLL являются частью этого проекта. Вы можете взять их на гитхабе https://github.com/marsohod4you/Marsohod3GW/tree/Marsohod3GW2_GW1NR-LV9QN88PC6I5/_sw_def_radio в папке ExtIO_FPGA. Это проект для Visual Studio. Готовая DLL ExtIO_Example.dll так же есть в комплекте. Её можно просто скопировать в папку, где установлена HDSDR и всё.

Хочу предупредить, что DLL работает с фиксированным номером порта COM8. При подключении платы Марсоход3GW2 к ПК с ОС Windows в диспетчере устройств вы должны обнаружить два последовательных порта. Обычно первый порт это программатор, а второй это последовательный порт для связи платы с компьютером. Сделайте назначение свойств этому порту именно имя COM8. Тогда моя готовая ExtIO_Example.DLL будет работать. Иначе вам придется самому исправлять имя порта в программе и перекомпилировать её.

DLL открывает последовательный порт на скорости 12МБит/сек и через это соединение она по вызову от HDSDR посылает специальные команды в FPGA плату, чтобы установить нужную частоту приёмника. Так же через это же соединение, через последовательный порт принимаются отфильтрованные выборки сигналов, которые были получены путём оцифровки в радио диапазоне.

Итак, откомпилируйте FPGA проект _sw_def_radio и загрузите FPGA через программатор.

ExtIO_Example.DLL уже скопирована вами в папку программы HDSDR.

Запустите программу HDSDR и в ей настройках выберите звуковую плату. Установите чатоту приёма 1562500Гц и убедитесь, что установлен режим приёма AM (амплитудная модуляция, а там еще есть LSB, USB, FM и другие). Уже сейчас выдолжны слышать некоторый шум. Нажмите кнопку KEY0 на плате и вы должны услышать периодические сигналы встроенного АМ бипера. Если слышите, значит ваш приёмник работает. Теперь попробуйте подключить длинный кусок провода к АЦП и поймать какую ни будь радиостанцию. Надеюсь у вас получится.

Важная подготовительная работа, которая была проведена для создания проекта SDR-Radio в плате Марсоход3GW2:

  1. NCO на основе GOWIN CORDIC
  2. Исследование АЧХ фильтров CIC и FIR для SDR-Radio

Предыдущие статьи по теме SDR-Radio, которые были написаны еще для платы Марсоход2, но всё еще остаются актуальными:

  1. SDR-Radio в плате Марсоход2
  2. Протокол передачи данных SDR радио для Марсоход2.
  3. Структура Winrad DLL и отладка DLL в Microsoft Visual Studio.
  4. Расчет коэффициентов FIR фильтра в GNU Octave.

 

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