exponenta event banner

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

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

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

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

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

  • int8, int16, int32, int64

В Simulink ® порты функциональных блоков MATLAB должны использовать числовые типы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 Рабочий процесс под ключ

  • FPGA-в-контуре

  • Косимуляция ЛПВП

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

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

Примечание

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

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

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

Код ЛПВП, генерируемый для матричных арифметических операций, не является конвейерным и может привести к неэффективному коду.

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

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

Код ЛПВП, генерируемый для матричных арифметических операций, не является конвейерным и может привести к неэффективному коду.

Мощность массива 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 поддерживает следующие операторы и конструкции потока управления с ограничениями.

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

for

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

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

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

if

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

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

switch

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

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

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

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

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

  • while

  • break

  • continue

  • return

  • parfor

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

  • isequal

  • bitrevorder

См. также

|

Связанные темы