Поддерживаемые типы данных MATLAB, операторы и операторы потока управления

Когда вы генерируете HDL-код из своего MATLAB® алгоритм, используйте типы данных, операторы и поток управления операторы, поддерживаемые HDL- Coder™.

Поддерживаемые типы данных

HDL Coder не поддерживает массивы ячеек и Inf типы данных. В этой таблице показан поддерживаемый подмножество типов данных MATLAB.

ТипыПоддерживаемые типы данныхОграничения
Целое число
  • uint8, uint16, uint32, uint64

  • int8, int16, int32, int64

В Simulink®, MATLAB Function блочных портов должны использоваться числовые типы sfix64 или ufix64 для 64-битных данных.
Реальный
  • double

  • single

HDL-код, сгенерированный с double или single типы данных в коде MATLAB могут использоваться для симуляции, но не могут быть синтезированы. Можно сгенерировать синтезируемый код, когда вы используете эти типы данных в модели Simulink. Для получения дополнительной информации смотрите:
Символchar
Логичный

logical

Фиксированная точка
  • Масштабированные (только для двоичной точки) числа с фиксированной точкой

  • Пользовательские целые числа (нулевая двоичная точка)

Номера с фиксированной точкой с наклоном (не равным 1,0) и смещением (не равным 0,0) не поддерживаются.

Максимальный размер слова для чисел с фиксированной точкой составляет 128 бит.

Векторы
  • неупорядоченные {N}

  • строка {1, N}

  • столбец {N, 1}

Максимально допустимое количество элементов вектора - 2 ^ 32.

Прежде чем переменная будет подписана, она должна быть полностью определена.

Матрицы

{N, M}

Матрицы поддерживаются в теле алгоритма проекта, но не поддерживаются в качестве входов в функцию проекта верхнего уровня.

Не используйте матрицы в тестовом наборе.

Структурыstruct

Массивы структур не поддерживаются.

Для рабочих процессов FPGA «под ключ» и IP Core Generation, структуры поддерживаются в теле алгоритма проекта, но не поддерживаются в качестве входов для функции проекта верхнего уровня.

Перечисленияenumeration

Значения перечисления должны быть монотонно увеличены.

Если ваш целевой язык Verilog®все имена представителей перечисления должны быть уникальными в проекте.

Перечисления в портах DUT верхнего уровня не поддерживаются следующими рабочими процессами или методами верификации:

  • Рабочий процесс генерации IP-ядра

  • Рабочий процесс FPGA под ключ

  • Цикл

  • Косимуляция HDL

Глобальные переменные не поддерживаются для генерации HDL-кода.

Поддерживаемые операторы

Примечание

HDL-код, сгенерированный для больших векторных и матричных входов в арифметические операции, может привести к неэффективному коду. Код для этих операторов не конвейерируется автоматически.

Арифметические операторы

ОперацияСинтаксис оператораЭквивалентная функцияОграничения
Двоичное сложение A+B plus(A,B) Ни один из Aни B может быть типом данных logical.
Матричное умножение A*B mtimes(A,B)

HDL-код, сгенерированный для матричных арифметических операций, не конвейеризован, и может привести к неэффективному коду.

Массивное умножение A.*B times(A,B) Ни один из Aни B может быть типом данных logical.
Матричная степень A^B mpower(A,B)

A и B должны быть скалярными, и B должно быть целым числом.

HDL-код, сгенерированный для матричных арифметических операций, не конвейеризован, и может привести к неэффективному коду.

Массивная степень A.^B power(A,B) A и B должны быть скалярными, и B должно быть целым числом.
Комплексная транспозиция A' ctranspose(A)
Матричная транспонирование A.' transpose(A)  
Матричный конкат [A B] Ничего
Матричный индексA(r c) НичегоПрежде чем вы используете переменную, вы должны полностью определить ее.

Логические операторы

ОперацияСинтаксис оператораM-эквивалент функцииПримечания
Логический И A&Band(A,B)
Логический Или A|Bor(A,B)
Логический Xor A xor Bxor(A,B)
Логический И (короткое замыкание) A&&B

Н/Д

Используйте логические операторы короткого замыкания в условиях.
Логический Или (короткое замыкание) A||B

Н/Д

Используйте логические операторы короткого замыкания в условиях.
Дополнение элемента ~Anot(A)

Реляционные операторы

ОтношениеСинтаксис оператораЭквивалентная функция
Меньше, чем A<B lt(A,B)
Меньше чем или равно A<=B le(A,B)
Больше или равно A>=B ge(A,B)
Больше, чем A>B gt(A,B)
Равный A==B eq(A,B)
Не равен A~=B ne(A,B)

Управляйте операторами потока

HDL Coder поддерживает следующие операторы и конструкции потока управления с ограничениями.

Оператор потока управления Ограничения

for

Не используйте for циклы без статических границ.

Не используйте & и | операторы в условиях for оператор. Вместо этого используйте && и || операторы.

HDL Coder не поддерживает нескалярные выражения в условиях for операторы. Вместо этого используйте all или any функции для свертывания логических векторов в скаляры.

if

Не используйте & и | операторы в условиях if оператор. Вместо этого используйте && и || операторы.

HDL Coder не поддерживает нескалярные выражения в условиях if операторы. Вместо этого используйте all или any функции для свертывания логических векторов в скаляры.

switch

Условное выражение в switch или case оператор должен использовать только:

  • uint8, uint16, uint32, int8, int16, или int32 типы данных

  • Скалярные данные

Если несколько case операторы выполняют назначения той же переменной, числовому типу и fimath спецификация для этой переменной должна быть одинаковой в каждом case оператор.

Следующие операторы потока управления не поддерживаются:

  • while

  • break

  • continue

  • return

  • parfor

Избегайте использования следующих векторных функций, так как они могут генерировать циклы, содержащие break операторы:

  • isequal

  • bitrevorder

См. также

|

Похожие темы