exponenta event banner

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

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

Введение

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

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

Требования

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

  2. Комплект Intel SoC для разработчиков встраиваемых систем

  3. Комплект для разработки Terasic DE1-SoC

  4. Пакет поддержки кодера HDL для устройств Intel SoC

  5. Пакет поддержки встроенного кодера для устройств 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');

Создание эталонного дизайна с использованием Intel Quartus Prime

Эталонная конструкция фиксирует полную структуру конструкции 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. Этот файл будет использоваться при создании подключаемого модуля ссылочного проекта.

Зарегистрируйте плату DE1-SoC в помощнике по рабочим процессам HDL

В этом разделе описываются шаги, необходимые для регистрации комплекта для разработки 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

В этом разделе описываются шаги, необходимые для регистрации пользовательского ссылочного проекта в методе 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');

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

В предыдущих разделах были рассмотрены шаги по определению и регистрации 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');

Создание IP-ядра ЛПВП с помощью помощника по рабочим процессам ЛПВП

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» для управления частотой и направлением мигания светодиодных индикаторов из созданной модели программного интерфейса.