Как сделать самый "интересный" узел 1х DAC

Часть II-ая. И не последняя :)))

 

Итак в первой части я рассмотрел как "привязать" мультибитные ЦАПы с последовательной загрузкой данных к популярному ресиверу CS8412\14 посредством прерывания тактовой частоты загрузки данных в регистр ЦАПа.

К сожалению не все м\с ЦАП допускают использование такого способа. Да и не всем хорош такой способ. Например, отказались работать с прерыванием тактовой такие прекрасные  м\с, как PCM1704. Слишком уж требовательны оказались они к временным соотношениям сигналов на своих входах. Поэтому я публикую самый правильный способ соединения:

Способ второй: "сдвиговый регистр".

Пусть имеем: приемник цифрового потока CS8412(14)  и пару м\с цап PCM56. У 8412(14) имеем три "ноги" SCK, FSYNC, SDATA. У PCM56 три "ноги": BCK, LE, DATA.

Начинаем с м\с ЦАП - данные отсчета  (DATA) загружаются во внутренний регистр ЦАП по тактам BCK, после того как данные будут загружены в этот регистр, перепад уровня на "ноге" управления обновлением ЦАП (LE) заставит ЦАП выдать ток на аналоговом выходе, соотвествующий цифровому отсчету и удерживать его до следующего обновления.

Ниже приведена диаграмма выходных сигналов ресивера CS8412 в режиме "5":

Первым следуют данные левого канала, затем правого. В каждом полупериоде сигнала FSYNC умещается 32 периода сигнала SCK. Данные смещены к правой части полупериодов FSYNC (Right-Justified).

Мы знаем (из даташита) что данные грузятся в регистр м\с цап по положительному перепаду сигнала CLK (он же SCK). Также мы видим, что обновление (Latch) м\с цап мы должны производить перепадом от высокого уровня к низкому ("отрицательный" перепад) сигнала LE (Latch Enable) после загрузки данных левого и правого каналов.

Исходя из вышеперечисленного формулируем задачу:

Решение:

Выбираем регистр сдвига, тонкости.

Первое, о чем надо помнить, это то, что данные должны загружаться и выгружаться из регистра по положительному перепаду сигнала SCK, также как и у внутреннего регистра цап. Второе - быстродействие регистра должно быть не ниже 64Fs, а лучше больше раза в три-четыре.

Готового на 32-разряда я не нашел. Чаще всего под рукой оказываются 8-разрядные сдвиговые регистры. У меня, например, были 74HC595, работающие вплоть до частот 100Мгц, хотя можно сделать и на 299-х регистрах. Надобно таких регистров 4 шт. (4х8=32).

В качестве буферных элементов применена м\с 74HC86. Ее назначение - "разгрузить"выходы ресивера, а также при необходимости легко заставить ее инвертировать проходящий сигнал.

Ну вот и собственно сама схема:

 

Сигналы обозначены так, как они обычно обозначаются на готовых схемах цап с циф. фильтрами. Вот собственно и все. Творите!

А в третьей части я расскажу как сделать этот узел цап без цифрового фильтра если источником цифровых сигналов выступает шина I2S. Но не пугайтесь! 30-40 корпусов логики или какой-нибудь заказной ИС там не будет. Все гораздо проще :)))