Генерация IP-ядра HDL с несколькими AXI4-Stream и AXI4 главными интерфейсами

Когда вы запускаете типовой рабочий процесс генерации IP-ядра для своего Simulink® моделируйте или нацеливайте свой собственный пользовательский исходный проект, который вы создали, можно сгенерировать HDL-ядро IP с несколькими интерфейсами AXI4-Stream, AXI4-Stream Video интерфейсами или AXI4 Master интерфейсами. Сведения об этих интерфейсах см. в разделе Интерфейсы целевой платформы.

Зачем использовать несколько AXI4 интерфейсов

Можно использовать несколько потоковых интерфейсов, чтобы облегчить высокоскоростную передачу данных в различных приложениях, таких как:

  • Передача данных между A/D и D/A конвертерами

  • Программно определяемые радио, которые обрабатывают несколько каналов приемопередатчика

  • Алгоритмы зрения, которые выполняют аннотацию изображения или обнаружение объектов

Задайте несколько AXI4 интерфейсов в рабочем процессе генерации типового IP-ядра

Чтобы задать несколько AXI4-Stream, AXI4-Stream Video или AXI4 Master:

  1. В Set Target Device and Synthesis Tool задаче выберите IP Core Generation как Target workflow и Generic Xilinx Platform или Generic Altera Platform как Target platform. Запустите эту задачу.

  2. Чтобы добавить несколько целевых интерфейсов, в Set Target Interface задаче, в Target Platform Interfaces разделе таблицы интерфейсов целевой платформы, выберите Add more ....

  3. Затем можно добавить больше интерфейсов в диалоговом окне Add New Target Interfaces. Укажите тип интерфейса, который вы хотите добавить, количество интерфейсов и пользовательское имя для каждого дополнительного интерфейса.

    После применения настроек созданные интерфейсы появляются в таблице интерфейсов целевой платформы. После запуска этой задачи указанные дополнительные интерфейсы сохраняются в подсистеме DUT как AdditionalTargetInterfaces свойства блоков.

Если вы измените дополнительные интерфейсы, которые уже были сопоставлены с портами DUT, такие как удаление или переименование интерфейса, который уже был сопоставлен, предыдущая информация о отображении интерфейса может быть потеряна. Порты затем становятся несопоставленными с интерфейсами, а раздел Target platform interfaces отображений No interface specified. Поэтому, если вы вносите изменения в дополнительные целевые интерфейсы, проверьте, что порты DUT сопоставлены с правильными целевыми интерфейсами.

Задайте несколько AXI4 интерфейсов в пользовательских исходных проектах

Когда вы создаете свой собственный пользовательский исходный проект, можно добавить несколько AXI4-Stream, AXI4-Stream Video и AXI4 Master интерфейсов. В зависимости от типа интерфейса, который вы хотите добавить, задайте дополнительные интерфейсы при помощи addAXI4StreamInterface, addAXI4StreamVideoInterface, или addAXI4MasterInterface методы hdlcoder.ReferenceDesign класс.

Чтобы добавить больше интерфейсов, в plugin_rd файл, вызывать метод интерфейса каждый раз, когда вы хотите добавить больше интерфейсов. В этом примере показано, как добавить два AXI4-Stream интерфейса.

function hRD = plugin_rd()
% Reference design definition

%   Copyright 2017-2019 The MathWorks, Inc.

% Construct reference design object
hRD = hdlcoder.ReferenceDesign('SynthesisTool', 'Xilinx Vivado');

hRD.ReferenceDesignName = 'Multiple Interface Reference Design';
hRD.BoardName = 'ZedBoard';

% Tool information
hRD.SupportedToolVersion = {'2019.1'}; 

% ...
% ...

% Add AXI4-Stream interface 1
hRD.addAXI4StreamInterface (...
    'MasterChannelEnable',      true, ...
    'SlaveChannelEnable',       true, ...
    'MasterChannelConnection',  'axi_dma_s2mm/S_AXIS_S2MM', ...
    'SlaveChannelConnection',   'axi_dma_mm2s/M_AXIS_MM2S', ...
    'MasterChannelDataWidth',   32, ...
    'SlaveChannelDataWidth',    32, ...
    'InterfaceID',              'AXI4-Stream1');

% Add AXI4-Stream interface 2
hRD.addAXI4StreamInterface (...
    'MasterChannelEnable',      true, ...
    'SlaveChannelEnable',       true, ...
    'MasterChannelConnection',  'ADC/S_AXIS_S2MM', ...
    'SlaveChannelConnection',   'DAC/M_AXIS_MM2S', ...
    'MasterChannelDataWidth',   32, ...
    'SlaveChannelDataWidth',    32, ...
    'InterfaceID',              'AXI4-Stream2');



% ...
% ...

Когда вы запускаете IP Core Generation рабочий процесс и нацелен на пользовательский исходный проект Multiple Interface Reference Designв Set Target Interface задаче можно сопоставить порты DUT с AXI4-Stream1 ведущими и ведомыми каналами и AXI4-Stream2 ведущими и ведомыми каналами.

Примечание

Когда вы нацелены на свой собственный пользовательский исходный проект и сопоставляете дополнительные интерфейсы с портами DUT в Set Target Interfaces задаче, дополнительные интерфейсы не сохраняются в модели как AdditionalTargetInterfaces свойство блока. Вместо этого дополнительные интерфейсы сохраняются в пользовательском исходном проекте в plugin_rd.m файл.

Можно также динамически настраивать исходный проект, задавая количество добавляемых интерфейсов и свойства интерфейса.

  1. В plugin_rd Файл создайте параметр исходного проекта для количества дополнительных интерфейсов, которые вы хотите добавить.

  2. Создайте функцию обратного вызова, которая имеет различные варианты для количества интерфейсов, которые вы хотите добавить, и затем ссылку на функцию в plugin_rd файл при помощи CustomizeReferenceDesignFcn метод hdlcoder.ReferenceDesign класс.

Дополнительные сведения см. в разделе Настройка Исходном проекте на основе параметров Исходного проекта.

Отображение сигнала готовности для нескольких потоковых интерфейсов

Когда вы используете один потоковый канал, HDL Coder™ автоматически генерирует сигнал Ready и связанную логику давления.

Если вы используете несколько потоковых каналов, HDL Coder не генерирует автоматически логику обратного давления. В этом случае сигнал Ready генерируется, но главный сигнал Ready на входе игнорируется, и ведомый сигнал Ready на выходе привязывается к высокому значению. Отсутствие логики обратного давления может привести к сбросу выборок. Если вы хотите, чтобы ваш проект применил обратные давления к интерфейсу Slave или ответил на обратные давления от интерфейса Master, необходимо смоделировать сигнал Ready для каждого дополнительного интерфейса, а затем сопоставить порт с сигналом Ready для этого интерфейса. Когда вы не моделируете, задача Set Target Interface отображает предупреждение, которое предоставляет имена интерфейсов, которые требуют порта Ready. Если вашему проект не нужно применять или отвечать на задние давления, вы можете игнорировать это предупреждение, и вам не нужно моделировать сигнал Ready.

При использовании нескольких AXI4-Stream интерфейсов, если вы хотите, чтобы ваш проект применил обратные давления к интерфейсу Slave или ответил на задние давления от интерфейса Master, вы должны смоделировать сигнал Ready для каждого дополнительного интерфейса, а затем сопоставить порт с сигналом Ready для этого интерфейса. Чтобы узнать, как генерируется логика давления для одного потокового канала и как смоделировать сигнал Ready, смотрите Сигнал готовности (необязательно).

Ограничения

  • При запуске типового рабочего процесса генерации ядра IP можно задать тип интерфейса и пользовательский идентификатор интерфейса для каждого дополнительного интерфейса. Другие свойства интерфейса, такие как ширина данных, не могут быть настроены и использовать значения по умолчанию. Когда вы создаете свой собственный пользовательский исходный проект, можно настроить имя интерфейса и свойства интерфейса.

  • При сопоставлении портов DUT с несколькими AXI4-Stream каналами интерфейса можно использовать только скалярные порты. Векторные порты могут иметь не более одного AXI4-Stream главного канала и одного AXI4-Stream ведомого канала.

  • Xilinx® Zynq®-7000 или Intel® Куарт® Прайм, должно быть, ваша целевая платформа.

  • Processor/FPGA synchronization должны быть Free running.

  • Силинкс-Вивадо® или Intel Quartus Prime должен быть вашим инструментом синтеза.

Похожие темы

Похожие темы