Проектирование вычислителя y=tan(x)

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    1,05 Мб
  • Опубликовано:
    2012-11-13
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Проектирование вычислителя y=tan(x)

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ

ХАРЬКОВСКИЙ НАЦИОНАЛЬНЫЙ УНИВЕРСИТЕТ РАДИОЭЛЕКТРОНИКИ

Кафедра АПВТ







Пояснительная записка к курсовой работе

«Проектирование вычислителя y=tan(x)»

по курсу «Специализированные компьютерные системы»


Выполнил: ст. гр. КИ-07-8 Евтифеев А. Г.

Проверил: Обризан В. И







Харьков 2011

Оглавление

РЕФЕРАТ

ВВЕДЕНИЕ

. Постановка задачи

.1Обобщенная структура специализированного вычислителя

.2 Численный метод

.3Характеристика функции y=tan(x)

.4 Специализированный вычислитель y=tan(x)

.5 Описания языкаVHDL

.6 Кристалл Xilinx Spartan

.6.1 Характеристика платы Spartan-3E

.Выбранный вариант технического решения

.1 Техническое решение

.2 C++ реализация

.3 Граф-схема алгоритма

. Граф-схема алгоритма для реализации программы на VHDL

. Модель на языке VHDL

.1 Временная диаграмма работы вычислителя

.2 RTL-схема проекта

Выводы

Список литературы

ПРИЛОЖЕНИЕ

А. Программная реализация функции y=tan(x) на языке С++

Б. Программная реализация функции y=tan(x) на языке VHDL

РЕФЕРАТ

Цель работы - проектирование вычислителя y=tan(x), а также освоение методов автоматизированного проектирования и совершенствование навыков программирования на языке VHDL.

В работе использовалась отладочная плата серии Spartan-3E Starter Kit имеющей возможности цифровой обработки сигналов. ЦАП не входит в состав ПЛИС и вынесен отдельно, его входы подключены к порту B.

В ходе проектирования были использованы не все ресурсы ПЛИС, поэтому имеется возможность совершенствования устройства. К примеру, можно построить алгоритм цифровой обработки нескольких вычислителей, используя для каждого сигнала свой канал “блок” и программу вычислений.

Программа, написанная на языке VHDL, является универсальной для всех ПЛИС фирмы Xilinx. Необходимо лишь сконфигурировать порты и учесть спецификацию специальных регистров в соответствии с документацией на требуемую модель.

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

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

ВВЕДЕНИЕ

Специализированные вычислительные устройства решают различные математические операции с последующей цифровой обработкой значений.

Реализация вычислителя на ПЛИС - это арифметическая реализация математической задачи на плате в реальном масштабе времени.

В случае цифровой обработки различные алгоритмы вычислений могут реализовываться аппаратно, программно и программно-аппаратно.

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

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

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

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

В данном курсовом проекте вычислитель y=tan(x) реализован программно на языке Си++ и аппаратно с помощью языка описания аппаратуры VHDL на плате XilinxSpartan3E.

1. Постановка задачи

.1 Обобщенная структура специализированного вычислителя

В состав специализированного вычислителя входят управляющий автомат(УА) и операционный автомат(ОА). Данная структурная схема показана на рис. 1.



Рис. 1 Структурная схема вычислителя

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

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

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

.2 Численный метод

Среди этапов вычислительного эксперимента выделяют этап решения математической задачи с помощью численного метода. Под численным методом понимается такая интерпретация математической модели (дискретная модель), которая доступна для реализации на ЭВМ и сводится к выполнению конечного числа арифметических действий над числами. Этапы численного метода представлены на рис. 2[123]

Рис.2 Этапы вычислительного эксперимента

Общим для всех численных методов является:

сведение математической задачи к конечномерной (чаще всего путем дискретизации исходной математической модели);

Результатом реализации численного метода является число или таблица чисел;

Реализуемость численного метода, т.е. построение вычислительного алгоритма как последовательности конечного числа операций для получения результата и ориентация этого алгоритма на возможности ЭВМ;

Множественность, т.е. возможность решения одной и той же задачи различными методами;

Непрерывное развитие и совершенствование численных методов;

При использовании численного метода для решения поставленной задачи необходимо различать свойства самой задачи и свойства вычислительного алгоритма, предназначенного для ее решения. Как правило, для каждой математической задачи, прежде всего, принято рассматривать вопрос о ее корректности. Чтобы численно решить задачу y=tan(x), надо быть уверенным, что искомое решение существует. Решение зависит от входных данных, потому рассмотрим характеристики функции y=tan(x)

1.3 Характеристика функции y=tan(x)

 Рис. 3 График функции y=tan(x)  Область определения функции - множество всех действительных чисел, кроме    Множество значений функции - вся числовая прямая, т.е. тангенс - функция неограниченная. Функция нечетная: tan(−x)=−tan(x) для всех х из области определения.  График функции симметричен относительно оси OY.

Функция периодическая с наименьшим положительным периодом π, т.е. tan(x+π·k) = tan x, k ∈ Z для всех х из области определения.


.4 Специализированный вычислитель y=tan(x)

Вычисление специализированного вычислителя y=tan(x) основано на разложении ряда Тейлора с использованием чисел Бернулли. В данном алгоритме вычисления преимуществом является точность вычислений в заданном интервале значений.

Ряд Те́йлора - разложение функции <#"576912.files/image009.gif">

Числа Бернулли находят по формуле:


, для всех |x| <, где B2n - четные Числа Бернулли

.5 Описания языка VHDL

Язык VHDL (англ. <#"576912.files/image013.gif">Рис.4.Цифровое устройство и его модель

Как и в языках программирования, язык VHDL имеет свои правила, в том числе правила описания имен переменных, объектов, типов данных и других параметров.

Правила языка VHDL регулируются международным стандартом IEEE Std 1076-2002 IEEE Standard VHDL Language Reference Manual. Ему соответствует отечественный стандарт ГОСТ Р 50754-95 Язык описания аппаратуры цифровых систем VНDL.

1.6 Кристалл Xilinx Spartan

- серия программируемых микросхем с встроенной RAM фирмы Xilinx. Она в себя включает несколько разновидностей:

Семейство Spartan <#"576912.files/image014.gif">

Рис. 3 - Внешний вид платы XilinxSpartan-3E [ ]

блок загрузки конфигурационных данных;

схема управления конфигурированием ПЛИС;

вспомогательная ПЛИС CPLDXC2C64A семейства CoolRunner-2;

последовательное ППЗУ EEPRPOM, поддерживающее криптографический алгоритм SHA-1;

блок синхронизации, предназначенный для формирования внешних (по отношению к ПЛИС) тактовых сигналов;

внешнее высокоскоростное ОЗУ;

узел двухканального аналого-цифрового преобразователя (АЦП);

узел четырехканального цифро-аналогового преобразователя (ЦАП);

модуль параллельной NORFlash-памяти емкостью 16Мбайт (128 Мбит)


Рис.4 Структурное представление архитектурного модуля XilinxSpartan-3E

модуль последовательной Flash-памяти объемом 16 Мбит с интерфейсом SPI;

схем формирования и контроля питающих напряжений;

блок светодиодных индикаторов;

двухстрочный шестнадцатизначный жидкокристаллический дисплей;

блок ползунковых переключателей;

блок кнопочных переключателей, с совмещенным поворотным переключателем;

схема преобразования уровней сигналов интерфейса RS-232;

модуль физического уровня интерфейса10/100 Ethernet PHY;

стандартные разъемы интерфейсов RS-232,PS/2, VGA и Ethernet;

четыре разъема расширения.

Тип кристалла семейства Spartan-3E, используемого в качестве основной ПЛИС рассматриваемого инструментального модуля, в значительной степени определяет функциональные возможности последнего.

Стартовый набор на базе ПЛИС Spartan-3E представляет собой полнофункциональное решение, с помощью которого разработчики получают доступ ко всем возможностям семейства Spartan-3E. Набор включает в себя плату, источник питания, программное обеспечение и USB-кабель.

Основные характеристики Spartan-3E.

Используемые микросхемы Xilinx:

XC3S500E-4FG320C Spartan-3EC64A-5VQ44C CoolRunner-II

ППЗУ PlatformFlash XCF04S-VO20C

Синхронизация:

50МГц кварцевый генератор синхроимпульсов

Память на плате:

128 MbitParallelFlash

Mbit SPI Flash

MByte DDR SDRAM

Коннекторы, интерфейсы и периферия:

порт Ethernet 10/100 Phyвидео выход DB15USB-порт

два последовательных порта RS-232 на 9 контактов/2

х канальный ЦАП

х канальный АЦП

двустрочный ЖК индикатор

тумблеры, кнопки, переключатели, светодиоды, дополнительные коннекторы

. Выбранный вариант технического решения

.1 Техническое решение

Вычисление y=tan(x)с помощью ряда Тейлора.



Вычисление y=tan(x) сводится к вычислению элементов ряда Тейлора и значение tan(x) вычисляется с большей точность при вычислении большего количества значений ряда Тейлора:

Первая итерация


Вторая итерация

;

Третья итерация

Четвертая итерация



Шестая итерация


Седьмая итерация


Восьмая итерация


Девятая итерация


Десятая итерация


Одиннадцатая итерация


Двенадцатая итерация


.2 C++ реализация

С++ реализация вычисления y=tan(x) основана на функции void main() и функции double tailor, а также на посчитанных значениях элементов ряда Тейлора, где значения подсчитаны первые 12 значений с точностью 13 знаков после запятой. В функции void main() программа выводит приглашение ввести значение x в интервале от -1.3 до 1.3. Точность значений зависит от самой функции tan(x), в которой значения близкие к -1.3 или к 1.3 на графике начинают уходить в вверх или вниз, практически приближаясь к асимптоте. Потом программа на основе полученного значенияx, вносит его в функцию double tailor(x), где подставляет значение x в ряд Тейлора, которое вычисляется в цикле, в котором, при каждой итерации складываются вычисленные значения ряда Тейлора и умножаются на соответствующее заданное пользователем значение x в степени, которая в 2 раза больше порядкового номера x в ряде Тейлора и от этого значения отнимаем 1.

Код программы вычисления tan(x) на языке С++

Подключение библиотек:

#include <iostream>

С помощью директивы препроцессора #include мы можем подключить библиотеку, что нам и необходимо. В данной программе нам потребуется выводить данные и вводить данные, для этого мы будем использовать библиотеку “iostream”, которая является двунаправленной библиотекой ввода/вывода и с помощью оператора “cin>>” - мы вводим данные в программу, а с помощью оператора “cout<<” - выводим данные.

#include <conio.h>

С помощью библиотеки conio.h мы можем использовать функцию getch(), которая выполняет функцию паузы после выполнения программы.

#include “math.h”

С помощью библиотеки math.h мы можем использовать математические библиотеки, что мы и делаем. namespace std;

Здесь мы подключаем пространство имен std, чтобы могли использовать стандартные функции ввода и вывода информации без постоянного обращения к пространству имен std.

int N=13;

Здесь происходит объявление константы N равной 13.znach[N]={

/*1*/1.0000000000000,

/*2*/0.3333333333333,

/*3*/0.1333333333333,

/*4*/0.0539682539682,

/*5*/0.0218694885361,

/*6*/0.0088632355299,

/*7*/0.0035921280365,

/*8*/0.0014558343837,

/*9*/0.0005900274409,

/*10*/0.0002391291142,

/*11*/0.0000969153795,

/*12*/0.0000392783238

};

Происходит объявление 12 элементов массива и с помощью комментариев были пронумерованы.

double teylor(double x)

{result=0.0;Tx=x, kvx=x*x;(int i=0;i<N;i++)

{+=znach[i] * Tx;*=kvx;

}

Объявлена функция teylor типа double, которая выполняет суммирования умножение в цикле for первых 12 значений в ряде Тейлора для определения значения тангенс. result;

Выполняется возвращение значений работы функции.

}

main()

Происходит объявление главной функции main().

{<<"Please input number in the range of (-pi/2.4 to pi/2.4) or of (-1.3 to 1.3):";

Происходит приглашение ввести число, тангенс которого необходимо найтиx;

Объявления вещественного значения x.>>x;

Происходит процесс запроса значения, тангенс которого необходимо найти..precision(20);

Требование выводить значение с точностью до 20 знаков после запятой.

cout<<"Tan("<<x<<")="<<tan(x)<<" My_function: "<<teylor(x)<<endl;

Процесс вывода значений();

Выполнение паузы.

}

.3 Граф-схема алгоритма

Для реализации программы используется граф-схема, приведённая на рис. 5. Граф-схема алгоритма размечена для автомата Мура, имеет три состояния: а0, а1, а2. Первое состояние а0 - это начало работы программы и проверка выполнения изначальных условий; а1 - это второе состояние программы, на котором проверяется условия; а2 - это третье состояние программы, на котором выполняется сложение 12 первых значений ряда Тейлора и умножение каждого значения на соответствующее значение x с заданной степенью и множителем до выполнения условия цикла и постоянно проверяется не выполнены ли все итерации.

Рис. 5 Граф-схема алгоритма реализации программы на языке С++

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


3. Граф-схема алгоритма для реализации программы на VHDL

Рис. 6 Граф переходов автомата Мура

На данном графе переходов видно, что в автомате присутствует

состояния работы автомата и цикл с условием i<N, где N -это количество итераций алгоритма. На всех стадиях проекта проверяется условие i<N, если оно не выполняется, то выполнение итерации заканчивается.


.1 Временная диаграмма работы вычислителя

На данной временной диаграмме (Рис.7) работы программы на VHDL можно увидеть в какой момент времени происходит выполнение и реализация элемента нашей платы, а также можно увидеть значения, которые он принимает и как эти значения могут изменятся в процессе работы устройства, влияя на работу других элементов устройства.

Рис.7 Waveform VHDL

.2 RTL-схема проекта

вычислитель функция программа

Схематическое представление входов и выходов проекта представлено на Рис. 8

Рис. 8 RTL-схема проекта

Выводы

Для проектирования устройства вычислителя тригонометрических функций, как правило, применяют численные методы.

Вычисление специализированного вычислителя y=tan(x) основано на разложении ряда Тейлора с использованием чисел Бернулли.

Описания модели цифрового устройства вычислителя проводят с помощью языка описания аппаратуры VHDL.

Реализацию проекта проводили на Spartan 3Е, которая относится к серии программируемых микросхем с встроенной RAM фирмы Xilinx.

Для реализации программы на языке С++ мы использовали разработанную граф-схему алгоритма С++.

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

Для реализации проекта разработана граф-схема алгоритма программы на VHDL.

Правильность работы программы была проверена на Waveform в VHDL, RTL-схеме и подтверждена.

Список литературы

Кузелин М.О., Кнышев Д.А., Зотов В.Ю. Современные семейства ПЛИС фирмы Xilinx: Справочное пособие. М.: Горячая линия - Телеком. 2004.

Зотов В. Разработка встраиваемых микропроцессорных систем на основе ядра Spartan, реализуемых в ПЛИС семейств FPGA фирмы Xilinx, с помощью «мастера» Base System Builder Wizard //Компоненты и технологии. 2005 №3,4

Зотов В. Проектирование цифровых устройств на основе ПЛИС фирмы Xilinx в САПР WebPackISEМ.: Горячая линия - Телеком. 2003.

Зотов В. Новый инструментальный комплект Spartan-3E Starter Kit для практического освоения методов проектирования встраиваемых микропроцессорных систем на основе ПЛИС семейства FPGA фирмы Xilinx

Зотов В. Инструментальный комплект Spartan-3 StarterKit для практического освоения методов проектирования встраиваемых микропроцессорных систем на основе ПЛИС семейств FPGA фирмы Xilinx // Компоненты и технологии. 2005. № 7.

Кузелин М. О., Кнышев Д. А., Зотов В. Ю. Современные семейства ПЛИС фирмы Xilinx. Справочное пособие. М.: Горячая линия-Телеком. 2004.

Зотов В. Проектирование цифровых устройств на основе ПЛИС фирмы Xilinx в САПР WebPack ISE. М.: Горячая линия-Телеком. 2003

Зотов В. EmbeddedDevelopmentKit - система проектирования встраиваемых микропроцессорных систем на основе ПЛИС серий FPGA фирмы Xilinx // Компоненты и технологии. 2004. № 4.E FPGA Family: Complete Data Sheet.КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 10 '2006

ПРИЛОЖЕНИЕ

А. Программная реализация функции y=tan(x) на языке С++

#include <iostream>

#include <conio.h>

#include <stdlib.h>

#include "math.h"namespace std;N=13;

double znach[N]={

/*1*/1.0000000000000,

/*2*/0.3333333333333,

/*3*/0.1333333333333,

/*4*/0.0539682539682,

/*5*/0.0218694885361,

/*6*/0.0088632355299,

/*7*/0.0035921280365,

/*8*/0.0014558343837,

/*9*/0.0005900274409,

/*10*/0.0002391291142,

/*11*/0.0000969153795,

/*12*/0.0000392783238

};

double teylor(double x)

{result=0.0;Tx=x,kvx=x*x;(int i=0;i<N;i++)

{+=znach[i] * Tx;*=kvx;

}result;

}

void main()

{<<"Please input number in the range of (-pi/2.4 to pi/2.4) or of (-1.3 to 1.3):";x;>>x;.precision(20);<<"Tan("<<x<<")="<<tan(x)<<" My_function: "<<teylor(x)<<endl;

getch();

}

Б. Программная реализация функции y=tan(x) на языке VHDL

Library ieee;ieee.std_logic_1164.all;.std_logic_arith.all;.std_logic_signed.all;

tan is(: in STD_LOGIC_VECTOR(31 downto 0);: in STD_LOGIC;: in STD_LOGIC;: in STD_LOGIC;: out STD_LOGIC_VECTOR(31 downto 0);: out STD_LOGIC);;

beh of tan is

N : positive := 12;

state_type is (a_0, a_1, a_2);

state, next_state: state_type;

_array isarray (0 to N-1) of STD_LOGIC_VECTOR (31 downto 0);

: my_array :=

(

"00001000000000000000000000000000",

"00000010101010101010101010101010",

"00000001000100010001000100010001",

"00000000011011101000011011101000",

"00000000000100100010011011100011",

"00000000000001110101101101001111",

"00000000000000101111101101000110",

"00000000000000010011010101011000",

"00000000000000000111110101011111",

"00000000000000000011001011001111",

"00000000000000000001010010010111"

);result, kvx, tx : STD_LOGIC_VECTOR(31 downto 0);i : natural;

<= result;

(reset, clock)reset = '1' then<= a_0;rising_edge(clock) then<= next_state;if;if;process;

(state, start, i)(state) isa_0 =>(start = '1') then_state<= a_1;_state<= a_0;if;a_1 =>i < N then_state<= a_2;_state<= a_0;if;a_2 =>i < N then_state<= a_2;_state<= a_0; if;others =>_state<= a_0;case;process;

<= '1' whenstate = a_0 else '0';

(clock, reset, state)temp : STD_LOGIC_VECTOR(63 downto 0);reset = '1' then<= (others=>'0');<= (others=>'0');<= (others=>'0');<= 0;falling_edge(clock) then(state)isa_1 =><= (others => '0');

temp := x * x;<= temp(58 downto 27);<= x;<= 0;a_2 =>:= constants(i) * tx;<= result + temp(58 downto 27);:= tx * kvx;<= temp(58 downto 27);<= i + 1;others =>;case;if;if;

end process;

end;

Похожие работы на - Проектирование вычислителя y=tan(x)

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!