Вычислите квадратный корень, подписанный квадратный корень или обратную величину квадратного корня
Simulink / Математические операции
HDL Coder / Операции Плавающей точки HDL
HDL Coder / Математические операции
Блок Sqrt вычисляет квадратный корень, подписанный квадратный корень или обратную величину квадратного корня на входном сигнале. Выберите одну из следующих функций из списка параметров Function.
Функция | Описание | Математическое выражение | MATLAB® Эквивалентный |
---|---|---|---|
sqrt
| Квадратный корень из входа |
|
sqrt
|
signedSqrt
| Квадратный корень из абсолютного значения входа, умноженного на знак входа |
| — |
rSqrt
| Обратная величина квадратного корня из входа |
| — |
Значок блока изменяется, чтобы совпадать с функцией.
Port_1
— Входной сигналВходной сигнал с блоком, чтобы вычислить квадратный корень, подписанный квадратный корень или обратную величину квадратного корня. sqrt
функция принимает действительные или комплексные входные параметры, за исключением комплексных сигналов фиксированной точки. signedSqrt
и rSqrt
не принимайте комплексные входные параметры. Входной сигнал должен быть числом с плавающей точкой.
Эта таблица суммирует поддержку составных типов и отрицательные величины для плавающей точки, целого числа и типов данных с фиксированной точкой для sqrt
, rSqrt
, и signedSqrt
функции.
Функция | Тип данных | Комплекс | Отрицательные величины | |
---|---|---|---|---|
Входной параметр | Вывод | |||
sqrt | Плавающая точка | Да | Да | Да |
Целочисленная и фиксированная точка | Нет | Нет | Нет | |
| Плавающая точка | Нет | Нет | Да |
Целочисленная и фиксированная точка | Нет | Нет | Нет | |
signedSqrt | Плавающая точка | Нет | Да | Да |
Целочисленная и фиксированная точка | Нет | Нет | Нет |
Если вход отрицателен, установите Output signal объединять для всех функций кроме signedSqrt
.
Типы данных: single
| double
| half
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
Port_1
— Выходной сигналВыходной сигнал, который является квадратным корнем, подписанным квадратным корнем или обратной величиной квадратного корня из входного сигнала. Когда вход является целым числом или фиксированной точкой, выход должен быть плавающей точкой.
Типы данных: single
| double
| half
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
Function
— Функция блок выполняетsqrt
(значение по умолчанию) | signedSqrt
| rSqrt
Задайте математическую функцию, которую вычисляет блок. Значок блока изменяется, чтобы совпадать с функцией, которую вы выбираете.
Функция | Блокируйте значок |
---|---|
sqrt
| |
signedSqrt
| |
rSqrt
|
Когда этот параметр устанавливается на signedSqrt
, параметр Intermediate results data type отключен.
Параметры блоков: Operator |
Ввод: символьный вектор |
Значения: 'sqrt' | 'signedSqrt' | 'rSqrt' |
Значение по умолчанию: 'sqrt' |
Output signal type
— Тип выходного сигналаauto
(значение по умолчанию) | real
| complex
Задайте тип выходного сигнала блока.
Функция | Тип входного сигнала | Тип выходного сигнала | ||
---|---|---|---|---|
'auto' | Действительный | Комплекс | ||
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
Параметры блоков: OutputSignalType |
Ввод: символьный вектор |
Значения: 'auto' | 'real' | 'complex' |
Значение по умолчанию: 'auto' |
Sample time
— Задайте шаг расчета как значение кроме -1
(значение по умолчанию) | скаляр | векторЗадайте шаг расчета как значение кроме-1. Для получения дополнительной информации см. Настройку времени выборки.
Этот параметр не отображается, если он явным образом не установлен в значение кроме -1
. Чтобы узнать больше, смотрите Блоки, для Которых Не Рекомендуется Шаг расчета.
Параметры блоков:
SampleTime |
Ввод: символьный вектор |
Значения: скаляр или вектор |
Значение по умолчанию:
'-1' |
Method
— Метод, чтобы вычислить обратную величину квадратного корняExact
(значение по умолчанию) | Newton-Raphson
Задайте метод для вычисления обратной величины квадратного корня. Этот параметр только допустим для rSqrt
функция.
Метод | Поддерживаемые типы данных | Когда использовать этот метод |
---|---|---|
Exact
| Плавающая точка | Вы не хотите приближение. Примечание Ввод или вывод должен быть плавающей точкой. |
Newton-Raphson
| Фиксированная точка с плавающей точкой и встроенные целочисленные типы | Вы хотите быстрое, приближенное вычисление. |
Exact
метод обеспечивает результаты, которые сопоставимы с расчетами MATLAB.
Примечание
Алгоритмы для sqrt
и signedSqrt
всегда имеют Exact
введите, неважно, какой выбор появляется на диалоговом окне блока.
Параметры блоков: AlgorithmType |
Ввод: символьный вектор |
Значения: 'Exact' | 'Newton-Raphson' |
Значение по умолчанию: 'Exact' |
Number of iterations
— Количество итераций используется для алгоритма Ньютона Рэфсона
(значение по умолчанию) | целое числоЗадайте количество итераций, чтобы выполнить алгоритм Ньютона-Raphson. Этот параметр допустим с rSqrt
функционируйте и Newton-Raphson
значение для Method.
Примечание
Если вы входите 0, блок выход является исходным предположением алгоритма Ньютона-Raphson.
Параметры блоков: Iterations |
Ввод: символьный вектор |
Значения: целое число |
Значение по умолчанию: '3' |
Нажмите кнопку Show data type assistant, чтобы отобразить Data Type Assistant, который помогает вам установить атрибуты типа данных. Для получения дополнительной информации смотрите, Задают Типы данных Используя Ассистент Типа данных.
Intermediate results data type
— Тип данных промежуточных результатовInherit:Inherit via internal rule
(значение по умолчанию) | Inherit: Inherit from input
| Inherit: Inherit from output
| double
| single
| int8
| uint8
| int16
| uint16
| int32
| uint32
| int64
| uint64
| fixdt(1,16,,0)
| fixdt(1,16,2^0,0)
| <data type expression>
Задайте тип данных для промежуточных результатов, когда вы установите Function на sqrt
или rSqrt
на панели Main.
Тип может быть наследован, задан непосредственно или описан как объект типа данных, такой как Simulink.NumericType
.
Примечание
Чтобы избежать переполнения, промежуточный тип данных должен быть больше, чем или равным типу данных, который может содержать квадрат типа выходных данных.
Следуйте этим инструкциям по установке промежуточного типа данных явным образом для функции квадратного корня, sqrt
:
Типы входных и выходных данных | Промежуточный тип данных |
---|---|
Ввод или вывод является двойным. | Используйте дважды. |
Ввод или вывод является одним, и любой многократный тип данных не является двойным. | Используйте один или двойной. |
Ввод и вывод является фиксированной точкой. | Используйте фиксированную точку. |
Следуйте этим инструкциям по установке промежуточного типа данных явным образом для взаимной функции квадратного корня, rSqrt
:
Типы входных и выходных данных | Промежуточный тип данных |
---|---|
Вход является двойным, и выход не является одним. | Используйте дважды. |
Вход не является одним, и выход является двойным. | Используйте дважды. |
Ввод и вывод является фиксированной точкой. | Используйте фиксированную точку. |
Внимание
Не устанавливайте Intermediate results data type на Inherit:Inherit from output
когда:
Вы выбираете Newton-Raphson
вычислить обратную величину квадратного корня.
Тип входных данных является плавающей точкой.
Тип выходных данных является фиксированной точкой.
При этих условиях, выбор Inherit:Inherit from output
дает к субоптимальной эффективности и производит ошибку.
Чтобы избежать этой ошибки, преобразуйте входной сигнал от с плавающей точкой до типа данных с фиксированной точкой. Например, вставьте блок Data Type Conversion перед блоком Sqrt, чтобы выполнить преобразование.
Этот параметр отключен, когда параметр Function устанавливается на signedSqrt
.
Параметры блоков: IntermediateResultsDataTypeStr |
Ввод: символьный вектор |
Значения: 'Inherit: Inherit via internal rule' | 'Inherit: Inherit from input' | 'Inherit: Inherit from output' | 'double' | 'single' int8 uint8 int16 uint16 int32 uint32 int64 uint64 , fixdt(1,16,0) , fixdt(1,16,2^0,0) . '<data type expression>' |
Значение по умолчанию: 'Inherit: Inherit via internal rule' |
Output
— Тип выходных данныхInherit: Same as first input
(значение по умолчанию) | Inherit: Inherit via internal rule
| Inherit: Inherit via back propagation
| double
| single
| half
| int8
| int32
| uint32
| int64
| uint64
| fixdt(1,16,2^0,0)
| <data type expression>
| ...Задайте тип выходных данных. Тип может быть наследован, задан непосредственно или описан как объект типа данных, такой как Simulink.NumericType
.
Когда введенный тип данных с плавающей точкой, меньший, чем одинарная точность, Inherit: Inherit via internal rule
тип выходных данных зависит от установки Того, чтобы наследовать выходной тип с плавающей точкой, меньший, чем параметр конфигурации одинарной точности. Типы данных меньше, чем одинарная точность, когда количество битов должно было закодировать тип данных, меньше, 32 бита должны были закодировать тип данных с одинарной точностью. Например, half
и int16
меньше, чем одинарная точность.
Параметры блоков: OutDataTypeStr |
Ввод: символьный вектор |
Значения: 'Inherit: Inherit via internal rule' | 'Inherit: Inherit via back propagation' | 'Inherit: Same as first input' | 'double' | 'single' | 'half' | 'int8' | 'uint8' | int16 | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | fixdt(1,16,0) | fixdt(1,16,2^0,0) | fixdt(1,16,2^0,0) | '<data type expression>' |
Значение по умолчанию: 'Inherit: Same as first input' |
Minimum
— Минимальное выходное значение для проверки диапазона[]
(значение по умолчанию) | скалярЗадайте нижнее значение выходной области значений что Simulink® проверки как конечное, действительное, дважды, скалярное значение.
Примечание
Если вы задаете объект шины как тип данных для этого блока, не устанавливайте минимальное значение для данных о шине по блоку. Simulink игнорирует эту установку. Вместо этого установите минимальные значения для элементов шины объекта шины, заданного как тип данных. Для получения информации о Минимальном параметре для элемента шины смотрите Simulink.BusElement
.
Simulink использует минимум, чтобы выполнить:
Проверка диапазона параметра (см., Задает Минимальные и Максимальные значения для Параметров блоков) для некоторых блоков.
Проверка диапазона симуляции (см., Указывает Диапазоны сигнала и Включает Проверку диапазона Симуляции).
Автоматическое масштабирование типов данных с фиксированной точкой.
Оптимизация кода, который вы генерируете из модели. Эта оптимизация может удалить алгоритмический код и влиять на результаты некоторых режимов симуляции, такие как SIL или режим external mode. Для получения дополнительной информации смотрите, Оптимизируют использование заданных минимальных и максимальных значений (Embedded Coder).
Примечание
Output minimum не насыщает или отсекает фактический выходной сигнал. Используйте блок Saturation вместо этого.
Параметры блоков: OutMin |
Ввод: символьный вектор |
Значения: скаляр |
Значение по умолчанию: '[ ]' |
Maximum
— Максимальное выходное значение для проверки диапазона[]
(значение по умолчанию) | скалярЗадайте верхнее значение выходной области значений что Simulink Check как конечное, действительное, дважды, скалярное значение.
Примечание
Если вы задаете объект шины как тип данных для этого блока, не устанавливайте максимальное значение для данных о шине по блоку. Simulink игнорирует эту установку. Вместо этого установите максимальные значения для элементов шины объекта шины, заданного как тип данных. Для получения информации о Максимальном параметре для элемента шины смотрите Simulink.BusElement
.
Simulink использует максимальное значение, чтобы выполнить:
Проверка диапазона параметра (см., Задает Минимальные и Максимальные значения для Параметров блоков) для некоторых блоков.
Проверка диапазона симуляции (см., Указывает Диапазоны сигнала и Включает Проверку диапазона Симуляции).
Автоматическое масштабирование типов данных с фиксированной точкой.
Оптимизация кода, который вы генерируете из модели. Эта оптимизация может удалить алгоритмический код и влиять на результаты некоторых режимов симуляции, такие как SIL или режим external mode. Для получения дополнительной информации смотрите, Оптимизируют использование заданных минимальных и максимальных значений (Embedded Coder).
Примечание
Output maximum не насыщает или отсекает фактический выходной сигнал. Используйте блок Saturation вместо этого.
Параметры блоков: OutMax |
Ввод: символьный вектор |
Значения: скаляр |
Значение по умолчанию: '[ ]' |
Integer rounding mode
— Режим Rounding для операций фиксированной точкиFloor
(значение по умолчанию) | Ceiling
| Convergent
| Nearest
| Round
| Simplest
| Zero
Задайте округляющийся режим для операций фиксированной точки. Для получения дополнительной информации смотрите Округление (Fixed-Point Designer).
Параметры блоков:
RndMeth |
Ввод: символьный вектор |
Значения:
'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero' |
Значение по умолчанию:
'Floor' |
Lock output data type setting against changes by the fixed-point tools
— Препятствуйте тому, чтобы Fixed-Point Tool заменили типы данныхoff
(значение по умолчанию) | on
Выберите, чтобы заблокировать установку типа выходных данных этого блока против изменений Fixed-Point Tool и Советником Фиксированной точки. Для получения дополнительной информации смотрите, что Тип Выходных данных Блокировки Использования Устанавливает (Fixed-Point Designer).
Параметры блоков: LockScale |
Ввод: символьный вектор |
Значения: 'off' | 'on' |
Значение по умолчанию: 'off' |
Saturate on integer overflow
— Выберите поведение, когда целочисленное переполнение произойдетoff
(значение по умолчанию) | on
Действие | Причины принятия этих мер | Что происходит для переполнения | Пример |
---|---|---|---|
Установите этот флажок. |
Ваша модель имеет возможное переполнение, и вы хотите явную защиту насыщения в сгенерированном коде. |
Переполнение насыщает или к минимальному или к максимальному значению, которое может представлять тип данных. |
Максимальное значение, что |
Не устанавливайте этот флажок. |
Вы хотите оптимизировать КПД своего сгенерированного кода. Вы не хотите чрезмерно определять, как блок обрабатывает сигналы из области значений. Для получения дополнительной информации смотрите Ошибки Диапазона сигнала Поиска и устранения неисправностей. |
Переполнение переносится к соответствующему значению, которое является представимым, по условию вводят. |
Максимальное значение, что |
Когда вы устанавливаете этот флажок, насыщение применяется к каждой внутренней операции на блоке, не только выходу или результату. Обычно, процесс генерации кода может обнаружить, когда переполнение не возможно. В этом случае генератор кода не производит код насыщения.
Параметры блоков: DoSatur |
Ввод: символьный вектор |
Значение: 'off' | 'on' |
Значение по умолчанию: 'off' |
Типы данных |
|
Прямое сквозное соединение |
|
Многомерные сигналы |
|
Сигналы переменного размера |
|
Обнаружение пересечения нулем |
|
HDL Coder™ обеспечивает дополнительные параметры конфигурации, которые влияют на реализацию HDL и синтезируемую логику.
Для блока Sqrt с набором Function к sqrt
, генератор кода поддерживает различные архитектуры и типы данных.
sqrtfunction
архитектура поддерживает генерацию кода для фиксированных точек и типов с плавающей точкой. Когда вы используете типы с плавающей точкой, устанавливаете Библиотеку IP С плавающей точкой (HDL Coder) на Native Floating Point
. Можно задать свойства LatencyStrategy и CustomLatency HDL выбрать из области значений значений частоты при предназначении для проекта на аппаратной платформе.
Используйте свойство блока UseMultiplier HDL в сочетании со свойствами LatencyStrategy и CustomLatency задать, вычислить ли квадратный корень при помощи конвейерного сдвига и добавить или алгоритм умножения
Для этой архитектуры можно задать настройки HandleDenormals и LatencyStrategy от вкладки Native Floating Point в диалоговом окне HDL Block Properties.
Архитектура | Фиксированная точка | Собственный компонент, с плавающей точкой | HandleDenormals | LatencyStrategy |
---|---|---|---|---|
sqrtfunction | ✓ | ✓ | ✓ | ✓ |
sqrtnewton | ✓ | — | — | — |
sqrtnewtonsinglerate | ✓ | — | — | — |
recipsqrtnewton | ✓ | — | — | — |
recipsqrtnewtonsinglerate | ✓ | — | — | — |
Этот блок имеет реализации мультицикла, которые вводят дополнительную задержку в сгенерированном коде. Чтобы видеть добавленную задержку, просмотрите сгенерированную модель или модель валидации. См. Сгенерированную Модель Модели и Валидации (HDL Coder).
Архитектура | Параметр | Дополнительные циклы задержки | Описание |
---|---|---|---|
SqrtFunction (значение по умолчанию) |
| Зависит от выбора параметра, выходного размера слова и длин части ввода и вывода. | Чтобы задать эту архитектуру, установите Function на Вычислите квадратный корень при помощи конвейерного алгоритма сдвига/сложения или основанного на умножении алгоритма.
Видеть вычисление задержки, в командной строке MATLAB, введите: HDLMathLib Улучшите частоту проекта и уменьшайте использование ресурса путем установки UseMultiplier на |
SqrtNewton | Iterations | Iterations + 3 | Чтобы задать эту архитектуру, установите Function на Используйте итеративный метод Ньютона. Выберите эту опцию, чтобы оптимизировать область. Значение по умолчанию для Рекомендуемое значение для |
SqrtNewtonSingleRate | Iterations | (Iterations * 4) + 6 | Чтобы задать эту архитектуру, установите Function на Используйте конвейерный метод Ньютона одного уровня. Выберите эту опцию, чтобы оптимизировать скорость, или если вы хотите одну реализацию уровня. Значение по умолчанию для Рекомендуемое значение для |
RecipSqrtNewton | Iterations | Iterations + 2 | Чтобы задать эту архитектуру, установите Function на Используйте итеративный метод Ньютона. Выберите эту опцию, чтобы оптимизировать область. |
RecipSqrtNewtonSingleRate | Iterations | (Iterations * 4) + 5 | Чтобы задать эту архитектуру, установите Function на Используйте конвейерный метод Ньютона одного уровня. Выберите эту опцию, чтобы оптимизировать скорость, или если вы хотите одну реализацию уровня. |
Итерационный метод Ньютона-Raphson:
ReciprocalRsqrtBasedNewton
и ReciprocalRsqrtBasedNewtonSingleRate
реализуйте метод Ньютона-Raphson с:
Общий | |
---|---|
ConstrainedOutputPipeline | Количество регистров, чтобы поместить при выходных параметрах путем перемещения существующих задержек в рамках проекта. Распределенная конвейеризация не перераспределяет эти регистры. |
Iterations | Количество итераций для |
InputPipeline | Количество входных настроек канала связи, чтобы вставить в сгенерированный код. Распределенная конвейеризация и ограниченная выходная конвейеризация могут переместить эти регистры. |
OutputPipeline | Количество выходных настроек канала связи, чтобы вставить в сгенерированный код. Распределенная конвейеризация и ограниченная выходная конвейеризация могут переместить эти регистры. |
UseMultiplier | Выберите алгоритм для Увеличьте частоту проекта и уменьшайте использование ресурса путем установки UseMultiplier на |
LatencyStrategy | Задайте, сопоставить ли блоки в вашем проекте к Увеличьте частоту проекта и уменьшайте использование ресурса путем установки UseMultiplier на |
CustomLatency | Когда LatencyStrategy установлен в |
Нативная плавающая точка | |
---|---|
HandleDenormals | Задайте, хотите ли вы, чтобы HDL Coder вставил дополнительную логику, чтобы обработать нестандартные числа в вашем проекте. Нестандартные числа являются числами, которые имеют величины меньше, чем самое маленькое число с плавающей запятой, которое может быть представлено без начальных нулей в мантиссе. Значением по умолчанию является |
Введите должно быть скалярное значение без знака.
Выход является скалярным значением фиксированной точки.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.