Если у вас есть лицензия Fixed-Point Designer™, можно задать записи замены кода оператора с фиксированной точкой, чтобы они совпадали:
Комбинация масштабирования только для двоичных точек на входах оператора и выходе.
Комбинация масштабирования смещения наклона на входах оператора и выходе.
Относительное масштабирование или наклон сети между входами умножения или деления оператора и выходом. Используйте один из этих методов, чтобы сопоставить область значений значений наклона и смещения с функцией замены для умножения или деления.
Равный наклон и нулевое смещение сети между входами оператора сложения или вычитания и выходом. Используйте этот метод, чтобы игнорировать определенные значения наклона и смещения и сопоставить относительные значения наклона и смещения с функцией замены для сложения или вычитания.
В следующей таблице показаны общие способы соответствия записей о замене кода оператора с фиксированной точкой со связанными параметрами с фиксированной точкой, которые вы задаете в файле определения таблицы замещения кода.
Матч | Создайте запись | Минимально задайте параметры |
---|---|---|
Определенная комбинация масштабирования только для двоичных точек на входах оператора и выходе. | RTW.TflCOperationEntry |
|
Определенная комбинация масштабирования смещения наклона на входах оператора и выходе. | RTW.TflCOperationEntry |
|
Наклон сети между входами оператора и выходом (умножение и деление). | RTW.TflCOperationEntryGenerator_NetSlope |
|
Относительное масштабирование между входами оператора и выходом (умножение и деление). | RTW.TflCOperationEntryGenerator |
|
Равный наклон и нулевое смещение сети между входами и выходом оператора (сложение и вычитание). | RTW.TflCOperationEntryGenerator |
|
Числа с фиксированной точкой используют целые числа и целочисленную арифметику, чтобы представлять вещественные числа и арифметику со следующей схемой кодирования:
является произвольно точным значением реального мира.
- приблизительное значение реального мира, которое является результатом представления с фиксированной точкой.
является целым числом, которое кодирует , именуемый как quantized integer.
- коэффициент, , именуемый как slope.
является аддитивной коррекцией, называемой bias.
Общее уравнение для операции между операндами с фиксированной точкой:
Цель замены оператора с фиксированной точкой состоит в том, чтобы заменить оператор, который принимает и возвращает входы с фиксированной или целочисленной точкой и выход с функцией, которая принимает и возвращает встроенные типы числовых данных С. В следующих разделах представлена дополнительная информация о программировании для каждого поддерживаемого оператора.
Операция V0 = V1 + V2 подразумевает, что
Если функция замены сложения задана таким образом, что масштабирование операндов и суммы равны, и смещение сети
равен нулю (для примера - функция s8_add_s8_s8
который добавляет два 8-битных значения со знаком и выдает 8-битный результат со знаком), тогда запись оператора должна задать параметры входа оператора SlopesMustBeTheSame
и MustHaveZeroNetBias
на true
. Чтобы соответствовать замене, склоны должны быть одинаковыми для всех сложений концептуальных аргументов. (Для описаний параметров смотрите страницу с описанием для функции setTflCOperationEntryParameters
.)
Операция V0 = V1 − V2 подразумевает, что
Если функция вычитания замены задана таким образом, что масштабирование операндов и различие равны, и смещение сети
равен нулю (для примера - функция s8_sub_s8_s8
который вычитает два 8-битных значения со знаком и выдает 8-битный результат со знаком), тогда запись оператора должна задать параметры входа оператора SlopesMustBeTheSame
и MustHaveZeroNetBias
на true
. Чтобы соответствовать замене, склоны должны быть одинаковыми для всех концептуальных аргументов вычитания. (Для описаний параметров смотрите страницу с описанием для функции setTflCOperationEntryParameters
.)
Существуют различные способы задать замены умножения. Самый прямой способ - задать точное соответствие типов входа и вывода. Это возможно, если модель содержит только несколько известных комбинаций уклона и смещения. Используйте TflCOperationEntry
Класс и задайте точные значения наклона и смещения для каждого аргумента. Для сценариев, где существует множество комбинаций уклон/смещение, невозможно задать каждое значение с другим значением. Используйте запись уклона сети или создайте пользовательскую запись.
Операция V0 = V1 * V2 подразумевает, для двоичного масштабирования только по точке, что
где 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) подразумевает, для двоичного масштабирования только по точке, что
где 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 преобразования типа данных подразумевает, для двоичного масштабирования только на точку, что
где Sn - уклон сети. Установите параметр входа оператора SlopesMustBeTheSame
на false
и параметр MustHaveZeroNetBias
на true
. Чтобы соответствовать для замены, смещения должны быть нулем для всех приведенных концептуальных аргументов. (Для описаний параметров смотрите страницу с описанием для функции setTflCOperationEntryParameters
.)
Операция сдвига слева или сдвиг справа V0 = (V1/2n) подразумевает, для двоичного масштабирования только по точкам, что
где Sn - уклон сети. Установите параметр входа оператора SlopesMustBeTheSame
на false
и параметр MustHaveZeroNetBias
на true
. Чтобы соответствовать для замены, смещения должны быть нулем для всех концептуальных аргументов сдвиг. (Для описаний параметров смотрите страницу с описанием для функции setTflCOperationEntryParameters
.)