Изучаем САПР Altera Quartus II / Intel Quartus Prime, язык описания аппаратуры Verilog HDL и кое-что про VHDL. Программируем FPGA Altera / Intel Cyclone III, Cyclone IV, MAX II, MAX10. Экспериментируем с платами разработчика FPGA серии Марсоход, Марсоход2, Марсоход3. А еще разбираемся с FPGA Gowin.
На плате MCY112 установлено 2 одинаковых чипа флэш памяти W25Q16, 2 Мегабайта в каждом чипе. Первый чип (1) предназначен для хранения пользовательских данных, например, для хранения программы процессора RISC-V. Второй чип (2) может использоваться для автозагрузки FPGA Cyclone после подачи питания на плату. В этой статье я расскажу, как программировать оба чипа.
Самый простой проект, который можно придумать для любой FPGA платы это мигание светодиодами. Это своего рода минимальная программа "Hello World!", которую пишут начинающие программисты на C/C++. Для всех наших плат ранее мы делали подобные проекты. Не будет исключением и плата MCY112 построенная на ПЛИС Cyclone EP1C12Q240C8.
Я было даже подумал снять демонстрационное видео про этот проект, но снимать там особо нечего. Видео-то я снял, только смотреть я думаю его будет скучно. Поэтому просто сделал простую GIF анимацию.
Мы разработали новую FPGA плату MCY112 с чипом ПЛИС Altera Cyclone I EP1C12Q240C8. Мы понимаем, что ПЛИС Cyclone I не самый новый чип на сегодняшний день, но его достоинство - он есть в наличии и он более-менее доступен по цене. И главное - на этой плате очень много пользовательских выводов! Можно много чего подключить!
Сегодня решил провести эксперимент. Можно ли подключить плату MA3128 с ПЛИС Альтеры EPM3128ATC100 не к Raspberry Pi3 или Pi4, как это задумывалось изначально, а к какому нибудь другому микрокомпьютеру. У меня в наличии имеется несколько одноплатников. Попробую на Orange Pi PC2. Интересно испытать нашу MA3128 на совместимость с другими платами, так как цены на оригинальные Raspberry Pi микрокомпьютеры в настоящее время не радуют. Что получится?
В проекте rpi-hat-io я уже подключал шаговый моторчик 28byj-48 к плате MA3128 и заставлял вал моторчика вращаться. Сейчас я хочу сделать проект посложнее. Во-первых, я хочу подключить сразу 4 моторчика и управлять вращением каждого из них независимо. Во-вторых, мне хотелось бы избавиться в программе управления от программных задержек. Программные задержки вещь ненадежная. На микрокомпьютере Raspberry работает обычная десктопная операционная система, которая в принципе не может обеспечить высокую точность программных задержек.
Мне хотелось бы в ПЛИС платы MA3128 реализовать какую-то более сложную логику, чтобы можно было бы подать команду "выполнить шаг на двигателе N". В ПЛИС платы всего 128 логических элементов, как же быть? Попробуем сделать..
Подробнее...