HDL Coder™ поддерживает и предопределенный и пользовательский System objects для генерации кода.
System objects обеспечивает преимущество проекта потому что:
Можно сэкономить время во время проекта и тестирующий при помощи существующей Системы object™ компоненты.
Можно спроектировать и квалифицировать пользовательские Системные объекты к повторному использованию в нескольких проектах.
Можно задать алгоритм в Системном объекте однажды, и повторное использование несколько экземпляров его в одном проекте MATLAB.
Эта идиома не может использоваться с функциями MATLAB, которые имеют состояние. Например, если алгоритм имеет состояние и требует использования персистентных переменных, эта функция нельзя инстанцировать многократно в проекте. Вместо этого необходимо было бы скопировать и переименовать функцию для каждого экземпляра.
HDL-код, который вы генерируете от System objects, является модульным и более читаемым.
Предопределенный System objects, которые доступны с MATLAB®, DSP System Toolbox™ и Communications Toolbox™, поддерживается для генерации HDL-кода. Для списка смотрите Предопределенные Системные объекты, Поддержанные для генерации HDL-кода.
Можно создать пользовательские Системные объекты для генерации HDL-кода. Для примера смотрите, Генерируют Код для Пользовательских Системных объектов.
Нижеследующие ограничения применяются к генерации HDL-кода за весь System objects:
Ваш проект может вызвать step
метод только однажды на Системный объект.
step
не должен быть во вложенном условном операторе, таком как вложенный цикл, if
оператор или switch
оператор.
step
не должен быть в условном операторе, который содержит операцию индексирования матриц.
Системный объект должен быть объявлен персистентный, если он имеет состояние.
Системный объект имеет состояние, когда это имеет настраиваемую частную или общественную собственность или свойство с DiscreteState
атрибут.
Можно использовать dsp.Delay
Системный объект только в моделировании задержки feedforward.
UseMatrixTypesInHDL
атрибут должен быть установлен в 'off', если у вас есть Системный объект в вашем коде MATLAB.
Перечисления не поддержаны.
Глобальные переменные не поддержаны.
Для предопределенного System Objects, step
единственный метод, поддержанный для генерации HDL-кода.
Для пользовательского System Objects, любой step
метод или output
и update
методы, поддерживаются для генерации HDL-кода.
Предопределенный System objects не поддержан для генерации HDL-кода из блока MATLAB System.
В дополнение к ограничениям для всего System objects следующие ограничения применяются к пользовательскому System objects за генерацию HDL-кода:
В setupImpl
и resetImpl
методы, если вы присваиваете значения свойствам или переменным, значения, должны быть константами.
Если ваш проект использует output
и update
методы, это может вызвать каждый метод только однажды на Системный объект.
Начальный и значения сброса для свойств должно быть постоянное время компиляции.
Пользовательский System objects не должен быть публичными свойствами.
step
метод с несколькими выходными параметрами не может быть назван в условном операторе.
Чтобы изучить, как использовать System objects в генерации HDL-кода, просмотрите проекты MATLAB в следующих примерах: