────────────────────────────────────────
ЦАП: метод динамического
разделения каналов
────────────────────────────────────────
(c)VTS'98-99
Не знаю, как ЭТО называется по-научно-
му, и называется ли вообще ;). А я буду
называть сей способ Методом Динамического
Разделения Каналов (МДРК), благо придумал
я его самостоятельно.
Итак, сейчас я расскажу как с одного
ЦАП'а вытащить побольше каналов.
┌────┐ ┌────┐ ┌────┐
│RG >│ │ЦАП>│ │ │ │ ─┼──── A
D ═╡ ╞════╡ ├─┤ >─┐│ │ ─┼──── B
0-7═╡8bit╞════╡8bit│ │/ ││ │ ─┼──── C
│ │ │ │ ││ ┼ ─┼──── D
A ├────┤ └────┘ └┼─┘ │
0-1═╡2bit╞═══╗ ├────┤
└─┬──┘ ╚════════════╡ADR │
WR │ 2-5M └────┘
ЦАП───┘ ┌─══─┐
│ │ ──┐
2-5M ││ │ ┤ и так
A(BCD)──┬─══──┴o >─┴──>A(BCD) ┤
╪ ┌┤/ высокооммый ┤ 4 раза
┴ ┴ усилитель ┤
запоминающий ┤(A,B,C,D)
конденсатор ──┘
Итак, обычно на каждом канале стоит
свой запоминающий цифровой регистр, далее
ЦАП и выход канала. Но можно сделать иначе
- перенести запоминающий элемент в анало-
говую часть, где он представляет из себя
простой конденсатор. При этом понадобится
только один регистр, один ЦАП, аналоговый
ключ (аналог вывода стробирования у ре-
гистра) на каждом канале и сам конденса-
тор. Но тут есть свои проблемы. Во-первых,
за счет утечки будет происходить разрядка
конденсатора. Поэтому он должен иметь ка-
чественный диэлектрик и подключаться к вы-
сокоомному усилителю. Кроме того, нужна
регенерация. Во-вторых, инерционность кон-
денсатора проявлятся не только при разря-
де, но и при заряде. Т.е. нужно обеспечить
min сопротивление цепи заряда - в первую
очередь это касается аналоговых ключей. А
чтобы увеличить время заряда, будем ис-
пользовать не длительность строба записи в
порт (iorq,wr), как для цифрового регист-
ра, а весь промежуток между командами OUT
в канал. Для этих целей необходимо на вхо-
де защелкивать данные для ЦАП и адрес ка-
нала, которому эти данные предназначаются.
А теперь опустимся на грешную землю и
немного посчитаем.
Итак, сопротивление цепи заряда - по-
рядка 250 Ом (питание ключей 10-15v), min
время заряда t1. Сопротивление утечки при-
мем 5 МОм, время разряда t2. Емкость кон-
денсатора C. Погрешность установки напря-
жений - 3% (фактически - max возможный
уровень шума от метода ДМРК).
Формула заряда конденсатора:
U = E*(1-e^(-t/т)) (1)
Формула разряда:
U = Uo*e^(-t/т) (2)
где U - напряжение на конденсаторе,
E - ЭДС источника тока,
Uo - начальное напряжение на конденса-
торе,
e=2.718... - основание натуральных ло-
гарифмов,
т=RC - постоянная времени,
t - время заряда (разряда) - аргумент
функциии.
Отсюда имеем следующее:
Для заряда:
т = t/(-ln Q) (3)
Для разряда:
т = t/(-ln(1-Q)) (4)
где t - время заряда (разряда),
Q - погрешность установки (сохранения)
напряжения.
имеем:
т1 = R1*C = 250*C ;заряд
т2 = R2*C = 5e+6 *C ;разряд
т2/т1 = R2*C/R1*C = R2/R1 = 20000
Q=0.03
-ln Q = -lnO.03 = 3.5
-ln(1-Q) = -lnO.97 = 0.03
можно также записать:
т2/т1 = (t2/0.03)/(t1/3.5) =
= (t2/t1)*117
но т2/т1 = 20000:
t2/t1 = 20000/117 = 171
т.е. для нормальной работы с указанной
погрешностью и указанными сопротивлениями
заряда/разряда, время разряда должно быть
в 171 раза больше времени заряда.
Зададимся конкретными значениями.
Итак, min время заряда равно времени между
двумя подряд идущими командами OUT, т.е.
11 тактов CPU. В турбе 7 МГц, в худшем
случае, с коротким IORQ, это время равно
11*0.14 = 1.5Чмкс. Тогда max время разря-
да, т.е. период регенерации будет равен
1.54*171 = 263 мкс, отсюда min частота ре-
генерации 3.8кГц. В случае digital sound
это и есть min частота дискретизации.
Реально время заряда будет больше (за-
чем ставить подряд OUT'ы ?), а период ре-
генерации - меньше (для сэмплов на 8кГц -
12Smkc). Это позволяет уменьшить Q, т.е.
улучшить качество.
Для расчета емкости нужно посчитать т1
либо т2.
Например, из формулы (3):
т1 = t1/(-ln Q) = 1.54/3.5 = 0.ЧЧмкс,
т.е. 4.4e-7 сек. Отсюда:
C = т1/R1 = 4.4e-7/250 = 1.76e-9 Ф,
т.е. 1760 пФ...
p.s.: Есть, онако, способ свести шу-
мы этого метода практически на нет. Я
пока не буду рассказывать, может кто сам
догадается ;) Схемка будет, конечно,
сложнее, однако все равно проще класси-
ческой.
Other articles: