exponenta event banner

Динамическое создание ссылочной конструкции с использованием только главного или только подчиненного интерфейса AXI4-Stream

В этом примере показано, как динамически настраивать ссылочную конструкцию с помощью функции обратного вызова на основе опций ссылочных параметров конструкции. Кроме того, этот пример показывает, как Вы можете настроить количество каналов интерфейса AXI4-Stream в Вашем справочном дизайне, чтобы быть интерфейсом Only AXI4-Stream Master, интерфейсом Only AXI4-Stream Slave или обоими интерфейсы.

Prerequisities

Для выполнения этого примера необходимо установить и настроить следующее программное и аппаратное обеспечение:

Введение

Вместо создания нескольких ссылочных конструкций с различными вариантами интерфейса, шириной данных или подключаемыми модулями ввода-вывода теперь можно создать одну ссылочную конструкцию с различными вариантами интерфейса или шириной данных в качестве параметров. Вы можете использовать CustomizeReferenceDesignFcn метод для ссылки на функцию обратного вызова, которая имеет различные варианты для интерфейсов или ширины данных в ссылочной конструкции. Например, Вы можете создать один справочный дизайн и выбрать справочный выбор параметра дизайна, у которого есть только Основной AXI4-поток или только Раб AXI4-потока или и Рабские интерфейсы Владельца и AXI4-потока AXI4-потока вместо того, чтобы создать три отдельных справочных проекта.

Создание файла определения ссылочного проекта и функции обратного вызова

Для этого образца Вы можете рассмотреть справочный Xilinx Zynq ZC706 дизайн AXI4-потока, который состоит из двух Xilinx AXI DMAs, чтобы обращаться с передачей данных от Процессора до FPGA и наоборот интерфейсов Владельца и Раба AXI4-потока использования. В этом примере можно настроить количество каналов интерфейса AXI4-Stream с помощью единой ссылочной конструкции путем создания функции обратного вызова. Различные каналы интерфейса в коде обратного вызова, показанном ниже, используют другое дерево устройств. Аналогичным образом можно изменить созданный файл определения конструкции привязки для выбора различных вариантов параметров конструкции привязки с помощью функции обратного вызова.

На рисунке ниже показан Stream_Channel ссылочный параметр конструкции и выбор интерфейса для AXI4-Stream интерфейса с эталонным дизайном выбора канала потока, указанным с помощью addParameter способ. CustomizeReferenceDesignFcn метод ссылается на функцию обратного вызова с именем callback_CustomizeReferenceDesign.

В приведенном ниже коде показана функция обратного вызова callback_CustomizeReferenceDesign , который имеет ведущие или подчиненные каналы AXI4-Stream или оба канала, указанные с помощью addAXI4StreamInterface способ. DeviceTreeName способ, показанный ниже в обратном вызове, заключается в указании файла дерева устройств, который отличается для различных каналов потока.

function callback_CustomizeReferenceDesign(infoStruct)
% Reference design callback run at the end of the task Set Target Reference Design
% infoStruct: information in structure format
% infoStruct.ReferenceDesignObject: current reference design registration object
% infoStruct.BoardObject: current board registration object
% infoStruct.ParameterStruct: custom parameters of the current reference design, in struct format
% infoStruct.HDLModelDutPath: the block path to the HDL DUT subsystem
% infoStruct.ReferenceDesignToolVersion: Reference design Tool Version set in 1.2 Task
hRD = infoStruct.ReferenceDesignObject;
paramStruct = infoStruct.ParameterStruct;
% get the reference design parameter value
ParamValue = paramStruct.StreamChanel;
% Add the reference design interface into interface list table baed on the
% reference design Parameter value
if strcmp(ParamValue, 'Both Master & Slave')
 % add custom Vivado design
 hRD.addCustomVivadoDesign( ...
     'CustomBlockDesignTcl', 'system_top.tcl', ...
     'VivadoBoardPart',      'xilinx.com:zc706:part0:1.0');
 hRD.addAXI4StreamInterface( ...
     'MasterChannelEnable',      true, ...
     'SlaveChannelEnable',       true, ...
     'MasterChannelConnection', 'axi_dma_s2mm/S_AXIS_S2MM', ...
     'SlaveChannelConnection',  'axi_dma_mm2s/M_AXIS_MM2S', ...
     'MasterChannelDataWidth',   32, ...
     'SlaveChannelDataWidth',    32, ...
     'HasDMAConnection',         true);
 hRD.DeviceTreeName = 'devicetree_axistream_iio.dtb';
elseif strcmp(ParamValue, 'Master Only')
 % Block design TCl for Master Only reference design
 hRD.addCustomVivadoDesign( ...
     'CustomBlockDesignTcl', 'system_top_masteronly.tcl', ...
     'VivadoBoardPart',      'xilinx.com:zc706:part0:1.0');
  hRD.addAXI4StreamInterface( ...
      'MasterChannelEnable',      true, ...
      'SlaveChannelEnable',       false, ...
      'MasterChannelConnection', 'axi_dma_s2mm/S_AXIS_S2MM', ...
      'MasterChannelDataWidth',   32, ...
      'HasDMAConnection',         true);
  hRD.DeviceTreeName = 'devicetree_axistream_MasterOnly_iio.dtb';
elseif strcmp(ParamValue, 'Slave Only')
 % Block design TCl for Slave Only reference design
 hRD.addCustomVivadoDesign( ...
     'CustomBlockDesignTcl', 'system_top_slaveonly.tcl', ...
     'VivadoBoardPart',      'xilinx.com:zc706:part0:1.0');
  % add AXI4-Stream Slave only interface
  hRD.addAXI4StreamInterface( ...
      'MasterChannelEnable',      false, ...
      'SlaveChannelEnable',       true, ...
      'SlaveChannelConnection',  'axi_dma_mm2s/M_AXIS_MM2S', ...
      'SlaveChannelDataWidth',    32, ...
      'HasDMAConnection',         true);
  hRD.DeviceTreeName = 'devicetree_axistream_SlaveOnly_iio.dtb';
  end
 end

Таким образом, создайте функцию обратного вызова, как показано выше, и передайте аргумент infoStruct функции обратного вызова. Аргумент содержит сведения о настройке ссылочной конструкции в формате структуры. Сохраните созданную функцию обратного вызова в папке ссылочного проекта, как показано ниже, или сохраните файл в любом месте и добавьте его в путь MATLAB.

Произведите IP ядро HDL Только с AXI4-потоком Основной/Единственный Рабский Интерфейс AXI4-потока

1.Настройте путь к инструменту синтеза Xilinx Vivado с помощью следующей команды в окне команды MATLAB. При выполнении команды используйте собственный путь установки Vivado.

hdlsetuptoolpath('ToolName', 'Xilinx Vivado', 'ToolPath', 'C:\Xilinx\Vivado\2019.2\bin\vivado.bat');

2. Добавьте папку демонстрационного образца к пути MATLAB с помощью следующей команды:

addpath(fullfile(matlabroot,'toolbox','hdlcoder','hdlcoderdemos','customboards','ZC706'));

3. Открытый Владелец AXI4-потока только использование модели после команды:

open_system('hdlcoder_AXI4StreamMaster');

DUT - это аппаратная подсистема, предназначенная для фабрики FPGA. Внутри этого DUT подсистема счетчика HDL действует как ведущая. Этот счетчик отсчитывается от 1 до 50 и подключается к выходному сигналу yout_data который отображается AXI4-Stream главный интерфейс.

Можно также использовать модель только AXI4 подчиненного устройства. Для открытия модели используйте следующую команду:

open_system('hdlcoder_AXI4StreamSlave');

Как показано выше, DUT имеет двухпортовое ОЗУ, которое действует как подчиненное устройство и принимает данные AXI4-Stream используя подчиненный интерфейс через axis_data_in входной сигнал.

4. Запустите помощник по рабочим процессам HDL из подсистемы DUT, hdlcoder_AXI4StreamMaster/DUT только для демонстрации AXI4-Stream Master. Аналогично откройте помощник по рабочим процессам HDL из подсистемы DUT, hdlcoder_AXI4StreamSlave/DUT только для демонстрационной версии AXI4-Stream Slave.

Настройки целевого интерфейса уже сохранены для ZC706 в этих моделях, поэтому настройки в задании 1.1-1.3 загружаются автоматически. В задаче 1.1 для целевого рабочего процесса выбирается поколение IP Core, а для целевой платформы - оценочный комплект Xilinx Zynq ZC706. В задаче 1.2 AXI4-Stream эталонного проектирования выбран интерфейс с выбором канала потока. Выбор ссылочного параметра конструкции Stream Channel в качестве Master Only только для демонстрационной версии AXI4-Stream Master и выберите Slave Only в качестве параметра выбора только для демонстрационной версии AXI4-Stream Slave.

Как показано в числе выше Вас может настроить справочный дизайн Только к Основному AXI4-потоку или Только Раб или и Владелец AXI4-потока и Раб, выбрав справочный выбор параметра дизайна Речного русла. Функция обратного вызова с соответствующей Tcl оценивается в конце задачи Set Target Reference Design.

5. Если выбран вариант параметра как Master Only, то выбор интерфейса в задаче 1.3 показывает как AXI4 Stream Master. В данном случае интерфейс AXI4-Stream осуществляет связь в режиме ведущего устройства и передает данные AXI4_Stream ведомый IP через сигнал yout_data. Аналогично, если Slave Only выбор параметра выбирается, затем выбор интерфейса отображается как AXI4 Stream Slave. Где интерфейс AXI4-Stream осуществляет связь в подчиненном режиме и принимает данные через сигнал axis_data_in как показано ниже.

6. Щелкните правой кнопкой мыши задачу 4.1 «Создать проект» и выберите «Выполнить до выбранной задачи», чтобы вставить сгенерированное ядро IP в интерфейс AXI4-Stream с эталонным дизайном выбора канала потока. Эталонная конструкция содержит Xilinx AXI DMA IP для обработки потока данных между фабрикой FPGA и процессором или наоборот на основе эталонного проектного интерфейса Only AXI4-Stream master или only AXI4-Stream Slave.

Следующая диаграмма показывает, что произведенный vivado проект с Владельцем AXI4-потока только соединяет выбор, и Вы видите, что связь между кодером HDL произвела IP DUT, и раб памяти нанес на карту Xilinx IP AXI DMA. В этой эталонной конструкции контроллер DMA считывает данные из IP FPGA.

Точно так же следующая диаграмма показывает, что произведенный vivado проект с Рабом AXI4-потока только соединяет выбор, где IP FPGA получает текущие данные от Диспетчера DMA.

7. В помощнике по рабочим процессам HDL выполните остальные задачи для создания модели интерфейса программного обеспечения, а также создайте и загрузите битовый поток FPGA.

Произведите исполняемый файл РУКИ Используя Блок Водителя AXI4-потока для Владельца AXI4-потока только справочный дизайн

Модель интерфейса программного обеспечения генерируется в задаче 4.2 «Создание модели интерфейса программного обеспечения», как показано на следующем рисунке.

Блок водителя AXI4-потока IIO не может быть автоматически произведен в модели интерфейса программного обеспечения, когда скалярный порт your_data нанесен на карту Владельцу AXI4-потока «интерфейса AXI4-Stream». Прежде чем Вы сгенерируете код из модели интерфейса программного обеспечения, добавьте AXI4-поток IIO Прочитанный блок водителя от Вложенного Пакета Поддержки Кодера для Библиотеки Платформы Xilinx Zynq в Браузере Библиотеки Simulink.

Обновленная модель интерфейса программного обеспечения для Владельца AXI4-потока только справочные проекты предоставлена: hdlcoder_AXI4StreamMaster_sw.slx Непрерывные данные от пункта обвинения 0 до 50 используются в этой модели и связаны с Потоком AXI4 блок водителя DMA.

Нажмите кнопку Monitor & Tune на вкладке Hardware панели инструментов Simulink. Embedded Coder строит модель, загружает исполняемый файл ARM на Zc706 оборудование. Теперь как аппаратные, так и программные части проекта работают на аппаратном обеспечении Zynq. IP FPGA передает исходные данные через контроллер DMA и интерфейс AXI4-Stream. Процессор ARM получает данные из IP-адреса FPGA и отправляет результирующие данные в Simulink через внешний режим. Просмотрите выходные данные аппаратных средств Zynq во время y_out Scope.

Произведите исполняемый файл РУКИ Используя Блок Водителя AXI4-потока для Раба AXI4-потока только справочный дизайн

Обновленная модель интерфейса программного обеспечения только для Рабского справочного дизайна AXI4-потока предоставлена: hdlcoder_AXI4StreamSlave_sw.slx В этой модели, встречный блок, который производит 1 - 50 возрастающих данных, связан, чтобы AXI4-течь, Пишут блок водителя DMA. Это означает, что диспетчер DMA будет течь образцы данных количества к IP ядру HDL через интерфейс AXI4-Stream Slave.

Нажмите кнопку «Мониторинг и настройка» на вкладке «Оборудование» панели инструментов модели. Embedded Coder строит модель, загружает исполняемый файл ARM на Zc706 оборудование. Теперь как аппаратные, так и программные части проекта работают на аппаратном обеспечении Zynq. Процессор ARM посылает исходные данные в IP FPGA через контроллер DMA и интерфейс AXI4-Stream. Проверьте выходные данные IP-ядра от аппаратных средств Zynq на y_out временной области.