20.1. ЦАП



ЦАП

Def === ЦАП (Цифрово-аналоговый преобразователь) [DAC (Digital-Analog converter)] - устройство, которое преобразует входной цифровой сигнал в аналоговую форму (напряжение). Типы DAC / \ R-2^NR R/2R binary-weighted stairstep input лестничного с весовыми типа регистрами Изображение DAC (ANSI):


ЦАП на весовых регистрах

Принципиальная схема DAC 4-бита на весовых регистрах:

Идея: цифровые сигналы ослябляются в пропорциональное весу разряда число раз, затем суммируются суммирующем ОУ. Недостатки DAC на весовых регистрах: Очень трудно сделать пропорциональные резисторы (особенно внутри микросхемы). Результат: 1% ошибки у 7 бита = 2% ошибки у 6 = 256% ошибки у нулевого.


ЦАП лестничного типа

Принципиальная схема DAC лестничного типа (на 4 бита):

Основная идея ЦАП: Базовое входное напряжение Vref делится на резисторах R (на каждом вдвое). Затем каждый каскад ключем соединяется с выходом (нарисованы обычные переключатели для простоты схемы, понятно что в реальном оборудовании ключи электронные). Подключенные напряжения на выходе суммируются и проходят через операционный усилитель. Резисторы R и 2R сделать внутри микросхемы гораздо проще. Кроме того высококачественные ЦАП доводят до кондиции корректируя эти резисторы на подложке с помощью лазера.


ЦАП интегрирующего типа

Еще существует ЦАП интегрирующего типа [Timed Integrator DAC] Его основная идея - значение выводится на счетчик который на время пропорциональное значению открывает вход который заряжает конденцатор при операционном усилителе. ЦАП интегрирующего типа

Временая диаграмма работы ЦАП интегрирующего типа:


Ошибки и характеристики ЦАП

Разрешающая способность Точность Погрешность смещения нуля Время установки сигнала Монотонность Ошибки DAC:






Модель DAC на Verilog-AMS: // N-bit Digital to Analog Converter `include "disciplines.vams" module dac (out, in, clk); parameter integer bits = 8 from [1:24]; // resolution (bits) parameter real fullscale = 1.0; // output range is from 0 to fullscale (V) parameter real td = 0; // delay from clock edge to output (s) parameter real tt = 0; // transition time of output (s) parameter real vdd = 5.0; // voltage level of logic 1 (V) parameter real thresh = vdd/2; // logic threshold level (V) parameter integer dir = 1 from [-1:1] exclude 0; // 1 for rising edges, -1 for falling output out; input clk; input [0:bits-1] in; voltage out, clk; voltage [0:bits-1] in; real aout; integer weight; genvar i; analog begin @(cross(V(clk) - thresh, dir) or initial_step) begin aout = 0; weight = 2; for (i = bits - 1; i >= 0; i = i - 1 ) begin if (V(in[i]) > thresh) begin aout = aout + fullscale/weight; end weight = weight*2; end end V(out) <+ transition(aout, td, tt); end endmodule


Index Prev Next