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

Этот пример показывает, как блок 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 в библиотеке Математические операции.