В этом примере показано, как определить и зарегистрировать пользовательскую плату и исходный проект в рабочем процессе HDL Coder™ Intel SoC.
В этом примере вы сможете зарегистрировать комплект для разработки Terasic DE1-SoC и пользовательский исходный проект в HDL Workflow Advisor для рабочего процесса Intel SoC.
Этот пример использует Terasic DE-1 SoC, но таким же образом можно определить и зарегистрировать пользовательскую плату или пользовательский исходный проект для других устройств Intel SoC.
Intel Quartus Prime с поддерживаемой версией, указанной в документации HDL Coder
Решения Intel для встраиваемых систем Проекта Набора
Terasic DE1-SoC Development Kit
HDL Coder поддержки устройств Intel ® SoC
Пакет поддержки Embedded Coder для устройств 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');
Исходный проект захватывает полную структуру однокристального проекта, определяя различные компоненты и их взаимосвязи. Рабочий процесс 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. Этот файл будет использоваться при создании плагина для исходного проекта.
В этом разделе описываются шаги, необходимые для регистрации набора разработки 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.
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');
В предыдущих разделах обсуждались шаги, связанные с определением и регистрацией 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');
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», чтобы контролировать частоту и направление мигания светодиодов из модели сгенерированного программного обеспечения интерфейса.