Программирование AVR Экспериментальный DDS-генератор на AVR и PLL Thu, November 15 2018  

Поделиться

нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


Экспериментальный DDS-генератор на AVR и PLL Печать
Добавил(а) microsin   

В 103 номере журнала клуба Benelux QRP (сентябрь 2002) была статья Ton PA0KLT [2] о системе настройки QRP. В системе работает DDS-гетеродин на микроконтроллере! Достоинство этого решения - не нужно покупать дорогой чип DDS, не нужно паять его тонкие выводы корпуса SMD. Всю работу по синтезу частоты гетеродина выполняет маленький микроконтроллер. Он даже опрашивает поворотный энкодер, используемый для настройки частоты! Однако, как и с обычной системой DDS, требуется еще одно устройство для чтения и отображения частоты (здесь и далее перевод статьи [1]).

В разработке PA2OHH применена оригинальная система индикации частоты на одноразрядном 7-сегментном индикаторе. В одном микроконтроллере объединены функции DDS, отображения частоты и сканирования кнопок для настройки частоты.

DDS AVR pa2ohh

Подавление помех в выходном сигнале DDS. Для частотного синтеза использовался 7-разрядный DAC на резисторах на тактовой частоте 923 кГц. Такая система синтеза на выходе имеет сигналы помех. Однако они эффективно подавляются фильтром обратной связи PLL! Если какие-то помехи остаются, то они слабые в диапазоне звуковых частот. Большое достоинство в том, что эти помехи не попадают в диапазон приема как паразитные сигналы, что бывает в случае "нормальной" системы DDS без PLL. И помехи полностью исчезают, когда частота RF настраивается со смещением вверх или вниз только на 15 .. 30 Гц.

Работа микроконтроллера. Сердцем DDS служит простой и дешевый микроконтроллер AT90S1200. Частота кварца 11999.55 кГц, так что может использоваться кварц на 12 МГц. DDS управляет VCO, работающим на частоте от 6 до 30 МГц. Частота этого VCO делится на 128, и захватывается DDS с помощью схемы фазовой автоподстройки частоты (PLL). Диапазон генератора DDS составляет 46875 .. 234375 Гц.

DDS AVR pa2ohh sch AT90S1200

Один цикл прокрутки программы DDS составляет 13 машинных тактов процессора, что дает частоту тактов синтеза DDS 11999.55 / 13 = 923.04 кГц. Форма сигнала на выходе треугольная, а не синусоидальная. Простейший 7-битный DAC организован на ножках порта PD6..PD0 на основе цепочки резисторов.

LC ФНЧ имеет частоту среза 200 кГц. Возможно, что дополнительная секция фильтра может немного улучшить параметры фильтрации, потому что частота среза довольно высока по сравнению с половиной тактовой частоты DDS 923 кГц. Порты PB1, PB4, PB5, PB6 используются как входы для опроса кнопок. LED-дисплей отключается с помощью транзистора BC557. Транзистор открывается, когда переходят в лог. 0 уровни на выходе порта PB2 или PB3. Трюк заключается в том, что сегменты B и C 7-сегментного LED-индикатора всегда светятся, когда отображается любая из цифр. Вместо токоограничивающего резистора на каждый сегмент используется только один резистор. Вы возможно заметите, что яркость будет меняться, когда меняется количество зажженных сегментов (в зависимости от отображаемой цифры). ИМХО на практике это не очень критично.

Обратите внимание, что LED-индикатор получает питание от +12V, чтобы не создавать помехи на стабилизированном источнике питания 5V микроконтроллера.

Запрещение PLL. Ножка порта PB0 используется для запрета PLL в определенных подпрограммах AVR, когда тактовая частота снижается до 1/8 x 923 кГц. На таких низких тактовых частотах, которые меньше 1/4 от максимальной частоты DDS, в настоящий момент выход DDS значительно искажен. Без запрета PLL (только 255 мкс) во время этих подпрограмм Вы можете услышать громкий щелчок.

Настройка DDS. Настройка осуществляется тремя кнопками на старой 3-кнопочной мыши (в ней используются только кнопки). Две кнопки настраивают частоту вверх или вниз, третья используется для переключения скорости настройки. Есть 6 скоростей настройки конечного VCO (который работает на частоте, в 128 раз выше частоты DDS): 15.625 Гц, 31.25 Гц, 62.5 Гц, 1 кГц, 10 кГц и 100 кГц. Нажатие кнопки переключения скорости с одной из кнопок настройки меняют скорость, которая отображается на индикаторе. Когда нажимаются кнопки изменения частоты вверх или вниз, DDS работает только часть времени, на 1/8 от нормальной частоты тактов 923 кГц. То же самое происходит, когда активно отображение цифр частоты. Есть дополнительный тумблер, отключающий отображение частоты и кнопки, чтобы можно было получить самый чистый выходной RF-сигнал.

DDS AVR pa2ohh tuning system

Отображение частоты. Для нижних скоростей настройки отображается значение части килогерц частоты. Когда выбрана скорость настройки 10 кГц или 100 кГц, отображается значение в МГц + 100 кГц.

DDS AVR pa2ohh display

Ниже на примере показано, как все работает.

Для частоты 21.345 МГц и скорости настройки 10 кГц и 100 кГц алгоритм отображения частоты следующий:

Отображение цифры "2" в течение 0.5 секунд.
Выключение отображения на 0.1 секунды.
Отображение цифры "1" в течение 0.3 секунды.
Выключение отображения на 0.1 секунды.
Отображение цифры "3" в течение 0.3 секунды.
Затем дисплей выключается на 5 секунд, и отображение повторяется.

Для частоты 21.345 МГц и нижних скоростей настройки алгоритм отображения частоты следующий:

Отображение цифры "3" в течение 0.5 секунды.
Выключение отображения на 0.1 секунды.
Отображение цифры "4" в течение 0.3 секунды.
Выключение отображения на 0.1 секунды.
Отображение цифры "5" в течение 0.3 секунды.
Затем дисплей выключается на 5 секунд, и отображение повторяется.

Отображение выключается на 5 секунд, но включится немедленно после того, как будет опущена одна из кнопок изменения частоты вверх/вниз. Первая цифра отображается немного дольше, чем другие, что дает более удобное считывание значения частоты. Когда нажата кнопка скорости настройки, отображается текущая скорость (от 1 до 6). Нажатие кнопок настройки вверх/вниз медленно меняет скорость настройки (0.5 секунд на 1 шаг).

[VCO]

Генератор VCO собран на одном транзисторе и снабжен выходным драйвером и счетчиком/делителем на 128. Переключатель S1 выбирает один из двух диапазонов частот. В качестве буфера используется 74HCU04 (возможно, что будет также работать и 74HC04), и счетчик 74HC4060 делит частоту VCO на 128. Этот сигнал приходит на схему PLL.

DDS AVR pa2ohh sch VCO

[PLL]

Первый вариант реализации PLL имел систему выборки, чтобы обеспечить быструю петлю управления VCO (вариант старой версии можно посмотреть по ссылке http://www.qsl.net/pa2ohh/03dds1.htm). Однако быстрая петля обратной связи не требуется, нам нужно специальная петля обратной связи для подавления паразитных сигналов. Для этой цели лучше подходит обычная схема детектора частоты/фазы на основе сохранения заряда, и у неё нет недостатка захвата частоты на гармониках. Это может также работать и на много более высоких частотах DDS, чем используется в нашей системе. На более высокой выходной частоте DDS получается ускоренный цикл управления, на котором меньше сигналы помех.

DDS AVR pa2ohh sch PLL

Частотно-фазовый детектор собран на RS-триггерах. Была идея использовать микросхему фазового детектора 74HCT9046, но она больше недоступна. По этой причине было принято решение реализовать детектор на обычных, широко доступных компонентах. Другое достоинство такого решения - есть доступ к компонентам, которые обычно недоступны. Например, можно запретить схему накачки заряда в определенных подпрограммах, когда искажается выходной сигнал DDS.

Как работает схема PLL. На трех транзисторах Q1, Q2 и Q3 реализован компаратор. База Q2 подключена к среднему постоянному напряжению схемы DDS (усредняется резистором 10 кОм и конденсатором 0.1 мкФ).

Прямоугольный выходной сигнал компаратора приходит на тактовый вход D-триггера U1A. Его входы снабжены схемой гистерезиса, поэтому не требуется подавать строго прямоугольный сигнал. Сигнал выходной частоты VCO (поделенной на 128) подключается к тактовому входу второго D-триггера U1B. Когда на обоих выходах D-триггеров находится лог. 1, они сбрасываются схемой монтажного "И", собранной на диодах 1N4148.

Когда произошел "захват" частоты (т. е. когда генератор VCO и DDS работают синхронно), D-триггеры и схема монтажного "И" работают как фазовый детектор, а когда захвата частоты нет, они работают как частотный детектор.

Выходы триггеров управляют двумя источниками тока Q5 и Q6, которые заряжают накопительный конденсатор 0.1 мкФ. Источники тока вместе с этим конденсатором также эффективно подавляют все сигналы помех. Ток устанавливается резисторами 8.2 кОм. Падение на этих резисторах составляет 1V, выходное напряжение управления для VCO меняется в диапазоне приблизительно от 1.5V до 10.5V.

Фильтр петли обратной связи PLL собран на двух транзисторах Q7 и Q8, которые заботятся о процедуре быстрого захвата, когда VCO слишком далеко отстроен от рабочей частоты.

Q9 и Q10 работают как схема запрета накопительной емкости. PLL запрещается определенными подпрограммами, когда выход DDS прерывается.

DDS AVR pa2ohh interior

[Программа для AT90S1200]

Тактовая частота 11999.55 кГц. Одна прокрутка подпрограммы DDS занимает 13 машинных циклов AVR, что дает тактовую частоту 923.04225 кГц. Регистр аккумулятора DDS (DDS Accumulator Register) имеет длину 4 байта: 256*256*256*256 = 4294967296. Слово настройки частоты (Frequency Tuning Word) также состоит из 4 байт.

Выходная частота DDS равна (923.04225 kHz * Frequency Tuning Word) / 4294967296, частота PLL в 128 раз выше. Значение Frequency Tuning Word меняется кнопками изменения частоты вверх/вниз. Например, изменение Frequency Tuning Word на 36352 приведет к изменению точно на 1 кГц. Число 36352 равно 64x568. Таким образом, самый малый шаг перестройки 568, что дает изменение частоты на 15.625 Гц.

Если изменено значение Frequency Tuning Word, цифры дисплея также изменятся соответствующим образом. Для каждой из цифр частоты зарезервировано по одному регистру. Однако самый младший байт такого регистра меняется не от 0 до 9, а от 0 до 64. Если при перестройке частоты вверх младший байт превысит 63, или при перестройке частоты вниз он равен 0, то все другие значения десятичных цифр изменятся. Такой метод изменения цифр разработан для того, чтобы все подпрограммы отрабатывали за строго одинаковое количество машинных тактов AVR, независимо от того, что происходит. Если нажата кнопка, то тактовая частота DDS переключается на 1/8 от своей нормальной тактовой частоты 923 кГц, и Frequency Tuning Word умножается на 8. Однако было очень трудно точно учесть все машинные такты, так что автор провел много времени за ручной коррекцией длительности тактов заряда накопительного конденсатора (правкой кода и вставкой команд NOP), измеряя их с помощью осциллографа и прослушивая качество приема эфира.

Смещение частоты (учитывающее частоту ПЧ) программируется установкой начального значения для Frequency Tuning Word и регистров десятичных цифр. По ссылке [3] можно загрузить архив 04dds1soft.zip, где находятся модули исходного кода ассемблера (файлы .ASM), которые нужны для программирования AT90S1200.

[Полученные результаты]

VFO в диапазоне 5 .. 5.5 МГц для TS520. Позже был добавлен тумблер для подключения конденсатора 120 пФ параллельно варикапу VC, чтобы можно было получить перекрытие по частотам 5 .. 5.5 МГц. Автор использовал этот VFO совместно со старым трансивером TS520SE, и стабильность частоты получилась лучше, чем у внутреннего VFO, достаточная для приема PSK31.

DDS AVR pa2ohh VFO for TS520

VFO приемника прямого преобразования. DDS PLL использовался в качестве VFO для простого приемника прямого преобразования, который был подключен к звуковой карте компьютера PC. Стабильность частоты была очень хорошей для декодирования различных цифровых сигналов с помощью свободно доступных программ. При запрете PLL в подпрограммах микроконтроллера, когда тактовая частота снижалась, система PLL могла работать на высоких выходных частотах DDS без нарушения качества. При этом в звуковом диапазоне получается мало помех. Если помехи и появляются, то при отстройке на 30 Гц вверх или вниз полностью исчезают.

DDS AVR pa2ohh VFO for Direct Conversion receiver

[Оценка качества спектра]

DDS AVR pa2ohh RF signal without disabling PLL DDS AVR pa2ohh RF signal with disabling PLL
Сигнал RF без запрета PLL во время активности подпрограмм, когда DDS работает на 1/8 от нормальной тактовой частоты. Сигнал RF с запретом PLL на 255 мкс.

Использование микроконтроллера в качестве DDS очень интересная идея, хорошая для некоторых экспериментов в будущем.

[DDS от PA0KLT]

Оригинальная разработка DDS [2] от Ton PA0KLT (PA0KLT@amsat.org) имела 8-битный DAC и синусоидальный выходной сигнал, тактовая частота была выше, и использовалась другая система PLL. Вместо трех кнопок настройка осуществлялась удобным поворотным энкодером, и была реализована возможность установки минимальной и максимальной частоты, имелась память частот, и скорость настройки полностью программировалась. В качестве микроконтроллера DDS использовался AT90S2313, который имеет больше возможностей, чем AT90S1200.

DDS AVR pa0klt sch AT90S2313

Другое достоинство разработки PA0KLT в том, что его DDS работал на половине тактовой частоты, и не было снижения частоты в 8 раз во время работы определенных подпрограмм.

К сожалению, исходного кода своего проекта PA0KLT не предоставил, доступна только прошивка в HEX-формате (см. [3]).

[Словарик]

DAC Digital to Analog Converter, цифро-аналоговый преобразователь (ЦАП).

LED Light Emitting Diode, светодиод. В данном случае термин относится к цифровому светодиодному 7-сегментному индикатору.

PLL Phase-Locked Loop, фазовая автоподстройка частоты.

QRP любительская радиосвязь на малой мощности передатчика (подробнее см. Википедию).

RF Radio Frequency, радиочастота.

VCO Voltage Controlled Oscillator, генератор, частота которого управляется напряжением.

[Ссылки]

1. EXPERIMENTAL DIRECT DIGITAL SYNTHESIS BASED ON A MICROCONTROLLER AND PHASE LOCKED LOOP site:qsl.net.
2. QRP-AFSTEMSYSTEEM met microcontroller als DDS door PAÆKLT site:pa0klt.nl.
3180615DDS-AVR.zip - оригинальная документация, прошивки и исходный код (последнее есть только для проекта PA2OHH).

 

Добавить комментарий


Защитный код
Обновить

Top of Page