Создание проекта в Quartus II и конфигурирование ПЛИС

Разработка для ПЛИС фирмы Altera осуществляется в среде Quartus II. В данной статье я хочу рассмотреть создание нового проекта на примере синхронного счетчика, рассмотренного в учебном курсе.

q00

С официального сайта Altera можно скачать бесплатную версию Quartus II Web Edition.

Создадим новый проект, выполнив File->New->New Quartus II Project. Запуститься визард, где шаг за шагом проводится настройка проекта. Кликаем Next для перехода на следующий шаг:

q1

Укажем папку для проекта, его имя и имя модуля верхнего уровня схемы:

q2

Добавим в проект наш модуль счетчика:

q3

Выберем ПЛИС, которая будет использоваться:

q4

Можно интегрировать в среду ПО сторонних разработчиков, например ModelSim для моделирования RTL-дизайна или средство для формальной верификации:

q5

Проверим еще раз, все ли настройки проекта верны и нажимаем Finish:

q6

Сделаем синтез нашего Verilog-кода, выполнив Processing->Start->Start Analysis & Synthesis. В ходе этой операции создается нетлист, схема из логических блоков, имеющихся на ПЛИС.

q8

После завершения синтеза можно просмотреть сгенерированный нетлист при помощи RTL Viewer’а:

q9

Откроется окно, где можно увидеть реализацию счетчика в логике ПЛИС:

q10

Следующим шагом необходимо назначить портам модуля (down, clk, rst_n, out[3:0]) реальные пины микросхемы. Для этого запустим планировщик пинов:

q7

В нижней части окна планировщика мы должны увидеть список всех портов модуля верхнего уровня (top level), каждому из которых необходимо назначить вывод ПЛИС и настроить его параметры, такие как тип, напряжение, нагрузочная способность выхода, скорость нарастания сигнала и т. п.

q14

Давайте теперь определимся, какие пины мы будем назначать выводам модуля и какие настройки делать для них. Поскольку я буду использовать плату Cyclone V GX Starter Kit, я открываю ее электрическую схему. Входы тактирования (clk) и сброса (rst_n) будут управляться кнопками KEY0 и KEY1 соответственно, а вход направления счета переключателем SW0.

q15

4-разрядный выход счетчика (out) заведу на светодиоды LEDG0…LEDG3.

q17

 Как мы видим на схеме кнопки подключаются к пинам P11, P12, а переключатель к выводу AC9:

q13

q16_2

Светодиоды подключены к выводам L7, K6, D8 и E9:

q18

На схеме видно, что кнопки подтягиваются к шине питания VCC1P2 (1.2 В) через резистор 100k, переключатель также коммутирует выход на шину 1.2 В или на землю. Значит нужно настроить входы ПЛИС на напряжение 1.2 В.

qq1

Выходы ПЛИС тоже настроим на 1.2 В, поскольку светодиоды включены последовательно через резисторы 120 Ом и для них будет достаточно 1.2 В чтобы обеспечить ток порядка миллиампера.

q19

Запустим проект на компиляцию (Processing->Start Compilation), результатом выполнения которой станет конфигурационный файл для прошивки в ПЛИС.

q20

По завершении компиляции в окне сообщений квартус выдаст нам кучу предупреждений. Некоторые из них можно проигнорировать, но они могут нести важную информацию о возможных потенциальных проблемах. Также выводится статистика использования ресурсов ПЛИС. Наша схема использует 3 адаптивных логических модуля ПЛИС (ALM), 5 регистров и 7 пинов:

qq21

Для конфигурирования ПЛИС доступно несколько режимов. Режим программирования задается конфигурационными выводами MSEL0…MSEL4. Согласно схеме у нас установлен режим Active Serial.

q23

Результатом компиляции проекта в квартусе является файл конфигурации с расширением *.sof. Однако, для режима Active Serial нужен другой формат файла — с расширением *.pof. Чтобы его получить, следует запустить конвертер конфигурационных файлов (File->Convert Programming Files). В появившемся окне устанавливаем необходимые параметры, выбираем используемую микросхему конфигурационной памяти (у меня на плате стоит EPCQ256) и нажимаем кнопку Generate.

q26

Полученный pof-файл нужно зашить в конфигурационную память на плате, воспользовавшись программатором. Необходимо подключить программатор, подав питание на плату и запустить утилиту для программирования (Tools->Programmer). В появившемся окне должен определиться программатор и отобразиться его название в верхнем левом углу. Если это не так, то попробуйте нажать кнопку Hardware Setup и выбрать программатор вручную (убедитесь, что драйвер для программатора установлен). На моей отладочной плате есть переключатель выбора режима PROG/RUN, для программирования микросхемы конфигурационной памяти его нужно перевести в положение PROG. В окне программатора выбираем режим программирования (у меня Active Serial), загружаем pof-файл и нажимаем кнопку Start.

q27

Процесс пошел:

q28

После окончания прошивки я выключаю питание платы и перевожу рычажок выбора режима в положение RUN.

IMAG1084

Вот что у меня получилось в итоге (крайняя справа кнопка — clk, вторая — сброс счетчика, крайний правый тумблер — выбор направления счета, светодиоды отображают двоичный код на выходе счетчика):

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *