Можно задать несколько Основных интерфейсов AXI в пользовательском исходном проекте и получить доступ к ведомым интерфейсам AXI4 в сгенерированном HDL ядро IP DUT для DUT. Эта возможность позволяет вам одновременно соединить HDL ядро IP DUT с двумя или больше Основными IP AXI в исходном проекте, таком как Ведущий IP HDL Verifier™ JTAG AXI и процессор ARM® в системе обработки Zynq®.
Чтобы задать несколько Основных интерфейсов AXI, вы задаете BaseAddressSpace
и MasterAddressSpace
для каждого Основного экземпляра AXI, и также свойство IDWidth
.
IDWidth
является шириной всех сигналов ID, таких как AWID
, WID
, ARID
и RID
, заданный как положительное целое число. По умолчанию IDWidth
является 12
, который позволяет вам задать одну связь интерфейса AXI Master с ядром IP DUT. Чтобы соединить ядро IP DUT с несколькими Основными интерфейсами AXI, вам, вероятно, придется увеличить IDWidth
. Значение IDWidth
специфично для инструмента. Чтобы видеть значение, которое необходимо использовать при определении больше чем одного интерфейса AXI Master, обратитесь к документации для того инструмента. Если вы используете неправильную ширину ID, инструмент синтеза генерирует ошибку и сообщает о правильном IDWidth
, который необходимо использовать.
Этот код является синтаксисом для поля MasterAddressSpace
при определении нескольких Основных интерфейсов AXI в исходных проектах Vivado®-based:
'MasterAddressSpace', ... {'AXI Master Instance Name1/Address Space of Instance Name1', ... 'AXI Master Instance Name2/Address_Space of Instance Name2',...};
Например, этот код иллюстрирует, как можно изменить файл plugin_rd
, чтобы задать два Основных интерфейса AXI.
% ... %% Add custom design files % add custom Vivado design hRD.addCustomVivadoDesign( ... 'CustomBlockDesignTcl', 'system_top.tcl', ... 'VivadoBoardPart', 'xilinx.com:zc706:part0:1.0'); % ... % ... % The DUT IP core in this reference design is connected % to both Zynq Processing System and the MATLAB as AXI % Master IP. Because of 2 AXI Master, ID width % has to be increased from 12 to 13. hRD.addAXI4SlaveInterface( ... 'InterfaceConnection', 'axi_interconnect_0/M00_AXI', ... 'BaseAddress', {'0x40010000', '0x40010000'}, ... 'MasterAddressSpace', {'processing_system7_0/Data', 'hdlverifier_axi_master_0/axi4m'}, ... 'IDWidth', 13); % ...
В этом примере два Основных IP AXI являются HDL Verifier MATLAB как Ведущий IP AXI и процессор ARM. На основе синтаксиса MasterAddressSpace
, для HDL Verifier MATLAB как Ведущий IP AXI, AXI Master Instance Name
является hdlverifier_axi_master_0
, и Address_Space of Instance Name
является axi4m
.
Ведомые интерфейсы AXI4 в HDL, который ядро IP DUT соединяет с Xilinx® AXI Interconnect IP, который задан свойством InterfaceConnection
метода addAXI4SlaveInterface
. Ведомые интерфейсы AXI4 имеют BaseAddress
. Этот BaseAddress
должен сопоставить с MasterAddressSpace
для двух Основных IP AXI, которые заданы как массив ячеек из символьных векторов.
Необходимо убедиться, что Основной дюйм/с AXI был уже включен в проект исходного проекта Vivado. system_top.tcl
является файлом TCL, который задан свойством CustomBlockDesignTcl
метода addCustomVivadoDesign
. В этом файле TCL необходимо убедиться, что два Основных IP AXI соединяются с тем же Соединительным IP AXI Xilinx. Межсоединения затем соединяют Основного дюйм/с AXI с ведомыми интерфейсами AXI4 в ядре IP HDL.
После того, как вы запускаете рабочий процесс IP Core Generation
и создаете проект Vivado, открываете проект. В проекте Vivado, если вы открываете блочную конструкцию, вы видите два Основных IP AXI, соединенные с HDL ядро IP DUT. Если вы выбираете вкладку Address Editor, вы видите Основные имена экземпляра AXI и соответствующие адресные пространства.
Чтобы задать несколько Основных интерфейсов AXI, вы задаете InterfaceConnection
и BaseAddressSpace
для каждого Основного экземпляра AXI, и также свойство IDWidth
. Этот код является синтаксисом для поля InterfaceConnection
при определении нескольких Основных интерфейсов AXI в исходных проектах Qsys™-based:
'InterfaceConnection', ... {'AXI Master Instance Name1/Port name of Instance Name1', ... 'AXI Master Instance Name2/Port name of Instance Name1', ...};
Например, этот код иллюстрирует, как можно изменить файл plugin_rd
, чтобы задать три Основных интерфейса AXI.
% ... %% Add custom design files % add custom Qsys design hRD.addCustomQsysDesign('CustomQsysPrjFile', 'system_soc.qsys'); hRD.CustomConstraints = {'system_soc.sdc','system_setup.tcl'}; % ... % add AXI4 slave interfaces hRD.addAXI4SlaveInterface( ... 'InterfaceConnection', {'hps_0.h2f_axi_master','master_0.master','MATLAB_as_AXI_Master_0.axm_m0'}, ... 'BaseAddress', {'0x0000_0000','0x0000_0000','0x0000_0000'},... 'InterfaceType', 'AXI4'... 'IDWidth', 14); % ...
На основе синтаксиса опции InterfaceConnection
, для HDL Verifier MATLAB как Ведущий IP AXI, AXI Master Instance Name
является MATLAB_as_AXI_Master_0
, и Port name
является axm_m0
. Для каждого Основного IP AXI BaseAddress
ядра IP HDL и InterfaceConnection
должен быть задан как массив ячеек из символьных векторов.
Необходимо убедиться, что Основной дюйм/с AXI был уже включен в проект исходного проекта Qsys. system_soc.qsys
является файлом, который задан свойством CustomQsysPrjFile
метода addCustomQsysDesign
. В этом файле необходимо убедиться, что два Основных IP AXI соединяются с тем же Соединительным IP Qsys AXI.
Межсоединения затем соединяют Основного дюйм/с AXI с ведомыми интерфейсами AXI4 в ядре IP HDL.
После того, как вы запускаете рабочий процесс IP Core Generation
и создаете проект Quartus®, открываете проект. В проекте Куарта вы видите три Основных IP AXI и Основные интерфейсы AXI, соединенные с ядром IP HDL для DUT. Если вы выбираете вкладку Address Map, вы видите Основные имена экземпляра AXI, имена порта и соответствующие адресные пространства.
hdlcoder.Board
| hdlcoder.ReferenceDesign