April 11th, 2012

Подготовка к лабораторным работам с ПЛИС (2) - установка Xilinx ISE WebPack и Digilent Adept2

Для разработки программ на Verilog и программирования ими ПЛИС (FPGA) Digilent Basys2 был выбран следующий набор программного обеспечения:

1. Интегрированная среда разработки Xilinx ISE WebPack (WebPack - вариант бесплатной лицензии) - содержит:
- Редактор кода HDL - Verilog и VHDL - с подсветкой и проверкой синтаксиса
- Инструмент синтеза прошивки для ПЛИС Digilent Basys2 (Spartan 3E) - генерирует файл с расширением ".bit" в проекте - это важно
- Симулятор ISim входит в комплект дистрибутива и интегрирован в среду разработки (позволяет сразу просматривать графики сигналов модулей в удобном графическом интерфейсе)
- Встроенные средства программирвоания (заливки) прошивки на ПЛИС Digilent Basys2 отсутствуют (точнее требуют дополнительной настройки, без которой можно обойтись).

2. Инструменты Digilent Adept 2 - позволяют программировать устройства ПЛИС Digilent (в том числе Basys2) файлами с расширением ".bit", сгенерированными средой Xilinx из программы на HDL (Verilog или VHDL - не важно).

Этого набора оказалось достаточно для того, чтобы:
- написать программу на Verilog
- увидеть результат работы вживую на ПЛИС Digilent Basys2
- проверить возможный результат работы на графике сигнала в симуляторе без запуска на живом ПЛИС
- для обеих программ доступны официальные версии для ОС GNU/Linux

Далее инструкции по установке - все в общем в основном стандартно, но в процессе было встречено несколько небольших нюансов, зная про которые заранее можно сэкономить немного времени на решении нескольких не очень очевидных проблем.

В частности, как с Xilinx ISE, так и с Digilent Adept2 можно встретить нетривиальные проблемы на относительно свежих дистрибутивах с самыми новыми версиями ядра linux и некоторых системных библиотек. Я запускал их на следующих конфигурациях:

1. OpenSUSE 12.1 64 bit с множеством обновлений пакетов из репозиториев - ядро linux 3.2.9:
- Xilinx ISE установился и запустился, но в дальнейшем вылезли проблемы как с генерацией bit-файла с прошивкой для FPGA-платы, так и с запуском симулятора ISim, которые решить так и не удалось.
- Digilent Adept2 установились, но при запуске приложение djtgcfg сразу некорректно завершает работу с сообщением segmentation fault (решить также не удалось - в службе поддержки сказали, что дело скорее всего в слишком новом ядре).

2. Ubuntu 11.10 64 bit внутри VirtualBox (версия с oracle.com с проприетарным модулем проброса USB внутрь гостевой системы):
- Xilinx ISE установилась без проблем, симулятор и генератор bit-файла заработали после кое-какого исправления в установленном приложении (см ниже).
- Digilent Adept 2 установились и заработали без проблем.

3. Mandriva 2010 32 bit - в рабочей лаборатории, ядро 2.6.31:
- Xilinx ISE установилась без проблем, симулятор и генератор bit-файла заработали после кое-какого исправления в установленном приложении (см ниже).
- Digilent Adept 2 установились и заработали без проблем.

Установка Xilinx ISE WebPack

Скачать дистрибутив: xilinx.com -> downloads: http://www.xilinx.com/support/download/index.htm

Скачать файл файл с ахривом установщика "All Platforms" (содержит платформы Linux32, Linux64 и Windows) - 7.2Гб или "Full Installer for Linux" (содержит платформы Linux32 и Linux64) - 5.8Гб.

Распаковать архив tar:

> tar -xf Xilinx_ISE_DS_13.4_O.87xd.3.0.tar

Запустить установщик:

> cd Xilinx_ISE_DS_13.4_O.87xd.3.0
> ./xsetup

Установщик можно запускать от имени обычного пользователя - прав администратора (рута) не потребуется, если выбрать разрешенный текущему пользователю для записи каталог (например внутри /home) и если не устанавливать драверы USB-кабеля (их устанавливать в любом случае не рекомеднуется - вместо них у нас будет отдельный Digilent Adept).

Начало стандартное:






Collapse )
Если все нормально, через несколько секунд откроется окно с симулятором следующего вида:



Если не все нормально и симулятор не запустился, нужно опять же проверить вкладку Errors, посмотреть сообщение об ошибке и попытаться найти решение в интернете или обратиться на форум http://forums.xilinx.com/.

Решение одной проблемы

В варианте устновки на Mandriva 2010 при попытке запуска симулятора ISim в лог ошибок печатлось сообщение о проблеме запуска gcc, симулятор при этом не запускался.

Вариант решения проблемы был предложен в интернете и в данном случае сработал - нужно было удалить копии системной библиотеки libstdc++ из стандартной поставки Xilinx ISE - они хранятся сразу в двух каталогах:

> rm /opt/Xilinx/13.4/ISE_DS/common/lib/lin/libstdc++.so
> rm /opt/Xilinx/13.4/ISE_DS/common/lib/lin/libstdc++.so.6
> rm /opt/Xilinx/13.4/ISE_DS/common/lib/lin/libstdc++.so.6.0.8

> rm /opt/Xilinx/13.4/ISE_DS/ISE/lib/lin/libstdc++.so
> rm /opt/Xilinx/13.4/ISE_DS/ISE/lib/lin/libstdc++.so.6
> rm /opt/Xilinx/13.4/ISE_DS/ISE/lib/lin/libstdc++.so.6.0.8

Судя по всему симулятор ISim пытается запускать компилятор gcc, установленный в системе, и при этом исполняемый файл gcc не совместим с локальной копией библиотеки libstdc++, которую с собой тащит Xilinx и выставляет для нее наивысший приоритет загрузки в стартовом скрипте. При этом если удалить копию libstdc++ из каталога устновки Xilinx, Xilinx вполне нормально работает с системной библиотекой libstdc++. Такой трюк скорее всего пройдет не на любом дистрибутиве, но в данном случае сработал.

Установка Digilent Adept 2 Linux

Скачать дистрибутив набора инструментов для программирования плат ПЛИС Xilinx Dililent Digilent Adept 2 можно на сайте производителя - регистрация не требуется. Требуется два архива (выбрать архитектуру x86 или x86_64) - Runtime и Utilities, SDK не нужен.

Collapse )

Проверка программирования платы синтезированной прошивкой

Если "djtgcfg enum" корректно распознает подключенную плату, можно попробовать запрограммировать ее bit-файлом, который на предыдущем этапе был синтезирован средой Xilinx ISE из тестового проекта.

Для этого в терминале нужно зайти в каталог теспового проекта Xilinx, созданного в предыдущем разделе, и убедиться, что сгенерированный bit-файл на месте:

> cd ~/Documents/hdl/test_basys2/
> ls *.bit
test1.bit

После этого запрограммировать плату этим bit-файлом:

> djtgcfg prog -d Basys2 -i 1 --file ./test1.bit
Erasing PROM. Do not touch your board. This may take a few minutes...
Erase succeeded.
Programming device. Do not touch your board. This may take a few minutes...
Programming succeeded.




После того, как команда завершила выполнение и сообщила об успехе, можно включить/выключить переключатель Power на плате и потом пощелкать самым правым переключателем, чтобы включать-выключать самую правую зеленую светодиодную лампочку (именно это и делала программа).

Замечание: в интернете есть инструкции, которые позволяют интегрировать инструменты Digilent Adept 2 прямо в интерфейс Xilinx ISE, чтобы можно было программировать подключенную плату ПЛИС прямо из среды разработки, не выполняя вручную команды в терминале. Для этого используется специальный плагин для Xilinx ISE от Digilent и интерфейс iMPACT, доступный из меню Xilinx Tools/iMPACT. В данном случае в рамках курса этот механизм не используется во-первых, чтобы не перегружать подготовительный процесс лишними инструкциями (и избежать вероятных дополнительных проблем, которые могут возникнуть), во-вторых, чтобы иметь возможность разделять в голове и на практике общий набор необходимых инструментов по их задачам - не все части цепочки инструментов (tool chain) обязательно интегрированы внутри одной среды разработки - некоторые инструменты можно использовать отдельно от всех остальных или даже заменять один инструмент на другой при этом не заменяя весь набор инструментов разработки целиком.