Умножьтесь - Добавляют

Умножьтесь - добавляет объединенная операция

Библиотека

HDL Coder / Операции HDL

Описание

Блок Multiply - Add вычисляет продукт первых двух входных параметров, a и b, и добавляет результат в третий вход, c. Входные параметры могут быть векторами или скалярами.

Операция умножения является полной точностью, независимо от выходного типа. Integer rounding mode, Output data type и настройки Saturate on integer overflow применяются только к операции сложения.

Использование, которое блок Multiply - Add, чтобы сопоставить объединенное умножает - добавляет, или умножение - вычитают операцию к модулю DSP в вашем целевом компьютере. Можно выбрать установку Function в диалоговом окне Block Parameters для блока Multiply - Add.

Чтобы сопоставить с модулем DSP, задайте свойство SynthesisTool для своей модели. Когда вы генерируете HDL-код для своей модели, HDL Coder™ конфигурирует умножение - добавляет операция так, чтобы ваш инструмент синтеза мог сопоставить с модулем DSP.

Примечание

Некоторые модули DSP не имеют умножения - добавляет возможность. Чтобы видеть, имеет ли ваше оборудование умножение - добавляют возможность, обращаются к документации для оборудования.

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

Блок Multiply - Add признает и выходные сигналы любого типа числовых данных, что Simulink® поддерживает, включая типы данных с фиксированной точкой.

Для получения дополнительной информации смотрите Типы данных, Поддержанные Simulink (Simulink).

Параметры

Функция

Укажите, что функция, чтобы выполнить объединенное умножает и добавляет или умножение и вычитает операцию.

Настройки

Значение по умолчанию: c+(a.*b)

Можно установить функцию на:

  • c+(a.*b)

  • c-(a.*b)

  • (a.*b)-c

Тип выходных данных

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

Настройки

Значение по умолчанию: Inherit: Inherit via internal rule

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

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

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

Нажмите кнопку Show data type assistant, чтобы отобразить диалоговое окно Data Type Assistant, которое помогает вам установить параметр Output data type.

Для получения дополнительной информации смотрите Типы данных Управляющего сигнала (Simulink).

Целочисленный режим округления

Задайте округляющийся режим для операций фиксированной точки.

Настройки

Значение по умолчанию: Floor

Ceiling

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

Convergent

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

Floor

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

Nearest

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

Round

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

Simplest

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

Zero

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

Информация о командной строке

Смотрите Специфичные для блока Параметры (Simulink) для получения информации о командной строке.

Смотрите также

Для получения дополнительной информации смотрите Округление (Fixed-Point Designer).

Насыщайте на целочисленном переполнении

Задайте, насыщает ли переполнение.

Настройки

Значение по умолчанию: 'off'

На

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

Например, переполнение, сопоставленное с 8-битным целым числом со знаком, может насыщать к-128 или 127.

'off'

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

Например, номер 130 не помещается в 8-битное целое число со знаком и переносится к-126.

Советы

  • Рассмотрите установку этого флажка, когда ваша модель имеет возможное переполнение, и вы хотите явную защиту насыщения в сгенерированном коде.

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

    Снятие этого флажка также помогает вам постараться не чрезмерно определять, как блок обрабатывает сигналы из области значений. Для получения дополнительной информации смотрите Проверку на Ошибки Диапазона сигнала (Simulink).

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

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

Информация о командной строке

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

Конвейерно обработайте глубину

Если у вас есть входные параметры фиксированной точки к блоку Multiply - Add, можно установить PipelineDepth для блока. Для входных параметров с плавающей точкой HDL Coder игнорирует параметр PipelineDepth и не вставляет конвейерные регистры.

Следующие схемы показывают различные настройки конвейерных регистров для различных инструментов синтеза и настроек PipelineDepth. Когда вы задаете установку PipelineDepth, HDL Coder вставляет конвейерные регистры так, чтобы настройка сопоставила эффективно с модулями DSP.

Оборудование Altera с PipelineDepth = 1

Оборудование Altera с PipelineDepth = 2

Оборудование Xilinx с PipelineDepth = 1

Оборудование Xilinx с PipelineDepth = 2

Оборудование Xilinx с PipelineDepth = 3

Архитектура HDL

Этот блок имеет одну, архитектуру HDL по умолчанию.

Свойства блока HDL

Общий

PipelineDepth

Количество настроек канала связи. Значением по умолчанию является auto, что означает, что кодер определяет количество настроек канала связи на основе вашего инструмента синтеза.

Можно ввести целое число между 0 и 3. Для аппаратных целей Altera® максимальная конвейерная глубина равняется 2.

Нативная плавающая точка

HandleDenormals

Задайте, хотите ли вы, чтобы HDL Coder вставил дополнительную логику, чтобы обработать нестандартные числа в вашем проекте. Нестандартные числа являются числами, которые имеют значения меньше, чем самое маленькое число с плавающей запятой, которое может быть представлено без начальных нулей в мантиссе. Значением по умолчанию является inherit. См. также HandleDenormals.

LatencyStrategy

Задайте, сопоставить ли блоки в вашем проекте к inherit, Max, Min или Zero для оператора с плавающей точкой. Значением по умолчанию является inherit. См. также LatencyStrategy.

MantissaMultiplyStrategy

Задайте, как реализовать операцию умножения мантиссы во время генерации кода. При помощи различных настроек можно управлять использованием DSP на целевом устройстве FPGA. Значением по умолчанию является inherit. См. также MantissaMultiplyStrategy.

Поддержка комплексных данных

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

Ограничения

  • Когда блок имеет входные параметры с плавающей точкой, HDL Coder игнорирует параметр PipelineDepth и не вставляет конвейерные регистры.

  • Если блок находится в обратной связи, и у вас нет достаточных задержек в блоке выводом, кодер уменьшает PipelineDepth, чтобы предотвратить отказ балансировки задержки. Для достаточных задержек добавьте блоки Задержки при выводе блока Multiply - Add.

  • Чтобы сопоставить объединенное умножаются - добавляет операция к модулю DSP, ширина третьего входа c должна составить меньше чем 64 бита для Altera и 48 битов для Xilinx® соответственно.

  • Операция вычитания в установке Function (a.*b)-c не сопоставляет с модулем DSP в библиотеках Altera FPGA.

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

Генерация HDL-кода
Сгенерируйте Verilog и код VHDL для FPGA и проекты ASIC с помощью HDL Coder™.

Введенный в R2015b