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

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

Введение

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

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

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

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

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

  2. Разделите ваш проект на аппаратные и программные реализации.

  3. Сгенерируйте ядро IP HDL с помощью HDL Workflow Advisor.

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

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

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

  7. Настройки параметров и получение результатов от оборудования Intel SoC с помощью режима external mode.

Для получения дополнительной информации см. другие более расширенные примеры и документацию HDL Coder и Embedded Coder.

Требования

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

  2. Решения Intel для встраиваемых систем Проекта Набора

  3. Стрела для оценки SoCKit Cyclone V

  4. HDL Coder поддержки устройств Intel ® SoC

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

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

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

1.1 Настройка SW4 switch (выбор цепи JTAG), как показано на рисунке ниже. Положение 1: OFF; Позиция 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 положений.

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

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

2. Установите пакеты HDL Coder и Embedded Coder поддержки для устройств Intel ® SoC, если вы еще не сделали этого. Чтобы запустить инсталлятор, перейдите на панель инструментов MATLAB и нажмите Дополнения > Get Аппаратной поддержки Packages. Для получения дополнительной информации см. документацию по установке пакета поддержки.

3. Убедитесь, что Вы используете изображение карты SD, предоставленный пакетом поддержки Embedded Coder для устройств Intel ® SoC. Если необходимо обновить изображение карты SD, обратитесь к разделу Оборудования Setup этого документа.

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

h = alterasoc

The 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 можно использовать блок Slider Gain или Manual Switch, чтобы настроить значения входа подсистемы оборудования. В встроенное программное обеспечение это означает, что процессор ARM управляет сгенерированным IP-ядром путем записи в доступные регистры интерфейса AXI. Выходной порт аппаратной подсистемы, светодиодный, соединяется с оборудованием светодиодного индикатора. Порт выхода, Read_Back, может использоваться, чтобы считать данные обратно в процессор.

open_system('hdlcoder_led_blinking_4bit');

Сгенерируйте ядро IP HDL с помощью HDL Workflow Advisor

Использование рабочего процесса генерации IP-ядра в HDL Workflow Advisor позволяет автоматически сгенерировать резкий и переиспользуемый модуль IP-ядра из модели Simulink. Сгенерированное IP-ядро предназначено для подключения к встраиваемому процессору на устройстве FPGA. HDL Coder генерирует HDL-код из блоков Simulink, а также генерирует HDL-код для логики интерфейса AXI, соединяющий IP-ядро со встраиваемым процессором. HDL Coder упаковывает все сгенерированные файлы в IP-папку ядра. Затем можно интегрировать сгенерированное IP-ядро с большим проектом встраиваемых систем FPGA в среде Intel Qsys.

1. Запустите рабочий процесс генерации ядра IP.

1.1. Откройте HDL Workflow Advisor из hdlcoder_led_blinking_4bit/led_counter подсистема щелчком правой кнопкой мыши по led_counter и выбор HDL-кода > HDL Workflow Advisor.

1.2. В задаче Set Target > Set Target Device and Synthesis Tool для рабочего процесса Target выберите IP Core Generation.

1.3. Для целевой платформы выберите Arrow SoCKit. Если у вас нет этой опции, выберите Получить больше, чтобы открыть программу установки пакета поддержки. В программе установки пакета поддержки выберите устройства Intel SoC и следуйте инструкциям установщика пакета поддержки для завершения установки.

1.4. Нажмите Run This Task, чтобы запустить задачу Set Target Device and Synthesis Tool.

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

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

2. Сконфигурируйте целевой интерфейс.

Сопоставьте каждый порт в DUT с одним из базовых IP-интерфейсов. В этом примере входные порты Blink_frequency и Blink_direction сопоставлены с интерфейсом AXI4, поэтому HDL Coder генерирует для них доступные регистры интерфейса AXI. Выходной порт светодиодного индикатора сопоставлен с внешним интерфейсом LED General Purpose [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 как 50 МГц.

3. Сгенерируйте ядро IP.

Чтобы сгенерировать ядро IP, щелкните правой кнопкой мыши задачу Generate RTL Code and IP Core и выберите Run to Selected Task.

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 выберите задачу Create Project в разделе Встраиваемая Система Integration и нажмите Run This Task. Создается проект Intel Qsys и проект Intel Quartus со ссылками на проекты, представленные в диалоговом окне. Вы можете опционально открыть проекты, чтобы взглянуть.

2. Если у вас есть лицензия Embedded Coder, можно сгенерировать модель программного интерфейса в следующей задаче, Generate Software Interface Model. Детали модели интерфейса программного обеспечения объяснены в следующем разделе этого примера «Сгенерируйте модель интерфейса программного обеспечения».

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

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

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

Затем вы сгенерируете код С для запуска на процессоре ARM, чтобы контролировать частоту и направление мигания светодиода.

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

В HDL Workflow Advisor, после того, как вы сгенерируете IP-ядро и вставляете его в исходный проект Qsys, можно опционально сгенерировать модель программного интерфейса в задаче Встраиваемой системы Интегрирования > Generate Software Interface Model.

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

Запустите задачу Generate Software Interface Model и увидите, что новая модель сгенерирована. Диалоговое окно задачи показывает ссылку на модель.

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

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

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

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

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

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

  2. Выберите решатель и установите «Stop Time» на «inf».

  3. В меню HARDWARE нажмите кнопку Monitor & Tune на панели инструментов модели, чтобы запустить модель на процессоре ARM в оборудовании Intel SoC во режиме external mode. Embedded Coder создает модель, загружает исполняемый файл ARM на оборудование Intel SoC, выполняет его и соединяет модель с исполняемым файлом, работающим на оборудовании Intel SoC.

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

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

  6. Когда вы завершили изменение параметров модели, нажмите кнопку Stop на модели. Заметьте, что системное командное окно, открытое на предыдущем шаге, указывает, что модель остановлена. На данной точке можно закрыть системное командное окно.

Сводные данные

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

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