То В этом примере показано, как использовать Рабочий процесс Генерации Ядра IP HDL Coder™, чтобы разработать исходный дизайн для частей Xilinx® без встроенного существующего процессора ARM®, но которые все еще используют HDL Coder™, сгенерировало интерфейс AXI, чтобы управлять DUT. Этот пример будет использовать MATLAB в качестве Ведущего IP AXI от HDL Verifier™ и Xilinx, Ведущее устройство JTAG, чтобы получить доступ к HDL Coder™ сгенерировало регистры DUT. Для MATLAB как Ведущее устройство AXI можно получить доступ к регистрам DUT из MATLAB непосредственно. Для Ведущего устройства JTAG Xilinx можно получить доступ к использованию регистров DUT Консоль Vivado Tcl путем записи команд Tcl. Проект FPGA реализован на плате Xilinx Kintex-7 KC705.
Комплект Проекта Xilinx Vivado, с поддерживаемой версией, перечисленной в документации HDL Coder
Макетная плата Xilinx Kintex-7 KC705
Пакет поддержки HDL Coder™ для Советов FPGA Xilinx
(Необязательно) HDL Verifier™ поддерживает пакет для Советов FPGA Xilinx
Существует много проектов, которые извлекут выгоду из использования Рабочего процесса Генерации Ядра IP HDL Coder™, не используя или встроенный процессор ARM® или Пакет Поддержки Embedded Coder™, но которые все еще усиливают сгенерированные AXI4-облегченные регистры HDL Coder. Эти проекты включают:
HDL Verifier™ MATLAB как ведущее устройство AXI + ядро IP HDL Coder™
MicroBlaze™ + ядро IP HDL Coder™
Конечная точка PCIe + ядро IP HDL Coder™
Xilinx ведущее устройство JTAG + ядро IP HDL Coder™
Существует два исходных проекта, включенные в этот пример. Первый исходный проект, "Xilinx JTAG Ведущему устройству AXI", использует Вивадо ИП в JTAG Ведущему устройству AXI и поэтому требует, чтобы использование консоли Vivado Tcl выпустило чтения и записи. Второй исходный проект, "MATLAB как Ведущее устройство AXI", использует MathWorks IP и интерфейс командной строки MATLAB для издания чтений и записей. Обратите внимание на то, что версия MathWorks требует, чтобы лицензия HDL Verifier использовала.
Эти два исходных проекта почти идентичны, за исключением Основного IP JTAG, используемого в блок-схеме, показанной ниже::
Исходный проект, "Xilinx JTAG Ведущему устройству AXI", использует IP Vivado™ в JTAG Ведущему устройству AXI и поэтому требует, чтобы использование консоли Vivado™ Tcl выпустило чтения и записи:
plugin_rd.m для этого исходного проекта показывают ниже:
function hRD = plugin_rd() % Reference design definition
% Copyright 2014-2018 The MathWorks, Inc.
% Construct reference design object hRD = hdlcoder.ReferenceDesign('SynthesisTool', 'Xilinx Vivado');
hRD.ReferenceDesignName = 'Xilinx JTAG to AXI Master'; hRD.BoardName = 'Xilinx Kintex-7 KC705 development board';
% Tool information hRD.SupportedToolVersion = {'2017.2','2017.4'};
%% Add custom design files % add custom Vivado design hRD.addCustomVivadoDesign( ... 'CustomBlockDesignTcl', 'system_top.tcl',... 'VivadoBoardPart', 'xilinx.com:kc705:part0:1.1');
%% Add interfaces % add clock interface hRD.addClockInterface( ... 'ClockConnection', 'system_0/clk_out1', ... 'ResetConnection', 'system_0/peripheral_aresetn',... 'DefaultFrequencyMHz', 125,... 'MinFrequencyMHz', 10,... 'MaxFrequencyMHz', 250,... 'ClockNumber', 1,... 'ClockModuleInstance', 'system_0/clk_wiz_0');
% add AXI4 and AXI4-Lite slave interfaces hRD.addAXI4SlaveInterface( ... 'InterfaceConnection', 'system_0/M_AXI', ... 'BaseAddress', '0x44A00000',... 'MasterAddressSpace', 'system_0/jtag_axi_0/Data',... 'InterfaceType', 'AXI4');
% Specify Embedded Coder Support Package to use for Software Interface hRD.EmbeddedCoderSupportPackage = hdlcoder.EmbeddedCoderSupportPackage.None; % [ None | Zynq | AlteraSoC ]
Соответствующий plugin_rd.m файл для MATLAB как ведущий исходный проект AXI расположен в: plugin_rd.m.
Используя вышеупомянутый исходный проект вы сгенерируете Ядро IP HDL, которое мигает светодиодами на плате KC705. Следующие инструкции в этом разделе применяются к обоим исходным проектам. Файлы, используемые на следующей демонстрации, расположены в:
matlab/toolbox/hdlcoder/hdlcoderdemos/customboards/KC705
1. Добавьте JTAG в Основные файлы исходного проекта AXI к пути MATLAB с помощью команды:
>> addpath(fullfile(matlabroot,'toolbox','hdlcoder','hdlcoderdemos','customboards','KC705'));
2. Создайте путь к инструменту Xilinx Vivado™ при помощи следующей команды:
>> hdlsetuptoolpath('ToolName', 'Xilinx Vivado', 'ToolPath', 'C:\Xilinx\Vivado\2017.4\bin\vivado.bat');
Используйте свой собственный путь к установке Xilinx Vivado™ при выполнении команды.
3. Откройте модель Simulink, которая реализует мигание LED с помощью команды:
open_system('hdlcoder_led_blinking')
4. Запустите HDL Workflow Advisor от hdlcoder_led_blinking/led_counter
подсистема путем щелчка правой кнопкой по led_counter
подсистема и HDL Code выбора> HDL Workflow Advisor.
5. Выберите один из исходных проектов от выпадающего на шаге 1.2
6. Присвойте порты регистра "Интерфейсу JTAG AXI". Они затем будут доступны при шестнадцатеричном смещении, показанном в таблице.
7. Запустите остающиеся шаги в рабочем процессе, чтобы сгенерировать поток битов и программировать целевое устройство.
Заметьте, что различающийся находящийся в Zynq исходный проект, существует не, 'Генерируют задачу' Модели Программного интерфейса. В исходном проекте "plugin_rd.m", можно отключить эту задачу с помощью следующей команды:
% Disable 'Generate Software Interface Model' task hRD.EmbeddedCoderSupportPackage = hdlcoder.EmbeddedCoderSupportPackage.None; %None
Базовый адрес для Ядра IP HDL Coder™ задан в исходном проекте plugin_rd.m со следующей командой:
% add AXI4 and AXI4-Lite slave interfaces hRD.addAXI4SlaveInterface( ... 'InterfaceConnection', 'system_0/M_AXI', ... 'BaseAddress', '0x44A00000',... 'MasterAddressSpace', 'system_0/jtag_axi_0/Data',... 'InterfaceType', 'AXI4');
Для этого проекта базовым адресом является 0x44A0_0000
. Смещения могут быть найдены в таблице IP Core Report Register Address Mapping:
Прежде чем вы откроете консоль Vivado™, позволяет взгляду на основные команды, чтобы выпустить чтения и записи. Интерфейс Vivado™ AXI является двумя процессами шага. Во-первых, необходимо создать транзакцию AXI (или серия транзакции AXI), затем вы выполняете их на заданном Ведущем устройстве AXI:
create_hw_axi_txn
run_hw_axi
Например, примите, что требуется записать шестнадцатеричное значение на 32 бита '0x12345678' в регистр Ядра IP, заданный смещением '0x100', вы сначала создадите транзакцию:
Vivado% create_hw_axi_txn axi_write_0x100 [get_hw_axis hw_axi_1] -address 44a0_0100 -data 1234_5678 -type write
Для получения дополнительной информации об этих командах можно просмотреть справку в любое время через следующие команды Tcl:
Vivado% create_hw_axi_txn -help Vivado% run_hw_axi -help
или см. документацию Vivado pg174-jtag-axi для получения дополнительной информации.
К консоли Vivado™ Tcl можно получить доступ в нижней части графический интерфейса пользователя Vivado™ или запустить непосредственно в одиноком режиме. Этот пример будет использовать одинокую консоль Tcl.
Следующие команды могут использоваться, чтобы открыть устройство JTAG и установить 'разрешение' и 'отключить' запись к DUT. Они могут быть введены непосредственно в консоль Vivado Tcl или сохраненные в файле Tcl и получили. Для простоты, копия следующие команды Tcl в файл "open_jtag.tcl":
# Open connection to the JTAG Master open_hw connect_hw_server open_hw_target refresh_hw_device [lindex [get_hw_devices] 0]
# Create some reads/writes create_hw_axi_txn wr_enable [get_hw_axis hw_axi_1] -address 44a0_0004 -data 0000_0001 -type write create_hw_axi_txn wr_disable [get_hw_axis hw_axi_1] -address 44a0_0004 -data 0000_0000 -type write
Теперь запустите консоль Vivado™ Tcl, получив файл, который вы только создали:
>> system('vivado -mode tcl -source open_jtag.tcl&')
По окончании с помощью Ведущего устройства JTAG, закрываете связь с помощью следующих команд Tcl:
# Close and disconnect from the JTAG Master close_hw_target; disconnect_hw_server;
Если пакет поддержки HDL Verifier для плат FPGA Xilinx установлен и исходный проект "MATLAB, когда Ведущий исходный проект" AXI выбран, то простой интерфейс командной строки MATLAB может быть использованием, чтобы получить доступ к ядру IP, сгенерированному HDL Coder.
Во-первых, создайте объект шаблона AXI
>> h = aximaster('Xilinx')
Затем можно выпустить простое чтение и записать команды. Например, чтобы отключить DUT
>> h.writememory('44a00004', 0)
Чтобы повторно включить DUT, используйте следующую команду записи
>> h.writememory('44a00004', 1)
Считать текущее встречное значение:
>> h.readmemory('44a00108',1)
Наконец, удалите объект, когда сделано, чтобы освободить ресурс JTAG. Если объект не будет удален, другие операции JTAG, такие как программирование FPGA перестанут работать.
>> delete(h)
Используя JTAG Ведущему устройству AXI простой способ взаимодействовать через интерфейс с регистрами ядра IP HDL Coder™ в системах, которые не имеют встроенного процессора ARM®, такого как Kintex-7. Это может использоваться в качестве первого шага, чтобы отладить одинокие ядра IP HDL Coder™, используемые до программного обеспечения кодирования руки в мягких процессорах, таких как MicroBlaze™, или как простой способ к настройкам параметров в рабочей системе.