Создание нового FPGA проекта Intel Quartus Prime с нуля

Пошаговое руководство.

1. Создадим новый проект.

quartus prime create new project
Для этого в среде САПР Intel Quartus Prime выбираем пункт меню File -> New Project Wizard.. Появляется новое окно диалога, в котором задаются некоторые параметры нового проекта.

2. Окно диалога для создания нового проекта выглядит вот так:

quartus prime new project wizard

Диалог позволяет задать имя проекта и папку, куда он будет помещен, имя модуля верхнего уровня проекта, здесь можно подключить имеющиеся у вас файлы дизайна или библиотеки, задать тип микросхемы FPGA и при необходимости задать, какие дополнительные инструменты EDA будут использоваться с проектом.

В основном в этом визарде мы будем нажимать кнопку Next, не задавая каких-то особых параметров. Тем более, что все, что нужно может быть изменено или задано позднее.

3. Выбор папки для будущего проекта и название проекта.

quartus prime new project wizard set projects directories

Я назвал создаваемый проект project. Это может быть любое другое имя. Правда, мой совет (он касается не только Quartus, но вообще любых иностранных САПР и инженерных программ) - никогда не давайте имена файлов в кирилице, то есть русскими буквами, и лучше не иметь имен файлов или имен папок содержащих пробел (Например, "Рабочий стол"). Возможно этот совет покажется вам глупым, но поверьте, с этими именами файлов иногда бывают проблемы.

Если папки для проекта пока не существует, то Quartus может спросить создать ли новую папку (Do you want to create it?) - понятно, что тут нужно согласиться.

4. Задаем тип проекта. Project type.

quartus prime new project wizard set project type to empty

Мы создаем новый пустой проект - Empty project. Теоретически можно было бы воспользоваться созданием проекта по шаблону, Template, но у меня именно цель создать новый проект с нуля. Поэтому я выбираю первый пункт.

5. Добавление новых файлов в проект.

quartus prime new project wizard add existing files

Здесь действительно можно добавить какие-то файлы в проект. Если есть какие-то заготовки, файлы дизайна, схемы, Verilog или VHDL файлов из предыдущих проектов. Их можно здесь добавить. Я же просто пропускаю этот пункт, нажимаю Next.

6. Выбор типа микросхемы FPGA.

quartus prime new project wizard select FPGA chip

Это очень важный пункт меню. Подготовленный проект будет скомпилирован и загружен в конкретную FPGA на конкретной плате. Тип микросхемы нужно знать. Я делаю проект для платы Марсоход3 и там согласно документации стоит FPGA MAX10 10M50SAE144C8G. Именно ее я и выбираю на этом шаге в визарде. На самом деле, тип микросхемы можно задать и позже, через пункт меню Assignments -> Device, но лучше это сделать прямо сейчас.

7. Выбор дополнительных инструментов для проекта.

quartus prime new project wizard set eda tools

Здесь предлагается добавить дополнительные инструменты EDA tools используемые совместно с Quartus Prime. EDA - это Electronic Design Automation. Я здесь пока предлагаю ничего не трогать, нам одного квартуса пока хватит.

8. Итоговое диалоговое окно визарда нового проекта Quartus Prime.

quartus prime new project wizard summary

В этом диалоговом окне показывается, что же мы навыбирали про создании проекта. В принципе сам проект уже создан, но пока в нем смысла особо нет. Мы нажимаем кнопку Finish и открывается САПР Quartus Prime с нашим пока пустым проектом.

9. Создание первого файла для проекта.

quartus create new verilog file

Заходим в меню File -> New и появляется окно, где мы выбираем типр создаваемого файла. Можно создавать проект в виде схемы, може сделать VHDL описание проекта. Я предпочитаю создавать Verilog HDL файлы. Нажимаю OK и новый файл создан. Обычно по умолчанию имя нового файла принимает вид примерно как Verilog1.v и его нужно записать под настоящим именем.

Поэтому, через меню File -> Save As.. сохраняем файл под именем project.v - именно это имя модуля верхнего уровня мы задали в визарде при создании проекта.

quartus prime save project verilog file

Если же задать другое имя файла, то лучше заново указать проекту, какой именно файл будет использоваться в проекте, как содержащий модуль верхнего уровня. Это можно сделать через меню Project -> Set as Top-Level Entity.. Вот этот пункт меню:

quartus prime set top level verilog module file

10. Редактируем verilog HDL файл.

quartus prime edit verilog file

Редактирую файл созданный на предыдущем этапе.
Я создаю очень простой проект, который содержит простой двоичный счетчик. Он будет тактироваться от входного сигнала clk и будет отображать значение восьми битов счетчика на светодиодах платы Маросход3. Текст модуля:


module project(
  input wire clk,
  output wire [7:0]led
);

reg [31:0]counter;
always @(posedge clk)
  counter<=counter+1;

assign led = counter[27:20];

endmodule


Обратите внимание, что мой модуль имеет имя project и оно совпадает с именем файла Verilog, project.v. У САПР Quartus Prime есть такая особенность, что имя модуля верхнего уровня должно совпадать с именем файла.

11. Назначим сигналы модуля project конкретным выводам микросхемы FPGA.

quartus prime set i/o pin locations

Это делается через меню Assignments -> Assignments Editor.
Тут не обойтись без документации на конкретную плату, в моем случае, на плату Марсоход3. Я должен посмотреть на схему платы и найти откуда и куда идут нужные мне сигналы clk и leds. По схеме платы я нахожу номера выводов микросхемы и проставляю их в проекте.

На скриншоте видно, что назначение имеет вид "имя сигнала" -> "тип назначения" -> "номер вывода".
Советую писать имена сигналов именно в таком виде, как они указаны в Verilog файле - строчные буквы - это строчные буквы, заглавные это заглавные. Как-то так получилось, что разные версии квартуса по разному воспринимали регистр при назначении сигналов. Чтобы в дальнейшем избежать возможных проблем учитывайте регистр написания имен сигналов при назначении.

Тип назначения - в данном случае это Location, то есть местоположение вывода сигнала. Почти любой сигнал можно вывести на почти любой I/O вывод FPGA. Это просто рай для проектировщиков печатных плат. Если нет особых требований по быстродействию, то они могут разводить трассы печатной платы "как удобно", а уже в проекте FPGA будут назначены выводы на конкретные пины.

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

Кроме местоположения здесь же можно назначить и другие полезные значения, например, подключить вывод к внутреннему подтягивающему резистору или установить на вход триггер Шмидта.

Номер сигнала - это обычно строка вида PIN_123. Но если корпус микросхемы BGA, то имена выводов бывают и посложнее. В этом моем простом проекте я назначаю только нужные мне 9 сигналов - clk и восемь led.

12. Неиспользуемые выводы FPGA.

quartus prime unused pins as input tri-stated

На предыдущем шаге мы назначили некоторые важные для нашего проекта сигналы clk и led[7:0]. Однако, на микросхеме FPGA гораздо больше выводов и они все куда-то идут, подключенны к другим микросхемам на плате, к разъемам, кнопкам и прочему. Если мы взяли новую для нас плату, то естественно мы еще пока не знаем ее досконально. Куда ведут остальные сигналы по схеме платы? Нужно время, чтобы разобраться.

Существует довольно простой способ, пока не разбираться. Можно неиспользуемые нашим проектом выводы FPGA совсем отключить от выходов микросхемы.

Для этого зайдем в меню Assignments -> Device и в открывшемся диалоговм окне нажмем кнопку Device And Pin Options.
Справа выбираю Unused Pins и слева проставляю: Reserve all Unused Pins: As input tri-stated.
Все готово. Нажимаем Ok.

13. Компиляция проекта.

quartus prime start compile

Запустим сборку проекта через меню Processing -> Start COmpilation. Сборка проекта занимает некоторое время. Чем сложнее проект, тем дольше идет компиляция.

14. Сборка завершена.

quartus pime compile complete

Сборка поекта ведется через несколько этапов: анализ и синтез (Analysis & Synthesis), компоновщик (Fitter), сборщик (Assembler), анализатор потребления питания (Power Analizer), временной анализатор (Timer Analizer). Статус каждого этапа виден в окне статуса. Если у вас этого окна не видно, то его можно вызвать через меню View -> Utility Windows -> Status.

Во время компиляции сообщения выводятся в специальное окно сообщений. Его можно вызвать через меню View -> Utility Windows -> Messages. Последнее сообщение видно на скриншоте - это Quartus Prime Full Compilation was successful - это сообщение об успешной сборке всего проекта.

Вообще, в общем случае, важно читать сообщения предупреждения и конечно, если есть, то сообщения об ошибках компиляции.

В папке проекта после компиляции обычно появляется еще одна папка output_files, где сохраняются различные отчеты и выходные файлы. Файл для загрузкив ПЛИС Intel - это файлы с расширением *.sof

Для микросхем MAX10 кроме sof файла создается еще и pof файл.
С помощью программатора можно загрузить образ sof файла в FPGA, но после снятия питания с платы микросхема FPGA очищается и ее заново придется загружать при следующем включении. Микросхемы MAX10 (в отличии от некоторых других FPGA) могут быть прошиты pof файлом и тогда сразу после включении питания на плату она сразу будет готова к работе.

О том как загружать FPGA с помощью программатора я расскажу в следующей статье.

 

 

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