Что-то давно на Хабре не было статей про FPGA и я решил немножко восполнить этот пробел. Расскажу про нашу новую плату на ПЛИС Cyclone I. Да-да, вы правильно прочитали. На плате стоит первый циклон компании Альтера. Микросхеме больше десяти лет, но еще поработает. Причины использования этого чипа думаю всем понятны: санкции и плюс недавно случившийся мировой кризис полупроводников, который еще не вполне закончился.

Цель разработки этой платы — создать по возможности недорогую FPGA плату для студентов из минимального числа доступных и имеющихся в наличии компонентов. Далее давайте рассмотрим плату подробнее.

В ПЛИС EP1C12Q240C8 содержатся 12060 логических элементов, 239616 бит встроенной памяти, два PLL. Так же, на плате установлены:
  • Кварцевый генератор 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;
  • Разъем Active Serial для прошивки флэш памяти автозагрузки ПЛИС тем же самым программатором MBFTDI или UsbBlaster.
Вот здесь на фото подписано расположение компонентов:



Как видите, всего по минимуму, но тем не менее, осваивать технологию FPGA на такой плате вполне можно. На плате нет встроенного JTAG программатора, но прямо на плату сверху можно установить и использовать программатор MBFTDI:



При установке программатора MBFTDI получается полноценное рабочее место разработчика ПЛИС. Этот программатор хорош тем, что он дает JTAG для загрузки ПЛИС, последовательный порт для связи ПК к ПЛИС и питание плате через USB кабель.

Для платы MCY112 уже созданы несколько демонстрационных проектов и их можно взять и посмотреть на github.com/marsohod4you/MCY112

Проекты как вы понимаете выполнены в среде САПР Altera Quartus Web Edition v9.1. Хорошо, что аппаратная разработка в отличии от того же Web очень консервативна и среда Quartus v9.1 не так уж и сильно отличается от современных сред Intel Quartus v22.

Среди опубликованных на гитхабе проектов для платы MCY112 есть совсем простой проект типа двоичного счетчика на светодиодах и семисегментных индикаторах. Но есть и проекты посложнее. Например, есть проекты вывод звука на Дельта-Сигма ЦАП или проект записи и чтения SPI флэш памяти. С помощью этой простой платы пользователь даже сможет запустить и исследовать RISC-V микроконтроллер PICORV32. Микроконтроллер стартует прямо из SPI флэш памяти и программа выводит в консоль последовательного порта свои сообщения:



Архитектура микропроцессоров RISC-V становится всё более популярной, и вот с помощью даже такой простой FPGA платы MCY112 можно заниматься исследованиями RISC-V.

Еще один интересный проект, опубликованный для этой платы на гитхабе — это проект фреймбуффера. На плате стоит SDRAM и содержимое памяти можно отображать на экране монитора через VGA. Вы спросите, а где же разъем VGA? А всё просто. На плате стоят 40-ка пиновые разъемы квазисовместимые с Raspberry. На плате MCY112 по крайней мере питание и земля разъема точно совпадают с распиновкой разъема Распбери. Сигналы Raspberry GPIO по возможности присоединены к ПЛИС Cyclone. Таким образом, можно некоторые платы расширения Raspberry поставить на эту плату MCY112. Например, можно поставить адаптер VGA:



После этого, можно откомпилировать готовый проект фреймбуффера, загрузить его в ПЛИС и потом с компьютера через последовательный порт записывать в память видеоадаптера картинки:


Но и это еще не все возможности платы. Есть еще редкая возможность присоединить FPGA плату MCY112 к микрокомпьютеру Raspberry Pi вот так:



В этом случае получается связка FPGA-Микрокомпьютер. Raspberry может загружать ПЛИС через зарезервированные GPIO пины например из OpenOCD:

//inout wire gpio0, //JTAG TMS
//inout wire gpio1, //JTAG TDO
//inout wire gpio7, //JTAG TCK
//inout wire gpio11, //JTAG TDI

Остальные же пины могут использоваться для обмена данными из Распбери в ПЛИС. В этой связке можно создавать проекты для управления сложными станками или роботами.

Если же привередливый читатель всё же скажет, что Cyclone I морально устарел (а в нынешней санкционной ситуации у нас не очень много возможностей), то у нас есть еще другая новая FPGA плата на китайской FPGA микросхеме Gowin, плата называется Марсоход3GW. Однако, про неё я расскажу как нибудь в другой раз.

Комментарии (4)


  1. sim31r
    22.06.2023 08:26
    +1

    Cyclone I морально устарел

    Ну более новые и дороже заметно.


  1. namee
    22.06.2023 08:26

    А что с толерантностью к +5В ?


    1. mpa4b
      22.06.2023 08:26

      В cyclone её нет. Последний раз была в acex'ах.


  1. kotenev
    22.06.2023 08:26

    Интересные у вас проекты на сайте. Заказал, в итоге, все три доступные в магазине платы с FPGA.