То В этом примере показано, как использовать Рабочий процесс Генерации Ядра IP HDL Coder™, чтобы разработать исходный дизайн для частей Intel® без встроенного существующего процессора ARM®, но которые все еще используют HDL Coder™, сгенерировало интерфейс AXI, чтобы управлять DUT. Этот пример использует MATLAB, когда Ведущий IP AXI от HDL Verifier™, чтобы получить доступ к сгенерированным регистрам DUT HDL Coder™ путем включения опции параметра исходного проекта Вводит MATLAB JTAG как Ведущее устройство AXI. Можно затем получить доступ к регистрам DUT из MATLAB непосредственно. В качестве альтернативы можно использовать Intel Qsys (TM) JTAG для IP Авэлон Мэстер-Бридж, чтобы получить доступ к использованию регистров FPGA команды Tcl в Системной Консоли Qsys. Для Intel Ведущее устройство JTAG AXI необходимо создать пользовательский исходный проект. Проект FPGA реализован на Стреле ДЕКА МАКС 10 оценочных комплектов FPGA.
Intel Куарт Прайм, с поддерживаемой версией, перечисленной в документации HDL Coder
Стрела ДЕКА МАКС 10 оценочных комплектов FPGA
Пакет поддержки HDL Coder™ для Советов FPGA Intel
Пакет поддержки HDL Verifier™ для Советов FPGA Intel (Необязательно)
Пакет Поддержки HDL Coder™ для Устройств Intel SoC (Дополнительный: интегрировать ядро IP в ваш собственный исходный проект.)
Существует много проектов, которые извлекут выгоду из использования Рабочего процесса Генерации Ядра IP HDL Coder™, не используя или встроенный процессор ARM® или Пакет Поддержки Embedded Coder™, но которые все еще усиливают сгенерированные регистры AXI4 HDL Coder™. Эти проекты включают:
HDL Verifier™ MATLAB как ведущее устройство AXI + ядро IP HDL Coder™
Ведущее устройство JTAG + ядро IP HDL Coder™
Ядро Nios® II + HDL Coder™ IP
Ядро PCIe® Endpoint + HDL Coder™ IP
Существует два исходных проекта, включенные в этот пример:
Default system
исходный проект использует MathWorks IP и интерфейс командной строки MATLAB для издания чтения, и команды записи путем включения опции параметра исходного проекта "Вводят MATLAB JTAG как Ведущее устройство AXI". Обратите внимание на то, что, чтобы использовать этот параметр, необходимо было установить HDL Verifier™.
Intel JTAG to AXI Master
исходный проект использует Куарта ИПА для JTAG Ведущему устройству AXI и поэтому требует, чтобы использование консоли Quartus Tcl выпустило чтения и записи.
Эти два исходных проекта почти идентичны, за исключением Основного IP JTAG, показанного в блок-схеме.
Исходный проект, "Altera JTAG Ведущему устройству AXI", использует IP Qsys™ для JTAG Ведущему устройству AXI и поэтому требует, чтобы использование Intel® System Console выпустило чтения и записи:
Задайте Вводят MATLAB JTAG как Ведущее устройство AXI (Необходимый HDL Verifier) к на в Целевой задаче Исходного проекта Набора IP Core Generation
рабочий процесс. Это добавляет MATLAB Ведущий IP AXI автоматически в исходный проект и подключения к IP DUT с помощью ведомого интерфейса AXI4. Подробные шаги к автоматической вставке Ведущее устройство JTAG AXI MATLAB в исходном проекте обсуждены в следующем разделе.
Следующие инструкции в этом разделе применяются к Default System
исходный проект, который использует MATLAB JTAG as AXI Master
. Используя этот исходный проект, можно сгенерировать Ядро IP HDL, которое мигает светодиодами на плате 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 Code выбора> HDL Workflow Advisor.
4. В Цели Набора> Целевое устройство Набора и задача Инструмента Синтеза, для Целевого рабочего процесса, выбирают IP Core Generation
, Для Целевой платформы выберите Arrow DECA MAX 10 FPGA evaluation kit
и Нажмите Run This Task, чтобы запустить задачу Инструмента Целевого устройства и Синтеза Набора
5. В Цели Набора> Целевая задача Исходного проекта Набора, Выберите Default System
как исходный проект и набор Insert JTAG MATLAB as AXI Master
выпадающий выбор к on
который присутствует в опциях параметра исходного проекта.
6. В Цели Набора> Поставившая Целевая Интерфейсная задача, выберите AXI4
для Blink_frequency, Blink_direction и Read_back. Выберите LEDs General Purpose [0:7]
для LED.
7. Запустите остающиеся шаги в рабочем процессе, чтобы сгенерировать поток битов и программировать целевое устройство.
Заметьте, что различающийся Intel находящийся в SoC исходный проект, существует не, 'Генерируют задачу' Модели Программного интерфейса. Это показывают в следующем рисунке.
Базовый адрес для Ядра IP HDL Coder™ задан как 0x00000000
для Default System
исходный проект, который использует MATLAB Ведущий IP AXI. Вы видите это в сгенерированном отчете Ядра IP как показано в следующем рисунке.
Смещения могут быть найдены в таблице IP Core Report Register Address Mapping:
Если пакет поддержки HDL Verifier для плат FPGA Intel установлен и исходный проект "MATLAB, когда Ведущий исходный проект" AXI выбран, то простой интерфейс командной строки MATLAB может быть использованием, чтобы получить доступ к ядру IP, сгенерированному HDL Coder.
1. Создайте объект шаблона AXI
h = aximaster('Altera')
2. Выпустите простую запись команды. Например, чтобы отключить DUT
h.writememory('4', 0)
3. Чтобы повторно включить DUT, используйте следующую команду записи
h.writememory('4', 1)
4. Считать текущее встречное значение
h.readmemory('108', 1)
5. Удалите объект освободить ресурс JTAG. Если объект не будет удален, другие операции JTAG, такие как программирование FPGA перестанут работать.
delete(h)
Необходимо создать пользовательский исходный проект, чтобы использовать Intel Ведущее устройство JTAG AXI в исходном проекте и затем добавить файлы исходного проекта в путь MATLAB с помощью addpath
команда.
Чтобы получить доступ к использованию регистров Ядра IP HDL Coder™ Intel Ведущее устройство JTAG 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
Прежде чем можно будет сгенерировать чтения и записи, необходимо сначала запустить Системную Консоль и открыть связь с Ведущим устройством 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
Используя JTAG Ведущему устройству AXI простой способ взаимодействовать через интерфейс с регистрами ядра IP HDL Coder™ в системах, которые не имеют встроенного процессора ARM®, такого как MAX 10. Это может использоваться в качестве первого шага, чтобы отладить автономные ядра IP HDL Coder™, используемые до кодирующего руку программного обеспечения для мягких процессоров, таких как Nios® II, или как простой способ к настройкам параметров в рабочей системе.