В этом примере показано, как определить и зарегистрировать пользовательскую плату и эталонную конструкцию в рабочем процессе HDL Coder™ Intel SoC.
Используя этот пример, вы сможете зарегистрировать комплект для разработки Terasic DE1-SoC и пользовательский эталонный дизайн в Консультаторе по рабочим процессам HDL для рабочего процесса Intel SoC.
В этом примере используется Terasic DE-1 SoC, но таким же образом можно определить и зарегистрировать пользовательскую плату или пользовательский эталонный дизайн для других устройств Intel SoC.
Intel Quartus Prime с поддерживаемой версией, указанной в документации по кодеру HDL
Комплект Intel SoC для разработчиков встраиваемых систем
Комплект для разработки Terasic DE1-SoC
Пакет поддержки кодера HDL для устройств Intel SoC
Пакет поддержки встроенного кодера для устройств Intel SoC
1. Описание функций, доступных в DE1-SoC Terasic, приведено в справочном руководстве по системной плате.
2. Настройте DE1-SoC Terasic, как показано на следующем рисунке:

3. Убедитесь, что на компьютере правильно установлены драйверы USB COM-устройств.
4. Подключите к компьютеру порт UART и USB blaster на DE1-SoC Terasic.
5. Подключите DE1-SoC Terasic к компьютеру с помощью кабеля Ethernet. IP-адрес Terasic DE1-SoC по умолчанию: 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');
Эталонная конструкция фиксирует полную структуру конструкции SoC, определяя различные компоненты и их взаимосвязи. Рабочий процесс SoC кодера HDL генерирует ядро IP, которое интегрируется с эталонным дизайном и затем используется для программирования платы SoC. На следующем рисунке показана взаимосвязь между эталонной конструкцией, ядром IP HDL и платой SoC

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

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

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

выполните другие настройки, необходимые для системы жесткого процессора, такие как установка контактов периферийных устройств и настройка режима.
4. держать h2f_axi_master для подключения к IP DUT во время процесса интеграции 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.
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 Quartus-II.
Собственность BoardName определяет имя правления DE-1 SoC как Terasic DE1-SoC development Kit в Консультаторе по рабочим процессам HDL.
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, которые будут сгенерированы рабочим процессом SoC кодера HDL.
Следующий код описывает содержимое файла определения конструкции ссылки на DE1-SoC plugin_rd.m связанные с платой Terasic DE1-SoC development Kit который находится внутри подключаемого модуля эталонного дизайна DE1SoCRegistration.qsys_base_170. Собственность ReferenceDesignName определяет имя ссылочной конструкции как Demo system в Консультаторе по рабочим процессам HDL.
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 reference design 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 также определяет интерфейсные соединения между пользовательским эталонным дизайном и ядром 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');
В предыдущих разделах были рассмотрены шаги по определению и регистрации DE1-SoC Terasic и пользовательского ссылочного проекта в помощнике по рабочим процессам HDL для рабочего процесса SoC. В этом разделе мы используем систему регистрации пользовательских плат и эталонных конструкций для создания IP-ядра HDL, которое мигает светодиодами на DE1-SoC Terasic. Файлы, используемые в следующей демонстрации, находятся по адресу,
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 позволяет автоматически создавать совместно используемый и многократно используемый модуль IP-ядра из модели Simulink. Кодер HDL генерирует код HDL из блоков Simulink, а также генерирует код HDL для логики интерфейса AXI, соединяющей ядро IP со встроенным процессором. Кодер HDL упаковывает все сгенерированные файлы в основную папку IP. Затем вы можете интегрировать сгенерированное ядро IP с более масштабным встроенным дизайном FPGA в среде Intel Qsys.
2. Запустите рабочий процесс создания ядра IP.
2.1. Откройте помощник по рабочим процессам HDL из hdlcoder_led_blinking/led_counter путем щелчка правой кнопкой мыши по led_counter и выберите «Код HDL» > «Помощник по рабочим процессам HDL».
2.2. В задании Set Target > Set Target Device and Synthesis Tool в поле Target workflow выберите IP Core Generation.
2.3. Для целевой платформы выберите Terasic DE1-SoC development Kit.
2.4. Щелкните Запустить эту задачу, чтобы запустить задачу Задать целевое устройство и средство синтеза.

3. В задании 1.2 выбрана заданная эталонная система проектирования по умолчанию. нажмите кнопку Run This Task (Выполнить эту задачу).

4. Сконфигурируйте целевой интерфейс.
Сопоставьте каждый порт в DUT с одним из основных IP-интерфейсов. В этом примере входные порты Blink_frequency и Blink_direction сопоставляются с AXI4. Порт вывода светодиодов отображается на внешний интерфейс, светодиоды общего назначения [0:9], который подключается к аппаратным средствам светодиодов в комплекте разработки Terasic DE1-SoC.

5. Чтобы создать IP-ядро и просмотреть отчет о создании IP-ядра, выполните шаги 3 и 4 из раздела «Создание IP-ядра ЛПВП» примера «Начало работы с таргетингом устройств Intel SoC».
6. Выполните шаг 1 раздела Интеграция IP-ядра с средой Intel Qsys примера Начало работы с таргетингом устройств Intel SoC, чтобы интегрировать IP-ядро в эталонный дизайн и создать проект Qsys.
7. Теперь рассмотрим проект Intel Qsys, созданный рабочим процессом SoC, после выполнения задачи «Создать проект» в разделе «Интеграция встраиваемых систем». На следующем рисунке показан проект SoC, в котором мы выделили ядро IP HDL. Рекомендуется сравнить этот проект с предыдущим проектом, используемым в плагине пользовательского эталонного дизайна, для более глубокого понимания взаимосвязи между пользовательским эталонным дизайном и IP-ядром HDL.

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