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