Делить один вход на другой
Операции с симуляцией/математикой
Кодер HDL/Операции с плавающей точкой HDL
Кодер HDL/Математические операции
Блок «Разделить» выдает результат деления своего первого входа на второй. Входами могут быть скаляры, скаляр и нескаляр, или два нескаляра, имеющие одинаковые размеры. Этот блок поддерживает только сложные входные значения в портах разделения, когда все порты имеют один или два типа данных.
Блок разделения функционально является блоком продукта, который имеет два предварительно заданных значения параметров блока:
Умножение -
Element-wise(.*)
Количество входов -
*/
Установка значений по умолчанию для любого из этих параметров может изменить блок разделения на функциональный эквивалент блоку изделия или блоку изделия элементов.
X - Входной сигнал для умноженияВходной сигнал, умножаемый на другие входы.
Чтобы включить один или несколько портов X, укажите один или несколько * символы параметра Number of inputs.
Типы данных: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point
÷ - Входной сигнал для деления или инвертированияВходной сигнал для операций деления или инверсии.
Чтобы включить один или несколько, укажите один или несколько / символы параметра Number of inputs.
Типы данных: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point
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
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. При выборе 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' |
Типы данных |
|
Прямой проход |
|
Многомерные сигналы |
|
Сигналы переменного размера |
|
Обнаружение пересечения нулей |
|
Эти условия могут давать различные результаты между моделированием и сгенерированным кодом:
Входные данные блока «Разделить» содержат NaN или inf стоимость
Блок «Разделить» генерирует NaN или inf во время выполнения
Эта разница обусловлена нефинитностью NaN или inf значения. В таких случаях проверьте конфигурацию модели и устраните создаваемые условия. NaN или inf.
Процесс сборки Simulink Coder™ обеспечивает эффективный код для операций обращения и деления матрицы. В этой таблице описываются преимущества и время доступности каждого преимущества.
| Выгода | Малые матрицы (от 2 по 2 до 5 по 5) | Средние матрицы (от 6 на 6 до 20 на 20) | Большие матрицы (больше 20 на 20) |
|---|---|---|---|
| Сокращение времени выполнения кода по сравнению с R2011a и более ранними версиями | Да | Нет | Да |
| Сокращение использования ПЗУ и ОЗУ по сравнению с R2011a и более ранними версиями | Да, для реальных ценностей | Да, для реальных ценностей | Да, для реальных ценностей |
| Повторное использование переменных | Да | Да | Да |
| Исключение мертвого кода | Да | Да | Да |
| Постоянное складывание | Да | Да | Да |
| Сворачивание выражения | Да | Да | Да |
| Согласованность с результатами кодера MATLAB | Да | Да | Да |
Для блоков с тремя или более входами различных размеров код может включать дополнительный буфер для хранения временных переменных для промежуточных результатов.
HDL Coder™ предоставляет дополнительные опции конфигурации, которые влияют на реализацию HDL и синтезированную логику.
Примечание
При развертывании сгенерированного кода HDL на целевом оборудовании убедитесь, что на панели «Реализация аппаратного обеспечения» диалогового окна «Параметры конфигурации» задано значение «Целые округи деления со знаком». Zero или Floor.
Чтобы выполнить оптимизированную для HDL операцию разделения, подключите блок продукта к блоку разделения в возвратно-поступательном режиме.
Режим по умолчанию
Блок «Разделить» аналогичен блоку «Изделие» с числом входов, равным */.
| Архитектура | Параметры | Описание |
|---|---|---|
Linear
default | Ничего | Создать деление (/) в коде HDL. |
ShiftAdd | UsePipelines | Выполните операции разделения для типов с фиксированной точкой, используя алгоритм, не восстанавливающий разделение, который выполняет несколько операций сдвига и добавления, чтобы вычислить частное. Эта архитектура обеспечивает улучшенную точность по сравнению с методом аппроксимации Ньютона - Рафсона. При использовании этой архитектуры для достижения более высокой максимальной тактовой частоты на целевом устройстве FPGA оставьте свойство блока HDL UsePipelines равным |
Ответный режим
Если для параметра «Количество входов» установлено значение /, блок Делить находится в режиме возвратно-поступательного движения.
Этот блок имеет многоцикловые реализации, которые вводят дополнительную задержку в генерируемый код. Чтобы увидеть добавленную задержку, просмотрите созданную модель или модель проверки. См. раздел Сгенерированная модель и модель проверки (кодер HDL).
В ответном режиме блок разделения имеет реализации блока HDL, описанные в следующей таблице.
| Архитектура | Параметры | Дополнительные циклы задержки | Описание |
|---|---|---|---|
defaultLinear | Ничего | 0 | При вычислении взаимности используйте деление HDL ( |
ReciprocalRsqrtBasedNewton | Iterations | Подписанные входные данные: Неподписанный вход: | Используйте итеративный метод Ньютона. Выберите этот параметр для оптимизации площади. Значение по умолчанию для Рекомендуемое значение для |
ReciprocalRsqrtBasedNewtonSingleRate | Iterations | Подписанные входные данные: ( Неподписанный вход: ( | Используйте односкоростной конвейерный метод Ньютона. Выберите этот параметр для оптимизации скорости или для реализации одной скорости. Значение по умолчанию для Рекомендуемое значение для |
ShiftAdd | UsePipelines | Ввод с подписью: (Входная длина слова + 4) Неподписанный вход: (Входная длина слова + 4) | Выполните обратную операцию на входе с фиксированной точкой, используя алгоритм невосстановительного деления, который выполняет несколько операций сдвига и добавления, чтобы вычислить обратную операцию. Эта архитектура обеспечивает улучшенную точность по сравнению с методом аппроксимации Ньютона - Рафсона. При использовании этой архитектуры для достижения более высокой максимальной тактовой частоты на целевом устройстве FPGA оставьте свойство блока HDL UsePipelines равным |
Итеративный метод Ньютона - Рафсона:
1,5 − 0 .5axi2)
ReciprocalRsqrtBasedNewton и ReciprocalRsqrtBasedNewtonSingleRate реализовать метод Ньютона-Рафсона с помощью:
1x2 − 1
| Общая информация | |
|---|---|
| ConstrainedOutputPipeline | Количество регистров для размещения на выходах путем перемещения существующих задержек в рамках проекта. Распределенная конвейерная обработка не перераспределяет эти регистры. Значение по умолчанию: |
| ConstrainedOutputPipeline | Количество регистров для размещения на выходах путем перемещения существующих задержек в рамках проекта. Распределенная конвейерная обработка не перераспределяет эти регистры. Значение по умолчанию: |
| DSPStyle | Атрибуты синтеза для отображения множителя. Значение по умолчанию: Используйте это свойство с:
|
| InputPipeline | Количество входных ступеней трубопровода для вставки в сформированный код. Распределенная конвейерная обработка и конвейерная обработка с ограниченным выходом могут перемещать эти регистры. Значение по умолчанию: |
| OutputPipeline | Количество выходных ступеней трубопровода для вставки в сформированный код. Распределенная конвейерная обработка и конвейерная обработка с ограниченным выходом могут перемещать эти регистры. Значение по умолчанию: |
| LatencyStrategy | Чтобы включить это свойство, задайте для архитектуры HDL значение |
| CustomLatency | Чтобы включить это свойство, задайте для архитектуры HDL значение |
| Собственная плавающая точка | |
|---|---|
| HandleDenormals | Укажите, должен ли кодер HDL вставлять дополнительную логику для обработки денормальных чисел в конструкцию. Денормальные числа - это числа, значения которых меньше наименьшего числа с плавающей запятой, которое можно представить без ведущих нулей в мантиссе. Значение по умолчанию: |
| NFPCustomLatency | Чтобы задать значение, задайте для параметра LatencyStrategy значение |
| MantissaMultiplyStrategy | Укажите способ выполнения операции умножения мантиссы во время генерации кода. С помощью различных настроек можно управлять использованием DSP на целевом устройстве FPGA. Значение по умолчанию: |
| DivisionAlgorithm | Укажите, следует ли использовать алгоритм Radix-2 или Radix-4 для деления с плавающей запятой. Режим Radix-2 обеспечивает компромисс между задержкой и частотой. Режим Radix-4 обеспечивает компромисс между задержкой и использованием ресурсов. Дополнительные сведения см. в разделе Алгоритм подключения (кодер HDL). |
Для просмотра расчета задержки для типов фиксированных точек с блоками «Разделить» и «Взаимное» в командной строке MATLAB введите:
HDLMathLib
Этот блок не поддерживает генерацию кода для разделения сложными сигналами.
При использовании блока «Разделить» в взаимном режиме применяются следующие ограничения:
При использовании типов с фиксированной точкой входные и выходные данные должны быть скалярными. Для использования векторных входных данных укажите Math архитектура и ввод значения с плавающей запятой.
Только Zero поддерживается режим округления.
В блоке необходимо выбрать параметр «Насыщение при переполнении целого числа».
Для блока «Разделить» только Zero и Simplest поддерживаются режимы округления.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.
