Распространение типа данных
Установите тип данных и масштабирование распространенного сигнала на основе информации от ссылочных сигналов
Описание
Блок Data Type Propagation позволяет вам управлять типом данных и масштабированием сигналов в вашей модели. Можно использовать этот блок наряду с блоками фиксированной точки, которым сконфигурировали их параметр Output data type к Inherit: Inherit via back propagation
.
Блок имеет три входных параметров: Ref1 и Ref2 являются ссылочными входными параметрами, в то время как вход Prop назад - распространяет тип данных и масштабирующуюся информацию, собранную от ссылочных входных параметров. Эта информация затем передается другим блокам фиксированной точки.
Блок обеспечивает много вариантов для распространения типа данных и масштабирования информации. Например, можно использовать:
Количество битов из ссылки Ref1 сигнализирует или количество битов от самого широкого ссылочного сигнала
Диапазон от ссылки Ref2 сигнализирует или область значений ссылочного сигнала с самой большой областью значений
Смещение нуля, независимо от смещений используется ссылочными сигналами
Точность ссылочного сигнала с наименьшим количеством точности
Вы задаете, как информация о типе данных распространена с помощью параметра Propagated data type:
Если вы выбираете Specify via dialog
, то вы вручную задаете тип данных через поле редактирования Propagated data type.
Если вы выбираете Inherit via propagation rule
, то необходимо использовать параметры, описанные в Параметрах.
Вы задаете, как масштабирование информации распространено с помощью параметра Propagated scaling:
Если вы выбираете Specify via dialog
, то вы вручную задаете масштабирование через поле редактирования Propagated scaling.
Если вы выбираете Inherit via propagation rule
, то необходимо использовать параметры, описанные в Параметрах.
После того, как вы будете использовать информацию от ссылочных сигналов, можно применить второй уровень корректировок типа данных и масштабирования. Для этого используйте отдельные мультипликативные и аддитивные корректировки. Эта гибкость имеет различное использование. Например, если вы предназначаетесь для DSP, затем можно сконфигурировать блок так, чтобы количество битов, сопоставленных с умножением и, накопилось операция (MAC) вдвое более широка, чем входной сигнал и имеет определенное количество "сторожевых" разрядов, добавленных к нему.
Блок Data Type Propagation также обеспечивает механизм, чтобы обеспечить вычисленное количество битов к полезному значению. Например, если вы будете предназначаться для 16-битного микро, затем целевой компилятор C, вероятно, поддержит размеры только 8 битов, 16 битов и 32 битов. Блок обеспечивает эти три варианта, которые будут использоваться. Например, предположите, что блок вычисляет размер типа данных 24 битов. Начиная с 24 битов не непосредственно применимо целевым чипом, сигнал обеспечен до 32 битов, который исходно поддержан.
Существует также метод для контакта со ссылочными сигналами с плавающей точкой. Этот метод облегчает создавать проекты, которые легко перенастраиваются между микросхемами фиксированной точки и микросхемами с плавающей точкой.
Блок Data Type Propagation позволяет вам создавать библиотеки полезных подсистем, которые правильно сконфигурированы на основе связанных сигналов. Без этого процесса распространения типа данных подсистемы от библиотеки вряд ли будут работать, как желаемый с большинством сигналов целочисленной или фиксированной точки. Ручное вмешательство потребовалось бы, чтобы конфигурировать тип данных и масштабирование. Во многих ситуациях этот блок может устранить ручное вмешательство.
Правила приоритета
Приоритет параметров диалогового окна уменьшается сверху донизу. Также:
Ссылочные входные параметры с двойной точностью имеют приоритет по всем другим типам данных.
Ссылочные входные параметры с одинарной точностью имеют приоритет по целому числу и типам данных с фиксированной точкой.
Мультипликативные корректировки выполняются перед аддитивными корректировками.
Количество битов определяется перед точностью, или положительная область значений наследована от ссылочных входных параметров.
PosRange
на один бит выше, чем точная максимальная положительная область значений сигнала.
Вычисленный номер битов способствуется наименьшему допустимому значению, которое больше, чем или равно вычислению. Если ни один не существует, то блок возвращает ошибку.
Порты
Входной параметр
развернуть все
Ref1
— Первый ссылочный сигнал
скаляр | вектор | матрица | массив N-D
Первый ссылочный сигнал, от которого можно собрать тип данных и масштабирующуюся информацию.
Типы данных: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| Boolean
| fixed point
Ref2
— Второй ссылочный сигнал
скаляр | вектор | матрица | массив N-D
Второй ссылочный сигнал, от которого можно собрать тип данных и масштабирующуюся информацию.
Типы данных: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| Boolean
| fixed point
Prop
— Распространенный тип данных и масштабирование
тип данных и масштабирование
Тип данных и масштабирующаяся информация, распространенная спиной к модели. После того, как блок собирает тип данных и масштабирующуюся информацию от ссылочных сигналов, можно применить второй уровень корректировок типа данных и масштабирования. Для этого задайте отдельные мультипликативные и аддитивные корректировки в диалоговом окне блока.
Типы данных: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| Boolean
| fixed point
Параметры
развернуть все
Распространенный тип
1. Propagated data type
— Режим определения распространенного типа данных
Inherit via propagation rule
(значение по умолчанию) | Specify via dialog
Задайте, распространить ли тип данных через диалоговое окно или наследовать тип данных от ссылочных сигналов.
Зависимости
Установка этого параметра на Specify via dialog
включает 1.1. Propagated data type (e.g. fixdt(1,16), fixdt('single')).
Программируемое использование
Параметры блоков:
PropDataTypeMode |
Ввод: символьный вектор |
Значения:
'Specify via dialog' | 'Inherit via propagation rule' |
Значение по умолчанию:
'Inherit via propagation rule' |
1.1. Propagated data type (e.g. fixdt(1,16), fixdt('single'))
— Распространенный тип данных
fixdt(1,16)
(значение по умолчанию) | строка типа данных
Задайте тип данных, чтобы распространить.
Зависимости
Чтобы включить этот параметр, установите 1. Propagated data type на Specify via dialog
.
Программируемое использование
Параметры блоков:
PropDataTypeMode |
Ввод: символьный вектор |
Значения:
'Specify via dialog' | 'Inherit via propagation rule' |
Значение по умолчанию:
'Inherit via propagation rule' |
1.1 If any reference input is double, output is
— Выходные данные вводят, когда ссылочный вход является двойным
double
(значение по умолчанию) | single
Задайте тип выходных данных как single
или double
. Этот параметр облегчает создавать проекты, которые легко перенастраиваются между микросхемами фиксированной точки и микросхемами с плавающей точкой.
Зависимости
Чтобы включить этот параметр, установите Propagated data type на Inherit via propagation rule
.
Программируемое использование
Параметры блоков:
IfRefDouble |
Ввод: символьный вектор |
Значения:
'double' | 'single' |
Значение по умолчанию:
'double' |
1.2 If any reference input is single, output is
— Выходные данные вводят, когда ссылочный вход является одним
single
(значение по умолчанию) | double
Задайте тип выходных данных как single
или double
. Этот параметр облегчает создавать проекты, которые легко перенастраиваются между микросхемами фиксированной точки и микросхемами с плавающей точкой.
Зависимости
Чтобы включить этот параметр, установите Propagated data type на Inherit via propagation rule
.
Программируемое использование
Параметры блоков:
IfRefSingle |
Ввод: символьный вектор |
Значения:
'double' | 'single' |
Значение по умолчанию:
'single' |
1.3 Is-Signed
— Со знаком из распространенного типа данных
IsSigned1 or IsSigned2
(значение по умолчанию) | IsSigned1
| IsSigned2
| TRUE
| FALSE
Задайте знак Prop как одно из следующих значений.
Значение параметров | Описание |
---|
IsSigned1
| Prop является типом данных со знаком, если Ref1 является типом данных со знаком. |
IsSigned2
| Prop является типом данных со знаком, если Ref2 является типом данных со знаком. |
IsSigned1 or IsSigned2
| Prop является типом данных со знаком, если или Ref1 или Ref2 являются подписанными типами данных. |
TRUE
| Ref1 и Ref2 проигнорированы, и Опора всегда является типом данных со знаком. |
FALSE
| Ref1 и Ref2 проигнорированы, и Опора всегда является типом данных без знака. |
Например, если сигналом Ref1 является ufix(16)
, сигналом Ref2 является sfix(16)
, и параметром Is-Signed является IsSigned1 or IsSigned2
, то Prop обеспечен, чтобы быть типом данных со знаком.
Зависимости
Чтобы включить этот параметр, установите Propagated data type на Inherit via propagation rule
.
Программируемое использование
Параметры блоков:
IsSigned |
Ввод: символьный вектор |
Значения:
'IsSigned1' | 'IsSigned2' | 'IsSigned1 or IsSigned2' | 'TRUE' | 'FALSE' |
Значение по умолчанию:
'IsSigned1 or IsSigned2' |
1.4.1 Number-of-bits: Base
— Количество битов для основы распространенного типа данных
max([NumBits1 NumBits2])
(значение по умолчанию) | NumBits1
| NumBits2
| min([NumBits1 NumBits2])
| NumBits1+NumBits2
Задайте количество битов, используемых Prop для базового типа данных как одно из следующих значений.
Значение параметров | Описание |
---|
NumBits1
| Количество битов для Prop дано количеством битов для Ref1. |
NumBits2
| Количество битов для Prop дано количеством битов для Ref2. |
max([NumBits1 NumBits2])
| Количество битов для Prop дано ссылочным сигналом с наибольшим числом битов. |
min([NumBits1 NumBits2])
| Количество битов для Prop дано ссылочным сигналом с самым маленьким количеством битов. |
NumBits1+NumBits2
| Количество битов для Prop дано суммой ссылочных битов сигнала. |
Для получения дополнительной информации о базовом типе данных, обратитесь к Предназначению для Встраиваемого процессора (Fixed-Point Designer).
Зависимости
Чтобы включить этот параметр, установите Propagated data type на Inherit via propagation rule
.
Программируемое использование
Параметры блоков:
NumBitsBase |
Ввод: символьный вектор |
Значения:
'NumBits1' | 'NumBits2' | 'max([NumBits1 NumBits2])' | 'min([NumBits1 NumBits2])' | 'NumBits1+NumBits2' |
Значение по умолчанию:
'max([NumBits1 NumBits2])' |
1.4.2 Number-of-bits: Multiplicative adjustment
— Количество битов для мультипликативной корректировки распространенного типа данных
1
(значение по умолчанию) | положительное целое число
Задайте количество битов, используемых Prop включением мультипликативной корректировки, которая использует тип данных double
. Например, предположите, что вы хотите гарантировать, что количество битов, сопоставленных с умножением и, накапливается операция (MAC) вдвое более широка, чем входной сигнал. Для этого установите этот параметр на 2
.
Зависимости
Чтобы включить этот параметр, установите Propagated data type на Inherit via propagation rule
.
Программируемое использование
Параметры блоков:
NumBitsMult |
Ввод: символьный вектор |
Значения: положительное целое число |
Значение по умолчанию:
'1' |
1.4.3 Number-of-bits: Additive adjustment
— Количество битов для аддитивной корректировки распространенного типа данных
0
(значение по умолчанию) | положительное целое число
Задайте количество битов, используемых Prop включением аддитивной корректировки, которая использует тип данных double
. Например, если вы выполняете несколько сложений во время операции MAC, результат мог бы переполниться. Чтобы предотвратить переполнение, можно сопоставить "сторожевые" разряды с распространенным типом данных. Чтобы сопоставить четыре "сторожевых" разряда, вы задаете значение 4
.
Зависимости
Чтобы включить этот параметр, установите Propagated data type на Inherit via propagation rule
.
Программируемое использование
Параметры блоков:
NumBitsAdd |
Ввод: символьный вектор |
Значения: скаляр |
Значение по умолчанию:
'0' |
1.4.4 Number-of-bits: Allowable final values
— Допустимое количество битов в распространенном типе данных
'1:128'
(значение по умолчанию) | скаляр или вектор положительных целых чисел
Обеспечьте вычисленное количество битов, используемых Prop к полезному значению. Например, если вы предназначаетесь для процессора, который поддерживает только 8 битов, 16 битов и 32 бита, затем вы конфигурируете этот параметр к [8,16,32]
. Блок всегда распространяет самое маленькое заданное значение, которое соответствует. Если бы вы хотите позволить все типы данных с фиксированной точкой, вы задали бы значение 1:128
.
Зависимости
Чтобы включить этот параметр, установите Propagated data type на Inherit via propagation rule
.
Программируемое использование
Параметры блоков:
NumBitsAllowFinal |
Ввод: символьный вектор |
Значения: скаляр или вектор положительных целых чисел |
Значение по умолчанию:
'1:128' |
Распространенное масштабирование
2. Propagated scaling
— Распространенный режим масштабирования
Inherit via propagation rule
(значение по умолчанию) | Specify via dialog
| Obtain via best precision
Примите решение распространить масштабирование через диалоговое окно, наследовать масштабирование от ссылочных сигналов или вычислить масштабирование, чтобы получить лучшую точность.
Программируемое использование
Параметры блоков:
PropScalingMode |
Ввод: символьный вектор |
Значения:
Inherit via propagation rule | Specify via dialog | Obtain via best precision |
Значение по умолчанию:
Inherit via propagation rule |
2.1. Propagated scaling (Slope or [Slope Bias])
— Наклон или наклон и смещение
2^-10
| Slope
| [Slope Bias]
Задайте масштабирование или как наклон или как наклон и смещение.
Зависимости
Чтобы включить этот параметр, установите Propagated scaling на Specify via dialog
.
Программируемое использование
Параметры блоков:
PropScaling |
Ввод: символьный вектор |
Значения:
Slope | [Slope Bias] |
Значение по умолчанию:
'2^-10' |
2.1. Values used to determine best precision scaling
— Значения, чтобы ограничить точность
[5 -7]
(значение по умолчанию)
Задайте любые значения, которые будут использоваться, чтобы ограничить точность, такой как верхнее и нижние пределы на распространенном входе. На основе типа данных блок выбирает масштабирование таким образом, что эти значения могут быть представлены без ошибки переполнения и минимальной ошибки квантования.
Зависимости
Чтобы включить этот параметр, установите Propagated scaling на Obtain via best precision
.
Программируемое использование
Параметры блоков:
ValuesUsedBestPrec |
Ввод: символьный вектор |
Значения: вектор значений |
Значение по умолчанию:
'[5 -7]' |
2.1.1. Slope: Base
— Наклон для основы распространенного типа данных
min([Slope1 Slope2])
(значение по умолчанию) | Slope1
| Slope2
| min([Slope1 Slope2])
| max([Bias1 Bias2])
| Slope1*Slope2
| Slope1/Slope2
| PosRange1
| PosRange2
| max([PosRange1 PosRange2])
| min([PosRange1 PosRange2])
| PosRange1*PosRange2
| PosRange1/PosRange2
Задайте наклон, используемый Prop для базового типа данных как одно из следующих значений.
Значение параметров | Описание |
---|
Slope1
| Наклон Prop дан наклоном Ref1. |
Slope2
| Наклон Prop дан наклоном Ref2. |
max([Slope1 Slope2])
| Наклон Prop дан максимальным наклоном ссылочных сигналов. |
min([Slope1 Slope2])
| Наклон Prop дан минимальным наклоном ссылочных сигналов. |
Slope1*Slope2
| Наклон Prop дан продуктом ссылочных наклонов сигнала. |
Slope1/Slope2
| Наклон Prop дан отношением наклона Ref1 к наклону Ref2. |
PosRange1
| Область значений Prop дана областью значений Ref1. |
PosRange2
| Область значений Prop дана областью значений Ref2. |
max([PosRange1 PosRange2])
| Область значений Prop дана максимальной областью значений ссылочных сигналов. |
min([PosRange1 PosRange2])
| Область значений Prop дана минимальной областью значений ссылочных сигналов. |
PosRange1*PosRange2
| Область значений Prop дана продуктом ссылочных диапазонов сигнала. |
PosRange1/PosRange2
| Область значений Prop дана отношением области значений Ref1 к области значений Ref2. |
Вы управляете точностью Prop с Slope1
и Slope2
, и вы управляете областью значений Prop с PosRange1
и PosRange2
. Кроме того, PosRange1
и PosRange2
на один бит выше, чем максимальная положительная область значений связанного ссылочного сигнала.
Зависимости
Чтобы включить этот параметр, установите Propagated scaling на Inherit via propagation rule
.
Программируемое использование
Параметры блоков:
SlopeBase |
Ввод: символьный вектор |
Значения:
'Slope1' | 'Slope2' | 'max([Slope1 Slope2])' | 'min([Slope1 Slope2])' | 'Slope1*Slope2' | 'Slope1/Slope2' | 'PosRange1' | 'PosRange2' | 'max([PosRange1 PosRange2])' | 'min([PosRange1 PosRange2])' | 'PosRange1*PosRange2' | 'PosRange1/PosRange2' |
Значение по умолчанию:
'min([Slope1 Slope2])' |
2.1.2. Slope: Multiplicative adjustment
— Наклон мультипликативной корректировки распространенного типа данных
1
(значение по умолчанию) | скаляр
Задайте наклон, используемый Prop включением мультипликативной корректировки, которая использует тип данных double
. Например, если вы хотите 3 бита дополнительной точности (с соответствующим уменьшением в области значений), мультипликативной корректировкой является 2^-3
.
Зависимости
Чтобы включить этот параметр, установите Propagated scaling на Inherit via propagation rule
.
Программируемое использование
Параметры блоков:
SlopeMult |
Ввод: символьный вектор |
Значения: скаляр |
Значение по умолчанию:
'1' |
2.1.3. Slope: Additive adjustment
— Наклон аддитивной корректировки распространенного типа данных
0
(значение по умолчанию) | скаляр
Задайте наклон, используемый Prop включением аддитивной корректировки, которая использует тип данных double
. Аддитивная наклонная корректировка часто не нужна. Наиболее вероятное использование должно установить мультипликативную корректировку 0
и установить аддитивную корректировку обеспечивать итоговый наклон к заданному значению.
Зависимости
Чтобы включить этот параметр, установите Propagated scaling на Inherit via propagation rule
.
Программируемое использование
Параметры блоков:
SlopeAdd |
Ввод: символьный вектор |
Значения: скаляр |
Значение по умолчанию:
'0' |
2.2.1. Bias: Base
— Основывайте смещение для Prop
Bias1
(значение по умолчанию) | Bias2
| max([Bias1 Bias2])
| min([Bias1 Bias2])
| Bias1*Bias2
| Bias1/Bias2
| Bias1+Bias2
| Bias1-Bias2
Задайте смещение, используемое Prop для базового типа данных. Значения параметров описаны можно следующим образом:
Значение параметров | Описание |
---|
Bias1
| Смещение Prop дано смещением Ref1. |
Bias2
| Смещение Prop дано смещением Ref2. |
max([Bias1 Bias2])
| Смещение Prop дано максимальным смещением ссылочных сигналов. |
min([Bias1 Bias2])
| Смещение Prop дано минимальным смещением ссылочных сигналов. |
Bias1*Bias2
| Смещение Prop дано продуктом ссылочных смещений сигнала. |
Bias1/Bias2
| Смещение Prop дано отношением смещения Ref1 к смещению Ref2. |
Bias1+Bias2
| Смещение Prop дано суммой ссылочных смещений. |
Bias1-Bias2
| Смещение Prop дано различием ссылочных смещений. |
Зависимости
Чтобы включить этот параметр, установите Propagated scaling на Inherit via propagation rule
.
Программируемое использование
Параметры блоков:
BiasBase |
Ввод: символьный вектор |
Значения:
'Bias1' | 'Bias2' | 'max([Bias1 Bias2])' | 'min([Bias1 Bias2])' | 'Bias1*Bias2' | 'Bias1/Bias2' | 'Bias1+Bias2' | 'Bias1-Bias2' |
Значение по умолчанию:
'Bias1' |
2.2.2. Bias: Multiplicative adjustment
— Мультипликативное смещение для распространенного типа данных
1
(значение по умолчанию) | скаляр
Задайте смещение, используемое Опорой включением мультипликативной корректировки, которая использует тип данных double
.
Этот параметр видим только, когда вы устанавливаете Propagated scaling на Inherit via propagation rule
.
Программируемое использование
Параметры блоков:
BiasMult |
Ввод: символьный вектор |
Значения: скаляр |
Значение по умолчанию:
'0' |
2.3.2. Bias: Additive adjustment
— Аддитивное смещение для распространенного типа данных
0
(значение по умолчанию) | скаляр
Задайте смещение, используемое Prop включением аддитивной корректировки, которая использует тип данных double
.
Если вы хотите гарантировать, что смещение, сопоставленное с Prop, является нулем, сконфигурируйте и мультипликативную корректировку и аддитивную корректировку 0
.
Зависимости
Чтобы включить этот параметр, установите Propagated scaling на Inherit via propagation rule
.
Программируемое использование
Параметры блоков:
BiasAdd |
Ввод: символьный вектор |
Значения: скаляр |
Значение по умолчанию:
'0' |
Характеристики блока
Типы данных | Boolean | double | fixed point | integer | single
|
Прямое сквозное соединение | no
|
Многомерные сигналы | yes
|
Сигналы переменного размера | yes
|
Обнаружение пересечения нулем | no
|
Расширенные возможности
Генерация кода C/C++
Генерация кода C и C++ с помощью Simulink® Coder™.
Преобразование фиксированной точки
Преобразуйте алгоритмы с плавающей точкой в фиксированную точку с помощью Fixed-Point Designer™.
Представлено до R2006a