Рабочий процесс генерации IP-ядра без встраиваемого процессора ARM: Arrow DECA MAX 10 FPGA Evaluation Kit

В этом примере показано, как использовать рабочий процесс HDL Coder™ IP Core Generation для разработки исходных проектов для деталей Intel ® без встроенного процессора ARM ®, но которые все еще используют HDL Coder™ сгенерированный интерфейс AXI для управления DUT. Этот пример использует MATLAB как AXI Master IP из HDL- Verifier™ для доступа к HDL Coder™ сгенерированным регистрам DUT путем включения опции ссылочного параметра исходного проекта Insert JTAG MATLAB AXI Master. Затем можно получить доступ к регистрам DUT из MATLAB непосредственно. Кроме того, вы можете использовать Intel Qsys (TM) JTAG в Avalon Master Bridge IP для доступа к регистрам FPGA с помощью команд Tcl в системной консоли Qsys. Для Intel JTAG AXI Master необходимо создать пользовательский исходный проект. Проект FPGA реализован на наборе оценки Arrow DECA MAX 10 FPGA.

Требования

  • Intel Quartus Prime с поддерживаемой версией, указанной в документации HDL Coder

  • Стрела для оценки Arrow DECA MAX 10 FPGA

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

  • Пакет поддержки HDL Verifier™ для системных плат Intel FPGA (опционально)

  • HDL Coder™ поддержки для устройств Intel ® SoC (необязательно: интеграция IP-ядра с собственными пользовательскими исходными проектами.)

Стрела для оценки Arrow DECA MAX 10 FPGA

Примеры исходных проектов

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

  1. HDL Verifier™ MATLAB как AXI Master + HDL Coder™ IP Core

  2. JTAG Master + HDL Coder™ IP-ядро

  3. Nios ® II + HDL Coder™ IP-ядро

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

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

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

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

Два исходных проектов почти идентичны, за исключением главного IP-адреса JTAG, показанного на блоке.

Проект-ссылка, «Altera JTAG to AXI Master», использует Qsys™ IP для JTAG к AXI Master и, следовательно, требует использования системной консоли Intel ® для выдачи показаний и записи:

1. HDL Verifier™ MATLAB как AXI Master исходного проекта

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

Выполните рабочий процесс IP-ядра

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

1. Настройка пути инструмента Intel Quartus™. Замените Quartus™ путь установки локальной установкой

hdlsetuptoolpath('ToolName', 'Altera QUARTUS II', 'ToolPath', 'C:\intelFPGA\18.1\quartus\bin64\quartus.exe');

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, Для Целевой платформы выберите Arrow DECA MAX 10 FPGA evaluation kit и нажмите 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 для Blink_frequency, Blink_direction и Read_back. Выберите LEDs General Purpose [0:7] для светодиодов.

7. Запустите оставшиеся шаги в рабочем процессе, чтобы сгенерировать битовый поток и запрограммировать целевое устройство.

Заметьте, что в отличие от исходного проекта на базе Intel SoC, задача «Генерация модели интерфейса программного обеспечения» отсутствует. Это показано на следующем рисунке.

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

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

Смещения можно найти в таблице IP Core Report Register Address Mapping:

HDL Verifier

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

1. Создайте основной объект AXI

h = aximaster('Altera')

2. Выполните простые команды записи. Например, чтобы отключить DUT

h.writememory('4', 0)

3. Чтобы повторно включить DUT, используйте следующую команду write

h.writememory('4', 1)

4. Чтобы считать текущее значение счетчика

h.readmemory('108', 1)

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

delete(h)

Программа Intel JTAG AXI Master исходного проекта

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

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

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

Прежде чем мы откроем System Console, давайте посмотрим на основные команды, чтобы выдать чтения и записи. Существует ряд вкусов методов чтения и записи Qsys, но мы будем использовать следующее, так как все сгенерированные HDL Coder™ регистры IP Core в настоящее время составляют 32 бита:

% master_write_32 <service-path> <start-address> <list-of-32-bit-values>
% master_read_32  <service-path> <start-address> <size-in-multiples-of-32-bits>

Для примера предположим, что мы хотели бы записать 32 биты шестнадцатеричное значение '0x12345678' в регистр IP Core, заданный смещением '0x100', используя ранее определенный служебный путь, сохраненный в переменной $jtag:

% master_write_32 $jtag 0x100 0x12345678

Прежде чем вы сможете сгенерировать чтение и запись, необходимо сначала запустить системную консоль и открыть соединение с мастером JTAG, который будет выдавать регистры чтения и записи. Еще раз см. системную схему ниже:

Чтобы открыть соединение с JTAG Master, сначала установите переменную, которая хранит служебный путь (в этом случае существует только один мастер):

% set jtag [lindex [get_service_paths master] 0]

Затем используйте эту переменную, чтобы открыть мастер JTAG в главном режиме.

% open_service master $jtag

Теперь запустите Altera ® System Console и введите команды, чтобы открыть мастер jtag:

>> system('C:\intelFPGA\17.1\quartus\sopc_builder\bin\system-console&')

По завершении работы с мастером JTAG убедитесь, что соединение закрыто с помощью следующей команды Tcl:

  close_service master $jtag

Сводные данные

Использование JTAG к AXI Master является простым способом взаимодействия с HDL Coder™ IP-ядерными регистрами в системах, которые не имеют встроенного процессора ARM ®, например MAX 10. Это может использоваться в качестве первого шага для отладки автономных HDL Coder™ IP-ядер, используемых перед программным обеспечением ручного кодирования для мягких процессоров, таких как Nios ® II, или как простой способ настройки параметров в работающей системе.