Свежие обсуждения
Измерения

DDS-генератор на AVR - нужна помощь

1 138 189

Кто-нибудь знает, это чудо можно купить в Украине?

 

madgrey: это чудо можно купить в Украине?

Может у них? http://www.terraelectronica.ru/idea.php?ID=340

 

madgrey: это чудо можно купить в Украине?
В Харькове:
http://www.kosmodrom.com.ua/product.php?page=0&name=oled

 

poruchik: В Харькове:...
Цена абсолютно неконкурентноспособная по сравнению с дисплеями от мобил. Экран 3100 не икона (хотя цена ), но за 20-30 $ гарантированно можно подобрать полноцветник нужного размера с адекватным интерфейсом. В настоящее время вопрос смены экрана в проекте неактуален, т.к. передняя панель "DDS-1" находится в завершающей стадии и скоро будет предъявлена почтенной публике.

 

С интересом прочитал о разработке любительского генератора на DDS. Сам я тоже занимаюсь подобными генераторами, но у меня чуть другие требования: на первом месте спектральная чистота, и уже потом - полоса частот. В качестве широкополосного генератора сейчас в разработке другая конструкция, на AD9951. Еще в разработке 3-фазная версия генератора для использования при наладке промавтоматики. Ну а в текущей версии генератора синуса на программно реализованном DDS почти всё готово, только пока не включил канал формирования прямоугольников - не могу достать AD8091 и ADG619.


 

Леонид Иванович: С интересом прочитал о разработке любительского генератора на DDS.

Леонид Иванович поделитесь пожалуйста проектом. Листинг; платы схема.

 

Л.И., на картинке вижу экран, четыре кнопки и кажется валкодер. На экране много чего написано, но как-то сложновато для простого пользователя. Отсюда вопрос: достаточно ли органов управления и как они связаны с экраном?

 

Да, четыре кнопки и энкодер с кнопкой PEC-16 от Bourns. Действительно, такое малое количество органов управления вызывает некоторые затруднения, но ничего лучше придумать не удалось. Хотелось вписаться в корпус небольшого размера (Z-4A).
Вот описание меню: http://caxapa.ru/upload/files/b26fb9dfa2d139614f370914507e4bc5a80da142
Хотя сейчас я немного меню переделываю, так как установка выходного уровня в виде амплитуды не всегда удобна. Добавляю еще RMS.
Схема основной платы вот: http://caxapa.ru/upload/files/cb2eeadd75fe9dc1bf9ba7334435fb295df769cc

 

Спасибо, посмотрел. Появились новые вопросы.

1) Смутила фраза "Благодаря применению 16-разрядного ЦАП достигается очень низкий коэффициент гармоник". При частоте выдачи выборок 206 кГц для синтеза синуса 50 кГц (4 точки на период, практически пара меандров) вряд ли будет "очень низкий коэффициент гармоник", невзирая на цап-16.

2) "Диапазон установки фазового сдвига – ±360°" - правильно? По-моему, достаточно ±180.

3) Что это за сакральная частота такая 206 кГц? У нас fВЫБ=2000 кГц, на вашем проце можно и 2500 достичь.

 

1) Нужно различать побочные компоненты в выходном спектре DDS, которые появляются в результате квантования амплитуды и образы несущей. Первые нельзя устранить с помощью выходного фильтра, так как они попадают в рабочую полосу частот. Для реального 8-разрядного ЦАП это немногим лучше -40 dBc. А вот вторые устраняются фильтром, и степень их подавления зависит только от качества фильтра. При отношении Fs/Fout = 4 требования к фильтру не такие уж жесткие, фильтр Чебышева 4-го порядка, который я применяю, вполне справляется. Можно вспомнить систему звукозаписи "Compact Disc", где при частоте дискретизации 44.1 кГц получают рабочий диапазон частот до 20 кГц, причем коэффициент гармоник даже на границе диапазона остается очень малым (в этом легко убедиться с помощью тестового диска и спектроанализатора). Но достигается это ценой более сложного ФНЧ на выходе ЦАП. А в последнее время - с помощью ЦАП с передискретизацией и цифровой фильтрации. Кстати, такой вариант подходит и для построения синусоидальных генераторов.

2) Да, ±180° вполне достаточно, но я сделал ±360°, так пользователю может быть удобнее.

3) Увы, выше частоту дискретизации не может обеспечить AVR на тактовой частоте 20 МГц. Ваш генератор 8-разрядный, поэтому для четверти периода синуса 256 точек таблицы вполне достаточно. Но для 16-разрядного ЦАП требуется огромный размер таблицы. При генерации синусоидального сигнала, максимальная скорость нарастания которого 2*pi*A, количество квантов фазы должно быть в 2*pi раз больше количества квантов амплитуды. Это означает, что разрядность адреса таблицы должна быть на 2 - 3 разряда больше, чем разрядность данных. Для 16-разрядного ЦАП требуется таблица объемом 1 Мбайт. Даже с учетом возможного уменьшения объема в 4 раза вследствие свойств симметрии функции sin, объем все равно остается большим. Поэтому я "на лету" делаю линейную интерполяцию отсчетов синуса с 16-разрядной точностью, и это по двум каналам. Плюс эмуляция шины I2S. Все это, конечно, тратит ресурсы процессора. Да и выбранный ЦАП я использую даже с некоторым оверклоком.

Что касается необходимой разрядности ЦАП для лабораторного генератора, то 8 разрядов - очень мало. Для аудио применений он не подходит, так как имеет уровень гармоник выше, чем даже самый плохенький усилитель. Если, например, послушать в наушниках выходной сигнал такого генератора, скажем, на частотах порядка 20 кГц, то услышим целый хор побочных компонент, часть которых при перестройке перемещается вверх, часть - вниз. Такая картина сильно печалит. Я понимаю, что при большей разрядности ЦАП такой скорости простыми методами не достичь, поэтому остановился на диапазоне частот до 50 кГц, но с качественным выходным сигналом. Хотя понимаю, что это мало, классические звуковые генераторы имели диапазон до 200 кГц. Чтобы сделать нормальный функциональный генератор, нужно его строить по схеме "CPU-FPGA-RAM-TxDAC-FILTER-AMP-ATT". Была одна работа, где такое понадобилось бы. Думал, сделаю заодно и любительскую конструкцию. Но работа вдруг отменилась.