Проблема точности DDS на очень низких частотах

8

Впервые в жизни я использую этот чип DDS (AD9850) для создания синусоидальной волны на желаемой частоте, где я загружаю код таблицы поиска и желаемую частоту. Команда через микроконтроллер. Так что мои знания на данный момент очень ограничены.

Пока все хорошо, но проблема в очень низких частотах. На 1 Гц и даже 0,5 Гц, кажется, хорошо. Но мне тоже нужно до 0,1 Гц.

Вот вывод DDS, когда я посылаю число 0.1 в DDS через микроконтроллер:

введите описание изображения здесь

В моем коде я отправляю команду с ПК на micro в виде строки и преобразую ее в double. Но для простоты и проверки я использую этот код , а для 0.1 Гц я устанавливаю sendFrequency (0.1) в цикле.

Но, как вы видите, период составляет около 11,5 с вместо 10 с для команды 0,1 Гц.

Я надеюсь, что смог бы объяснить проблему хорошо. Есть ли способ откалибровать или отрегулировать это так, чтобы у меня был более точный результат? Или я должен жить с точностью? Кстати, где в паспорте можно сослаться на такую ​​относительную неопределенность?

floppy380
источник
1
Итак, какое контрольное слово вы посылаете на чип DDS, и какие эталонные часы вы используете для чипа DDS? Что вы ожидали, и как далеко эти 11,5 с от этого? Нам понадобится гораздо больше знаний о вашей системе!
Маркус Мюллер
@ MarcusMüller Я использую этот код softgeniedoc.dk/contents/projects/AD9850_tonegen/AD9850.html, но abit модифицированный, но ядро ​​то же самое. Я не мог определить, какие часы используются из кода. Я предоставил код и чип, что еще нужно, позвольте мне предоставить.
floppy380
Вы подключили чип к эталонным часам. Вы буквально единственный в этом мире, кто может сказать нам, что такое эталонные часы; Перед вами цепь, а не мы!
Маркус Мюллер
О, я вижу, я думал, что это исправлено или изменено кодом. Я буду измерять и вернусь.
floppy380
Именно этот модуль telecnatron.com/modules/ad9850/index.html так что кажется 125 МГц
floppy380

Ответы:

9

Это не точность, это разрешение.

На лицевой стороне таблицы данных указано разрешение настройки 0,0291 Гц с тактовой частотой 125 МГц.

0.0291125×106232 Гц (поскольку накопитель фазы составляет 32 бита)

Это примерно 30% от желаемой выходной частоты. Это происходит в результате добавления младшего разряда слова настройки к фазовому аккумулятору на частоте 125 МГц - для данной тактовой частоты, это присуще микросхеме и числу битов, которые они выбрали для фазового аккумулятора и слова настройки.

Вы можете попробовать уменьшить тактовую частоту - минимум составляет 1 МГц, поэтому вы сможете улучшить разрешение более чем на два порядка, примерно до +/- 0,23% при 0,1 Гц.

0.23×1031×106232 Гц с тактовой частотой 1 МГц

К сожалению, для оптимальной производительности придется изменить другие вещи (особенно выходной фильтр, который обычно представляет собой эллиптический LC-фильтр 7-го порядка на этих модулях).

Если вам никогда не нужно подниматься выше, скажем, 1 Гц, вы можете просто добавить RC-фильтр с отсечкой, скажем, 100 Гц к существующему выходу, и это будет приемлемо для многих целей.

Спехро Пефхани
источник
1
Ничто не разделяет 125 МГц от того, что я вижу (кроме самого DDS, конечно). Вам придется распаять генератор и заменить его другим (более низким) частотным модулем. Или отключите его и примените внешние часы (они могут иметь вход разрешения .. Вы можете посмотреть его). Это аппаратное изменение.
Спехро Пефхани
1
Конечно, это так, но они не добавили достаточно битов для вашего приложения. Если бы они добавили еще 8 бит к слову настройки и фазовому аккумулятору, вы были бы счастливы (и люди, которым не нужны такие низкие частоты, должны были бы заплатить немного больше и отправить больше битов, чтобы настроить DDS, чтобы они не стали будь таким счастливым).
Спехро Пефхани
1
Правильный. Но он работает с тактовой частотой 1 МГц, поэтому не все потеряно даже для вашего приложения. Выходной фильтр модуля (эти катушки индуктивности, а также конденсаторы и резисторы) не будет подходящим, поэтому выход будет иметь шум с гораздо меньшей тактовой частотой.
Спехро Пефхани
1
Ничего общего с булавками. Но тактовая частота модуля и выходной фильтр рассчитаны на фиксированную частоту 125 МГц.
Спехро Пефхани
1
@SpehroPefhany - ФГ нижнего уровня могут и действительно использовать готовые чипы DDS. Кроме того, ИС, такие как AD9106, могут выполнять генерацию сигналов произвольной формы в стиле A / FG (с фиксированной скоростью). (Более высокопроизводительные действительно использовали бы FPGA + RAM и отдельный ЦАП, но в
сущности
7

То, что вы ищете в таблице данных, это разрешение настройки частоты. Для этого чипа это 0,0291 Гц для входного тактового сигнала 125 МГц. Ваша частота будет округлена до кратного этого числа. Это число основано на частоте тактового входа чипа.

Например, 0,1 Гц будет округлено до 0,0873 Гц (0,0291 * 3). Период для 0,0873 Гц составляет 11,5 секунд, что вы и видите.

Более низкая входная тактовая частота даст более высокую точность на более низких частотах. Поэтому, если вы хотите повысить точность на низких частотах, уменьшите тактовую частоту.

Pangus
источник
Как рассчитать выходной округленной частоты? Например, если я отправлю 0,5 на чип, вы можете показать, какая формула используется и какой будет выход? Так что я могу предсказать для каждого
floppy380
Он округляется до кратного 0,0291. Чтобы найти ближайшие кратные, разделите 0,5 на 0,0291, округлите до ближайшего целого числа и умножьте на 0,0291. 0,5 / 0,0291 = 17,18, которое округляется до 17. Тогда 17 * 0,0291 = 0,4947. Поэтому, если вы введете 0,5 Гц, вы увидите 0,4947 Гц
Pangus
О, хорошо, я могу даже представить ошибку по сравнению с частотой. сейчас
floppy380
@ChrisStratton Упс. Да, ты прав. Я отредактировал свой ответ. Спасибо
Pangus
1
Вы можете выполнять частотную модуляцию и амплитудную модуляцию, но я не думаю, что вы можете изменить таблицу поиска на чипе. Если вы заинтересованы в создании сигналов произвольной формы, возможно, стоит поискать другой чип или получить ЦАП и попытаться создать свой собственный DDS
Pangus