Перейти к содержанию
    

т.е. для случая x=pi/2-delta и аргументом в 16 разрядов результат sin(x) будет сформирован через 16383 такта. или через 8191 с учетом формул приведения?

 

Солидно.

 

думаю пункт 2 будет:

- в always делаем компаратор с заданным числом, то через N тактов получите результат (возможно очень приблизительный)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А чем ТС не устраивает предложенный в первом посте табличный/четырехтабличный метод?

 

1) Таблица

2) Таблица

3) 4 таблицы (sin( a+b )=sin( a )*cos( b )+cos( a )*sin( b ))

Изменено пользователем Barktail

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тогда уж, с учетом, что для малых b: (b -> 0) => cos( b ) -> 1, а sin( b ) -> b, и имеем sin( a+b )=sin( a ) + b * cos( a )

И требуются только таблицы "грубого" синуса и косинуса

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тогда уж, с учетом, что для малых b: (b -> 0) => cos( b ) -> 1, а sin( b ) -> b, и имеем sin( a+b )=sin( a ) + b * cos( a )

И требуются только таблицы "грубого" синуса и косинуса

Разумеется, хотя это вопрос требуемой точности. :laughing:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 3м случае достаточно операции приведения аргумента к первому квадранту, 4х операций сравнения приведенного аргумента с константами и простого шифратора.

Никаких 4-х таблиц, кордиков, рекуррентных генераторов и прочего безумия не нужно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, я читал эту математику. Потом в нете наткнулся на приведенный мной пример. Я его разбирал, менял частоту и прочее (опять же подглядывая в ссылку на математику). Занимательно все это. )))

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

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

Также и на С/С++ работает. Для последнего написал программку, что в приложении.

Но еще хотел бы исследовать более детально по точности и стабильности генерации.

sin_cos.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В задаче очень важный параметр отсутствует - время. Если синус нужен произвольный, да ещё и за 1 такт, то решение одно - таблица. Опять таки, многое зависит от применяемой плис и количества ресурсов, которыми можно располагать для реализации такого блока. Синус этот для чего использоваться будет? Или это просто задачка для симулятора?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...