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

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

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

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

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

  • Масштабирующийся выбор на основе

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

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

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

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

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

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

Сложение

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

Va=Vb+Vc.

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

Vi=Fi2EiQi+Bi.

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

Qa=FbFa2EbEaQb+FcFa2EcEaQc+Bb+BcBaFa2Ea.

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

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

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

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

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

  • Установите Ba = Bb + Bc. Это устраняет одно сложение.

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

Получившаяся формула

Qa=2EbEaQb+FcFa2EcEaQc

или

Qa=FbFa2EbEaQb+2EcEaQc.

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

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

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

min(V˜a)=min(V˜b)+min(V˜c),max(V˜a)=max(V˜b)+max(V˜c).

Можно теперь вывести наклон максимальной точности:

Fa2Ea=max(V˜a)min(V˜a)2wsa1=Fa2Eb(2wsb1)+Fc2Ec(2wsc1)2wsa1.

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

Fa2EaFb2Eb+wsbwsa+Fc2Ec+wscwsa,

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

Ba=min(V˜a)Fa2Eamin(Qa).

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

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

Ba=Bb+Bc.

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

BaBb+Bc+Fb2Eb(2wsb1+2wsb1)+Fc2Ec(2wsc1+2wsc1),BaBb+Bc.

Единственное двоичной точкой масштабирование

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

Qa=2EbEaQb+2EcEaQc.

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

Примечание

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

Накопление

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

Va_new=Va_old+Vb.

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

Qa_new=Qa_old+FbFa2EbEaQb+BbFa2Ea.

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

Единственное двоичной точкой масштабирование

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

Qa_new=Qa_old+2EbEaQb.

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

Примечание

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

Умножение

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

Va=VbVc.

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

Vi=Fi2EiQi+Bi.

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

Qa=FbFcFa2Eb+EcEaQbQc+FbBcFa2EbEaQb+FcBbFa2EcEaQc+BbBcBaFa2Ea.

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

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

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

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

Количество арифметических операций может быть сокращено с этим выбором:

  • Установите Ba = Bb Bc. Это устраняет одну операцию сложения.

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

  • Установите Ea = Eb + Ec. Это устраняет часть битной перемены.

Получившаяся формула

Qa=QbQc+BcFc2EcQb+BbFb2EbQc.

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

Можно определить масштабирование максимальной точности, если область значений переменной известна. Максимизируйте Точность, показывает, что можно определить область значений операции фиксированной точки от

max(V˜a)

и

min(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+EcEaQbQc.

Усиление

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

Va=KVb,

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

Qa=(KFb2EbFa2Ea)Qb+(KBbBaFa2Ea).

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

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

(KFb2EbFa2Ea)=2EXQX(KBbBaFa2Ea)=2EYQY

приведение к формуле

Qa=2EXQXQB+2EYQY.

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

Количество арифметических операций может быть сокращено с этим выбором:

  • Установите Ba = KBb. Это устраняет один постоянный термин.

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

    Получившаяся формула просто

    Qa=Qb.

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

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

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

Деление

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

Va=Vb/Vc.

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

Vi=Fi2EiQi+Bi.

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

Qa=Fb2EbQb+BbFcFa2Ec+EaQc+BcFa2EaBaFa2Ea.

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

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

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

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

Количество арифметических операций может быть сокращено с этим выбором:

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

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

Получившаяся формула

Qa=QbQc2EbEcEa+(Bb/Fb)Qc2EcEa.

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

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

Можно определить масштабирование максимальной точности, если область значений переменной известна. Максимизируйте Точность, показывает, что можно определить область значений операции фиксированной точки от

max(V˜a)

и

min(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=QbQc2EbEcEa.

Примечание

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

Сводные данные

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

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

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

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

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

  • Переменные или подписываются или без знака.

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

Смотрите также