Эти инструкции иллюстрируют рекомендуемые настройки при использовании графиков Stateflow® в вашей модели. Блок Stateflow Chart доступен в библиотеке блоков Stateflow. При помощи диаграмм Stateflow можно смоделировать задержки модели Simulink®.
Каждая инструкция имеет уровень серьезности, который указывает на уровень требований податливости. Чтобы узнать больше, смотрите Уровни серьезности Руководств по моделированию HDL.
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
графики ограничивают гибкость в определении изменений состояния.
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.
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.
2.9.4
Обязательный
В Stateflow временная логика управляет выполнением графика в терминах времени. Можно использовать два типа временной логики: основанный на событии и абсолютно-разовый. Основанная на событии временная логика отслеживает повторяющиеся события. Абсолютно-разовая временная логика задает периоды времени на основе времени симуляции вашего графика. Чтобы работать с этими повторяющимися событиями или временем симуляции, вы используете названные временные логические операторы встроенных функций.
Можно использовать временные логические операторы, такие как after
, before
, и every
реализовывать счетчики, такие как счетчик тайм-аута. Для генерации HDL-кода используйте основанные на событии временные логические операторы. Задайте время при помощи неявного tick
событие. Генерация HDL-кода не поддерживает абсолютно-разовую временную логику.
См. также Шаблоны разработки, использующие Усовершенствованные Функции Графика и Выполнение Диаграммы управления при помощи Временной Логики (Stateflow).