Вы можете следовать этим рекомендациям, чтобы узнать рекомендуемые настройки типа данных, которые вы хотите использовать в Simulink® модель для генерации HDL-кода. Каждое руководство имеет уровень серьезности, который указывает на уровень податливостей. Для получения дополнительной информации см. HDL-руководства по моделированию уровней серьезности.
2.10.1
Обязательный
Boolean
и тип с фиксированной точкой, ufix1
, являются ли оба 1-bit
типы данных в MATLAB® и Simulink. К этим типам относятся по-разному.
Использование Boolean
для управляющих логических сигналов, таких как разрешающий и локальный сигналы сброса. Если вы хотите вычислить Boolean
сигнал с типом данных с фиксированной точкой, используйте Data Type Conversion, чтобы преобразовать сигнал в fixdt (0,1,0)
тип.
Для выполнения числовых вычислений используйте fixdt (0,1,0)
. Иногда выход бита может стать больше, чем битовая ширина. Для выполнения таких операций используйте Inherit: Inherit via internal rule
установка, из-за numerictype
свойство fixdt (0,1,0)
.
2.10.2
Рекомендуется
Gain блоки имеют параметр Gain и Output data type настройку. Для этих настроек рекомендуется использовать типы данных с фиксированной точкой. В диалоговом окне Параметры Блоков блока Gain:
Задайте Simulink.NumericType
объект, например fixdt (1, 16, 8)
.
Убедитесь, что параметр Gain блока не использует значение параметров round. Чтобы избежать округления значения усиления, можно задать fi
объект, например fi(3.44,0,8,4)
.
Избегайте использования Inherit:Inherit via internal rule
. Эта настройка может привести к ошибочному типу данных, назначаемому блоку, что приводит к ошибке генерации HDL-кода.
2.10.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
Вы не можете выполнить такие арифметические операции, как *
, /
, -
, и +
со значениями перечисления.
Вы не можете выполнить операции сравнения, такие как >
, <
, >=
, <=
, ==
, и ~=
со значениями перечисления. Можно выполнить <>
операция или условная ветвь, например, если или переключатель.