Можно следовать этим инструкциям, чтобы изучить рекомендуемые настройки типа данных, которые вы хотите использовать в своей модели Simulink® для генерации HDL-кода. Каждая инструкция имеет уровень серьезности, который указывает на уровень требований соответствия. Чтобы узнать больше, смотрите Уровни серьезности Руководств по моделированию HDL.
2.6.1
Обязательный
Boolean
и фиксированная точка, ufix1
, являются и типами данных 1-bit
в MATLAB® и Simulink. Эти типы обработаны по-другому.
Используйте Boolean
для сигналов управляющей логики тех, которые включают и локальные сигналы сброса. Если вы хотите вычислить сигнал Boolean
с типом данных с фиксированной точкой, используйте Преобразование типа данных, чтобы преобразовать сигнал в тип fixdt (0,1,0)
.
Чтобы выполнить числовые вычисления, используйте fixdt (0,1,0)
. Иногда, выходная ширина бита может стать больше, чем bitwidth. Чтобы выполнить такие операции, используйте установку Inherit: Inherit via internal rule
из-за свойства numerictype
fixdt (0,1,0)
.
2.6.2
Рекомендуемый
Блоки усиления имеют параметр 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
Вы не можете выполнить арифметические операции, такие как *
, /
, -
и +
с перечислимыми величинами.
Вы не можете выполнить операции сравнения, такие как >
, <
, >=
, <=
, ==
и ~=
с перечислимыми величинами. Можно выполнить операцию <>
или условный переход такой, как будто или переключаются.