Вычислите квадратный корень, квадратный корень со знаком или обратную связь с квадратным корнем
Simulink/Математические операции
Операции HDL-кодера/HDL с плавающей точкой
HDL-кодер/математические операции
Блок Sqrt вычисляет квадратный корень, квадратный корень со знаком или обратный квадратный корень на входном сигнале. Выберите одну из следующих функций из списка параметров Function.
Функция | Описание | Математическое выражение | MATLAB® Эквивалентный |
---|---|---|---|
sqrt
| Квадратный корень входного входа |
|
sqrt
|
signedSqrt
| Квадратный корень из абсолютного значения входа, умноженный на знак входного параметра |
| — |
rSqrt
| Взаимный квадратный корень входного входа |
| — |
Значок блока изменяется так, чтобы соответствовать функции.
Port_1
- Входной сигналВходной сигнал к блоку, чтобы вычислить квадратный корень, квадратный корень со знаком или обратную связь квадратного корня. The 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
Задайте тип выходного сигнала блока.
Функция | Тип входного сигнала | Тип выходного сигнала | ||
---|---|---|---|---|
Автомобиль | Реальный | Комплекс | ||
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
Параметры блоков: OutputSignalType |
Тип: Вектор символов |
Значения: 'auto' | 'real' | 'complex' |
По умолчанию: 'auto' |
Sample time
- Задайте время расчета как значение, отличное от -1
-1
(по умолчанию) | скалярный вектор |Задайте шаг расчета как значение, отличное от -1. Для получения дополнительной информации см. Раздел «Задание шага расчета».
Этот параметр не отображается, если он явно не установлен на значение, отличное от -1
. Для получения дополнительной информации смотрите Блоки, для которых шаг расчета не рекомендован.
Параметры блоков:
SampleTime
|
Тип: Вектор символов |
Значения: скаляр или вектор |
По умолчанию:
'-1'
|
Method
- Метод для вычисления взаимности квадратного корняExact
(по умолчанию) | Newton-Raphson
Задайте метод для вычисления взаимности квадратного корня. Этот параметр действителен только для rSqrt
функция.
Метод | Поддерживаемые типы данных | Когда использовать этот метод |
---|---|---|
Exact
| Плавающая точка | Вы не хотите приближения. Примечание Вход или выход должны быть с плавающей точкой. |
Newton-Raphson
| Типы с плавающей точкой, с фиксированной точкой и встроенные целые типы | Вам нужен быстрый, приблизительный расчет. |
The Exact
метод обеспечивает результаты, которые согласуются с расчетами MATLAB.
Примечание
Алгоритмы для sqrt
и signedSqrt
всегда Exact
type, независимо от того, какой выбор появляется в диалоговом окне блока.
Параметры блоков: AlgorithmType |
Тип: Вектор символов |
Значения: 'Exact' | 'Newton-Raphson' |
По умолчанию: 'Exact' |
Number of iterations
- Количество итераций, используемых для алгоритма Ньютона Рафсона3
(по умолчанию) | целое числоЗадайте количество итераций для выполнения алгоритма Ньютона-Рафсона. Этот параметр действителен при rSqrt
функции и Newton-Raphson
значение для Method.
Примечание
Если вы вводите 0, выход блока является начальным предположением алгоритма Ньютона-Рафсона.
Параметры блоков: Iterations |
Тип: Вектор символов |
Значения: целое число |
По умолчанию: '3' |
Нажмите кнопку Show data type assistant, чтобы отобразить Data Type Assistant, которая помогает вам задать атрибуты type данных. Для получения дополнительной информации смотрите Задать типы данных Используя 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
:
Типы входных и выходных данных | Промежуточный тип данных |
---|---|
Вход или выход двойной точности. | Используйте double. |
Вход или выход одинарный, и любой тип данных, отличный от одного, не двойной. | Используйте одинарный или двойной. |
Вход и выход являются фиксированной точкой. | Используйте фиксированную точку. |
Следуйте этим рекомендациям по установке промежуточного типа данных явно для взаимной квадратной корневой функции, rSqrt
:
Типы входных и выходных данных | Промежуточный тип данных |
---|---|
Вход двойной точности, и выход не одинарный. | Используйте double. |
Вход не является единичным, и выход двойной точности. | Используйте double. |
Вход и выход являются фиксированной точкой. | Используйте фиксированную точку. |
Внимание
Не устанавливайте 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
тип выходных данных зависит от параметра Inherit с плавающей точкой выходного типа, меньшего, чем параметр конфигурации с одной точностью. Типы данных меньше одной точности, когда количество бит, необходимых для кодирования типа данных, меньше 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 игнорирует эту настройку. Вместо этого установите минимальные значения для элементов шины объекта шины, заданные как тип данных. Для получения информации о параметре Minimum для элемента шины смотрите Simulink.BusElement
.
Simulink использует минимум для выполнения:
Проверка области значений параметров (см. «Задание минимальных и максимальных значений для параметров блоков») для некоторых блоков.
Проверка области значений симуляции (см. «Задание диапазонов сигнала» и «Включение проверки области значений симуляции»).
Автоматическое масштабирование типов данных с фиксированной точкой.
Оптимизация кода, который вы генерируете из модели. Эта оптимизация может удалить алгоритмический код и повлиять на результаты некоторых режимов симуляции, таких как SIL или режим external mode. Для получения дополнительной информации смотрите Оптимизировать используя указанные минимальное и максимальное значения (Embedded Coder).
Примечание
Output minimum не насыщает или не зажимает фактический выходной сигнал. Вместо этого используйте блок Saturation.
Параметры блоков: OutMin |
Тип: Вектор символов |
Значения: скаляр |
По умолчанию: '[ ]' |
Maximum
- Максимальное выходное значение для проверки области значений[]
(по умолчанию) | скаляромЗадайте верхнее значение выходной области значений, который Simulink проверяет как конечное, вещественное, двойное, скалярное значение.
Примечание
Если вы задаете объект шины в качестве типа данных для этого блока, не устанавливайте максимальное значение для данных шины на блоке. Simulink игнорирует эту настройку. Вместо этого установите максимальные значения для элементов шины объекта шины, заданные как тип данных. Для получения информации о параметре Maximum для элемента шины смотрите Simulink.BusElement
.
Simulink использует максимальное значение для выполнения:
Проверка области значений параметров (см. «Задание минимальных и максимальных значений для параметров блоков») для некоторых блоков.
Проверка области значений симуляции (см. «Задание диапазонов сигнала» и «Включение проверки области значений симуляции»).
Автоматическое масштабирование типов данных с фиксированной точкой.
Оптимизация кода, который вы генерируете из модели. Эта оптимизация может удалить алгоритмический код и повлиять на результаты некоторых режимов симуляции, таких как SIL или режим external mode. Для получения дополнительной информации смотрите Оптимизировать используя указанные минимальное и максимальное значения (Embedded Coder).
Примечание
Output maximum не насыщает или не зажимает фактический выходной сигнал. Вместо этого используйте блок Saturation.
Параметры блоков: OutMax |
Тип: Вектор символов |
Значения: скаляр |
По умолчанию: '[ ]' |
Integer rounding mode
- Режим округления для операций с фиксированной точкой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
- Предотвратить переопределение типов данных инструментами с фиксированной точкойoff
(по умолчанию) | on
Выберите, чтобы заблокировать настройку типа выходных данных этого блока от изменений с помощью Fixed-Point Tool и Fixed-Point Advisor. Для получения дополнительной информации смотрите Использование настройки типа выходных данных блокировки (Fixed-Point Designer).
Параметры блоков: LockScale |
Тип: Вектор символов |
Значения: 'off' | 'on' |
По умолчанию: 'off' |
Saturate on integer overflow
- Выберите поведение, когда происходит целочисленное переполнениеoff
(по умолчанию) | on
Действие | Причины для принятия этого действия | Что происходит для переполнений | Пример |
---|---|---|---|
Установите этот флажок. |
Ваша модель имеет возможное переполнение, и вы хотите явную защиту от насыщения в сгенерированном коде. |
Переполнения достигает минимального или максимального значения, которое может представлять тип данных. |
Максимальное значение, которое |
Не устанавливайте этот флажок. |
Вы хотите оптимизировать эффективность вашего сгенерированного кода. Вы хотите избежать переопределения того, как блок обрабатывает сигналы вне области допустимого. Для получения дополнительной информации смотрите Поиск и устранение ошибок диапазона сигнала. |
Переполнения переходят к соответствующему значению, которое представимо типом данных. |
Максимальное значение, которое |
Когда вы устанавливаете этот флажок, насыщение применяется к каждой внутренней операции на блоке, а не только к выходу или результату. Обычно процесс генерации кода может обнаружить, когда переполнение невозможно. В этом случае генератор кода не производит код насыщения.
Параметры блоков: DoSatur |
Тип: Вектор символов |
Значение: 'off' | 'on' |
По умолчанию: 'off' |
Типы данных |
|
Прямое сквозное соединение |
|
Многомерные сигналы |
|
Сигналы переменного размера |
|
Обнаружение пересечения нулем |
|
HDL Coder™ предоставляет дополнительные опции строения, которые влияют на реализацию HDL и синтезированную логику.
Для блока Sqrt с Function значением sqrt
генератор кода поддерживает различные архитектуры и типы данных.
The 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 равным Вычислите квадратный корень с помощью конвейерного алгоритма сдвига/сложения или алгоритма, основанного на умножении. The Чтобы увидеть расчет задержки, в командной строке 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 равным Используйте односкоростной конвейерный метод Ньютона. Выберите эту опцию, чтобы оптимизировать скорость или если вы хотите получить одну реализацию скорости. |
Итерационный метод Ньютона-Рафсона:
ReciprocalRsqrtBasedNewton
и ReciprocalRsqrtBasedNewtonSingleRate
реализуйте метод Ньютона-Рафсона с:
Общая информация | |
---|---|
ConstrainedOutputPipeline | Количество регистров для размещения на выходах путем перемещения существующих задержек в рамках вашего проекта. Распределённая конвейеризация не перераспределяет эти регистры. Значение по умолчанию является |
Iterations | Количество итераций для |
InputPipeline | Количество входных этапов конвейера для вставки в сгенерированный код. Распределённая конвейеризация и ограниченная выходная конвейеризация могут перемещать эти регистры. Значение по умолчанию является |
OutputPipeline | Количество выходных этапов конвейера для вставки в сгенерированный код. Распределённая конвейеризация и ограниченная выходная конвейеризация могут перемещать эти регистры. Значение по умолчанию является |
UseMultiplier | Выберите алгоритм для Увеличьте частоту проекта и уменьшите использование ресурсов путем установки UseMultiplier на |
LatencyStrategy | Задайте, сопоставлять ли блоки в вашем проекте Увеличьте частоту проекта и уменьшите использование ресурсов путем установки UseMultiplier на |
CustomLatency | Когда LatencyStrategy установлено на |
Собственная переменная с плавающей точкой | |
---|---|
HandleDenormals | Укажите, хотите ли вы, чтобы HDL Coder вставил дополнительную логику для обработки денормальных чисел в ваш проект. Денормальные числа являются числами, которые имеют величины меньше, чем наименьшее число с плавающей запятой, которое может быть представлено без ведущих нулей в мантиссе. Значение по умолчанию является |
Вход должен быть беззнаковым скалярным значением.
Выход является скалярным значением с фиксированной точкой.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.