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

Если у вас есть лицензия Fixed-Point Designer™, можно задать записи замены кода оператора с фиксированной точкой, чтобы они совпадали:

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

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

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

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

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

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

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

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

RTW.TflCOperationEntry

createAndAddConceptualArg функция:

  • CheckSlope: Задайте значение true.

  • CheckBias: Задайте значение true.

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

  • FractionLength: Задайте длину дроби (для примера, 3).

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

RTW.TflCOperationEntry

createAndAddConceptualArg функция:

  • CheckSlope: Задайте значение true.

  • CheckBias: Задайте значение true.

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

  • Slope (или SlopeAdjustmentFactor/ FixedExponent equivalent): Задайте значение уклона (для примера, 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 является произвольно точным значением реального мира.

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

  • Q является целым числом, которое кодирует V˜, именуемый как quantized integer.

  • S - коэффициент, Q, именуемый как slope.

  • B является аддитивной коррекцией, называемой bias.

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

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

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

Сложение

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

Q0=(S1S0)Q1+(S2S0)Q2+(B1+B2B0S0)

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

(B1+B2B0S0)

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

Вычитание

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

Q0=(S1S0)Q1(S2S0)Q2+(B1B2B0S0)

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

(B1B2B0S0)

равен нулю (для примера - функция 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 function, set 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.)

Сдвиг

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

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

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

Похожие темы