Целочисленные алгоритмы микропроцессорной обработки информации

УДК 004.3

ЦЕЛОЧИСЛЕННЫЕ АЛГОРИТМЫ МИКРОПРОЦЕССОРНОМ ОБРАБОТКИ ИНФОРМАЦИИ

© 2012 г. А.А. Булатников, И.Н. Булатникова

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

Kuban State Technological University, Krasnodar

Предлагаются и обосновываются базовые процедуры (алгоритмы) в формате целочисленной арифметики, т. е. без операций умножения и деления, ориентированные на микропроцессорную реализацию при решении задач «электронной» кинематики.

Ключевые слова: целочисленные быстродействующие алгоритмы; микроконтроллеры; управление механизмами.

Proposed and justified by the basic procedures (algorithms) in the format of integer arithmetic, i.e., without multiplication and division, focused on implementation of the microprocessor in solving problems electron kinematics.

Keywords: integer fastmaking algorithms; microcontrollers; control of mexanisms.

Сейчас происходит широкое распространение микропроцессоров (микроконтроллеров) для локальной автоматики в технических и технологических процессах. Однако этому препятствует отсутствие быстродействующих целочисленных алгоритмов, наиболее подходящих для реализации на микропроцессорах. Еще во времена реализации спецалгоритмов средствами «жесткой» логики (аппаратно) был создан ряд целочисленных алгоритмов реализации трансцендентных функций (sinx, cosx, arcsinx, ex, lnx и др.) [1]. Но их набор крайне ограничен, и дальнейшего развития они не получили, в том числе из-за трудностей аппаратной реализации и узкой специализации электронных микромодулей.

С появлением микропроцессоров c их уникальной возможностью легкой реализации алгоритмов программным путем возникла необходимость в развитии спецалгоритмов. Причем не только в реализации функциональных преобразований, но для моделирования сложных геометрических систем. Последнее ценно тем, что при их моделировании получаются сложные взаимные отношения и зависимости, которые весьма трудно получить аналитическим путем («в лоб»). А это означает, что полученные так называемые неаналитические алгоритмы весьма просты и быстродействующи. Учитывая появление особой архитектуры RISC [2] в связи c развитием микроэлектроники, за основу пришлось взять целочисленную арифметику. Это диктует система команд такой архитектуры. Она не содержит команд умножения, деления и других так называемых «длинных» операций.

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

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

В основу моделирования положены разностно-итерационные алгоритмы (РИА), алгоритмы цифровой интерполяции кривых, другие геометрические построения, обычно осуществляемые с помощью циркуля, линейки, транспортира и обычного треугольника. Кстати, такой подход (метод геометрических аналогов) был использован в станках с программным управлением. Но ввиду того, что реализация была на «жесткой» логике, класс кривых был резко ограничен (линия, окружность, парабола) [3]. Перейдем к изложению базовых процедур целочисленной арифметики.

1. Статическое умножение и деление. Предлагается целочисленный алгоритм одновременного деления без восстановления остатка (квазиделения) и умножения [4]. Он относится к классу РИА

Чг-1 = ¡ág^-i; W0 = w, Wi = Wi-1 - q-1 y2-

>

V = V, V- = V-: + 4,-1 Х2-', где - - номер итерации, - = 1,2,...,п-2; п - двоичная

тл ™

разрядность операндов, включая знак; Ки-1 = V н— х

У

для у > 0.

Можно модифицировать этот алгоритм для случая отрицательных значений у и с целью расширения области сходимости:

q- = sign^signy;

Wo = w, W, = - q,-1У21-;

V0 = v, V- = V-1 + q, -ix21-i,

где все остальное приведено в (1).

2. Цифровая интерполяция отрезка прямой.

Сущность цифровой интерполяции любой плоской кривой состоит в следующем. Координатную плоскость покрывают множеством вертикальных и горизонтальных прямых. Между соседними параллельными прямыми постоянное расстояние 8, равное требуемой абсолютной погрешности аппроксимации (порядка 0,01 + 0,001 мм). Точки пересечения горизонтальных и вертикальных прямых являются узлами цифровой интерполяции. Задача алгоритма цифровой интерполяции состоит в определении последовательности соседних узлов, наиболее близко расположенных к теоретической прямой и обеспечивающих наиболее быстрый переход от начальной до конечной точки отрезка прямой.

Для реализации алгоритма начало координат параллельным переносом совмещают с началом отрезка. Длина и направление отрезка задается пользователем в виде целочисленных приращений каждой из координат от начала до конца отрезка АХ = хк - хн, Д Y = ук - ун. Затем для алгоритма вводится оценочная функция F(х,, у,) для каждого ,-го узла интерполяции. Она прямо пропорциональна отстоянию ,-го

AY г

узла от теоретической линии у = х. Сама же

F (х, у) = у АХ - хА Y . Причем, если узел лежит на самой прямой линии, то F(х,, у,) = 0 . Если же выше, то F(х,,у,) > 0, если ниже, то F(х,,у,) < 0. Вот по знаку оценочной функции алгоритм и выбирает очередной узел из трех соседних в направлении от начала до конца отрезка. Существующие алгоритмы учитывали только знак оценочной функции F(х,, у,). Если она меньше нуля, то делается шаг по координате у (при |АХ| > |AY|) или шаг по координате х (при

|АХ| < |AY|). Если же F(х,,у,) > 0, то все наоборот.

Такой алгоритм имеет максимальную абсолютную погрешность, равную шагу 8 интерполяции, и низкую скорость прохождения всего отрезка. Нами предлагается оценивать не только знак F(х,, у,), но и делать

прогноз величины оценочной функции |F(х,+1, у,+1)| в двух соседних наиболее вероятных шагах и выбрать узел с min|F(х,+1, у,+1)|. То есть, появляется возможность диагонального шага (по двум координатам одновременно). Это уменьшает вдвое максимальную абсолютную погрешность аппроксимации и повышает быстродействие алгоритма. При переходе в соседний

узел корректируются координаты нового (г + 1)-го узла интерполяции

х,+1 = х, ±1 или (х,+1 = х, +

УМ = Уг ± 1 или

а также значение оценочной функции

F

В формуле (3) |ДХ| может быть умножено на 0, если приращение по оси ординат было нулевым. А также в этой же формуле |Д7| умножается на 0, если

не было приращения по оси абсцисс (см. формулу (2)). Для (г+1)-го узла повторяется то же самое, что и для ,-го узла интерполяции. Таким образом, итерации повторяются вплоть до достижения конечной точки. В результате мы получаем ломаную линию, отстоящую от точной прямой не более чем на 8/2. Этот алгоритм как бы выполняет роль линейки при построении геометрических систем.

3. Цифровая интерполяция дуги (окружности). Для выполнения задач циркуля при геометрико-построительных операциях в геометрических моделях (аналогиях) используется цифровая интерполяция окружности. Здесь очень много похожего на линейную интерполяцию. Отличие - в уравнении окружности (х2 + у2 = R2). Так же вводится оценочная функция F(х,у) = х2 + у2 -R2. Для узлов, лежащих вне окружности F(х,у) > 0, внутри - F(х,у) < 0. А на самой окружности F (х, у) = 0.

Так же в известных алгоритмах цифровой интерполяции алгоритм выбора очередного соседнего узла использует только знак (+ или -) текущего узла интерполяции. Заметим, что случай F(х, у) = 0 относим к «+». Естественно максимальная абсолютная погрешность такого алгоритма достигает 8 (величина шага), принятого условно, как и в случае линейной интерполяции, за единицу (фактическое масштабирование). Быстродействие также не максимально возможное, которое бывает только при наличии диагональных шагов. Корректировка оценочной функции F(х,y) при переходе из одного узла в другой соседний происходит по следующим формулам (целочисленным):

F (х,, у) ± 2| хг| +1

при координатном шаге по х;

F (х, у) ± 2| у| +1

при координатном шаге по у; F (х,-, у) ± 2( хг| ±| у.| + 2) при диагональном шаге.

F (x,+l, у,+1) =

В последней формуле ± перед 2х, зависит от того, возрастает ли абсцисса или нет. Аналогично и в отношении ординаты. Заметим, что возможные еди-

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

4. Алгоритмы измерения угловых величин. Эти алгоритмы заменяют транспортир в геометрических построениях. В их основе лежит круговая интерполяция. Действительно, при круговой интерполяции радиус-вектор, соединяющий центр окружности и текущий узел круговой интерполяции, «заметает» некоторую площадь (в виде сектора). Приращения этой площади при каждом шаге таковы (по формуле площади треугольника):

=

Si + 0,5у^ при движении по оси х; Si + 0,5хг- при движении по оси у;

Si + 0,5(xi + у( +1) при диагональном шаге.

F(x,y) = (y-Уо)ЛХ -(x-Xo)A7 .

Далее производится цифровая интерполяция второй линии. Координаты ее узлов последовательно подставляются в (4). И так продолжается до тех пор, пока F(x,y) не сменит знак после очередной подстановки координат узла интерполяции второй линии. Этот узел и будет точкой пересечения двух прямых.

6. Проведение касательных к окружности. Точка касания (х0,у0) задается извне. А угловой коэф-

где xc и yc

фициент касательной k = —Х°——

у 00 — ус

координаты центра окружности, к которой проведена касательная. Если же точка (х0, у0) не лежит на окружности, то расчет k более сложный, но тоже целочисленный.

7. Проведение перпендикуляра к линии. Здесь мы имеем случай из аналитической геометрии. Дана начальная точка

У = -

AX AY

AX

x + y0 +--x

0 AY

Накапливая последовательно очередные А^ (начальное S0 = 0), мы в конце интерполяции получим площадь кругового сектора. А здесь уже один шаг

1 2S

до угла а (S = —аR2). Отсюда а = — (радиан).

2 R

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

5. Точка пересечения двух прямых. Допустим, первая прямая проходит через точку (х0, у0) и имеет

угловой коэффициент k = -АУ . Тогда ее оценочная

АХ

функция F (х, у) будет

где АХ, АУ - параметры линейной интерполяции первой линии (ее угловой коэффициент k = -Ау).

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

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

Литература

1. Байков В.Д., Смолов В.В. Специализированные процессоры: итерационные алгоритмы и структуры. М., 1985. 288 с.

2. Микро-ЭВМ с сокращенным набором команд (RISC) / Р.С. Алумян [и др.] // Микропроцессорные средства и системы. 1988. № 3. С. 16 - 19.

3. Кошкин В.Л. Аппаратные системы ЧПУ. М., 1999. 248 с.

4. Булатникова И.Н., Булатников А.А. Цифровые интерполяторы криволинейных траекторий // Изв. вузов. Сев.-Кавк. регион. Техн. науки. 2011. № 2. С. 16 - 19.

Поступила в редакцию 12 июля 2011 г.

Булатников Александр Андреевич - кафедра «Прикладная математика», Кубанский государственный технологический университет.

Булатникова Инга Николаевна - канд. техн. наук, доцент, кафедра «Прикладная математика», Кубанский государственный технологический университет. E-mail: inkras@yandex.ru.

Bulatnikov Alexandr Andreevich - department of Applied Mathematics, Kuban State Technological University.

Bulatnikova Inga Nikolaevna - Candidate of Technical Sciences, assistant professor, department of «Applied Mathematics», Kuban State Technological University. E-mail: inkras@yandex.ru.