В этом примере показано, как использовать MATLAB для прототипирования алгоритма, выполняемого на оборудовании FPGA с компьютера.
На многих этапах процесса конструирования может быть полезно взаимодействовать с конструкцией FPGA, работающей непосредственно на оборудовании. Работа с оборудованием позволяет быстро создавать прототипы, проверять функциональность, настраивать ключевые параметры, подключаться к реальным сигналам, собирать данные для анализа и многое другое.
В этом примере показано, как подключить MATLAB на хост-компьютере к оборудованию FPGA. Используйте MATLAB для:
Запишите входные сигналы в алгоритм FPGA.
Сбор выходных сигналов от FPGA для анализа.
Чтение из и запись в регистры в конструкции FPGA.
В этом примере показано следующее:
Создание и развертывание простого алгоритма на оборудовании.
Создайте аппаратный объект для подключения к FPGA.
Используйте простой скрипт для прототипирования конструкции, выполняемой на оборудовании с живыми данными.
Чтобы запустить этот пример, установите и настройте:
Пакет поддержки кодера HDL для платформы Xilinx Zynq
Xilinx Vivado (версия указана в документе Поддерживаемые сторонние инструменты и оборудование)
Плата SoC Xilinx. В этом примере используется плата ZedBoard.
Образ микропрограммного обеспечения MathWorks на карте SD платы. Для получения справки по настройке карты SD см. раздел Настройка управляемой карты SD (пакет поддержки кодера HDL для платформы Xilinx Zynq).

На предыдущем рисунке показана высокоуровневая архитектура системы. Главный компьютер взаимодействует с FPGA через систему обработки на плате SoC. Хост-компьютер может отправлять и принимать кадры данных, которые преобразуются в потоковые данные и из них IP прямого доступа к памяти (DMA). Хост-компьютер также может настраивать параметры путем записи в AXI4-Lite регистры в ядре IP алгоритма.
Алгоритм, развернутый на FPGA, представляет собой простой потоковый алгоритм, который масштабирует амплитуду входного сигнала на константу. Потоковые данные моделируются данными и действительными сигналами. Амплитудный сигнал моделируется как константа.
Откройте модель. Модель состоит из тестируемого проекта (DUT) и испытательного стенда. DUT содержит алгоритм, развернутый в FPGA. Testbench выполняет DUT во время моделирования, предоставляя входы и захватывая выходы для отображения.
open_system hdlcoder_scale_amplitude.slx
Чтобы создать ядро IP из DUT с помощью помощника по рабочим процессам HDL, выполните следующие действия.
1. Настройте траекторию инструмента синтеза Xilinx Vivado с помощью следующей команды в окне команд MATLAB. При выполнении команды используйте собственный путь установки Vivado.
hdlsetuptoolpath('ToolName', 'Xilinx Vivado', 'ToolPath', 'C:\Xilinx\Vivado\2020.1\bin\vivado.bat');
2. Откройте приложение инструментов Кодер HDL из Приложения > Кодер HDL. Щелкните значок панели инструментов, чтобы открыть помощник по рабочим процессам.

3. В задаче Set Target Device and Synthesis Tool выберите рабочий процесс IP Core Generation for Target и ZedBoard for Target platform. Если вы нацелены на другую SoC Xilinx, выберите свою плату в контекстном меню Целевой платформы.
Щелкните Выполнить эту задачу.

4. В задаче Задать целевое ссылочное проектирование (Set Target Reference Design) выберите Система по умолчанию (Default System) с AXI4-Stream интерфейсом для ссылочного проектирования.
Щелкните Выполнить эту задачу.

5. В задаче Set Target Interface порты подсистемы DUT сопоставляются с базовыми интерфейсами IP. Входные данные и действительные порты нанесены на карту Рабу AXI4-потока. Выходные данные и допустимые порты сопоставляются с AXI4-Stream Master. Амплитудный сигнал отображается в AXI4-Lite.
Щелкните Выполнить эту задачу.

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

Чтобы создать интерфейс хост-компьютера с ядром IP и развернуть проект на целевой аппаратной плате:
1. Запустите задачу Создать проект. Эта задача вставляет сгенерированное ядро IP для алгоритма FPGA в эталонную конструкцию для создания системы, показанной на диаграмме архитектуры системы.
2. В задаче Создать программный интерфейс установите флажок Создать сценарий программного интерфейса MATLAB, а затем запустите эту задачу.

3. В текущей папке создаются два файла MATLAB, которые позволяют создать прототип созданного IP-ядра непосредственно из MATLAB.

4. Проверьте эти созданные файлы в приложении Interact with FPGA Design с хост-компьютера. Сначала выполните оставшиеся задачи помощника по рабочим процессам. Запустите задачу создания Bitstream FPGA, которая может занять некоторое время.
5. Запустите задачу Program Target Device для программирования алгоритма FPGA на плате. Выберите метод программирования Download, который загружает битовый поток FPGA на карту SD и настраивает систему обработки ARM для правильного запуска.

Взаимодействие с конструкцией FPGA путем считывания и записи данных из MATLAB на хост-компьютере.
Откройте созданный файл сценария:
open gs_hdlcoder_scale_amplitude_interface.m
Этот файл создает подключение к оборудованию FPGA для чтения и записи данных.
Создает аппаратный объект «fpga», представляющий соединение с FPGA на аппаратной плате.
Настройка объекта «fpga» с требуемыми аппаратными интерфейсами и портами из алгоритма DUT.
Считывает и записывает данные в порты DUT для выполнения алгоритма на оборудовании.
Освобождает все аппаратные ресурсы, используемые fpga объект для очистки соединения.

Откройте созданную функцию настройки:
open gs_hdlcoder_scale_amplitude_interface.m
Эта функция конфигурирует fpga аппаратный объект с теми же портами и интерфейсами, которые были сопоставлены в задаче Set Target Interface. Эту функцию можно повторно использовать в собственных сценариях для повторного создания этой конфигурации.

Сгенерированный файл сценария можно изменить для выполнения алгоритма, выполняемого на оборудовании. Был подготовлен сценарий, который можно открыть, выполнив следующую команду:
open hdlcoder_scale_amplitude_script.mlxИзмените значение ползунка и посмотрите, как изменяются выходные данные (оранжевые) на графике под ним. По мере перемещения ползунка выполняется код под ним. Каждое выполнение кода:
Записывает новое значение амплитуды из ползунка в регистр AXI в ядре IP.
Записывает один кадр входного сигнала.
Считывает один кадр выходного сигнала.
Строит график входных и выходных сигналов на одном графике, чтобы показать разность амплитуд.

По завершении запустите последнюю строку сценария, чтобы освободить все аппаратные ресурсы, используемые fpga объект для очистки:
release(hFPGA);
Поэкспериментируйте с созданным сценарием:
Измените функцию MATLAB, используемую для получения данных входного сигнала в строке 7 сценария в реальном времени. Некоторые другие функции, которые нужно попробовать, это cos, square и пиловочник.
Используйте App Designer для создания пользовательского приложения с командами из этого сценария. Добавьте компоненты пользовательского интерфейса (UI) для взаимодействия с алгоритмом во время его работы на оборудовании.
Выполните шаги из этого примера с собственной моделью. Используйте созданный сценарий для прототипирования алгоритма на оборудовании.