Сложение или вычитание входов
Simulink/Математические операции
Операции HDL-кодера/HDL с плавающей точкой
HDL-кодер/математические операции
Блок Sum выполняет сложение или вычитание своих входов. Блоки Add, Extract, Sum of Elements и Sum являются идентичными блоками. Этот блок может добавлять или вычитать скалярные, векторные или матричные входы. Это также может свернуть элементы массива сигнала и выполнить суммирование.
Вы задаете операции блока с параметром List of signs с плюсом (+
), минус (-
), и распорку (|
).
Количество +
и -
символов равняется количеству входов. Для примера, +-+
требует трех входов. Блок вычитает второй (средний) вход из первого (верхнего) входа, а затем добавляет третий (нижний) вход.
Символ spacer создает дополнительное пространство между портами на значке блока.
Если выполняется только сложение, можно использовать числовое значение, равное количеству входов.
Если существует только один входной порт, один +
или -
добавляет или вычитает элементы по всем размерностям или в заданном измерении.
Блок Sum сначала преобразует входной тип входных данных в свой тип данных аккумулятора, затем выполняет указанные операции. Блок преобразует результат в свой тип выходных данных с помощью заданных режимов округления и переполнения.
Выход вычисление для блока Sum зависит от количества входов блоков и знака входа портов:
Если блок Sum имеет... | И... | Формула вычисления выхода... | Где... |
---|---|---|---|
Один входной порт |
Знак входного порта + |
y = e [0] + e [1] + e [2]... + e [m] |
|
Знак входного порта - |
y = 0,0 - e [0] - e [1] - e [2]... - e [m] | ||
Два или более входных портов |
Все знаки входного порта: |
y = 0,0 - u [0] - u [1] - u [2]... - u [n] |
|
Kth входной порт является первым портом, где знак + |
y = u [k] - u [0] - u [1] - u [2] - u [k-1] (+/-) u [k + 1]... (+/-) u [n] |
Входы могут быть различных типов данных, если вы не выбираете параметр Require all inputs to have the same data type.
Port_1
- Первый входной операнд сигналВходной сигнал операции сложения или вычитания. Если существует только один входной сигнал, то сложение или вычитание выполняется для элементов по всем размерностям или заданному измерению.
Типы данных: half
| single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
Port_n
— n
первый входной операндn
первый входной сигнал к операциям. Количество входов совпадает с количеством знаков в параметре List of signs. Блок применяет операции к входам в указанном порядке. В качестве параметра входа можно также использовать числовое значение, равное количеству List of signs портов. Блок создает входные порты и применяет сложение ко всем входам. Для примера, если вы присваиваете 5
для параметра List of signs, блок создает 5
входные порты и складывает их вместе, чтобы получить выходы.
Все нескалярные входы должны иметь одинаковые размерности. Скалярные входы расширены, чтобы иметь такие же размерности, как и другие входы.
Типы данных: 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
Icon shape
- Форма значка блокаОпределите форму значка блока как прямоугольную или круглую.
Для прямоугольного блока первым входным портом является верхний порт. Для блока круглой суммы первый порт входа является портом, ближайшим к положению 12 часов, идущему в направлении против часовой стрелки вокруг блока. Точно так же другие входные порты появляются в порядке против часовой стрелки вокруг блока.
Параметры блоков: IconShape |
Тип: Вектор символов |
Значения: 'rectangular' | 'round' |
По умолчанию: 'round' |
List of signs
- Операции, выполняемые на входах++
(по умолчанию) | +
| -
| |
| integer
Введите операции сложения и вычитания, выполненные на входах. Для каждой операции создается входной порт. Распорка (|
) создает дополнительное пространство между входными портами на значке блока. Сложение является операцией по умолчанию. Если вы хотите только добавить входы, введите количество входных портов. Операции выполняются в указанном порядке.
Когда вы вводите только один элемент, блок включает параметр Sum over. Для одного векторного входа +
или -
добавляет или вычитает элементы по всем размерностям или в заданном измерении.
Можно манипулировать положениями входных портов на блоке, вставив распорки (|
) между знаками в параметре «Список знаков». Для примера ", ++|--
"создает дополнительное пространство между вторым и третьим входными портами.
Параметры блоков: Inputs |
Тип: Вектор символов |
Значения: '+' | '-' | | | целое число |
По умолчанию: '++' |
Sum over
- Размерности для операций на одном векторном входеВыберите размерность, над которой блок выполняет операцию суммирования.
Для All dimensions все входные элементы суммируются. Когда вы выбираете параметр конфигурации <reservedrangesplaceholder0>, Simulink® включает алгоритмы основной строки для симуляции. Чтобы сгенерировать код основной строки, задайте параметр конфигурации <reservedrangesplaceholder1> (Simulink Coder) Row-major
в дополнение к выбору Use algorithms optimized for row-major array layout. Алгоритмы основной и основной строки различаются только в порядке суммирования. В некоторых случаях из-за различного порядка операции на том же наборе данных вы можете испытывать незначительные числовые различия в выходах алгоритмов column-major и row-major.
Когда вы выбираете Specified dimensions, появляется другой Dimension параметра. Выберите конкретную размерность для суммирования входных векторов.
Включено, когда вы перечисляете только один знак в параметре List of signs.
Параметры блоков: CollapseMode |
Тип: Вектор символов |
Значения: 'All dimensions' | 'Specified dimension' |
По умолчанию: 'All dimensions' |
Dimension
- Размерность для суммирования по векторному входу1
(по умолчанию) | integer
Когда вы выбираете Specified dimension для параметра Sum over, задайте размерность, по которому необходимо выполнить операцию.
Блок следует тем же правилам суммирования, что и MATLAB®
sum
функция.
Предположим, что у вас есть матрица U2 на 3.
Установка значения Dimension 1
результаты выход Y вычисляется как:
Установка значения Dimension 2
результаты выход Y вычисляется как:
Если заданное измерение больше, чем размерность входа, появляется сообщение об ошибке.
Включено при выборе Specified dimension
для параметра Sum over.
Параметры блоков: CollapseDim |
Тип: Вектор символов |
Значение: integer |
По умолчанию: '1' |
Sample time
- Задайте время расчета как значение, отличное от -1
-1
(по умолчанию) | скалярный вектор |Задайте шаг расчета как значение, отличное от -1. Для получения дополнительной информации см. Раздел «Задание шага расчета».
Этот параметр не отображается, если он явно не установлен на значение, отличное от -1
. Для получения дополнительной информации смотрите Блоки, для которых шаг расчета не рекомендован.
Параметры блоков:
SampleTime
|
Тип: Вектор символов |
Значения: скаляр или вектор |
По умолчанию:
'-1'
|
Нажмите кнопку Show data type assistant, чтобы отобразить Data Type Assistant, которая помогает вам задать атрибуты type данных. Для получения дополнительной информации смотрите Задать типы данных Используя Data Type Assistant.
Require all inputs to have the same data type
- Требовать, чтобы все входы имели совпадающий тип данныхoff
(по умолчанию) | on
Укажите, все ли входные сигналы должны иметь совпадающий тип данных. Если вы активируете этот параметр, то ошибка возникает во время симуляции, если типы входного сигнала другие.
Параметры блоков:
InputSameDT
|
Тип: Вектор символов |
Значения:
'off' | 'on'
|
По умолчанию:
'off'
|
Accumulator data type
- Тип данных аккумулятораInherit: Inherit via internal rule
(по умолчанию) | Inherit: Same as first input
| 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>
Выберите тип данных аккумулятора. Тип может быть унаследован, задан непосредственно или выражен как объект типа данных, такой как Simulink.NumericType
. Когда вы выбираете Inherit: Inherit via internal rule
Simulink выбирает тип данных, чтобы сбалансировать числовую точность, эффективность и размер сгенерированного кода, с учетом свойств целевого процессора оборудования.
Параметры блоков: AccumDataTypeStr |
Тип: Вектор символов |
Значения: 'Inherit: Inherit via internal rule | 'Inherit: Same as first input' | '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>' |
По умолчанию: 'Inherit: Inherit via internal rule' |
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: Keep LSB
| Inherit: Inherit via back propagation
| Inherit: Same as first input
| Inherit: Same as accumulator
| 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>
Выберите тип данных для выхода. Тип может быть унаследован, задан непосредственно или выражен как объект типа данных, такой как Simulink.NumericType
.
Когда вы выбираете унаследованную опцию, блок ведет себя следующим образом:
Inherit: Inherit via internal rule
- Simulink выбирает тип данных, чтобы сбалансировать числовую точность, эффективность и размер сгенерированного кода, принимая во внимание свойства встроенного целевого оборудования .
Примечание
Внутреннее правило аккумулятора способствует большей числовой точности, возможно, за счет менее эффективного сгенерированного кода. Чтобы получить ту же точность для выхода, установите тип выходных данных Inherit: Inherit same as accumulator
.
Примечание
Когда вход является типом данных с плавающей точкой, меньшим, чем одинарная точность, Inherit: Inherit via internal rule
тип выходных данных зависит от параметра Inherit с плавающей точкой выходного типа, меньшего, чем параметр конфигурации с одной точностью. Типы данных меньше одной точности, когда количество бит, необходимых для кодирования типа данных, меньше 32 битов, необходимых для кодирования типа данных с одной точностью. Для примера, half
и int16
меньше, чем одинарная точность.
Inherit: Keep MSB
- Simulink выбирает тип данных, который поддерживает полную область значений операции, затем уменьшает точность выхода до размера, соответствующего оборудованию целевого процессора.
Совет
Для более эффективного сгенерированного кода установите Accumulator data type равным Inherit: Inherit via internal rule
, и отменить выбор параметра Saturate on integer overflow.
Это правило никогда не создает переполнения.
Inherit: Keep LSB
- Simulink выбирает тип данных, который поддерживает точность операции, но уменьшает область значений, если полный тип не помещается на встроенном целевом оборудовании.
Совет
Для более эффективного сгенерированного кода установите Accumulator data type равным Inherit: Inherit via internal rule
, и отменить выбор параметра Saturate on integer overflow.
Это правило может привести к переполнению.
Если вы измените настройки целевого процессора, тип данных, выбранный этими внутренними правилами, может измениться. Не всегда программное обеспечение может оптимизировать эффективность кода и числовую точность одновременно. Если правила не отвечают вашим конкретным потребностям в числовой точности или эффективности, используйте одну из следующих опций:
Явным образом задайте тип выходных данных.
Используйте простой выбор Inherit: Same as first 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 first input
- Используйте тип данных первого входного сигнала.
Inherit: Inherit same as accumulator
- Используйте тип данных аккумулятора.
Параметры блоков: OutDataTypeStr |
Тип: Вектор символов |
Значения: 'Inherit: Inherit via internal rule | 'Inherit: Keep MSB' | 'Inherit: Keep LSB' | 'Inherit: Inherit via back propagation' 'Inherit: Same as first input' | 'Inherit: Same as accumulator' | '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>' |
По умолчанию: 'Inherit: Inherit via internal rule' |
Lock data type settings against changes by the fixed-point tools
- Предотвратить переопределение типов данных инструментами с фиксированной точкойoff
(по умолчанию) | on
Выберите, чтобы заблокировать настройки типа данных этого блока от изменений с помощью Fixed-Point Tool и Fixed-Point Advisor. Для получения дополнительной информации смотрите Блокировка настройки типа выходных данных (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' |
Типы данных |
|
Прямое сквозное соединение |
|
Многомерные сигналы |
|
Сигналы переменного размера |
|
Обнаружение пересечения нулем |
|
HDL Coder™ предоставляет дополнительные опции строения, которые влияют на реализацию HDL и синтезированную логику.
Значение по умолчанию Linear
архитектура генерирует цепь N операций (сумматоры) для N входов.
Для блока Sum of Elements HDL Coder поддерживает Tree
и Cascade
архитектуры для блоков Sum of Elements, которые имеют один векторный вход с несколькими элементами.
Этот блок имеет многоциклические реализации, которые вводят дополнительную задержку в сгенерированный код. Чтобы увидеть добавленную задержку, просмотрите сгенерированную модель или модель валидации. См. Сгенерированную модель и модель валидации (HDL Coder).
Архитектура | Дополнительные циклы задержки | Описание |
---|---|---|
Linear | 0 | Генерирует линейную цепь сумматоров для вычисления суммы продуктов. Для нескольких входов, которые имеют различные битовые ширины, |
Tree | 0 | Генерирует древовидную структуру сумматоров для вычисления суммы продуктов. |
Cascade | 1, когда блок имеет один векторный входной порт. | Эта реализация оптимизирует область latency * и быстрее, чем См. Cascade Architecture Best Practices (HDL Coder). |
Примечание
Чтобы использовать настройку LatencyStrategy на вкладке Native Floating Point диалогового окна «Свойств блоков», задайте Linear
или Tree
как архитектура HDL.
Общая информация | |
---|---|
ConstrainedOutputPipeline | Количество регистров для размещения на выходах путем перемещения существующих задержек в рамках вашего проекта. Распределённая конвейеризация не перераспределяет эти регистры. Значение по умолчанию является |
InputPipeline | Количество входных этапов конвейера для вставки в сгенерированный код. Распределённая конвейеризация и ограниченная выходная конвейеризация могут перемещать эти регистры. Значение по умолчанию является |
OutputPipeline | Количество выходных этапов конвейера для вставки в сгенерированный код. Распределённая конвейеризация и ограниченная выходная конвейеризация могут перемещать эти регистры. Значение по умолчанию является |
Примечание
Блок Sum of Elements не поддерживает генерацию HDL-кода с двойными типами данных в режиме Native Floating Point.
Собственная переменная с плавающей точкой | |
---|---|
LatencyStrategy | Задайте, сопоставлять ли блоки в вашем проекте |
NFPCustomLatency | Чтобы задать значение, установите LatencyStrategy равным |
Значение по умолчанию Linear
реализация поддерживает комплексные данные.
The Tree
реализация поддерживает комплексные данные с +
для List of signs параметров блоков. С собственной поддержкой с плавающей точкой, Tree
реализация поддерживает комплексные данные с обоими +
и -
для List of signs.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.