В этом примере показано, как определить и зарегистрировать системную плату и исходный проект для комплекта для разработки Intel Arria10 SoC и использовать рабочий процесс совместного проектирования аппаратного ПО для мигания светодиодов на различных частотах в комплекте для разработки Intel Arria 10.
В этом примере можно зарегистрировать комплект разработки Arria 10 SoC и исходного проекта в HDL Workflow Advisor. В исходном проекте также показана функция раннего ввода-вывода (Split bitstream), поддерживаемая Intel Arria 10 SoC в HDL Workflow Advisor. Этот пример является пошаговым руководством, которое помогает вам использовать программное обеспечение HDL- Coder™ для генерации пользовательского HDL-IP-ядра, которое мигает светодиодами на наборе для разработки Intel Arria 10 и показывает, как использовать Embedded Coder ® для генерации кода С, который работает на процессоре ARM ® для управления частотой мигания светодиода.
Можно использовать MATLAB ® и Simulink ®, чтобы проектировать, моделировать и проверять свое приложение, выполнять сценарии what-if с помощью алгоритмов и оптимизировать параметры. Затем можно подготовить проект для реализации оборудования и программного обеспечения на однокристальном компьютере Intel Arria 10, определив, какие системные элементы выполняются программируемой логикой и какие системные элементы будут работать на Cortex-A9 ARM.
В этом рабочем процессе вы выполняете следующие шаги:
Настройте оборудование и инструменты Intel SoC.
Создайте исходный проект для однокристального процессора Intel Arria 10, в котором используется функция раннего ввода-вывода.
Разделите ваш проект на аппаратные и программные реализации.
Сгенерируйте ядро IP HDL с помощью HDL Workflow Advisor.
Интеграция IP-ядра с проектом Intel Platform Designer Qsys и программирование оборудования Intel SoC.
Сгенерируйте модель программного интерфейса.
Сгенерируйте код С из модели программного интерфейса и запустите его на процессоре ARM Cortex-A9.
Настройки параметров и получение результатов от оборудования Intel SoC с помощью режима external mode.
Intel Quartus Pro (или Intel QUARTUS II) с поддерживаемой версией, указанной в документации HDL Coder
Решения Intel для встраиваемых систем Проекта Набора
Комплект для разработки Intel Arria 10 SoC
HDL Coder поддержки устройств Intel ® SoC
Пакет поддержки Embedded Coder для устройств Intel ® SoC
1. Настройте SoC Arria 10 как показано на рисунке ниже. Для получения дополнительной информации о настройке оборудования Arria 10 см. документацию по системной плате.
1.1 Настройте DIP-переключатели и настройки перемычек, как показано на рисунке ниже.
1.2 Подключите Arria10 SoC Kit USB UART с помощью кабеля Micro-USB к компьютеру. Убедитесь, что драйверы USB-устройств, например FTDI USB to UART, установлены правильно. Если нет, ищите драйверы онлайн и устанавливайте их.
1.3 Подключите Arria10 комплект СХД к компьютеру с помощью кабеля Ethernet.
2. Установите пакеты HDL Coder и Embedded Coder поддержки для устройств Intel ® SoC, если вы еще не сделали этого. Чтобы запустить инсталлятор, перейдите на панель инструментов MATLAB и нажмите Дополнения > Get Аппаратной поддержки Packages. Для получения дополнительной информации см. документацию по установке пакета поддержки.
3. Убедитесь, что Вы используете изображение карты SD, предоставленный пакетом поддержки Embedded Coder для устройств Intel ® SoC. Если необходимо обновить изображение карты SD, обратитесь к разделу Оборудования Setup этого документа.
4. Настройте Arria10 аппаратное подключение SoC путем ввода следующей команды в командном окне MATLAB:
h = alterasoc
The 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');
Исходный проект захватывает полную структуру однокристального проекта, определяя различные компоненты и их взаимосвязи. Рабочий процесс HDL Coder SoC генерирует IP-ядро, которое интегрируется с исходным проектом, и затем используется для программирования платы SoC. Следующий рисунок описывает отношения между исходным проектом, IP-ядром HDL и платой СнК
В этом разделе описываются основные шаги, необходимые для создания и экспорта простого исходного проекта с помощью окружения Intel Quartus Pro и Platform Designer (QSys). Для получения дополнительной информации о инструменте интегрирования систем QSys см. документацию Intel.
1. Создайте пустой проект Quartus с помощью мастера нового проекта с номером детали устройства, как показано на следующем рисунке.
2. Инициализируйте Platform Designer (Qsys) в Quartus Pro, перейдя к инструменты -- > Platform Designer, как показано на следующем рисунке.
3. Выберите Hard Processor System Intel Arria 10 FPGA IP (HPS), синхронизируйте и сбрасывайте IP-адреса из каталога IP в созданный проект Platform Designer. Подключите необходимые часы и переключается на IP Arria 10 HPS, как показано на следующем рисунке. выполните другие настройки, необходимые для жесткой процессорной системы Arria 10, такие как набор периферийных контактов и настройки режима.
4. Сохраните соединение h2f_axi_master портом открытым в порядок, чтобы соединиться с DUT IP в процессе IP- интегрирования процесса. Завершите остальную часть соединений между Altera PLL IP и HPS IP, как показано на следующем рисунке.
5. Сохраните файл Qsys. Этот файл используется при создании плагина исходного проекта.
В этом разделе вы регистрируете комплект для разработки Intel Arria 10 в HDL Workflow Advisor.
1. Создайте файл регистрации платы с именем hdlcoder_board_customization.m
и добавьте его к пути MATLAB.
Для получения дополнительной информации о создании файла регистрации плат см. раздел «Определение пользовательских плат и Исходного проекта для рабочего процесса Intel ® SoC».
2. Создайте файл определения платы.
Файл определения платы содержит информацию о плате СнК.
Для получения дополнительной информации о создании файла определения системной платы см. раздел «Определение пользовательских плат и исходный проект для рабочего процесса Intel SoC».
В этом разделе Вы регистрируете пользовательский исходный проект в HDL Workflow Advisor.
1. Создайте исходный проект регистрацию файла с именем hdlcoder_ref_design_customization.m
содержит список исходного проекта плагинов, сопоставленных с платой SoC.
Для получения дополнительной информации о создании пользовательских исходных проектов см. раздел «Определение пользовательских плат и Исходного проекта для рабочего процесса Intel ® SoC».
2. Создайте файл определения исходного проекта.
Файл определения исходного проекта задает интерфейсы между пользовательским исходным проектом и HDL-ядром IP, которое генерируется рабочим процессом HDL Coder SoC. Для получения дополнительной информации о создании файла определения исходного проекта см. раздел «Определение пользовательских плат и исходного проекта для рабочего процесса Intel SoC».
Ранний ввод-вывод для Arria 10: Устройство Intel Arria 10 SoC FPGA поддерживает ранний релиз ввода-вывода.
Ранний релиз IO позволяет включать функционирование DDR перед программированием основного необработанного двоичного файла (RBF) для ускорения загрузки. В этом потоке ввода-вывода общего ввода-вывода и контроллера жесткой памяти сконфигурированы и выпущены, что позволяет HPS немедленно получить к ним доступ.
Эта функция разделяет последовательность строения FPGA на две части. Первая часть конфигурирует ввод-вывод FPGA, общий ввод-вывод, а также включает интерфейс внешней памяти HPS (EMIF) при наличии. Вторая часть последовательности конфигурирует основную ткань FPGA. Путем разделения последовательности строения система Arria10 Hard Processing System теперь имеет доступ к общим вводам-выводам и EMIF до настройки фабрики FPGA. Это обеспечивает большую гибкость для проектов, которым требуется более быстрое время загрузки или альтернативные источники загрузки. В этом раннем вводе-выводе генерируются два файла Raw Binary Format (.rbf): (1) файл peripheral.rbf. (2) файл core.rbf. Вместе эти файлы строения содержат те же данные, что и объединенный файл строения .rbf, который генерируется, когда функция ввода-вывода Early Релиза не используется. Файл peripheral.rbf загружается первым и конфигурирует FPGA I/O, Shared I/O и HPS EMIF. core.rbf загружается следующим образом и завершает последовательность строения FPGA путем конфигурирования FPGA-фабрики. После успешной загрузки периферий.rbf выпускаются контакты Intel Arria 10 SoC FPGA HPS EMIF и начинается калибровка интерфейса.
Чтобы использовать эту функцию, вам нужно включить параметр исходного проекта hRD.GenerateSplitBitstream = true;
как показано на приведенном ниже файле plugin_rd. Соответственно, если этот параметр исходного проекта сделан верным, он генерирует два файла .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 можно использовать блок Slider Gain или Manual Switch, чтобы настроить значения входа подсистемы оборудования. В встроенное программное обеспечение это означает, что процессор ARM управляет сгенерированным IP-ядром путем записи в доступные регистры интерфейса AXI. Выходной порт аппаратной подсистемы, светодиодный, соединяется с оборудованием светодиодного индикатора. Порт выхода, Read_Back, может использоваться, чтобы считать данные обратно в процессор.
open_system('hdlcoder_led_blinking_4bit');
Использование IP Core Generation
рабочий процесс в 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. Для целевой платформы выберите комплект для разработки Intel Arria 10. Если у вас нет этой опции, выберите Получить больше, чтобы открыть программу установки пакета поддержки. В программе установки пакета поддержки выберите устройства Intel SoC и следуйте инструкциям установщика пакета поддержки для завершения установки.
1.4. Выберите инструмент синтеза Intel Quartus Pro (или Altera QUARTUS II)
1.5. Нажмите Run This Task, чтобы запустить задачу Set Target Device and Synthesis Tool.
1.6. В задаче Set Target > Set Target Reference Design выберите Default system. В данном примере он выбран по умолчанию.
1.7. Щелкните Запустить эту задачу, чтобы запустить задачу Задать исходный проект целевого объекта.
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-ядра.
5. Следуйте шагу 1 «Интеграция ядра IP с разделом Environment Intel Qsys» примера «Начало работы с устройствами Intel SoC», чтобы интегрировать ядро IP в исходный проект и создать проект Qsys.
6. Теперь рассмотрим проект Intel Qsys, созданный в соответствии с рабочим процессом SoC после выполнения задачи Create Project в разделе Встраиваемая Система Integration. Следующий рисунок показывает проект SoC, где мы выделили HDL IP Core. Поучительно сравнивать этот проект с предыдущим проектом, используемым в пользовательском плагине исходного проекта, для более глубокого понимания связи между пользовательским исходным проектом и HDL IP Core.
7. Следуйте шагам 2, 3 и 4 Интеграция IP-ядра с разделом Environment Intel Qsys из примера Начало работы с устройствами Intel SoC, чтобы сгенерировать модель программного интерфейса, сгенерировать поток битов FPGA и целевое устройство программы соответственно.
8. Светодиоды на SoC Arria 10 начнут мигать после загрузки битового потока. В сложение можно управлять частотой и направлением мигания светодиода, выполнив модель интерфейса программного обеспечения. См. пример «Начало работы с целевыми устройствами Intel SoC» для управления частотой и направлением мигания светодиода от модели сгенерированного программного обеспечения интерфейса.