Antonio Munoz
В свое время нами был создан портативный генератор сигналов низкой частоты диапазона 0 … 1 МГц. Генератор имел широкий диапазон выходных напряжений (0 … 100 В п-п) и среднюю нагрузочную способность (500 мА).
Позднее потребовался прибор аналогичной конструкции, с дополнительной функцией генерации сигналов произвольной формы. К новому генератору предъявлялись достаточно скромные требования (1 Мвыб/с, разрешение 10 бит), поэтому было решено использовать схемное решение первоначальной разработки, лишь слегка усовершенствовав его. Ниже мы расскажем, как это можно сделать.
В оригинальном генераторе использовалась микросхема прямого цифрового синтеза (Direct Digital Synthesis – DDS) AD9833, управлявшаяся микроконтроллером PIC24FJ16. Для воспроизведения сигналов произвольной формы мы задействовали регистры частоты и сдвига фаз микросхемы DDS.
Программно конфигурируемые мультиплексоры микросхемы DDS позволяют исключить таблицу SIN/ROM из процесса формирования сигнала (см. рисунок) и подключить сумматор фазовых сдвигов (аккумулятор фазы + регистр сдвига фаз 0/1) напрямую ко входу цифро-аналогового преобразователя (ЦАП).
![]() Кликните для увеличения |
Отключив таблицу значений синуса, обнулив аккумулятор фазы и используя регистр сдвига фаз в качестве входа для записи мгновенных значений сигнала, на микросхеме прямого цифрового синтеза можно сделать генератор сигналов произвольной формы. |
Надписи на рисунке | |
FREQ0 REG
|
Регистр частоты 0
|
FREQ1 REG
|
Регистр частоты 1
|
Multiplexer
|
Мультиплексор
|
Serial Interface and control logic
|
Последовательный интерфейс и логика управления
|
Regulator
|
Стабилизатор напряжения
|
PHASE0 REG
|
Регистр сдвига фаз 0
|
PHASE1 REG
|
Регистр сдвига фаз 1
|
Control register
|
Регистр управления
|
Phase accumulator (28 bits)
|
Аккумулятор фазы (28 бит)
|
SIN ROM
|
ПЗУ с таблицей значений синуса
|
Divide by 2
|
Делитель на 2
|
On-board reference
|
Внутренний источник опорного напряжения
|
Full-scale control
|
Управление масштабом выходного напряжения
|
10-bit DAC
|
10-разрядный ЦАП
|
Аккумулятор фазы можно обнулить программным сбросом и последующей загрузкой нулевого значения в соответствующий регистр частоты. При этом код на входе ЦАП будет равен содержимому выбранного регистра сдвига фаз. Таким образом, регистр сдвига фаз становится входом сигналов произвольной формы.
Однако, для практического использования генератора сигналов, необходимо равномерное во времени обновление содержимого регистра сдвига фаз, а, по сути, поддержание постоянной скорости выборки ЦАП. Мы добились этой равномерности использованием того факта, что данные в регистр передаются последовательно, словами по 16 бит. При низком уровне на входе FSYNC, AD9833 постоянно обновляет регистры (первые четыре бита определяют адрес регистра), и, таким образом, через каждые 16 синхроимпульсов в регистр сдвига фаз заносится новое значение.
Таким образом, после очистки аккумулятора фазы, инициализации регистра частоты нулем и подачи низкого логического уровня на вход FSYNC, посылка непрерывного потока данных в регистр сдвига фаз превращает выход микросхемы DDS в источник сигналов произвольной формы с эквивалентной частотой выборки, напрямую связанной с частотой синхронизации SPI. Частота дискретизации равна:
Sps = SCLK_FREQ / 16
где
SCLK_FREQ – тактовая частота SPI на выводе SCLK
16 – соответствует числу бит в командном слове.
Так, например, при тактовой частоте SPI 12.5 МГц, частота выборки будет равна 0.7812 Мвыб/с. На практике несложно получить частоту выше 1 Мвыб/с.
Необходимо отметить еще несколько моментов. Во-первых, регистры сдвига фаз имеют длину 12 разрядов, а разрядность ЦАП – 10, что при генерации сигналов произвольной формы делает два младших разряда регистров ненужными.
Во-вторых, регистр сдвига фазы необходимо загружать двумя дополнительными значениями. И, наконец, тактовая частота интерфейса SPI должна быть связана с синхронизирующей загрузку регистров частотой MCLK микросхемы DDS. В противном случае, возможно появление небольшого джиттера выходного сигнала.