49810 (Разработка специализированного процессора для исполнения элементарных функций)

2016-07-30СтудИзба

Описание файла

Документ из архива "Разработка специализированного процессора для исполнения элементарных функций", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "49810"

Текст из документа "49810"

Введение

В данной курсовой работе стоит задача разработать специализированное цифровое устройство - процессор CORDIC, являющееся отдельным законченным модулем для расчёта значений обратной тригонометрической функции arcSin(Z) и функции возведения в степень числа arCth(Z).

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

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

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

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

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

Для построения устройства на ПЛИС необходимо его смоделировать в САПР на языке VHDL. При использовании микроконтроллера необходимо написать программу либо на языке ASSEMBLER, либо на любом другом языке программирования высокого уровня, например C++. Таким образом, разработка и построение цифрового устройства является комплексной и весьма сложной задачей, требующей глубоких знаний во многих компьютерных дисциплинах.

Большинство цифровых систем строится на микропроцессорах либо на микроконтроллерах. И при помощи микропроцессорных систем происходит управление различными технологическими процессами и отдельными операциями. Данные системы практически универсальны, так как они имеют очень высокое быстродействие, и достаточную разрядность для выполнения точных расчетов на производстве. А так же используя в данных системах ППЗУ возможно при помощи одной компьютерной системы управление различным оборудованием. То есть необходимо изменение только программы управления.

1. АНАЛИЗ ПОСТАВЛЕННОЙ ЗАДАЧИ

В курсовой проекте необходимо реализовать специализированный математический процессор для вычисления элементарных функций arcSin(Z) и arCth(Z).

Эти функции можно реализовать методом Волдера «Цифра за цифрой», метод Меджита и др. Оба эти метода основаны на ряде итерационных формул, которые приведены в таблице 1.1. Основное их различие заключается в том, что в методе Меджита на первом этапе сразу рассчитываются все направляющие коэффициенты. В данном устройстве будем использоваться метод Волдера «Цифра за цифрой», так как он требует меньших аппаратных затрат и обладает достаточной точностью вычислений.

В таблице 1 приведены итерационные формулы для вычисления заданных элементарных функций по методу Волдера «Цифра за цифрой».

Табл.1 - Метод Волдера для расчёта ArcSin(z).

Вычисление

Вычисление

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

Устройство получает данные от главного модуля и передаёт ему обратно результат. Данные передаются в формате с фиксированной точкой. На целую часть отводится 7 разрядов и 1 знаковый, на дробную часть также отводится 16 разрядов. Передача осуществляется по интерфейсу I2C(TWI). Выбран именно этот интерфейс так как в нём реализовано распознавание пакетов (начало, конец, распознавание собственных адресов для каждого устройства, что является хорошим способом и альтернативным вариантом для предотвращения коллизий).

1.1 Расчет разрядности представления данных и числа итераций

Произведём расчёт числа итераций и разрядности в математическом пакете SciLab.

Определим диапазон допустимых значений заданных элементарных функций. Исследуем итерационные формулы для вычисления Θ = arcth Z:

Тогда границы значений функции, при которых метод Волдера является верным, лежит в следующем пределе:

При этом Z для функции Θ = arch Z должно находиться в следующем диапазоне:

Определим диапазон допустимых значений аргументов функции 2Z, а затем диапазон значений само функции.

Тогда границы значений функции, при которых метод Волдера является верным, лежит в следующем пределе:

Следовательно функция будет изменяться в диапазоне:

.

Рассчитаем минимальное число итераций при погрешности преобразования равной 0,01% и максимальной выходной величине 4,685:

Тогда количестово разрядов данных составит:

.

1.2 Разработка итерационных алгоритмов вычисления функции в математическом пакете SciLab

Промоделируем в пакете математического моделирования MatLab метод Волдера «Цифра за цифрой» для анализа его работоспособности и определения погрешности вычислений.

В цикле подсчитаем значение абсолютной погрешности при изменении количества итераций от 1 до n и при изменении разрядности данных (дробная часть задается от 1 до 16 бит).

Листинг программы для исследования погрешности при изменении числа итераций:

//== function arch ====

//function [archZ] = arch(Z,N)

Q0 = 0;

x0 = 0.6072529;

y0 = 0;

N=20;

Z= 0.512

acos_ist = asin(Z)

for n=1:N

Q(1)=Q0+atan(2^(-0));

r(1)=sign(Z-y0);

x(1)=x0-y0*2^(-0);

y(1)=y0+x0*2^(-0);

for i=1:n

r(i)=sign(Z-y(i));

// ARTH =atan(2^(-i));

Q(i+1)= Q(i)+r(i)*atan(2^(-i));

x(i+1)= x(i)-r(i)*y(i)*2^(-i);

y(i+1)= y(i)+r(i)*x(i)*2^(-i);

end

arcsinZ(n)= Q(n);

asin_ist = asin(Z);

pogr(n)=(asin_ist-arcsinZ(n))/asin_ist*100;

end

scf(1);

clf();

plot(pogr);

xgrid();

//endfunction

//////////////////////////////////////////////////////////////

Q0 = 0;

x0 = 0.6072529;

y0 = 0;

for n=1:20

m=3;

Q(1)=Q0+atan(2^(-0));

Q(1)=conv(n,m,Q(1));

r(1)=sign(Z-y0);

x(1)=x0-y0*2^(-0);

x(1)=conv(n,m,x(1));

y(1)=y0+x0*2^(-0);

y(1)=conv(n,m,y(1));

for i=1:20

r(i)=sign(Z-y(i));

// ARTH =atan(2^(-i));

Q(i+1)= Q(i)+r(i)*atan(2^(-i));

Q(i+1)=conv(n,m,Q(i+1));

x(i+1)= x(i)-r(i)*y(i)*2^(-i);

x(i+1)=conv(n,m,x(i+1));

y(i+1)= y(i)+r(i)*x(i)*2^(-i);

y(i+1)=conv(n,m,y(i+1));

end

arcsinZ(n)= Q(20);

asin_ist = asin(Z);

pogr(n)=(asin_ist-arcsinZ(n))/asin_ist*100;

end

scf(2);

clf();

plot(pogr);

xgrid();

Запустив приведенную программу, мы получим график зависимости погрешности от числа итераций:

Рис.1.1 - График абсолютной погрешности для функции Θ = arcsin Z при изменяющемся числе итераций

По полученным графикам видно как ведёт себя погрёшность преобразования. При количестве итераций меньше 10 погрешность достигает 5%. По заданию требуется, чтобы погрешность составляла меньше 1%, это достигается при n = 13 и более.

Листинг программы для изменения разрядности данных:

clear

clc

//== function convert real to bin ====

function [x_bin] = conv(n,m,x)

//преобразование целой части

x_int = abs(int(x));

x_tmp=x_int;

for j=1:m

x_tmp = x_tmp/2

if (x_tmp-int(x_tmp))==0

arr_tmp(j)=0

else

arr_tmp(j)=1

x_tmp = int(x_tmp)

end

end

x_cel = 0;

for j=1:m

x_cel = x_cel+arr_tmp(j)*2^(j-1)

end

//преобразование дробной части

x_real = x- x_int;

for i=1:n,

x_real = x_real * 2;

if x_real<1

arr(i)=0;

else

arr(i)=1;

x_real=x_real-1;

end,

x_real1=1-int(x_real)

end

x_new=0;

for i=1:n

x_new=x_new+arr(i)*2^(-i)

end

x_bin=x_cel+x_new

endfunction

Рис.1.2 - График абсолютной погрешности для функции Θ = arch Z при изменении разрядности дробной части

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

Исследуем точность итерационных формул для функции arcth Z в математическом пакете SciLab. Ниже приведен код программы, которая вычисляет погрешность вычисления методом Волдера заданной функции при изменении числа итерации и разрядности дробной части.

Листинг программы:

clear

clc

//== function convert real to bin ====

function [x_bin] = conv(n,m,x)

//преобразование целой части

x_int = abs(int(x));

x_tmp=x_int;

for j=1:m

x_tmp = x_tmp/2

if (x_tmp-int(x_tmp))==0

arr_tmp(j)=0

else

arr_tmp(j)=1

x_tmp = int(x_tmp)

end

end

x_cel = 0;

for j=1:m

x_cel = x_cel+arr_tmp(j)*2^(j-1)

end

//преобразование дробной части

x_real = x- x_int;

for i=1:n,

x_real = x_real * 2;

if x_real<1

arr(i)=0;

else

arr(i)=1;

x_real=x_real-1;

end,

x_real1=1-int(x_real)

end

x_new=0;

for i=1:n

x_new=x_new+arr(i)*2^(-i)

end

x_bin=x_cel+x_new

endfunction

//========================================

function [arth_i]=arth(x)

arth_i = 1/2*log((1+x)/(1-x));

endfunction

//== function arcth ====

//function [arcthZ] = arcth(Z,N)

Q0 = 0;

x0 = 1;

Z=2.25;

y0 = Z;

N=40;

Q(1)=Q0+arth(2^(-1));

r(1)=sign(1-y0);

x(1)=x0-r(1)*y0*2^(-1);

y(1)=y0-r(1)*x0*2^(-1);

for n=1:N

for k=2:n

i=1+int((k-1)/2);

r(k)=sign(1-y(k-1));

ARTH =arth(2^(-i));

Q(k)= Q(k-1)+r(k)*ARTH;

x(k)= x(k-1)-r(k)*y(k-1)*2^(-i);

y(k)= y(k-1)-r(k)*x(k-1)*2^(-i);

end

arthZ(n)= Q(n)

y_ist = 1/2*log((1+Z)/(1-Z))

// z_i = (exp(y_ist)+exp(-y_ist))/2

pogr(n)=(y_ist-arthZ(n))/y_ist*100;

end

scf(1);

clf();

plot(pogr);

xgrid();

//endfunction

for n=1:20

m=3;

Q(1)=Q0+arth(2^(-1));

Q(1)=conv(n,m,Q(1));

r(1)=sign(Z-x0);

x(1)=x0+r(1)*y0*2^(-1);

x(1)=conv(n,m,x(1));

y(1)=y0+r(1)*x0*2^(-1);

y(1)=conv(n,m,y(1));

last=26;

for k=2:last

i=1+int((k-1)/2);

r(k)=sign(Z-x(k-1));

ARTH =arth(2^(-i));

ARTH=conv(n,m,ARTH);

Q(k)= Q(k-1)+r(k)*ARTH;

Q(k)=conv(n,m,Q(k));

x(k)= x(k-1)+r(k)*y(k-1)*2^(-i);

x(k)=conv(n,m,x(k));

y(k)= y(k-1)+r(k)*x(k-1)*2^(-i);

y(k)=conv(n,m,y(k));

end

archZ(n)= Q(last);

y_ist = log(Z+sqrt(Z^2-1));

pogr(n)=(y_ist-archZ(n))/y_ist*100;

end

scf(2);

clf();

plot(pogr);

xgrid();

Рис.1.3 - График абсолютной погрешности для функции arcthZ при изменяющемся числе итераций

Рис.1.4 - График абсолютной погрешности для функции arcthZ при изменении разрядности дробной части

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

2. РАЗРАБОТКА СТРУКТУРНОЙ СХЕМЫ УСТРОЙСТВА

Устройства подключается через разъём к Управляющей компьютерной системе(УКС), от которой оно будет получать управляющие сигналы, данные и которому оно будет в ответ выдавать результат вычисления.

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

Так сигналы от УКС будут поступать на устройство ввода-вывода информации (УВВ), которое может присутствовать только абстрактно в нашем устройстве.

Из устройства ввода вывода данные будут поступать в ОЗУ, а управляющие сигналы непосредственно в блок управления. Блок управления (УУ) должен синхронизировать и контролировать работу всего модуля в целом. При этом он должен вырабатывать сигналы чтения и записи из ОЗУ и ПЗУ, а также сигналы управления блоком вычислений (ОБ).

В ОЗУ хранятся входные величины, промежуточные данные и результат. В ПЗУ может храниться микропрограмма вычисления, а также таблицы значений констант таких как Arth(2-i), log(1+ri2-i) и 2-i, .

Это один из возможных вариантов структурной схемы. Ее можно реализовать на ПЛИС или на интегральных схемах средней степени интеграции. Реализации на ПЛИС более дорогая и трудоемкая в сравнении с другими способами. На интегральных микросхемах средней степени интеграции устройство получится более дорогое, так как требуется большое количество дополнительных микросхем, и будет обладать меньшим быстродействием, чем при реализации на микроконтроллере. Поэтому мы остановимся на реализации устройства на микроконтроллере

2.1 Обоснование достаточности аппаратных средств и программных ресурсов

Данное устройство будет реализовано на микроконтроллере AVR фирмы ATMEL , так как они наиболее распространённые и доступные по цене. Для реализации данного устройства достаточно использовать 8-ми разрядный микроконтроллер ATmega16, который по своим параметрам вполне удовлетворяет всем требованиям проекта и имеет запас программных и аппаратных средств для введения дополнительных функций и усовершенствования данного специализированного процессора.

AT mega16 обладает следующими характеристиками:

  • 8-разрядный высокопроизводительный AVR микроконтроллер с малым энергопотреблением

  • Прогрессивная RISC архитектура

1. 130 высокопроизводительных команд, большинство команд выполняется за один тактовый цикл,

2. 32 8-разрядных рабочих регистра общего назначения

Полностью статическая работа

3. Производительность приближается к 16 MIPS (при тактовой частоте 16 МГц)

4. Встроенный 2-цикловый перемножитель

  • Энергонезависимая память программ и данных

1. 16 Кбайт внутрисистемно программируемой Flash памяти (In-System Self-Programmable Flash) :

-обеспечивает 1000 циклов стирания/записи

- дополнительный сектор загрузочных кодов с независимыми битами блокировки

- Внутрисистемное программирование встроенной программой загрузки

- Обеспечен режим одновременного чтения/записи (Read-While-Write)

2. 512 байт EEPROM:

- Обеспечивает 100000 циклов стирания/записи

3. 1 Кбайт встроенной SRAM

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

  • Интерфейс JTAG (совместимый с IEEE 1149.1)

  • Программируемый последовательный USART

  • Последовательный интерфейс SPI (ведущий/ведомый)

  • Специальные микроконтроллерные функции

1.Сброс по подаче питания и программируемый детектор кратковременного снижения напряжения питания

2.Встроенный калиброванный RC-генератор

3. Внутренние и внешние источники прерываний

4. Шесть режимов пониженного потребления: Idle, Power-save, Power-down, Standby, Extended Standby и снижения шумов ADC

  • Выводы I/O и корпуса

32 программируемые линии ввода/вывода

40-выводной корпус PDIP и 44-выводной корпус TQFP

  • Рабочие напряжения 4,5 - 5,5 В

  • Рабочая частота 0 - 16 МГц

  • Корпус: DIP-40

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

2.2 Выбор и обоснования режимов работы узлов микроконтроллера

Для ввода и вывода данных будем использовать интерфейс SPI (Serial Peripheral Interface) - полнодуплексный скоростной синхронный трёхпроводной интерфейс. В используемом МК интерфейс SPI реализован на старших выводах порта В.

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

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Нашёл ошибку?
Или хочешь предложить что-то улучшить на этой странице? Напиши об этом и получи бонус!
Бонус рассчитывается индивидуально в каждом случае и может быть в виде баллов или бесплатной услуги от студизбы.
Предложить исправление
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5139
Авторов
на СтудИзбе
441
Средний доход
с одного платного файла
Обучение Подробнее