DDS генератор на AVR

Вопросы и замечания по статьям и схемам, представленным на нашем сайте

При поддержке РадиоКОТструктор.ру


Аватара пользователя
kotovasiya
Опытный кот
Сообщения: 757
Зарегистрирован: Пт мар 30, 2007 12:11:23

Re: DDS генератор на AVR

Сообщение kotovasiya »

telefonist писал(а):Гм... На выходе ГУН и не нужно меандра! На выходе ГУН будет синус, чистый и красивый, если предусмотреть подавление частоты сравнения в фильтре перед варикапами. Именно так и нужно.

Да и не просил я заниматься, просто - потратить минут 15 времени, и подробно ответить на несколько простых вопросов, т.е. - дать мне толчок к творчеству в нужном направлении... Заниматься - т.е. -паять, переписывать прошивку и т.д. буду я сам :)
Сформулирую вопросы ещё раз.
(1) Упростится ли программа для генерации ТОЛЬКО меандра?
(2) Позволяет ли метод делать шаг 0.1 Гц?
(3) поподробнее - (лучше всего ссылка) на этот проект в этом самом баилдере?


1.Упроститься, но и усложниться изза п.2
2.Позволяет, но надо переписать проект под эту точность.
3.Джитер на частоте 45кгц убьет все качество сигнала, ссылка на компилятор http://www.algrom.net/russian.html
Аватара пользователя
telefonist
Родился
Сообщения: 18
Зарегистрирован: Вс май 09, 2010 23:15:14
Откуда: Minsk
Контактная информация:

Re: DDS генератор на AVR

Сообщение telefonist »

спасибо, буду баловаться :)
в случае успеха о результатах доложу ! :)

Джиттер - имеется в виду "фазовая дрожь"? Гм.. С ней бороться в ФАПЧ предполагаю времязадающей цепочкой в инвертирующем интеграторе на выходе фазового компаратора. Процесс ФАПЧ он же происходит постоянно, непрерывно, большая скорость перестройки по частоте нам не нужна, соответственно - удержание захваченной частоты должно быть более-менее несложным... Хотя - всё выяснится на практике :)
У кота четыре ноги - вход, выход, земля и питание :)
Аватара пользователя
telefonist
Родился
Сообщения: 18
Зарегистрирован: Вс май 09, 2010 23:15:14
Откуда: Minsk
Контактная информация:

Re: DDS генератор на AVR

Сообщение telefonist »

Кусок DDS генератора под БАСКОМ.

Singl = Freq / Multiplier 'шаг
Fincr = Singl + 0.5 'округление?

Restore Square_table
Tmpw = 1
Do
Read Wave(tmpw) 'перенос таблицы
Incr Tmpw
Loop Until Tmpw > 256
Loadadr Wave(1) , Z 'ldi r31,$01 ldi r30,$00

ldi r29,$00 'clear accumulator
ldi r28,$00
lds r24,{Fincr+0} 'LSB passa incremento frequenza
lds r25,{Fincr+1} 'usa 24 dei 32 bit
lds r26,{Fincr+2} 'MSB
Gen:
add r28, r24 ' 1 cycle
adc r29, r25 ' 1 cycle
adc r30, r26 ' 1 cycle
ld r0, Z ' 2 cycle
! Out PortD,R0 ' 1 cycle
sbic Pinb,0 ' 1 проверка на выход из подпрограммы
rjmp Gen ' 2 cycles totale 9 cicli

работает. Но! Для меандра же вся таблица из 0 и 255! Т.е. - нужно всего ДВА значения... И не нужен весь порт, достаточно 1й ноги. Как это сделать правильно? Кто подскажет?
У кота четыре ноги - вход, выход, земля и питание :)
Аватара пользователя
kotovasiya
Опытный кот
Сообщения: 757
Зарегистрирован: Пт мар 30, 2007 12:11:23

Re: DDS генератор на AVR

Сообщение kotovasiya »

Слушать старший бит аккумулятора. Тоесть портировать его на пин и пересчитать такты.
Аватара пользователя
kotovasiya
Опытный кот
Сообщения: 757
Зарегистрирован: Пт мар 30, 2007 12:11:23

Re: DDS генератор на AVR

Сообщение kotovasiya »

Слушать старший бит аккумулятора. Тоесть портировать его на пин и пересчитать такты.
Аватара пользователя
Леонид Иванович
Друг Кота
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск
Контактная информация:

Re: DDS генератор на AVR

Сообщение Леонид Иванович »

telefonist писал(а):Джиттер - имеется в виду "фазовая дрожь"? Гм.. С ней бороться в ФАПЧ предполагаю времязадающей цепочкой в инвертирующем интеграторе на выходе фазового компаратора


Спектр побочных компонентов, с которыми Вы собрались бороться, имеет форму спуров, которые, можно сказать, хаотически перемещаются по частоте при перестройке DDS. Можно делать сколь угодно узкую полосу, но нет гарантии, что спуры туда не попадут. Делал похожим методом приемник, 10-разрядный DDS служил опорой ФАПЧу. Так при перестройке слышен целый хор побочных компонент. Но я фильтровал синусоидальный выход DDS и компарировал. А Вы хотите сделать еще хуже.
Аватара пользователя
telefonist
Родился
Сообщения: 18
Зарегистрирован: Вс май 09, 2010 23:15:14
Откуда: Minsk
Контактная информация:

Re: DDS генератор на AVR

Сообщение telefonist »

"Слушать старший бит аккумулятора. Тоесть портировать его на пин и пересчитать такты." - пока что я не вкуриваю эту формулировку... Но - буду разбираться :) 4 часа назад я вообще не знал, как подойти к этому вопросу, а ща - уже лежит на столе и генерит :)


А что будет происходить во время ПЕРЕСТРОЕНИЯ частоты - меня менее всего волнует :) будем по выходу из цикла синтеза первым делом ножку ENABLE на УНЧ в ноль сажать, что бы шлака слышно не было :)

Пока не проверю, и сам не скажу что фекаль - оно для меня не такая уж и фекаль :)

Ещё одна интересная идея... Приделать к ондкристаллке графический ЖКИ, и сделать на основе DDS алгоритма простой АЧХометр для проверки полосы пропускания ПЧ фильтров (типа - 455, 465, 500 КГц) и прочих. Что бы при покупке можно было полосу и затухание проверить... Или выпаять из старых девайсов - и сразу же изучить его характеристики...
У кота четыре ноги - вход, выход, земля и питание :)
Аватара пользователя
kotovasiya
Опытный кот
Сообщения: 757
Зарегистрирован: Пт мар 30, 2007 12:11:23

Re: DDS генератор на AVR

Сообщение kotovasiya »

telefonist писал(а):"Слушать старший бит аккумулятора. Тоесть портировать его на пин и пересчитать такты." - пока что я не вкуриваю эту формулировку...

Вы так и не поняли как работает генератор.
Есть число а, которое считает допустим до 100 и по кругу, к нему будем прибавлять другое число b, например еденицу.
Число а, через промежуток времени всетаки переполнется и пойдет по новому кругу, если добавлять уже 10 то число а, переполнится в 10 раз быстрее.
По такому принципу работает генератор. Вам нужно считать переполнения. Тоесть слушать старший бит числа а.
Аватара пользователя
Леонид Иванович
Друг Кота
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск
Контактная информация:

Re: DDS генератор на AVR

Сообщение Леонид Иванович »

telefonist писал(а):А что будет происходить во время ПЕРЕСТРОЕНИЯ частоты - меня менее всего волнует :)


Вы не поняли. Стоит немного перестроить частоту, как спуры переместятся в другое место и будут там стоять, как вкопанные, пока опять не перестроите частоту.

Если выводить на 1 бит в порту, то получилось 11 циклов:

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

lds r24,{Fincr+0} 'LSB passa incremento frequenza
lds r25,{Fincr+1} 'usa 24 dei 32 bit
lds r26,{Fincr+2} 'MSB
Gen:
add r28, r24 ' 1 cycle
adc r29, r25 ' 1 cycle
adc r30, r26 ' 1 cycle
sbrc r30,7    ' 1/2
rjmp m1      ' 2/0
cbi PortD,0  ' 0/2
rjmp m2     ' 0/2
m1:
sbi PortD,0   ' 2/0
sbic Pinb,0   ' 1/0 проверка на выход из подпрограммы
m2:
rjmp Gen     ' 2 cycles totale 11 cicli


sbic Pinb,0 пропускаю в одном случае для выравнивания веток по времени.
Аватара пользователя
telefonist
Родился
Сообщения: 18
Зарегистрирован: Вс май 09, 2010 23:15:14
Откуда: Minsk
Контактная информация:

Re: DDS генератор на AVR

Сообщение telefonist »

Спасибо за ответ...
2 лишних такта - это зло :( Ну ладно, пусть гадит в порт, поставлю остальные ноги порта на приём, всё равно они опрашиваются только тогда, когда проц не генерирует :)
А можно ли избавиться от таблицы в которой половину 00, а половину FF?

И, если можно - посоветуйте, чем лучше всего 45-75 МГц поделить на 100 (1000) ? Желательно - недефицитное, а то в Минске даже логику серии 74AC и то тяжело купить :(
У кота четыре ноги - вход, выход, земля и питание :)
Аватара пользователя
Леонид Иванович
Друг Кота
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск
Контактная информация:

Re: DDS генератор на AVR

Сообщение Леонид Иванович »

telefonist писал(а):Ну ладно, пусть гадит в порт


Тогда так, нужный сигнал будет на PD7:

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

lds r24,{Fincr+0} 'LSB passa incremento frequenza
lds r25,{Fincr+1} 'usa 24 dei 32 bit
lds r26,{Fincr+2} 'MSB
Gen:
add r28, r24 ' 1 cycle
adc r29, r25 ' 1 cycle
adc r30, r26 ' 1 cycle
out PortD,r30 '1
sbic Pinb,0   ' 1 проверка на выход из подпрограммы
rjmp Gen     ' 2 cycles totale 7 cicli


telefonist писал(а):И, если можно - посоветуйте, чем лучше всего 45-75 МГц поделить на 100 (1000) ?


Так любая микросхема PLL-синтезатора внутри имеет два делителя - для ГУН и для опорной частоты.

telefonist писал(а):в Минске даже логику серии 74AC и то тяжело купить :(


Магазин на "Интеграле" уже отменили?
Аватара пользователя
telefonist
Родился
Сообщения: 18
Зарегистрирован: Вс май 09, 2010 23:15:14
Откуда: Minsk
Контактная информация:

Re: DDS генератор на AVR

Сообщение telefonist »

Но не у всех синтезаторов есть выход делителя наружу :) По крайней мере у тех, что можно купить в Минске НЕ ПОД ЗАКАЗ - этого выхода НЕТ.

Был на Интеграловском магазе, там эти микрухи почти бесплатно отдают :) по 3-4 цента :) Втарился...
У кота четыре ноги - вход, выход, земля и питание :)
Аватара пользователя
Леонид Иванович
Друг Кота
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск
Контактная информация:

Re: DDS генератор на AVR

Сообщение Леонид Иванович »

telefonist писал(а):Но не у всех синтезаторов есть выход делителя наружу


А для каких целей?
Аватара пользователя
telefonist
Родился
Сообщения: 18
Зарегистрирован: Вс май 09, 2010 23:15:14
Откуда: Minsk
Контактная информация:

Re: DDS генератор на AVR

Сообщение telefonist »

т.е. - как это "для каких целей"??? Что бы сигнал ГУНа делить на 100 (1000) и сравнивать потом с DDS, таким образом получить спектрально красивую синусоиду с цагом в 100 Гц.
Я понимаю, что некоторые из синтезаторов можно задействовать в качестве делителя частоты, например LMX1601 по программируемому выходу FoLd. Но в Минске ТАКИЕ синтезаторы только под заказ.
А почему хочется "по простому" - что бы делитель не собирать на 3-4х корпусах логики, а сделать красиво и изящно. Явно же кто-то выпускает спец-микрухи для подобных целей...
У кота четыре ноги - вход, выход, земля и питание :)
Аватара пользователя
Леонид Иванович
Друг Кота
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск
Контактная информация:

Re: DDS генератор на AVR

Сообщение Леонид Иванович »

Тогда зачем выход делителя, выходящий наружу? Всё делается внутри микросхемы PLL. Подаете на вход сигнал с ГУНа, а на вход Ref - сигнал с DDS. Выход фазового детектора через фильтр на вход управления ГУНа. И всё, ГУН привязан к DDS.

Что касается поиска древних синтезаторов, таких как LMX1601, то пройдитесь по полю чудес в Ждановичах. Наверняка найдете на платах старых мобильников. Хотя такие синтезаторы были, скорее, на старых NMT. А на старых GSM можно найти LMX2324 и подобные. Сам недавно покупал там для прескалера частотомера.
Аватара пользователя
telefonist
Родился
Сообщения: 18
Зарегистрирован: Вс май 09, 2010 23:15:14
Откуда: Minsk
Контактная информация:

Re: DDS генератор на AVR

Сообщение telefonist »

Гм... Тогда, может быть, можете подсказать какой-нибудь из синтезаторов, умеющих этот самый REF почти не делить? Если сигнал ГУН делится в 100 (или 1000) раз, то настолько же и увеличивается шаг между соседними частотами. А если ещё и DDSовский сигнал делить - то может пропасть весь смысл затеи.
У кота четыре ноги - вход, выход, земля и питание :)
Аватара пользователя
Леонид Иванович
Друг Кота
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск
Контактная информация:

Re: DDS генератор на AVR

Сообщение Леонид Иванович »

Да любой синтезатор подойдет. Шаг сетки у PLL равен частоте сравнения. Но у DDS шаг может быть сколь угодно малым (просто нужно увеличить разрядность аккумулятора фазы), это компенсирует грубый шаг PLL. В итоге без разницы, какую выбрать частоту сравнения у гибридного DDS-PLL-синтезатора: шаг сетки ГУН будет равен шагу DDS, умноженному на отношение частоты ГУН к частоте DDS (фактически это коэффициент умножения PLL).
Аватара пользователя
колоб
Нашел транзистор. Понюхал.
Сообщения: 194
Зарегистрирован: Вт сен 28, 2010 17:45:31
Откуда: Москва

Re: DDS генератор на AVR

Сообщение колоб »

Всем добрый день! Мой DDS генератор по печатке и входной части velant77 начинает потихоньку оживать...Верхняя сторона платы запущена ,дело за нижней . Сигналы очень чистые без выбросов. Спасибо kotovasiya, velant77 и всем ,кто разработал его. :)
Вложения
DDS AVR.jpg
(140.42 КБ) 1096 скачиваний
Аватара пользователя
saschai
Говорящий с текстолитом
Сообщения: 1596
Зарегистрирован: Вс дек 14, 2008 20:36:47
Откуда: SPb

Re: DDS генератор на AVR

Сообщение saschai »

Доброго времени суток, коллеги!
Подскажите, а аналоговой частью(выхлопом) с данного генератора кто нибудь занимался?
Честное слово, нет времени просмотреть всю ветку :oops:
Если было, ткните, где приблизительно.
Благодарю!
ЗЫ схему с преобразователем на МАХ, смотрел, не впечатлила, хочется однополярное питание
Аватара пользователя
BigallS
Опытный кот
Сообщения: 752
Зарегистрирован: Пт апр 15, 2011 21:11:22
Откуда: Россия

Re: DDS генератор на AVR

Сообщение BigallS »

saschai писал(а):Доброго времени суток, коллеги!
Подскажите, а аналоговой частью(выхлопом) с данного генератора кто нибудь занимался?
Честное слово, нет времени просмотреть всю ветку :oops:
Если было, ткните, где приблизительно.
Благодарю!
ЗЫ схему с преобразователем на МАХ, смотрел, не впечатлила, хочется однополярное питание


А вот аналогичное есть http://www.rlocman.ru/shem/schematics.html?di=70216
Ответить

Вернуться в «Статьи»