FPGA & Verilog БлогFPGA chips

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


update

Вероятно, вы обратили внимание, что внешний вид нашего сайта значительно изменился.

Сайт подвергся глубокой модернизации: были обновлены многие компоненты и плагины системы, установлена, более свежая версия PHP. Был значительно модернизирован шаблон. Мы надеемся, что новая версия сайта будет стабильной и некоторые проблемы безопасности будут устранены.

Самое главное - с новым интерфейсом просмотр страниц сайта на мобильных устройствах, смартфонах и планшетах становится более удобным.

Если вы обнаружите какие-то проблемы с сайтом, просьба оставить комментарии к этому посту или написать на почту Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

 

m2rpi programming from Ubuntu

Теперь программирование нашей FPGA платы Марсоход2RPI, работающей в связке с платой Raspberry, по сети из Quartus стало возможным и из Ubuntu Linux!

QuartusPrime19.1

Компания Intel уже довольно давно выпустила очередную версию САПР Quartus Prime, но вот наконец дошли руки попробовать. Я скачал Quartus Prime Lite Edition версии 19.1 для WIndows и для Linux. Инструкция для скачивания есть здесь. Пробовать я буду соответственно в Windows 10 Professional и в Ubuntu Desktop 18. Надо сказать, что 19.1 - даже на сегодняшний день не самая последняя версия. Точнее говоря, для Lite Edition - это последняя, но вот для версии Quartus Prime Pro Edition последняя версия уже сейчас 19.4. Ну, что же, для моих несложных проектов всегда хватало и бесплатной Lite Edition.

В Release Notes описаны изменения в программном обеспечении для новой версии. Из основного:

  • в проектах VHDL возможно придется модивицировать пути к модулям удаляя ведущий слэш "/" в файле QSF;
  • при использовании NIOS придется отдельно вручную ставить Eclipse IDE для NIOS;
  • удалена поддержка WIndows 7, 
  • удалена поддержка некоторых IP ядер для некоторых семейств микросхем, например, удалены IP DDR/DDR2 для Cyclone IV.

Отдельно говорится о том, что теперь Quartus Prime будет использовать подсистему WSL (Windows Subsystem for Linux), и якобы это должно дать прирост в производительности. Честно говоря не очень понятно для каких версий квартуса это будет работать. Я поставил Lite Edition и не ставил никаких WSL. Все работает, как и работало раньше. Возможно это все будет только для версий Standard или Pro.

Кроме этого, упомянуто, что в новой версии Quartus сделаны security updates, ну вероятно закрыты какие-то проблемы с безопасностью ПО. Наверное это важно.

Но меня, честно говоря в первую очередь интересует, как с новой версией квартуса будет работать наш программатор MBFTDI. Если кратко - работает. Если нужны подробности, то читайте дальше.

usb host block schema

В предыдущей статье я рассказал, как запустил свой собственный велосипед USB хост контроллер и как он работает в железе в плате Марсоход3. Там я в основном рассказывал, как взаимодействует управляющая программа с контроллером. Но вот как работает мой контроллер? Чтобы разобраться в этом нужно провести Verilog симуляцию.

Внутреннее устройство моего контроллера схематично показано рисунке выше.

Внутри контроллера есть:

  • входное FIFO, модуль generic_fifo_dc_gray fifo_in, сюда складываются все входящие команды и данные;
  • выходное FIFO, модуль generic_fifo_dc_gray fifo_out, отсюда внешние устройства будут забирать результат исполнения команды;
  • временное FIFO, generic_fifo_dc_gray fifo_out_tmp, где временно хранятся принятые из USB шины байты;
  • модуль USB передатчика ls_usb_send ls_usb_send_;
  • модуль USB приемника ls_usb_recv ls_usb_recv_;
  • машина состояний по регистру состояний state.

Рисунок довольно схематичный, но в целом отражает происходящее в хост контроллере.
Далее расскажу подробнее.

USB host controller schema in Intel Quartus Prime

Я сделал USB хост контроллер в FPGA для подключения Low Speed устройств, клавиатур или мышей. Немного расскажу про этот проект. Контроллер делается для платы Марсоход3/Марсоход3bis плюс шилд разъемов. Тем не менее, так же все должно работать и на платах Марсоход2 или Марсоход2bis или других FPGA платах (если сделать правильные назначения сигналов проекта). В этом проекте есть два компонента, аппаратный и программный:

  • USB хост контроллер выполнен в среде Intel Quartus Prime Lite, топ модуль в виде схемы, остальные модули - это Verilog HDL;
  • Программа управления, написана на C/C++ в среде Visual Studio. Программа открывает последовательный порт, который связывает FPGA плату и компьютер. Через последовательный порт программа отправляет управляющие команды USB хост контроллеру и получает от него результат исполнения команд и принятые данные.

Ниже постараюсь рассказать подробнее, но больше про программный компонент.