Этот пример показывает, как задать и указать пользовательскую плату и исходный проект в рабочем процессе Intel HDL Coder™ SoC. Используя этот пример, вы сможете указать комплект разработчика Terasic DE1-SoC и пользовательский исходный проект в HDL Workflow Advisor для рабочего процесса Intel SoC.
Этот пример использует Terasic DE-1 SoC, но таким же образом, можно задать и указать пользовательскую плату или пользовательский исходный проект для других устройств Intel SoC.
Intel Куарт Прайм, с поддерживаемой версией, перечисленной в документации HDL Coder
Intel SoC встроенный комплект проекта
Комплект разработчика Terasic DE1-SoC
Пакет поддержки HDL Coder для устройств Intel SoC
Пакет поддержки Embedded Coder для устройств Intel SoC
1. Поймите функции, доступные на Terasic DE1-SoC путем чтения справочника платы.
2. Создайте Terasic DE1-SoC как показано в следующей фигуре:
3. Гарантируйте, что вы правильно установили драйверы устройств COM-порта USB на своем компьютере.
4. Соедините UART и порт бластера USB на Terasic DE1-SoC к вашему компьютеру.
5. Соедините Terasic DE1-SoC со своим использующим компьютеры кабель Ethernet. IP-адресом Terasic DE1-SoC по умолчанию является 192.168.1.101
.
6. Загрузите файл изображения Linux Terasic DE1-SoC, извлеките архив GZ, и затем запишите файл изображения неструктурированного диска в карту памяти microSD. Вставьте карту памяти microSD в коннектор J11
.
7. Настройте инструмент path Куарта Intel при помощи следующей команды:
hdlsetuptoolpath('ToolName', 'Altera Quartus II', 'ToolPath', 'C:\intelFPGA\17.1\quartus\bin64\quartus.exe');
Используйте свой собственный Intel путь к установке Куарта при выполнении команды.
8. Настройте аппаратную связь Terasic DE1-SoC при помощи следующей команды:
h = alterasoc('192.168.1.101','root','cyclonevsoc');
Исходный проект получает полную структуру проекта SoC, задавая различные компоненты и их соединения. Рабочий процесс SoC HDL Coder генерирует ядро IP, которое объединяется с исходным проектом и затем используется, чтобы программировать плату SoC. Следующая фигура описывает отношение между исходным проектом, ядром IP HDL и платой SoC
В этом разделе мы обрисовываем в общих чертах основные шаги, необходимые, чтобы создать и экспортировать простой исходный проект с помощью Intel Куарт и среда QSys. Для получения дополнительной информации об инструменте системной интеграции QSys, обратитесь к документации Altera/Intel.
1. Создайте пустой проект Куарта с помощью мастера Нового проекта с номером детали устройства как показано в следующей фигуре
2. Инициализируйте Ксаов в Куарте путем навигации по Инструментам-> Ксаы как показано в следующей фигуре
3. Выберите Cyclone-V Hard Processor System(HPS) & каталог Altera PLL IP's from IP к созданному проекту Qsys. Включите пользователю HPS к FPGA 0 часов (h2f_user0_clock
) и подключение это к refclk
PLL Altera как показано в следующей фигуре
завершите другие настройки, требуемые для Твердой Системы Процессора, такие как Периферийный набор контакта и настройки режима.
4. сохраните подключение порта h2f_axi_master
открытым в порядке соединиться с IP DUT во время процесса интегрирования IP рабочего процесса. Полная остальная часть связей между IP PLL Altera и IP HPS как показано в следующей фигуре
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. Создайте файл определения платы.
Файл определения платы содержит информацию о плате SoC.
Следующий код описывает содержимое файла определения платы DE1-SoC plugin_board.m
, который находится в плагине платы DE1SoCRegistration
.
Информация о местоположениях контакта ввода-вывода FPGA ('FPGAPin'
) и стандарты ('IOSTANDARD'
) получена от Планировщика Контакта Intel Куарт-II.
Свойство BoardName
задает имя платы DE-1 SoC как 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. Создайте файл определения исходного проекта.
Файл определения исходного проекта задает интерфейсы между пользовательским исходным проектом и ядром IP HDL, которое будет сгенерировано 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');
Папка DE1SoCRegistration.qsys_base_170
плагина исходного проекта DE1-SoC должна содержать файл Qsys system_soc.qsys
, сохраненный ранее из проекта Куарта Прайма Intel. Файл определения исходного проекта DE1-SoC plugin_rd.m
идентифицирует файл дизайн-проекта SoC через следующий оператор:
hRD.addCustomQsysDesign('CustomQsysPrjFile', 'system_soc.qsys');
В дополнение к файлам дизайн-проекта SoC plugin_rd.m
также задает интерфейсные связи между пользовательским исходным проектом и ядром IP HDL, обозначенным в следующей фигуре через операторы:
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. В этом разделе мы используем пользовательскую плату и систему регистрации исходного проекта, чтобы сгенерировать ядро IP HDL, которое мигает светодиодами на Terasic DE1-SoC. Файлы, используемые на следующей демонстрации, расположены в,
matlab/toolbox/hdlcoder/hdlcoderdemos/customboards/DE1SOC
1. Добавьте регистрационный файл Terasic DE1-SoC в путь MATLAB с помощью команды,
addpath(fullfile(matlabroot,'toolbox','hdlcoder','hdlcoderdemos','customboards','DE1SOC'));
2. Откройте модель Simulink, которая реализует мигание LED с помощью команды,
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 Code> HDL Workflow Advisor.
2.2. В Цели Набора> Целевое устройство Набора и задача Инструмента Синтеза, для Целевого рабочего процесса, выбирают IP Core Generation.
2.3. Для Целевой платформы выберите комплект разработчика Terasic DE1-SoC.
2.4. Нажмите Run This Task, чтобы запустить задачу Инструмента Целевого устройства и Синтеза Набора.
3. В задаче 1.2, выбрана целевая система значения по умолчанию исходного проекта набора. нажмите на Run This Task.
4. Сконфигурируйте целевой интерфейс.
Сопоставьте каждый порт в своем DUT к одному из целевых интерфейсов ядра IP. В этом примере входные порты Blink_frequency и Blink_direction сопоставлены с AXI4. Выходной порт LED сопоставлен с внешним интерфейсом, светодиодная Общая цель [0:9], который соединяется с оборудованием LED на комплекте разработчика Terasic DE1-SoC.
5. Следуйте за шагом 3, и шаг 4 Генерируют ядро IP HDL использование раздела HDL Workflow Advisor Начала работы с Рабочим процессом Элемента кода аппаратного программного обеспечения для примера Устройств Intel SoC сгенерировать ядро IP и просмотреть отчет генерации ядра IP.
6. Следуйте шаг 1 Интегрируют ядро IP с разделом Environment Intel Qsys Начала работы с Рабочим процессом Элемента кода аппаратного программного обеспечения для примера Устройств Intel SoC интегрировать ядро IP в исходном проекте и создать проект Qsys.
7. Теперь давайте исследуем проект Intel Qsys, созданный рабочим процессом SoC после завершения Создать задачи Проекта при Интегрировании Встраиваемой системы. Следующие данные показывают проект SoC, где мы подсветили Ядро IP HDL. Это поучительно, чтобы сравнить этот проект с предыдущим проектом, используемым в пользовательском плагине исходного проекта для более глубокого понимания отношения между пользовательским исходным проектом и Ядром IP HDL.
8. Следуйте шаги 2, 3 и 4 Интегрируют ядро IP с разделом Environment Intel Qsys Начала работы с Рабочим процессом Элемента кода аппаратного программного обеспечения для примера Устройств Intel SoC сгенерировать модель программного интерфейса, сгенерировать поток битов FPGA и целевое устройство программы соответственно.
9. Светодиоды на Terasic DE1-SoC начнут мигать после загрузки потока битов. Кроме того, вы сможете управлять частотой мигания LED и направлением путем выполнения модели программного интерфейса. Относитесь, чтобы Сгенерировать раздел модели программного интерфейса Начала работы с Рабочим процессом Элемента кода аппаратного программного обеспечения для примера Устройств Intel SoC управлять частотой мигания LED и направлением из модели интерфейса сгенерированного программного обеспечения.