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