Можно следовать этим инструкциям, чтобы изучить рекомендуемые настройки типа данных, которые вы хотите использовать в своей модели 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
Вы не можете выполнить арифметические операции, такие как *
, /
, -
, и +
с перечислимыми величинами.
Вы не можете выполнить операции сравнения, такие как >
, <
, >=
, <=
, ==
, и ~=
с перечислимыми величинами. Можно выполнить <>
операция или условный переход такой, как будто или переключатель.