Программирование FPGA и настройка

В этом примере показано, как реализовать алгоритм Simulink® на плате ввода-вывода FPGA Speedgoat при помощи HDL Workflow Advisor к:

  1. Задайте плату FPGA и ее интерфейс I/O.

  2. Синтезируйте алгоритм Simulink для программирования FPGA.

  3. Сгенерируйте модель подсистемы интерфейса Simulink® Real-Time™.

Интерфейсная модель подсистемы содержит блоки, чтобы программировать FPGA и связаться с платой ввода-вывода FPGA во время выполнения приложения реального времени. Вы добавляете сгенерированную подсистему в свою модель предметной области Simulink Real-Time.

Целый рабочий процесс выглядит так фигура.

Этот пример использует Speedgoat IO331. Можно использовать любой модуль ввода-вывода FPGA, поддержанный Simulink Real-Time и HDL Coder, который встречает скорости, размеру и требованиям схемы контактов модели.

Требования и предусловия

HDL Coder™

Прежде чем вы запустите, завершите план подсистемы FPGA.

Для платы IO331 HDL Workflow Advisor требует комплекта инструментальных средств Xilinx® ISE. Чтобы установить этот комплект инструментальных средств, в Командном окне, введите:

hdlsetuptoolpath('ToolName', 'Xilinx ISE', 'ToolPath', toolpath)

где toolpath полный путь к исполняемому файлу инструмента синтеза.

Для требований комплекта инструментальных средств других плат смотрите Поддерживаемые Сторонние программы и Оборудование (HDL Coder).

Шаг 1. Модель предметной области Simulink

Модель предметной области FPGA Simulink содержит подсистему (алгоритм), который будет запрограммирован на чип FPGA. Используя эту модель, можно протестировать алгоритм FPGA в среде симуляции, прежде чем вы загрузите алгоритм на плату FPGA.

  1. Создайте модель Simulink, которая содержит алгоритм, который вы хотите загрузить на FPGA, в этом случае петлевой тест.

  2. Поместите алгоритм, который будет запрограммирован на FPGA в блоке Subsystem. Модель может включать другие блоки и подсистемы для тестирования. Однако одна подсистема должна содержать алгоритм FPGA.

  3. Установите или подтвердите импорт подсистемы и имена выходного порта и типы данных. HDL Workflow Advisor HDL Coder использует эти настройки в маршрутизации и отображении сигналов алгоритма к каналам коннектора ввода-вывода.

  4. Сохраните модель.

Эта модель является вашей моделью предметной области FPGA. Это представляет частоту дискретизации симуляции часов на вашей плате FPGA. Например, Speedgoat IO331 имеет встроенные часы на 125 МГц. Одна секунда симуляции равняется 125e6 итерации модели.

Для примера модели предметной области FPGA смотрите dslrtSGFPGAloopback_fpga. ServoSystem подсистема содержит алгоритм FPGA.

Шаг 2. Целевая настройка FPGA

Эта процедура использует dslrtSGFPGAloopback_fpga пример. Вы, должно быть, уже создали подсистему FPGA (алгоритм) в модели предметной области FPGA и разработали план подсистемы FPGA.

  1. Откройте модель предметной области FPGA dslrtSGFPGAloopback_fpga.

  2. В модели FPGA щелкните правой кнопкой по подсистеме FPGA (ServoSystem). Из контекстного меню выберите HDL Code> HDL Workflow Advisor. Диалоговое окно HDL Workflow Advisor отображается несколько задач для подсистемы. Обратитесь только к своему необходимому подмножеству задач.

  3. Расширьте папку Set Target и выберите задачу 1.1 Инструмента Целевого устройства и Синтеза Набора.

  4. Установите целевой рабочий процесс на Simulink Real-Time FPGA I/O.

  5. Из списка Целевых платформ выберите плату ввода-вывода FPGA Speedgoat, установленную в вашей целевой машине Speedgoat, в этом случае Speedgoat IO331. Проверяйте, что HDL Workflow Advisor устанавливает инструмент синтеза на Xilinx® ISE Design Suite.

  6. Нажмите Run This Task.

Шаг 3. Цель FPGA соединяет интерфейсом с настройкой

Вы, должно быть, уже сконфигурировали цель FPGA.

  1. В папке Set Target выберите задачу 1.2 Целевых Интерфейса Набора.

  2. В поле синхронизации Процессора/FPGA выберите Free running.

  3. Для сигналов hwIn и hwOut, в столбце Интерфейсов Целевой платформы выберите LVCMOS I/O Channel [0:63]. В Битном столбце Контакта Области значений/¦дреса/FPGA введите значение канала для каждого сигнала или возьмите значения по умолчанию.

  4. Для сигналов pciRead и pciWrite, в столбце Интерфейсов Целевой платформы выберите PCI Interface. В Битном столбце Контакта Области значений/¦дреса/FPGA используйте автоматически сгенерированные значения. Не вводите значения адреса PCI.

  5. Нажмите Run This Task.

Шаг 4. Целевая настройка частоты FPGA

Вы, должно быть, уже сконфигурировали целевой интерфейс FPGA.

  1. В папке Set Target выберите задачу 1.3 Целевых (дополнительные) Частоты Набора. Целевая панель Частоты Набора содержит поля, показывающие (зафиксированную) частоту часов входа FPGA и частоту системных часов FPGA. Значения по умолчанию частоты системных часов FPGA к входу FPGA синхронизируют частоту.

  2. Задавать различную частоту системных часов (например, 50 МГц), вводят новое значение в частоте системных часов поля FPGA (МГц). Для разрешенной области значений для уровня системных часов смотрите таблицу характеристик платы Speedgoat. Система иногда устанавливает значение, отличающееся от того, которое вы задали.

  3. Нажмите Run This Task.

Шаг 5. Генерация подсистемы интерфейса Simulink Real-Time

Эта процедура генерирует интерфейсный файл подсистемы для dxpcSGFPGAloopback_fpga примера.

Присвойте отличные имена к блокам, которые содержат различный HDL-код. Имя интерфейсного файла подсистемы выведено непосредственно из имени блока. Если два блока, содержащие различный HDL-код, имеют то же имя, имена сталкиваются, и один из блоков получает неправильный код.

Вы, должно быть, уже сконфигурировали целевой интерфейс FPGA и необходимую целевую частоту. Если вы задали векторный импорт или выходные порты, вы, должно быть, уже установили флажок портов вектора Scalarize. Этот флажок находится на вкладке Стиля кодирования Глобальных Настроек узла под генерацией HDL-кода узла в диалоговом окне Configuration Parameters.

  1. Расширьте папку Download to Target и щелкните правой кнопкой по задаче 5.2, Генерируют Интерфейс Simulink Real-Time.

  2. В этой панели нажмите Run To Selected Task.

Это действие:

  • Запускает остающиеся задачи.

  • Создает файл потока битов FPGA в hdlsrc папка. Подсистема интерфейса Simulink Real-Time ссылается на этот файл потока битов во время процесса загрузки и сборки.

  • Генерирует модель под названием gm_dslrtSGFPGAloopback_fpga_slrt, который содержит подсистему интерфейса Simulink Real-Time.

Вот пример HDL Workflow Advisor HDL Coder после этого действия.

Сгенерированная интерфейсная подсистема выглядит так фигура.

Эта сгенерированная модель содержит подсистему маскированную с тем же именем как подсистема в модели предметной области FPGA Simulink. Несмотря на то, что внешний вид подобен, эта подсистема не содержит алгоритм Simulink. Вместо этого алгоритм реализован в потоке битов FPGA. Вы ссылаетесь и загружаете этот алгоритм в FPGA от этой подсистемы.

Шаг 6. Модель предметной области Simulink Real-Time

Используя программное обеспечение Simulink Real-Time, преобразуйте Simulink или модель предметной области Stateflow® в модель предметной области Simulink Real-Time и выполните его на целевой машине Speedgoat для приложений тестирования в реальном времени. После создания подсистемы интерфейса Speedgoat FPGA. Можно затем включать плату FPGA в модель предметной области Simulink Real-Time путем вставки интерфейсной подсистемы.

  1. Создайте модель предметной области Simulink Real-Time с функциональностью, которую вы хотите симулировать с алгоритмом FPGA. Оставьте импорт и выходные порты подсистемы FPGA отключенными.

  2. Сохраните модель.

Модель предметной области Simulink Real-Time выглядит так фигура. См. модель dslrtSGFPGAloopback_slrt в качестве примера.

Шаг 7. Интегрирование подсистемы интерфейса Simulink Real-Time

В маске подсистемы интерфейса Simulink Real-Time, установленной три параметра:

  • Индекс устройства

  • Паз PCI

  • 'SampleTime'

Интегрировать интерфейсную подсистему:

  1. В редакторе Simulink откройте gm_dslrtSGFPGAloopback_fpga_slrt.

  2. Скопируйте подсистему интерфейса Simulink Real-Time и вставьте ее в модель предметной области Simulink Real-Time.

  3. Сохраните или отбросьте gm_dslrtSGFPGAloopback_fpga_slrt. Можно воссоздать его как требуется использование HDL Workflow Advisor HDL Coder.

  4. В модели предметной области соедините сигналы с импортом и выходными портами интерфейсной подсистемы.

  5. Установите параметры блоков согласно платам ввода-вывода FPGA в вашей целевой машине Speedgoat.

  • Если вы имеете одну плату ввода-вывода FPGA, оставляете индекс устройства и паз PCI в значениях по умолчанию. Можно установить шаг расчета или оставить его в –1 для наследования.

  • Если вы имеете несколько плат ввода-вывода FPGA, даете каждой плате уникальный индекс устройства.

  • Если вы имеете две или больше платы того же типа (например, две платы Speedgoat IO331), задаете паз PCI ([шина, паз]) для каждой платы. Получите эту информацию с функцией SimulinkRealTime.target.getPCIInfo.

6 Сохраняют модель.

Обновленная модель предметной области Simulink Real-Time выглядит так фигура. См. модель dslrtSGFPGAloopback_slrt_wiss в качестве примера.

Шаг 8. Выполнение приложения реального времени

Чтобы сделать эту процедуру, вы, должно быть, уже создали модель предметной области Simulink Real-Time, которая включает подсистему интерфейса Simulink Real-Time, сгенерированную от HDL Workflow Advisor HDL Coder.

  1. Сконфигурируйте целевую машину Speedgoat и соедините ее с компьютером разработчика.

  2. Создайте и загрузите приложение Simulink Real-Time. Приложение реального времени загружает на целевую машину Speedgoat и загрузки потока битов алгоритма FPGA на FPGA.

  3. Если вы используете линии ввода-вывода (каналы), подтвердите, что вы соединили линии с внешним оборудованием под тестом.

Запуск и остановка модели Simulink Real-Time управляют запуском и остановкой алгоритма FPGA. Алгоритм FPGA выполняется на частоте часов FPGA I/O плата, в то время как приложение реального времени выполняется в соответствии с шагом расчета модели.

Похожие темы