В этом примере показано, как определить и зарегистрировать конструкцию платы и эталона для комплекта разработки Intel Arria10 SoC и использовать рабочий процесс совместного проектирования аппаратного и программного обеспечения для мигания светодиодных индикаторов на различных частотах в комплекте разработки Intel Arria 10 SoC.
С помощью этого примера можно зарегистрировать комплект разработки Arria 10 SoC и эталонный дизайн в консультанте по рабочим процессам HDL. В справочном проекте также показана функция раннего ввода-вывода (разделенный битовый поток), поддерживаемая Intel Arria 10 SoC в HDL Workflow Advisor. Этот пример представляет собой пошаговое руководство, которое помогает использовать программное обеспечение HDL Coder™ для создания пользовательского IP-ядра HDL, которое мигает светодиодами в комплекте разработки Intel Arria 10 SoC, и показывает, как использовать Embedded Coder ® для создания кода C, который работает на процессоре ARM ® для управления частотой мигания светодиодов.
MATLAB ® и Simulink ® можно использовать для проектирования, моделирования и проверки приложений, выполнения сценариев «что если» с помощью алгоритмов и оптимизации параметров. Затем вы можете подготовить свой проект для внедрения аппаратного и программного обеспечения на платформе Intel Arria 10 SoC, решив, какие системные элементы выполняются программируемой логикой и какие системные элементы будут запускаться на Cortex-A9 ARM.
В этом рабочем процессе выполняются следующие шаги.
Настройте оборудование и инструменты Intel SoC.
Создайте эталонный дизайн для Intel Arria 10 SoC, в котором используется функция раннего ввода-вывода.
Разбейте дизайн на разделы для внедрения аппаратного и программного обеспечения.
Создание IP-ядра ЛПВП с помощью помощника по рабочим процессам ЛПВП.
Интеграция IP-ядра в проект Intel Platform Designer Qsys и программирование аппаратного обеспечения Intel SoC.
Создание модели программного интерфейса.
Создайте код C из модели программного интерфейса и запустите его на процессоре ARM Cortex-A9.
Настройка параметров и результатов записи с аппаратного обеспечения Intel SoC с использованием внешнего режима.
Intel Quartus Pro (или Intel QUARTUS II) с поддерживаемой версией, указанной в документации по кодеру HDL
Комплект Intel SoC для разработчиков встраиваемых систем
Комплект для разработки Intel Arria 10 SoC
Пакет поддержки кодера HDL для устройств Intel SoC
Пакет поддержки встроенного кодера для устройств Intel SoC
1. Установите SoC Arria 10, как показано на рисунке ниже. Для получения дополнительной информации о настройке аппаратных средств Arria 10 SoC см. документацию по системной плате.

1.1 Установите DIP-переключатели и перемычки, как показано на рисунке ниже.

1.2 Подключите USB UART комплекта Arria10 SoC с помощью кабеля Micro-USB к компьютеру. Убедитесь, что драйверы USB-устройств, например FTDI USB-UART, установлены правильно. Если нет, найдите драйверы в Интернете и установите их.
1.3 Подключите комплект Arria10 SoC к компьютеру с помощью кабеля Ethernet.
2. Установите пакеты поддержки кодера HDL и встроенного кодера для устройств Intel SoC, если вы еще не сделали этого. Чтобы запустить программу установки, перейдите на панель инструментов MATLAB и выберите Add-On > Get Hardware Support Packages. Дополнительные сведения см. в документации по установке пакета поддержки.
3. Убедитесь, что вы используете образ SD-карты, предоставленный пакетом поддержки встроенного кодера для устройств Intel SoC. При необходимости обновления образа SD-карты см. раздел «Аппаратная настройка» данного документа.
4. Настройте связь аппаратных средств Arria10 SoC, войдя в следующую команду в окно команды MATLAB:
h = alterasoc
alterasoc регистрируется на аппаратном обеспечении через COM-порт и запускает ifconfig для получения IP-адреса платы. Эта функция также проверяет соединение Ethernet.
5. При необходимости можно протестировать последовательное соединение с помощью следующей конфигурации с помощью такой программы, как PuTTY™. Скорость передачи в бодах: 115200; Биты данных: 8; Стоп-биты: 1; Четность: None; Управление потоком: None. Вам необходимо наблюдать Linux, загружающий вход в систему последовательного пульта, когда Вы приводите цикл в действие правление Arria10 SoCKit. Вы должны закрыть эту последовательную связь перед использованием alterasoc снова функция.
6. Настройте путь к инструменту синтеза Intel Quartus Pro с помощью следующей команды в окне команд MATLAB. При выполнении команды используйте собственный путь установки Quartus.
hdlsetuptoolpath('ToolName', 'Intel Quartus Pro', 'ToolPath', 'C:\intelFPGA\19.4\quartus\bin64\qpro.exe');
Если вы используете Intel QUARTUS II, используйте следующую команду:
hdlsetuptoolpath('ToolName', 'Intel QUARTUS II', 'ToolPath', 'C:\intelFPGA\18.1\quartus\bin64\quartus.exe');
Эталонная конструкция фиксирует полную структуру конструкции SoC, определяя различные компоненты и их взаимосвязи. Рабочий процесс SoC кодера HDL генерирует ядро IP, которое интегрируется с эталонным дизайном и затем используется для программирования платы SoC. На следующем рисунке показана взаимосвязь между эталонной конструкцией, ядром IP HDL и платой SoC

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

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

3. Выберите жесткий процессор Система Intel Arria 10 FPGA IP (HPS), часы и сброс IP из IP каталога в созданный проект Platform Designer. Подключите необходимые часы и выполните сброс к IP HPS Arria 10, как показано на следующем рисунке. выполните другие настройки, необходимые для системы Arria 10 Hard Processor System, такие как установка контактов периферийных устройств и настройка режима.

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

5. Сохраните файл Qsys. Этот файл используется при создании подключаемого модуля ссылочного проекта.
В этом разделе Вы регистрируете комплект для разработки Intel Arria 10 SoC в программе HDL Workflow Advisor.
1. Создание файла регистрации платы с именем hdlcoder_board_customization.m и добавьте его в путь MATLAB.
Дополнительные сведения о создании файла регистрации платы см. в разделе Определение пользовательской платы и эталонного дизайна для рабочего процесса Intel SoC.
2. Создайте файл определения платы.
Файл определения платы содержит информацию о плате SoC.
Дополнительные сведения о создании файла определения платы см. в разделе Определение пользовательской платы и справочного проекта для рабочего процесса Intel SoC.
В этом разделе выполняется регистрация пользовательской ссылочной конструкции в помощнике по рабочим процессам HDL.
1. Создание файла регистрации ссылочного проекта с именем hdlcoder_ref_design_customization.m содержит список эталонных подключаемых модулей проектирования, связанных с платой SoC.
Дополнительные сведения о создании пользовательской эталонной конструкции см. в разделе Определение пользовательской платы и эталонной конструкции для рабочего процесса Intel SoC.
2. Создайте файл определения ссылочной конструкции.
Файл определения ссылочного проекта определяет интерфейсы между пользовательским ссылочным проектом и ядром IP-адреса HDL, создаваемым рабочим процессом SoC кодера HDL. Дополнительные сведения о создании справочного файла определения конструкции см. в разделе Определение пользовательской платы и справочного проекта для рабочего процесса Intel SoC.
Ранний ввод-вывод для Arria 10: Устройство Intel Arria 10 SoC FPGA поддерживает ранний выпуск ввода-вывода.
Ранний выпуск IO позволяет включить функцию DDR перед программированием исходного двоичного файла (RBF) для ускорения загрузки. В этом потоке совместно используемые операции ввода-вывода и ввода-вывода контроллера жесткой памяти конфигурируются и освобождаются, позволяя HPS немедленно получить к ним доступ.
Эта функция разделяет последовательность конфигурирования FPGA на две части. В первой части конфигурируется интерфейс ввода-вывода FPGA, общий интерфейс ввода-вывода, а также включается интерфейс внешней памяти HPS (EMIF), если он имеется. Вторая часть последовательности конфигурирует матрицу FPGA ядра. Разделяя последовательность конфигурации, Arria10 у Трудной Системы обработки теперь есть доступ к Общему вводу/выводу и EMIF, прежде чем ткань FPGA будет настроена. Это обеспечивает большую гибкость для конструкций, которым требуется более быстрая загрузка или альтернативные источники загрузки. В этом начале ввода-вывода генерируются два файла RAW-двоичного формата (.rbf): (1) peripheral.rbf. (2) файл core.rbf. Вместе эти конфигурационные файлы содержат те же данные, что и комбинированный конфигурационный RBF-файл, который создается, когда функция раннего выпуска ввода-вывода не используется. Сначала загружается файл peripheral.rbf, в котором настраиваются интерфейсы ввода-вывода FPGA, Shared I/O и HPS EMIF. Файл core.rbf загружается далее и завершает последовательность конфигурирования FPGA путем конфигурирования FPGA-матрицы. После успешной загрузки файла peripheral.rbf контакты Intel Arria 10 SoC FPGA HPS EMIF освобождаются, и интерфейс начинает калибровку.
Для использования этого элемента необходимо включить ссылочный параметр конструкции hRD.GenerateSplitBitstream = true; как показано в следующем файле plugin_rd. Соответственно, если этот ссылочный параметр конструкции имеет значение true, он генерирует два файла .rbf для конфигурирования FPGA, как указано выше.
Содержимое этого файла определения ссылочной конструкции plugin_rd.m аналогична стандартной версии Intel Quartus, отличия для Intel Quartus Pro перечислены ниже.
function hRD = plugin_rd() % Reference design definition
% Construct reference design object hRD = hdlcoder.ReferenceDesign('SynthesisTool', 'Intel Quartus Pro');
%% Add custom design files % add custom Qsys design hRD.addCustomQsysDesign( ... 'CustomQsysPrjFile', 'system_soc.qsys');
% split the full rbf file into core and peripheral rbf files for Early I/O feature
hRD.GenerateSplitBitstream = true;
На первом этапе процесса совместного проектирования аппаратного и программного обеспечения Intel SoC необходимо решить, какие части Вашей конструкции должны быть реализованы на программируемой логике, а какие - на процессоре ARM.
Сгруппируйте все блоки, которые требуется реализовать на программируемой логике, в атомарную подсистему. Эта атомарная подсистема является границей раздела аппаратного и программного обеспечения. Все блоки внутри этой подсистемы реализованы на программируемой логике, а все блоки вне этой подсистемы будут работать на ARM-процессоре.
В этом примере подсистема led_counter является подсистемой аппаратных средств. Он моделирует счетчик, мигающий светодиодными индикаторами на плате FPGA. Два входных порта, Blink_frequency и Blink_direction, являются управляющими портами, которые определяют частоту и направление мигания светодиода. Все блоки за пределами led_counter подсистемы предназначены для реализации программного обеспечения.
В Simulink можно использовать блок усиления ползунка или ручного переключателя для настройки входных значений аппаратной подсистемы. Во встроенном ПО это означает, что процессор ARM управляет сформированным ядром IP путем записи в регистры, доступные для интерфейса AXI. Выходной порт аппаратной подсистемы (LED) подключается к аппаратным средствам LED. Выходной порт, Read_Back, может использоваться для считывания данных обратно в процессор.
open_system('hdlcoder_led_blinking_4bit');

Использование IP Core Generation workflow-процесс в HDL Workflow Advisor позволяет автоматически создавать совместно используемый и повторно используемый основной IP-модуль из модели Simulink. Сформированное ядро IP предназначено для подключения к встроенному процессору на устройстве FPGA. Кодер HDL генерирует код HDL из блоков Simulink, а также генерирует код HDL для логики интерфейса AXI, соединяющей ядро IP со встроенным процессором. Кодер HDL упаковывает все сгенерированные файлы в основную папку IP. Затем вы можете интегрировать сгенерированное ядро IP с более масштабным встроенным дизайном FPGA в среде Intel Qsys.
1. Запустите рабочий процесс создания ядра IP.
1.1. Откройте помощник по рабочим процессам HDL из hdlcoder_led_blinking_4bit/led_counter путем щелчка правой кнопкой мыши по led_counter и выберите «Код HDL» > «Помощник по рабочим процессам HDL».
1.2. В задании Set Target > Set Target Device and Synthesis Tool в поле Target workflow выберите IP Core Generation.
1.3. Для целевой платформы выберите комплект для разработки Intel Arria 10 SoC. Если у вас нет этого параметра, выберите Получить дополнительные сведения, чтобы открыть программу установки пакета поддержки. В установщике пакета поддержки выберите устройства Intel SoC и следуйте инструкциям установщика пакета поддержки для завершения установки.
1.4. Выберите инструмент синтеза Intel Quartus Pro (или Altera QUARTUS II)
1.5. Щелкните Запустить эту задачу, чтобы запустить задачу Задать целевое устройство и средство синтеза.

1.6. В задании Задать цель > Задать целевое ссылочное проектирование выберите Система по умолчанию. В этом примере он выбран по умолчанию.

1.7. Нажмите кнопку «» Выполнить эту задачу «», чтобы запустить задачу «» Задать целевое ссылочное проектирование «».
2. Сконфигурируйте целевой интерфейс.
Сопоставьте каждый порт в DUT с одним из основных IP-интерфейсов. В этом примере входные порты Blink_frequency и Blink_direction сопоставляются с интерфейсом AXI4, поэтому кодер HDL генерирует для них регистры, доступные интерфейсу AXI. Порт вывода светодиодов отображается на внешний интерфейс, светодиоды общего назначения [0:3], который подключается к аппаратным средствам светодиодов на плате Intel SoC.
2.1 В задании Set Target > Set Target Interface выберите AXI4 для Blink_frequency, Blink_direction и Read_back.
2.2 Выберите светодиодные индикаторы общего назначения [0:3] для светодиодных индикаторов.

2.3 В задании Set Target > Set Target Frequency выберите Target Frequency as 50 MHz.

3. Создайте ядро IP.
Чтобы создать ядро IP, щелкните правой кнопкой мыши задачу Создать код RTL и ядро IP и выберите Выполнить до выбранной задачи.

4. Создание и просмотр базового отчета IP.
После создания пользовательского IP-ядра файлы IP-ядра находятся в папке ipcore в папке проекта. Отчет о пользовательском IP-ядре HTML создается вместе с пользовательским IP-ядром. Отчет описывает поведение и содержимое созданного пользовательского IP-ядра.

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

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