exponenta event banner

Умножить - накапливать

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

  • Библиотека:
  • Кодер ЛПВП/операции ЛПВП

  • Multiply-Accumulate block

Описание

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

dataOut = sum(a.* b) + c

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

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

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

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

  • Типы матричных данных не поддерживаются в интерфейсах блочных портов. При наличии сигналов матричного типа используйте блок «Произведение» в режиме умножения матриц.

  • Потоковые режимы работы для блока не поддерживаются внутри блока переустановляемой подсистемы для генерации кода 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 имеет более высокий приоритет, чем сигналы startIn и endIn.

Зависимости

Чтобы включить этот порт, установите для параметра 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 и output ports.

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

Продукция

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

Порт, генерирующий выходные данные из операции умножения-накопления. По умолчанию блок использует Vector режим работы и вычисляет скалярное произведение входных сигналов и добавляет смещение для получения результата. Если в качестве режима работы указан режим потоковой передачи, значение сигнала 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 а затем выберите Допустимый выходной порт.

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

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

Зависимости

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

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

Порт, генерирующий выходной управляющий сигнал для указания количества накапливаемых выборок. Значение этого сигнала увеличивается от 1 к значению, указанному для параметра «Количество образцов». При высоком значении сигнала validIn значение countOut увеличивается на 1 каждый тактовый цикл.

Зависимости

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

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

Параметры

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

Режим работы можно задать следующим образом:

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

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

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

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

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

Смещение можно указать следующим образом:

  • Источник как Dialog. Затем укажите значение.

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

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

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

Если для параметра «Источник» задано значение Dialog, можно указать начальное значение с помощью initValue2 установка.

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

Можно указать количество выборок, чтобы указать кадр, содержащий количество выборок действительных накопленных выходных данных Out.

Зависимости

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

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

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

Задайте тип выходных данных:

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

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

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

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

Режимы потоковой передачи не поддерживают Inherit: Inherit via internal rule. При установке типа выходных данных можно использовать помощник по типам данных. Для отображения помощника нажмите кнопку Show data type assistant.

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

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

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

Укажите операцию округления как:

Ceiling

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

Convergent

Округляет число до ближайшего представимого значения. Если возникает связь, округляется до ближайшего чётного целого числа. Эквивалентно Designer™ фиксированной точки convergent функция.

Floor

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

Nearest

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

Round

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

Simplest

Выбор между округлением в сторону пола и округлением в сторону нуля для создания кода округления, который является максимально эффективным.

Zero

Округляет число до нуля. Эквивалентно MATLAB fix функция.

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

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

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

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

прочь

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

на

Отображение выходного порта validedOut.

Зависимости

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

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

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

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

прочь

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

на

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

Зависимости

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

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

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

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

прочь

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

на

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

Зависимости

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

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

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

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

прочь

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

на

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

Зависимости

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

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

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

Совет

Блок «Умножение-накопление» позволяет:

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

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

Алгоритмы

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

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

Создание кода C/C + +
Создайте код C и C++ с помощью Simulink ® Coder™

.
Представлен в R2017b