Определите пользовательскую плату и исходный проект для рабочего процесса Intel SoC

В этом примере показано, как определить и зарегистрировать пользовательскую плату и исходный проект в рабочем процессе HDL Coder™ Intel SoC.

Введение

В этом примере вы сможете зарегистрировать комплект для разработки Terasic DE1-SoC и пользовательский исходный проект в HDL Workflow Advisor для рабочего процесса Intel SoC.

Этот пример использует Terasic DE-1 SoC, но таким же образом можно определить и зарегистрировать пользовательскую плату или пользовательский исходный проект для других устройств Intel SoC.

Требования

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

  2. Решения Intel для встраиваемых систем Проекта Набора

  3. Terasic DE1-SoC Development Kit

  4. HDL Coder поддержки устройств Intel ® SoC

  5. Пакет поддержки Embedded Coder для устройств Intel ® SoC

Настройка оборудования и инструментов Intel SoC

1. Осмыслите функции, доступные в Terasic DE1-SoC, прочитав справочное руководство по системной плате.

2. Настройте Terasic DE1-SoC как показано на следующем рисунке:

3. Убедитесь, что на компьютере правильно установлены драйверы USB COM-портов.

4. Подключите к компьютеру порт UART и USB blaster на DE1-SoC Terasic.

5. Подключите Terasic DE1-SoC к компьютеру с помощью кабеля Ethernet. По умолчанию Terasic DE1-SoC IP-адрес является 192.168.1.101.

6. Загрузите файл изображения Terasic DE1-SoC Linux, извлеките архив GZ, а затем запишите файл изображения необработанного диска на карту microSD. Вставьте карту microSD в разъем J11.

7. Настройте путь инструмента Intel Quartus с помощью следующей команды:

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

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

8. Настройте аппаратное соединение Terasic DE1-SoC с помощью следующей команды:

h = alterasoc('192.168.1.101','root','cyclonevsoc');

Исходный проект с использованием Intel Quartus Prime

Исходный проект захватывает полную структуру однокристального проекта, определяя различные компоненты и их взаимосвязи. Рабочий процесс HDL Coder SoC генерирует IP-ядро, которое интегрируется с исходным проектом, и затем используется для программирования платы SoC. Следующий рисунок описывает отношения между исходным проектом, IP-ядром HDL и платой СнК

В этом разделе описываются основные шаги, необходимые для создания и экспорта простого исходного проекта с помощью окружения Intel Quartus и QSys. Для получения дополнительной информации о инструменте интегрирования систем QSys см. документацию Altera/Intel.

1. Создайте пустой проект Quartus с помощью мастера нового проекта с номером детали устройства, как показано на следующем рисунке

2. Инициализируйте Qsys в Quartus путем навигации по инструменты -- > Qsys, как показано на следующем рисунке

3. Выберите Cyclone-V Hard Processor System (HPS) и Altera PLL IP's из IP-каталога в созданный проект Qsys. Включите часы HPS-пользователя FPGA 0 (h2f_user0_clock) и соедините это с refclk Altera PLL как показано на следующем рисунке

выполните другие настройки, необходимые для жесткой процессорной системы, такие как набор периферийных контактов и настройки режима.

4. хранить h2f_axi_master port connection open in порядка для подключения к DUT IP в процессе IP-интеграции рабочего процесса. Завершите остальную часть соединений между Altera PLL IP и HPS IP, как показано на следующем рисунке

5. Сохраните файл Qsys. Этот файл будет использоваться при создании плагина для исходного проекта.

Зарегистрируйте DE1-SoC плату в HDL Workflow Advisor

В этом разделе описываются шаги, необходимые для регистрации набора разработки Terasic DE1-SoC в HDL Workflow Advisor.

1. Создайте файл регистрации платы с именем hdlcoder_board_customization.m и добавьте его к пути MATLAB.

Файл регистрации платы содержит список плагинов платы. Плагин платы является папкой пакета MATLAB, содержащей файл определения платы и все исходные проекты плагинов, сопоставленные с платой.

Следующий код описывает содержимое файла регистрации платы, который содержит плагин платы DE1SoCRegistration чтобы зарегистрировать набор разработки Terasic DE1-SoC в HDL Workflow Advisor.

function r = hdlcoder_board_customization
% Board plugin registration file
% 1. Any registration file with this name on MATLAB path will be picked up
% 2. Registration file returns a cell array pointing to the location of
%    the board plugin
% 3. Board plugin must be a package folder accessible from MATLAB path,
%    and contains a board definition file
r = { ...
    'DE1SoCRegistration.plugin_board', ...
    };
end

2. Создайте файл определения платы.

Файл определения платы содержит информацию о плате СнК.

Следующий код описывает содержимое файла определения платы DE1-SoC plugin_board.m который находится внутри плагина платы DE1SoCRegistration.

Информация о местоположениях контактов ввода-вывода ПЛИС ('FPGAPin') и стандарты ('IOSTANDARD') получено из Pin Planner Intel Quartus-II.

Свойство BoardName определяет имя DE-1 платы СнК следующим образом Terasic DE1-SoC development Kit в HDL Workflow Advisor.

function hB = plugin_board()
% Board definition
% Construct board object
hB = hdlcoder.Board;
hB.BoardName    = 'Terasic DE1-SoC development Kit';
% FPGA device information
hB.FPGAVendor   = 'Altera';
hB.FPGAFamily   = 'Cyclone V';
hB.FPGADevice   = '5CSEMA5F31C6';
hB.FPGAPackage  = '';
hB.FPGASpeed    = '';
% Tool information
hB.SupportedTool = {'Altera QUARTUS II'};
% FPGA JTAG chain position
hB.JTAGChainPosition = 2;
%% Add interfaces
% Standard "External Port" interface
hB.addExternalPortInterface( ...
    'IOPadConstraint', {'IO_STANDARD "2.5V"'});
% Custom board external I/O interface
hB.addExternalIOInterface( ...
  'InterfaceID',    'LEDs General Purpose', ...
  'InterfaceType',  'OUT', ...
  'PortName',       'GPLED', ...
  'PortWidth',      10, ...
  'FPGAPin',        {'V16', 'W16', 'V17', 'V18', 'W17', 'W19', 'Y19', 'W20', 'W21', 'Y21'}, ...
  'IOPadConstraint', {'IO_STANDARD "3.3-V LVTTL"'});
hB.addExternalIOInterface( ...
   'InterfaceID',    'Switches', ...
   'InterfaceType',  'IN', ...
   'PortName',       'SW', ...
   'PortWidth',      10, ...
   'FPGAPin',        {'AB12', 'AC12', 'AF9', 'AF10','AD11', 'AD12', 'AE11', 'AC9', 'AD10', 'AE12'}, ...
   'IOPadConstraint', {'IO_STANDARD "3.3-V LVTTL"'});
hB.addExternalIOInterface( ...
   'InterfaceID',    'Push Buttons', ...
   'InterfaceType',  'IN', ...
   'PortName',       'KEY', ...
   'PortWidth',      4, ...
   'FPGAPin',        {'AA14', 'AA15', 'W15', 'Y16'}, ...
   'IOPadConstraint', {'IO_STANDARD "3.3-V LVTTL"'});

Зарегистрируйте пользовательский исходный проект в HDL Workflow Advisor

В этом разделе описываются шаги, необходимые для регистрации пользовательского исходного проекта в HDL Workflow Advisor.

1. Создайте исходный проект регистрацию файла с именем hdlcoder_ref_design_customization.m содержит список исходного проекта плагинов, сопоставленных с платой SoC.

Плагин исходного проекта является папкой пакета MATLAB, содержащей файл определения исходного проекта и все файлы, сопоставленные с дизайнерским проектом SoC. Файл регистрации исходного проекта должен также содержать имя связанной платы.

Следующий код описывает содержимое файла регистрации DE1-SoC исходного проекта, содержащего плагин исходного проекта DE1SoCRegistration.qsys_base_170 связана с платой Terasic DE1-SoC development Kit.

function [rd, boardName] = hdlcoder_ref_design_customization
% Reference design plugin registration file
% 1. The registration file with this name inside of a board plugin folder
%    will be picked up
% 2. Any registration file with this name on MATLAB path will also be picked up
% 3. The registration file returns a cell array pointing to the location of
%    the reference design plugins
% 4. The registration file also returns its associated board name
% 5. Reference design plugin must be a package folder accessible from
%    MATLAB path, and contains a reference design definition file
rd = {'DE1SoCRegistration.qsys_base_170.plugin_rd', ...
     };
boardName = 'Terasic DE1-SoC development Kit';
end

2. Создайте файл определения исходного проекта.

Файл определения исходного проекта задает интерфейсы между пользовательским исходным проектом и HDL-ядром IP, которые будут сгенерированы рабочим процессом HDL Coder SoC.

Следующий код описывает содержимое файла определения DE1-SoC исходного проекта plugin_rd.m связана с платой Terasic DE1-SoC development Kit который находится внутри плагина исходного проекта DE1SoCRegistration.qsys_base_170. Свойство ReferenceDesignName определяет имя исходного проекта следующим образом Demo system в HDL Workflow Advisor.

function hRD = plugin_rd()
% Reference design definition
% Construct reference design object
hRD = hdlcoder.ReferenceDesign('SynthesisTool', 'Altera QUARTUS II');
hRD.ReferenceDesignName = 'Demo system)';
hRD.BoardName = 'Terasic DE1-SoC development Kit';
% Tool information
hRD.SupportedToolVersion = {'17.0','17.1'};
%% Add custom design files
% add custom Qsys design
hRD.addCustomQsysDesign( ...
    'CustomQsysPrjFile', 'system_soc.qsys');
%% Add interfaces
% add clock interface
hRD.addClockInterface( ...
    'ClockConnection',     'pll_0.outclk0', ...
    'ResetConnection',     'hps_0.h2f_reset',...
    'DefaultFrequencyMHz', 50,...
    'MinFrequencyMHz',     5,...
    'MaxFrequencyMHz',     500,...
    'ClockModuleInstance', 'pll_0',...
    'ClockNumber',         0);
% add AXI4 and AXI4-Lite slave interfaces
hRD.addAXI4SlaveInterface( ...
    'InterfaceConnection', 'hps_0.h2f_axi_master', ...
    'BaseAddress',         '0x0000');

Папка DE1-SoC исходного проекта плагина DE1SoCRegistration.qsys_base_170 должен содержать файл Qsys system_soc.qsys сохранен ранее из проекта Intel Quartus Prime. Файл DE1-SoC определения исходного проекта plugin_rd.m определяет файл проекта разработки SoC с помощью следующего оператора:

hRD.addCustomQsysDesign('CustomQsysPrjFile', 'system_soc.qsys');

В дополнение к файлам проекта разработки SoC, plugin_rd.m также определяет интерфейсные соединения между пользовательским исходным проектом и HDL-ядром IP, показанным на следующем рисунке, посредством операторов:

hRD.addClockInterface( ...
    'ClockConnection',     'pll_0.outclk0', ...
    'ResetConnection',     'hps_0.h2f_reset',...
    'DefaultFrequencyMHz', 50,...
    'MinFrequencyMHz',     5,...
    'MaxFrequencyMHz',     500,...
    'ClockModuleInstance', 'pll_0',...
    'ClockNumber',         0);
hRD.addAXI4SlaveInterface( ...
    'InterfaceConnection', 'hps_0.h2f_axi_master', ...
    'BaseAddress',         '0x0000');

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

В предыдущих разделах обсуждались шаги, связанные с определением и регистрацией Terasic DE1-SoC и пользовательского исходного проекта в HDL Workflow Advisor для рабочего процесса SoC. В этом разделе мы используем пользовательскую плату и систему регистрации исходного проекта, чтобы сгенерировать HDL-ядро IP, которое мигает светодиодами на Terasic DE1-SoC. Файлы, используемые в следующей демонстрации, расположены в,

  • matlab/toolbox/hdlcoder/hdlcoderdemos/customboards/DE1SOC

1. Добавьте файл регистрации Terasic DE1-SoC к пути MATLAB с помощью команды,

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

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

open_system('hdlcoder_led_blinking');

Сгенерируйте ядро IP HDL с помощью HDL Workflow Advisor

1. Использование рабочего процесса генерации IP-ядра в HDL Workflow Advisor позволяет автоматически сгенерировать резкий и переиспользуемый модуль IP-ядра из модели Simulink. HDL Coder генерирует HDL-код из блоков Simulink, а также генерирует HDL-код для логики интерфейса AXI, соединяющий IP-ядро со встраиваемым процессором. HDL Coder упаковывает все сгенерированные файлы в IP-папку ядра. Затем можно интегрировать сгенерированное IP-ядро с большим проектом встраиваемых систем FPGA в среде Intel Qsys.

2. Запустите рабочий процесс генерации ядра IP.

2.1. Откройте HDL Workflow Advisor из hdlcoder_led_blinking/led_counter подсистема щелчком правой кнопкой мыши по led_counter и выбор HDL-кода > HDL Workflow Advisor.

2.2. В задаче Set Target > Set Target Device and Synthesis Tool для рабочего процесса Target выберите IP Core Generation.

2.3. Для Целевой платформы выберите Terasic DE1-SoC Development Kit.

2.4. Нажмите Run This Task, чтобы запустить задачу Set Target Device and Synthesis Tool.

3. В задаче 1.2 выбирается цель исходного проекта система по умолчанию. щелкните Запуск этой задачи.

4. Сконфигурируйте целевой интерфейс.

Сопоставьте каждый порт в DUT с одним из базовых IP-интерфейсов. В этом примере входные порты Blink_frequency и Blink_direction сопоставлены с AXI4. Выходной порт светодиода сопоставлен с внешним интерфейсом LED General Purpose [0:9], который соединяется с оборудованием LED на наборе Terasic DE1-SoC Development Kit.

5. Следуйте шагам 3 и 4 из Сгенерируйте ядро IP HDL с помощью раздела HDL Workflow Advisor в примере Начало работы с устройствами Intel для создания ядра IP и просмотра отчета о генерации ядра IP.

6. Следуйте шагу 1 «Интеграция ядра IP с разделом Environment Intel Qsys» примера «Начало работы с устройствами Intel SoC», чтобы интегрировать ядро IP в исходный проект и создать проект Qsys.

7. Теперь рассмотрим проект Intel Qsys, созданный в соответствии с рабочим процессом SoC после выполнения задачи Create Project в разделе Встраиваемая Система Integration. Следующий рисунок показывает проект SoC, где мы выделили HDL IP Core. Поучительно сравнивать этот проект с предыдущим проектом, используемым в пользовательском плагине исходного проекта, для более глубокого понимания связи между пользовательским исходным проектом и HDL IP Core.

8. Следуйте шагам 2, 3 и 4 Интеграция IP-ядра с разделом Environment Intel Qsys из примера Начало работы с устройствами Intel SoC, чтобы сгенерировать модель программного интерфейса, сгенерировать поток битов FPGA и целевое устройство программы соответственно.

9. Светодиоды на Terasic DE1-SoC начнут мигать после загрузки битового потока. В сложение вы сможете управлять частотой и направлением мигания светодиода, выполняя модель интерфейса программного обеспечения. Смотрите раздел «Генерация модели программного интерфейса» примера «Начало работы с устройствами Intel ® SoC», чтобы контролировать частоту и направление мигания светодиодов из модели сгенерированного программного обеспечения интерфейса.