Умножьтесь - добавляет объединенная операция
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.
Переполнение переносится к соответствующему значению, которое может представлять тип данных.
Например, номер 130 не помещается в 8-битное целое число со знаком и переносится к-126.
Рассмотрите установку этого флажка, когда ваша модель имеет возможное переполнение, и вы хотите явную защиту насыщения в сгенерированном коде.
Полагайте, что снятие этого флажка когда это необходимо оптимизирует эффективность вашего сгенерированного кода.
Снятие этого флажка также помогает вам постараться не чрезмерно определять, как блок обрабатывает сигналы из области значений. Для получения дополнительной информации смотрите Проверку на Ошибки Диапазона сигнала (Simulink).
Когда вы устанавливаете этот флажок, насыщение применяется к каждой внутренней операции на блоке, не только выводу или результату.
В целом процесс генерации кода может обнаружить, когда переполнение не возможно. В этом случае генератор кода не производит код насыщения.
Параметр: SaturateOnIntegerOverflow |
Ввод: символьный вектор |
Значение:
'off' | 'on' |
Значение по умолчанию:
'off' |
Если у вас есть входные параметры фиксированной точки к блоку Multiply - Add, можно установить PipelineDepth для блока. Для входных параметров с плавающей точкой HDL Coder игнорирует параметр PipelineDepth и не вставляет конвейерные регистры.
Следующие схемы показывают различные настройки конвейерных регистров для различных инструментов синтеза и настроек PipelineDepth. Когда вы задаете установку PipelineDepth, HDL Coder вставляет конвейерные регистры так, чтобы настройка сопоставила эффективно с модулями DSP.
Этот блок имеет одну, архитектуру HDL по умолчанию.
Количество настроек канала связи. Значением по умолчанию является auto
, что означает, что кодер определяет количество настроек канала связи на основе вашего инструмента синтеза.
Можно ввести целое число между 0 и 3. Для аппаратных целей Altera® максимальная конвейерная глубина равняется 2.
Задайте, хотите ли вы, чтобы HDL Coder вставил дополнительную логику, чтобы обработать нестандартные числа в вашем проекте. Нестандартные числа являются числами, которые имеют значения меньше, чем самое маленькое число с плавающей запятой, которое может быть представлено без начальных нулей в мантиссе. Значением по умолчанию является inherit
. См. также HandleDenormals.
Задайте, сопоставить ли блоки в вашем проекте к inherit
, Max
, Min
или Zero
для оператора с плавающей точкой. Значением по умолчанию является inherit
. См. также LatencyStrategy.
Задайте, как реализовать операцию умножения мантиссы во время генерации кода. При помощи различных настроек можно управлять использованием DSP на целевом устройстве FPGA. Значением по умолчанию является inherit
. См. также MantissaMultiplyStrategy.
Этот блок поддерживает генерацию кода для комплексных сигналов.
Когда блок имеет входные параметры с плавающей точкой, HDL Coder игнорирует параметр PipelineDepth и не вставляет конвейерные регистры.
Если блок находится в обратной связи, и у вас нет достаточных задержек в блоке выводом, кодер уменьшает PipelineDepth, чтобы предотвратить отказ балансировки задержки. Для достаточных задержек добавьте блоки Задержки при выводе блока Multiply - Add.
Чтобы сопоставить объединенное умножаются - добавляет операция к модулю DSP, ширина третьего входа c должна составить меньше чем 64 бита для Altera и 48 битов для Xilinx® соответственно.
Операция вычитания в установке Function (a.*b)-c
не сопоставляет с модулем DSP в библиотеках Altera FPGA.