Копирование или инвертирование одного скалярного ввода или свертывание одного нескалярного ввода
Операции с симуляцией/математикой
Кодер HDL/Операции с плавающей точкой HDL
Кодер HDL/Математические операции
Блок «Произведение элементов» вводит один скаляр, вектор или матрицу. Блок можно использовать для:
Копирование скалярного ввода без изменений
Инвертировать скалярный вход (разделить на него 1)
Свернуть вектор или матрицу в скаляр путем умножения всех элементов или принятия последовательных обратных элементов
Сверните матрицу с вектором, используя одну из следующих опций.
Умножение элементов каждой строки или столбца
Выполните последовательные инверсии элементов каждой строки или столбца
Блок Product of Elements функционально является блоком Product, имеющим два предварительно заданных значения параметров:
Умножение: Element-wise(.*)
Количество входов: *
Установка значений по умолчанию для любого из этих параметров может изменить блок «Изделие из элементов» на функциональный эквивалент блоку «Изделие» или блоку «Деление».
Port_1 - Первый вход для умножения или деленияПервый вход для умножения или деления, предоставляемый в виде скаляра, вектора, матрицы или N-D массива.
Типы данных: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point
Port_N - N-ый вход для умножения или деленияN-ый вход для умножения или деления, предоставляемый в виде скаляра, вектора, матрицы или N-D массива.
Типы данных: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point
X - Входной сигнал для умноженияВходной сигнал, умножаемый на другие входы.
Чтобы включить один или несколько портов X, укажите один или несколько * символы параметра Number of inputs.
Типы данных: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point
÷ - Входной сигнал для деления или инвертированияВходной сигнал для операций деления или инверсии.
Для включения одного или нескольких startports укажите один или несколько / символы параметра Number of inputs.
Типы данных: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point
Port_1 - Выход, вычисленный путем умножения, деления или инвертирования входовВыходные данные вычисляются путем умножения, деления или инвертирования входных данных.
Типы данных: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point
Number of inputs - Контрольное количество входов и тип работы* (по умолчанию) | положительный целочисленный скаляр | * или / для каждого входного портаУправление двумя свойствами блока:
Количество входных портов в блоке
Умножается ли каждый вход или делится на выход
При указании:
1 или * или /
Блок имеет один входной порт. В элементном режиме блок обрабатывает входные данные, как описано для блока «Изделие элементов». В матричном режиме, если значение параметра равно 1 или *блок выводит входное значение. Если значение равно /, вход должен быть квадратной матрицей (включая скаляр как вырожденный случай), и блок выводит матрицу обратно. Дополнительные сведения см. в разделах Режим по элементам и Режим матрицы.
Целое значение > 1
Блок имеет количество входов, задаваемое целочисленным значением. Входные данные умножаются вместе в элементном или матричном режиме, как определено параметром умножения. Дополнительные сведения см. в разделах Режим по элементам и Режим матрицы.
Строка без кавычек из двух или более * и / персонажи
Блок имеет количество входов, задаваемое длиной символьного вектора. Каждый вход, который соответствует * символ умножается на вывод. Каждый вход, который соответствует / символ делится на выходные данные. Операции выполняются в режиме элементов или матричном режиме, как определено параметром Multiplication. Дополнительные сведения см. в разделах Режим по элементам и Режим матрицы.
Параметр блока:
Inputs |
| Текст: символьный вектор |
Значения:
'2' | '*' | '**' | '*/' | '*/*' | ... |
По умолчанию:
'*' |
Multiplication - Элементное (. *) или матричное (*) умножениеElement-wise(.*) (по умолчанию) | Matrix(*)Укажите, выполняет ли блок Element-wise(.*) или Matrix(*) умножение.
Параметр блока:
Multiplication |
| Текст: символьный вектор |
Значения:
'Element-wise(.*)' | 'Matrix(*)' |
По умолчанию:
'Element-wise(.*)' |
Multiply over - Все размеры или указанный размерAll dimensions (по умолчанию) | Specified dimensionУкажите размер для умножения как All dimensions, или Specified dimension.
При выборе All dimensions и выберите параметр конфигурации Использовать алгоритмы, оптимизированные для макета массива основных строк, Simulink ® позволяет использовать алгоритмы основных строк для моделирования. Чтобы создать основной код строки, установите параметр конфигурации Array layout (Simulink Coder) в значениеRow-major в дополнение к выбору Use algoriths optimized for row-major array layout (Использовать алгоритмы, оптимизированные для компоновки основных массивов строк). Алгоритмы «столбец-большая» и «строка-большая» различаются только в порядке умножения. В некоторых случаях из-за различной последовательности операций в одном и том же наборе данных могут возникнуть незначительные числовые различия в выходах алгоритмов «столбец-большая» и «строка-большая».
При выборе Specified dimension, можно указать размер как 1 или 2.
Чтобы включить этот параметр, задайте для параметра Количество входов значение * и умножение до Element-wise (.*).
Параметр блока:
CollapseMode |
| Текст: символьный вектор |
Значения:
'All dimensions' | 'Specified dimension' |
По умолчанию:
'All dimensions' |
Dimension - Размер для умножения1 (по умолчанию) | 2 | ... | NУкажите размер для умножения как целое число, меньшее или равное числу размеров входного сигнала.
Чтобы включить этот параметр, установите:
Количество входов в *
Умножение до Element-wise (.*)
Умножить на Specified dimension
Параметр блока: CollapseDim |
| Текст: символьный вектор |
Значения:
'1' | '2' | ... |
По умолчанию: '1' |
Sample time - Укажите время выборки в качестве значения, отличного от -1-1 (по умолчанию) | скаляр | векторУкажите время выборки в качестве значения, отличного от -1. Дополнительные сведения см. в разделе Указание времени образца.
Этот параметр не отображается, если для него явно не задано значение, отличное от -1. Дополнительные сведения см. в разделе Блоки, для которых образец времени не рекомендуется.
Параметр блока:
SampleTime |
| Текст: символьный вектор |
| Значения: скаляр или вектор |
По умолчанию:
'-1' |
Require all inputs to have the same data type - требовать, чтобы все входные данные имели одинаковый тип данных;off (по умолчанию) | onУкажите, должны ли входные сигналы иметь одинаковый тип данных. Если этот параметр включен, то при моделировании возникает ошибка, если типы входных сигналов отличаются.
Параметр блока:
InputSameDT |
| Текст: символьный вектор |
Значения:
'off' | 'on' |
По умолчанию:
'off' |
Output minimum - Минимальное выходное значение для проверки дальности[] (по умолчанию) | скалярМеньшее значение диапазона вывода, которое проверяет Simulink.
Simulink использует минимум для выполнения:
Проверка диапазона параметров (см. раздел Задание минимальных и максимальных значений для параметров блока) для некоторых блоков.
Проверка диапазона моделирования (см. раздел Определение диапазонов сигналов и Включение проверки диапазона моделирования).
Автоматическое масштабирование типов данных с фиксированной точкой.
Оптимизация кода, создаваемого на основе модели. Эта оптимизация может удалить алгоритмический код и повлиять на результаты некоторых режимов моделирования, таких как SIL или внешний режим. Дополнительные сведения см. в разделе Оптимизация с использованием указанных минимального и максимального значений (встроенный кодер).
Примечание
Минимальный выходной сигнал не насыщает и не отсекает фактический выходной сигнал. Вместо этого используйте блок «Насыщенность».
Параметр блока: OutMin |
| Текст: символьный вектор |
Значения: '[ ]'| скаляр |
По умолчанию: '[ ]' |
Output maximum - Максимальное выходное значение для проверки дальности[] (по умолчанию) | скалярВерхнее значение диапазона вывода, которое проверяет Simulink.
Simulink использует максимальное значение для выполнения:
Проверка диапазона параметров (см. раздел Задание минимальных и максимальных значений для параметров блока) для некоторых блоков.
Проверка диапазона моделирования (см. раздел Определение диапазонов сигналов и Включение проверки диапазона моделирования).
Автоматическое масштабирование типов данных с фиксированной точкой.
Оптимизация кода, создаваемого на основе модели. Эта оптимизация может удалить алгоритмический код и повлиять на результаты некоторых режимов моделирования, таких как SIL или внешний режим. Дополнительные сведения см. в разделе Оптимизация с использованием указанных минимального и максимального значений (встроенный кодер).
Примечание
Выходной максимум не насыщает и не отсекает фактический выходной сигнал. Вместо этого используйте блок «Насыщенность».
Параметр блока: OutMax |
| Текст: символьный вектор |
Значения: '[ ]'| скаляр |
По умолчанию: '[ ]' |
Output data type - Укажите тип выходных данныхInherit: Inherit via internal rule (по умолчанию) | Inherit: Inherit via back propagation | Inherit: Same as first input | double | single | int8 | uint8 | int16 | uint16 | int32 | uint32 | int64 | uint64 | fixdt(1,16) | fixdt(1,16,0) | fixdt(1,16,2^0,0) | <data type expression>Выберите тип данных для вывода. Тип может быть унаследован, указан непосредственно или выражен как объект типа данных, например Simulink.NumericType. Дополнительные сведения см. в разделе Типы данных управляющих сигналов.
При выборе унаследованной опции блок ведет себя следующим образом:
Inherit: Inherit via internal rule - Simulink выбирает тип данных, чтобы сбалансировать числовую точность, производительность и размер сгенерированного кода, принимая во внимание свойства встроенного целевого оборудования. При изменении параметров встроенного целевого объекта тип данных, выбранный внутренним правилом, может измениться. Например, если блок умножает вход типа int8 на выигрыш в размере int16 и ASIC/FPGA указан как целевой тип аппаратных средств, тип выходных данных: sfix24. Если Unspecified (assume 32-bit Generic)другими словами, общий 32-разрядный микропроцессор, указывается в качестве целевого аппаратного обеспечения, тип выходных данных - int32. Если длина слов, обеспечиваемая целевым микропроцессором, не может соответствовать диапазону вывода, программное обеспечение Simulink отображает ошибку в средстве просмотра диагностики.
Программное обеспечение не всегда может оптимизировать эффективность кода и числовую точность одновременно. Если внутреннее правило не соответствует конкретным требованиям к числовой точности или производительности, используйте один из следующих вариантов.
Явно укажите тип выходных данных.
Используйте простой выбор Inherit: Same as input.
Явно укажите тип данных по умолчанию, например fixdt(1,32,16) а затем с помощью инструмента «Фиксированная точка» предложите типы данных для модели. Дополнительные сведения см. в разделе fxptdlg (Конструктор фиксированных точек).
Чтобы указать собственное правило наследования, используйте Inherit: Inherit via back propagation а затем используйте блок распространения типа данных. Примеры использования этого блока доступны в блоке Примеры распространения типов данных библиотеки атрибутов сигнала.
Inherit: Inherit via back propagation - Использовать тип данных управляющего блока.
Inherit: Same as first input - Использовать тип данных первого входного сигнала.
Если входные данные имеют тип данных с плавающей запятой, меньший, чем единичная точность, Inherit: Inherit via internal rule тип выходных данных зависит от настройки выходного типа Inherit с плавающей запятой, меньшего, чем параметр конфигурации с одинарной точностью. Типы данных меньше, чем единичная точность, когда количество битов, необходимое для кодирования типа данных, меньше, чем 32 бита, необходимых для кодирования типа данных с одинарной точностью. Например, half и int16 меньше, чем единичная точность.
Параметр блока: OutDataTypeStr |
| Текст: символьный вектор |
Значения: 'Inherit: Inherit via internal rule | 'Inherit: Same as first input' | 'Inherit: Inherit via back propagation' | 'double' | 'single' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | '<data type expression>' |
По умолчанию: 'Inherit: Inherit via internal rule' |
Lock output data type setting against changes by the fixed-point tools - Запретить переопределение типа выходных данных инструментами с фиксированной точкойoff (по умолчанию) | onВыберите этот параметр, чтобы инструменты с фиксированной точкой не переопределяли тип данных «Вывод», указанный в блоке. Дополнительные сведения см. в разделе Использование параметров типа выходных данных блокировки (конструктор фиксированных точек).
Параметр блока:
LockScale |
| Текст: символьный вектор |
Значения:
'off' | 'on' |
По умолчанию:
'off' |
Integer rounding mode - Режим округления для операций с фиксированной точкойFloor (по умолчанию) | Ceiling | Convergent | Nearest | Round | Simplest | ZeroВыберите режим округления для операций с фиксированной точкой. Можно выбрать:
CeilingОкругляет положительные и отрицательные числа в сторону положительной бесконечности. Эквивалентно MATLAB ®
ceil функция.
ConvergentОкругляет число до ближайшего представимого значения. Если возникает связь, округляется до ближайшего чётного целого числа. Эквивалентно Designer™ фиксированной точки convergent функция.
FloorОкругляет положительные и отрицательные числа в сторону отрицательной бесконечности. Эквивалентно MATLAB floor функция.
NearestОкругляет число до ближайшего представимого значения. Если возникает галстук, округляется до положительной бесконечности. Эквивалентно конструктору фиксированных точек nearest функция.
RoundОкругляет число до ближайшего представимого значения. Если возникает связь, округляет положительные числа в сторону положительной бесконечности и округляет отрицательные числа в сторону отрицательной бесконечности. Эквивалентно конструктору фиксированных точек round функция.
SimplestВыбор между округлением в сторону пола и округлением в сторону нуля для создания кода округления, который является максимально эффективным.
ZeroОкругляет число до нуля. Эквивалентно MATLAB fix функция.
Дополнительные сведения см. в разделе Округление (конструктор фиксированных точек).
Параметры блока всегда округляются до ближайшего представимого значения. Для управления округлением параметра блока введите выражение с помощью функции округления MATLAB в поле маски.
Параметр блока:
RndMeth |
| Текст: символьный вектор |
Значения:
'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero' |
По умолчанию:
'Floor' |
Saturate on integer overflow - Метод действия переполненияoff (по умолчанию) | onУкажите, будут ли переполнения насыщаться или переноситься.
| Действие | Объяснение | Влияние на переполнение | Пример |
|---|---|---|---|
|
Установите этот флажок ( |
Возможно переполнение модели, и требуется явная защита от насыщения в сгенерированном коде. |
Переполнения насыщаются минимальным или максимальным значением, которое может представлять тип данных. |
Максимальное значение, |
|
Не устанавливайте этот флажок ( |
Требуется оптимизировать эффективность созданного кода. Необходимо избегать чрезмерного указания того, как блок обрабатывает сигналы вне диапазона. Дополнительные сведения см. в разделе Устранение ошибок диапазона сигналов. |
Переполнение до соответствующего значения, представляемого типом данных. |
Максимальное значение, |
Если этот флажок установлен, насыщение применяется ко всем внутренним операциям блока, а не только к выводу или результату. Обычно процесс генерации кода может обнаруживать, когда переполнение невозможно. В этом случае генератор кода не создает код насыщения.
Параметр блока: SaturateOnIntegerOverflow |
| Текст: символьный вектор |
Значения:
'off' | 'on' |
По умолчанию: 'off' |
Типы данных |
|
Прямой проход |
|
Многомерные сигналы |
|
Сигналы переменного размера |
|
Обнаружение пересечения нулей |
|
Блок «Произведение элементов» использует эти алгоритмы для выполнения элементных операций на входах типов с плавающей запятой, встроенными целыми и фиксированными точками.
| Вход | Элементная операция | Алгоритм |
|---|---|---|
Реальный скаляр, | Умножение | y = u |
| Подразделение | y = 1/u | |
Действительный вектор или матрица с элементами | Умножение | y = u1*u2*u3*...*uN |
| Подразделение | y = ((((1/u1)/u2)/u3).../uN) | |
Сложный скаляр, | Умножение | y = u |
| Подразделение | y = 1/u | |
Комплексный вектор или матрица с элементами | Умножение | y = u1*u2*u3*...*uN |
| Подразделение | y = ((((1/u1)/u2)/u3).../uN) |
Если указанная размерность для элементного умножения или деления является строкой или столбцом матрицы, алгоритм применяется к этой строке или столбцу. Рассмотрим эту модель.

Верхний блок Произведение элементов сворачивает матричный ввод в скаляр, принимая последовательные инверсы четырех элементов:
y = ((((1/2+i)/3)/4-i)/5)
Нижний блок Произведение элементов (Product of Elements) сворачивает матричный ввод в вектор, предпринимая последовательные инверсии вдоль второго размера:
y(1) = ((1/2+i)/3)
y(2) = ((1/4-i)/5)
HDL Coder™ предоставляет дополнительные опции конфигурации, которые влияют на реализацию HDL и синтезированную логику.
Поддержка кодера HDL Tree и Cascade архитектуры для блоков Product или Product of Elements, которые имеют один векторный ввод с несколькими элементами.
Этот блок имеет многоцикловые реализации, которые вводят дополнительную задержку в генерируемый код. Чтобы увидеть добавленную задержку, просмотрите созданную модель или модель проверки. См. раздел Сгенерированная модель и модель проверки (кодер HDL).
| Архитектура | Дополнительные циклы задержки | Описание |
|---|---|---|
Linear (по умолчанию) | 0 | Создает линейную цепочку сумматоров для вычисления суммы произведений. |
Tree | 0 | Создает древовидную структуру сумматоров для вычисления суммы произведений. |
Cascade | 1, когда блок имеет один векторный входной порт. | Эта реализация оптимизирует область задержки * и быстрее, чем См. Передовые практики каскадной архитектуры (кодер HDL). |
Примечание
Блок Product of Element не поддерживает генерацию кода HDL с помощью double типы данных в Native Floating Point режим.
При использовании блока в режиме умножения матрицы можно указать DotProductStrategy. Этот параметр определяет, нужно ли реализовать умножение матрицы с помощью дерева сумматоров и множителей или использовать реализацию блока умножения-накопления. Значение по умолчанию: Fully Parallel.
Примечание
Для DotProductStrategy должно быть установлено значение Fully Parallel при использовании Native Floating Point режим.
Дополнительные сведения см. в разделе Кодер HDL (DotProductStrategy).
См. также Рекомендации по проектированию матриц и векторов (кодер HDL).
| Общая информация | |
|---|---|
| ConstrainedOutputPipeline | Количество регистров для размещения на выходах путем перемещения существующих задержек в рамках проекта. Распределенная конвейерная обработка не перераспределяет эти регистры. Значение по умолчанию: |
| DSPStyle | Атрибуты синтеза для отображения множителя. Значение по умолчанию: |
| InputPipeline | Количество входных ступеней трубопровода для вставки в сформированный код. Распределенная конвейерная обработка и конвейерная обработка с ограниченным выходом могут перемещать эти регистры. Значение по умолчанию: |
| OutputPipeline | Количество выходных ступеней трубопровода для вставки в сформированный код. Распределенная конвейерная обработка и конвейерная обработка с ограниченным выходом могут перемещать эти регистры. Значение по умолчанию: |
| Собственная плавающая точка | |
|---|---|
| HandleDenormals | Укажите, должен ли кодер HDL вставлять дополнительную логику для обработки денормальных чисел в конструкцию. Денормальные числа - это числа, значения которых меньше наименьшего числа с плавающей запятой, которое можно представить без ведущих нулей в мантиссе. Значение по умолчанию: |
| LatencyStrategy | Укажите, следует ли сопоставлять блоки в проекте |
| NFPCustomLatency | Чтобы задать значение, задайте для параметра LatencyStrategy значение |
| MantissaMultiplyStrategy | Укажите способ выполнения операции умножения мантиссы во время генерации кода. С помощью различных настроек можно управлять использованием DSP на целевом устройстве FPGA. Значение по умолчанию: |
Реализация по умолчанию (линейная) поддерживает сложные данные.
Комплексное разделение не поддерживается. Для получения информации о блочных реализациях блока Product в режиме разделения или в режиме взаимного взаимодействия см. раздел Создание кода HDL на странице ссылки на блок Divide.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.

