
Моя первая блок диаграмма на ПЛИС/FPGA Max II EPM240T100I5.
Решил показать как легко и быстро можно создать проект и залить его в микросхему.
Вообще мне удобней Verilog HDL. Но первую статью по программированию ПЛИС я решил посвятить именно блок диаграмме так как это наглядней.
Качаем и устанавливаем Quartus II Web Edition, это бесплатная версия. Я скачал 13 версию. Я не буду показывать скриншоты установки, думаю читатели этой статьи могут установить приложение.
Создаем новый проект. Указываем путь к директории с проектами. Я создал на диске D каталог altera. У меня путь D:\altera. Назовем как нибудь проект, например SimpleLogic.
После этого на странице 3 выбираем нужную модель. Указываем семейство Max II и выбираем из списка модуль. Можно воспользоваться фильтром справа.
Далее оставляем все по умолчанию.
Первым делом я указываю как будут вести себя неиспользуемые пины. Во избежании КЗ, переведем их на вход с высоким сопротивлением. Для этого идем в меню Assignments > Device > Device and Pin options > Unused Pins. Выбираем As input tri-stated.
Теперь нам нужно создать файл в котором мы опишем логику. Жмем New и выбираем Block Diagram.
Теперь выбираем Symbol Tool. И в открывшимся окне ищем and2.
Размещаем его на поле и жмем ESC для отмены повтора вставки если вы не сняли соответствующую галочку.
Далее нам нужны два пина на вход и один на выход. Идем Pin Tool и выбираем Input. Размещаем слева от нашего элемента AND2. Затем выбираем Output и размещаем справа от and2.
Соединяем выводы пинов с выводами элемента AND. Для этого кликаем на вывод пина и не отпуская кнопки мышки ведем до вывода элемента AND. Затем отпускаем кнопку.
Когда все три пина подключены нам нужно задать им имена. Двойной клик мышки по имени пина и указываем новое имя. Входы я назвал btn1 и btn2 в выход назвал led. Когда все готово у нас получается вот такая блок диаграмма.
Теперь нужно указать каким выводам микросхемы назначены эти пины. Я покажу два пути.
Первый путь связать пины с диаграммы с выводами микросхемы это Pin Planner. Запускаем и видим изображение нашей микросхемы. Я использую самодельную отладочную плату на базе EPM240T100I5 на которой 4 и 5 вывод подключены к кнопкам, когда кнопка не нажата на ноге будет логическая единица, через подтягивающий резистор, когда нажата будет логический ноль. Выводы 66-73 подключены к светодиодам.
Двойной клик на ноге 4 и справа появляется окно с настройками ноги. В поле Node name пишем btn1. На плате все запитано от 3.3В значит в I/O Standard оставляем значение по умолчанию 3.3 V LVTTL. Аналогично настраиваем 5 и 73 пины, только имена btn2 и led соотвественно.
Второй способ настройки пинов это Assignment manager. В поле to - указывает имя пина, то есть btn1. В поле Assignment name выбираем из списка Location (можно начать писать для поиска). В поле Value пишем вывод к котором привязываем наш пин. Имя вывода в формате PIN_X, где X - номер ножки микросхемы.
Теперь можно приступать к сборке проекта. Жмем Start Compilation. Нам предложат (если мы этого еще не сделали) сохранить файл с нашей диаграммой. Сборка займет некоторое время, в конце увидим окно где сказано, что все готово. И табличку с информацией о прошивке.
Мы видим, что использовали только 1 логический элемент и 3 пина. А так же что не использовали UFM (user flash memory).
Жмем Programmer. При первом открытии нам нужно выбрать программатор. Для этого жмем Hardware Setup и выбираем программатор из выпадающего списка.
Если программатора нет в списке, то нужно установить драйвера. Идем в диспетчер устройств, находим USB Blaster с желтеньким значком. Жмем обновить драйвер. Жмем выполнить поиск на этом компьютере. Указываем путь к altera/quartus/drivers/usb-blaster и нажимаем далее. Перезапускаем Quartus.
Теперь можно выбрать что мы хотим залить в микросхему. Так как UFM блок у нас не использован, то и шить его мы не будем. Отмечаем только CFM блок и жмем Start. USB Blaster не запитывает плату, поэтому к плате перед прошивкой должно быть подключено питание.
Дожидаемся пока вверху справа зеленый индикатор достигнет 100%. Микросхема прошита нашей прошивкой.
Сразу же после прошивки светодиод должен загореться. Логический элемент AND имеет на выходе логическую 1 когда на оба входа приходит логическая 1. Так как кнопки подтянуты к питанию, на входах PIN_4 и PIN_5 у нас напряжение питания, а значит логическая единица. Соотвественно светодиод горит. Если нажать на любую кнопку или обе кнопку вместе, то светодиод погаснет.
Давайте теперь изменим схему так, чтобы светодиод загорался только когда нажаты обе кнопки. Для этого изменим входной сигнал на and2, добавив каждой кнопке по элементу not.
Откроем окно с диаграммой. Удалим соединительные провода между входными пинами и элементом and2. Добавим два элемента not и соединим пины btn1 и btn2 со входами элементов not. А выходы с элементов not соединим со входами элемента and2.
Собираем проект. Заливаем в микросхему. Проверяем. Теперь светодиод не горит. Светодиод загорается только если нажать и удерживать две кнопки одновременно.
Видео с проектом:
Комментарии к статье: Первый тест EPM240T100 с блок диаграммой в Quartus II