Многоядерное программирование векторного управления на Zynq

Этот пример демонстрирует, как реализовать алгоритм управления, содержащий несколько скоростей на Zynq. Чтобы воспользоваться преимуществами как ядер, так и оборудования FPGA, в примере используется подход графического разбиения таким образом, чтобы код из различных разделов распределялся между ядрами и оборудованием.

Введение

В этом примере мы покажем рабочий процесс генерации кода для алгоритма управления двигателем и проверки сгенерированного кода на доске оценки Xilinx ® Zynq™-7000 SoC ZC702. Алгоритм управления двигателем в примере является векторным алгоритмом управления, состоящим из контроллера скорости (быстрый компонент) и контроллера крутящего момента (медленный компонент). Один из типичных рабочих процессов состоит в том, чтобы сгенерировать код для этих двух компонентов контроллера, загрузить сгенерированный код на плату оценки, а затем подключить плату оценки к реальному двигателю. Этот рабочий процесс проиллюстрирован на блоке ниже.

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

Пример предполагает, что плата оценки Xilinx ® Zynq™-7000 SoC ZC702 подключена к вашему компьютеру. Действия по подключению и установке можно найти в документации по установке поддержки платформы Xilinx Zynq (пакет поддержки Embedded Coder для платформы Xilinx Zynq).

В этом примере требуется Embedded Coder™ для генерации многопоточного кода, HDL- Coder™ для генерации HDL-кода и Simscape Power Systems™ для моделирования синхронной машины с постоянными магнитами в примере. Вы не можете сгенерировать HDL-код в системах Macintosh.

Пример модели

Пример модели состоит из двух областей Simulink. В области синхронной машины с постоянными магнитами существует два блока: блок «Входные параметры скорости и крутящего момента», который обеспечивает опорные входы для системы обратной связи и блок «Инвертор и двигатель», который является объектом, которым мы стремимся управлять в этом примере. Блок «Invertor and Motor» также содержит периферийные устройства: возможности, которая может использоваться для исследования результатов симуляции, и UDP-отправитель. Сгенерированный код для отправителя UDP отвечает за отправку данных моделирования с оценочной платы Zynq ZC702 на хост-машину. Векторное Управление содержит блоки контроллера «Контроллер Скорости» и «Контроллер крутящего момента». Чтобы загрузить модель, введите

slexFocZynqExample

Определение архитектуры

Целевой архитектурой в примере является набор для оценки ZC702 Xilinx Zynq. Это можно проверить, зайдя в диалоговое окно Параллельное выполнение.

На вкладке Моделирование выберите Настройки модели. В диалоговом окне Model Configuration Parameters, на вкладке Solver, выберите Allow tasks to surfacturly for target, а затем нажмите Configure Tasks.

Плата оценки имеет ARM Cortex-A9 CPU и программируемую полем массив вентилей (FPGA). На центральном процессоре ARM выполняются две задачи. «контроллер крутящего момента» преобразуется в первую задачу, и блоки, образующие объект (блок «Входные параметры скорости и крутящего момента» и «Инвертор и двигатель»), преобразуются во вторую задачу. «Скорость контроллера», которая работает на высокой частоте в цикл управления, сопоставлена с FPGA. Эти настройки можно изменить в разделе «Задачи и отображение» диалогового окна «Параллельное выполнение».

Сгенерируйте многопоточный и HDL код

Введите Ctrl-B или выберите Deploy to Hardware, чтобы сгенерировать многопоточный и HDL-код. Сгенерированный исполняемый файл и битовый поток FPGA будут автоматически загружены на плату Zynq. Этот шаг требует подключения платы Zynq к компьютеру и правильной настройки окружения. Для получения дополнительной информации см. раздел «Установка поддержки платформы Xilinx Zynq (Пакет поддержки Embedded Coder для платформы Xilinx Zynq)».

Получение данных из Zynq

Откройте возможности, выбрав View Simulation Results, и запустите симуляцию, чтобы получить следующий выход:

Сравните этот вывод симуляции с выходом исполняемого файла, который запускается на ZC702 плате Zynq. Чтобы порядком сделать это сравнение, получите доступ к модели приемника UDP, выбрав View Deployment Результатов. Когда выбрана модель приемника UDP, запустите симуляцию. Команда run отправит сигнал на плату ZC702 Zynq, чтобы начать выполнение исполняемого файла на плате. Данные моделирования будут отправлены через UDP с платы ZC702 Zynq на хост-машину. Захваченный сигнал UDP отображается на возможностях модели UDP Receiver.

Закройте модель

close_system('slexFocZynqExample', 0);