[an error occurred while processing this directive]
Способов навалом
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено AntZ 05 февраля 2004 г. 04:20
В ответ на: Цифровые сигнальные процессоры (DSP) и их применение отправлено Di 04 февраля 2004 г. 21:52

1) Считать честный синус для каждого сампла, например разложив функцию sin в какой-нибудь ряд, например Тейлора. Проблемы с несколько большим объемом вычислений.

2) Сделать осцилятор с обратной связью, обычно второго порядка.
Проблемы стабильности амплитуды, особенно на fixed-point изза всевозможных округлений.

3) Look-up table. Есть таблица из N, например 256, значений синуса. Практически любую частоту можно получить путем нехитрых вычислений. Наверное, это самый популярный способ.

Пример чатота 1000Hz на дискретизации 64000s/sec:

extern int SineTable256[];

int OutputBuffer[256];
unsigned int CurrentPhase=0; //0=0*pi, 32768=pi, 0=2*pi
unsigned int PhaseIncrement=1024 //int(1000*0x1000/64000)

for(Cnt=0; Cnt<256; ++Cnt)
{
OutputBuffer[Cnt]=SineTable256[CurrentPhase>>8];
CurrentPhase += PhaseIncrement; //modulo 65536 addition
}

Никаких попыток оптимизации не делалось

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru