В этом примере показано, как моделировать алгоритм, разделенный между аппаратным и программным обеспечением. Аппаратный IP реализован в фабрике FPGA и запускает программную задачу, реализованную во встроенном процессоре. Проектирование, моделирование и внедрение полной конструкции на оборудовании SoC.
Поддерживаемые аппаратные платформы:
Оценочный комплект Xilinx ® Zynq ® ZC706
Набор для оценки Xilinx Zynq UltraScale™+ MPSoC ZCU102
Набор для оценки Xilinx Zynq UltraScale™+ RFSoC ZCU111
Совет по развитию ZedBoard™ Zynq-7000
Комплект для разработки Altera ® Cyclone ® V SoC
Комплект для разработки Altera Arria ® 10 SoC
Многие приложения системы на кристалле (SoC) требуют, чтобы аппаратное устройство запускало асинхронную задачу на процессоре. Эта функция может быть полезна при реализации петель управления с низкой задержкой, которые охватывают аппаратное и программное обеспечение. Он также полезен при обработке срочных аппаратных запросов программным обеспечением. Для таких конструкций аппаратное устройство вызывает запрос прерывания к контроллеру прерывания, чтобы обозначить, что данные готовы к действию программной задачей на процессоре.
Этот пример включает два аппаратных IP-ядра в FPGA. Эти IP-ядра генерируют сигналы прерывания асинхронно. Прерывания запускают две отдельные задачи на процессоре, по одной для каждого аппаратного IP-ядра. Задачи процессора осуществляют доступ к аппаратным устройствам путем считывания или записи регистров.

Верхняя модель sw_hw_interrupt_top включает в себя модель FPGA sw_hw_interrupt_fpga и модель процессора sw_hw_interrupt_proc в качестве ссылок на модель. Верхняя модель также включает в себя блоки канала прерывания и канала регистрации для моделирования передачи данных от FPGA к процессору.

Модель FPGA реализует два IP-ядра, которые генерируют прерывания на основе приращения значений 32-разрядного счетчика. Первое ядро IP генерирует прерывание, когда 16-й или 18-й бит значения счетчика изменяется с 0 на 1. Второе ядро IP генерирует прерывание, когда 14-й или 16-й бит значения счетчика изменяется с 0 на 1. Значение счетчика во время генерации прерывания регистрируется и передается процессору с использованием блока канала регистрации. Модель процессора реализует две программные задачи, по одной для каждого IP-ядра, считывающие значение счетчика, ранее зарегистрированное FPGA.

Смоделировать систему в течение 0,03 секунды и открыть блок Scope на верхней модели, чтобы визуализировать значения счетчиков по мере их считывания процессором.

Затем на вкладке Моделирование (Simulation) щелкните Инспектор данных (Data Inspector) для просмотра времени различных событий, вызванных прерываниями. Добавьте сигналы прерывания1 и interruptTask1 на виде сверху, а добавьте сигналы прерывания2 и interruptTask2 на виде снизу. График моделирования показывает, что каждый раз, когда инициируется прерывание, выполняется соответствующая задача. В момент времени 0,01802 секунды прерывание 2 увеличивается и занимает 100 микросекунд для обработки блоком канала прерываний и запуска соответствующего interruptTask2, что занимает 500 микросекунд для выполнения.

В момент времени 0,01966 секунд прерывание 1 и прерывание2 поднимаются одновременно, и они обслуживаются процессором на основании их относительного приоритета. Поскольку прерывание 1 соединено первым на входных портах блока канала прерывания, оно имеет более высокий приоритет, чем прерывание2. interruptTask2 ожидает выполнения, пока interruptTask1 все еще выполняется из-за более высокого приоритета прерывания1.
Для этого раздела необходимы следующие продукты:
Coder™ ЛПВП
Встроенный кодер ®
Пакет поддержки SoC Blockset для устройств Xilinx или пакет поддержки SoC Blockset для устройств Intel
Дополнительные сведения о пакетах поддержки см. в разделе Оборудование, поддерживаемое блоками SoC.
Для реализации модели на поддерживаемой плате SoC используйте инструмент SoC Builder. По умолчанию модель будет реализована на плате ZedBoard, так как она сконфигурирована с этой платой. Чтобы открыть SoC Builder, нажмите кнопку «Настроить, построить и развернуть» на панели инструментов и выполните следующие действия:
Выберите Build Model на экране Setup. Нажмите кнопку Далее.
Нажмите кнопку Next на экране Review Task Map.
На экране Review Memory Map (Просмотр карты памяти) щелкните View/Edit Memory Map (Просмотр/редактирование карты памяти), чтобы просмотреть карту памяти. Нажмите кнопку Далее.
Укажите папку проекта на экране Select Project Folder. Нажмите кнопку Далее.
Выберите Build, загрузите для внешнего режима на экране Select Build Action. Нажмите кнопку Далее.
На экране Проверить модель (Validate Model) щелкните Проверить (Validate), чтобы проверить совместимость модели для реализации. Нажмите кнопку Далее.
На экране Компоновка модели (Build Model) щелкните Компоновка (Build), чтобы начать компоновку модели. Внешняя оболочка открывается, когда начинается синтез FPGA. Нажмите кнопку Далее.
Нажмите Test Connection на экране Connect Hardware для проверки подключения хост-компьютера к плате SoC. Нажмите кнопку Next, чтобы перейти к экрану Run Application.
Синтез FPGA может занять более 30 минут. Чтобы сэкономить время, можно использовать предоставленный предварительно сгенерированный битовый поток, выполнив следующие действия.
Закройте внешнюю оболочку для завершения синтеза.
Скопируйте предварительно созданный битовый поток в папку проекта, запустив этот copyfile команда ниже
Нажмите Load and Run, чтобы загрузить предварительно созданный поток битов и запустить модель на плате SoC.
copyfile(fullfile(matlabshared.supportpkg.getSupportPackageRoot,'toolbox','soc',... 'supportpackages','xilinxsoc','xilinxsocexamples','bitstreams',... 'soc_hwsw_interrupt_top-zedboard.bit'), './soc_prj');
После загрузки битового потока запустите сгенерированную модель программного обеспечения soc_hwsw_interrupt_sw во внешнем режиме. На панели инструментов модели откройте Инспектор данных и добавьте interruptTask1 в вид сверху и interruptTask2 в вид снизу. Обратите внимание, что при каждом вызове прерывания выполняется соответствующая задача.
Реализация на других платах: для реализации модели на поддерживаемой плате, отличной от ZedBoard, сначала сконфигурируйте модель на поддерживаемой плате, а затем задайте параметры примера, как показано ниже.
На вкладке Оборудование щелкните Параметры оборудования, чтобы открыть окно Параметры конфигурации.
На вкладке Hardware Implementation (Реализация аппаратного обеспечения) выберите системную плату из списка Hardware board в верхней части и модели процессора.
На вкладке Target hardware resources > FPGA design (top level) включите MATLAB в качестве AXI Master IP для взаимодействия с хостом и установите тактовую частоту ядра IP (МГц) равной 10 МГц.
Затем щелкните Настроить, Построить и развернуть на панели инструментов, чтобы открыть SoC Builder и выполнить действия, описанные выше для ZedBoard. Изменение copyfile для согласования битового потока, соответствующего вашей плате. В случае комплекта для разработки Altera Arria ® 10 SoC и комплекта для разработки Altera Cyclone ® V SoC используйте copyfile команду, соответствующую вашей плате. В случае комплекта для разработки Altera Arria ® 10 SoC скопируйте файлы «.periph.rbf» и «.core.rbf».
copyfile(fullfile(matlabshared.supportpkg.getSupportPackageRoot,'toolbox','soc',... 'supportpackages','intelsoc','intelsocexamples','bitstreams',... 'soc_hwsw_interrupt_top-c5soc.rbf'), './soc_prj');
Ниже приведены доступные предварительно созданные файлы битового потока:
«soc _ hwsw _ interrupt _ top-zc706.bit.»
«soc _ hwsw _ interrupt _ top-zedboard.bit.»
«soc _ hwsw _ interrupt _ top-zcu102.bit.»
'soc_hwsw_interrupt_top-XilinxZynqUltraScale_RFSoCZCU111EvaluationKit.bit'
«soc _ hwsw _ interrupt _ top-c5soc.rbf»
'soc _ hwsw _ interrupt _ top-a10soc.periph.rbf'
«soc _ hwsw _ interrupt _ top-a10soc.core.rbf»
Таким образом, в этом примере показано, как прерывания от действий триггера FPGA в процессоре. Вы смоделировали поведение с помощью SoC Blockset и прошли рабочий процесс, необходимый для его реализации на устройстве SoC.