Рабочий процесс генерации ядра IP без встроенного процессора ARM: стрелка ДЕКА МАКС 10 оценочных комплектов FPGA

Этот пример показывает, как использовать Рабочий процесс Генерации Ядра IP HDL Coder™, чтобы разработать исходный дизайн для частей Intel® без встроенного существующего процессора ARM®, но которые все еще используют сгенерированный интерфейс AXI HDL Coder™, чтобы управлять DUT. Этот пример использует MATLAB в качестве Ведущего IP AXI от HDL Verifier™ или Intel Qsys™, JTAG к IP Авэлон Мэстер-Бридж, чтобы получить доступ к HDL Coder™ сгенерировал регистры. MATLAB как Ведущее устройство AXI обеспечивает доступ к регистрам FPGA из MATLAB непосредственно. Когда вы используете Intel Qsys™ JTAG для IP Авэлон Мэстер-Бридж, можно получить доступ к использованию регистров FPGA команды Tcl в Системной Консоли Qsys. Проект FPGA реализован на Стрелке ДЕКА МАКС 10 оценочных комплектов FPGA.

Требования

  • Intel Куарт Прайм, с поддерживаемой версией, перечисленной в документации HDL Coder

  • Стрелка ДЕКА МАКС 10 оценочных комплектов FPGA

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

  • Пакет поддержки HDL Verifier™ для Советов FPGA Intel (Необязательно)

  • Пакет Поддержки HDL Coder™ для Устройств Intel SoC (Дополнительный: интегрировать ядро IP в ваш собственный исходный проект.)

Стрелка ДЕКА МАКС 10 оценочных комплектов FPGA

Исходные проекты в качестве примера

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

  1. HDL Verifier™ MATLAB как ведущее устройство AXI + ядро IP HDL Coder™

  2. Ядро Nios® II + HDL Coder™ IP

  3. Ядро PCIe® Endpoint + HDL Coder™ IP

  4. Ведущее устройство JTAG + ядро IP HDL Coder™

Существует два исходных проекта, включенные в этот пример. Первый исходный проект, "Altera JTAG Ведущему устройству AXI", использует Куарт ИП для JTAG Ведущему устройству AXI и поэтому требует, чтобы использование консоли Quartus Tcl выпустило чтения и записи. Второй исходный проект, "MATLAB как Ведущее устройство AXI", использует MathWorks IP и интерфейс командной строки MATLAB для издания чтений и записей. Обратите внимание на то, что версия MathWorks требует, чтобы лицензия HDL Verifier использовала.

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

Исходный проект, "Altera JTAG Ведущему устройству AXI", использует IP Qsys™ для JTAG Ведущему устройству AXI и поэтому требует, чтобы использование Altera® System Console выпустило чтения и записи:

plugin_rd.m для этого исходного проекта показывают ниже:

function hRD = plugin_rd()
% Reference design definition
%   Copyright 2016-2018 The MathWorks, Inc.
% Construct reference design object
hRD = hdlcoder.ReferenceDesign('SynthesisTool', 'Altera QUARTUS II');
hRD.ReferenceDesignName = 'Altera JTAG to AXI Master';
hRD.BoardName = 'Arrow DECA MAX 10 FPGA evaluation kit';
% Tool information
hRD.SupportedToolVersion = {'15.1','16.0','16.1','17.0','17.1'};
%% Add custom design files
% add custom Qsys design
hRD.addCustomQsysDesign('CustomQsysPrjFile', 'system_soc.qsys');
hRD.CustomConstraints = {'system_soc.sdc','system_setup.tcl'};
%% Add interfaces
% add clock interface
hRD.addClockInterface( ...
    'ClockConnection',     'altpll_0.c0', ...
    'ResetConnection',     'clk_0.clk_reset',...
    'DefaultFrequencyMHz', 100);
% add AXI4 slave interfaces
hRD.addAXI4SlaveInterface( ...
    'InterfaceConnection', 'master_0.master', ...
    'BaseAddress',         '0x0000_0000',...
    'InterfaceType',       'AXI4',...                                          % [ 'AXI4-Lite'| 'AXI4' ]
    'InterfaceID',         'JTAG AXI4 Interface');                             % string name in interface table
% 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

Используя вышеупомянутый исходный проект вы сгенерируете Ядро IP HDL, которое мигает светодиодами на плате DECA. Следующие инструкции применяются к обоим исходным проектам. Файлы, используемые на следующей демонстрации, расположены в:

  • matlab/toolbox/hdlcoder/hdlcoderdemos/customboards/DECA

1. Добавьте JTAG в Основные файлы исходного проекта AXI к пути MATLAB:

>> addpath(fullfile(matlabroot,'toolbox','hdlcoder','hdlcoderdemos','customboards','DECA'));

2. Создайте путь к инструменту Intel Quartus™. Замените путь к установке Quartus™ на свою локальную установку

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

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 AXI4". Таблица показывает, шестнадцатеричное число сместило вас, может использовать, чтобы получить доступ к регистру.

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

Заметьте, что различающийся Intel находящийся в SoC исходный проект, существует не, 'Генерируют задачу' Модели Программного интерфейса. В исходном проекте "plugin_rd.m", можно отключить эту задачу с помощью следующей команды:

% Disable 'Generate Software Interface Model' task
hRD.EmbeddedCoderSupportPackage = hdlcoder.EmbeddedCoderSupportPackage.None;  %None

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

Базовый адрес для Ядра IP HDL Coder™ задан в исходном проекте plugin_rd.m со следующей командой:

% add AXI4 slave interfaces
hRD.addAXI4SlaveInterface( ...
    'InterfaceConnection', 'master_0.master', ...
    'BaseAddress',         '0x0000_0000',...
    'InterfaceType',       'AXI4',...
    'InterfaceID',         'JTAG AXI4 Interface');

Для этого проекта базовым адресом является 0x0000_0000. Смещения могут быть найдены в таблице IP Core Report Register Address Mapping:

Системная консоль Qsys команды Tcl для чтения AXI и записи

Прежде чем мы откроем Системную Консоль, позволяет взгляду на основные команды, чтобы выпустить чтения и записи. Существует много разновидностей чтения Ксиса и методов записи, но мы будем использовать следующее, поскольку сгенерированные регистры Ядра IP всего HDL Coder™ - в настоящее время 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, заданный смещением '0x100' использование ранее заданного сервисного пути, сохраненного в переменной $jtag:

% master_write_32 $jtag 0x100 0x12345678

Для получения дополнительной информации об этих командах можно просмотреть справку в любое время через следующие команды Tcl:

% help master_write_32
% help master_read_32

или см. документацию Intel ug_system_console.pdf для получения дополнительной информации.

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

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

% 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

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

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

Во-первых, создайте объект шаблона AXI:

  >> h = aximaster('Altera')

Затем можно выпустить простое чтение и записать команды. Например, чтобы отключить DUT:

  >> h.writememory('4', 0)

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

  >> h.writememory('4', 1)

Считать текущее встречное значение:

  >> h.readmemory('108', 1)

Наконец, вы сделаны с помощью Ведущего устройства JTAG. Удалите объект освободить ресурс JTAG. Если объект не будет удален, другие операции JTAG, такие как программирование FPGA перестанут работать.

  >> delete(h)

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

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