Multiply-Accumulate

Выполните умножение - накапливают операцию на входных параметрах

  • Библиотека:
  • HDL Coder / Операции HDL

  • Multiply-Accumulate block

Описание

Блок Multiply-Accumulate выполняет эту операцию на входных параметрах a и b, и сместите c, вычислить результат dataOut.

dataOut = sum(a.* b) + c

По умолчанию блок действует в векторном режиме. Входные параметры a и b могут быть скаляры, векторы или 2D матрицы. По умолчанию, значение смещения c равен нулю, и блок вычисляет скалярное произведение входных параметров a и b. Можно задать ненулевое значение для c при помощи Dialog или Input port как Source. Блок добавляет это смещение в скалярное произведение a и b. Операция умножения является полной точностью независимо от установки Output data type. Настройки Output data type и Integer rounding mode применяются к операции сложения.

При помощи установки Operation Mode можно задать потоковые режимы операции для блока Multiply-Accumulate. Для генерации HDL-кода, когда вы используете режим работы потоковой передачи, вводят скалярные значения с блоком. Блок имеет два потоковых режима: Streaming - using Start and End ports и Streaming - using Number of Samples. Когда вы выбираете эти потоковые режимы, можно задать управляющие сигналы использовать с режимом. Управляющие сигналы задают, когда к накоплению начала и конца, и когда выход допустим.

Ограничения для генерации HDL-кода

  • Скалярные входные параметры не поддерживаются для генерации HDL-кода. Чтобы сгенерировать код для блока, используйте векторные входные параметры. Со скалярными входными параметрами используйте блок Multiply-Add.

  • Матричные типы данных не поддерживаются в интерфейсах порта блока. Если у вас есть матричные сигналы типа, используйте блок Product в режиме умножения матриц.

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

Порты

Входной параметр

развернуть все

Порт, чтобы предоставить вход блоку.

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | fixed point

Порт, чтобы предоставить вход блоку.

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean | fixed point | enumerated | bus

Порт, чтобы обеспечить смещение сигнализирует с блоком. Блок добавляет это смещение во входные параметры. Убедитесь, что данные сигнала смещения вводят соответствия то из скалярного произведения входных параметров.

Зависимости

Чтобы включить этот порт, установите Source на Input port.

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | fixed point

Порт, чтобы обеспечить управляющий сигнал запустить накопление. Рекомендуется, чтобы вы использовали boolean сигнал типа данных, как введено к порту. Чтобы начать получать накопленное выходное значение из сигнала dataOut, и startIn и сигналы validIn должны быть высокими. Сигнал dataOut производит накопленный результат следующего такта.

Зависимости

Чтобы включить этот порт, установите Operation Mode на Streaming - using Start and End Ports.

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | fixed point

Порт, чтобы обеспечить управляющий сигнал указать, что входной сигнал допустим для накопления. Рекомендуется, чтобы вы использовали boolean сигнал типа данных, как введено к порту. Чтобы начать получать накопленное выходное значение из сигнала dataOut, и validIn и сигналы startIn должны быть высокими. Сигнал dataOut производит накопленный результат следующего такта. Сигнал validIn имеет более высокий приоритет, чем сигналы endIn и startIn.

Зависимости

Чтобы включить этот порт, установите Operation Mode на Streaming - using Start and End Ports или Streaming - using Number of Samples.

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | fixed point

Порт, чтобы обеспечить управляющий сигнал указать на конец накопления. Можно использовать startIn и сигналы endIn с сигналом validIn указать на систему координат, которая содержит накопленный выход.

Зависимости

Чтобы включить этот порт, установите Operation Mode на Streaming - using Start and End Ports и затем выберите End input and output ports.

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | fixed point

Вывод

развернуть все

Порт, который генерирует выходные данные от умножения - накапливает операцию. По умолчанию блок использует Vector режим работы и вычисляет скалярное произведение входных сигналов и добавляет смещение, чтобы привести к результату. Если вы задаете потоковый режим операции как Operation Mode, значение сигнала dataOut зависит от управляющих сигналов, что вы обеспечиваете. Тип данных выходного сигнала - то же самое как тот из аккумулятора.

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | fixed point

Порт, который генерирует сигнал элемента управления выводом указать на запуск накопления. Когда и validIn и startIn высоки, сигнал startOut становится высоким за следующий такт. Такт, в котором startOut становится высоким, указывает на запуск системы координат и что сигнал dataOut начал производить допустимый накопленный выход.

Зависимости

Чтобы включить этот порт, установите Operation Mode на Streaming - using Start and End Ports и затем выберите Start output port.

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | fixed point

Порт, который генерирует сигнал элемента управления выводом указать, что сигнал dataOut допустим. Когда сигнал validIn становится высоким, сигнал validOut становится высоким за следующий такт и указывает, что dataOut допустим.

Зависимости

Чтобы включить этот порт, установите Operation Mode на Streaming - using Start and End Ports и затем выберите Valid output port.

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | fixed point

Порт, который генерирует сигнал элемента управления выводом указать на конец накопления. Можно использовать такты между тем, когда сигнал startOut становится высоким и когда сигнал endOut становится высоким, чтобы указать на допустимую систему координат, которая содержит накопленный выход.

Зависимости

Чтобы включить этот порт, установите Operation Mode на Streaming - using Start and End Ports и затем выберите End input and output ports.

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | fixed point

Порт, который генерирует сигнал элемента управления выводом указать на количество выборок, чтобы накопиться. Значение этого сигнала увеличивается с 1 к значению, которое вы задаете для Number of Samples. Пока сигнал validIn высок, шаг countOut 1 каждый такт.

Зависимости

Чтобы включить этот порт, установите Operation Mode на Streaming - using Number of Samples и затем выберите Count output port.

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | fixed point

Параметры

развернуть все

Можно задать Operation Mode как:

  • Vector: Можно использовать скаляры или векторы как входные параметры. Блок выполняет скалярное произведение входных параметров u1 и u2 и добавляет, смещают k приводить к результату.

  • Streaming - using Start and End Ports: Используйте скалярные входные параметры для генерации HDL-кода. В этом режиме можно использовать startIn и управляющие сигналы endIn определить, когда запустить и остановить накопление. Выходные данные допустимы, когда validIn высок.

  • Streaming - using Number of Samples: Используйте скалярные входные параметры для генерации HDL-кода. В этом режиме можно задать Number of Samples и использовать управляющий сигнал countIn определить, когда запустить и остановить накопление. Выходные данные допустимы, когда validIn высок.

Программируемое использование

Параметры блоков: opMode
Ввод: символьный вектор
Значение: 'Vector' | 'Streaming - using Start and End Ports' | 'Streaming - using Number of Samples'
Значение по умолчанию: 'Vector'

Можно задать смещение с:

  • Source как Dialog. Затем задайте Value.

  • Source как Input port. Эта установка создает внешний входной порт c чтобы ввести смещение сигнализируют с блоком.

Программируемое использование

Параметры блоков: initValueSetting
Ввод: символьный вектор
Значение: 'Dialog' | 'Input port'
Значение по умолчанию: 'Dialog'

Если вы устанавливаете Source как Dialog, можно задать начальное значение при помощи initValue2 установка.

Параметры блоков: initValue2
Ввод: символьный вектор
Значение: целое число, больше, чем или равный нулю
Значение по умолчанию: '0.0'

Можно задать Number of Samples, чтобы задать систему координат, содержащую количество выборок допустимого накопленного выхода dataOut.

Зависимости

Чтобы включить этот порт, установите Operation Mode на Streaming - using Number of Samples.

Программируемое использование

Параметры блоков: num_samples
Ввод: символьный вектор
Значение: целое число, больше, чем или равный нулю
Значение по умолчанию: '2'

Установите тип выходных данных на:

  • Правило, которое наследовало тип данных, такой как Inherit: Same as first input.

  • Встроенный тип данных, такой как single или int16.

  • Имя объекта типа данных. например, Simulink.NumericType объект.

  • Выражение, которое оценивает к допустимому типу данных, например, fixdt(1,16,0)

Потоковые режимы не делают suuport Inherit: Inherit via internal rule. Когда вы устанавливаете Output data type, можно использовать Data Type Assistant. Чтобы отобразить ассистент, нажмите Show data type assistant .

Программируемое использование

Параметры блоков: OutDataTypeStr
Ввод: символьный вектор
Значение по умолчанию: {'Inherit: Inherit via internal rule'}

Чтобы видеть возможные значения, которые можно задать для этого параметра, смотрите Специфичные для блока Параметры.

Задайте округляющееся действие как:

Ceiling

Округляет положительные и отрицательные числа к положительной бесконечности. Эквивалентный MATLAB® ceil функция.

Convergent

Номер раундов к самому близкому представимому значению. Если связь происходит, раунды к самому близкому даже целое число. Эквивалентный Fixed-Point Designer™ convergent функция.

Floor

Округляет положительные и отрицательные числа к отрицательной бесконечности. Эквивалентный MATLAB floor функция.

Nearest

Округляет номер до самого близкого представимого значения. Если связь происходит, раунды к положительной бесконечности. Эквивалентный Fixed-Point Designer nearest функция.

Round

Номер раундов к самому близкому представимому значению. Если связь происходит, округляет положительные числа к положительной бесконечности и округляет отрицательные числа к отрицательной бесконечности. Эквивалентный Fixed-Point Designer round функция.

Simplest

Принимает решение между округлением к полу и округлением к нулю сгенерировать округление кода, который максимально эффективен.

Zero

Номер раундов к нулю. Эквивалентный MATLAB fix функция.

Программируемое использование

Параметры блоков: RndMeth
Ввод: символьный вектор
Значение по умолчанию: {'Floor'}

Чтобы видеть возможные значения, которые можно задать для этого параметра, смотрите Специфичные для блока Параметры.

Управляйте генерацией выходного порта validOut. Этот порт указывает, допустим ли dataOut.

off

Не отображает выходной порт validOut.

on

Отобразите выходной порт validOut.

Зависимости

Чтобы включить этот порт, установите Operation Mode на Streaming - using Number of Samples или Streaming - using Start and End Ports.

Программируемое использование

Параметры блоков: validOut
Ввод: символьный вектор
Значения: 'off' | 'on'
Значение по умолчанию: 'off'

Управляйте генерацией входного порта endIn и выходного порта endOut. Порты указывают на конец системы координат, содержащей допустимое накопление выход.

off

Не отображает входной порт endIn и выходной порт endOut.

on

Отобразите входной порт endIn и выходной порт endOut.

Зависимости

Чтобы включить этот порт, установите Operation Mode на Streaming - using Start and End Ports.

Программируемое использование

Параметры блоков: endInandOut
Ввод: символьный вектор
Значения: 'off' | 'on'
Значение по умолчанию: 'off'

Управляйте генерацией выходного порта startOut. Этот порт генерирует сигнал startOut, который указывает на запуск системы координат, содержащей допустимый накопленный выход.

off

Не отображает выходной порт startOut.

on

Отобразите выходной порт startOut.

Зависимости

Чтобы включить этот порт, установите Operation Mode на Streaming - using Start and End Ports.

Программируемое использование

Параметры блоков: startOut
Ввод: символьный вектор
Значения: 'off' | 'on'
Значение по умолчанию: 'off'

Управляйте генерацией выходного порта countOut. Этот порт генерирует счетчик, который указывает на систему координат, содержащую допустимые выборки.

off

Не отображает выходной порт countOut.

on

Отобразите выходной порт countOut.

Зависимости

Чтобы включить этот порт, установите Operation Mode на Streaming - using Number of Samples.

Программируемое использование

Параметры блоков: countOut
Ввод: символьный вектор
Значения: 'off' | 'on'
Значение по умолчанию: 'off'

Советы

С блоком Multiply-Accumulate вы можете:

  • Выполните операции умножения матриц. Например, если у вас есть два матричных входных параметров с размерностями N-by-M и M-by-P, можно вычислить результат при помощи N-by-P умножьтесь - накапливают операции параллельно.

  • Замените последовательность умножения и операций сложения, такой как в блоках фильтра, и улучшайте производительность на оборудовании путем отображения со срезами DSP на FPGA. Этот рисунок показывает, как можно использовать блок Multiply-Accumulate с sfir_fixed модель.

Алгоритмы

развернуть все

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью Simulink® Coder™.

Введенный в R2017b