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

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

Отправлено ВН 26 февраля 2003 г. 18:03
В ответ на: Читаю, читаю... блиннн. Или я уже совсем из ума выжил, или они специально... (+) отправлено Alexey_N 26 февраля 2003 г. 17:08

Да просто же все.
Попробую на пальцах.
SIN, или там COS, периодичны с периодом 2*pi, как известно. Причем закон изменения фазы, учитывая периодичность sin,cos, пилообразный и периодический.
В то же время код с выхода счетчика в N разрядов тоже пилообразен и периодичен. В этом основная идея.
Выход счетчика по сути дела фаза. Дальше из нее либо таблично, либо каким-нибудь CORDIC'ом, делается синус. По таблице достаточно одного периода. Счетчик инкрементируется с одной и той же частотой. Но величина инкремента разная, в зависимости от требуемой выходной частоты.
Представьте фазу 0-2*pi. Из этой фазы "берутся" выборки через одинаковые интервалы времени T. А по значению фазы определяется синус.
И 2 ситуации.
1.Фазовые выборки берутся через pi/2. Временной интервал между ними T. В итоге получается: 0, pi/2,pi,3*pi/2,2*pi(0),pi/2,.... Этому соответствуют знач. синуса: 0,1,0,-1,0,1,... Т.е. полученный синус имеет период 4*T.
2. Фазовые выборки берутся через pi/4. Временной интервал между ними такой же, T. Значения фазы: 0,pi/4,pi/2,3*pi/4,pi,5*pi/4,3*pi/2,7*pi/4,2*pi(0),pi/4,....
Синус:0,0.707,1,0.707,0,-0.707,-1,-0.707,0,0.707,...
Период стал 8*T. Частота в 2 меньше. Т.е. не меняя частоту выборок, но изменив фазовый интервал между ними, получили изменение выходной частоты.
Легко и формулу вывести из этого примера. Период выходной частоты,
TO=2*pi*T/phase.
Или выходная частота, FO=phase/(2*pi*T)=phase*Fclk/(2*pi).
phase - величина фазового интервала между выборками, pi/2 в первом примере, pi/4 во втором. Fclk - частота взятия выборок. 2*pi - период фазы.
В DDS роль фазового интервала выполняет как раз величина инкремента счетчика. Счетчик правда называется аккумулятором фазы.
Выход счетчика периодичен с периодом 2^N. Грубо говоря 2^N "равно" 2*pi. Величина инкремента задается программно. Счетчик инкрементируется с постоянной частотой. Тогда временной период кода на выходе будет равен 2^N/(INCR*Fclk). INCR - величина инкремента, T счетчика. Fclk-частота инкремента счетчика. Полная аналогия с приведенными выше примерами. Выход счетчика - фаза. Адресует например таблицу. Выборки из таблицы берутся с частотой Fclk.Выходная частота: FO=INCR*Fclk/(2^N).
Этот счетчик (аккумулятор) обычно длинный: 24,32,48 разрядов. И можно было бы иметь, при табличном способе, зашитый период синуса из 2^24,2^32,2^48 отсчетов соответственно. Жуткий объем таблицы. Для сокращения объема таблицу адресуют не всеми разрядами счетчика, а только старшими, например 14-ю старшими. Ограничение размера таблицы, наряду с ограниченной разрядностью вых. ЦАП приводят ко всяким палочкам в выходном спектре.

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

Ответы


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

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

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

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

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


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

E-mail: info@telesys.ru