Умножьте вход на константу
Simulink/Обычно используемые блоки
Simulink/Математические операции
HDL-кодер/обычно используемые блоки
Операции HDL-кодера/HDL с плавающей точкой
HDL-кодер/математические операции
Блок Gain умножает вход на постоянное значение (усиление). Каждый из входных параметров и коэффициента усиления может быть скаляром, вектором или матрицей.
Вы задаете значение усиления в параметре Gain. Параметр Multiplication позволяет вам задать поэлементное или матричное умножение. Для матричного умножения этот параметр также позволяет вам указать порядок мультипликаций.
Усиление преобразуется из двойного в тип данных, заданный в маске блока, в автономном режиме с помощью округления в ближайшее и насыщения. Вход и усиление затем умножаются, и результат преобразуется в тип выходных данных с помощью заданных режимов округления и переполнения.
Port_1
- Входной сигналБлок Gain принимает действительный или комплексный скаляр, вектор или матричный вход. Блок Gain поддерживает типы данных с фиксированной точкой. Если вход блока Gain действителен, а усиление комплексно, выход комплексен.
Типы данных: half
| single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
Port_1
- Вход умножен на коэффициент усиленияБлок Gain выводит вход, умноженный на постоянное значение усиления. Когда вход блока Gain действителен, а усиление комплексно, выход комплексен.
Типы данных: half
| single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
Gain
- Значение, на которое можно умножить вход1
(по умолчанию) | real or complex-valued scalar, vector, or matrix
Задайте значение, на которое можно умножить вход. Усиление может быть действительным или комплексно-значимым скаляром, вектором или матрицей.
Параметры блоков:
Gain |
Тип: Вектор символов |
Значения:
'1' | real- or complex-valued scalar, vector, or matrix |
По умолчанию:
'1' |
Multiplication
- Задайте режим умноженияElement-wise(K.*u)
(по умолчанию) | Matrix(K*u)
| Matrix(u*K)
| Matrix(K*u) (u vector)
Задайте один из следующих режимов умножения:
Element-wise(K.*u)
- Каждый элемент входа умножается на каждый элемент усиления. Блок выполняет расширения, если необходимо, так, чтобы вход и усиление имели одинаковые размерности.
Matrix(K*u)
- Вход и усиление умножаются на матрицу с входом в качестве второго операнда.
Matrix(u*K)
- Вход и усиление умножаются на матрицу с входом в качестве первого операнда.
Matrix(K*u) (u vector)
- Вход и усиление умножаются на матрицу с входом в качестве второго операнда. Этот режим идентичен Matrix(K*u)
, за исключением того, как определяются размерности.
Предположим, что K
является m-by-n
матрица. Matrix(K*u)(u vector)
устанавливает вход в вектор длины n
и выход в вектор длины m
. Напротив, Matrix(K*u)
использует распространение, чтобы определить размерности для входа и вывода. Для m-by-n
матрица усиления, вход может распространяться на n-by-q
матрица, и выход становится m-by-q
матрица.
Параметр:
Multiplication
|
Тип: Вектор символов |
Значение:
'Element-wise(K.*u)' | 'Matrix(K*u)' | 'Matrix(u*K)' | 'Matrix(K*u) (u vector)' |
По умолчанию:
'Element-wise(K.*u)'
|
Sample time
- Задайте время расчета как значение, отличное от -1
-1
(по умолчанию) | скалярный вектор |Задайте шаг расчета как значение, отличное от -1. Для получения дополнительной информации см. Раздел «Задание шага расчета».
Этот параметр не отображается, если он явно не установлен на значение, отличное от -1
. Для получения дополнительной информации смотрите Блоки, для которых шаг расчета не рекомендован.
Параметры блоков:
SampleTime
|
Тип: Вектор символов |
Значения: скаляр или вектор |
По умолчанию:
'-1'
|
Output minimum
- Минимальное выходное значение для проверки области значений[]
(по умолчанию) | скаляромБолее низкое значение выходной области значений, который Simulink® проверки.
Simulink использует минимум для выполнения:
Проверка области значений параметров (см. «Задание минимальных и максимальных значений для параметров блоков») для некоторых блоков.
Проверка области значений симуляции (см. «Задание диапазонов сигнала» и «Включение проверки области значений симуляции»).
Автоматическое масштабирование типов данных с фиксированной точкой.
Оптимизация кода, который вы генерируете из модели. Эта оптимизация может удалить алгоритмический код и повлиять на результаты некоторых режимов симуляции, таких как SIL или режим external mode. Для получения дополнительной информации смотрите Оптимизировать используя указанные минимальное и максимальное значения (Embedded Coder).
Примечание
Output minimum не насыщает или не зажимает фактический выходной сигнал. Вместо этого используйте блок Saturation.
Параметры блоков: OutMin |
Тип: Вектор символов |
Значения: '[ ]' | скаляр |
По умолчанию: '[ ]' |
Output maximum
- Максимальное выходное значение для проверки области значений[]
(по умолчанию) | скаляромВерхнее значение выходной области значений, который Simulink проверяет.
Simulink использует максимальное значение для выполнения:
Проверка области значений параметров (см. «Задание минимальных и максимальных значений для параметров блоков») для некоторых блоков.
Проверка области значений симуляции (см. «Задание диапазонов сигнала» и «Включение проверки области значений симуляции»).
Автоматическое масштабирование типов данных с фиксированной точкой.
Оптимизация кода, который вы генерируете из модели. Эта оптимизация может удалить алгоритмический код и повлиять на результаты некоторых режимов симуляции, таких как SIL или режим external mode. Для получения дополнительной информации смотрите Оптимизировать используя указанные минимальное и максимальное значения (Embedded Coder).
Примечание
Output maximum не насыщает или не зажимает фактический выходной сигнал. Вместо этого используйте блок Saturation.
Параметры блоков: OutMax |
Тип: Вектор символов |
Значения: '[ ]' | скаляр |
По умолчанию: '[ ]' |
Output data type
- Задайте тип выходных данныхInherit: Inherit via internal rule
(по умолчанию) | Inherit: Keep MSB
| Inherit: Match scaling
| Inherit: Inherit via back propagation
| Inherit: Same as input
| double
| single
| half
| int8
| uint8
| int16
| uint16
| int32
| int64
| uint64
| uint32
| 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 отображает ошибку в Diagnostic Viewer.
Inherit: Keep MSB
- Simulink выбирает тип данных, который поддерживает полную область значений операции, затем уменьшает точность выхода до размера, соответствующего оборудованию целевого процессора.
Совет
Для более эффективного сгенерированного кода отмените выбор параметра Saturate on integer overflow.
Это правило никогда не создает переполнения.
Inherit: Match scaling
- Simulink выбирает тип данных, масштабирование которого соответствует масштабированию входных типов. Если полная область значений типа не помещается на оборудовании целевого процессора, область значений уменьшается, получая тип, подходящий для оборудования целевого процессора. Это правило может привести к переполнению.
Не всегда программное обеспечение может оптимизировать эффективность кода и числовую точность одновременно. Если эти внутренние правила не отвечают вашим конкретным потребностям в числовой точности или эффективности, используйте одну из следующих опций:
Явным образом задайте тип выходных данных.
Используйте простой выбор Inherit: Same as input
.
Явным образом задайте тип данных по умолчанию, такой как fixdt(1,32,16)
а затем используйте Fixed-Point Tool, чтобы предложить типы данных для вашей модели. Для получения дополнительной информации см. fxptdlg
(Fixed-Point Designer).
Чтобы задать свое собственное правило наследования, используйте Inherit: Inherit via back propagation
а затем используйте блок Data Type Propagation. Примеры использования этого блока доступны в библиотеке Signal Attributes Data Type Propagation Examples блоке.
Inherit: Inherit via back propagation
- Используйте тип данных ведущего блока.
Inherit: Same as input
- Используйте тип данных входного сигнала.
Когда вход является типом данных с плавающей точкой, меньшим, чем одинарная точность, Inherit: Inherit via internal rule
тип выходных данных зависит от параметра Inherit с плавающей точкой выходного типа, меньшего, чем параметр конфигурации с одной точностью. Типы данных меньше одной точности, когда количество бит, необходимых для кодирования типа данных, меньше 32 битов, необходимых для кодирования типа данных с одной точностью. Для примера, half
и int16
меньше, чем одинарная точность.
Параметры блоков: OutDataTypeStr |
Тип: Вектор символов |
Значения: 'Inherit: Inherit via internal rule' | 'Inherit: Keep MSB' | 'Inherit: Match scaling' | 'Inherit: Same as input' | 'Inherit: Inherit via back propagation' | 'single' | 'half' | '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
Выберите этот параметр, чтобы предотвратить переопределение инструментами с фиксированной точкой типа данных Output, заданного на блоке. Для получения дополнительной информации смотрите Использование настройки типа выходных данных блокировки (Fixed-Point Designer).
Параметры блоков:
LockScale
|
Тип: Вектор символов |
Значения:
'off' | 'on'
|
По умолчанию:
'off'
|
Integer rounding mode
- Режим округления для операций с фиксированной точкойFloor
(по умолчанию) | Ceiling
| Convergent
| Nearest
| Round
| Simplest
| Zero
Задайте режим округления для операций с фиксированной точкой. Для получения дополнительной информации см. раздел Округление (Fixed-Point Designer).
Параметры блоков всегда округлятся до ближайшего представимого значения. Чтобы контролировать округление параметров блоков, введите выражение с помощью MATLAB® функция округления в поле маски.
Параметры блоков:
RndMeth
|
Тип: Вектор символов |
Значения:
'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero' |
По умолчанию:
'Floor'
|
Saturate on integer overflow
- Метод действия переполненияoff
(по умолчанию) | on
Укажите, будут ли переполнения насыщаться или переноситься.
Действие | Объяснение | Влияние на переливы | Пример |
---|---|---|---|
Установите этот флажок ( |
Ваша модель имеет возможное переполнение, и вы хотите явную защиту от насыщения в сгенерированном коде. |
Переполнения достигает минимального или максимального значения, которое может представлять тип данных. |
Максимальное значение, которое |
Не устанавливайте этот флажок ( |
Вы хотите оптимизировать эффективность вашего сгенерированного кода. Вы хотите избежать переопределения того, как блок обрабатывает сигналы вне области допустимого. Для получения дополнительной информации смотрите Поиск и устранение ошибок диапазона сигнала. |
Переполнения переходят к соответствующему значению, которое представимо типом данных. |
Максимальное значение, которое |
Когда вы устанавливаете этот флажок, насыщение применяется к каждой внутренней операции на блоке, а не только к выходу или результату. Обычно процесс генерации кода может обнаружить, когда переполнение невозможно. В этом случае генератор кода не производит код насыщения.
Параметры блоков: SaturateOnIntegerOverflow |
Тип: Вектор символов |
Значения:
'off' | 'on'
|
По умолчанию: 'off' |
Parameter minimum
- Задайте минимальное значение усиления[]
(по умолчанию) | скаляромЗадайте минимальное значение усиления. Значение по умолчанию []
(не определено). Simulink использует это значение для выполнения:
Проверка области значений параметров (см. «Задание минимальных и максимальных значений для параметров блоков»)
Автоматическое масштабирование типов данных с фиксированной точкой
Параметры блоков: ParamMin |
Тип: Вектор символов |
Значение: скаляр |
По умолчанию: '[ ]' |
Parameter maximum
- Задайте максимальное значение усиления[]
(по умолчанию) | скаляромЗадайте максимальное значение усиления. Значение по умолчанию []
(не определено). Simulink использует это значение для выполнения:
Проверка области значений параметров (см. «Задание минимальных и максимальных значений для параметров блоков»)
Автоматическое масштабирование типов данных с фиксированной точкой
Параметры блоков: ParamMax |
Тип: Вектор символов |
Значение: скаляр |
По умолчанию: '[ ]' |
Parameter data type
- Задайте тип данных параметра GainInherit: Inherit via internal rule
(по умолчанию) | Inherit: Same as input
| Inherit: Inherit from 'Gain'
| double
| single
| half
| int8
| uint8
| int16
| uint16
| int32
| uint32
| int64
| uint64
| fixdt(1,16)
| fixdt(1,16,0)
| fixdt(1,16,2^0,0)
| <data type expression>
Задайте тип данных параметра Gain.
Параметры блоков: ParamDataTypeStr |
Тип: Вектор символов |
Значения: 'Inherit: Inherit via internal rule | 'Inherit: Same as input' | 'Inherit: Inherit via back propagation' | 'single' | 'half' | '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' |
Типы данных |
|
Прямое сквозное соединение |
|
Многомерные сигналы |
|
Сигналы переменного размера |
|
Обнаружение пересечения нулем |
|
HDL Coder™ предоставляет дополнительные опции строения, которые влияют на реализацию HDL и синтезированную логику.
Можно использовать настраиваемый параметр в блоке Gain, предназначенном для генерации HDL-кода. Для получения дополнительной информации смотрите Сгенерировать порты DUT для настраиваемых параметров (HDL Coder).
ConstMultiplierOptimization | Описание |
---|---|
none (По умолчанию) | По умолчанию HDL Coder не выполняет оптимизацию CSD или FCSD. Код, сгенерированный для блока Gain, сохраняет операции умножения. |
csd | Когда вы задаете эту опцию, сгенерированный код уменьшает площадь, используемую моделью, поддерживая или увеличивая тактовую частоту, используя методы канонической цифры со знаком (CSD). CSD заменяет операции умножения на операции сложения и вычитания. CSD минимизирует количество операций сложения, необходимых для постоянного умножения, представляя двоичные числа с минимальным количеством ненулевых цифр. |
fcsd | Эта опция использует факторизованные методы CSD (FCSD), которые заменяют операции умножения на сдвиг и складывают/вычитают операции для определенных факторов операндов. Эти факторы обычно являются простыми, но могут также быть числом, близким к степени 2, что способствует сокращению площади. Вы можете добиться большего сокращения площади с помощью FCSD за счет уменьшения тактовой частоты. |
auto | Когда вы задаете эту опцию, кодер выбирает между оптимизацией CSD или FCSD. Кодер выбирает оптимизацию, которая приводит к наиболее эффективной по площади реализации, основываясь на количестве требуемых сумматоров. Когда вы задаете |
Общая информация | |
---|---|
ConstMultiplierOptimization | Canonical signed digit (CSD) или факторизованная оптимизация CSD. Значение по умолчанию является |
ConstrainedOutputPipeline | Количество регистров для размещения на выходах путем перемещения существующих задержек в рамках вашего проекта. Распределённая конвейеризация не перераспределяет эти регистры. Значение по умолчанию является |
DSPStyle | Атрибуты синтеза для отображения множителей. Значение по умолчанию является |
InputPipeline | Количество входных этапов конвейера для вставки в сгенерированный код. Распределённая конвейеризация и ограниченная выходная конвейеризация могут перемещать эти регистры. Значение по умолчанию является |
OutputPipeline | Количество выходных этапов конвейера для вставки в сгенерированный код. Распределённая конвейеризация и ограниченная выходная конвейеризация могут перемещать эти регистры. Значение по умолчанию является |
Примечание
Для некоторых значений параметра Gain, собственный с плавающей точкой реализует алгоритм по-разному вместо использования умножителей. Для примера, если вы задаете значение параметра Gain 1
сгенерированная модель использует провод, чтобы передать вход в выход. Если вы устанавливаете параметр Gain равным -1
сгенерированная модель показывает блок Unary Minus, который инвертирует полярность входного сигнала. Эта реализация уменьшает задержки и использование ресурсов на целевой платформе.
Собственная переменная с плавающей точкой | |
---|---|
HandleDenormals | Укажите, хотите ли вы, чтобы HDL Coder вставил дополнительную логику для обработки денормальных чисел в ваш проект. Денормальные числа являются числами, которые имеют величины меньше, чем наименьшее число с плавающей запятой, которое может быть представлено без ведущих нулей в мантиссе. Значение по умолчанию является |
LatencyStrategy | Задайте, сопоставлять ли блоки в вашем проекте |
NFPCustomLatency | Чтобы задать значение, установите LatencyStrategy равным |
MantissaMultiplyStrategy | Задайте, как реализовать операцию умножения мантиссы во время генерации кода. При помощи различных настроек можно управлять использованием DSP на целевом устройстве FPGA. Значение по умолчанию является |
Этот блок поддерживает генерацию кода для сложных сигналов.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.