Программирование ПЛИС платы M2RPI по сети из Quartus

Программирование ПЛИС платы M2RPI, подключенной к Raspberry теперь возможно удаленно по сети прямо из среды Intel Quartus Prime. В этом демонстрационном видео показывается, как это можно сделать. Ниже вы можете прочитать краткую инструкцию по установке и настройке сетевого программатора.

Здесь видно две платы распберри:

raspberry pi3 or pi0w connected to FPGA board m2rpi

 

Первая плата - это Raspberry Pi-Zero W, с интерфейсом WiFi, а вторая плата - это плата Raspberry Pi3. К обеим платам через переходник подключены платы M2RPI с ПЛИС Intel Cyclone IV. Подробнее о самой плате можно почитать здесь.

Скачайте программное обеспечение в нашем разделе "загрузки":

Распакуйте архив и скопируйте файлы ./nw_jtag_srv на Raspberry, а файл jtag_hw_net_blaster64.dll в папку d:\altera\17.0\quartus\bin64\ (ну или какая у вас на компьютере). Версии квартуса могут быть разные: и 13.1 Web Edition, и 16.0, и 17.1.. должно работать со всеми версиями.

Удаленное управление обеими платами распберри осуществляется с помощью Putty/SSH. В окне терминала запускается специальная программа ./nw_jtag_srv, которая выполняет роль сервера:

raspberry pi JTAG server for Intel Quartus Prime

Теперь откройте в среде Quartus наш самый первый проект для платы M2RPI и откомпилируйте его.

Запустите программатор квартуса из меню Tools => Programmer:

network jtag dll driver for Intel Quartus Prime

При нажатии кнопки "Hardware Setup" появляется диалоговое окно, в котором нужно выбрать какой именно программатор нас интересует. Различать их можно по IP адресам микрокомпьютеров Raspberry.

На самом деле, когда нажимаете кнопку Hardware Setup, наш DLL драйвер квартуса (jtag_hw_net_blaster64.dll) посылает специальный широковещательный пакет UDP broadcast всем в известных сетях. На распберри мы запускаем nw_jtag_dll, который слушает эти запросы и отвечает специальным UDP пакетом "я здесь". Так DLL получает сведения обо всех наших JTAG серверах вокруг.

Если по каким-то причинам, в вашей сети будут проблемы с прохождением широковещательных пакетов, то это можно исправить если поместить специальный конфигурационный файл jconfig.txt рядом с DLL, в файле, например, вот такие строки:

ipaddr0=10.8.0.116
ipaddr1=10.8.0.17

В моем случае, как в видео, Pi-zero W подключен по WiFi и имеет IP адрес 10.8.0.116, а вторая плата Raspberry Pi3 подключена с помощью Ethernet кабеля и имеет адрес 10.8.0.17. У вас, конечно, адреса будут другие. Я думаю вам не составит труда самостоятельно разобраться, как назначать IP адреса для Raspberry.

Итак, выбираете IP адрес, нажимаете кнопку Close, затем в окне программатора кнопку Start. Через несколько секунд проект ПЛИС загружается в Cyclone IV и начинает работать.

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

На самом деле это уже вторая версия nw_jtag_srv и драйвера DLL. Сейчас исправлены следующие ошибки и внесены улучшения:

  • увеличен таймаут поиска сетевых программаторов с 0,5 секунды до 1 секунды;
  • исправлена ошибка, теперь DLL обнаруживает более одного сетевого программатора;
  • добавлена поддержка конфигурационного файла, где можно явно задавать IP адреса Raspberry;
  • сервер nw_jtag_srv собран под разные SOC raspberry Pi-zero и Pi3 (разные чипы BCM2835 и BCM2709 имеют разные диапазоны адресов GPIO).

Следует так же заметить, что через сетевой программатор можно не только загружать ПЛИС платы M2RPI, но и вести внутрисхемную отладку SignalTap удаленно из среды САПР Intel Quartus Prime.

 

 

Добавить комментарий