Инструкции для генерации HDL-кода Используя диаграммы Stateflow

Эти инструкции иллюстрируют рекомендуемые настройки при использовании графиков Stateflow® в вашей модели. Блок Stateflow Chart доступен в библиотеке блоков Stateflow. При помощи диаграмм Stateflow можно смоделировать задержки модели Simulink®.

Каждая инструкция имеет уровень серьезности, который указывает на уровень требований податливости. Чтобы узнать больше, смотрите Уровни серьезности Руководств по моделированию HDL.

Выберите State Machine Type based on HDL Implementation Requirements

ID инструкции

2.9.1

Серьезность

Строго рекомендуемый

Описание

HDL Coder™ поддерживает генерацию кода для диаграмм Stateflow Мура и Мучнистого. Не используйте блоки MATLAB Function, чтобы смоделировать любой Mealy или Moore конечный автомат.

Задавать, хотите ли вы Mealy или Moore конечный автомат, в Свойствах диаграммы, задает State Machine Type. Не используйте Classic потому что это влияет на удобочитаемость сгенерированного HDL-кода. Выберите State Machine Type в зависимости от того, как вы хотите, чтобы семантика Stateflow сопоставила с аппаратной реализацией. Смотрите Аппаратную Реализацию Семантики Stateflow.

Когда вы используете Mealy графики, выходные параметры зависят от текущего состояния и входных параметров. При помощи Mealy графики, можно более легко задать изменения состояния, который делает эти графики более гибкими, чтобы использовать. Сгенерированный HDL-код от Mealy графики могут быть менее читаемыми.

Для Moore графики, выходные параметры зависят только от текущего состояния. Сгенерированный HDL-код от Moore графики более читаемы. Moore графики ограничивают гибкость в определении изменений состояния.

Задайте параметры конфигурации блока диаграммы Stateflow

ID инструкции

2.9.2

Серьезность

Строго рекомендуемый

Описание

Когда вы будете использовать блоки диаграммы Stateflow в своей модели для генерации HDL-кода, используйте эти рекомендуемые настройки:

  • Для Action Language используйте MATLAB

  • Для Update method используйте Discrete или Inherited. Не используйте Continuous.

График Мура

  • Включите Initialize Outputs Every Time Chart Wakes Up

  • Отключите Support Variable-Size Arrays

  • Отключите Support Variable-Size Arrays

Мучнистый график

  • Включите Execute (Enter) Chart at Initialization

  • Включите Initialize Outputs Every Time Chart Wakes Up

  • Отключите Enable Super Step Semantics

  • Отключите Support Variable-Size Arrays

Чтобы убедиться, что эти настройки заданы для Chart Stateflow, можно осуществить Проверку проверки на настройки диаграммы Stateflow.

Вставьте безусловное переходное состояние для еще оператора в HDL-коде

ID инструкции

2.9.3

Серьезность

Рекомендуемый

Описание

Когда вы используете графики Stateflow® в генерации HDL-кода, вставляете безусловные состояния в график. HDL-код, сгенерированный для такого графика еще, содержит ветвь с оператором if. Присутствие еще ветвь препятствует тому, чтобы сторонняя программа вывела фиксатор, когда вы развертываете HDL-код. Например, откройте модель hdlcoder_chart_ifnelsecond.

open_system('hdlcoder_chart_ifnelsecond')
set_param('hdlcoder_chart_ifnelsecond', 'SimulationCommand', 'Update')
open_system('hdlcoder_chart_ifnelsecond/dut_chart')

Модель содержит два Stateflow Графики Мура. График onlyif_chart реализует простое условие что выходные параметры out1 на основе in1.

open_system('hdlcoder_chart_ifnelsecond/dut_chart/onlyif_chart')

Блок Chart ifnelse_chart совпадает с onlyif_chart и имеет безусловное переходное состояние.

open_system('hdlcoder_chart_ifnelsecond/dut_chart/ifnelse_chart')

Чтобы сгенерировать HDL-код для DUT, запустите эту команду:

makehdl('hdlcoder_chart_ifnelsecond/dut_chart')

HDL-код сгенерирован для onlyif_chart еще не содержит условие. Не развертывайте этот код в целевое устройство, потому что инструменты синтеза могут вывести фиксатор.

HDL-код сгенерирован для ifnelse_chart еще содержит оператор для безусловного переходного состояния. Этот код рекомендуется для развертывания на целевом устройстве FPGA.

Избегайте абсолютного времени для временной логики

ID инструкции

2.9.4

Серьезность

Обязательный

Описание

В Stateflow временная логика управляет выполнением графика в терминах времени. Можно использовать два типа временной логики: основанный на событии и абсолютно-разовый. Основанная на событии временная логика отслеживает повторяющиеся события. Абсолютно-разовая временная логика задает периоды времени на основе времени симуляции вашего графика. Чтобы работать с этими повторяющимися событиями или временем симуляции, вы используете названные временные логические операторы встроенных функций.

Можно использовать временные логические операторы, такие как after, before, и every реализовывать счетчики, такие как счетчик тайм-аута. Для генерации HDL-кода используйте основанные на событии временные логические операторы. Задайте время при помощи неявного tick событие. Генерация HDL-кода не поддерживает абсолютно-разовую временную логику.

См. также Шаблоны разработки, использующие Усовершенствованные Функции Графика и Выполнение Диаграммы управления при помощи Временной Логики (Stateflow).

Смотрите также

Функции

Похожие темы