PDA

Просмотр полной версии : Помогите советами для реализации двоичного DDS



misha8us
14.11.2015, 16:05
Мне нужен дробный делитель (входная частота 19.44 МГц, выходная 1-5 МГц) с резолюцией 24 бит и с малыми фазовым шумом и спурами. Использовать для этого стандартный DDS проблематично, т.к. они имеют (во всяком случае достаточно недорогие) значительные спуры, да и приходится синус преобразовывать в прямоугольный сигнал. Посмотрел схемы дробных делителей у старых приборов, когда ещё не было готовых DDS, и схемы очень сложные. Но наверное по принципу DDS (сдвиг фазы) можно сделать делитель не только с синусоидальным, но и прямо с прямоугольным выходным сигналом (без ЦАП). То есть убираем ЦАП, а в ПЗУ вместо тех значений синуса, что в обычном DDS отличаются от нуля, записываем 1, что заодно резко уменьшит размер ПЗУ (понадобится 2 МБ) и позволит не использовать отсечение фаз, которое используется для уменьшения ПЗУ в обычных DDS и увеличивает спуры, да и устраняется нелинейность от ЦАП. И для всех вычислений фаз при нужной входной частоте наверное хватит и обычного микроконтролера AVR, который просто будет управлять этим ПЗУ. Есть ли подводные камни в такой реализации DDS и знает ли кто готовые такие проекты?

vadim_d
14.11.2015, 22:12
То есть убираем ЦАП, а в ПЗУ вместо тех значений синуса, что в обычном DDS отличаются от нуля, записываем 1, что заодно резко уменьшит размер ПЗУ (понадобится 2 МБ) и позволит не использовать отсечение фаз, которое используется для уменьшения ПЗУ в обычных DDS и увеличивает спуры, да и устраняется нелинейность от ЦАП
Все красиво, но исходный вариант с ЦАП был чисто синхронным, то есть работал на тактовой частоте DDS, и все, что выше Найквиста, урезалось потом фильтром. Этот же фильтр давал и конечный дискрет фазы, то есть переходы через ноль синуса не были завязаны на такт DDS. Сейчас же дискрет фазы станет привязанным к такту, то есть фазовый шум возрастет многократно. Способ борьбы - сделать что-то вроде интерполятора, то есть когда очередной инкремент аккумулятора фазы дает перенос, то вычислять время возникновения этого переноса между двумя тактами и реализовывать каким-то таймером на более высокой тактовой частоте.

UR4UDT
14.11.2015, 22:26
Есть ли подводные камни в такой реализации DDS и знает ли кто готовые такие проекты?
Найдите в архивах форума статью UU9JDR "DDS -функциональный генератор
с джамперным управлением на ПЛМ". Полезная информация.
Подводные камни:
При тактовой 19,44 МГц и выходной 5 МГц имеем мене четырех отсчетов за
период выходной частоты. До синусоиды можно "достроить" только с помощью ФНЧ.
Получить меандр сразу с выхода контроллера не реально при таком соотношении
частот.
Из личного опыта:
В 2009 г. делал DDS на контроллере PIC18F2520. Тактовая частота 40 МГц.
Программное накопление фазы (24 разряда) выполнялось за 14 циклов (1,4 мкс).
Максимальная частота, которую можно было получить, около 350 кГц.
Я использовал до 100 кГц (шаг около 0,04 Гц).
Таблица синусов в памяти программ. ЦАП на матрице R-2R (8разрядов).
По всей видимости, получить желаемое Вами простым контроллером не удастся.