Научная статья на тему 'Алгоритм целочисленной операции деления для микроконтроллера MSP 430'

Алгоритм целочисленной операции деления для микроконтроллера MSP 430 Текст научной статьи по специальности «Математика»

CC BY
543
63
i Надоели баннеры? Вы всегда можете отключить рекламу.
i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Алгоритм целочисленной операции деления для микроконтроллера MSP 430»

Считаем, что модель (4), (5) следует применять с параметрами k<3 и i<2 -тогда получится удовлетворительное соотношение сложность устройства (не более двух умножителей) - погрешность воспроизведения (не более 0,5%).

Для более точного воспроизведения функции (1) и аналогичных ей равно-амплитудных полиномов планируется вести поиск новых способов воспроизведения.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. Двайт. Таблица интегралов. -М.: 1982.

2. Фролов С.С. Способы реализации равноамплитудных полиномов // Материалы Всероссийской научно-практической конференции "Современные информационные технологии в науке, образовании и практике". Оренбург. 2004.

М.И. Ледовской

АЛГОРИТМ ЦЕЛОЧИСЛЕННОЙ ОПЕРАЦИИ ДЕЛЕНИЯ ДЛЯ МИКРОКОНТРОЛЛЕРА MSP 430

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

Как показано в [1], целочисленные арифметические операции сложения (вычитания), умножения и деления можно задействовать для выполнения соответствующих операций над вещественными переменными. Однако в микроконтроллере MSP 430 выполнение операции деления вещественных переменных затрудняется в связи с отсутствием ее целочисленного аналога. Для устранения данного препятствия необходимо разработать специальный алгоритм, обеспечивающий выполнение целочисленной операции деления с помощью имеющихся операций целочисленной арифметики..

С целью разработки указанного алгоритма рассмотрим операцию деления вещественных переменных z=x/y, для которой известны диапазоны изменения делимого x, делителя y и частного z соответственно | x | min< | x | < | x | max, I y | min< | y | < | y | max и | z | min<| z |<| z | max. Согласно методике, изложенной в [1], нетрудно получить целочисленную модель данной операции

2-q (2nX)

Z = V ' . (1)

Y

Здесь Х, Y и Z - целочисленные аналоги вещественных переменных x, y и z, причем 0<| Х |<2n-1-1, 0<| Y |<2n-1-1 и 0<| Z |<2n-1-1, где n - разрядность целочисленного формата данных (рис.1); 2n-q = MzMy/Mx - выравнивающий коэффициент, а Mx, My и Mz - масштабы вещественных переменных x, y и z в виде степеней числа 2.

n-1 n-2 1 0

Зн

Рис.1. Формат целочисленных данных

В целочисленной модели (1) выполняются следующие действия. Коэффициент 2п означает перенос двоичной точки в сомножителе Х на п разрядов вправо. Следовательно, для получения произведения 2пХ достаточно расположить Х в старшей половине 2п-разрядной ячейки, у которой младшая часть обнулена. Для учета коэффициента 2-4 необходимо сдвинуть величину 2пХ на q двоичных разрядов вправо. В результате образуется 2п-разрядное произведение 2-<1(2пХ), формат которого приведен на рис.2. Затем выполняется операция целочисленного деления 2п-разрядного делимого 2-<1(2пХ) на п-разрядный делитель У, что позволяет получить п-разрядное частное 7 .

2п-1 2п-2 п-1 п п-1 п-2 1 0

Зн

Рис.2. Формат целочисленного делимого

Заметим, что целочисленный результат Ъ связан с ожидаемым вещественным аналогом ъ соотношением вида ъ*=7/Мъ, где ъ*- приближенное вещественное значение частного. Возникающая разность уъ=ъ-ъ* является погрешностью выполнения операции деления вещественных переменных ъ=х/у в целочисленном формате данных.

Рассмотрим аналитическую оценку погрешности уъ , учитывая две причины ее появления. Во-первых, вещественные переменные х и у представляются в п-разрядном целочисленном формате данных с погрешностями |рх | =Дх/2»|<| х | /2п и |ру | =Ду/2 »| у | /2п , где Дх и Ду - кванты этих переменных [1]. Следствием данного обстоятельства является трансформированная погрешность вещественного частного пъ. Во-вторых, целочисленное частное Ъ, получаемое на выходе модели (1), имеет некоторую погрешность е7 (погрешность модели). Эта погрешность преобразуется в соответствующую погрешность вещественного частного еъ с помощью очевидного соотношения еъ = е7/Мъ = е7Дъ » е7 | ъ | /2п-1, где Дъ

- квант переменной ъ . Таким образом, для погрешности уъ справедлива оценка |уъ | = |п21 + |е21.

Наиболее оптимальным соотношением между погрешностями пъ и еъ является приближенный баланс | пъ |»| еъ |, который в развернутой форме выглядит следующим образом:

1 I I |х| | I е 7|ъ|

й1рх1 "ру » (2)

к1 у 2

Раскрывая в (2) оценки |рх | и |ру |, получаем условие, обеспечивающее выполнение баланса погрешностей: е7»1.

Заметим, что условие е7»1 получено для идеализированного случая, когда операнды х и у содержат лишь погрешности рх и ру. На самом деле к погрешностям рх и ру добавляются накопленные погрешности предыдущих вычислений, что существенно увеличивает трансформированную погрешность пъ. Поэтому условие е7»1 в большинстве случаев обеспечивает баланс погрешностей вида |пъ |>|еъ | и в этом смысле является наиболее жестким.

Получим алгоритм целочисленной операции деления, удовлетворяющий условию е7»1. Для простоты изложения воспользуемся отвлеченной операцией деления 7=Х/У, где 2п-2<У<2п-1-1 - п-разрядный делитель (рис.1), а 0<Х<(2п-1-1)У

- 2п-разрядное делимое (рис.2). Приведенные ограничения на делитель и делимое

легко удовлетворяются на практике. В частности, делитель приводится к интервалу 2n-2<Y<2n-1-1 путем сдвига на необходимое количество двоичных разрядов влево при одновременном сдвиге делимого. В данной постановке предполагается, что значения X и Y являются точными, поскольку анализ должен проводиться без учета трансформированной погрешности.

Учитывая архитектурные особенности микроконтроллера MSP 430, сведем операцию деления Z=X/Y к вычислению обратной функции F(Y)=22n-3/Y c последующим умножением на делимое: Z=2-(2n-3)(F-X). Для вычисления обратной функции воспользуемся итерационным методом Ньютона [2], который обеспечивает высокую скорость сходимости и реализуется с помощью операций сложения, вычитания и умножения.

Как известно, метод Ньютона весьма чувствителен к выбору начального приближения. Поставим задачу получить алгоритм начального приближения, который отличается малой трудоемкостью и приемлемой точностью. Для этого воспользуемся подходом, предложенным в [3]. Его суть заключается в том, что обратная функция F(Y)=22n-3/Y аппроксимируется на интервале 2n-2<Y<2n-1 по двум точным граничным значениям F(2n-2)=2n-1 и F(2n-1)=2n-2. В результате получается простая интерполяционная формула

F0(Y) = 2n-1 + 2n-2 - Y. (3)

Затем методическая погрешность формулы (3) аппроксимируется линейными отрезками на двух подынтервалах 2n-2<Y<2n-2+2n-4 и 2n-2+2n-4< Y<2n-1 и прибавляется к найденному значению F0(Y):

n 1 n 2 [2-1(Y - 2n-2), если Y - 2n-2 < 2n-4;

F0(Y) = 2n-1 + 2n-2 -Y-i (4)

[2-2 (2n-1 - Y), если Y - 2n-2 > 2n-4.

Аналитический анализ методической погрешности алгоритма (4) |Fo показывает, что ее можно оценить следующим образом: ||Fo | <2n-6. Например, для 8-разрядного формата данных (n=8) ||Fo | <4, т.е. не более 3 % в относительных единицах. Заметим, что такая точность достигается с помощью простых операций сложения, вычитания и сдвига, которые в микроконтроллере MSP 430 выполняются наиболее быстро.

Полную погрешность алгоритма (4) eFo можно оценить в виде суммы |eFo | = ||Fo | + |pFo |, где pFo - инструментальная погрешность, вызванная округлением дробных величин до целых значений, причем |pFo |<2-1 (округление по '/2). Поэтому между погрешностями |Fo и pFo существует соотношение ||Fo | >> |pFo |, что позволяет погрешностью pFo пренебречь, т.е. |eFo |»||Fo | <2n-6.

Эта величина является оценкой погрешности начального приближения F0.

На рис.3 приведен график погрешности начального приближения F0, полученный путем моделирования алгоритма (4) при n=8 в системе Matlab7/Simulink6/Fixed-Point. График полностью подтверждает приведенную выше оценку погрешности |eFo |»||Fo | <4.

Использование метода Ньютона для вычисления обратной функции F(Y)=22n-3/Y приводит к следующему алгоритму:

-2n+3^. <--|2П-3

' ' — Y Hi , 1

(5)

k = 1,2,...,m,

где F0 - начальное приближение, получаемое из (4); m - количество итераций.

Fk = Fk-1 + 2 n+3Fk-1(22n-3 - YFk-1),

70 80 90 100 110 120 130 Делитель У

Рис.3. Погрешность начального приближения

Условием сходимости итерационного процесса (5) является 2-п+2 | Р-Ро | <1. Так как | Р-Р0 |»|еРо | <2п-6, то условие сходимости выполняется.

Методическая погрешность алгоритма (5) |Рт подчиняется оценке

1 Рт

|Р - Рт I < 2п-2(2-п+2 |Р - Р0 |)2т.

(6)

Потребуем, чтобы погрешность |Рт удовлетворяла условию ||Рт|<1. Тогда из (6) можно найти количесво итераций т, удовлетворяющее этому условию при заданной разрядности формата данных п (табл.). Кроме того, из (6) при известных п и т вытекает истинная оценка методической погрешности, которая получается одинаковой для любой разрядности: ||Рт | <2-2.

Таблица

Разрядность п 8 16 32 64

Количество итераций т 1 2 3 4

Полная погрешность алгоритма (5) еРт подчиняется оценке в виде суммы |еРт | = ||Рт | + |рРт |, где рРт - инструментальная погрешность, вызванная округлением дробных величин до целых значений. Как известно, метод Ньютона автоматически компенсирует инструментальную погрешность, образованную в предыдущей итерации. Следовательно, в расчет следует принимать только погрешность рРт, получаемую на последней итерации, считая, что предыдущее приближение Рт-1 не содержит инструментальную погрешность. По этой причине для погрешность рРт справедлива оценка |рРт |<2-1 (округление по '/2). Следовательно, с учетом ||Рт | <2-2, погрешность алгоритма (5) еРт можно оценить следующим образом: |еРт | < 2-1+2-2=0,75. Данная величина является оценкой погрешности, с которой вычисляется обратная функция Рт.

На рис.4 приведен график погрешности вычисления обратной функции Бт, полученный путем совместного моделирования алгоритмов (4) и (5) при п=8 и т=1 в системе Ма11аЪ7/81тиИпк6Мхе^Рот1 График подтверждает аналитическую оценку погрешности |еРт | < 0,75.

Делитель У

Рис.4. Погрешность вычисления обратной функции

После получения значения обратной функции Бт искомое частное Ъ=Х/У вычисляется по формуле

Ъ = 2-2п+3 (Бт • X) = 2-п+1 (2-п+2 Х)Бт . (7)

Полную погрешность формулы (7) ег можно оценить в виде суммы I I = I ет I + I Рг I, где рг - инструментальная погрешность, вызванная округлением дробных величин до целых значений, причем !р2 !<2-1 (округление по '/2). Поэтому окончательная оценка для ег , с учетом !еРт I < 0,75, имеет вид !е2 I <1,25. Так как аналитическая оценка |eZ I < 1,25 является завышенной, то можно сделать вывод, что поставленное выше условие е2»1 выполняется, т.е. целочисленное частное Ъ вычисляется с требуемой погрешностью ег.

На рис.5 приведена область распределения погрешности целочисленного частного Ъ, полученная путем совместного моделирования алгоритмов (4), (5) и (7) при п=8 и т=1 в системе Ма11аЪ7/81тиИпк6Мхе^Рот1. Результаты моделирования подтверждают аналитическую оценку погрешности |eг I < 1,25» 1.

Структура 81тиИпк-модели для экспериментального анализа погрешности целочисленного частного приведена на рис.6. Здесь затененный блок 8иЬ8уБ1ет является подсистемой, которая обеспечивает реализацию алгоритмов (4), (5) и (7), а остальные - предназначены для вычисления погрешности ег. Модель запускается из т-файла, где задается полный набор значений делимого Х от 64 до

127Y для каждого значения делителя Y, который, в свою очередь, изменяется от 64 до 127 с шагом 1.

1.5 1

0.5 0

-0.5 -1 -1.5

60 70 80 90 100 110 120 130 Делитель Y

Рис.5. Область распределения погрешности целочисленного частного

Для значении делимого Х от 64 до 127Y c шагом 1

Рис.6. БМиПпк-модель для экспериментального анализа погрешности целочисленного частного

Структура подсистемы 8иЪ8у81еш приведена на рис.7. В ней все операции умножения выполняются в формате 8x8, а операции сложения, вычитания и сдвига - в 8-разрядном формате. Исключение составляет операция вычитания в алгоритме (5), которая выполняется в 16-разрядном формате.

Gain4

Рис.7. Подсистема SubSystem, реализующая алгоритм целочисленной операции

деления

Алгоритмы (4), (5) и (7) образуют искомый алгоритм целочисленной операции деления. Данный алгоритм можно использовать для выполнения операции деления вещественных переменных в микроконтроллере MSP 430 c любой наперед заданной точностью (разрядностью). Следует также отметить, что предлагаемый алгоритм не зависит от диапазонов изменения вещественных переменных и их масштабов, что обеспечивает его универсальность. Кроме того, алгоритм можно использовать для получения приближенного частного при обработке данных, которые по своей природе являются целочисленными.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. Ледовской М.И. Обработка вещественных данных в микроконтроллерах с арифметикой фиксированной точки // Известия ТРТУ. Таганрог: 2004. №2 - (37). С. 52-58.

2. БахваловН.С. Численные методы. -М.: Наука, 1973. - 631с.

3. Ледовской М.И. Простой алгоритм вычисления малоразрядного частного в микропроцессорах // Материалы Международной научной конференции "Информационный подход в естественных, гуманитарных и технических науках", Ч. 3. Таганрог. 2004. С. 49-54.

i Надоели баннеры? Вы всегда можете отключить рекламу.