Моргаем светодиодами платы Марсоход3


Самый первый проект для платы Марсоход3 будет, по традиции, очень простой. У нас похожие проекты были и для первой платы Марсоход и для платы Марсоход2. Все, что я хочу сейчас сделать - двоичный счетчик, выход которого отображается на светодиодах.

Скачайте и разархивируйте мой, уже готовый проект: 

Запустите среду проектирования Altera Quartus II. Бесплатный Quartus II Web Edition - подходит. Нужен квартус версии 14.0 или выше, но обязательно должны быть установлены пакеты поддержки микросхем ПЛИС MAX10. В былые времена Quartus II выходил с поддержкой всех микросхем сразу. Сейчас же для отдельных серий микросхем Альтера делает отдельные пакеты. Может это и правильно - меньше качать из интернета. На всякий случай дам ссылку на скачивание Altera Quartus II: http://dl.altera.com/?edition=web.

Запускайте Quartus II. Выбирайте из главного меню File => Open Project. Появляется диалоговое окно для открытия файла. Найдите папку, где распакован наш проект и открываейте проект max10.

Этот проект сделан одновременно для двух плат: для Марсоход3 и для Марсоход3bis. Платы похожи, но имеют чипы MAX10 разной емкости и, к сожалению, разную разводку по пинам. Поэтому назначения сигналов к конкретным номерам выводов микросхемы должно быть разное. Назначения задаются в файлах типа *.QSF (Quartus Settings File). Чтобы проще оперировать проектами для плат серии Марсоход3 нами было решено использовать так называемые "ревизии" проектов.

Зайдите в главное меню квартуса, пункты Project => Revisions... Появляется вот такое диалоговое окно:

ревизии проектов в Altera Quartus II

Если у вас плата Марсоход3bis с чипом 10M08SAE, то выбираете ревизию с именем max10_8 и нажимаете кнопку Set Current, затем "OK". Квартус сам переоткроет проект с нужными настройками. Ну а если у вас плата Марсоход3 с чипом 10M50SAE, то тогда выбираете ревизию с именем max10_50.

Чтобы увидеть схему проекта выбираем из главного меню View => Utility Windows => Project Navigator. В появившемся окне навигатора есть несколько переключаемых закладок, они переключаются внизу окна. Нам нужна закладка Hierarchy. Видим наш топ модуль проекта "max10":

Quartus II Project Navigator

Двойной клик открывает схему этого проекта:

Схема проекта в Quartus II

На плате есть кварцевый генератор 100МГц и с него сигнал тактовой частоты попадает в ПЛИС Altera MAX10 на входной сигнал CLK100MHZ. В принципе, этот сигнал можно было бы сразу подавать на счетчик. Вместо этого я установил в проект компонент PLL - он позволяет из входной частоты делать нужную нам частоту задавая коэффициенты умножения и деления. Очень полезная штука, которая часто нужна в разных проектах. Поэтому и поставил в проект. Правда я сделал коэффициенты умножения и деления по единице. Так что у меня как было 100МГц, так и осталось. Вы можете это сами исправить - двойной клик на компоненте PLL и появится диалоговое окно его настроек (Megawizard Plug-in Manager). Можете поэспериментировать и сделать частоту на счетчике выше или ниже.

С выхода PLL сигнал идет на счетчик LPM_COUNTER. У самого компонента счетчика много параметров. Правый клик на компоненте и из выпадающего меню выбираем пункт Properties. В окне свойств компонента можно задать необходимые порты ввода-вывода и разрядность счетчика. В моем случае я выбрал только порты:

  • clock, тактовая частота счетчика
  • cnt_en, разрешение счета
  • aclr, асинхронный сброс счетчика
  • q, шина выхода счетчика, 32 разряда.

На светодиоды идут только 8 старших разрядов счетчика.

Сигналы счетчика разрешение счета и сброс подключены к входным линиям которые на плате идут к кнопочкам. При этом, не нажатая кнопка дает сигнал логической единицы, так как сам входной сигнал подтянут внутри ПЛИС к питанию. Это сделано в назначениях проекта. Посмотреть назначения в проекте можно в самом файле *.QSF или из среди Quartus II. Зайдем в главное меню Assignments => Assignment Editor. Здесь можно увидеть какие сделаны настройки входным и выходным сигналам и к каким физическим пинам микросхемы они подключены:

Quartus II Assignment Editor

Откомпилировать проект очень просто. Главное меню, пункты Processing => Start Compilation. Компиляция проходит в несколько этапов. Здесь будет анализ и синтез проекта, размещение в ПЛИС, сборка, временной анализатор. Вы можете увидеть как проходят этапы компиляции в специальном окне статуса - опять, главное меню, View => Utility Windows => Status.

Тут, к сожалению, нужно сделать оговорку. В ранних версиях квартуса после завершения компиляции выскакивало окошко "Компиляция завершена!" и еще был звуковой сигнал. Сейчас же компиляция завершается молча - и это печально. Бывает ждешь, когда же проект откомпилируется, а он уже давно откомпилировался, а я просто не заметил...

Если что-то пошло не так, что-то исправили и появились ошибки компиляции, то их можно увидеть в окне сообщений. Главное меню, View => Utility Windows => Messages.

После компиляции нужно загрузить проект в ПЛИС платы.

На плате Марсоход3, как и на плате Марсоход2 есть встроенный программатор MBFTDI. Програматор построен на базе микросхемы FTDI FT2232HL. Драйвер программатора - это просто специальная DLL. Ее нужно скачать на нашем сайте и скопировать этот jtag_hw_mbftdi_blaster64.dll в папку квартуса (выгдялит как c:\altera\15.0\quartus\bin64).

Скачать драйвер программатора: 

Запускаем программатор, Tools => Programmer.
Если программатор MBFTDI сразу не обнаружен, то нажимаем кнопку Hardware Setup и ищем и выбираем программатор MBFTDI:

hwsetup

Теперь в диалоговом окне программатора нажимаем кнопку Add File и ищем файл, который является результатом компиляции. Обычно это какой-то *.SOF файл, в моем проекте output_files/max10_8.sof.

Quartus II Programmer

Дальше - нажимаем кнопку Start и процесс загрузки образа в ПЛИС завершается успешно.

Плата начинает радостно моргать светодиодами.
При нажатии одной кнопки платы счет приостанавливается - это действие сигнала cnt_en. Нажатая кнопка key0 устанавливае входной сигнал разрешение счета в ноль: cnt_en=0, счет прекращается. При нажатии второй кнопки key1 входной сигнал счетчика aclr становится равным единице: aclr=1, так как там еще инвертор стоит. Счетчик сбрасывается.

Собственно это поведение показано в видео фрагменте в начале статьи.

Теперь Вы можете сами проводить какие-то эксперименты с платой...

 


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