Инструкции для генерации 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 конечный автомат, в свойствах Chart (Stateflow), задает State Machine Type. Не используйте Classic потому что это влияет на удобочитаемость сгенерированного HDL-кода. Выберите State Machine Type в зависимости от того, как вы хотите, чтобы семантика Stateflow сопоставила с аппаратной реализацией. Смотрите Аппаратную Реализацию Семантики Stateflow.

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

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

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

ID инструкции

2.9.2

Серьезность

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

Описание

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

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

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

График Мура

  • Если вы отключаете Initialize Outputs Every Time Chart Wakes Up, сгенерированный HDL-код включает дополнительные регистры выходных значений конечного автомата.

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

Диаграмма Мили

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

  • Если вы отключаете Initialize Outputs Every Time Chart Wakes Up, сгенерированный HDL-код включает дополнительные регистры выходных значений конечного автомата.

  • Отключите 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.

Настройки типа данных и бросающий в диаграмме Stateflow для генерации HDL-кода

ID инструкции

2.9.4

Серьезность

Информативный

Описание

Когда вы явным образом не задаете тип данных переменных состояния и выходных переменных в диаграмме Stateflow, которая имеет MATLAB как Язык Действия, тип данных становится двойным. Если переменные, которые имеют различные типы данных, присвоены этим переменным Chart, неверный тип данных может произойти, который может привести к ошибкам симуляции.

Чтобы избежать ошибок симуляции, явным образом инициализируйте тип данных переменных Chart при помощи объектов fi или задайте их тип данных в Model Explorer. При выполнении присвоений на переменные различных типов можно выполнить преобразование типа данных и инициализацию при помощи объектов fi.

Когда это необходимо, чтобы изменить fi тип данных, необходимо задать размеры слова и дробные длины для типов. Для частых преобразований типа данных можно вместо этого бросить тип к fi типам данных при помощи индекса (:). В этом случае можно заменить преобразования типа данных на бросок индексом (:) в Model Explorer. Значение источника замены затем преобразовано в тип в ту из целевой переменной замены.

Примечание: Для присвоений на промежуточные переменные, вы не должны бросать тип данных.

Для примера, который показывает методы инициализации другого типа данных, откройте модель hdlcoder_chart_datatype_casting.

open_system('hdlcoder_chart_datatype_casting')
set_param('hdlcoder_chart_datatype_casting', 'SimulationCommand', 'Update')

DUT подсистема содержит график Мура, который показывает как выходные переменные out1 и out2 и внутренняя переменная var1 заданы. out1 тип явным образом задан при помощи объекта fi и out2 и var1 типы заданы в Model Explorer.

open_system('hdlcoder_chart_datatype_casting/DUT/Chart')

Сгенерировать HDL-код для DUT подсистема, запустите makehdl функция.

makehdl('hdlcoder_chart_datatype_casting/DUT')

Используя абсолютное время временная логика в диаграммах Stateflow

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

Для частоты дискретизации графика:

  • Если вы используете секунды (секунда), то шаг расчета должен быть целым числом 65535 или ниже, или десятичное число между 65,535 и 0.001 больше чем без трех десятичных разрядов.

  • Если вы используете миллисекунды (msec), шаг расчета должен быть десятичным числом между 65,535 и 0.001 больше чем без трех десятичных разрядов или десятичного числа между 0,065535 и 0.000001 больше чем без шести десятичных разрядов.

  • Если вы используете микросекунды (мкс), шаг расчета должен быть десятичным числом между 0,065535 и 0.000001 больше чем без шести десятичных разрядов или десятичного числа между 0,000065535 и 0.000000001 больше чем без девяти десятичных разрядов.

  • Если шаг расчета является целым числом ниже 2^16, то используйте 'sec'.

  • Если 1000 * шаг расчета является целым числом ниже 2^16, то используйте 'sec' или 'msec'.

  • Если 1000000 * шаг расчета является целым числом ниже 2^16, то используйте 'msec' или 'usec'.

  • Если 1000000000 * шаг расчета является целым числом ниже 2^16, то используйте 'usec'.

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

Функции

Похожие темы