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

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

Отправлено ВН 26 февраля 2003 г. 20:35
В ответ на: ЕСТЬ!!! Спасибо большое, всё понял! Ключевые слова были "переменный инкремент" :) ! (-) отправлено Alexey_N 26 февраля 2003 г. 19:15

Раз поняли, то вот еще одна реализация DDS.
Иногда она удобнее. Например в случаях, когда в обработку сигнала, кроме прочего, включается гетеродинирование с редкой перестройкой гетеродина. Причем необходим хороший дискрет перестройки и величина перестройки не обязательна должна быть кратна некоторой заданной величине. Гетеродин, как и в классическом DDS, работает от неизменной тактовой частоты.
Суть можно понять на простом примере. Пусть есть некоторая частота тактовая, Fclk. Нужно получить синус частотой, ну например в 4.5 раза, меньшей Fclk. Т.е. 4.5 выборки на период синуса.
Если учесть, что 4.5 выборки на период=9 выборкам на 2 периода, то все становится просто. Есть массив (пзу) 9 точечный. В массиве находятся 2 периода синуса, т.е. 9 отсчетов синуса: sin(2*pi*Fclk*i/4.5). i=0-8. И есть счетчик, обычный, с единичным инкрементом. Считает от 0 до 8. Счетчик адресует массив.
В общем случае, для генерации синуса этим способом из некоторой Fclk, необходимо определить 2 вещи. 1. - размер массива (и соответственно разрядность счетчика). 2.- число периодов синуса в этом массиве.
Т.е. решить уравнение:
sin(2*pi*Fout*M/Fclk)=sin(2*pi*N).
Или Fout*M/Fclk=N. M - размер массива, N - число периодов синуса в массиве. Уравнение или не решаемо, или решений бесконечно много, т.к. 2 неизвестных. Но на размер массива, как правило, существуют ограничения. Т.е. M должно быть меньше равно некоторого Mmax. Следовательно, в тех случаях, когда уравнение имеет бесконечное число решений, нужно выбрать любое, для которого M меньше равно Mmax.
В случае, если ур-е не имеет решений, нужно поменять Fout на какую-нибудь близкую частоту, для которой решение есть.
В этом способе переменной величиной выступает размер массива (таблицы) и, соответственно, разрядность счетчика. В DSP как правило имеется поддержка циклических буферов. Для этого способа ничего больше и не надо. Собственно для классич. DDS тоже больше ничего не надо.
Игра, по сравнению с классич. DDS, а точнее NCO, на размере буфера, в тех случаях, когда допустима неравномерная перестройка по частоте.
Перестройка по частоте в классическом DDS кратна Fclk/K.
K - модуль, по которому работает фазовый аккумулятор DDS. Обычно K равен 2^N. Но не обязательно.
Если кратность не обязательна, то может оказаться, что DDS через буфер переменной длины будет экономичнее.
Плюс еще одно - в классическом DDS требуется переменный инкремент.
В DSP, как правило есть индексные регистры, позволяющие реализовать переменный инкремент. Но иногда, в сложных алгоритмах, этих регистров не хватает. Приходится эти регистры перегружать-прятать-восстанавливать. А это потери времени.
В то же время с единичным инкрементом, как правило, нет проблем

Недостаток очевиден - мутотень с решением уравнения. Т.е. сложность перестройки.



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

Ответы


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

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

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

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

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


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

E-mail: info@telesys.ru