В этом примере показано, как использовать рабочий процесс HDL Coder™ IP Core Generation для разработки исходных проектов для деталей Xilinx ® без встроенного процессора ARM ®, но которые все еще используют HDL Coder™ сгенерированный интерфейс AXI для управления DUT. Этот пример использует MATLAB как AXI Master IP из HDL- Verifier™ для доступа к HDL Coder™ сгенерированным регистрам DUT путем включения опции ссылочного параметра исходного проекта Insert JTAG MATLAB AXI Master. Затем можно получить доступ к регистрам DUT из MATLAB непосредственно. Также можно использовать Xilinx JTAG AXI Master для доступа к регистрам DUT с помощью Vivado Tcl Console путем записи команд Tcl. Для Xilinx JTAG AXI Master необходимо создать пользовательский исходный проект. Проект FPGA реализован на плате Xilinx Kintex-7 KC705.
Xilinx Vivado Design Suite с поддерживаемой версией, перечисленной в документации HDL Coder
Плата разработки Kintex-7 KC705 Xilinx
Пакет поддержки HDL Coder™ для плат Xilinx FPGA
(Необязательно) Пакет поддержки HDL Verifier™ для плат Xilinx FPGA
Существует множество проектов, которые будут полезны при использовании HDL Coder™ IP Core Generation без использования встроенного процессора ARM ® или пакета поддержки Embedded Coder™, но которые все еще используют HDL Coder, сгенерированный AXI4-Lite регистрах. Эти проекты включают:
HDL Verifier™ MATLAB как AXI Master + HDL Coder™ IP Core
Xilinx JTAG Master + HDL Coder™ IP-ядро
MicroBlaze™ + HDL Coder™ IP-ядро
PCIe Endpoint + HDL Coder™ IP-ядро
В этот пример включены два исходных проектов:
The Default system
Исходный проект использует MathWorks IP и интерфейс командной строки MATLAB для выдачи команд чтения и записи путем включения опции параметра исходного проекта «Insert JTAG MATLAB as AXI Master». Обратите внимание, что для использования этого параметра необходимо установить HDL Verifier™.
The Xilinx JTAG to AXI Master
Исходный проект использует Vivado IP для JTAG в AXI Master и поэтому требует использовать консоль Vivado Tcl для выдачи чтений и записей.
Два исходных проектов почти идентичны, за исключением главного IP-адреса JTAG, используемого на блоке, показанной ниже:
Этот исходный проект, «Xilinx JTAG to AXI Master», использует Vivado™ IP для JTAG к AXI Master и поэтому требует использования консоли Vivado™ Tcl для выдачи показаний и записи:
Задайте значение Вставить JTAG MATLAB как AXI Master (HDL Verifier Required) в задаче Задать конечную ссылку (Set Target Reference Design) IP Core Generation
рабочий процесс. Это автоматически добавляет MATLAB AXI Master IP в исходный проект и соединяется с DUT IP AXI4 помощью ведомого интерфейса. Подробные шаги по автоматической вставке MATLAB JTAG AXI Master в исходный проект рассматриваются в следующем разделе.
Следующие инструкции в этом разделе применяются к Default System
исходный проект, который использует MATLAB JTAG as AXI Master
. Используя этот исходный проект, можно сгенерировать HDL IP Core, который мигает светодиодами на KC705 плате.
1. Настройте путь инструмента Vivado™ Xilinx с помощью следующей команды:
hdlsetuptoolpath('ToolName', 'Xilinx Vivado', 'ToolPath', 'C:\Xilinx\Vivado\2019.1\bin\vivado.bat');
Используйте собственный путь установки Vivado™ Xilinx при выполнении команды.
2. Откройте модель Simulink, которая реализует LED-мигание с помощью команды:
open_system('hdlcoder_led_blinking')
3. Запустите HDL Workflow Advisor из hdlcoder_led_blinking/led_counter
подсистема щелчком правой кнопкой мыши по led_counter
и выберите HDL-код > HDL Workflow Advisor.
4. В задаче Set Target > Set Target Device and Synthesis Tool для рабочего процесса Target выберите IP Core Generation
, Для Целевой платформы выберите Xilinx Kintex-7 KC705 development board
и нажмите Run This Task, чтобы запустить задачу Set Target Device and Synthesis Tool
5. В задаче Set Target > Set Target Reference Design выберите Default System
в качестве исходного проекта и набора Insert JTAG MATLAB as AXI Master
выпадающий список с выбором on
который присутствует в опциях исходного проекта.
6. В задаче Set Target > Set Target Interface выберите AXI4-Lite
для Blink_frequency, Blink_direction и Read_back. Выберите LEDs General Purpose [0:7]
для светодиодов.
7. Запустите оставшиеся шаги в рабочем процессе, чтобы сгенерировать битовый поток и запрограммировать целевое устройство.
Заметьте, что в отличие от исходного проекта на основе Zynq, задача Generate Software Interface Model отсутствует. Это показано на следующем рисунке.
Базовый адрес для HDL Coder™ IP-ядра определяется как 0x40000000
для Default System
исходный проект, который использует MATLAB AXI Master IP. Это можно увидеть в сгенерированном отчете IP Core, как показано на следующем рисунке.
Смещения можно найти в таблице IP Core Report Register Address Mapping:
Если для плат Xilinx FPGA установлен пакет поддержки HDL Verifier и выбран исходный проект исходного проекта «MATLAB as AXI Master», то для доступа к IP-ядру, сгенерированному HDL Coder, может использоваться простой интерфейс командной строки MATLAB.
1. создайте мастер- объект AXI
h = aximaster('Xilinx')
2. Выполните простую команду write. Например, чтобы отключить DUT
h.writememory('40000004', 0)
3. Чтобы повторно включить DUT, используйте следующую команду write
h.writememory('40000004', 1)
4. Выполните команду read. Для примера, чтобы считать текущее значение счетчика
h.readmemory('40000108',1)
5. Удалите объект, когда это сделано, чтобы освободить ресурс JTAG. Если объект не удален, другие операции JTAG, такие как программирование FPGA, будут неудачными.
delete(h)
Необходимо создать пользовательский исходный проект, чтобы использовать Xilinx JTAG AXI Master в исходном проекте, а затем добавить файлы исходного проекта в путь MATLAB с помощью addpath
команда.
Для доступа к HDL Coder™ IP Core регистрам с помощью Xilinx JTAG AXI Master, базовый адрес определяется в исходный проект файле плагина.
Этот пример будет использовать автономную консоль Vivado Tcl для основных команд, чтобы выдавать чтения и записи. Следующие команды могут использоваться, чтобы открыть устройство JTAG и настроить запись 'enable' и 'disable' в 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 Master закройте соединение с помощью следующих команд Tcl:
# Close and disconnect from the JTAG Master close_hw_target; disconnect_hw_server;
Использование JTAG к AXI Master является простым способом взаимодействия с HDL Coder™ IP-ядерными регистрами в системах, которые не имеют встроенного процессора ARM ®, таких как Kintex-7. Это может использоваться в качестве первого шага для отладки отдельных HDL Coder™ IP-ядер, используемых перед программным обеспечением ручного кодирования для мягких процессоров, таких как MicroBlaze™, или как простой способ настройки параметров в работающей системе.