DDS - функциональный генератор с "джамперным" управлением на ПЛМ.

Вашему вниманию предлагается функциональный генератор, разработанный в качестве примера использования технологии DDS (Direct Digital Synthesizer) на базе ПЛМ EPM3064ALC44-10 фирмы Altera (стоимость ПЛМ - около 2$). Параметры прибора следующие:

Возможные вариации (при изменении набора функций и/или применении ПЛМ большего объема/быстродействия):


Рис. 1  
Фотография макета генератора (ЦАП из SMD-резисторов размещен на обратной стороне платы)



     

Рис. 2
Сигналы различной формы (частота 1.5 кГц) на экране осциллографа

 

Рис. 3
Схема генератора

Напряжение питания стабилизируется микросхемой 78L03. Двухрядный 10-контактный разъем предназначен для подключения программатора ByteBlaster. Режим работы и частота задаются джамперами. В качестве опорного генератора используется кварцевый генератор (частота 25 МГц). 6-разрядный резисторный ЦАП собран по классической схеме R-2R, на выходе которого необходимо установить ФНЧ (схема которого определяется требованиями к чистоте спектра сигнала) .

Рис. 4
Функциональная схема цифровой части генератора (то, что находится внутри ПЛМ)

22-разрядный сумматор adder вычисляет сумму входного вектора in[21..0] (из них 19 разрядов выведены на джамперы, на остальные 2 подается логический "0") и содержимого регистра reg. Входной сигнал iclk, частота которого поделена на 2 триггером, защелкивает очередную сумму sum[21..0] в регистре. Таблица functab7x6 формирует 6-разрядный выходной код dac[5..0] (подаваемый на ЦАП) из входного, подключенного к 7 старшим разрядам q[21..15] регистра. Входы sinsaw и square выбирают форму синтезируемого сигнала: синусоидальный, треугольный или прямоугольные импульсы.

Приведенная выше схема нарисована в графическом редакторе системы MAX+PLUS, а ее функциональные элементы реализованы на языке программирования AHDL.

ВременнОй анализ схемы в системе MAX+PLUS (Registered Performance) показывает, что для применяемой микросхемы EPM3064ALC44-10 внутрисхемные временные задержки (в основном, в сумматоре) могут составить примерно 90 нс. Это ограничивает тактовую частоту схемы на уровне примерно 11 МГц. В описанной схеме эта частота составляет 12.5 МГц, что несколько выше допустимой, однако схема работает нормально.

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

K  =  F*(2^22)/(25000000/2)  ≈  F*0.33554432,

здесь F - необходимая частота в Гц, 22 - разрядность сумматора, 25000000 - частота генератора, Гц.

Для частоты 1 кГц, получим K = 335.54432  ≈ 336 или 1010100002 в двоичной форме.

По обратной формуле

F  =  K*(25000000/2)/(2^22)  =  K*2.9802322

вычислим точное значение частоты для коэффициента K=336:  F=336*2.9802322=1001.3580322 Гц.

Максимальная генерируемая частота: Fmax = 11111111111111111112 * 2.9802322 ≈ 1.562497 МГц. Если 3 старших разряда in[21..19] сумматора (см. рис. 4) также вывести на джамперы, эта частота составит 6.25 МГц.

Рис. 5
Спектрограмма синусоидального сигнала с частотой 1.5 кГц (программа SpectraLab). Испытания показывают, что уровень самой сильной гармоники для низкочастотного синусоидального сигнала составляет около -50 дБ.


Комплект схем и программ для MAX+PLUS:

    ddsfunc1.zip

Источники:

  1. Murray Greenman, ZL1BPU. A Sine/Noise/Pulse and Sweep Generator.

  2. ПЛМ фирмы Altera. www.altera.com

  3. А.П. Антонов. Язык описания цифровых устройств AlteraHDL. Практический курс. -М.:ИП РадиоСофт, 2002.

Денис Нечитайлов (UU9JDR, uu9jdr@qsl.net)