Следующие разделы описывают взаимосвязь между арифметическими операциями и масштабированием с фиксированной точкой и предлагают некоторые основные рекомендации, которые могут быть подходящими для конструкции с фиксированной точкой. Для каждой арифметической операции,
Используется общая схема кодирования [наклон смещения], описанная в разделе Масштабирование.
Масштабирование результата выбирается автоматически на основе масштабирования двух входных данных. Другими словами, масштабирование наследуется.
Варианты масштабирования основаны на
Минимизация количества арифметических операций результата
Максимизация точности результата
Кроме того, масштабирование только в двоичной точке представлено как частный случай общей схемы кодирования.
Во встроенных системах масштабирование переменных на аппаратном интерфейсе (АЦП или ЦАП) является фиксированным. Однако для большинства других переменных масштабирование - это то, что вы можете выбрать, чтобы дать наилучший дизайн. При масштабировании переменных с фиксированной точкой важно помнить, что
Выбор масштабирования зависит от конкретной моделируемой конструкции.
Нет лучшего подхода к масштабированию. Все варианты имеют связанные с этим преимущества и недостатки. Цель этого раздела - раскрыть вам эти преимущества и недостатки.
Рассмотрим добавление двух реальных ценностей:
Vc.
Эти значения представлены общей схемой кодирования [наклон смещения], описанной в разделе Масштабирование:
Bi.
В системе с фиксированной точкой добавление значений приводит к нахождению переменной Qa:
Bc − BaFa2 − Ea.
Эта формула показывает
В общем случае Qa не вычисляется посредством простого добавления Qb и Qc.
В общем, существует два умножения константы и переменной, два сложения и некоторое дополнительное битовое смещение.
В процессе нахождения масштабирования суммы одной из разумных целей является упрощение вычислений. Упрощение вычислений должно уменьшить количество операций, увеличив тем самым скорость выполнения. Минимизировать количество арифметических операций можно с помощью следующих вариантов:
Установить Ba = Bb + Bc. Это исключает одно добавление.
Установите Fa = Fb или Fa = Fc. Любой из вариантов исключает одно из двух переменных умножений на константу.
Результирующая формула
FcFa2Ec − EaQc
или
− EaQc.
Эти уравнения представляются эквивалентными. Однако выбор округления и точности может сделать один выбор особенным по сравнению с другим. Для дальнейшего упрощения можно выбрать Ea = Ec или Ea = Eb. Это устранит некоторое смещение битов.
В процессе нахождения масштабирования суммы одной разумной целью является максимальная точность. Масштабирование с максимальной точностью можно определить, если диапазон переменной известен. Команда Максимизировать точность (Maximize Precision) показывает, что диапазон операций с фиксированной точкой можно определить из значений max (Va) и min (Va). Для суммирования можно определить диапазон от
(V˜b) +max (V˜c).
Теперь можно получить откос с максимальной точностью:
Fc2Ec (2wsc − 1) 2wsa − 1.
В большинстве случаев размеры входного и выходного слов намного больше единицы, и наклон становится
который зависит только от размера входных и выходных слов. Соответствующее смещение
(Qa).
Значение смещения зависит от того, являются ли входы и выходы подписанными или неподписанными числами.
Если все входы и выходы не подписаны, то минимальные значения для этих переменных равны нулю, и смещение уменьшается до особенно простой формы:
Bc.
Если входы и выход все подписаны, то смещение становится
2wsc − 1), Ba≈Bb+Bc.
Для масштабирования только в двоичной точке поиск Qa приводит к следующему простому выражению:
− EaQc.
Этот выбор масштабирования приводит только к одному сложению и некоторым сдвигам битов. Исключение каких-либо умножений является большим преимуществом масштабирования только в двоичной точке.
Накопление значений тесно связано с добавлением:
Поиск Qa_new включает в себя одно умножение константы и переменной, два сложения и некоторое битовое смещение:
Важным отличием для реализации с фиксированной точкой является то, что масштабирование выходного сигнала идентично масштабированию первого входного сигнала.
Для масштабирования только в двоичной точке поиск Qa_new приводит к следующему простому выражению:
Эта опция масштабирования включает только одно сложение и некоторое смещение битов.
Примечание
Отрицательное накопление значений дает результаты, аналогичные результатам, полученным при накоплении значений.
Рассмотрим умножение двух реальных значений:
VbVc.
Эти значения представлены общей схемой кодирования [наклон смещения], описанной в разделе Масштабирование:
Bi.
В системе с фиксированной точкой умножение значений приводит к нахождению переменной Qa:
+ BbBc − BaFa2 − Ea.
Эта формула показывает
В общем случае Qa не вычисляется посредством простого умножения Qb и Qc.
В общем, существует одно умножение константы и двух переменных, два умножения константы и переменной, три сложения и некоторое дополнительное битовое смещение.
Количество арифметических операций можно уменьшить с помощью следующих вариантов:
Установить Ba = BbBc. Это исключает одну операцию сложения.
Установка Fa = FbFc. Это упрощает тройное умножение - безусловно, самая трудная часть уравнения для реализации.
Установите Ea = Eb + Ec. Это устраняет некоторое смещение битов.
Результирующая формула
BbFb2 − EbQc.
Масштабирование с максимальной точностью можно определить, если диапазон переменной известен. Команда Максимизировать точность (Maximize Precision) показывает, что можно определить диапазон операций с фиксированной точкой из
)
и
).
Для умножения можно определить диапазон от
VLH, VHL, VHH),
где
= max (V˜b) ⋅max (V˜c).
Для масштабирования только в двоичной точке поиск Qa приводит к следующему простому выражению:
EaQbQc.
Рассмотрим умножение константы и переменной
Vb,
где K - константа, называемая коэффициентом усиления. Поскольку Va является результатом умножения константы и переменной, то нахождение Qa является упрощенной версией общей формулы умножения с фиксированной точкой:
BaFa2Ea).
Обратите внимание, что термины в скобках можно вычислить в автономном режиме. Поэтому существует только одно умножение константы и переменной и одно сложение.
Чтобы реализовать вышеприведенное уравнение без изменения его на более сложный вид, константы должны быть закодированы с использованием формата только двоичной точки. Для каждой из этих констант диапазон является тривиальным случаем только одного значения. Несмотря на тривиальный диапазон, двоичные точечные формулы для максимальной точности по-прежнему действительны. Представления с максимальной точностью являются наиболее полезными вариантами, если нет необходимости избегать каких-либо сдвигов. Кодирование констант:
= 2EYQY
в результате получается формула
2EYQY.
Количество арифметических операций можно уменьшить с помощью следующих вариантов:
Установить Ba = KBb. Это исключает один постоянный член.
Установите Fa = KFb и Ea = Eb. Это устанавливает другой постоянный член к единице.
Результирующая формула просто
Qb.
Если количество битов отличается, то единственной возможной операцией является обработка потенциальных переполнений или выполнение расширения знака.
Масштабирование для максимальной точности не обязательно должно отличаться от масштабирования для скорости, если выходной сигнал не имеет меньше битов, чем входной сигнал. Если это так, то насыщения следует избегать, деля наклон на 2 для каждого потерянного бита. Это предотвращает насыщение, но вызывает округление.
Разделение значений - это операция, которую следует избегать во встроенных системах с фиксированной точкой, но она может происходить местами. Поэтому рассмотрим разделение двух реальных ценностей:
Vb/Vc.
Эти значения представлены общей схемой кодирования [наклон смещения], описанной в разделе Масштабирование:
Bi.
В системе с фиксированной точкой разделение значений приводит к нахождению переменной Qa:
BaFa2 − Ea.
Эта формула показывает
В общем случае Qa не вычисляется посредством простого деления Qb на Qc.
В общем, существует два умножения константы и переменной, два сложения, одно деление переменной на переменную, одно деление константы на переменную и некоторое дополнительное битовое смещение.
Количество арифметических операций можно уменьшить с помощью следующих вариантов:
Установить Ba = 0. Это исключает одну операцию сложения.
Если Bc = 0, то задайте дробный уклон Fa = Fb/Fc. Это исключает одно постоянное умножение на переменную.
Результирующая формула
Qc2 − Ec − Ea.
Если Bc ≠ 0, то не может быть дана четкая рекомендация.
Масштабирование с максимальной точностью можно определить, если диапазон переменной известен. Команда Максимизировать точность (Maximize Precision) показывает, что можно определить диапазон операций с фиксированной точкой из
)
и
).
Для деления можно определить диапазон от
VLH, VHL, VHH),
где для ненулевых знаменателей
/ макс. (V˜c).
Для масштабирования только в двоичной точке поиск Qa приводит к следующему простому выражению:
− Ea.
Примечание
Для последних двух формул, включающих Qa, возможно деление на ноль и деление на ноль. В этих случаях аппаратные средства обеспечивают определенное поведение по умолчанию, но необходимо убедиться, что эти ответы по умолчанию дают значимые результаты для встроенной системы.
Из предыдущего анализа переменных с фиксированной точкой, масштабированных в рамках общей схемы кодирования [Slope Bias], можно сделать вывод
Кроме того, вычитание, умножение и деление могут быть очень вовлечены, если для смещений и откосов не будут сделаны определенные варианты.
Бинарное масштабирование гарантирует более простую математику, но обычно жертвует некоторой точностью.
Обратите внимание, что в предыдущих формулах не показано следующее:
Константы и переменные представлены конечным числом битов.
Переменные либо подписаны, либо не подписаны.
Схемы округления и обработки переполнения. Эти решения необходимо принять до достижения фактической реализации с фиксированной точкой.