FPGA & Verilog БлогFPGA chips

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



Я продолжил работу над своим проектом USB хост контроллера для платы Марсоход3. Описание первой версии проекта вот здесь. Там я подключал USB мышь. Теперь в моем проекте уже есть два USB порта и они все так же управляются через последовательный порт.

Это видео демонстрирует работу хост контроллера и подключенных к плате мыши и клавиатуры. На плату Марсоход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.

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