Проектирование вычислителя y=tan(x)
Расчет специализированного вычислителя тригонометрических функций, основанное на разложении ряда Тейлора с использованием чисел Бернулли. Код программы вычисления на языке С++. Граф-схема алгоритма. Схематическое представление входов и выходов проекта.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 29.12.2012 |
Размер файла | 1,8 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ
ХАРЬКОВСКИЙ НАЦИОНАЛЬНЫЙ УНИВЕРСИТЕТ РАДИОЭЛЕКТРОНИКИ
Кафедра АПВТ
Пояснительная записка к курсовой работе
«Проектирование вычислителя y=tan(x)»
по курсу «Специализированные компьютерные системы»
Выполнил: ст. гр. КИ-07-8 Евтифеев А. Г.
Проверил: Обризан В. И
Харьков 2011
Оглавление
РЕФЕРАТ
ВВЕДЕНИЕ
1. Постановка задачи
1.1Обобщенная структура специализированного вычислителя
1.2 Численный метод
1.3Характеристика функции y=tan(x)
1.4 Специализированный вычислитель y=tan(x)
1.5 Описания языкаVHDL
1.6 Кристалл Xilinx Spartan
1.6.1 Характеристика платы Spartan-3E
2.Выбранный вариант технического решения
2.1 Техническое решение
2.2 C++ реализация
2.3 Граф-схема алгоритма
3. Граф-схема алгоритма для реализации программы на VHDL
4. Модель на языке VHDL
4.1 Временная диаграмма работы вычислителя
4.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.
Рис. 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) для всех х из области определения. Функция периодическая с наименьшим положительным периодом р, т.е. tan(x+р·k) = tan x, k ? Z для всех х из области определения. tan x = 0 при tan x > 0 для всех tan x < 0 для всех Функция возрастает на промежутках |
1.4 Специализированный вычислитель y=tan(x)
Вычисление специализированного вычислителя y=tan(x) основано на разложении ряда Тейлора с использованием чисел Бернулли. В данном алгоритме вычисления преимуществом является точность вычислений в заданном интервале значений.
Ряд Темйлора -- разложение функции в бесконечную сумму степенных функций.
Ряды Тейлора применяются при аппроксимации функции многочленами. В частности, линеаризация уравнений происходит путём разложения в ряд Тейлора и отсечения всех членов выше первого порядка. Ряд Тейлора для tg(x)ряд выглядит так:
Числа Бернулли находят по формуле:
, для всех |x| <, где B2n - четные Числа Бернулли
1.5 Описания языка VHDL
Язык VHDL (англ. VHSIC -- Very high speed integrated circuits) Hardware Description Language) [8] служит для описания модели цифрового устройства (прибора, системы) и был разработан в 1983 г. по заказу МО США для формального описания логических схем на всех этапах разработки электронных систем. Аббревиатура VHDL (Very High Speed Integrated Circuit Hardware Description Language) переводится как язык описания высокоскоростных интегрированных схем. Описание на языке VHDL определяет внешние связи устройства (“вид снаружи” или интерфейс) и один или несколько “видов изнутри”. Язык проектирования - VHDL является базовым языком при разработке аппаратуры современных вычислительных систем. Вид снаружи задает интерфейс устройства, набор сигналов, которыми устройство обменивается с внешним миром. Этот вид описывает абстрактное представление устройства “в целом” и обозначается английским термином entity, что в дословном переводе означает «сущность» и наиболее точно отражает смысл представления.
Вид изнутри определяет функциональные возможности устройства или его структуру. Внутреннее строение объекта определяет архитектура (architecturebody).
Рис.4.Цифровое устройство и его модель
Как и в языках программирования, язык VHDL имеет свои правила, в том числе правила описания имен переменных, объектов, типов данных и других параметров.
Правила языка VHDL регулируются международным стандартом IEEE Std 1076-2002 IEEE Standard VHDL Language Reference Manual. Ему соответствует отечественный стандарт ГОСТ Р 50754-95 Язык описания аппаратуры цифровых систем VНDL.
1.6 Кристалл Xilinx Spartan
Spartan - серия программируемых микросхем с встроенной RAM фирмы Xilinx. Она в себя включает несколько разновидностей:
Семейство Spartan
Семейство Spartan-XL
Семейство Spartan-II
Семейство Spartan-IIE
Семейство Spartan-3/3L
Spartan-3E
Сегодня использование FPGA для изготовления опытных образцов или мелкосерийной продукции ограничивает большая стоимость микросхем FPGA с встроенной ОЗУ по сравнению со стоимостью заказных микросхем. В начале 1998 года фирмой Xilinx выпуском новой серии микросхем FPGA - серии Spartan этот недостаток FPGA устранен [ ].
Стоимость кристаллов Spartan сравнима со стоимостью заказных кристаллов благодаря улучшениям в технологии, снижению потребляемой мощности, улучшениям в размещении проекта в кристалле. Серия Spartan может работать на системной частоте 80МГц и внутренней частоте более 150МГц. Архитектура серии Spartan основана на архитектуре серии XC4000 и включает аналогичные КЛБ (конфигурируемые логические блоки) и организацию соединений между ними., и [ ].
Также для снижения стоимости в архитектуру Spartan по сравнению с архитектурой XC4000 были убраны некоторые редко используемые свойства серии XC4000: поддержка асинхронного RAM, распределенные дешифраторы и возможность параллельной загрузки, а также были добавлены несколько встроенных цепей тестирования для упрощения проверки работы проекта и снижения стоимости внешнего тестового оборудования.
Малые размеры кристалла позволяют производить корпусирование в более дешевые и меньшего размера корпуса с числом контактов от 90 до 304.
Стоимость конечного продукта снижается наличием упрощенного САПРа, что позволяет снизить время проектирования и тестирования.
Похожую архитектуру с серией XC4000 имеют КЛБ в серии Spartan. Каждый КЛБ содержит 2 триггера с раздельными входами разрешения тактирования, логику быстрого переноса, 2 четырех ходовых генератора логических или булевых функций.
Для увеличения быстродействия и снижения шумов в сигнале, буферы в блоках ввода-вывода имеют программируемый контроль задержек на выходе. Входные регистры имеют нулевую задержку пропускания.
Серия Spartan имеет больше возможности работать на больших частотах и позволяет применять их для проектирования PCI и USB интерфейсов, DSP, RISC-микропроцессоров, микроконтроллеров и др. Блоки ввода-вывода полностью PCI - совместимы.
Проектирование серии Spartan осуществляется с помощью САПР Foundation Series и Alliance Series [ ].
1.6.1 Характеристика платы Spartan-3E
В данной курсовой работе используется стартовый набор на базе ПЛИС Spartan-3E (рис. 3).
Плата Spartan-3E предназначена в первую очередь для практического изучения методов проектирования цифровых устройств с аппаратной реализацией операций и разработки встраиваемых микропроцессорных систем на основе ПЛИС. Уникальные функциональные возможности, технические характеристики и конструктивное исполнение инструментального модуля, входящего в эту плату, позволяет не только выполнять отладку проектов, реализуемых на основе ПЛИС семейства Spartan-3E, но и использовать его в качестве промышленного серийного варианта разрабатываемого устройства. Рассматриваемый модуль можно рекомендовать в целом ряде случаев для аппаратной реализации проектируемой системы с целью выполнения жестких требований, предъявляемых ко времени ее разработки.
Архитектура платы Xilinx Spartan-3E позволяет использовать его для реализации автономных систем управления, различных вычислительных операций, сбора и обработки информации, цифровой обработки сигналов, встраиваемых цифровых устройств с различными компьютерными интерфейсами. Кроме того, данную плату можно рекомендовать для применения в учебных лабораториях вузов для изучения современных методов проектирования цифровых устройств, микропроцессорных систем с различной архитектурой, а также устройств цифровой обработки сигналов.
Основными элементами архитектуры модуля Xilinx Spartan-3E являются:
главная ПЛИС XC3S500Eсемейства Spartan-3Eв корпусеFG320, на основе которой реализуется проектируемая система;
программируемая в системе ППЗУ серии PlatformFlashXCF04S, предназначенное для хранения конфигурационных данных ПЛИС XC3S500E;
Рис. 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-3E
XC2C64A-5VQ44C CoolRunner-II
ППЗУ PlatformFlash XCF04S-VO20C
Синхронизация:
50МГц кварцевый генератор синхроимпульсов
Память на плате:
128 MbitParallelFlash
16 Mbit SPI Flash
64 MByte DDR SDRAM
Коннекторы, интерфейсы и периферия:
порт Ethernet 10/100 Phy
VGA видео выход DB15
JTAG USB-порт
два последовательных порта RS-232 на 9 контактов
PS/2
4х канальный ЦАП
2х канальный АЦП
двустрочный ЖК индикатор
тумблеры, кнопки, переключатели, светодиоды, дополнительные коннекторы
2. Выбранный вариант технического решения
2.1 Техническое решение
Вычисление y=tan(x)с помощью ряда Тейлора.
Вычисление y=tan(x) сводится к вычислению элементов ряда Тейлора и значение tan(x) вычисляется с большей точность при вычислении большего количества значений ряда Тейлора:
Первая итерация
Вторая итерация
;
Третья итерация
Четвертая итерация
Пятая итерация
Шестая итерация
Седьмая итерация
Восьмая итерация
Девятая итерация
Десятая итерация
Одиннадцатая итерация
Двенадцатая итерация
2.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 мы можем использовать математические библиотеки, что мы и делаем.
using namespace std;
Здесь мы подключаем пространство имен std, чтобы могли использовать стандартные функции ввода и вывода информации без постоянного обращения к пространству имен std.
const int N=13;
Здесь происходит объявление константы 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
};
Происходит объявление 12 элементов массива и с помощью комментариев были пронумерованы.
double teylor(double x)
{
double result=0.0;
double Tx=x, kvx=x*x;
for(int i=0;i<N;i++)
{
result+=znach[i] * Tx;
Tx*=kvx;
}
Объявлена функция teylor типа double, которая выполняет суммирования умножение в цикле for первых 12 значений в ряде Тейлора для определения значения тангенс.
return result;
Выполняется возвращение значений работы функции.
}
void main()
Происходит объявление главной функции main().
{
cout<<"Please input number in the range of (-pi/2.4 to pi/2.4) or of (-1.3 to 1.3):";
Происходит приглашение ввести число, тангенс которого необходимо найти
double x;
Объявления вещественного значения x.
cin>>x;
Происходит процесс запроса значения, тангенс которого необходимо найти.
cout.precision(20);
Требование выводить значение с точностью до 20 знаков после запятой.
cout<<"Tan("<<x<<")="<<tan(x)<<" My_function: "<<teylor(x)<<endl;
Процесс вывода значений
getch();
Выполнение паузы.
}
2.3 Граф-схема алгоритма
Для реализации программы используется граф-схема, приведённая на рис. 5. Граф-схема алгоритма размечена для автомата Мура, имеет три состояния: а0, а1, а2. Первое состояние а0 - это начало работы программы и проверка выполнения изначальных условий; а1 - это второе состояние программы, на котором проверяется условия; а2 - это третье состояние программы, на котором выполняется сложение 12 первых значений ряда Тейлора и умножение каждого значения на соответствующее значение x с заданной степенью и множителем до выполнения условия цикла и постоянно проверяется не выполнены ли все итерации.
Рис. 5 Граф-схема алгоритма реализации программы на языке С++
На данной граф-схеме показана последовательность проведения процедур и операций при реализации алгоритма вычисления функции . Основываясь на данной граф-схеме, можно также выделить этапы работы программы на языке VHDL, что и было сделано и эти этапы были отмечены
3. Граф-схема алгоритма для реализации программы на VHDL
Рис. 6 Граф переходов автомата Мура
На данном графе переходов видно, что в автомате присутствует
3 состояния работы автомата и цикл с условием i<N, где N --это количество итераций алгоритма. На всех стадиях проекта проверяется условие i<N, если оно не выполняется, то выполнение итерации заканчивается.
4. Модель на языке VHDL
4.1 Временная диаграмма работы вычислителя
На данной временной диаграмме (Рис.7) работы программы на VHDL можно увидеть в какой момент времени происходит выполнение и реализация элемента нашей платы, а также можно увидеть значения, которые он принимает и как эти значения могут изменятся в процессе работы устройства, влияя на работу других элементов устройства.
Рис.7 Waveform VHDL
4.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.
Spartan-3E FPGA Family: Complete Data Sheet.КОМПОНЕНТЫ И ТЕХНОЛОГИИ * № 10 '2006
ПРИЛОЖЕНИЕ
А. Программная реализация функции y=tan(x) на языке С++
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include "math.h"
using namespace std;
constint 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)
{
double result=0.0;
double Tx=x,kvx=x*x;
for(int i=0;i<N;i++)
{
result+=znach[i] * Tx;
Tx*=kvx;
}
return result;
}
void main()
{
cout<<"Please input number in the range of (-pi/2.4 to pi/2.4) or of (-1.3 to 1.3):";
double x;
cin>>x;
cout.precision(20);
cout<<"Tan("<<x<<")="<<tan(x)<<" My_function: "<<teylor(x)<<endl;
getch();
}
Б. Программная реализация функции y=tan(x) на языке VHDL
Library ieee;
Use ieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_signed.all;
entity tan is
port(
x : in STD_LOGIC_VECTOR(31 downto 0);
clock : in STD_LOGIC;
reset : in STD_LOGIC;
start: in STD_LOGIC;
y : out STD_LOGIC_VECTOR(31 downto 0);
done : out STD_LOGIC);
end;
architecture beh of tan is
constant N : positive := 12;
type state_type is (a_0, a_1, a_2);
signal state, next_state: state_type;
typemy_array isarray (0 to N-1) of STD_LOGIC_VECTOR (31 downto 0);
constantconstants : my_array :=
(
"00001000000000000000000000000000",
"00000010101010101010101010101010",
"00000001000100010001000100010001",
"00000000011011101000011011101000",
"00000000001011001100100111101001",
"00000000000100100010011011100011",
"00000000000001110101101101001111",
"00000000000000101111101101000110",
"00000000000000010011010101011000",
"00000000000000000111110101011111",
"00000000000000000011001011001111",
"00000000000000000001010010010111"
);
Signal result, kvx, tx : STD_LOGIC_VECTOR(31 downto 0);
signal i : natural;
begin
y <= result;
process(reset, clock)
begin
if reset = '1' then
state<= a_0;
else
if rising_edge(clock) then
state<= next_state;
end if;
end if;
end process;
process(state, start, i)
begin
case (state) is
when a_0 =>
if (start = '1') then
next_state<= a_1;
else
next_state<= a_0;
end if;
when a_1 =>
if i < N then
next_state<= a_2;
else
next_state<= a_0;
end if;
when a_2 =>
if i < N then
next_state<= a_2;
else
next_state<= a_0;
end if;
when others =>
next_state<= a_0;
end case;
end process;
done<= '1' whenstate = a_0 else '0';
process(clock, reset, state)
variable temp : STD_LOGIC_VECTOR(63 downto 0);
begin
if reset = '1' then
result<= (others=>'0');
kvx<= (others=>'0');
tx<= (others=>'0');
i <= 0;
else
if falling_edge(clock) then
case(state)is
when a_1 =>
result<= (others => '0');
temp := x * x;
kvx<= temp(58 downto 27);
tx<= x;
i <= 0;
when a_2 =>
temp := constants(i) * tx;
result<= result + temp(58 downto 27);
temp := tx * kvx;
tx<= temp(58 downto 27);
i <= i + 1;
when others =>
null;
end case;
end if;
end if;
end process;
end;
Размещено на www.allbest.
Подобные документы
Разработка функциональной схемы операционного автомата микросхемы специализированного процессора, выполняющего заданную арифметическую операцию. Закодированная граф-схема машинного алгоритма. Таблица входов мультиплексора выбора осведомительного сигнала.
курсовая работа [669,9 K], добавлен 25.07.2013Строение и принцип действия упрощенной модели автоматического вычислителя типа программируемого микрокалькулятора. Составление блок-схемы алгоритма вычисления. Синтез счетчика с параллельным переносов на основе JK-триггеров; схема запуска устройства.
курсовая работа [590,4 K], добавлен 04.08.2014Разработка MatLab-программы для анализа вычислительной и методической погрешностей целочисленного алгоритма. Теоретические основы таблично-алгоритмического метода. Проектирование подпрограммы вычисления элементарной функции на языке Ассемблер IBM PC.
курсовая работа [296,9 K], добавлен 13.03.2013Описание алгоритма создания программы для решения алгебраических или трансцендентных уравнений с помощью численного метода Бернулли. Нахождение значений корней алгебраического уравнения с заданными параметрами точности. Листинг программы на языке java.
контрольная работа [206,0 K], добавлен 19.06.2015Табличный метод вычисления контрольной суммы. Реализация на практике вычисления циклического контрольного кода параллельным и последовательным методами. Аппаратная реализация вычисления CRC в параллельном и последовательном коде, математическое описание.
курсовая работа [573,7 K], добавлен 09.08.2015Сущность компьютера как своеобразного вычислителя. Характеристика микропроцессора – главного элемента компьютера, его электронной схемы, выполняющей все вычисления и обработку информации. История компьютерной техники. Работа звуковой карты, клавиатуры.
контрольная работа [75,7 K], добавлен 01.03.2011Алгоритм умножения двоичных чисел. Выбор и описание структурной схемы операционного автомата. Реализация содержательной граф-схемы алгоритма. Построение отмеченной граф-схемы и структурной таблицы переходов и выходов. Правила кодирования на D-триггерах.
курсовая работа [273,2 K], добавлен 01.04.2013Исходный текст программы и ее экранная форма. Программа вычисления и выдачи на печать суммы/произведения элементов бесконечного числового ряда, вычисления числового ряда для известного числа членов ряда. Значение максимального элемента в матрице.
контрольная работа [29,0 K], добавлен 07.12.2010Принципы разработки математических моделей, алгоритмов и программ. Составление программы вычисления функции с использованием нестандартных функций. Нахождение значения корней нелинейного уравнения по методу касательных. Программа для вычисления интеграла.
курсовая работа [568,3 K], добавлен 07.03.2015Составление программы вычисления матрицы и программы вычисления интеграла с погрешностью, не превышающей заданную величину. Схема алгоритма и её описание. Инструкция по использованию разработанной программы и проверка правильности е функционирования.
курсовая работа [54,8 K], добавлен 27.10.2010