exponenta event banner

Замена кода оператора с фиксированной точкой

При наличии лицензии Fixed-Point Designer™ можно определить записи замены кода оператора Fixed-Point для соответствия:

  • Комбинация масштабирования только для двоичной точки на входах и выходах оператора.

  • Комбинация масштабирования смещения наклона на входах и выходах оператора.

  • Относительное масштабирование или суммарный наклон между входами оператора умножения или деления и выходом. Один из этих методов используется для отображения диапазона значений наклона и смещения на замещающую функцию для умножения или деления.

  • Равный наклон и нулевое чистое смещение на входах и выходе оператора сложения или вычитания. Этот метод используется для игнорирования определенных значений наклона и смещения и отображения относительных значений наклона и смещения в функцию замены для сложения или вычитания.

Общие способы сопоставления записей оператора с фиксированной точкой

В следующей таблице сопоставляются общие способы сопоставления записей замены кода оператора с фиксированной точкой со связанными параметрами, заданными в файле определения таблицы замены кода.

МатчСоздать записьМинимально задать параметры

Конкретная комбинация масштабирования только для двоичных точек на входах и выходах оператора.

RTW.TflCOperationEntry

createAndAddConceptualArg функция:

  • CheckSlope: Укажите значение true.

  • CheckBias: Укажите значение true.

  • DataTypeMode (или DataType/Scaling эквивалент): Задание масштабирования только для двоичных точек с фиксированной точкой.

  • FractionLength: Укажите длину дроби (например, 3).

Определенная комбинация масштабирования смещения наклона на входах и выходах оператора.

RTW.TflCOperationEntry

createAndAddConceptualArg функция:

  • CheckSlope: Укажите значение true.

  • CheckBias: Укажите значение true.

  • DataTypeMode (или DataType/Scaling эквивалент): Задание масштабирования с фиксированной точкой [уклон].

  • Slope (или SlopeAdjustmentFactor/ FixedExponent эквивалент): Укажите значение уклона (например, 15).

  • Bias: Укажите значение смещения (например, 2).

Чистый наклон между входами оператора и выходом (умножение и деление).

RTW.TflCOperationEntryGenerator_NetSlope

setTflCOperationEntryParameters функция:

  • NetSlopeAdjustmentFactor: Укажите поправочный коэффициент уклона (F) часть откоса сети, F2E (например, 1.0).

  • NetFixedExponent: Укажите фиксированную степень (E) часть откоса сети, F2E (например, -3.0).

createAndAddConceptualArg функция:

  • CheckSlope: Укажите значение false.

  • CheckBias: Укажите значение false.

  • DataType: Укажите значение 'Fixed'.

Относительное масштабирование между операторскими входами и выходом (умножение и деление).

RTW.TflCOperationEntryGenerator

setTflCOperationEntryParameters функция:

  • RelativeScalingFactorF: Укажите поправочный коэффициент уклона (F) часть относительного коэффициента масштабирования, F2E (например, 1.0).

  • RelativeScalingFactorE: Укажите фиксированную степень (E) часть относительного коэффициента масштабирования, F2E (например, -3.0).

createAndAddConceptualArg функция:

  • CheckSlope: Укажите значение false.

  • CheckBias: Укажите значение false.

  • DataType: Укажите значение 'Fixed'.

Равный наклон и нулевое чистое смещение на входах и выходе оператора (сложение и вычитание).

RTW.TflCOperationEntryGenerator

setTflCOperationEntryParameters функция:

  • SlopesMustBeTheSame: Укажите значение true.

  • MustHaveZeroNetBias: Укажите значение true.

createAndAddConceptualArg функция:

  • CheckSlope: Укажите значение false.

  • CheckBias: Укажите значение false.

Числа с фиксированной точкой и арифметика

Числа с фиксированной точкой используют целые числа и целочисленную арифметику для представления вещественных чисел и арифметики со следующей схемой кодирования:

V=V˜=SQ+B

  • V - произвольно точное реальное значение.

  • - это приблизительное действительное значение, которое является результатом представления с фиксированной точкой.

  • Q - целое число, которое кодирует , называемое квантованным целым числом.

  • S - коэффициент Q, называемый наклоном.

  • В представляет собой аддитивную коррекцию, называемую смещением.

Общее уравнение для операции между операндами с фиксированной точкой:

(SOQO + BO) = (S1Q1 + B1) < op > (S2Q2 + B2)

Целью замены оператора с фиксированной точкой является замена оператора, который принимает и возвращает входные и выходные данные с фиксированной точкой или целым числом, функцией, которая принимает и возвращает встроенные числовые типы данных C. В следующих разделах содержится дополнительная информация о программировании для каждого поддерживаемого оператора.

Дополнение

Операция V0 = V1 + V2 подразумевает, что

Q0 = (S1S0) Q1 + (S2S0) Q2 + (B1+B2−B0S0)

Если функция замещения сложения определена таким образом, что масштабирование операндов и суммы равны и результирующее смещение

(B1+B2−B0S0)

равно нулю (например, функция s8_add_s8_s8 , что добавляет два знаковых 8-битных значения и приводит к знаковому 8-битному результату), то запись оператора должна установить параметры записи оператора SlopesMustBeTheSame и MustHaveZeroNetBias кому true. Для замены откосы должны быть одинаковыми для всех концептуальных аргументов сложения. (Описание параметров см. на справочной странице функции. setTflCOperationEntryParameters.)

Вычитание

Операция V0 = V1V2 подразумевает, что

Q0 = (S1S0)Q1−(S2S0) Q2 + (B1−B2−B0S0)

Если функция замещения вычитания определена так, что масштабирование операндов и разность равны и результирующее смещение

(B1−B2−B0S0)

равно нулю (например, функция s8_sub_s8_s8 вычитание двух знаковых 8-битовых значений и получение знакового 8-битового результата), то запись оператора должна установить параметры записи оператора SlopesMustBeTheSame и MustHaveZeroNetBias кому true. Для замены откосы должны быть одинаковыми для всех концептуальных аргументов вычитания. (Описание параметров см. на справочной странице функции. setTflCOperationEntryParameters.)

Умножение

Существует несколько способов определения замены умножения. Наиболее непосредственным способом является определение точного совпадения типов ввода и вывода. Это возможно, если модель содержит только несколько известных комбинаций наклона и смещения. Используйте TflCOperationEntry и указать точные значения уклона и смещения для каждого аргумента. Для сценариев, в которых имеется множество комбинаций наклона/смещения, невозможно указать каждое значение с различной записью. Используйте запись чистого уклона или создайте пользовательскую запись.

Операция V0 = V1 * V2 подразумевает для масштабирования только в двоичной точке, что

S0Q0 = (S1Q1)(S2Q2)Q0 = (S1S2S0)Q1Q2Q0=SnQ1Q2

где Sn - чистый наклон.

Как правило, все операции умножения, имеющие суммарный наклон 1,0, заменяются функцией, выполняющей умножение в стиле C. Например, для замены всех 8-битовых умножений со знаком, которые имеют чистое масштабирование 1,0, на s8_mul_s8_u8_ функция замены, запись оператора должна определять коэффициент наклона нетто, F2E. Значения для F и E задаются с помощью параметров ввода оператора. NetSlopeAdjustmentFactor и NetFixedExponent. Для s8_mul_s8_u8 функция, установка NetSlopeAdjustmentFactor в 1 и NetFixedExponent до 0,0. Кроме того, задайте параметр ввода оператора SlopesMustBeTheSame кому false и параметр MustHaveZeroNetBias кому true. Для соответствия для замены смещения должны быть равны нулю для всех концептуальных аргументов умножения. (Описание параметров см. на справочной странице функции. setTflCOperationEntryParameters.)

Примечание

Когда запись оператора определяет NetSlopeAdjustmentFactor и NetFixedExponent, совпадающие записи должны иметь аргументы с нулевым смещением.

Подразделение

Существует несколько способов определения замен разделения. Наиболее непосредственным способом является определение точного совпадения типов ввода и вывода. Это возможно, если модель содержит только несколько известных комбинаций наклона и смещения. Используйте TflCOperationEntry и указать точные значения уклона и смещения для каждого аргумента. Для сценариев, в которых имеется множество комбинаций наклона/смещения, невозможно указать каждое значение с различной записью. Используйте запись чистого уклона или создайте пользовательскую запись (см. раздел Настройка процесса сопоставления и замены).

Операция V0 = (V1/ V2) подразумевает для масштабирования только в двоичной точке, что

S0Q0 = (S1Q1S2Q2) Q0 = Sn (Q1Q2)

где Sn - чистый наклон.

Как правило, все операции деления, имеющие чистый наклон 1,0, заменяются функцией, выполняющей разделение в стиле C. Например, для замены всех подписанных 8-разрядных делений, имеющих чистое масштабирование 1,0, на s8_mul_s8_u8_ функция замены, запись оператора должна определять коэффициент наклона нетто, F2E. Значения для F и E задаются с помощью параметров ввода оператора. NetSlopeAdjustmentFactor и NetFixedExponent. Для s16_netslope0p5_div_s16_s16 функция, вы бы установили NetSlopeAdjustmentFactor в 1 и NetFixedExponent до 0,0. Кроме того, задайте параметр ввода оператора SlopesMustBeTheSame кому false и параметр MustHaveZeroNetBias кому true. Чтобы соответствовать для замены, смещения должны быть равны нулю для всех концептуальных аргументов деления. (Описание параметров см. на справочной странице функции. setTflCOperationEntryParameters.)

Примечание

Когда запись оператора определяет NetSlopeAdjustmentFactor и NetFixedExponent, совпадающие записи должны иметь аргументы с нулевым смещением.

Преобразование типа данных (литейная форма)

Операция преобразования типа данных V0 = V1 подразумевает для масштабирования только в двоичной точке, что

Q0 = (S1S0)Q1Q0=SnQ1

где Sn - чистый наклон. Установка параметра ввода оператора SlopesMustBeTheSame кому false и параметр MustHaveZeroNetBias кому true. Чтобы соответствовать для замены, смещения должны быть равны нулю для всех приведённых концептуальных аргументов. (Описание параметров см. на справочной странице функции. setTflCOperationEntryParameters.)

Изменение

Операция shift left или shift right V0 = (V1/2n) подразумевает для масштабирования только в двоичной точке, что

S0Q0 = (S1Q12n) Q0 = (S1S0) (Q12n) Q0 = Sn (Q12n)

где Sn - чистый наклон. Установка параметра ввода оператора SlopesMustBeTheSame кому false и параметр MustHaveZeroNetBias кому true. Для замены смещения должны быть равны нулю для всех концептуальных аргументов сдвига. (Описание параметров см. на справочной странице функции. setTflCOperationEntryParameters.)

Связанные темы