Когда берешься за изготовление очередного устройства, всегда задаешься вопросом – где и как оно планируется к использованию?
Как то я притащился на дачу, в надежде вечерком раскачать мои старые АС, и при этом не слышать витиеватых высказываний соседей в свой адрес, но планы мои были порушены в корне. В пылу сборов я не заметил, что ЦАП то я с собой взял, но без шнура I2S. Зато на компе имелся выход SPDIF, был даже шнур SPDIF, но у ЦАП не было такого входа.
Сетевое оборудование конструкцией не было предусмотрено, поэтому даже старенького патчкорда не нашлось… Ну что за идиотизм, подумалось мне? Сам же создал это чудище, и сам не могу его использовать в любом месте! Надо подумать над созданием чего-то универсального по входам и выходам.
Первый мой удачный проект был логическим продолжением описанного на Датагоре ЦАПа на PCM58 и PCM63.
Даже большая часть узлов и кусков разводки платы была перенесена в новое железо.
Содержание статьи / Table Of Contents
Ресивер DIR9001 не позволял работать от SPDIF с форматом выше 24х96, и то, спотыкаясь через раз.
Хотелось бы расширить диапазон используемых форматов.
К тому же, давно и продуктивно, у меня на полке пылились несколько моих ранних «поделок», одну из которых было решено разобрать и пустить в дело.
↑ Техническое задание было простое, как табурет:
1. Поддержка входных форматов до 24 бит 192 кГц, включительно.
2. Работа с источниками SPDIF, I2S.
3. При работе от источника I2S была возможность тактирования от внешнего и от внутреннего тактового генератора.
4. Простота коммутации входов.
5. Опционально – индикация частоты семплов.
От последнего пункта в процессе работы пришлось отказаться по ряду причин.
Сама по себе процедура индикации довольно проста, достаточно измерять частоту сигнала LRCK и выводить это на дисплей.
Но… надо дисплей, контроллер или частотомер на контроллере, отдельное питание для всего этого, возможно еще и экранирование и борьба с лишними шумами, которых и так хватает…
В общем, оно вроде как хочется, но особо и не надо.
Результат меня вполне устроил, но, к сожалению, в процессе работы я мало уделял внимание документированию всех своих шагов, схему не рисовал, поэтому описать это устройство я смогу только на словах.
↑ Схема
Но зато вторую версию я уже делал сознательно. Захотелось поэкспериментировать с разными ЦАП, но уже Delta-sigma архитектуры. Давно лежащая без применения на полке пара «старых» дельт добавляла оптимизма. Все-таки интересно, что получится.Архитектура железки выбиралась на ходу, отсекалось лишнее, добавлялось новое.
Итак. Планируется три входа, точнее четыре.
Исключён фрагмент. Полный вариант доступен меценатам и полноправным членам сообщества.
С выходов мультиплексоров сигналы поступают на вход ресемплера SRC4192. Это нужно, чтоб получить поддержку форматов до 24 бит 192 кГц при использовании ЦАП, не имеющих таковой или требующих ее принудительного включения.
Некоторый начальный опыт работы с ним я имею, поэтому ставлю не думая. После ресемплера сигнал поступает на ЦАП, причем, так как планируется использование PCM1794А в моно режиме, то на каждый канал сигналы дублируются.
ЦАП установлены на съемном модуле, чтоб можно было менять модуль с другим ЦАП за короткое время.
Выхлоп также съемный, можно использовать разные варианты. На плате размещены тактовые генераторы для MCLK. В процессе разводки платы добавлен делитель частоты отдельно для SRC и ЦАП.
Как оказалось, не зря.
Схема основной платы выше, а вот схема модуля SPDIF.
Исключён фрагмент. Полный вариант доступен меценатам и полноправным членам сообщества.
В качестве приемника применен AK4113. Причины его выбора вполне логичны.
Он был у меня. У него поддержка 24х192.
↑ Далее модули I2S:
Исключён фрагмент. Полный вариант доступен меценатам и полноправным членам сообщества.
В обычном I2S модуле я применил IL715. Она по цоколевке такая же как Adum1400, но менее подвержена помехам на длинном патчкорде. Я не знаю, с чем это связано, но что IL715 оказалась стабильнее Adum14хх – факт.
Сервисные сигналы от источника и к источнику изначально планировались как на схеме.
Adum1401C имеет четыре канала: три в одну сторону, один в другую. Грубо говоря, три входа и один выход.
Выход используется для передачи клока на источник из ЦАП, но так как по этому же интерфейсу надо передавать клок и от источника в режиме «slave», то одного канала не хватает, поэтому для передачи самого низкочастотного сигнала LRCK использован один канал Adum1400A, которая может передавать данные от DC до 1 мГц.
Вообще сервисные сигналы проще передавать через оптопары, там статика кругом, но так как у меня были уже Adum1400А – я их и запихал…
Вообще то, история появления у меня развязок Adum1400 с индексом А довольно тривиальна. Мне ж было лень читать даташит.
Я ж на картинку поглядел. И на ценник. Индекс «А» – сильно дешевле. Ну я и пожадничал…
А когда уже заказал, то червячок сомнений начал меня покусывать. Глянул ТТХ – и понял, что сам себя наказал… Кроме LRCK я ничего через них не протащу. Так и оказалось…
Но зато нашлось им применение как передатчики логического уровня.
«Внешняя» сторона развязок запитана от малогабаритного DC\DC конвертера F0505M-1W фирмы Mornsun. Удобная вещь. Вот они, черные «кирпичики» на платах.
А вот вид снизу.
Тут справа видно «сопли», которые я ваял уже после сборки. История такова, что от Adum1401 в результате пришлось отказаться.
Или из-за брака, или из-за моих кривых рук, у них нестабильно работал канал передачи MCLK на выход. То есть на вход все отлично, а на выход через раз и то после прогрева через несколько минут.
В результате пришлось переделывать ПП и ставить на выход отдельную Adum1100.
Но это еще не все.
Я говорил выше, что один из сигналов, сигнал LRCK, у меня был заведен через развязку с индексом А. Так вот, схема оказалась неработоспособна выше 24Ч96.
Треск, выпадения и прочее.
Грешил на «полуживую» Adum1401C, запаял вместо нее проверенную IL715 – такая же история! Осцилл кажет сигнал, а ЦАП не поеть!
Но у меня в IL715 остался неиспользованный канал, и пришлось LRCK переносить на него.
Тогда все запело. Разводку исправил, но плату переделывать не стал. Видимо задержки переключения у разных индексов Adum разные, поэтому и шли сбои.
Модули крепятся на основную плату с помощью стоек. Тут важна прочность, чтоб от передергивания входных разъемов не погнуть штыри.
Снизу, под платой, размещены мультиплексоры sn74lvc1g125.
Они удобны тем, что разводка платы сильно упрощается. На каждую линию данных отдельный корпус.
Я представил себе, как бы я разводил плату под 74АС125 – ужас…
Выбранный мультиплексором цифровой поток идет на ресемплер SRC4192.
Эта штучка интересна тем, что ей все пофиг. Да, формулировка именно такая. Она подорвала мои представления о принципах работы ЦАП.
Она способна работать с тактовой частотой до 50 мгц (реально пробовал на 40), причем никак не кратной сетке 44000 или 48000.
Отконфигурировав ее выходной порт как мастер, ее можно кормить любым форматом данных вплоть до 24х192, при этом сетка на выходе будет неизменна и кратна тактовой частоте самой SRC! :yes: Естественно при этом сам ЦАП надо тактировать той же частотой, что и SRC или кратной ей.
Например, вот измеренные значения клоков для двух режимов, на вскидку:
Выходной порт мастер*256 fs
MCLK- 24.576 МГц
BCK – 6.144 Мгц
LRCK – 96.000 КГц
А вот для некратной сетки:
Выходной порт мастер*512 fs
MCLK/2 – 20.000 Мгц (используется делитель)
BCK – 5.000 Мгц
LRCK – 78.152 Кгц
То есть никак не пересекается с известными нам частотами семплов! ЦАП при этом работает как обычно. Вообще режимов там много и вариантов конфигураций тоже.
Если заглянуть в даташит любого ресивера, то можно обратить внимание, что от формата входных данных зависит тактовая частота, которую восстанавливает ресивер.
И если для 44.1 и 48 кгц при одинаковых настройках ресивера будет нормальная частота, например 22579200 Гц и 24576000 Гц, то для 176.2 и 192кГц мастеклока будет явно не хватать! Выход тут такой – или менять настройку PLL ресвера в зависимости от входного потока или… откзаться от MCLK вообще при работе от SPDIF!
Что в принципе я и сделал.
Если включить режим «SPDIF» на селекторе, то схема принудительно подключит генератор «не кратной” частоты.
А линию MCLK от AK4113 можно смело отрезать – она не нужна…
Если кто-то считает, что применение ресемплера портит звук – то может быть, спорить не буду. Я не заметил. Да и применяется он в изделиях далеко не последних фирм на рынке.
Распределением сеток частот рулит схема на рассыпной логике. Там применяются в разных сочетаниях sn74lvc1g125, sn74lvc1g126 и sn74lvc1g04.
125 от 126 отличается только уровнем сигнала разрешения работы, то есть 0 или 1. 04 – обычный инвертор, аналог 74АС04, но один на корпус.
Логика занята тем, что включает нужный генератор при работе от разных источников, меняет сетку частот по команде источника или селектора. В общем ПЛИС я пока не освоил – накидал на рассыпухе… Колхоз конечно – зато работает.
Между SRC и модулем ЦАП стоит защелка на 74AC573. Так как реклока тут нет, а выходы SRC4192 довольно слабенькие (сам проверил ценой одной штуки), то защелка является просто буфером…
↑ Модуль ЦАП
Две штуки PCM1794A, включенные в моно режим.Исключён фрагмент. Полный вариант доступен меценатам и полноправным членам сообщества.
Джамперы возле входных ОУ отключают конденсаторы в цепи ОС, чтоб можно было воткнуть ОУ с ТОС, например AD811, который не терпит никакой емкости в таком включении.
А вот сюда оно устанавливается.
Снизу, для экономии места, размещены стабилизаторы питания цифровой и аналоговой частей ЦАП, а также соединение цифровых и аналоговых земель через бусинку – тут их даже две! Для цифровой части ЦАП имеется выбор напряжения питания 3.3В и 5В, потому-то, как оказалось, у PCM1794 оно 3.3В, а, например, у AD1955 уже 5В…
Вот так оно выглядит, когда все установлено.
Слева на плате стабилизаторы питания ЦАП, индикатора, и контрольного усилителя для наушников.
Усилитель для наушников я не переделывал, тупо скопипастил с предыдущей версии.
Тот же BUF634+ОУ по даташиту. Ток 30 мА.
↑ Индикация
Это просто опция, красивая игрушка. Так как функционал у нее вторичный.В разобранном ЦАП стояли стрелочники, но как они работали, мне не нравилось.
А LB1412 кончились на предыдущей железке, и ждать, пока приедут другие – это возможно обречь новый ЦАП на длительное лежание на полке, откуда я его только что достал.
Обидно, досадно, поэтому прикрутим стрелки.
Как выяснилось, нормальных „показометров“ нет. К157ДА1 был плодом отечественной промышленности, и аналогов не имеет.
Интересно, что в импортных каталогах отсутствует полноценный драйвер для стрелочных индикаторов. Не ищите, „полноценного“, нормального, с логарифмической зависимостью нет. Если не использовать дефицитные логарифмические ОУ от AD.
Но это будет покруче К157ДА1.
И да. У меня есть К157ДА1. Но моя неспокойная жизнь научила меня тому, что компоненты „сделанные в СССР“ могут внезапно, случайно, беспричинно, скоропостижно прекратить работать. Это конечно не касается электровакуумных приборов для обороны и космоса. Но не более того. Все остальное, включая К157ДА1, может однажды утром просто не включиться.
Да, так было… Не раз… И не два.
Этот печальный факт мне даже когда то давал возможность безбедной жизни…
Но себе, и для себя?
Был рассмотрен оригинальный вариант показометра на контроллере от еще один max , я даже сбегал в местную „мечту телемастера“ за контроллерами, но неуверенный ответ продавца „кончились и когда будут не ясно“, на корню похоронил эту идею…
Поэтому я озадачился поиском нормальной схемы детектора. Ну как обычно. Ничего и нигде… Вполне ожидаемо…
Случайно была найдена схема, которая оказалось действительно хороша, разве что у меня не нашлось ни одного германиевого диода, пришлось ткнуть кремний, но и это оказалось очень хорошо. Схема зарисована внутри основной схемы.
Плата тоже получилась простой.
Этот «бутерброд» крепится на лицевую панель изнутри. Сверху показометр, снизу светодиоды режимов работы.
Когда все собрано в кучу, можно провести запуск, и немного послушать.
В принципе проблем с запуском не возникло, за исключением описанных выше проблем с развязками. Главное правильно выставить все режимы работы микросхем.
PCM1794 вообще дубовый автомат. Кушает, нет, жрет все, что ни дадут.
Причем что кормить ее полным клоком, что половинным, без разницы. На слух одинаково!
Но! Я же не зря делал модуль ЦАП съемным.
Давно у меня лежат парочка AD1955. Еще с тех времен, как я не наигрался с PCM2704.
Хотел я их запустить в двойное моно, но проблемы с конфигуратором и моя лень не давали им выбраться из коробочки и спеть мне что-нибудь…
Берем тряпочку, стираем пыль, и пробуем!
Так как, в отличие от PCM1794, у AD1955 шкала выходного тока не симметрична относительно нуля, да и само значение выходного тока немного ниже, то напрямую прикрутить AD1955 к выхлопу от PCM1794 нельзя. Или придется его допиливать или делать новый.
Я сделал новый. Даташитный.
Правда подпорки со входов i\u не влезли без серьезной доработки ПП, пришлось их колхозить снизу.
Да и плата ЦАП получилась покомпактнее.
Схему не рисовал – она есть в даташите.
Но зато 15 секунд, и у нас новый ЦАП:)
А вот здесь пригодился делитель частоты, что я предусмотрел в процессе.
Дело в том, что PCM1794, как более современная, полный автомат. То есть что ей не корми – все поет. AD1955 здесь немного повыеживалась. Заработала нормально только при половинном клоке на SRC и на ней самой. Но заработала, а это результат.
↑ А теперь надо делать корпус. И слушать
На лицо выведены: индикация активного входа, режим тактирования master/slave, для master индикация сетки частот 44х/48х, готовность ASRC, инвертированный zero detect левого и правого каналов. Сигналы «Zero Detect» я поставил в инверсии, чтобы не выбиваться из общего формата. Поэтому они светятся, когда есть поток, а не наоборот.
Ну, а теперь то, чего я никогда не делал, но теперь могу делать — измерения.
Но для начала маленькое отступление.
Измеряем мы, по сути, только маленькую часть устройства.
Аналоговую.
Тут далее полное и голимое IMHO :hi:
У меня есть товарищ. Математик по образованию, программист. Unix (FreeBSD) местами разбирает побайтно.
Иногда слушает музыку. С интересом рассматривает мои поделки.
При рассмотрении с ним процесса передачи аудио данных с математическо-протокольной точки зрения, мы пришли к выводу, что среда передачи никак не влияет на результат D\A преобразования.
(Мне еще дали выкладки на бумаге, но у меня чуть не порвало мозг в клочья от увиденного, поэтому я здесь их не привожу)
Если кто-то вам скажет, что слышит разницу между оптикой и медью на одном ресивере, внимательно на него посмотрите, это может быть плодом могучего воображения или серьезными недостатками в работе цифровой части его системы.
Конечно, возможны варианты с идеальным слухом, но это единицы и никак документально не подтвержденные.
Параметры ЦАП не меняются от типа источника — это подтверждено результатом измерений – если и есть разница, то ниже порога восприятия АЦП измерителя, а следовательно, и ушами нашими калиброванными ну никак не воспринимается.
А далее безэховая камера, специальные условия и вот мы уже в другом измерении.
Греть провода, размещать их по компасу – чем не забава на старости лет?
Но основной тезис: «Что было передано – должно быть принято без ошибок, или скорректировано до изначального состояния. Это цифра, и она имеет два состояния 1 и 0.
Если выходные данные отличаются от входных, то это либо задумано разработчиками (всякого рода enhanser, bass buster и прочее). Либо интерфейс работает не правильно. Но тогда о каком качестве мы ведем речь?»
У меня есть товарищ. Математик по образованию, программист. Unix (FreeBSD) местами разбирает побайтно.
Иногда слушает музыку. С интересом рассматривает мои поделки.
При рассмотрении с ним процесса передачи аудио данных с математическо-протокольной точки зрения, мы пришли к выводу, что среда передачи никак не влияет на результат D\A преобразования.
(Мне еще дали выкладки на бумаге, но у меня чуть не порвало мозг в клочья от увиденного, поэтому я здесь их не привожу)
Если кто-то вам скажет, что слышит разницу между оптикой и медью на одном ресивере, внимательно на него посмотрите, это может быть плодом могучего воображения или серьезными недостатками в работе цифровой части его системы.
Конечно, возможны варианты с идеальным слухом, но это единицы и никак документально не подтвержденные.
Параметры ЦАП не меняются от типа источника — это подтверждено результатом измерений – если и есть разница, то ниже порога восприятия АЦП измерителя, а следовательно, и ушами нашими калиброванными ну никак не воспринимается.
А далее безэховая камера, специальные условия и вот мы уже в другом измерении.
Греть провода, размещать их по компасу – чем не забава на старости лет?
Но основной тезис: «Что было передано – должно быть принято без ошибок, или скорректировано до изначального состояния. Это цифра, и она имеет два состояния 1 и 0.
Если выходные данные отличаются от входных, то это либо задумано разработчиками (всякого рода enhanser, bass buster и прочее). Либо интерфейс работает не правильно. Но тогда о каком качестве мы ведем речь?»
Как известно, в SPDIF, а тем более в I2S никакая коррекция ошибок не предусмотрена протоколом передачи, поэтому передаем все в реальном времени.
Там реально, три состояния – работает/работает, но криво/вообще не работает. Но это понятно даже без приборов.
Единственное, на что реально нужно обращать внимание, так это на jitter. При обработке данных в реальном времени это единственная серьезная проблема. Но у нас TCXO, а также «субординация и выслуга лет ©» Поэтому не будем этим загружаться – кому надо, welcome to special forum.
Как ни крути, основным проблемным местом в D\A преобразовании был и остается аналоговый тракт.
Итак, меряем PCM1794.
В качестве фильтра-вычитателя по умолчанию установлен ОУ LT1122.
Изначально, девайс собирался с ОУ в I\U секции на LT1363.
И резисторы в цепи ОС стояли как заявлено в даташите – 750 Ом.
Но при попытке провести измерения, RMAA заявила, что уровень гармоник на входе карты выше нормы. (Странно, поеть то ведь прекрасно?)
Опытным путем был выявлен номинал резисторов в секции I\U.
От него зависит уровень THD и, что особенно важно, уровень сигнала на выходе устройства.
Чем меньше сопротивление резистора в цепи ОС и ниже уровень, тем ниже THD.
Наличие или отсутствие емкости в ОС, на результат измерения тоже не влияет. (Что тоже странно, они же там по даташиту нужны и должны давить ВЧ артефакты!)
Меня устроил номинал 330 Ом.
Ниже уже я не вписываюсь в размах на выходе при 0 dB.
Вот график зависимости THD от типа ОУ.
А вот картинка с шумами.
По циферкам, самым хорошим ОУ оказался OPA627.
По звуку: да все они хороши, серьезно!
Ну ладно, пихнем-ка мы в слот AD1955 и ее выхлоп.
Фильтр-вычитатель OP42. Хороший, добрый, стабильный ОУ для любых применений.
И вот тут картина оказалась полностью противоположна.
И меня постиг ступор.
Во-первых – самым лучшим оказался AD811…
Хотя в том же месте с PCM1794 его THD был настолько позорным, что я даже его не стал документировать.
Зато шикарный OPA627 оказался в хвосте по всем параметрам???
Для успокоения, я ткнул в ФВЧ LT1122 – думал дело в нем – ан нет, он даже еще хуже.
AD дружит с AD? Мистика?
Спектр шумов.
В общем на данном этапе у меня больше вопросов, чем ответов.
Почему то, что хорошо для PCM1794, уже не хорошо для AD1955?
Почему так странно себя ведет AD811?
Хотя закономерность понятна. Чем выше Ку для каскада I\U, тем выше возможность перегрузки входного каскада ОУ высокочастотными артефактами. Надо пилить выхлоп, пилить как по шумам, так и по THD.
При этом звучат они все… ну как сказать?
Сказать про звук сложно, но характер звучания узнаваем, все же Delta-sigma поет несколько иначе. И, что самое интересное, что нет такого явного различия звука двух конкурентов, как это заметно у AD1862 и PCM63, к примеру.
Если вы обратили внимание, я всю дорогу обхожу тему питания. Все просто. БП тут с предыдущей конструкции, причем, как оказалось, и не требовалась развязка по земле между цифрой и аналогом. Как раз наоборот. Та бусина, что стоит под платой ЦАП, конечно же нужна, но, чтоб убрать помехи от цифры, пришлось соединить земли еще и на самом БП. И с корпусом соединить схему на плате БП. Только тогда удалось избавиться полностью от шума от цифры.
А теперь, можно ставить аппарат на прослушивание и использовать смело с разными источниками.
Смена модулей ЦАП – откручиваются 6 болтов, снимается верх, меняются модули, переставляется перемычка на 3.3 или 5В, если это необходимо, затем одевается верх, закручиваются 6 болтов и все. Можно слушать дальше.
Процедура занимает около минуты времени.
Другие микросхемы ЦАП сюда пока не прикручивал, потому как просто нет ничего в наличии, кроме CS4396, но что-то мне подсказывает, что я могу потратить время зря.
Но может позже закажу что-нибудь современное и попробую — «макетка» то уже есть, а модуль сделать – дело нескольких часов.
Ах, да, чуть не забыл! Кто то наверняка захочет спросить: «Почему все основные микрухи стоят на переходниках? Будь мужиком trr@#$%, впаяй их на плату!»
И этому есть объяснение. Конструкция создавалась не просто как ЦАП для слушания, но и как полигон.
Поэтому любая серьезная ошибка повлечет за собой переделку платы и перепайку всех компонентов. И если простые 125е или 126е не жалко, то более сложные уже опасно часто дергать туда сюда. Таким нехитрым образом я потерял одну из двух PCM1704 с грейдом «К», которая после четвертой перепайки просто тихо померла. Знал бы, припаял бы на переходник с самого начала. Теперь у меня всего одна PCM1704, да и та 4 раза паяная…
Да и не любитель я SMD на платах по технологии ЛУТ.
Так что выбор мой наверное вполне обоснован…
↑ Платы и схемы
🎁1794.zip 590.16 Kb ⇣ 341На этом пока все. Спасибо за внимание.
С уважением, Алексей :bye:
Камрад, рассмотри датагорские рекомендации
🌼 Полезные и проверенные железяки, можно брать
Опробовано в лаборатории редакции или читателями.