Всем снова здравствуйте, с вами Александр и та, кто, наверное, уже не нуждается в представлении.

Сегодня будет статья о работе в САПР (система автоматизированного проектирования) Vivado 2022. Заранее извиняемся за большое количество скриншотов и тяжесть статьи.

Вы предупреждены, а значит вооружены! Поехали!
Vivado это интерактивная среда разработки под HDL (hardware description language) разработанная компанией Xilinx на замену XILINX ISE в 2012. Причина разработки заключалась в том, что ISE не могла выполнять синтез для новых флагманских FPGA. Из-за этого случился довольно резкий разрыв между поколениями и, например в Vivado не поддерживается работа с поколением FPGA Spartan 6.

Итак, после открытия нас встречает общее окно Vivado с меню, находим создание проекта под заголовком Quick start (Рис. 1)

Нажимаем на “create project” и попадаем в окно создание проекта (Рис. 2)

Нажимаем “Next”, появляется окно, где нужно вписать название проекта и его путь (Рис. 3).

Далее будет окошко с выбора типа проекта оставляем RTL (Рис.4) и идём дальше.

Далее будут окна с добавлением новых файлов в проект пропускаем их через
“Next” до окна с выбором FPGA (Рис.5)

Здесь очень важный момент, нужно выбрать FPGA под которую будет собираться проект. В моём случает это Artix 7 xc7a15tcsg325-1, ПЛИС из статьи о комбинационной логике.

Последнее окно содержит общую информацию (Рис.6) по проекту и заветную кнопку “finish”. Нажимаем и создаём свой первый проект!

Всё мы завершили создание проекта можно переходить к написанию кода и файлов проектных ограничений. Для начало создадим файл с кодом для Verilog. В левом верхнем углу будет окошко с иерархией проекта (Рис.7).

Нажимаем правой кнопкой мышки на Design sources и выбираем add sources (Рис.8)

Появиться окно типа файла (Рис.9) с установленным выбором на design sources, так и надо идём дальше. Далее появиться знакомое окно из начало создания проекта теперь нажимаем кнопку “Create file” и получаем ещё одно окошко где указывается тип языка HDL и название файла (Рис.10), выбираем Verilog ,а название Logic_OR и нажимаем Ok.


В иерархи отобразился новый файл (Рис.11) нажимаем и получаем окно с шаблоном для написания кода (Рис.12).


Теперь допишем сюда код из статьи про логику и попробуем сделать синтез.
module Logic_OR(
input a,b,//sw1 и sw2
output c,d,osc
);
assign c=~(a&b);
assign d = ~c; //
assign osc =c; //выход осцилографа
endmodule
Слева есть кнопка с зелёным треугольником “Run Synthesis” (Рис 13.) запускаем синтез. Если в коде нет ошибок ( В этом коде их нет) будет выведено окошко о выполнении синтеза (Рис.14). Сам процесс синтеза заключается в преобразовании нашего кода HDL в схему RTL. Саму схему мы посмотрим далее.


Для просмотра схемы RTL под Run Synthesis выбираем Open Synthesized Design (Рис.15) и нажимаем на Schematic.

Открывается окно с схемой (Рис.16). После просмотра, давайте теперь создадим файл проектных ограничений.

Для этого в иерархии проекта находим наименование Constraints и проделываем ту же процедуру, что и с файлом Verilog (Рис.17- Рис.19)



После того как успешно создали файл проектных ограничений можно перенести туда код из примера про логику.
set_property PACKAGE_PIN C8 [get_ports c]
set_property IOSTANDARD LVCMOS33 [get_ports c]
set_property PACKAGE_PIN A9 [get_ports osc]
set_property IOSTANDARD LVCMOS33 [get_ports osc]
set_property PACKAGE_PIN H18 [get_ports a]
set_property IOSTANDARD LVCMOS33 [get_ports a]
set_property PACKAGE_PIN H17 [get_ports b]
set_property IOSTANDARD LVCMOS33 [get_ports b]
set_property PACKAGE_PIN D8 [get_ports d]
set_property IOSTANDARD LVCMOS33 [get_ports d]
Сам файл нужен, чтобы связать входы и выходы схемы, полученной при синтезе с физическими ножками FPGA. Дaлее, в левом нижнем углу находим кнопку Generate Bitstream (Рис.20) нажимаем и идём заваривать чай. Для некоторых больших проектов генерация битника иногда занимает по полчаса или час.

После успешной генерации должно появиться сообщение о успешном выполнении (Рис.21).


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

Да есть такое, но зато будет что в комментариях обсудить. Ладно мы ещё с прошивкой не закончили. В сообщении о успешной генерации выбираем пункт Open Hardware Manager и нажимаем ОК. После открытия появиться сверху зелёная плашка (Рис.22) нажимаем Open target.

Появляется окно с выбором Auto Connect (Рис.23) выбираем его.

После происходит поиск подключенной платы, если всё правильно подключено, то слева измениться иерархия (Рис.24) и чип FPGA отобразиться в виде синего значка.

Нажимаем правой кнопкой мыши и получаем новое окно (Рис. 25)

Выбираем вариант Program Device и получаем последнее на сегодня окно (Рис.26) с выбором бит файла для прошивки ПЛИС.

Нажимаем Program. Готово! Плата прошивается. Фух, это статья лично для меня была самая тяжёлая в написании.

Ладно, на этой прекрасной ноте, прощаемся с вами!

Список литературных источников
1. https://en.wikipedia.org/wiki/Vivado?ysclid=mb1ykx337416399822
2. ПЛИС С XILINX. Языки описания аппаратуры VHDL/Verilog САПР, приемы проектирования (Aвтор И. Е. Тарасов)
3. FPGA prototyping by Verilog examples (Автор PONG P.CHU)