как работает прямой цифровой синтез (DDS)?

Здесь принимаются все самые невообразимые вопросы... Главное - не стесняйтесь. Поверьте, у нас поначалу вопросы были еще глупее :)
Ответить
electronic255
Встал на лапы
Сообщения: 81
Зарегистрирован: Вт окт 05, 2010 20:57:19

как работает прямой цифровой синтез (DDS)?

Сообщение electronic255 »

Вопрос собственно в заголовке. Сижу вот читаю теорию и не могу понять...
Мне нужно получить только меандр с частотой 0.5 - 32.5 кгц с шагом 10Гц.
Завожу таймер на мк, где то 60кгц прерывания, далее завожу фазовый аккумулятор длинной 32бит.
Фазовый аккумулятор нужно приращивать каждое прерывание, вопрос на сколько и в какие моменты портом дергать?
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: как работает прямой цифровой синтез (DDS)?

Сообщение YS »

Если вам нужен именно меандр, то лучше использовать обычный ШИМ-выход.

Если говорить о DDS, то оно работает следующим образом.

Прежде всего нам надо определить функцию, которая будет выдавать интересующий нас сигнал в зависимости от фазы. Для меандра это может быть, например, что-то такое:

Код: Выделить всё

int16_t square_wave(int16 amplitude,uint32_t phase)
{
  uint8_t phase_msb;

  phase_msb = phase >> 24;

  if (phase_msb<128)
  {
    return amplitude;
  }
  else
  {
    return 0;
  }
}


И дальше на каждом шаге инкрементируем аккумулятор фазы, вызываем эту функцию и то, что она вернула, выводим в порт (либо дергаем пин).
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25125
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: как работает прямой цифровой синтез (DDS)?

Сообщение КРАМ »

[uquote="electronic255",url="/forum/viewtopic.php?p=3488529#p3488529"]Мне нужно получить только меандр с частотой 0.5 - 32.5 кгц с шагом 10Гц.[/uquote]
Дело в том, что DDS не генерирует чистую функцию из ROM. На выходе получается произведение частоты накачки и генерируемого сигнала (огибающая выходного спектра представляет собой функцию sin(x)/x). То есть принцип работы основан на СТРОБОСКОПИЧЕСКОМ ЭФФЕКТЕ и естественной интерполяции значений синуса (если генерируется он), в том числе в районе перехода через ноль.
При генерации меандра это приводит к модуляции фазы фронта комбинационными частотами. Для синуса это не представляет проблем, поскольку при сильном разносе частоты сигнала и частоты выборок простейший фильтр НЧ легко подавляет комбинационные частоты, а даже дает возможность получить синтез в районе одной из комбинационных частот (при необходимости) с помощью соответствующего полосового фильтра.
Генерация меандра с помощью ШИМ ограничит шаг перестройки частоты периодом системного клока, что на много порядков больше, нежели чем можно получить при DDS.
Можно пойти по пути генерации синуса с последующим преобразованием его в меандр с помощью компаратора.
Ответить

Вернуться в «Теория»