Подготовка всего необходимого к лабораторным работам с платами ПЛИС (FPGA) - это будут:
- Лабораторная работа2: Дизайн цифровой логики на языке SystemVerilog с реализацией на платах ПЛИС (FPGA) от Xilinx или Altera
- Лабораторная работа3: Конечные автоматы и дизайн с адресуемой памятью
- Лабораторная работа4: Что такое процессор?
Для их проведения необходимо:
- Подобрать литературу (в качестве необходимого минимума должно быть достаточно будущих инструкций)
- Подобрать и установить необходимое программное обеспечение
- Подобрать подходящую плату ПЛИС (FPGA)
Подобрать подходящую плату ПЛИС (FPGA)
Т.к. Юрий Панчул прислал нам для обучения плату Digilent Basys2 еще в
первой посылке, лично мне ничего выбирать не пришлось, но вообще в общем случае могут быть варианты.
Насколько я успел понять, в мире существует как минимум два основных производителя чипов ПЛИС (FPGA) - это Xilinx и Altera. Плюс к ним есть платы Malta, которые компания MIPS использует для тестирования собственных процессоров (и производит тоже?).
Кроме того, я смог найти российского производителя чипов ПЛИС - это
Открытое Акционерное Общество
"Воронежский Завод Полупроводниковых Приборов-Сборка" (ОАО "ВЗПП-С").
На их главной странице
http://www.vzpp-s.ru/about.htm написано:
ОАО "ВЗПП-С" осуществляет серийную поставку изделий специального назначения:
- ПЛИС 5576ХС1Т на 50 тыс. вентилей в 240-выводном металлокерамическом корпусе;
плюс к этому чуть больше информации можно найти в
каталоге изделий (ссылка на pdf на их главной странице):
Про розничную продажу сходу найти ничего не удалось, но есть еще вот такой
небольшой диалог на одном форуме датированный 01.03.2012:
-Ребята.
Если кого-нибудь интересуют вопросы (схемы включения, технические условия (ТУ), методы испытаний ПЛИС, программное обеспечения для программирования, отладочные платы) по ПЛИС отечественного производства (5576ХС1Т, 5576ХС1Т1, 5576ХС2Т, 5576ХС3Т, 5576ХС4Т), выпускаемых ОАО "КТЦ "ЭЛЕКТРОНИКА" г.Воронеж пишите. С удовольствием отвечу на все вопросы.
-А Вы попробуйте "ребятам" озвучить цены (и желательно по сравнению с алтеровскими аналогами). Вопросы сами-собой и отпадут...
-Цены на ПЛИСы отличаются в РАЗЫ, качество - тоже, но в обратную сторону. Но есть люди, которые работают только с ПЛИСами отечественного производства.
Платы с чипом Xilinx можно купить
в магазине Digilent, платы с чипом Altera видимо в
магазине Altera.
Еще интересную плату собственного производства с чипом ПЛИС (FPGA) Altera делают в Таганроге -
проект Марсоход.
Можно купить всего за 1000руб без стоимости почтовой пересылки. На сайте кроме всего прочего собрано
большое количество разнообразных проектов на основе их платы с подробным описанием, видео и исходным кодом на верилоге - например
Летающая Тарелка.
больше разной информации о разных способах покупки плат ПЛИС в России
в этой ветке обсуждения оригинального поста с описанием проекта курса у Юрия Панчула. В частности
cyber_school пишет:
3. В Москве, если что, те же самые Digilent-ы можно приобрести, например, в Терраелектронике:
http://www.terraelectronica.ru/catalog.php?ID=1282&ClearParam=1а также в других местах
.
Из распространителей Xilinx могу посоветовать
инлайн-груп на Беговой:
http://www.plis.ru/page.php?id=177 и вроде в Москве еще есть представительство cilica:
http://www.silica.com/products/tools.html (там нуджно пролистать до xilinx)
но если Вы не организация, то могут возникнуть затруднения.
Я лично имел как-то дело (по другому правда поводу)с дельта-электроникой, они тоже пишут, что торгуют digilent-ом:
http://www.deltel.ru/shop/products/search?title=Digilent&search_type=1 ну и вообще есть такой сайт www.efind.ru там можно поискать, где, чего, почем.
(Многие компании из Санкт-Перербурга в Москву шустро доставляют доставкой).
Но опять же лучше быть организацией.
Моя Digilent Basys2
на сайте digilent стоит 60$ академическая цена или 80$ обычная.
Подобрать литературу
Для знакомства с FPGA, языками HDL в лице Verilog и теоретическими основами области проектирования электронных приборов Юрий Панчул прислал мне две книжки:
Digital Design and Computer Architecture David Money Harris & Sarah L. Harris
и Digital Desing Using Digilent FPGA Boards Verilog / Active-HDL Edition Richard E. Haskell, Darrin M. Hanna
Из этих двух книг однозначное предпочтение можно отдать 1й от Harris & Harris - во-первых, ее содержание полностью покрывает содержание Haskell & Hanna и в общем ее практически достаточно почти для всего курса - в ней есть и основы комбинаторной логики начиная с логических примитивов, основы процедурной логики, стейт-машины, основы HDL Verilog и VHDL сразу (все примеры кода приведены в две колонки - Verilog и VHDL) и даже пример живого процессора с исходным кодом на верилоге. Она также оказалась полезной для упражнений с макетными платами, т.к. в ней например на пальцах разжеван механизм работы RS-триггера и D-триггера, схемы которых приведены в tron.ix без объяснений.
В Haskell & Hanna также покрыто большинство основ, перечисленных выше, но тема процессоров уже не затронута. Примеры кода приведены только на Verilog (для VHDL нужна специальная редакция книги). Изначально плюсом в Haskell & Hanna показалось то, что в ней для всех примеров сразу показывается скриншот с результатом выполнения в симуляторе, а в приложении A есть даже подробная инструкция по установке и настройке необходимого программного обеспечения (комбинация Active HDL + Xilinx WebPack), но в конечном итоге получилось так, что Active HDL я использовать не смог (у него нет версии для Linux), а потом выяснилось, что дистрибутив Xilinx WebPack (который доступен и для Linux и для Windows) уже содержал внутри себя вполне нормальный симулятор ISim, поэтому Active HDL и инструкция по его установке оказались вообще не нужны (см ниже).
Ну и субъективно, в Harris & Harris даже одни и те же базовые темы раскрыты гораздо глубже и фундаментальнее - в конечном итоге я ознакомился в Haskell & Hanna с введением и несколькими первыми упражнениями, потом перешел на Harris & Harris и больше к Haskell & Hanna не возвращался.
Для сравнения - содержание Digital Design and Computer Architecture David Money Harris & Sarah L. Harris:
содержание Digital Desing Using Digilent FPGA Boards Verilog / Active-HDL Edition Richard E. Haskell, Darrin M. Hanna
Начало раздела про процессоры в Harris & Harris:
Verilog против VHDL
Почти во всех источниках пишут, что нет никакой принципиальной разницы между языками Verilog и VHDL - программу, написанную на Verilog, можно легко один-в-один переписать на VHDL и наоборот, почти любая среда разработки поддерживает оба языка и позволяет делать "смешанные" проекты. Выбор одного или другого - дело вкуса или традиции, которая сложилась в определенном месте работы. Исторически сложилось так, что Verilog популярен в коммерческих фирмах в США, а VHDL - у военных в США, в Европе и в России.
Для ведения курса мы выбрали Verilog, т.к. насколько я понял именно он используюется в MIPS, поэтому Юрию Панчулу будет проще нас консультировать в процессе подготовки к лабораторным работам. По моим первым впечатлениям как Java-программиста, привыкшего к синтаксису Java/C/C++, это было однозначно правильное решение, т.к. визуально конструкции Verilog довольно близко напоминают базовые конструкции С или Java (конечно только визульно, их "физическое" значение и контекст выполнения абсолютно разные - про команды Verilog наверное даже не очень корректно говорить про "выполнение" - это скорее декларация логики определения текущего состояния). При этом от первого примера кода на VHDL у меня сразу зарябило в глазах из-за того, что в нем похоже принято набирать код и инструкции в верхнем регистре - у человека, привыкшего иметь дело с фортраном, вероятно были бы другие впечатления.
Ну и еще один важный и вполне объективный критерий особенно для учебного курса (на ознакомительной лабоработорной работе содержимое первых модулей было удобнее писать на доске) - это многословность - Verilog качественно лаконичнее VHDL - это особенно хорошо видно как раз в книге Harris & Harris, в которой все примеры приведены на двух языках рядом в два столбика. Ниже пример реализации простого однотактового процессора (на каждой странице две колонки - в левой код на Verilog, в правой - на VHDL) - хорошо видно, что весь код на Verilog легко уместился бы максимум на 2х страницах, для кода на VHDL понадобилось 4.
Подобрать и установить необходимое программное обеспечение
Во-первых необходимо сформулировать круг задач, которые должно решать выбранное программное обеспечение (в момент знакомства с этой областью он был не очень очевиден и потребовалось некоторое время, чтобы разобраться во всех нюансах).
Короткий вариант списка:
- Генерация прошивки для выбранной модели ПЛИС (FPGA)
- Программирование (заливка) прошивки на выбранную модель ПЛИС (FPGA)
- Симуляция
Чуть более подробная разбивка этого же списка по подзадачам:
- Редактор кода HDL (Verilog/HDL) - желательно (но не обязательно) с подсветкой синтаксиса языка и желательно (но не обязательно) с проверкой корректности синтаксиса набранной программы.
- Для конкрентного чипа/платы ПЛИС (FPGA) - инструмент синтеза (synthesis) прошивки для выбранной модели ПЛИС из кода на HDL.
- Для конкретного чипа/платы ПЛИС (FPGA) - инструмент для программирования (заливки) синтезированной предыдущим инструментом файла прошивки на подключенное (например чере кабель USB) устройство ПЛИС.
- В общем случае (безотносительно конкретного устройства ПЛИС) - инструмент для генерации данных симуляции кода, написанного на HDL.
- В общем случае (безотносительно конкретного устройства ПЛИС) - инструмент для просмотра результатов данных симуляции в наглядном графическом интерфейсе (в окошке в виде графика сигналов с линией времени).
Все эти задачи могут решаться или внутри одной интегрированной среды разработки или же для каждой задачи можно найти свой отдельный независимый инструмент.
Кроме того, дополнительное условие для нашей ситуации на кафедре прикладной математики (и мое личное предпочтение) - инструменты должны работать в операционной системе GNU/Linux, т.к. в учебной лаборатории установлена сеть компьютеров под управлением дистрибутива Mandriva 2010.
Сразу - для текущего курса был выбран следующий набор инструментов:
1. Интегрированная среда разработки
Xilinx ISE WebPack (WebPack - вариант бесплатной лицензии) - содержит:
- Редактор кода HDL - Verilog и VHDL - с подсветкой и проверкой синтаксиса
- Инструмент синтеза прошивки для ПЛИС Digilent Basys2 (Spartan 3E) - генерирует файл с расширением ".bit" в проекте - это важно
- Симулятор ISim входит в комплект дистрибутива и интегрирован в среду разработки (позволяет сразу просматривать графики сигналов модулей в удобном графическом интерфейсе)
- Встроенные средства программирвоания (заливки) прошивки на ПЛИС Digilent Basys2 отсутствуют (точнее требуют дополнительной настройки, без которой можно обойтись).
2. Инструменты
Digilent Adept2 - позволяют программировать устройства ПЛИС Digilent (в том числе Basys2) файлами с расширением ".bit", сгенерированными средой Xilinx из программы на HDL (Verilog или VHDL - не важно).
Этого набора оказалось достаточно для того, чтобы:
- написать программу на Verilog
- увидеть результат работы вживую на ПЛИС Digilent Basys2
- проверить возможный результат работы на графике сигнала в симуляторе без запуска на живом ПЛИС
- для обеих программ доступны официальные версии для ОС GNU/Linux
т.е. все минимальные потребности для проведения запланированных лабораторных работ им удовлетворены.
Но возможны и другие комбинации ПО, которые могут дать аналогичный результат:
- Набор инструментов от
Altera Quartus II - среда разработки аналогичная Xilinx + программатор ПЛИС Altera + что-то еще - у меня есть сильное подозрение, что среда Xilinx не сможет генерировать прошивки для ПЛИС от Altera, т.е. при наличии ПЛИС от Altera придется рядом (или вместо) Xilinx ставить полную версию Quadrus II, но я этот вопрос пока подробнее не проверял. Есть родная версия для Linux.
- Среда разработки + симулятор
Aldec Active HDL - рекомендуется к использованию в книге "Digital Desing Using Digilent FPGA Boards Verilog / Active-HDL Edition Richard E. Haskell, Darrin M. Hanna" в связке с Xilinx WebPack (некоторые инструменты, умеющие работать через командную строку, из Xilinix интегрируется в Active HDL через специальные настройки) - очевидно для того, чтобы Xilinx WebPack генерировала (синтезировала) прошивки для ПЛИС Xilinx из кода Verilog, набранного в Active HDL. Но т.к. Xilinx WebPack уже содержит и редактор кода для HDL (Verilog и VHDL) и симулятор ISim и тем более ситезатор прошивки для ПЛИС Xilinx, потребность в Active HDL в рамках поставленных минимальных задач курса автоматически отпадает. Тем более, что Active HDL доступна только для операционной системы Windows.
Свободные инструменты (инструменты, исходный код которых доступен под свободной лицензией, а не просто бесплатные)
Некоторое количество свободных инструментов, необходимых для автоматизированного проектирования электронных приборов (EDA), собрано на сайте проекта
gEDA geda-project.org (после
предыдущего сообщения стал понятен смысл аббревиатуры в названии проекта).
В частности в рамках задач курса могли бы оказаться полезны проекты:
-
Icarus verilog - инструмент для симуляции и синтеза кода Verilog. Генератор файла симуляции работает совершенно точно (для его просмотра см ниже).
-
GTKWave - программа для удобного графического просмотра диаграмм с резульатами симуляции программ на HDL.
- В качестве среды для написания программы на Verilog можно использовать любой текстовый редактор - в штатном редакторе KDE kwrite есть подсветка синтаксиса Verilog/VHDL.
Итого: свободных инструментов должно быть полностью достаточно для процесса симуляции кода на Verilog:
- код Verilog пишется в любом текстовом редакторе
- Icarus Verilog генерирует из него файл с результатами симуляции
- GTKWave показывает результаты из файла в виде красивой диаграммы в графическом окне.
Хорошая инструкция по использованию Icarus Verilog + GTKWave есть также
на сайте проекта Марсоход.
По поводу задач синтеза и прошивки для ПЛИС (FPGA) - в этой области видимо все немного сложнее, т.к. от разработчика инструмента помимо всего прочего потребуются знания деталей внутреннего устройства каждой модели чипов ПЛИС, с которыми его инструмент должен работать.
- Icarus Verilog позиционирует себя не просто как симулятор, но и как инструмент для синтеза. Про работоспособность синтезатора прошивок FPGA ничего сказать не могу - кое-какие
намеки на вероятную работу с чипами ПЛИС Xilinx есть в FAQ, но детали нужно изучать отдельно.
- Для решения проблемы программирования ПЛИС сгенерированной прошивкой - например bit-файлом (т.е. в частности замены инструментов Digilent Adept2) существует другой свободный проект
FPGALink, но прошивка Digilent Basys2 этим инструментом на данный момент
точно не поддерживается, поэтому для платы Digilent Basys2 свободной альтернативы Adept2 видимо нет.
ДОБАВЛЕНИЕ:
ramlamyammambam: Из свободных инструментов я бы еще отметил
Verilator - компилирующий симулятор Verilog, с генерацией кода на С++. Многие известные коммерческие фирмы его используют.