Когда кто-то замечает, что два 8-битных ЦАП можно купить дешевле, чем один 16-битный, часто задается классический вопрос: «Почему бы просто не взять два 8-битных ЦАП, связать один из них со старшим значащим байтом (MSBy), другой – с младшим значащим байтом (LSBy), суммировать их выходы в соотношении 28:1 и по дешевке получить 16-битное разрешение (или близкое к нему)?» Столь же классический (но разочаровывающий) ответ таков: «Ну, вы можете попробовать, но результат, скорее всего, вам не понравится». Это предсказание обычно сбывается в основном из-за двух факторов:
#1 – плохой дифференциальной нелинейности (differential nonlinearity, DNL),
#2 – разброса параметров типичных 8-битных ЦАП.
DNL ЦАП классической архитектуры с «лестницей резисторов», представленная на Рисунке 1, редко бывает намного лучше 1/2 LSB (единицы младшего значащего разряда), что достаточно хорошо для гарантии монотонности, но и только.
Рисунок 1. | Типичная дифференциальная нелинейность классических ЦАП на основе лестничной резистивной матрицы. |
Следовательно, при объединении двух таких «классических» ЦАП может произойти лишь очень незначительное улучшение полезного разрешения. К счастью, есть альтернатива. DNL ЦАП с «цепочкой резисторов» намного лучше, как видно из Рисунка 2.
Рисунок 2. | Типичная дифференциальная нелинейность ЦАП на основе цепочки резисторов (например, TLV5624). |
Итак, если выбрана правильная архитектура ЦАП, есть ли, в конце концов, надежда на наш план экономии денег?
К сожалению, проблема #2 – проблема разброса параметров – остается нерешенной. Просто нельзя ожидать, что выходные масштабные коэффициенты двух 8-битных ЦАП будут совпадать и в сумме давать результат, значительно более хороший, чем требуется для 8-битной точности, – явно недостаточной для нашего приложения с расширенным разрешением. Однако, а что если бы оба байта 16-битного входного числа могли быть преобразованы одним и тем же ЦАП? Есть все основания ожидать, что параметры одного ЦАП будут точно совпадать сами с собой!
В недавней статье [1] показано, как это можно сделать (т.е. заставить один ЦАП выполнять двойную работу). В ней же объяснялась концепция декодера Шеннона (см. Рисунок 3). В декодере используется (что эффективно) 1-битный ЦАП для выполнения многобитового цифро-аналогового преобразования путем динамического суммирования последовательных преобразований на простой RC-цепочке с постоянной времени T/ln(2).
Рисунок 3. | ЦАП на основе декодера Шеннона. (LSB – младший значащий бит, MSB – старший значащий бит). |
Хитрость, которая может быть здесь полезна, заключается в том, что принцип декодера Шеннона не ограничивается работой с 1-битными ЦАП. Если вместо постоянной времени RC = T/ln(21) сделать константу равной T/ln(28), то можно получить 8-битный ЦАП. Это сделано на Рисунке 4.
Рисунок 4. | Применение принципа декодера Шеннона для увеличения разрешения 8-битного ЦАП. |
U1 – это 8-разрядный ЦАП с выходом по напряжению на основе цепочки резисторов (например, TLV5624), управляемый стандартным последовательным интерфейсом SPI. Кроме того, используется отдельный управляющий сигнал CNV (Convert/Hold – преобразование/хранение).
Каждый цикл преобразования длится 2TBY = 40 мкс (для частоты обновления 25 кГц), как показано на Рисунке 5.
Рисунок 5. | Последовательность преобразования Шеннона. |
Цикл начинается с загрузки LSBy 16-битного преобразуемого числа. Одновременная подача сигналов FS (Frame Sync, синхронизация кадров) и CNV выводит значение LSBy и переключает U2 в такое положение, при котором резистор R1 подключается к конденсатору C1, образуя постоянную времени суммирования Шеннона, равную
Следовательно, по истечении 20-микросекундного интервала TBY конденсатор C1 зарядится до напряжения
Пока это происходит, через интерфейс SPI загружается значение MSBy, так что при появлении второго импульса FS выводится значение MSBy и начинается процесс его накопления, определяемый постоянной времени R1C1, в то время как ранее накопленное значение LSBy удаляется.
После второго 20-микросекундного интервала TBY
что является конечным 16-битным результатом, и цикл преобразования завершается.
Теперь возвращается низкий уровень сигнала CNV, в результате чего происходит выборка напряжения VC1 и передача его на конденсатор C2 через буфер с единичным усилением U3, где оно хранится до обновления последующими циклами преобразования.