Можно следовать этим инструкциям, чтобы изучить рекомендуемые настройки типа данных, которые вы хотите использовать в своей модели Simulink® в генерации HDL-кода. Каждая инструкция имеет уровень серьезности, который указывает на уровень требований податливости. Чтобы узнать больше, смотрите Уровни серьезности Руководств по моделированию HDL.
2.6.1
Обязательный
Boolean и фиксированная точка, ufix1, оба 1-bit типы данных в MATLAB® и Simulink. Эти типы обработаны по-другому.
Используйте Boolean для сигналов управляющей логики тех, которые включают и локальные сигналы сброса. Если вы хотите вычислить Boolean сигнал с типом данных с фиксированной точкой, используйте Data Type Conversion, чтобы преобразовать сигнал в fixdt (0,1,0) ввод.
Чтобы выполнить числовые вычисления, используйте fixdt (0,1,0). Иногда, выходная ширина бита может стать больше, чем bitwidth. Чтобы выполнить такие операции, используйте Inherit: Inherit via internal rule установка, из-за numerictype свойство fixdt (0,1,0).
2.6.2
Рекомендуемый
Блоки Gain имеют параметр Gain и установку Output data type. Рекомендуется, чтобы вы использовали типы данных с фиксированной точкой в этих настройках. В диалоговом окне Block Parameters блока Gain:
Задайте Simulink.NumericType объект, такой как fixdt (1, 16, 8).
Убедитесь, что параметр Gain блока не использует круглое значение параметров. Чтобы постараться не округляться значения усиления, можно задать fi объект, такой как fi(3.44,0,8,4).
Избегайте использования Inherit:Inherit via internal rule. Эта установка может привести к ошибочному типу данных, присваиваемому блоку, таким образом, приводящему к ошибке генерации HDL-кода.
2.6.3
Обязательный
Определенная оптимизация, такая как конвейеризация и разделение ресурсов не работает беспрепятственно в присутствии перечислимых типов данных. Рекомендуется, чтобы вы использовали перечислимые типы по мере необходимости. Генерация HDL-кода имеет определенные ограничения при моделировании с перечислимыми типами.
Вы не можете использовать перечислимый тип данных в порте ввода или вывода DUT верхнего уровня.
Необходимо использовать монотонно увеличивающиеся перечислимые величины. Например, см. этот код:
classdef BasicColors < Simulink.IntEnumType enumeration Red(0) Yellow(1) Blue(2) end methods (Static) function retVal = getDefaultValue() retVal = BasicColors.Blue; end end end
Вы не можете выполнить арифметические операции, такие как *, / , -, и + с перечислимыми величинами.
Вы не можете выполнить операции сравнения, такие как >, <, >=, <=, ==, и ~= с перечислимыми величинами. Можно выполнить <> операция или условный переход такой, как будто или переключатель.