График

Реализуйте управляющую логику с конечным автоматом (HDL Coder)

Описание

Блок Chart доступен с Stateflow®.

Для получения информации о поведении симуляции и параметрах блоков, см. График.

Настраиваемые параметры

Можно использовать настраиваемый параметр в диаграмме Stateflow, предназначенной для генерации HDL-кода.

Для получения дополнительной информации смотрите, Генерируют Порты DUT для Настраиваемых параметров.

Архитектура HDL

Этот блок имеет одну, архитектуру HDL по умолчанию.

Активный Вывод состояния

Чтобы сгенерировать выходной порт в HDL-коде, который показывает активное состояние, выберите Create output port for monitoring в Окне свойств графика. Вывод является перечислимым типом данных. Смотрите Упрощают диаграммы Stateflow путем Слияния Активного Вывода состояния (Stateflow).

Указанный Вывод

Если вы хотите вставить выходной регистр, который задерживает график, выведенный циклом симуляции, используйте свойство блока OutputPipeline.

Свойства блока HDL

ConstMultiplierOptimization

Каноническая цифра со знаком (CSD) или учтенная оптимизация CSD. Значением по умолчанию является none. См. также ConstMultiplierOptimization.

ConstrainedOutputPipeline

Количество регистров, чтобы поместить при выходных параметрах путем перемещения существующих задержек в рамках проекта. Распределенная конвейеризация не перераспределяет эти регистры. Значение по умолчанию 0. См. также ConstrainedOutputPipeline.

DistributedPipelining

Конвейерно обработайте распределение регистра или повторную синхронизацию регистра. Значением по умолчанию является off. См. также DistributedPipelining.

InputPipeline

Количество входных настроек канала связи, чтобы вставить в сгенерированный код. Распределенная конвейеризация и ограниченная выходная конвейеризация могут переместить эти регистры. Значение по умолчанию 0. См. также InputPipeline.

InstantiateFunctions

Сгенерируйте VHDL® entity или Verilog® module для каждой функции. Значением по умолчанию является off. См. также InstantiateFunctions.

LoopOptimization

Разверните, передайте потоком или не оптимизируйте циклы. Значением по умолчанию является none. См. также LoopOptimization.

MapPersistentVarsToRAM

Сопоставьте персистентные массивы с RAM. Значением по умолчанию является off. См. также MapPersistentVarsToRAM.

OutputPipeline

Количество выходных настроек канала связи, чтобы вставить в сгенерированный код. Распределенная конвейеризация и ограниченная выходная конвейеризация могут переместить эти регистры. Значение по умолчанию 0. См. также OutputPipeline.

ResetType

Подавите генерацию логики сброса. Значением по умолчанию является default, который генерирует логику сброса. См. также ResetType.

SharingFactor

Количество функционально эквивалентных ресурсов, чтобы сопоставить с одним совместно используемым ресурсом. Значение по умолчанию 0. См. также Разделение ресурсов.

UseMatrixTypesInHDL

Сгенерируйте 2D матрицы в HDL-коде. Значением по умолчанию является off. См. также UseMatrixTypesInHDL.

VariablesToPipeline

Предупреждение

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-кода, не могут быть битно-верны для результатов симуляции. Методические рекомендации должны включить проверку переполнения и устранить условия переполнения из модели во время симуляции.

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью Simulink® Coder™.

Генерация HDL-кода
Сгенерируйте Verilog и код VHDL для FPGA и проекты ASIC с помощью HDL Coder™.

Генерация кода PLC
Сгенерируйте код Структурированного текста с помощью Simulink® PLC Coder™.

Преобразование фиксированной точки
Преобразуйте алгоритмы с плавающей точкой в фиксированную точку с помощью Fixed-Point Designer™.

Введенный в R2014a