Реализуйте управляющую логику с конечным автоматом (HDL Coder)
Блок Chart доступен с Stateflow®.
Для получения информации о поведении симуляции и параметрах блоков, см. График.
Можно использовать настраиваемый параметр в диаграмме Stateflow, предназначенной для генерации HDL-кода.
Для получения дополнительной информации смотрите, Генерируют Порты DUT для Настраиваемых параметров.
Этот блок имеет одну, архитектуру HDL по умолчанию.
Чтобы сгенерировать выходной порт в HDL-коде, который показывает активное состояние, выберите Create output port for monitoring в Окне свойств графика. Вывод является перечислимым типом данных. Смотрите Упрощают диаграммы Stateflow путем Слияния Активного Вывода состояния (Stateflow).
Если вы хотите вставить выходной регистр, который задерживает график, выведенный циклом симуляции, используйте свойство блока OutputPipeline.
Каноническая цифра со знаком (CSD) или учтенная оптимизация CSD. Значением по умолчанию является none
. См. также ConstMultiplierOptimization.
Количество регистров, чтобы поместить при выходных параметрах путем перемещения существующих задержек в рамках проекта. Распределенная конвейеризация не перераспределяет эти регистры. Значение по умолчанию 0. См. также ConstrainedOutputPipeline.
Конвейерно обработайте распределение регистра или повторную синхронизацию регистра. Значением по умолчанию является off
. См. также DistributedPipelining.
Количество входных настроек канала связи, чтобы вставить в сгенерированный код. Распределенная конвейеризация и ограниченная выходная конвейеризация могут переместить эти регистры. Значение по умолчанию 0. См. также InputPipeline.
Сгенерируйте VHDL® entity
или Verilog® module
для каждой функции. Значением по умолчанию является off
. См. также InstantiateFunctions.
Разверните, передайте потоком или не оптимизируйте циклы. Значением по умолчанию является none
. См. также LoopOptimization.
Сопоставьте персистентные массивы с RAM. Значением по умолчанию является off
. См. также MapPersistentVarsToRAM.
Количество выходных настроек канала связи, чтобы вставить в сгенерированный код. Распределенная конвейеризация и ограниченная выходная конвейеризация могут переместить эти регистры. Значение по умолчанию 0. См. также OutputPipeline.
Подавите генерацию логики сброса. Значением по умолчанию является default
, который генерирует логику сброса. См. также ResetType.
Количество функционально эквивалентных ресурсов, чтобы сопоставить с одним совместно используемым ресурсом. Значение по умолчанию 0. См. также Разделение ресурсов.
Сгенерируйте 2D матрицы в HDL-коде. Значением по умолчанию является off
. См. также UseMatrixTypesInHDL.
VariablesToPipeline
не рекомендуется. Используйте coder.hdl.pipeline
вместо этого.
Вставьте конвейерный регистр при выводе заданной переменной MATLAB® или переменных. Задайте список переменных как вектор символов с пробелами, разделяющими переменные.
Этот блок поддерживает генерацию кода для комплексных сигналов.
График, предназначенный для генерации HDL-кода, должен быть частью подсистемы Simulink®. Если график, для которого вы хотите сгенерировать код, на корневом уровне вашей модели, встройте график в подсистему. Соедините соответствующие сигналы с вводами и выводами подсистемы.
Текущий релиз поддерживает подмножество типов данных MATLAB в графиках, предназначенных для использования в генерации HDL-кода. Поддерживаемые типы данных
Целое число со знаком и беззнаковое целое
Двойной и один
Некоторые результаты, полученные из HDL-кода, сгенерированного для моделей с помощью двойных или одного типов данных, не битно-верны для результатов симуляции исходной модели.
Фиксированная точка
Булевская переменная
Перечисление
За исключением типов данных, присвоенных портам, поддерживаются многомерные массивы этих типов. Типы данных порта должны быть или скаляром или вектором.
Необходимо включить свойству диаграммы Execute (enter) Chart at Initialization. Эта опция выполняет функцию графика обновления сразу после инициализации графика. Опция требуется для HDL, потому что выходные параметры должны быть доступными во время 0 (аппаратный сброс). Выполнение Графика при Инициализации (Stateflow) описывает существующие ограничения под этим свойством.
Действие сброса не должно влечь за собой задержку комбинаторной логики. Поэтому не выполняйте арифметику в действиях инициализации.
Чтобы сгенерировать HDL-код, который более читаем и имеет лучшие результаты синтеза, включите свойство диаграммы Initialize Outputs Every Time Chart Wakes Up. Если вы используете конечный автомат Moore
, HDL Coder™ генерирует ошибку, если вы отключаете свойство диаграммы.
Если вы отключаете Initialize Outputs Every Time Chart Wakes Up, график, вывод является персистентным, таким образом, сгенерированный HDL-код должен внутренне указать выходные значения.
График, предназначенный для генерации HDL-кода, должен быть совершенно автономным. Следующие ограничения применяются:
Не вызывайте функции MATLAB кроме min
или max
.
Не используйте Системные объекты MATLAB в блоке Chart.
Не используйте данные о рабочем пространстве MATLAB.
Не вызывайте математические функции C. HDL не имеет дубликата к математической библиотеке C.
Если свойство Enable bit operations отключено, не используйте оператор возведения в степень (^
). Оператор возведения в степень реализован с Математической Библиотечной функцией C pow
.
Не включайте пользовательский код. Информация ввела в Simulation Target>, панель Custom Code в диалоговом окне Configuration Parameters проигнорирована.
Не осуществляйте обмен данными (через Блоки памяти Хранилища данных) между графиками. HDL Coder не сопоставляет такие глобальные данные с HDL, потому что HDL не поддерживает глобальные данные.
Вектор Настраиваемых параметров как типы данных для блоков Графика не поддержан.
HDL Coder поддерживает использование событий ввода и вывода с диаграммами Stateflow согласно следующим ограничениям:
Можно задать и использовать только одно входное событие на диаграмму Stateflow. (Нет никакого ограничения на количество выходных событий, которые можно использовать.)
Кодер не поддерживает генерацию HDL-кода для графиков, которые имеют одно входное событие, и которые также имеют ненулевые начальные значения на выходных портах графика.
Все события ввода и вывода должны быть запускаемыми фронтом.
Для получения дальнейшей информации на событиях ввода и вывода, смотрите, Активируют диаграмму Stateflow путем Отправки Входных Событий (Stateflow) и Активируют блок Simulink путем Отправки Выходных Событий (Stateflow).
Сообщения Stateflow не поддержаны для генерации HDL-кода.
Кроме циклов for
, явным образом не используйте циклы в графике, предназначенном для генерации HDL-кода. Наблюдайте следующие ограничения на циклы for
:
Типом данных переменной счетчика цикла должен быть int32
.
HDL Coder поддерживает только постоянно ограниченные циклы.
Пример цикла for
, sf_for
, показывает шаблон разработки для цикла for
с помощью графической функции.
HDL Coder вводит дополнительные ограничения для использования классических функций графика. Эти ограничения существуют, потому что HDL не поддерживает некоторые функции языков последовательного программирования общего назначения.
Не задавайте локальные события в графике, из которого сгенерирован HDL-код.
Не используйте следующие неявные события:
enter
exit
change
Можно использовать следующие неявные события:
wakeup
tick
Можно использовать временную логику, если основные события ограничиваются этими типами неявных событий.
Абсолютно-разовая временная логика не поддержана для генерации HDL-кода.
Не используйте рекурсию через графические функции. HDL Coder в настоящее время не поддерживает рекурсию.
Избегайте неструктурированного кода. Несмотря на то, что графики позволяют неструктурированный код (через блок-схемы перехода и графические функции), это использование результаты в операторах goto
и нескольких функциональных операторах возврата. HDL не поддерживает или операторы goto
или несколько функциональных операторов возврата. Поэтому не используйте неструктурированные блок-схемы.
Если вы не выбрали опцию графика Initialize Outputs Every Time Chart Wakes Up, не читайте из выходных портов.
Не используйте объекты Памяти Хранилища данных.
Не используйте указатель (&
) или косвенность (*
) операторы. Смотрите Операции Указателя и Адреса (Stateflow).
Если график получает ошибку переполнения во время выполнения во время симуляции, возможно отключить проверку ошибок области значений данных и сгенерировать HDL-код для графика. Однако в таких случаях, некоторые результаты, полученные из сгенерированного HDL-кода, не могут быть битно-верны для результатов симуляции. Методические рекомендации должны включить проверку переполнения и устранить условия переполнения из модели во время симуляции.
Sequence Viewer | Таблица изменения состояния | Таблица истинности