exponenta event banner

Рабочий процесс поколения IP Core без встроенного процессора ARM: Xilinx Kintex-7 KC705

Этот пример показывает, как использовать IP HDL Coder™ Основной Технологический процесс Поколения, чтобы разработать справочный дизайн для частей Xilinx® без встроенного существующего процессора ARM®, но которые все еще используют произведенный интерфейс AXI HDL Coder™, чтобы управлять DUT. В этом примере MATLAB используется в качестве главного IP-адреса AXI из Verifier™ HDL для доступа к созданным Coder™ HDL регистрам DUT путем включения опции ссылочного параметра конструкции Вставить мастер JTAG MATLAB в качестве главного регистра AXI. Затем можно получить доступ к регистрам 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

  • Плата разработки Xilinx Kintex-7 KC705

  • Пакет поддержки HDL Coder™ для плат Xilinx FPGA

  • (Дополнительно) Пакет поддержки HDL Verifier™ для плат Xilinx FPGA

Плата разработки Xilinx Kintex-7 KC705

Примеры ссылочных конструкций

Существует много проектов, которые получат преимущества от использования рабочего процесса генерации HDL Coder™ IP Core без использования встроенного процессора ARM ® или пакета поддержки Embedded Coder™, но которые по-прежнему используют кодер HDL, созданный AXI4-Lite регистров. Эти проекты включают в себя:

  1. HDL Verifier™ MATLAB в качестве ядра AXI Master + HDL Coder™ IP

  2. Ядро Xilinx JTAG Master + HDL Coder™ IP

  3. MicroBlaze™ + HDL Coder™ Ядро IP

  4. PCIe Endpoint + HDL Coder™ ядро IP

В этот пример включены две ссылочные конструкции:

  • Default system в ссылочном проекте используется IP MathWorks и интерфейс командной строки MATLAB для ввода команд чтения и записи путем включения опции ссылочного параметра конструкции «Insert JTAG MATLAB as AXI Master». Для использования этого параметра необходимо установить Verifier™ HDL.

  • Xilinx JTAG to AXI Master эталонный дизайн использует Vivado IP для JTAG до AXI Master и поэтому требует использования консоли Vivado Tcl для чтения и записи.

Два эталонных проекта почти идентичны, за исключением JTAG Master IP, используемого в блок-схеме, показанной ниже:

Эталонная конструкция «Xilinx JTAG to AXI Master» использует Vivado™ IP для JTAG to AXI Master и поэтому требует использования консоли Vivado™ Tcl для выполнения операций чтения и записи:

1. HDL Verifier™ MATLAB в качестве эталонного проекта AXI Master

Укажите команду Вставить JTAG MATLAB как мастер AXI (требуется верификатор HDL), чтобы включить в задаче Задать целевое ссылочное проектирование (Set Target Reference Design) в IP Core Generation workflow-процесс. При этом MATLAB AXI Master IP автоматически добавляется в эталонную конструкцию и подключается к DUT IP AXI4 подчиненному интерфейсу. Подробные шаги по автоматической вставке MATLAB JTAG AXI Master в эталонную конструкцию рассматриваются в следующем разделе.

Выполнение рабочего процесса IP Core

Следующие инструкции в этом разделе относятся к Default System ссылочный проект, в котором используется MATLAB JTAG as AXI Master. С помощью этой эталонной конструкции можно создать IP-ядро HDL, мигающее светодиодными индикаторами на плате KC705.

1. Настройте траекторию инструмента Xilinx Vivado™ с помощью следующей команды:

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

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

2. Откройте модель Simulink, реализующую мигание светодиода с помощью команды:

open_system('hdlcoder_led_blinking')

3. Запуск помощника по рабочим процессам HDL из hdlcoder_led_blinking/led_counter путем щелчка правой кнопкой мыши по led_counter и выберите «Код HDL» > «Помощник по рабочим процессам HDL».

4. В задании Set Target > Set Target Device and Synthesis Tool в поле Target workflow выберите IP Core Generation, Для целевой платформы выберите Xilinx Kintex-7 KC705 development board и нажмите кнопку Run This Task, чтобы запустить задачу Set Target Device and Synthesis Tool

5. В задаче «Задать целевой объект» > «Задать целевой ссылочный проект» выберите «Выбрать» 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 не существует задачи «Генерировать модель интерфейса программного обеспечения». Это показано на следующем рисунке.

Определение адресов из базового отчета IP

Базовый адрес для ядра HDL Coder™ IP определяется как 0x40000000 для Default System эталонный проект, в котором используется MATLAB AXI Master IP. Это можно увидеть в созданном отчете IP Core, как показано на следующем рисунке.

Смещения можно найти в таблице сопоставления адресов регистров основных отчетов IP:

Интерфейс командной строки верификатора HDL

Если установлен пакет поддержки HDL Verifier для плат Xilinx FPGA и выбрана эталонная конструкция «MATLAB as AXI Master», то для доступа к ядру IP, сгенерированному кодером HDL, можно использовать простой интерфейс командной строки MATLAB.

1. создать главный объект AXI

h = aximaster('Xilinx')

2. Выполните простую команду write. Например, для отключения DUT

h.writememory('40000004', 0)

3. Для повторного включения DUT используйте следующую команду write

h.writememory('40000004', 1)

4. Выполните команду чтения. Например, для считывания текущего значения счетчика

h.readmemory('40000108',1)

5. Удалите объект после завершения, чтобы освободить ресурс JTAG. Если объект не будет удален, другие операции JTAG, такие как программирование FPGA, завершатся неуспешно.

delete(h)

2. Эталонная модель Xilinx JTAG

Необходимо создать пользовательскую ссылочную конструкцию для использования Xilinx JTAG AXI Master в ссылочной конструкции, а затем добавить файлы ссылочной конструкции в путь MATLAB с помощью addpath команда.

Для доступа к регистрам HDL Coder™ IP Core с помощью Xilinx JTAG AXI Master базовый адрес определяется в файле эталонного подключаемого модуля.

Команды Vivado Tcl для чтения и записи AXI

В этом примере для выполнения операций чтения и записи используется автономная консоль 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™, или в качестве простого способа настройки параметров в работающей системе.