Jump to content

    

Verilog Sin

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

 

Солидно.

 

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

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

Share this post


Link to post
Share on other sites

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

 

1) Таблица

2) Таблица

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

Edited by Barktail

Share this post


Link to post
Share on other sites

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

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

Share this post


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

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


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

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

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

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

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

sin_cos.zip

Share this post


Link to post
Share on other sites

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

 

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this