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

Цифровой генератор синусоиды

Я вообще не врубаюсь. Кто-нибудь, ткните меня носом, где я ошибся.

_____________

 

Да. Поспешил, людей...

Там в проге в конце надо было поставить

WriteLn(er).

 

Теперь правильный результат:

для 256*16 бит ошибка составит 8.2e-5

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

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


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

Вот прога на паскале. Если кто хочет меня проверить.

 

При отклонении от "идеального" синуса на 3.1e-6, SFDR даже в самом поганом случае (вся "энергия" отклонения "ушла" в один спур), думаю, будет ниже -110dBc.

Правда? А для 0.9e-6 сколько децибелл будет?

 

Если я правильно понял, то ты смотришь отклонение от "идеального" синуса толко по середине между табличными значениями и тебе просто "повезло" (что само по себе забавно). Попробуй вычислить отклонение для, скажем, 8 точек на шаг таблицы (всего 1К точек), включая значения в "узлах" таблицы.

 

Для 0.9e-6, думаю, SFDR будет ниже -120. Для оценки: SFDR <= 20*lg(d/A), где A - амплитуда тона,

а d - максимальное отклонение от "идеального" синуса.

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


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

Еще можно sin cos от фазового аккумулятора CORDICом посчитать, если тактовая позволяет то вообще последовательным, на FPGA вс ё это очень хорошо ложится.

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


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

Уважаемые коллеги! Для сведения. В статье Никулин Э. С., Пахоменков Ю.М. Метод построения низкочастотных генераторов сигналов сложной формы // Судостроительная промышленность. Автоматика и телемеханика. – 1992. – Вып. 14. – С. 37-48 описан метод воспроизведения временных зависимостей, путём решения автономного дифференциального уравнения, которое, в частности, для функции x(t)=Asin(wt) на четверти периода имеет вид dx/dt=w [A·(1-x^2)^0.5]. В этом уравнении множитель в скобках [] соответствует функции y(t)=Acos(wt). Метод неплохо работает для низкочастотных сигналов и удобен там, где для других задач, например для вычисления расхода рабочей среды, уже имеются средства извлечения корня.

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


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

dx/dt=w [A·(1-x^2)^0.5]. В этом уравнении множитель в скобках [] соответствует функции y(t)=Acos(wt).

К сожалению до первоисточника не добрался. Попробовал в лоб посчитать в MatLab. Получил комплексные числа. Потом подумал... :) Четверть периода - это pi/2? т.е. ~1.57 радиан. Таким образом, под корнем имеем отрицательные числа. Да и сигнал на синус не похож абсолютно, втыкается под прямым углом в ось абсцисс, по науке д.б. 45 градусов.

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


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

Есть такая штука как резонантный фильтр, подробности по ссылке

http://www.research.scea.com/research/pdfs...rmath_GDC02.pdf

 

KPAH

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

0FF/2 А есть ли ещё что-нибудь в этом же духе, т.е. в виде справочника по разным методам, алгоритмам и прочее?

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


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

post-19147-1157740052_thumb.jpgПояснение

В автономном уравнении dx/dt=w [A·(1-x^2)^0.5]. Четверть периода - это abs(wt)< pi/2?.

Для большей наглядности прикрепляю рисунок

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


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

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

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

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

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

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

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

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

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

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