Пошаговая инструкция: создаем проект Quartus II

В этой статье я расскажу, как создать новый проект в среде Altera Quartus II, как его откомпилировать и как прошить плату Марсоход.

В предыдущей статье "Введение в Verilog, урок первый" я писал о простых "программах" на языке Verilog. Мы изучили простое понятие провод (wire) и регистр (reg). Я хочу сделать совсем простой проект - соединить проводами кнопочки и светодиоды на плате Марсоход. Чтоб было не совсем скучно, добавим совсем простую логику в наш проект - две логические функции И и ИЛИ.

Соединить проводами - это не значит, что мы будем что-то паять. Мы напишем "программу" на языке Verilog, откомпилируем ее средствами среды разработки Quartus II и зашьем в плату Марсоход.

Вот какая у меня будет программа на Verilog:


module test_wires(
     input wire key0,
     input wire key1,
     input wire key2,
     input wire key3,
     output wire led0,
     output wire led1
     );

assign led0 = key0 & key1;
assign led1 = key2 | key3;

endmodule


Светодиод led0 будет гореть если от кнопочек key0 И key1 будет приходить сигнал единица.

Светодиод led1 будет гореть если от кнопочек key2 ИЛИ key3 будет приходить сигнал единица.

Посмотрим, что у нас получится (внимание траффик - более 30 картинок - очень подробная инструкция).

Шаг 1.

Шаг 1 - делаем простой проект для ПЛИС Altera в Quartus II

Запускаем среду разработки Altera Quartus II Web Edition и выбираем пункт меню File/New Project Wizard. (Нажмите на картинку, чтобы посмотреть крупнее).


Шаг 2.

Шаг 2 - делаем простой проект для ПЛИС Altera в Quartus II

Вы видите начальный диалог мастера создания проекта. Этот диалог в несколько простых шагов поможет нам сделать наш первый проект. Сейчас нажмем кнопку Next - и пойдем дальше.


Шаг 3.

Шаг 3 - делаем простой проект для ПЛИС Altera в Quartus II

Сейчас нам нужно выбрать папку для нашего нового проекта и его название. Выберите себе любую пустую папку. Я назвал наш проект lesson1, вы можете использовать любое другое название.


Шаг 4.

Шаг 4 - делаем простой проект для ПЛИС Altera в Quartus II

Сейчас можно добавить в новый проект какие-то существующие файлы, модули, может быть из других проектов. Поскольку это наш первый проект, то пропускаем этот шаг. Нажимаем Next


Шаг 5.

Шаг 5 - делаем простой проект для ПЛИС Altera в Quartus II

Вот здесь пожалуйста внимательнее. Нужно выбрать тип микросхемы CPLD или FPGA , для которой будет делаться проект. Конечно этот шаг тоже можно пропустить и сделать это назначение позже. Я предлагаю делать выбор сейчас. На плате Марсоход стоит микросхема ПЛИС (CPLD) EPM240T100C5. Вот ее и выбираем. После того, как выбрали - нажимаем Next.


Шаг 6.

Шаг 6 - делаем простой проект для ПЛИС Altera в Quartus II

Здесь можно выбрать дополнительные программные инструменты, например, для симуляции проекта, мы пропускаем этот шаг. Нажимаем кнопку Finish. Наш проект создан. Теперь нужно добавить в него файлы, описывающие логику проекта.


Шаг 7.

Шаг 7 - делаем простой проект для ПЛИС Altera в Quartus II

Заходим в меню File/New и видим вот такой диалог. Здесь нам нужно решить какой именно файл мы собираемся создать, какого типа. Вы можете выбрать Block diagram/Schematic file - тогда логику проекта будем рисовать в виде схемы. Запустится специальный графический редактор и можно будет вставить в проект разные логические элементы, триггера, регистры, счетчики, сумматоры, мультиплексоры и много еще чего. Потом все эти элементы соединяются проводками - они буквально "рисуются" в этом графическом редакторе. Очень удобно. Я расскажу об этом как нибудь в другой раз. Сейчас в этом диалоге мы можем выбрать создание файла на языках описания аппаратуры: AHDL, VHDL, Verilog и других. Я выбираю Verilog - пункт списка Verilog HDL File.


Шаг 8.

Шаг 8 - делаем простой проект для ПЛИС Altera в Quartus II

Вот наш новый файл создан! Здесь мы будем набирать текст нашей программы.


Шаг 9.

Шаг 9 - делаем простой проект для ПЛИС Altera в Quartus II

Вот я набрал текст программы и теперь нужно его сохранить в каком нибудь файле. По умолчанию сейчас имя файла Verilog1.v - его можно поменять на любое другое имя файла.


Шаг 10.

Шаг 10 - делаем простой проект для ПЛИС Altera в Quartus II

Выбираем пункт меню File/Save As.


Шаг 11.

Шаг 11 - делаем простой проект для ПЛИС Altera в Quartus II

Вот появился диалог позволяющий задать имя записываемого файла. Я предпочитаю давать имена файлов по названию модулей, описанных в них. Конечно это не обязательно, вы можете выбрать себе любое другое имя файла. Сейчас я хочу задать имя файла test_wires.v


Шаг 12.

Шаг 12 - делаем простой проект для ПЛИС Altera в Quartus II

Файл записан. Вы можете видеть наше имя файла на закладке.


Шаг 13.

Шаг 13 - делаем простой проект для ПЛИС Altera в Quartus II

Вот здесь пожалуйста внимательней. Сейчас мы скажем среде программирования Quartus II,  что этот наш текущий файл test_wires.v является самым главным файлом проекта. Попробую объяснить. Проект всегда включает в себя самый главный модуль, который может включать в себя многие другие модули в других файлах. Сейчас мы явно скажем, кто у нас тут самый главный Wink. Заходим в меню Project/Set As Top Level Entity. Все - готово.


Шаг 14.

Шаг 14 - делаем простой проект для ПЛИС Altera в Quartus II

Пожалуй можно пробовать компилировать наш проект. Видите кнопочку треугольничек на панели инструментов?.Ну или можно зайти в меню Processing/Start Compilation.

Пожалуй перед компиляцией сделаем еще одну очень важную настройку нашего проекта.


Шаг 15.

Шаг 15 - делаем простой проект для ПЛИС Altera в Quartus II

Выберем пункт меню Assignments/Device. Здесь можно задать многие параметры компиляции проекта, связанные конкретно с чипом.


Шаг 16.

Шаг 16 - делаем простой проект для ПЛИС Altera в Quartus II

Появился вот такой диалог - на нем куча всяких настроек. Например можно выбрать тип микросхемы, для которой будет делаться компиляция проекта. Мы уже выбрали микросхему раньше. Сейчас можете проверить - должно быть EPM240T100C5. Нас же сейчас интересует кнопка Device and Pin Options. Нажмем ее.


Шаг 17.

Шаг 17 - делаем простой проект для ПЛИС Altera в Quartus II

Появился еще более страшный диалог. Не пугайтесь. Выбираем закладку Unused Pins.


Шаг 18.

Шаг 18 - делаем простой проект для ПЛИС Altera в Quartus II

Сейчас нам нужно сделать очень важную настройку. Мы должны сказать компилятору, что делать с неиспользуемыми ножками микросхемы. Поясню. В написанной нами программе всего 4 входа подключенных к кнопочкам, и два выхода, подключенных к светодиодам. Итого наш проект будет использовать 6 контактов микросхемы ПЛИС. А у нее, например всего 80 контактов, которые мы можем использовать по своему разумению. Компилятор подключит 6 контактов, а что делать с остальными? По умолчанию все неиспользуемые контакты микросхемы подключаются к нулю по питанию. Конечно все зависит от печатной платы, куда впаяна микросхема. Если на плате, например ошибочно, неиспользуемый контакт микросхемы подключен к питанию платы, то произойдет короткое замыкание. Не очень приятно. Что нибудь может сгореть на плате. Поэтому я всегда устанавливаю эту настройку. Я ставлю As input tri-stated. Это обозначает, что неиспользуемые входы будут входами с высоким входным сопротивлением. Это обезопасит микросхему и плату.


Шаг 19.

Шаг 19 - делаем простой проект для ПЛИС Altera в Quartus II

Вот теперь компилируем!


Шаг 20.

Шаг 20 - делаем простой проект для ПЛИС Altera в Quartus II

Мы видим, что проект успешно откомпилирован! Поздравляю! Smile

Тем не менее, это еще не все. Пожалуйста обратите внимание на Warnings - предупреждения, а особенно на Critical Warnings - критические предупреждения. Я вообще, всегда рекомендую внимательно читать предупреждения компилятора. Конечно, хорошо бы знать английский язык, но я думаю вы довольно быстро освоитесь. Посмотрим, что же нам выдал компилятор?


Шаг 21.

Шаг 21 - делаем простой проект для ПЛИС Altera в Quartus II

Читаем: "Critical Warning: No exact pin location assignments for 6 pins of a total 6 pins".

Это обозначает, что в проекте всего было 6 контактов и всем шести контактам не были сделаны назначения по расположению на чипе. На самом деле компилятор выполнил свою работу, но расположил контакты как попало, как ему было удобно. Так дело не пойдет. У нас уже есть плата Марсоход и кнопочки присоединены к конкретным ножкам микросхемы. Светодиоды так же подключены на плате. Точное расположение контактов нужно смотреть на схеме нашей платы 

или в нашем документе
PINOUT файл ( 49477 bytes )
. Нам нужно сказать компилятору куда подключать какую ногу микросхемы.


Шаг 22.

Шаг 22 - делаем простой проект для ПЛИС Altera в Quartus II

Выберем пункт меню Assignments/Assignment Editor.


Шаг 23.

Шаг 23 - делаем простой проект для ПЛИС Altera в Quartus II

В открывшемся окне делаем нужные нам назначения согласно схеме нашей платы. В колонке To вписываем имя входа или выхода. В колонке Assignment Name выбираем из списка нужную нам настройку Location. В колонке Value вписываем номер контакта микросхемы - его смотрим в PIN OUT файле или на схеме платы.


Шаг 24.

Шаг 24 - делаем простой проект для ПЛИС Altera в Quartus II

Кроме назначения местоположения всех контактов нашего проекта нужно сделать еще одну важную настройку. Наши кнопочки подключены одним контактом к нашей ПЛИС, а вторым контактом к нулевому проводу (к земле). Таким образом, при нажатии кнопки, контакт микросхемы ПЛИС будет подключен к земле. А вот что будет, когда кнопка не нажата? Вход микросхемы будет болтаться неподсоединенный и это конечно плохо. Вход микросхемы нужно "притянуть" к напряжению питания резистором, чтобы не нажатая кнопка давала на входе микросхемы четкую логическую единицу. Можно было бы припаять такой резистор снаружи чипа - но не нужно. Микросхема ПЛИС позволяет по вашему желанию подключить внутренний резистор к любому входу. Именно это мы и сделаем. Мы назначаем всем входам проекта с именем key* настройку "Weak Pull Up resistor".

Вот теперь можете компилировать проект и все будет нормально!


Шаг 25.

Шаг 25 - делаем простой проект для ПЛИС Altera в Quartus II

После успешной компиляции проекта его можно зашить в чип платы Марсоход. Для этого запускаем программу программатора. Выберите пункт меню Tools/Programmer.


Шаг 26.

Шаг 26 - делаем простой проект для ПЛИС Altera в Quartus II

Вот так выглядит окно программатора на экране. Видите в левом верхнем углу "No Hardware" - похоже программатор еще не установлен. Подключите программатор к вашему ПК. Если у вас UsbBlaster, то нужно будет установить драйвера к нему. Они находятся в папке C:/Altera/91/Quartus/Drivers. Если у вас ByteBlaster (в том числе сделанный самостоятельно), то драйвера не нужны. Теперь нажмите кнопку Hardware Setup.


Шаг 27.

Шаг 27 - делаем простой проект для ПЛИС Altera в Quartus II

В открывшемся диалоговом окне выберите тип программатора, который у вас установлен.


Шаг 28.

Шаг 28 - делаем простой проект для ПЛИС Altera в Quartus II

Теперь нужно проставить нужные "галочки" в Program/Configure и Verify. Строка CFM имеет отношение к собственно программированию ПЛИС. Строка UFM имеет отношение к программированию флеш памяти внутри чипа ПЛИС. Их можно программировать по отдельности.

Колонка Verify обозначает проверить после прошивки.


Шаг 29.

Подключение платы Марсоход к UsbBlaster

Подключаем плату Марсоход к UsbBlaster

Нужно подключить плату Марсоход к UsbBlaster и подать питание на плату.


Шаг 30.

Шаг 29 - делаем простой проект для ПЛИС Altera в Quartus II

Нажимаем в програматоре кнопку Start - и, все готово! Плата Марсоход прошита с только что откомпилированным проектом! Урра! Smile

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

Обратите внимание, как все работает.

Прежде всего, у нас горят два светода, когда мы ничего не нажимаем. Как я уже говорил, не нажатая кнопочка обозначает логическую единицу на входе микросхемы. Входы притянуты внутренним резистором чипа к напряжению питания (Weak Pull-Up Resistors).

Левые две кнопки key3, key2 объединены в логическую функцию ИЛИ. Именно поэтому светодиод led1 гаснет только если нажать обе эти кнопки.

Правые две кнопки key1, key0 объединены в логическую функцию И. Именно поэтому светодиод led0 гаснет если нажать хотя бы одну кнопку.

Вот так это все работает.

Теперь у нас есть инструкция, по которой вы сможете создавать свои проекты. Возможно она показалась вам длинной и занудной. Может быть сложной. На самом деле, дальше будет гораздо проще. Если у вас будет хотя бы один готовый проект (а их у нас на сайте уже много), то достаточно просто открыть его и удалить лишнее. Очень много времени обычно уходит на разные настройки. Если брать готовые проекты за основу, то там все настройки уже сделаны и тратить время на это уже не нужно.

 

 

 

 

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