УДК 681.3:519.6
О.Н.Пьявченко
СИНТЕЗ МИКРОПРОЦЕССОРНЫХ АЛГОРИТМОВ ВЫЧИСЛЕНИЙ РАЗЛОЖЕНИЙ ТРАНСЦЕНДЕНТНЫХ ФУНКЦИЙ В СТЕПЕННЫЕ РЯДЫ
В микропроцессорных системах реального времени (МПС РВ) распространены алгебраические и трансцендентные преобразования
У = Б[Х(1)] (1)
считываемых с датчиков физических величин Х(1)
На практике вычисления трансцендентных функций часто осуществляются в результате расчетов их разложений в ряды [1]. При этом обобщенная запись микропроцессорных алгоритмов представляется в виде
^бм = ^м[Хм1] ( 1 = О,1,2,3,---), (2)
где ?§м- ряд степени Б, использованный для аппроксимации функции Б, индекс М отражает масштабирование переменных, а черточки показывают, что значение масштабированных переменных представлены целыми числами и, следовательно, используется целочисленная арифметика.
При проектировании МПС РВ решается задача синтеза микропроцессорных алгоритмов, обеспечивающих вычисления с заданной предельно допустимой погрешностью £р и приемлемыми вычислительной сложностью и затратами памяти. В основу синтеза кладется постулат, согласно которому на точность результата преобразования (1) влияют трансформированная погрешность датчика V, методическая погрешность полиномиальной аппроксимации ц и инструментальная погрешность в, возникающая из-за ограниченной разрядности данных [2]. Предельно допустимое значение вычислительной погрешности оценивается как сумма предельно допустимых значений указанных погрешностей
£Р% + £Бц + £Бр. (3)
Как было отмечено выше,
£Бх ^ £Б . (4)
Это условие выполняется, если
£бц + £бр ^ £Бцв = £б - £Fv. (5)
Для выполнения условия (5) предлагается следующая итерационная процедура, позволяющая построить микропроцессорные алгоритмы вычислений трансцендентных функций.
После выбора датчика переменной Х(1) оценивается предельно допустимая трансформированная погрешность £^ [3]. Затем выбирается ряд (х) для соответствующей трансцендентной функции. При этом значение степени ряда Б оп-
ределяется так, чтобы обеспечить погрешность метода аппроксимации в соответствии с ограничением
£Бц < £цр. (6)
Далее рассчитывается разрядность КАЦр аналого-цифрового преобразователя (АЦП) и проверяется выполнение ограничения на величину инструментальной погрешности, которая формируется из-за использования при вычислении ряда ^(х) данных с разрядностью КАЦр.
Если ограничение на инструментальную погрешность
£бр < £б^р - £бц (7)
не выполняется, то разрядность АЦП увеличивается.
Затем для перехода к целочисленным данным производится масштабирование ряда fs(x) и строятся микропроцессорные алгоритмы вычисления Г§м1.
Рассмотрим особенности изложенной процедуры синтеза микропроцессорных алгоритмов на примере вычисления функции
Б(Х) = еХ (8)
с предельно допустимой погрешностью £Б = 10 при изменении переменной Х в диапазоне
Х Е [2-МАЦП ,1]. (9)
Допустим, что выбран датчик с погрешностью £д = 0,2 -10-3. Тогда предельно допустимая трансформированная погрешность
£FV = е • £д = 2,12 • 0,2 -10-3 = 0,544 -10-3 , а предельно допустимая суммарная погрешность
£бцР = £б — £FV = 0,456 •Ю 3.
Для вычислений функции (8) воспользуется разложением в ряд V 'У'2 V3 V 4 "у-5 V6 'У'7 ^8
Х Х Х Х Х Х Х Х
f(X) = 1 + — +-----+ — +----+-----+-----+----+ — + ... . (10)
1! 2! 3! 4! 5! 6! 7! 8!
Исходя из условия (6) выбираем количество членов ряда (10), равным шести (Б=6). При этом предельно допустимая погрешность метода полиномиальной аппроксимации, равная величине отброшенных членов ряда, составит
£бц = 0,2 -10 3.
В этом случае из (7) следует, что предельно допустимая инструментальная погрешность вычислений значений ряда должна удовлетворять условию
£бр < 0,456 -10-3 — 0,2 -10-3 = 0,256 -10-3. (11)
Для оценки погрешности, вносимой в вычисления при представлении значений Х { КАцП-разрядами, воспользуемся дифференциалом шести членов ряда
(10)
1 2 1 3 Х4 Х5
ёЦХ) = ёХ + ХёХ + -Х2ёХ + -Х3ёХ +----------ёХ +-----ёХ .
2 6 24 120
Полагая Х=1 и ёХ = АХ = £Хр, найдем
% р =(2+1+1+24 + !20)£ ХР *2,72£ хР ’
а с учетом значения еХр = 2 N АЦП (9) получим
- N
&рр = 2,72 • 2 м АЦП . (12)
В результате подстановки (12) в (11), определим количество разрядов
Мацп > 14 (13)
и запишем ряд (10) в виде
X у2 у3 х 4 — 5 — 6
ДХ,) = 1 + —1- + —1- + —1- + —1- + —1- + —1- 1 = 1,2,3,..., (14)
1 1! 2! 3! 4! 5! 6!
где черточка показывает, что значение переменной Х1 представляются М\щ> 14-разрядными правильными двоичными дробями.
В большинстве случаев микропроцессоры работают с целыми числами. Поэтому для синтеза реализуемых на них алгоритмов следует заметить в ряде (14) дробные числа на целые.
При переходе к целочисленной арифметике рекомендуется придерживаться следующих действий:
1) выбирать масштабный коэффициент МХ поступающей с датчика переменной Х;
2) заменить переменную Х масштабированной переменной ХМ;
3) для сведения к минимуму количества операций деления привести слагаемые к общему знаменателю;
4) в результате умножения и деления на коэффициент 2с (с > 1,2,3...) заменить деление на общий знаменатель умножением на целое число и сдвигом на соответствующее количество двоичных разрядов;
5) по возможности минимизировать количество разрядов входящих в формулу произведений;
6) построить рекуррентную схему вычислений, подобную схеме Горнера.
- N
Масштабный коэффициент выбирается равным 2 АЦП ,
Мх = 2 -М АЦП (15)
и целочисленные значения переменной ХМ изменяются в диапазоне
Хм € [1, 2мАЦП ]. (16)
При введении масштабного коэффициента выражение (14) преобразуется к
виду
Х ^\г2 х"3 х"4 :уг5 ^6
!М(ХМ) = МХ + —М + -^ + -^1- + -^1- + ^М- + ^- . (17)
1! 2!Мх 3!МХ 4!МХ 5!МХ 6!МХ
После приведения (17) к общему знаменателю и преобразований получим
рекуррентную формулу
^М(Х М1 ) =
6МХ )хМ1 + 30МХ ))- + 120М
Хм1 + 360М?
X уМх Ху
V
М1 + 720М?
МХ
Х
X ^
—М^ + 720МХ
Мх у 720МХ
в которой все данные - целые числа, и операции над ними осуществляются в целочисленной арифметике.
С учетом значений коэффициентов в формуле (18) микропроцессорный алгоритм имеет вид
Иб = Хмі; Ик = (ик+1 + Ок^к, к = 5,0; ^ (Хмі) = ио, (19)
где
с5 = бМХ, с4 = 30МХ, с3 = 120МХ, с2 = ЗбОМХ, с1 = 720МХ, с0 = 720МХ;
§5 = ХМі , §4 = ЙЗ = ё2 = 81 =
Й0
1
720М,
[х
Вычисления по схеме (19) вплоть до значения и сводятся к выполнению операции умножения, сложения и сдвига. Операция сдвига данных вправо на КАцП разрядов замещает все операции деления на Мх = 2мАЦП , что имеет важное значение, когда микропроцессоры не содержат в составе команд операцию деления и для ее программной реализации требуются значительные затраты времени.
Расчет значения и0 включает деление на коэффициент 720. Однако воз-
2с
можна замена деления на умножение на целое число, Е
720
и на операцию
сдвига на с разрядов вправо.
Недостатком микропроцессорного алгоритма (19) является использование для представления промежуточных результатов вычислений до (2КАцП + 11) разрядов. Такое количество разрядов избыточно и мало оправдано, т.к. инструментальная погрешность содержится в (КАщ+11) младших разрядах суммы. Поэтому целесообразно сокращение количества разрядов суммы за счет части младших неточных разрядов.
Такое сокращение может быть получено, если урезать количество разрядов каждого произведения ХМик+1 (к = 4,0) на КАцП разрядов. Достигается это при представлении формулы (18) в виде
Ґм(Хмі) =
1Х
+ 720М,
и организации вычислений по алгоритму
1 2 о
2с 720 ]
_ _ _ _ _ х 1 85 _ 84 _ 83 _ 82 _ 81 _ хм , 8о
Мх
с ~с N 2с
720
иб _ Хм1, ик _ (ик+1 + ск)8к, к _ 5,0, ио _ fм(Xмi), где
С5 _ бМх, С4 _ 30Мх, С3 _ 120Мх, С2 _ 3б0Мх, С1 _ С0 _ 720Мх и (21)
\_
2с .
В алгоритме (21) в разрядную сетку длиной (КАцП + 11) укладываются после сдвига на КАцП разрядов значения всех промежуточных произведений, а также значения сумм ик.
В заключение заметим, что описанная методика проектирования может быть использована для синтеза микропроцессорных алгоритмов вычисления трансцендентных функций не только в результате их разложений в степенные ряды, а также при их интерполировании параболами 2 и более высокой степени и т.п. Кроме того, она пригодна при разработке алгоритмов численного интегрирования, дифференцирования и др.
1. Попов Б.А., Теслер Г.С. Вычисление функций на ЭВМ. Справочник. К.: Наукова думка. 1984. б00 с.
2. Строганов Р.П. Управляющие машины и их применение. Учеб. пособие для студентов спец. "Автоматика и телемеханика". 2-е изд., перераб. и доп. М.: Высш. шк. 1989. 304 с.: ил.
3. Пьявченко О.Н. Алгоритмические основы выполнения математических операций в микрокомпьютерах: Учебное пособие. Таганрог: Изд-во ТРТУ. 1998.-190с.