Когда вы открываете HDL Workflow Advisor и запускаете рабочий процесс IP Core Generation
для вашей модели Simulink®, можно задать типичную платформу Xilinx® или типичную платформу Intel®. Рабочий процесс затем генерирует типичное ядро IP, которое можно интегрировать в любую целевую платформу по вашему выбору. Для интегрирования ядра IP задайте и укажите пользовательский исходный проект для своей требуемой платы при помощи класса hdlcoder.ReferenceDesign
. Чтобы узнать больше, см.:
Сгенерировать независимое от платы пользовательское ядро IP, чтобы использовать в среде интегрирования встраиваемой системы, такой как Intel Qsys, Xilinx EDK или Интегратор IP Xilinx:
Выберите свой DUT в вашей модели Simulink и откройте HDL Workflow Advisor. Например, откройте модель hdlcoder_led_blinking
.
open_system('hdlcoder_led_blinking')
Установите путь к установленному инструменту синтеза для целевого устройства при помощи функции hdlsetuptoolpath
. Например, если вашим инструментом синтеза является Xilinx Vivado®, введите эту команду:
hdlsetuptoolpath('ToolName','Xilinx Vivado','ToolPath',... 'C:\Xilinx\Vivado\2018.2\bin\vivado.bat');
Смотрите Поддерживаемые Сторонние программы и Оборудование для последней поддерживаемой версии инструмента синтеза.
Откройте HDL Workflow Advisor для Подсистемы DUT. Для LED мигающая модель Подсистема led_counter
является DUT. В Set Target> задача Set Target Device and Synthesis Tool:
Для Target workflow выберите IP Core Generation
.
Для Target platform, в зависимости от инструмента синтеза и устройства, для которого вы предназначаетесь, выберите Generic Altera Platform
или Generic Xilinx Platform
. Нажмите Run This Task.
В Set Target> задача Set Target Interface, выберите Target Platform Interface для каждого порта, затем нажмите Apply. Можно сопоставить каждый порт DUT с одним из AXI4-Lite
, AXI4
, AXI4-Stream
, AXI4-Stream Video
или интерфейсов External Port
. Чтобы узнать больше об этих интерфейсах, смотрите Интерфейсы Целевой платформы.
Если вы не хотите сопоставлять порты DUT с ведомыми интерфейсами AXI4, можно сопоставить их с интерфейсами External Port
.
Расширьте задачу Set Code Generation Options. Щелкните правой кнопкой по задаче Set Optimization Options и выберите Run to Selected Task.
В HDL Code Generation> задача Generate RTL Code and IP Core, можно задать, хотите ли вы сгенерировать ведомый интерфейс AXI4 по умолчанию. По умолчанию HDL Coder™ генерирует ведомые интерфейсы AXI4 для сигналов, таких как часы, сброс, готовый, метка времени, и так далее. Если вы не хотите генерировать какие-либо ведомые интерфейсы AXI4, снимите флажок Generate default AXI4 slave interface. Нажмите Run This Task.
Если вы сопоставили какой-либо из портов DUT к ведомым интерфейсам AXI4 в задаче Set Target Interface, даже если вы снимаете этот флажок, генератор кода игнорирует эту установку и сопоставляет порты с ведомыми интерфейсами AXI4.
Когда вы снимаете флажок и запускаете задачу, генератор кода сохраняет эту настройку на Подсистеме DUT как свойство GenerateDefaultAXI4Slave блока HDL.
После выполнения задачи HDL Coder генерирует файлы ядра IP в выходной папке, показанной поле IP core folder, включая документацию HTML. Чтобы просмотреть отчет ядра IP, щелкните по ссылке в окне сообщения.
Когда вы запускаете рабочий процесс IP Core Generation
, можно также сгенерировать ядро IP HDL без любых ведомых интерфейсов AXI4 в исходном проекте.
Чтобы запустить этот рабочий процесс, откройте HDL Workflow Advisor, задайте Generic Xilinx Platform
или Generic Altera Platform
как целевая платформа, и убедитесь, что вы сопоставляете порты DUT только с Внешним портом или интерфейс AXI4-Stream с отображением TLAST. Кроме того, когда вы генерируете ядро IP HDL, в задаче Generate RTL Code and IP Core, снимаете флажок Generate default AXI4 slave interface, и затем выбираете Run This Task.
Используйте эту возможность когда:
Вы не хотите настраивать параметры ядра IP при помощи ведомых интерфейсов AXI4.
Вы хотите создать пользовательский исходный проект без ведомых интерфейсов AXI4, таких как автономные платы FPGA.
Кроме того, предотвращение генерации ведомых интерфейсов AXI4 в таких случаях уменьшает использование аппаратного ресурса и сложность проекта.
Внешний IO и внутренние интерфейсы IO соединяют ваше ядро IP HDL с другим существующим дюйм/с в вашем пользовательском исходном проекте. Чтобы задать эти интерфейсы, вы используете addInternalIOInterface
и методы addExternalIOInterface
класса hdlcoder.ReferenceDesign
.
Чтобы интегрировать ядро IP HDL, можно создать пользовательский исходный проект без ведомых интерфейсов AXI4. В пользовательском исходном проекте можно только использовать Внешний IO, Внутренний интерфейс IO или AXI4-Stream с отображением TLAST. Для примеров таких исходных проектов см.:
Когда вы генерируете ядро IP HDL без ведомых интерфейсов AXI4, определенные ограничения применяются. Смотрите Ядро IP без Ведомых Интерфейсных Ограничений AXI4.
DUT должен быть атомарной системой.
То же ядро IP не может использовать и интерфейс AXI4 и интерфейс AXI4-Lite.
DUT не может содержать Системные блоки Генератора Xilinx или Разработчика DSP Intel Усовершенствованные блоки.
Если вашим выходным языком является VHDL®, и вашим инструментом синтеза является Xilinx ISE или Intel Куарт Прайм, DUT не может содержать модель - ссылку.
Порты ввода и вывода должны иметь немного ширины, меньше чем или равной 32 битам.
Порты ввода и вывода должны быть скаляром.
Порты должны иметь 32-битную ширину.
Порты должны быть скаляром.
У вас может быть максимум одного входного видеопорта и одного выходного видеопорта.
AXI4-потоковый Видеоинтерфейс не поддержан в режиме Coprocessing – blocking
. Processor/FPGA synchronization должен быть установлен в режим Free running
. режим Coprocessing – blocking
не поддержан.
Можно только сопоставить порты с Внешними или Внутренними интерфейсами IO или интерфейсом AXI4-Stream с отображением TLAST. Другие интерфейсы, которые требуют ведомых интерфейсов AXI4, таких как Ведущее устройство AXI4, AXI4-поток и AXI4-потоковое Видео, не поддержаны.
Необходимо использовать режим Free running
для Processor/FPGA synchronization. режим Coprocessing – blocking
не поддержан.