exponenta event banner

Рекомендации по арифметике и масштабированию

Арифметические операции и масштабирование с фиксированной точкой

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

  • Используется общая схема кодирования [наклон смещения], описанная в разделе Масштабирование.

  • Масштабирование результата выбирается автоматически на основе масштабирования двух входных данных. Другими словами, масштабирование наследуется.

  • Варианты масштабирования основаны на

    • Минимизация количества арифметических операций результата

    • Максимизация точности результата

    Кроме того, масштабирование только в двоичной точке представлено как частный случай общей схемы кодирования.

Во встроенных системах масштабирование переменных на аппаратном интерфейсе (АЦП или ЦАП) является фиксированным. Однако для большинства других переменных масштабирование - это то, что вы можете выбрать, чтобы дать наилучший дизайн. При масштабировании переменных с фиксированной точкой важно помнить, что

  • Выбор масштабирования зависит от конкретной моделируемой конструкции.

  • Нет лучшего подхода к масштабированию. Все варианты имеют связанные с этим преимущества и недостатки. Цель этого раздела - раскрыть вам эти преимущества и недостатки.

Дополнение

Рассмотрим добавление двух реальных ценностей:

Va = Vb + Vc.

Эти значения представлены общей схемой кодирования [наклон смещения], описанной в разделе Масштабирование:

Vi = Fi2EiQi + Bi.

В системе с фиксированной точкой добавление значений приводит к нахождению переменной Qa:

Qa = FbFa2Eb EaQb + FcFa2Ec EaQc + Bb + Bc − BaFa2 − Ea.

Эта формула показывает

  • В общем случае Qa не вычисляется посредством простого добавления Qb и Qc.

  • В общем, существует два умножения константы и переменной, два сложения и некоторое дополнительное битовое смещение.

Унаследованное масштабирование для скорости

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

  • Установить Ba = Bb + Bc. Это исключает одно добавление.

  • Установите Fa = Fb или Fa = Fc. Любой из вариантов исключает одно из двух переменных умножений на константу.

Результирующая формула

Qa = 2Eb EaQb + FcFa2Ec − EaQc

или

Qa = FbFa2Eb EaQb + 2Ec − EaQc.

Эти уравнения представляются эквивалентными. Однако выбор округления и точности может сделать один выбор особенным по сравнению с другим. Для дальнейшего упрощения можно выбрать Ea = Ec или Ea = Eb. Это устранит некоторое смещение битов.

Унаследованное масштабирование для максимальной точности

В процессе нахождения масштабирования суммы одной разумной целью является максимальная точность. Масштабирование с максимальной точностью можно определить, если диапазон переменной известен. Команда Максимизировать точность (Maximize Precision) показывает, что диапазон операций с фиксированной точкой можно определить из значений max (Va) и min (Va). Для суммирования можно определить диапазон от

минута (V˜a) =min (V˜b) +min (V˜c), макс. (V˜a) =max (V˜b) +max (V˜c).

Теперь можно получить откос с максимальной точностью:

Fa2Ea = max (V˜a) min (V˜a) 2wsa 1 = Fa2Eb (2wsb 1) + Fc2Ec (2wsc − 1) 2wsa − 1.

В большинстве случаев размеры входного и выходного слов намного больше единицы, и наклон становится

Fa2Ea≈Fb2Eb+wsb−wsa+Fc2Ec+wsc−wsa,

который зависит только от размера входных и выходных слов. Соответствующее смещение

Ba = мин (V˜a) Fa2Eamin (Qa).

Значение смещения зависит от того, являются ли входы и выходы подписанными или неподписанными числами.

Если все входы и выходы не подписаны, то минимальные значения для этих переменных равны нулю, и смещение уменьшается до особенно простой формы:

Ba = Bb + Bc.

Если входы и выход все подписаны, то смещение становится

Ba≈Bb+Bc+Fb2Eb (2wsb 1 + 2wsb 1) + Fc2Ec (2wsc 1 + 2wsc − 1), Ba≈Bb+Bc.

Масштабирование только двоичных точек

Для масштабирования только в двоичной точке поиск Qa приводит к следующему простому выражению:

Qa = 2Eb EaQb + 2Ec − EaQc.

Этот выбор масштабирования приводит только к одному сложению и некоторым сдвигам битов. Исключение каких-либо умножений является большим преимуществом масштабирования только в двоичной точке.

Примечание

Вычитание значений дает результаты, аналогичные результатам, полученным при добавлении значений.

Накопление

Накопление значений тесно связано с добавлением:

Va_new=Va_old+Vb.

Поиск Qa_new включает в себя одно умножение константы и переменной, два сложения и некоторое битовое смещение:

Qa_new=Qa_old+FbFa2Eb−EaQb+BbFa2−Ea.

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

Масштабирование только двоичных точек

Для масштабирования только в двоичной точке поиск Qa_new приводит к следующему простому выражению:

Qa_new=Qa_old+2Eb−EaQb.

Эта опция масштабирования включает только одно сложение и некоторое смещение битов.

Примечание

Отрицательное накопление значений дает результаты, аналогичные результатам, полученным при накоплении значений.

Умножение

Рассмотрим умножение двух реальных значений:

Va = VbVc.

Эти значения представлены общей схемой кодирования [наклон смещения], описанной в разделе Масштабирование:

Vi = Fi2EiQi + Bi.

В системе с фиксированной точкой умножение значений приводит к нахождению переменной Qa:

Qa = FbFcFa2Eb + Ec EaQbQc + FbBcFa2Eb EaQb + FcBbFa2Ec EaQc + BbBc − BaFa2 − Ea.

Эта формула показывает

  • В общем случае Qa не вычисляется посредством простого умножения Qb и Qc.

  • В общем, существует одно умножение константы и двух переменных, два умножения константы и переменной, три сложения и некоторое дополнительное битовое смещение.

Унаследованное масштабирование для скорости

Количество арифметических операций можно уменьшить с помощью следующих вариантов:

  • Установить Ba = BbBc. Это исключает одну операцию сложения.

  • Установка Fa = FbFc. Это упрощает тройное умножение - безусловно, самая трудная часть уравнения для реализации.

  • Установите Ea = Eb + Ec. Это устраняет некоторое смещение битов.

Результирующая формула

Qa = QbQc + BcFc2 EcQb + BbFb2 − EbQc.

Унаследованное масштабирование для максимальной точности

Масштабирование с максимальной точностью можно определить, если диапазон переменной известен. Команда Максимизировать точность (Maximize Precision) показывает, что можно определить диапазон операций с фиксированной точкой из

max (V˜a)

и

мин (V˜a).

Для умножения можно определить диапазон от

min (V˜a) = min (VLL, VLH, VHL, VHH), max (V˜a) = max (VLL, VLH, VHL, VHH),

где

VLL = min (V˜b) ⋅min (V˜c), VLH = min (V˜b) ⋅max (V˜c), VHL = max (V˜b) ⋅min (V˜c), VHH = max (V˜b) ⋅max (V˜c).

Масштабирование только двоичных точек

Для масштабирования только в двоичной точке поиск Qa приводит к следующему простому выражению:

Qa = 2Eb + Ec EaQbQc.

Выгода

Рассмотрим умножение константы и переменной

Va = K Vb,

где K - константа, называемая коэффициентом усиления. Поскольку Va является результатом умножения константы и переменной, то нахождение Qa является упрощенной версией общей формулы умножения с фиксированной точкой:

Qa = (KFb2EbFa2Ea) Qb + (KBb BaFa2Ea).

Обратите внимание, что термины в скобках можно вычислить в автономном режиме. Поэтому существует только одно умножение константы и переменной и одно сложение.

Чтобы реализовать вышеприведенное уравнение без изменения его на более сложный вид, константы должны быть закодированы с использованием формата только двоичной точки. Для каждой из этих констант диапазон является тривиальным случаем только одного значения. Несмотря на тривиальный диапазон, двоичные точечные формулы для максимальной точности по-прежнему действительны. Представления с максимальной точностью являются наиболее полезными вариантами, если нет необходимости избегать каких-либо сдвигов. Кодирование констант:

(KFb2EbFa2Ea) = 2EXQX (KBb BaFa2Ea) = 2EYQY

в результате получается формула

Qa = 2EXQXQB + 2EYQY.

Унаследованное масштабирование для скорости

Количество арифметических операций можно уменьшить с помощью следующих вариантов:

  • Установить Ba = KBb. Это исключает один постоянный член.

  • Установите Fa = KFb и Ea = Eb. Это устанавливает другой постоянный член к единице.

    Результирующая формула просто

    Qa = Qb.

Если количество битов отличается, то единственной возможной операцией является обработка потенциальных переполнений или выполнение расширения знака.

Унаследованное масштабирование для максимальной точности

Масштабирование для максимальной точности не обязательно должно отличаться от масштабирования для скорости, если выходной сигнал не имеет меньше битов, чем входной сигнал. Если это так, то насыщения следует избегать, деля наклон на 2 для каждого потерянного бита. Это предотвращает насыщение, но вызывает округление.

Подразделение

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

Va = Vb/Vc.

Эти значения представлены общей схемой кодирования [наклон смещения], описанной в разделе Масштабирование:

Vi = Fi2EiQi + Bi.

В системе с фиксированной точкой разделение значений приводит к нахождению переменной Qa:

Qa = Fb2EbQb + BbFcFa2Ec + EaQc + BcFa2Ea BaFa2 − Ea.

Эта формула показывает

  • В общем случае Qa не вычисляется посредством простого деления Qb на Qc.

  • В общем, существует два умножения константы и переменной, два сложения, одно деление переменной на переменную, одно деление константы на переменную и некоторое дополнительное битовое смещение.

Унаследованное масштабирование для скорости

Количество арифметических операций можно уменьшить с помощью следующих вариантов:

  • Установить Ba = 0. Это исключает одну операцию сложения.

  • Если Bc = 0, то задайте дробный уклон Fa = Fb/Fc. Это исключает одно постоянное умножение на переменную.

Результирующая формула

Qa = QbQc2Eb Ec Ea + (Bb/Fb) Qc2 − Ec − Ea.

Если Bc ≠ 0, то не может быть дана четкая рекомендация.

Унаследованное масштабирование для максимальной точности

Масштабирование с максимальной точностью можно определить, если диапазон переменной известен. Команда Максимизировать точность (Maximize Precision) показывает, что можно определить диапазон операций с фиксированной точкой из

max (V˜a)

и

мин (V˜a).

Для деления можно определить диапазон от

min (V˜a) = min (VLL, VLH, VHL, VHH), max (V˜a) = max (VLL, VLH, VHL, VHH),

где для ненулевых знаменателей

VLL=min (V˜b) / минута (V˜c), VLH=min (V˜b) / макс. (V˜c), VHL=max (V˜b) / минута (V˜c), VHH=max (V˜b) / макс. (V˜c).

Масштабирование только двоичных точек

Для масштабирования только в двоичной точке поиск Qa приводит к следующему простому выражению:

Qa = QbQc2Eb Ec − Ea.

Примечание

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

Резюме

Из предыдущего анализа переменных с фиксированной точкой, масштабированных в рамках общей схемы кодирования [Slope Bias], можно сделать вывод

  • Кроме того, вычитание, умножение и деление могут быть очень вовлечены, если для смещений и откосов не будут сделаны определенные варианты.

  • Бинарное масштабирование гарантирует более простую математику, но обычно жертвует некоторой точностью.

Обратите внимание, что в предыдущих формулах не показано следующее:

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

  • Переменные либо подписаны, либо не подписаны.

  • Схемы округления и обработки переполнения. Эти решения необходимо принять до достижения фактической реализации с фиксированной точкой.

См. также