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

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

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

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

  1. Переупорядочивание вводит от (-Input1 + Input2) до (Input2 - Input1).

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

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

  4. Caclulates блок выводится. 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 в библиотеке Math Operations.

Была ли эта тема полезной?