FPGA & Verilog БлогFPGA chips

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


Как-то незаметно прошло уже десять дней зимы. Приближается Новый Год. Чтобы поднять себе и другим настроение захотелось мне сделать новогоднюю игрушку. Но не такую, что бы на ёлку вешать, а что-то поставить на стол и чтобы радовало. Особого плана не было. Сперва я думал просто найти на сайте  thingerverse что нибудь интересненькое и напечатать на 3D принтере. Мне понравилась вот эта медведица: https://www.thingiverse.com/thing:5160013

И я просто стал печатать. Модель-то простая, тут несколько слоёв, которые потом нужно склеить ну и готово.
Вот такой один из слоёв:

bear layer

Когда я напечатал и склеил всю эту модель, то уже пришла мысль "а куда её поставить". Ну и пошло дело дальше. Решил сделать модель куска льда, установить туда медведицу. Но потом подумал, что если будет постамент в виде льда, то туда можно спрятать какое-то устройство, которое будет делать подсветку, например синими светодиодами. Да у меня же есть специально маленькая платка MA3128! Я её могу туда поставить и еще она может вращать льдину, если встроить моторчик.

В общем, "проект выходного дня" как-то стал сильно разрастаться! Далее расскажу, как там всё устроено.

На этом видео - демонстрация лабораторной работы Школы Синтеза Цифровых Схем по распознаванию нот. К плате MCY316 аудио проводом подключен смартфон Андроид на котором я играю ноты, а плата распознает их и отображает на 7-ми сегментном индикаторе.

Сейчас занимаюсь портированием проектов Юрия Панчула Школы Синтеза Цифровых Схем для наших плат MCY112 и MCY316. Обе платы в принципе подходят для выполнения лабораторных работ.

Исходные тексты проектов находятся вот здесь https://github.com/yuri-panchul/basics-graphics-music
А я сделал форк этих проектов, надеюсь потом мои изменения вольются в основной репозиторий.

Структура всего проекта я считаю не сложная.

Есть папка boards, где расположены специфичные для каждой отдельной платы назначения выводов, здесь же находятся какие-то дополнительные модули и самое главное модуль самого верхнего уровня board_specific_top. Таким образом, удается запустить лабораторные работы на самых разных платах. Я добавил в эту папку две новых папки marsohod_mcy112 и marsohod_mcy316 для двух наших плат MCY112 (на базе Cyclone I) и MCY316 (на Cyclone III).

Далее расскажу чуть подробнее о лабораторных работах.

mcy316

Выпущена наша новая плата MCY316.

На плате MCY316 установлена ПЛИС EP3C16Q240C8, в ней содержатся 15408 логических элементов, 516098 бит встроенной памяти, четыре PLL и 112 умножиетелей. Так же, на плате стоят:

- Кварцевый генератор 100Мгц;
- Две пользовательские кнопки;
- Восемь пользовательских светодиодов и 7-ми сегментный индикатор;
- SDRAM IS42S32200B, 8 (или 16) Мбайт, 32 разряда шина данных (на обратной стороне платы);
- Двухканальная аудио АЦП PCM1801U,16 бит, 48 Кгц;
- Двухканальный аудио выход для Дельта Сигма ЦАП (8бит);
- Три разъема для установки плат расширения, квазисовместимые с Raspberry Pi;
- SPI Flash W25Q16, 2 Мбайта для автозагрузки ПЛИС:
- SPI Flash W25Q16, 2 Мбайта для пользовательских данных;
- Разъем для установки USB JTAG программатора, например MBFTDI или UsbBlaster

Плата отличается довольно ёмкой ПЛИС (почти 16 тысяч логических элементов) и довольно большим количеством доступных пользователю выводов GPIO.

Дальше более подробное описание платы и проектов для неё.

На этом демонстрационном видео показана очень простая игра Теннис, реализованная в плате Марсоход3GW.

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

Про HDMI вывод я уже писал раньше, впрочем, как и про захват данных из АЦП.

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

 

cat on hdmi

У микросхем FPGA компании Gowin может быть встроенное динамическое ОЗУ, причем один из двух возможных типов:

  • классическая SDR SDRAM типа MT48LC4M16 (64 мегабита);
  • PSRAM (псевдо статическая) HyperRAM типа W955D8MBYA (2*32 мегабита ).

HyperRAM отличается от "классики" интерфейсом и наличием встроенной системы регенерации. Конкретно в чипе GW1NR-UV9QN88PC6/I5, установленном на нашей плате Марсоход3GW, есть ОЗУ именно второго типа. 

На основе этой встроенной памяти создан этот проект фреймбуффера. Можно загружать битмапы прямо в чип FPGA платы Марсоход3GW и отображать их через HDMI выход на мониторе.

Проект находится в папке _hdmi_psram_fb репозитория гитхаб https://github.com/marsohod4you/Marsohod3GW.