exponenta event banner

Суммировать блоки, переупорядочивающие входные данные

В этом примере показано, как блок Sum переупорядочивает входные данные. Если используется - знак в качестве первой операции, блок переупорядочивает входы, если возможно, для использования + операция. Например, в выражении output = -a-b+c, блок Sum переупорядочивает вход так, что output = c-a-b. Для инициализации накопителя блок Sum использует первый + входной порт.

Блок избегает выполнения унарной операции минус для первого операнда a потому что это может изменить значение a для типов данных с фиксированной точкой. В этом случае выходное значение отличается от результата накопления значений для a , b , и c .

Оба постоянных ввода используют int8 типы данных Блок Sum также использует int8 для типов данных накопителя и выходных данных и имеет включенный параметр Saturate при переполнении целого числа. Блок Sum переупорядочивает входные данные, чтобы получить идеальный результат 127.

  1. Переупорядочивание входных данных из (-Input1 + Input2) кому (Input2 - Input1).

  2. Инициализирует накопитель с помощью первого + входной порт. Accumulator = int8(-1) = -1

  3. Продолжает накапливать значения. Accumulator = Accumulator - int8(-128) = 127

  4. Вычисляет выходной сигнал блока. Output = int8(127) = 127

Если блок Сумма (Sum) не изменяет порядок входных данных, то получается неидеальный результат 126.

  1. Инициализирует накопитель с помощью первого входного порта. Accumulator = int8(-(-128)) = 127

  2. Поскольку насыщение включено, начальное значение аккумулятора насыщается при 127 и не оборачивается.

  3. Продолжает накапливать значения. Accumulator = Accumulator + int8(-1) = 126

  4. Вычисляет выходной сигнал блока. Output = int8(126) = 126

Явное указание унарной операции минус для output = -a-b+cможно использовать блок Unary Minus в библиотеке математических операций.