Изучаем САПР Altera Quartus II / Intel Quartus Prime, язык описания аппаратуры Verilog HDL и кое-что про VHDL. Программируем FPGA Altera / Intel Cyclone III, Cyclone IV, MAX II, MAX10. Экспериментируем с платами разработчика FPGA серии Марсоход, Марсоход2, Марсоход3. А еще разбираемся с FPGA Gowin.
В проекте rpi-hat-io я уже подключал шаговый моторчик 28byj-48 к плате MA3128 и заставлял вал моторчика вращаться. Сейчас я хочу сделать проект посложнее. Во-первых, я хочу подключить сразу 4 моторчика и управлять вращением каждого из них независимо. Во-вторых, мне хотелось бы избавиться в программе управления от программных задержек. Программные задержки вещь ненадежная. На микрокомпьютере Raspberry работает обычная десктопная операционная система, которая в принципе не может обеспечить высокую точность программных задержек.
Мне хотелось бы в ПЛИС платы MA3128 реализовать какую-то более сложную логику, чтобы можно было бы подать команду "выполнить шаг на двигателе N". В ПЛИС платы всего 128 логических элементов, как же быть? Попробуем сделать..
Второй проект для платы MA3128 будет немного сложнее, чем двоичный счетчик, описанный в предыдущей статье. Теперь я хочу установить нашу плату, как и задумывалось, на микрокомпьютер Raspberry Pi3. И даже подключу к плате шаговый микродвигатель. Плата MA3128 соединяется с Raspberry через 40ка пиновый разъем GPIO.
Следующий этап, нужно в CPLD нашей платы реализовать программируемые регистры, в которые можно писать из Python программы, работающей на микрокомпьютере. Программа на питоне сможет записывать значения в регистры ПЛИС и таким образом управлять светодиодами платы, а так же выводами на шаговые микромоторчики.
Сделать это не трудно. Нужно только определиться, какие выводы GPIO в Raspberry мы будем применять для этих целей.
К каждой нашей FPGA или CPLD плате мы всегда делаем самый первый проект очень простым. Обычно это что-то вроде двоичного счетчика, отображающего биты на светодиодах платы. Не будет исключением и плата MA3128 на базе CPLD Altera серии MAX3000 EPM3128ATC100. Все-таки начинать изучение чего-то нового, новой платы всегда лучше с чего-то простого.
Плата МА3128 это простейший контроллер на базе CPLD Alterа. Плата предназначена для установки на микрокомьютеры Raspberry для расширения их функциональных возможностей. Плата, например, позволит подключить маломощные шаговые двигатели или сервомашинки к Raspberry или управлять какими-то другими устройствами.
Недавно я занимался портированием системы Syntacore RISC-V на плату Марсоход3. В принципе, это было не очень трудно, так как на этой плате используется емкий FPGA чип MAX10 с 50ю тысячами логических элементов. А можно ли запустить хоть какой-то RISC-V на более слабом FPGA чипе? Попробую плату Марсоход3bis. На этой плате, как и на плате Марсоход3, стоит Intel MAX10, но здесь всего 8 тысяч логических элементов. На плате Марсоход3bis стоит микросхема FPGA 10M08SAE144C8. Так получится или нет?
Подробнее...