Прототип Проекта FPGA на оборудовании с Live Данных при помощи команд MATLAB

В этом примере показов, как использовать MATLAB для прототипа алгоритма, выполняемого на оборудовании FPGA из вашего хоста-компьютера.

Введение

На многих этапах процесса проекта может быть полезно взаимодействовать с проектом FPGA, которая работает непосредственно на оборудовании. Работа с оборудованием позволяет вам быстрому прототипированию проектов, проверять функциональность, настраивать ключевые параметры, подключаться к сигналам реального мира, собирать данные для анализа и многое другое.

В этом примере показано, как подключить MATLAB на вашем хосте-компьютере к оборудованию FPGA. Используйте MATLAB для:

  • Запишите входные сигналы в свой алгоритм FPGA.

  • Захват выходных сигналов от FPGA для анализа.

  • Читайте и записывайте в регистры в проекте FPGA.

В рамках этого примера вы:

  1. Сгенерируйте и разверните простой алгоритм на оборудовании.

  2. Создайте объект оборудования, чтобы установить соединение с FPGA.

  3. Используйте простой скрипт, чтобы прототипировать проект, работающий на оборудовании с живыми данными.

Прежде чем вы начнете

Чтобы запустить этот пример, установите и настройте:

Архитектура системы

На предыдущем изображении показана архитектура системы высокого уровня. Этот хост-компьютер сообщается с FPGA через систему обработки на плате System on Chip (SoC). Хост-компьютер может отправлять и принимать системы координат данных, которые преобразуются в и из потоковых данных IP-адресами прямого доступа к памяти (DMA). Хост-компьютер может также настроить параметры путем записи в AXI4-Lite регистры в IP-ядре алгоритма.

Алгоритм FPGA

Алгоритм, развернутый в FPGA, является простым алгоритмом потоковой передачи, который масштабирует амплитуду входного сигнала на константу. Потоковые данные моделируются данными и допустимыми сигналами. Амплитудный сигнал моделируется как константа.

Откройте модель. Модель состоит из тестируемого проекта (DUT) и тестового набора. DUT содержит алгоритм, который развертывается в FPGA. Testbench выполняет DUT во время симуляции, предоставляя входы и захватывая выходы для отображения.

open_system hdlcoder_scale_amplitude.slx

Сгенерируйте IP-ядро HDL

Чтобы сгенерировать ядро IP из DUT с помощью HDL Workflow Advisor:

1. Настройте путь инструмента синтеза Xilinx Vivado с помощью следующей команды в Командном Окне MATLAB. Используйте собственный путь установки Vivado при запуске команды.

hdlsetuptoolpath('ToolName', 'Xilinx Vivado', 'ToolPath', 'C:\Xilinx\Vivado\2020.1\bin\vivado.bat');

2. Откройте приложение HDL Coder toolstrip из приложения > HDL Coder. Щелкните значок панели инструментов, чтобы открыть Workflow Advisor.

3. В задаче Set Target Device and Synthesis Инструмента выберите IP Core Генерации для Target рабочего процесса и ZedBoard для целевой платформы. Если вы ориентируетесь на другой СОС Xilinx, выберите плату из контекстного меню Целевая платформа.

Щелкните Запустить эту задачу.

4. В задаче Set Target Reference Design выберите Default System with AXI4-Stream interface для Исходный Проект.

Щелкните Запустить эту задачу.

5. В задаче Set Target Interface порты подсистемы DUT сопоставлены с интерфейсами IP Core. Входные данные и допустимые порты сопоставлены с AXI4-Stream Slave. Данные выходы и допустимые порты сопоставлены с Master AXI4-Stream. Амплитудный сигнал преобразуется в AXI4-Lite.

Щелкните Запустить эту задачу.

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

Сгенерируйте интерфейс между Хостом-компьютером и IP-ядром

Чтобы сгенерировать хост-компьютер интерфейс к IP-ядру и развернуть проект на целевой компьютер плате:

1. Запустите задачу Create Project. Эта задача вставляет сгенерированное ядро IP для алгоритма FPGA в исходный проект, чтобы создать систему, показанную на схеме System Architecture.

2. В задаче Generate Software Interface установите флажок для скрипта Generate MATLAB software interface, а затем запустите эту задачу.

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

4. Смотрите эти сгенерированные файлы в Взаимодействии с FPGA Design от хоста-компьютера. Сначала выполните оставшиеся задачи Workflow Advisor. Выполните задачу Build FPGA Bitstream, которая может занять некоторое время.

5. Запустите задачу Program Target Device, чтобы запрограммировать алгоритм FPGA на плату. Выберите метод программирования загрузки, который загружает битовый поток FPGA на карту SD и конфигурирует систему обработки ARM для правильного запуска.

Взаимодействие с FPGA Проекта из Хоста-компьютера

Взаимодействуйте со проектом FPGA путем чтения и записи данных из MATLAB на хост-компьютер.

Откройте сгенерированный файл скрипта:

open gs_hdlcoder_scale_amplitude_interface.m

Этот файл создает соединение с оборудованием FPGA для чтения и записи данных.

  1. Создает аппаратный объект «fpga», представляющий соединение с FPGA на вашей аппаратной плате.

  2. Конфигурирует объект «fpga» с желаемыми аппаратными интерфейсами и портами от вашего алгоритма DUT.

  3. Считывает и записывает данные в порты DUT, чтобы выполнить алгоритм, выполняемый на оборудовании.

  4. Освобождает все аппаратные ресурсы, используемые fpga объект для очистки соединения.

Откройте сгенерированную функцию настройки:

open gs_hdlcoder_scale_amplitude_interface.m

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

Можно изменить сгенерированный файл скрипта, чтобы использовать алгоритм, работающий на оборудовании. Подготовлен live скрипт, который можно открыть, запустив эту команду:

open hdlcoder_scale_amplitude_script.mlx

Измените значение ползунка и наблюдайте, как изменяются выходные данные (оранжевый) в графике под ним. Когда ползунок перемещается, код под ним выполняется. Каждое выполнение кода:

  • Записывает новое значение амплитуды из ползунка в регистр AXI в ядре IP.

  • Записывает одну систему координат входного сигнала.

  • Считывает одну систему координат выхода сигнала.

  • Строит графики входных и выходных сигналов на том же графике, чтобы показать различие в амплитуде.

Когда закончите, запустите последнюю линию скрипта, чтобы освободить все аппаратные ресурсы, используемые fpga объект для очистки:

release(hFPGA);

Следующие шаги

Экспериментируйте далее с сгенерированным скриптом:

  • Измените функцию MATLAB, используемую для получения данных входного сигнала на линии 7 live скрипта. Некоторые другие функции, которые нужно попробовать, это cos, квадратный и пилообразный.

  • Используйте App Designer, чтобы создать пользовательское приложение с командами из этого скрипта. Добавьте компоненты пользовательского интерфейса (UI) для взаимодействия с алгоритмом, когда он запускается на оборудовании.

  • Следуйте шагам из этого примера с вашей собственной моделью. Используйте сгенерированный скрипт, чтобы прототипировать алгоритм на оборудовании.