Расчет косинуса

[ Версия для печати ]
Добавить в Telegram Добавить в Twitter Добавить в Вконтакте Добавить в Одноклассники
  [ ОТВЕТИТЬ ] [ НОВАЯ ТЕМА ]
Nihoden
14.05.2013 - 00:49
Статус: Offline


Юморист

Регистрация: 2.11.11
Сообщений: 438
6
Ребят, нужна помощь с курсовой работой по схемотехнике. Сам в ступоре, уже давно, не знаю как реализовать даже, сам путь вроде как проглядывается, но не понимаю, как сделать.

Задание вот такое:
Разработать схему вычисления функции косинуса. Операндом является угол выраженный в градусах в формате плавающей точке. Максимальная потребляемая мощность всего изделия 20 Вт. Максимальная потребляемая мощность разработанной части 2 Вт. Максимальное время выполнения 1 мс.
Диапазон представления чисел:
с плавающей точкой – со знаком, нормализованный, точность мантиссы - 4 десятичных знака, порядок -8..+8.
Все модули должны поддерживать следующий протокол взаимодействия:
• Все операнды записываются во внутренние регистры схемы по соответствующему стробу
• Выполнение операции начинается по сигналу «start»
• Завершение операции сигнализируется сигналом «ready». После этого сигнала значения на выходе удерживаются до прихода любого входного управляющего сигнала
• При возникновении ошибки активируется сигнал «error»
• Для выполнения любой повторной операции необходимо выполнить сброс схемы сигналом «reset»

Разработать нужно только вычислитель.

Сам сделал следующее, представлено дальше:

Это сообщение отредактировал Nihoden - 14.05.2013 - 00:55

Расчет косинуса
 
[^]
Yap
[x]



Продам слона

Регистрация: 10.12.04
Сообщений: 1488
 
[^]
Nihoden
14.05.2013 - 00:50
Статус: Offline


Юморист

Регистрация: 2.11.11
Сообщений: 438
Схема вычислителя:
Организовал его следующим образом:
Есть разложение в ряд Тейлора (Маклорена) по следующей схеме:
cos(x) = 1-x^2/2!+x^4/4!-... -> по совету вычисляю заранее коэффициенты (1/1!, 1/2!, 1/4!, ...), получаю cos(x) = a0+a1x^2+ax^4+...

Далее действую по схеме Горнера и представляю своё разложение:
cos(x) = a0+x^2(a1+x^2(a2+x^2(a3+x^2(a4+x^2(a5+0)))))

Перевод из градусов в радианы осуществляю непосредствено в вычислителе, при первом прогоне вычисляю x^2. То есть a_1 = 0.

Добавлено в 00:51
Если есть желающие помощь, буду признательной благодарен, в том числе и материально.

Сам давно уже делаю КП, но так толком и не продвинулся.

Расчет косинуса
 
[^]
Nihoden
14.05.2013 - 00:52
Статус: Offline


Юморист

Регистрация: 2.11.11
Сообщений: 438
Спроектирован блок уножения: выполнен следующем образом:
doc

Добавлено в 00:53
Цитата (sergeantGY @ 14.05.2013 - 01:51)
иди спать барин disgust.gif  Тут таких умных нет...  deg.gif

Даже грустно как то:(

Это сообщение отредактировал Nihoden - 14.05.2013 - 00:54

Расчет косинуса
 
[^]
Пивопуз
14.05.2013 - 00:59
0
Статус: Offline


Регистрация: 14.04.13
Сообщений: -3
Ну на LEDовский зеленый монитор, проженный посередине, справа подается только RG, а B(lur) слева идет c пессимистически заранее обреченными командами. Вот здесь может лажанул, в самом начале, а потом понеслось - так всегда и бывает.
 
[^]
дебиловистребитель
14.05.2013 - 01:00
0
Статус: Offline


Блять, ща я пайду за вадой

Регистрация: 26.11.10
Сообщений: 0
Nihoden
pic16 поставь вот и вся схема gigi.gif

ну ты время выбрал конечно
я вот спать собрался, а теперь сижу и думаю непонятно о чем
 
[^]
shire8bit
14.05.2013 - 01:33
0
Статус: Offline


Шутник

Регистрация: 19.09.09
Сообщений: 16
исходя из разложения, выходит что необходимо использовать как минимум 3 регистра, хранящих: x^2 (многократно используется в схеме разложения), константу для операции (думаю можно завязать на простую логическую схему и добавить счетчик привязанный к частоте прохода цикла из 2 операций * и +, или готовности результата) и результат.

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

задачка, конечно, интересная, только вот не практичная абсолютно.
думаю простенький микроконтроллер, подошел бы по тз. дешево и сердито.
а это что-то совком попахивает
 
[^]
amdx
14.05.2013 - 05:32
1
Статус: Offline


Программер

Регистрация: 20.05.11
Сообщений: 2692
Из всего моего опыта общения с FPU Intel скажу сразу, что гораздо быстрее (в 160 раз) посчитать косинус - заранее составив таблицу соответствий из 8192 элементов по 8 байт. Разницу операндов и значение косинуса между дискретными показателями - линейно интерполировать. При этом значение погрешности останется на уровне 10-го знака и скорость вычислений возрастет в 80-160 раз.

Это сообщение отредактировал amdx - 14.05.2013 - 05:33
 
[^]
shire8bit
14.05.2013 - 10:17
0
Статус: Offline


Шутник

Регистрация: 19.09.09
Сообщений: 16
Цитата (amdx @ 14.05.2013 - 05:32)
Из всего моего опыта общения с FPU Intel скажу сразу, что гораздо быстрее (в 160 раз) посчитать косинус - заранее составив таблицу соответствий из 8192 элементов по 8 байт. Разницу операндов и значение косинуса между дискретными показателями - линейно интерполировать. При этом значение погрешности останется на уровне 10-го знака и скорость вычислений возрастет в 80-160 раз.

будет потреблять больше 2 Вт
 
[^]
valyok
16.05.2013 - 21:46 [ показать ]
-10
Понравился пост? Еще больше интересного в Телеграм-канале ЯПлакалъ!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии. Авторизуйтесь, пожалуйста, или зарегистрируйтесь, если не зарегистрированы.
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) Просмотры темы: 2495
0 Пользователей:
[ ОТВЕТИТЬ ] [ НОВАЯ ТЕМА ]


 
 



Активные темы






Наверх