exponenta event banner

Начало работы с таргетингом устройств Intel SoC

В этом примере показано, как использовать рабочий процесс совместного проектирования аппаратного и программного обеспечения для мигания светодиодов на различных частотах в оценочном комплекте Arrow ® SoCKit ®.

Введение

Этот пример представляет собой пошаговое руководство, которое помогает использовать программное обеспечение HDL Coder™ для создания пользовательского IP-ядра HDL, которое мигает светодиодами на оценочном комплекте Arrow SoCKit, и показывает, как использовать Embedded Coder ® для генерации кода C, который работает на процессоре ARM ® для управления частотой мигания светодиодов.

MATLAB ® и Simulink ® можно использовать для проектирования, моделирования и проверки приложений, выполнения сценариев «что если» с помощью алгоритмов и оптимизации параметров. Затем вы можете подготовить проект для внедрения аппаратного и программного обеспечения на SoC Altera Cyclone V, решив, какие элементы системы будут выполняться программируемой логикой и какие элементы системы будут работать на Cortex-A9 ARM.

Используя управляемый рабочий процесс, показанный в этом примере, вы автоматически генерируете код HDL для программируемой логики с помощью кодера HDL, генерируете код C для ARM с помощью встроенного кодера и реализуете дизайн на устройствах Intel SoC.

В этом рабочем процессе выполняются следующие шаги.

  1. Настройте оборудование и инструменты Intel SoC.

  2. Разбейте дизайн на разделы для внедрения аппаратного и программного обеспечения.

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

  4. Интеграция IP-ядра в проект Intel Qsys и программирование аппаратного обеспечения Intel SoC.

  5. Создание модели программного интерфейса.

  6. Создайте код C из модели программного интерфейса и запустите его на процессоре ARM Cortex-A9.

  7. Настройка параметров и результатов записи с аппаратного обеспечения Intel SoC с использованием внешнего режима.

Дополнительные сведения см. в других дополнительных примерах, а также в документации по кодеру HDL и встроенному кодеру.

Требования

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

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

  3. Комплект для оценки SoCKit Cyclone V SoC со стрелкой

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

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

Настройка оборудования и инструментов Intel SoC

1. Настройте оценочный комплект Arrow SoCKit, как показано на рисунке ниже. Дополнительные сведения о настройке оборудования Arrow SoCKit см. в документации по системной плате.

1.1 Настройка SW4 переключатель (выбор цепи JTAG), как показано на рисунке ниже. Положение 1: ВЫКЛ.; Позиция 2: ON. Эта конфигурация включает HPS в цепочку JTAG и обходит HSMC.

1.2 Настройка JP2 как показано на рисунке ниже, для настройки стандарта ввода/вывода контактов FPGA/HSMC. Короткие контакты 5 и 6 для установки напряжения ввода-вывода на 2.5V.

1.3 Настройка J17 - J19 как показано на рисунке выше, для загрузки HPS с карты SD. J17: короткие контакты 1 и 2; J18: короткие контакты 1 и 2; J19: Короткие контакты 2 и 3.

1.4 Настройка J15 - J16 как показано на рисунке выше для установки тактового сигнала HPS. J15: короткие контакты 2 и 3; J16: Короткие контакты 2 и 3.

1.5 Настройка SW6 на задней стороне платы, как показано на рисунке ниже. Этот коммутатор устанавливает режим конфигурирования FPGA. Установите все 6 позиций в положение ON.

1.6 Подключите компьютер к разъему USB UART с помощью кабеля Micro-USB. Убедитесь, что драйверы USB-устройств, например FTDI USB-UART, установлены правильно. Если нет, найдите драйверы в Интернете и установите их.

1.7 Подключите компьютер и плату Arrow SoCKit с помощью кабеля Ethernet.

2. Установите пакеты поддержки кодера HDL и встроенного кодера для устройств Intel SoC, если вы еще не сделали этого. Чтобы запустить программу установки, перейдите на панель инструментов MATLAB и выберите Add-On > Get Hardware Support Packages. Дополнительные сведения см. в документации по установке пакета поддержки.

3. Убедитесь, что вы используете образ SD-карты, предоставленный пакетом поддержки встроенного кодера для устройств Intel SoC. При необходимости обновления образа SD-карты см. раздел «Аппаратная настройка» данного документа.

4. Установите аппаратное соединение Arrow SoCKit путем ввода следующей команды в окне команд MATLAB:

h = alterasoc

alterasoc регистрируется на аппаратном обеспечении через COM-порт и запускает ifconfig для получения IP-адреса платы. Эта функция также проверяет соединение Ethernet.

5. При необходимости можно протестировать последовательное соединение с помощью следующей конфигурации с помощью такой программы, как PuTTY™. Скорость передачи в бодах: 115200; Биты данных: 8; Стоп-биты: 1; Четность: None; Управление потоком: None. При включении/выключении платы Arrow SoCKit можно наблюдать журнал загрузки Linux на последовательной консоли. Вы должны закрыть эту последовательную связь перед использованием alterasoc снова функция.

6. Настройте путь к инструменту синтеза Intel Quartus с помощью следующей команды в окне команд MATLAB. При выполнении команды используйте собственный путь установки Quartus.

hdlsetuptoolpath('ToolName', 'Altera Quartus II', 'ToolPath', 'C:\intelFPGA\18.0\quartus\bin64\quartus.exe');

Разделение проекта на разделы для внедрения аппаратного и программного обеспечения

На первом этапе процесса совместного проектирования аппаратного и программного обеспечения 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-ядра ЛПВП с помощью помощника по рабочим процессам ЛПВП

Использование рабочего процесса создания IP-ядра в помощнике по рабочим процессам HDL позволяет автоматически создавать совместно используемый и многократно используемый модуль 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. В поле Целевая платформа выберите панель разработки Arrow SoCKit. Если у вас нет этого параметра, выберите Получить дополнительные сведения, чтобы открыть программу установки пакета поддержки. В установщике пакета поддержки выберите устройства Intel SoC и следуйте инструкциям установщика пакета поддержки для завершения установки.

1.4. Щелкните Запустить эту задачу, чтобы запустить задачу Задать целевое устройство и средство синтеза.

1.5 В задании Set Target > Set Target Reference Design выберите Система по умолчанию. В этом примере он выбран по умолчанию

1.6. Нажмите кнопку «» Выполнить эту задачу «», чтобы запустить задачу «» Задать целевое ссылочное проектирование «».

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-ядра.

Интеграция IP-ядра со средой Intel Qsys

В этой части рабочего процесса вы вставляете созданное ядро IP в эталонную конструкцию встраиваемой системы, генерируете битовый поток FPGA и загружаете битовый поток на оборудование Intel SoC.

Эталонный проект - это предопределенный проект Intel Qsys. Он содержит все элементы, необходимые программному обеспечению Intel для развертывания вашего проекта на устройствах Intel SoC, за исключением пользовательского IP-ядра и встраиваемого программного обеспечения, которое вы генерируете.

1. Для интеграции с средой Intel Qsys выберите задачу «Создать проект» в разделе «Интеграция встраиваемых систем» и нажмите кнопку «Запустить эту задачу». Создаются как проект Intel Qsys, так и проект Intel Quartus со ссылками на проекты, представленные в диалоговом окне. При необходимости можно открыть проекты для просмотра.

2. При наличии лицензии Embedded Coder можно создать модель интерфейса программного обеспечения в следующей задаче «Создать модель интерфейса программного обеспечения». Подробности модели интерфейса программного обеспечения поясняются в следующем разделе этого примера «Создание модели интерфейса программного обеспечения».

3. Создайте битовый поток FPGA в задаче создания битового потока FPGA. Убедитесь, что установлен флажок Выполнить процесс сборки извне, поэтому средство синтеза Intel будет работать в отдельном процессе от MATLAB. Дождитесь завершения процесса средства синтеза во внешнем окне команд.

4. После создания битового потока выберите задачу Program Target Device. Выберите команду «Загрузить для программирования», чтобы загрузить битовый поток FPGA на карту памяти SD на плате Intel SoC, поэтому при включении/выключении платы Intel SoC ваша конструкция будет автоматически перезагружена. Щелкните Run This Task для программирования аппаратного обеспечения Intel SoC.

После программирования оборудования FPGA светодиодный индикатор начинает мигать на плате Intel SoC.

Затем вы создадите код C для запуска на ARM-процессоре для управления частотой и направлением мигания светодиода.

Создание модели программного интерфейса

В помощнике по рабочим процессам HDL после создания ядра IP и вставки его в эталонную конструкцию Qsys можно дополнительно создать модель интерфейса программного обеспечения в задаче Интеграция встраиваемых систем > Создание модели интерфейса программного обеспечения.

Модель интерфейса программного обеспечения содержит ту часть конструкции, которая выполняется в программном обеспечении. Он включает все блоки вне подсистемы HDL и заменяет подсистему HDL блоками драйверов AXI. Если у вас есть лицензия Embedded Coder, вы можете автоматически генерировать встроенный код из модели программного интерфейса, создавать его и запускать исполняемый файл в Linux на процессоре ARM. Созданное встроенное программное обеспечение включает в себя код драйвера AXI, генерируемый из блоков драйвера AXI, который управляет ядром IP HDL.

Запустите задачу «Создать модель интерфейса программного обеспечения» и убедитесь, что создана новая модель. В диалоговом окне задачи отображается ссылка на модель.

В генерируемой модели интерфейса программного обеспечения подсистема «led_counter» заменяется блоками драйверов AXI, которые генерируют логику интерфейса между процессором ARM и FPGA.

Запустите модель программного интерфейса на аппаратном обеспечении Intel SoC

В этой части процесса вы настраиваете создаваемую модель программного интерфейса, автоматически генерируете встроенный код C и запускаете модель на процессоре ARM на оборудовании Intel SoC во внешнем режиме.

При создании прототипа и разработке алгоритма полезно отслеживать и настраивать алгоритм во время его работы на оборудовании. Функция внешнего режима в Simulink позволяет использовать эту возможность. В этом режиме алгоритм сначала развертывается на процессоре ARM в аппаратном обеспечении Intel SoC, а затем связывается с моделью Simulink на хост-компьютере через подключение Ethernet.

Главная роль модели Simulink - настройка и мониторинг алгоритма, работающего на аппаратном обеспечении. Поскольку процессор ARM подключен к IP-ядру HDL через интерфейс AXI, для настройки параметров и сбора данных из FPGA можно использовать внешний режим.

  1. В созданной модели откройте диалоговое окно Параметры конфигурации (Configuration Parameters).

  2. Выберите Решатель и установите для параметра «Stop Time» значение «inf».

  3. В меню ОБОРУДОВАНИЕ нажмите кнопку Монитор и настройка на панели инструментов модели, чтобы запустить модель на процессоре ARM на оборудовании Intel SoC во внешнем режиме. Embedded Coder создает модель, загружает исполняемый файл ARM на оборудование Intel SoC, выполняет его и подключает модель к исполняемому файлу, работающему на оборудовании Intel SoC.

  4. Дважды щелкните на блоке «Усиление ползунка». Измените значение коэффициента усиления ползунка и наблюдайте за изменением частоты мигания светодиодного массива на аппаратном обеспечении Intel SoC. Дважды щелкните блок ручного переключения, чтобы переключить направление мигающих светодиодов.

  5. Дважды щелкните область, подключенную к порту вывода Read_back, и убедитесь, что выходные данные ядра IP FPGA захватываются и отправляются обратно в область Simulink.

  6. После изменения параметров модели нажмите кнопку Остановить (Stop) на модели. Обратите внимание, что окно системных команд, открытое на предыдущем шаге, указывает на остановку модели. На этом этапе можно закрыть окно системных команд.

Резюме

В этом примере показано, как совместное проектирование аппаратного и программного обеспечения помогает автоматизировать развертывание MATLAB и Simulink на устройствах Intel SoC. Можно изучить наилучшие способы секционирования и развертывания конструкции, выполнив итерацию в рабочем процессе.

На следующей диаграмме показано высокоуровневое изображение рабочего процесса, через который вы прошли в этом примере. Дополнительные сведения о процессе совместного проектирования аппаратного и программного обеспечения см. в документации по кодеру HDL.