ЦАП DSD Signalyst DSC1 — DIY

,

Алексей, а ваш DSC журчит?

Хочу поделиться моим опитом.

У меня 3 системы, пока назовём Офис (наушники), Мастер 1 (наушники) и Мастер 2 (громкоговорители).

Мастер 1, это Mjolnir Audio Octave 2 -> Stax SR-L300 Limited. Octave 2 – только XLR.

Мастер 2, это Custom 300B SET -> Custom Fullrange Horn Speakers. 300B – только RCA.

ОфисThe Wire SE-SE -> Fostex T-60RP или Massdrop/Senn 598.

На офис системе – журчание есть. На Мастер системах пока услышать не смог. Если предположить, что у системы Мастер 2 нет достаточно резолюции, то Мастер 1 – мне кажется резолюции в достаток.

Я конечно не знаю почему в Офисе журчание, но я думаю или что-то связанное с питанием (это проверить можно, когда я попробую The Wire на том же самом месте как и Мастер системы) или несогласованностью между The Wire и DSC2.

А может быть и другое: у меня около Мастер систем switching PSU нет: всех искоренил. Около компьютера (в Оффисе) к сожалению этого сделать нельзя.

Ок, спасибо. Понял. Недостаточно широко смотрю на вещи в силу необразованности. Приношу извинения.

Ок, я не правильно сформулировал. Лох есть лох.

Ок, сорри, что не услышал, не понял сразу фразу (очевидно в силу элементарного отсутствия знаний с моей стороны):

Реверанс: Я тоже взвинтился на пустом месте.
Мои публичные извинения, если задел.

Господа, судя по всему я попал в правильную ветку - кто может подсказать какие на сегодня существуют качественные решения вывода i2s по usb на 8 канальный dac?

Кроме платы от Exasound - ExaU2I, которая давно не продается.

В данный момент имеется usbsteamer от китайских инженеров, который по звуку ну очень так себе, к тому же в прошивке не прописан сигнал MUTE, а ЦАП на АК4490, ему нужен этот сигнал иначе при переключении треков с разной частотой слышны щелчки а также при включении.

В общем в поисках адекватного многоканального устройсива i2s to usb 8 каналов.

У Торреса посмотрите

http://www.altor.co/shop

Павел, не демагогический вопрос. Заранее приношу извинения за возможно неточные, ламерские формулировки.

Ты опубликовал схему DSC c реклокером
https://www.diyaudio.com/forums/digital-line-level/254935-signalyst-dsc1-103.html#post5577091
Ее часть (клоки, фан-буфер, флип-флопы), показана ниже:

image

Видим, что линия данных DSD1 и линия поднесущей CLK (битклок) flip-flop-ятся PO74G74A клоками NDK (линия С0). Условно - на выходе обе линии синхронизированы по восходящему фронту С0. Для удобства восприятия я нарисовал красную линию 0 ns.

Далее CLK проходит через буфер PO74G38072A с Tpd = max 1.3 ns (данные из даташита).
Т.е. на входе в сдвиговый регистр DSD1 (линия данных) опережает линию поднесущей (CLK) не более чем на 1.3 ns. Для удобства восприятия я нарисовал красную линию 1.3 ns.

Смотрим даташит на сдвиговый регистр Nexperia 74AHCT595. В нем четко указано, что задержка между линиями DSD и CLK должна быть не менее 3ns+2ns=5ns (выделено красным в таблице):

Правильно понимаю, что твое решение может приводить к проблеме метастабильности? Не в этом ли природа журчания?
Это вполне вероятно, т.к. метастабильность приводит к появлению вполне наблюдаемых частотных артефактов.

Для таких же лохов как я - хорошее описание метастабильности находится по ссылке.

Второй вопрос. В том же даташите указано, что сигнал клока на SRCLK и RCLK должен приходить с задержкой не менее 5ns (выделено зеленым в таблице). Помню твои объяснения, что ты реализовал эту задержку путем удлинения разводки по RCLK. Какую задержку это обеспечивает (>5ns или нет)?

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

Обычно на всех траспортах DSD клок имеет задержку 90-180градусов относительно даты. Поэтому, времени установления данных до прихода клока должно хватать с запасом. Но MCLK(C0,C1) реклокера(74G74A) должен иметь 2х кратный запас по частоте относительно бит клока(а лучше 4х кратный).

Но выдержан ли этот стандарт в драйвере BBB - это надо смотреть осциллографом. В Аманеро и ХМОС этот стандарт выдержан(с небольшим отклонением в несколько нс). Так же на схемевидно, что MCLK, С0 и С1 берутся с разных выходов буфера кварцевого генератора. MCLK для BBB повернут на 180 градусов относительно C1 и C0.

Вообще, состояние метастабильности в DSC проявляется в виде очень большого шума, такого как был на версии 2.5 при использовании XMOS c изолятором.
В исходной схеме DSC1 зачем то инвертировался BCLK, что убирало изначальную задержку в 180 градусов, что приводило к совпадению момента установления новых данных и “защелкиванию” этих данных в регистр.
Эта фича перекочевала и в версию 2.5. Но затем, в версии 2.5.2/2.6.2, Павел заменил инверсный буфер на “прямой”(125 и 34 логика) и проблема с шумом от метастабильного состояния Д-триггеров (при использовании XMOS c изолятором) ушла.

Я тоже обращал внимание на этот факт, и кажется Алексей(@insert) даже экспериментально реализовывал инверсию BCLK сигнала для линии RCLK( = задержка на 180 град), но результата это не дало. (Но я могу ошибаться.)

Алексей,
предлагаю сначала дать возможность Павлу, как квалифицированному разработчику цифровых систем, ответить на мой вопрос. Плс, не нужно пока обсуждать другие темы.

Суть моего вопроса к профессионалу:

  1. CLK поступает на SRCLK сдвигового регистра с задержкой не более 1.3ns по сравнению с DSD (DATA).
  2. В даташите на сдвиговый регистр указано минимальное время Tsetup + Thold > 5ns.

С моей точки зрения, Павел, как профессиональный разработчик, наверняка это учел. Я, очевидно, в чем то ошибаюсь по неопытности (всего несколько дней тему изучаю, простите).

Второй вопрос связан с задержкой между SRCLK и RCLK, которая согласно даташиту, тоже должна быть > 5ns.

У меня, по неопытности, есть еще несколько вопросов по схеме реклокера. Но предлагаю двигаться постепенно.

UPDATE
Еще одна интересная статья на тему метастабильности.

На опубликованной схеме есть очепятка. Вместо PO74G38072A должен быть 4х выходной PO74G38074A.

По первому вопросу:
Ты правильно обозначил тонкое место на схеме.
Но при проектировании я волновался совершенно в другую сторону - “не будет ли тут задержка слишком высокой?”
Нагрузка на выходе буфера U23 - 16 входов. У Nexperia это 56pF. Если другого производителя, и того хуже будет.
У меня не было уверенности, что удасться четко вычислить задержку из за повышенной входной ёмкости.
Поэтому принял решение запарралелить 4 выхода для уменьшения негативного влияния входной емкости.
И при необходимости (уже на реальном макете) менять величину задержки в сторону увеличения выкусыванием ног у буфера.

По второму вопросу:
Что касается задержки между сигналами строба (ноги 11 и 12) для регистров AHCT595. Так это пожелание скорее из класса - “не плохо было бы”
Обязательное требование по задержке между этими сигналами у Nexperia не нашёл. А у TI черным по белому написано - Both the shift register clock (SRCLK) and storage register clock (RCLK) are positive-edge triggered. If both
clocks are connected together, the shift register always is one clock pulse ahead of the storage register.
При разводке добавил небольшую змейку под чипами между ножками 11 и 12. На сколько хватило места. Задержку не считал, но при таких мизерных размерах, понятно, что задержка там будет символическая.

P.S. Ну это ты загнул конечно. Проект DSC мой первый опыт работы с CAD и с современной элементной базой после 30 летнего перерыва работы в НИИ.

1 лайк

Спасибо за развернутый ответ, Павел.

В даташите на PO74G38074A видим:
image
что при увеличении емкостной нагрузки уменьшается полоса пропускания (выделено красным). Думаю, что это так же приводит к увеличению Tpd (в даташите приводится только при CL15pF). Причем видно, что утроение емкостной нагрузки приводит к сокращению полосы пропускания в 2 раза (примерно).

Емкостная нагрузка (16 ножек на один из 4 выходов U23) = 16*56pF = 900pF. Какая задержка в итоге получается и какая полоса пропускания будет в итоге можно только догадываться. Но да, согласен, что скорее всего задержка будет заметно больше 1,5ns.

С учетом сказанного, если не ошибаюсь, следовало бы провести измерения этих показателей? Что бы вообще можно было утверждать, что схема рабочая.
С твоей точки зрения, как это можно сделать без дорогостоящего оборудования?

Например, можно ли подать на вход DSC цифровой 0 (01010101010101) и смотреть спектр на выходе матрицы. Если будут спуры (не равномерный шум), то это может говорить о некорректной реализации. Почему так думаю - если мы получим на входе в регистр неопределенное состояние, далее пойдет не цифровой ноль, а какой то другой сигнал. Например, 011010111010101.
Если эти ошибки буду происходить часто - увидим спектр другого сигнала на выходе.

По второму вопросу

Nexperia я взял ровно потому, что ты рекомендуешь именно его как замену снятых с производства раритетных Филипсов.
Оно указано в даташите (выделил зеленым в посте с вопросом) как Tsetup между SHCP и STCP (shift register clock and storage register clock) и составляет 5 ns.

CI input capacitance - 3.5pF у Nexperia
16*3.5pF=56pF

У меня не получается логически понять и интерпритировать данные этой таблицы.
Если данные Tsu типовые, то почему минимальный параметр задержки в 15ns больше типовой в 8ns.

Сорри, по Tsu смотрел другую серию.
У AHCT595 Nexperia тоже допускается одновременная подача без задержки.
Первая страница - https://assets.nexperia.com/documents/data-sheet/74AHC_AHCT595.pdf

Павел, есть еще один вопрос.

Ниже показана твоя схема (изолятор, флип-флоп):
image

Из даташита на изолятор Si8661


Видим, что время задержки - от 5 до 13 ns.
Т.е. после изолятора линии CLK и DSD могут совершенно спокойно разбегаться по фронтам на 8ns (13-5=8).

Кроме того, т.к. MCLK тоже проходит через изолятор до BBB, т.е. на выходе изолятора мы имеем еще большую задержку по сравнению с MCLK NDK.

Далее линии CLK и DSD поступают на flip-flop, где тактуются чистым клоком NDK (45/49МГц). Для 45 МГц длительность тактового импульса = 22ns. Длительность 0 = 11ns, длительность 1 = 11 ns.

С моей точки зрения разбег в 8 ns является слишком большим (здесь не учтена даже дополнительная задержка по MCLK на пути к BBB, тоже не постоянная), т.е. на входе flip-flop мы совершенно спокойно можем ловить метастабильное состояние.

Собственно об этом, как мне кажется, тебе и писал Zoran на diyaudio . com (правда в весьма не понятных выражениях).
https://www.diyaudio.com/forums/digital-line-level/254935-signalyst-dsc1-103.html#post5577642

Или ты детально расчитывал время задержи и прихода фронтов на флип-флоп?
Собственно мне, как лоху, понятно, что либо есть четкий расчет по приходу фронтов на флип-флоп, либо разумно использовать два флип-флопа последовательно.
Нет?

Ок, спасибо, понял. Не смотрел даташит, использовал твой ответ - подумал, что 56pF на ногу. Сорри.

Тогда вопрос закрыт, понятно. По ощущениям - должно быть нормально.

Да, спасибо, увидел. Действительно так написано.
Проблем быть совершенно не должно. Источник “журчания” точно не в этом (как мне, лоху, кажется).

Не могут.
Propagation Delay - задержка между входом и выходом. Достаточно кликнуть на ссылку картинки 4.1 Станет всё ясно.
Различие между каналами это Channel-Channel Skew, и он 0.4ns.

Ок, спасибо.
Но я и позиционирую себя - ЛОХ. Так что нет никаких нарушений логики.

Админы, закройте плс тему.

Если интерес к ЦАПу есть, то аналогичную тему должен вести (т.е. начать заново):

  1. Фанат данного ЦАП. Т.е. не я.
  2. Специалист. Т.е. не я.

Всем спасибо за интересное общение!

Все верно, в схеме я эти ноги бы не соединял вместе, они должны быть инверсными между собой. Но, и так работает без каких либо, мною замеченных изменений. Журчание не от этого.

Ничего не нужно закрывать, просто вам нужно смириться что вы не идеальный, как проводник на плате…

2 лайка

Подкину беллетристики на тему конвертации PCM->DSD - DSD-конвертация: фейк или благо?

3 лайка

Автор статьи конвертил бы уже SARACON или AULCONVERTER…

1 лайк