fpga-systems-magazine

Разработка IP-блока с помощью инструментов высокоуровнего синтеза: HLS Часть 2

Главная » Статьи » Xilinx » High Level Synthesis
PointPas
10.09.2019 17:58
7613
0
0.0
Оглавление
Аннотация    
Интегрирование IP-блоков в проект Vivado    
Шаг 1: Создание нового проекта    
Шаг 2: Создаем блок дизайн    
Шаг 3: Синтез и имплементация проекта    
Список литературы    

Аннотация
 
В этой части будут описаны основные шаги для создания блок дизайна (работа в IP Integrator) для разработанных ранее IP-блоков в среде Vivado HLS [1]. Интеграция будет производится для системы-на-кристалле ZYNQ-7000, а конкретно для Zynq установленного  на плате MiniZed [2, 3]. 

Интегрирование IP-блоков в проект Vivado
 
Предполагается, что читатель уже умеет работать в Vivado, поэтому подробностей про создание проекта и т.п. не будет. Если Вы не знакомы с разработкой на Zynq-7000, то рекомендуем обратить внимание на соответствующую серию видеоуроков на русском [4]
 
Шаг 1: Создание нового проекта 
 
Откройте Vivado и создайте новый проект. При создании проекта выберите вашу отладочную плату, в моем случае этой платой будет MiniZed (Рисунок 1). 
О том, как добавить параметры MiniZed в Vivado написано в [5] (по ссылке архив с файлами и инструкцией).
 

Рисунок 1 – Выбор платы при создании проекта в Vivado
Шаг 2: Создаем блок дизайн
 
После успешного создания проекта нажимаем на кнопку “Create Block Design”. В поле “Design name” вводим название создаваемого блочного проекта (Рисунок 2).

 

Рисунок 2 – Создание блок дизайна

Нажимаем на плюс на рабочей панели в открывшемся окне и выбираем “ZYNQ7 Processing System”. После того как IP добавится в блок дизайн появится помощник. Нажимаем на “Run Block Automation”. Проверяем, чтобы стояла галочка напротив пункта с применением параметров предустановки (Рисунок 3) – это необходимо для того, чтобы все интерфейсы, которые есть на плате и используются цинком, были настроены корректно. 
По факту нам нужен только UART, чтобы мы могли принимать и отправлять сообщения. Так же нам нужен AXI GP порт для связи с нашими IP-блоками. Для этого жмем два раза на IP ZYNQ в блок дизайне. В открывшемся окне переходим во вкладку PS-PL Configuration и находим M AXI GP0, отмечаем галочкой (Рисунок 4).
 

Рисунок 3 – Применяем предустановки для используемой платы
 

Рисунок 4 – Включаем AXI порт
 
Теперь добавим наши IP-блоки. Для этого в менеджере проекта заходим в настройки, переходим во вкладку IP, выбираем вкладку Repository, нажимаем на плюс, указываем путь к IP блоку. IP-блоки можно найти в папке impl → ip каждого отдельного решения в Vivado HLS (Рисунок 5).

 

Рисунок 5 – Подключение IP-блоков в репозиторий

Добавляем наши IP-блоки на схему в блок дизайне. Еще нам понадобятся стандартные блоки, которые называются “Processor System Reset” и “AXI Interconnect” (нужен для подключения M AXI GP к AXI4-Lite). Интерконнект по умолчанию с двумя мастерами, нам же нужен только один, поэтому открываем его двойным кликом и выбираем нужное количество мастеров. Соединяем все блоки между собой как показано на рисунке (Рисунок 6). Выход OutPWM_V сделаем внешним для блок дизайна (просто щелкаем по сигналу и выбираем “Make External”).  Во вкладке “Window” жмем “Address Editor” в открывшейся вкладке нажимаем на кнопку автоматического назначения адресов (Рисунок 7). 
 
Рисунок 6 – Итоговый блок дизайн

 
Рисунок 7 – Назначаем адрес


На этом разработка блок дизайна окончена.

Шаг 3: Синтез и имплементация проекта

Возвращаемся в наш блок дизайн и нажимаем F6 (выполнится проверка собранного проекта в IP-Integrator). Если ничего не напутали, то Vivado напишет, что все хорошо (Рисунок 8).

 
 
Рисунок 8 – Отчет об отсутствии ошибок проекта в IP-Integrator

Далее нажимаем во вкладке “Source” проекта по блок дизайну правой кнопкой мыши и выбираем “Generate Output Products”. В открывшемся окне выбираем “Global”. После этого снова жмем по блок дизайну правой кнопкой мыши и жмем “Create HDL Wrapper” (Рисунок 9). В открывшемся окне оставляем все как есть. 

 
 
Рисунок 9 – Доступные действия при нажатии на файл блочного проекта ПКМ

Дальше необходимо добавить файл, в котором будет указана информация о том, к какому выводу нашей микросхемы будет подключен сигнал OutPWM_V_0 и какой у него стандарт напряжения. Для этого нажимаем на плюс во вкладке “Source” и выбираем “Add or create constraints” (Рисунок 10). Называем файл как угодно. Пишем в нем следующее:
 
set_property PACKAGE_PIN E13 [get_ports {OutPWM_V_0       }];
# Set the bank voltage for IO Bank 35 to 3.3V
set_property IOSTANDARD LVCMOS33 [get_ports -of_objects [get_iobanks 35]];

OutPWM_V_0 будет выведен на пин E13.
 
 
Рисунок 10 – Добавляем констрейны

Теперь необходимо сгенерировать файл для прошивки нашей СнК. Чтобы сгенерировать битстрим можно пошагово запускать каждый этап в Vivado, а можно просто выбрать генерацию битстрима (кнопка “Generate Bitstream”), тогда Vivado скажет, что нет результатов синтеза и имплементации и предложит их получить. Т.к. все делается в бесплатной версии Vivado, то необходимо чтобы выбранная модель СнК была доступна в этой версии. Перечень поддерживаемых СнК для бесплатной версии Vivado следует уточнить в [6] или [7] (обязательно убедитесь, что версия документа соответствует версии Vivado). На этом этап интеграции IP блоков, разработанных на HLS в систему на базе ZYNQ окончена.
 
Продолжение следует
 
Список литературы
 
1.    Разработка IP-блока с помощью инструментов высокоуровнего синтеза: HLS. Часть 1.
2.    MiniZed™: a single-core Zynq 7Z007S development board
3.    Осваиваем Zynq-7000S с бесплатной отладкой: видео
4.    Осваиваем Zynq-7000: видеоуроки (доп. ссылка)
5.    Добавление MiniZed в Vivado: архив с инструкцией
6.    Vivado Design Suite Evaluation and WebPACK // Ссылка
7.    UG973. Release Notes, Installation, and Licensing
 


  Скачать статью в формате PDF. Зарегистрируйтесь, это не займет много времени.  Статья в формате PDF



7613
0
0.0

Всего комментариев : 0
avatar

FPGA-Systems – это живое, постоянно обновляемое и растущее сообщество.
Хочешь быть в курсе всех новостей и актуальных событий в области?
Подпишись на рассылку

ePN