ЦАП Soekris R2R 1021/1121 — DIY


(Vitaly Bargatin) #1

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

Начнем с начала.
С некоторых пор мне стала особенно интересна тема DIY. Причина проста - надоело покупать коробочки, которые приносят радость очень ограниченное время + естественное любопытство что может предложить этот подход.
В январе этого года сделал первый ЦАП на базе кита DIYinHK на AKM4490 и был удивлен в принципе неплохим результатом (особенно учитывая затраченные средства). Захотелось глубже разобраться в предмете.
Выбрал указанный в теме ЦАП. Причины просты:

  • европейский производитель,

  • продукт существует с 2015 года и все детские ошибки устранены (текущая ревизия платы - 4),

  • проект неплохо документирован, разработчик (Soren) дает много комментариев на форуме diyAudio.com

  • и, конечно, R2R, который переживает ренессанс в последние годы (судя по количеству новых продуктов)
    Дополнительно было очень интересно разобраться в построении FIR фильтров в ЦАП (dam1021 позволяет загружать пользовательские фильтры).

Путь обработки данных прост:

  1. входной поток через гальваническую развязку поступает на SPARTAN. Там осуществляется буферизация и реклокинг. Далее первый апсемплинг (x8) до частоты 352 или 384 кГц.
  2. Далее первый интерполирующий FIR фильр.
  3. Далее цифровая регулировка громкости (данные внутри DAC обрабатываются в 28 битах).
  4. Далее второй x8 апсемплинг и второй интерполирующий фильтр FIR (до 2.8Мгц).
  5. Далее IIR фильтр, устраняющий постоянную составляющую.
  6. Итог - на R2R, построенную как sign-magnitude. ЦАП работает как zero-hold DAC.

На плате реализованы выходы - прямой с R2R лесницы, буферизированные RCA и XLR.
Входы - i2C, SPDIF (оптический, коаксиальный или AES).

В моем случае управляется все Ардуино (громкость, переключение входов, фильтры …).


(Vitaly Bargatin) #2

Фото готового продукта


(Кирилл) #3

И как в сравнении с Аураликом? Это же Вега на фото?


(Vitaly Bargatin) #4

В ближайшие дни планирую:

  • описать впечатление от прослушивания и сравнить с основным DAC Auralic Vega

  • описать свой опыт по фильтрам для этого ЦАП.

  • Ответить на вопросы (если будут, конечно).

Если очень коротко - полученный результат очень радует. Речь не идет о том, что dam1021 “порвал” Vega. У них немного разный характер. Что то больше нравится в dam1021. Особенно при использовании некоторых фильтров.

Сейчас реализован только вход на USB на основе XMOS 216 (сравнительно новый чип), выход я использую только напрямую с R2R.
Дополнительно встроил усилитель для наушников на основе TPA6120A2 (на каждый канал).


(Vitaly Bargatin) #5

Да, на фото Вега.
Сейчас смогу только коротко описать разницу, это очень непростая тема.

На DSD - полное превосходство Vega. Это объясняется конструктивные особенностями цапов от Soekris.
Если коротко - Сорен сделал DSD под большим давлением общественности. Обработка там происходит учитывая архитектуру ЦАП - сначала децимация (уменьшение частоты дискретизации путем отброса ненужных отсчетов) до частоты 352 КГц, далее стандартный путь сигнала (описан выше). У меня есть ощущения, что результат можно улучшить переделав FIR1 (Сорен признавался, что не является экспертом и фильтры для цапа были первыми его фильтрами), но я пока слишком увлекся PCM.

На PCM - все уже не так однозначно. Если говорить прямо - на некоторых фильтрах (об этом позднее) характер подачи ЦАП Soekris мне нравиться больше (более естественные тембры скрипичных инструментов, например). Особенно это заметно на классической музыке.


(Кирилл) #6

Интересно. Жду расширенного отзыва. :grinning:


(Vitaly Bargatin) #7

Небольшая вводная по FIR фильтрам. Это будет необходимо для сравнения восприятия “звучания” фильтров с их характеристиками.

Зачем они в ЦАП? Любой цап с апсемплингом добавляет недостающие отсчеты и делает их нулевыми.
Т.е. если входной сигнал был равен 1, то при апсемплинге x8 выходной будет 1 0 0 0 0 0 0 0.
Это во временной области.

В частотной произойдут следующие изменения - исходный спектр будет смещен и размножен (см ниже).

Возникнет задача убрать все частоты выше половины частоты начальной дискретизации. Эту задачу решает интерполирующий фильтр (FIR). Можно и не убирать эти частоты, просто это приведет к росту искажений ЦАП.

FIR фильтр представляет собой набор чисел (вектор). Свертка FIR фильтра с исходным сигналом и приводит к необходимым изменениям в частотной области.

Идеальный FIR НЧ - ступенька (пропускает все до выбранной частоты, убирает в 0 все остальное, граница перехода бесконечно узкая). Идеальный FIR содержит бесконечное число чисел, что приводит к необходимости создания неидеальных фильтров.

Фильтр конечной длины характеризуется следующими показателями (это закладывается при проектировании фильтра)

  1. уровень пульсаций в полосе пропускания (насколько полоса пропускания отличается от прямой)
  2. уровень атеньюации (подавления) в полосе подавления (насколько снижаем сигнал после фильтра)
  3. ширина зоны перехода (чем шире, тем раньше начинается атеньюация в полосе пропускания).
  4. длина фильтра (количество коэффициентов фильтра).

    Все эти показатели связаны - т.е. вы не можете сделать короткий фильтр с очень маленькими пульсациями, узкой зоной перехода и высоким уровне атеньюации.

Уровень пульсаций более 0,01 - 0,001 dB считается заметным (приводит к тембральной окрасе).
Уровень атеньюации > 100 - 120 dB (иначе могут ухудшиться искажения DAC).
Ширина зоны пропускания чем уже тем лучше (теоретически). Хотя ее уменьшение приводит к росту пре- и после- звона, например.

Пример фильтра со 193 коэффициентами (низкий пре- и после- звон, широкая полоса перехода, сравнительно низкий уровень атеньюации). Первая картинка - импульный отклик, вторая - частотная характеристика)

Пример фильтра с 1919 коэффициентами (значительный пре- и после- звон, отличная атеньюация, узкая зона перехода)

Какие показатели фильтров нужно оптимизировать и насколько - неясно. Чему отдавать приоритет - неясно.
Поэтому возникает очень интересная задача - какой фильтр оптимален.
Ограничение здесь - длина фильтра (ограничивается только производительностью и доступной памятью)

В Soekris DAC максимальное количество коэффициентов FIR1 = 2023, FIR2 = 127.
Это очень много для ЦАП (обычные значения - 32, 64 …). Это приводит к тому, что, например, любой результат работы SOX Resampler может быть без потерь перенесен в DAC.

Для создания фильтров можно использовать SOX, RePhase, Octave и.т.д.
Я использую Matlab. Все характеристики и графики буду выводить далее из него (приведенные выше сделаны в Octave).


(German) #8

@Victorvvo некоторое время назад тоже занимался подбором оптимальных фильтров для Soekris.


(Vitaly Bargatin) #9

Что выбрали? Фильтры Paul (spzzzzkt)?

Мне пока не удается сделать что то похожее на его спецификации.

EQHQ - 0-19.00Khz ±0.00000005dB (pass band ripple), 22.50Khz -174.26dB (stopband attenuation). Matlab отказывается верить в возможность этого:grinning:


(German) #10

Думаю, стоит напрямую связаться с Виктором. Сайт http://easytubeamp.com/sample-page/


(стерео бармен) #11

@Victorvvo и тут вполне отвечает :slight_smile:


(Victor) #12

Если коротко - то можно сказать так - детские болезни возможно и были вылечены, взрослые болезни скорее всего остались. Я работал с двумя версиями платы, на второй версии пришло глубинное осознание такого понятия, как “мазохизм”. Так вот - у меня множество недостатков, но я точно не мазохист. :slight_smile:


(Vitaly Bargatin) #13

Виктор, конечно, не сомневаюсь в этом.
Верю.

Только можно поподробнее высказаться? Что бы ваша точка зрения стала понятна не только вам.


(Vitaly Bargatin) #14

Сравнение Auralic Vega и Soekris dam1021

Для начала несколько вводных слов, что бы мой дальнейший текст был понятен.
Я не отношу себя к “золотоухим”, у меня нет музыкального образования, на “живые” концерты и выступления хожу очень редко (пару раз в год). Сильно сомневаюсь в своей способности слышать что то выше 17 кГц.

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

Все сравнения я стараюсь проводить по следующему алгоритму:

  1. Сначала несколько быстрых сравнений (несколько отрывков случайно выбранных композиций, принадлежащих разным жанрам) на сравниваемых системах. Далее анализ - слышу ли я разницу, могу ли я ее описать.
  2. Если мне кажется что разница есть, то провожу слепой тест (используется 1-2 фрагмента, которые с моей точки зрения максимально отличаются звучанием на разных компонентах)
    Мне проигрывают фрагменты, несколько раз, причем сообщают о смене (т.е. я не знаю какой конкретно компонент играет, но знаю какой из 2 вариантов звучит в данный момент - вариант 1 или вариант 2).
    Далее мне проигрывают фрагмент и я должен определить какой компонент звучит (могут, кстати, компонент и не изменить). Если не могу определиться, то мне проигрывают фрагменты на контрасте и я должен определиться с выбором.
  3. Аналогичный эксперимент я провожу с 1 - 2 другими людьми.
  4. Потом мы обсуждаем наши впечатления. Если впечатления совпадают, то разницу считаю предварительно зафиксированной. Если нет, или не могу угадать - то вопрос отличий оставляю открытым.
    Весь процесс занимает как правило ~ 2 часов. Дальше я сильно устаю :slight_smile: и просто теряю интерес.

Потом - длительный тест (на несколько дней ставлю компонент в систему и использую его как основной). Если впечатления совпадают с быстрым тестом, то уверенно говорю о существовании разницы.

Далее я буду говорить только о уверенно зафиксированной разнице.

В Auralic есть настройка клока (видимо управляет точностью PLL). Я всегда использую EXACT - отличия слишком очевидны.

DSD
Здесь наиболее просто - Auralic Vega интересней. Это отмечается всеми и сразу. Вполне однозначно.
Soekris упрощает сцену в глубину (речь о воспринимаемой глубине сцены).
Дополнительно - в Auralic звуки возникают из абсолютной тишины (как бы из ниоткуда), что производит просто завораживающий эффект, то в dam1021 этого нет.

Аналогичный эффект у меня был и на Auralic:

  1. когда я экспериментировал с апсемплингом DSD64 в DSD256 в HQPlayer. Правда там этот эффект можно было снизить, играя фильтрами.
  2. при настройках клока Auralic Auto (правда в заметно меньшей степени).

Наблюдаемый эффект, с моей точки зрения, связан с особенностью работы Soekris dam1021 с DSD (описывал в начале темы).
Вполне возможно, что dam1021 может показать себя лучше, если поработать над FIR1 фильтром. Буду ли этим заниматься - не знаю.

DSD для меня важен - несколько моих любимых альбомов в этом формате и отказываться от него я не собираюсь.

Для полноты картины - у меня есть цап на AK4490 (стоимость платы ~ 50 USD, без питания), схема из datasheet по AKM4490 (т.е. достаточно простой).
По моему глубокому убеждению последний играет интересней Soekris. Но могу ошибаться - сравнений не проводил, описываю по памяти.


(Vitaly Bargatin) #15

PCM
Неоднозначная тема.
Все сравнения будут указаны для стоковых фильтров FIR1 и FIR2 Soekris dam1021.
По моей оценке оптимизация фильтров для DAC Soekris не меняет характер подачи. Изменяются только ньюансы (по крайней мере на прямом выходе с R2R).
Подробнее об этом немного позднее, т.к. мой основной интерес - исследование взаимосвязи характеристик фильтров и их восприятия.

Что бы точнее описать роль фильтров:

  • я могу их различить только на контрасте и то далеко не все.
  • “испытуемый” с музыкальным образованием (часто прошу его участвовать в тестах - доверяю его мнению) смог уверенно отличить только некоторые фильтры без контрастного прослушивания, но сознался, что это было на грани восприятия.
  • моя девушка,например, разницы между ними вообще не увидела.

Далее приведено описание только уверенно зафиксированной разницы (всеми участниками, в том числе в слепом тесте, описания наблюдаемых изменений совпадают).

Soekris dam 1021 рисует сцену более компактно. Субъективно воспринимаемая ширина сцены (слева направо) - заметно меньше Auralic Vega. Сцена в глубину тоже сжимается, но не так сильно и заметно меньше ситуации с DSD. Это касается всех музыкальных жанров.

На вокальном джазе это иногда воспринимается как позитивное изменение по сравнению с Auralic Vega (вокал как бы становиться более сфокусированным и немного вынесенным вперед). На классической музыке эффект можно описать так - вы сидите в зале дальше.

Т.е. речь идет скорее о вкусовой разнице, она заметна, но переоценивать ее не стоит.

Как можно заметить, есть некоторая аналогия с ситуацией с DSD, но в данном случае речь точно не идет об ухудшении.
В целом, при длительном прослушивании (последний этап тестирования) мне очень импонировала такая трактовка. Правда, когда я вернулся на Auralic, я получал не меньшую радость от прослушивания. :slight_smile:

Второе замечание - изменение тембрального окраса. dam1021 более “темный” и “плотный”.
Подробнее опишу это на примерах

  1. Alisa Weilerstein Cello Concerto in E Minor Op 85 (композитор Edward Elgar). 24 bit 48 kHz. Виолончель и скрипичная группа воспринимаются более естественно (заметная разница), эмоционально (слегка). В Auralic Vega явно больше ВЧ, из за чего в некоторые моменты (игра скрипичной группы) воспринимается мной с небольшим раздражением (присутствует оттенок ненатуральности). В этом смысле я бы предпочел dam1021. Правда фильтры на Auralic я не менял, давно остановился на Minimum Phase. Нужно будет прослушать с другими фильтрами.
  2. Джазовый вокал (Youn Sun Nah - Same Girl, Cecile McLorin Salvant - For One to Love). 16 bit 44kHz. Soekris dam1021 - голос с более выраженными грудными нотками (слегка), в некоторых моментах немного сглажена истеричность манеры исполнения. Не понял для себя, что нравиться больше. Оба варианта слушал с удовольствием.

Именно последнее наблюдение (джазовый вокал), слегка правится фильтрами в Soekris.

В целом после прослушивания dam1021 - весьма достойно. Учитывая цену платы в ~ 250 - 350 евро (с доставкой), может рассматриваться как вариант.
Моя девушка сказала мне - “А можешь сделать, что бы Soekris звучал так же “широко”, как Veaga? Тогда было бы здорово!”

Итог.
Soekris dam 1021 не разрыватель всего и вся. Мне понравился на PCM. На DSD его использовать не буду.

Лучше ли он Vega - НЕТ, по совокупности наблюдений. Если не брать в расчет цену.
Лучше ли он AK4490 (описан ранее) - да, с моей точки зрения. Даже с учетом цены.
Что лучше VEGA бу или dam 1021 - я бы выбрал VEGA (DSD в основном).

Стоимость dam1021 (примерно)

  • плата ~ 350 евро с доставкой
  • питание ~ 130 USD с доставкой (можно дешевле, но я брал с запасом на другие проекты)
  • Ардуино + энкодер + ИК датчик + ИК пульт + изолятор ~ 2,5 тыс руб + удовольствие программировать интерфейс и взаимодействие с DAC.
  • экран 2,42 OLED - 20 USD с доставкой
  • корпус - по желанию. Мой ~ 1000 руб (DIY полный из остатков материалов + удовольствие изготовления этого)

(Victor) #16

В моем варианте предполагался условно-коммерческий проект.
С чем пришлось столкнуться -

  1. Софт - перешивался неоднократно, в базовой поставке не работало опознавание активного входа, переключения входов, после устранения - неустойчиво работало обратное переключение в случае, если один из входов оставался активным. По фильтрам - не работало переключение между фильтрами, при выключении, снятии питания и включении через некоторое время устанавливался “набор номер 1”. В конце концов я остановился на варианте “Soft”, он был доработан и перепрошит как основной и единственный.
  2. По схемотехнике - по известной методике доработано питание, устранены щелчки при выключении. В аналоговой части SMD конденсаторы заменены на полистирол + фольга, частота фильтра пассивного выхода понижена до 30 кГц, применен развязывающий трансформатор (600 Ом–>150 Ом, таким образом “общий” у ЦАП и у моего выходного каскада получились гальванически разделены, это пришлось сделать для уменьшения проникновения коммутационных помех.
    Выходной каскад был организован на лампе 5687 + трансформатор Lundahl LL2745, выходы - балансный (XLR) и небалансный (RCA). Для сравнения были сохранены выходы и с “родного” каскада на ОУ.

В итоге со второй попытки получилась довольно таки неплохая конструкция с музыкальным, объемным звучанием в стиле “Audio Note DAC 5”, но с более полновесным, динамичным звуком.

Но - в прямом сранении с Berkeley Audio Alpha DAC - при большей выразительности, музыкальности - совершенно очевидно слышны огрехи в построении пространства и прорисовке “ткани” и тонких интонационных ньюансов.

Для себя сделал вывод - “сплясал с бубном” качественно, выразительно и с самоотдачей, но в смысле перспективы проекта -
безрезультатно. :slight_smile:


(Vitaly Bargatin) #17

Виктор, очень признателен за развернутый ответ.

  1. По поводу софта - в текущей версии пока ошибок не наблюдаю.
    С оговорками - у меня один вход I2S. Не определился с необходимостью реализации AES и Coaxial.

Переключение между фильтрами работает. Я читал об этом баге, поэтому внимательно проверял (Ардуино подключен по серийному изолированному входу, контроль через второй вход и uManager). Конечно, при загрузке устанавливается фильтр по умолчанию (установленный через set filter uManager). Я меняю его на лету командами с Arduino.

  1. С вашей точки зрения, стоит ли делать выходной каскад (я снимаю сигнал с R2R напрямую)?
  2. Какие схемотехнические доработки считаете оправданными? На diyaudio.com не нашел однозначных рекомендаций (тема там сильно раздута).

Я newbie в этом вопросе, поэтому мне сложно оценивать критически предлагаемые на diyaudio.com решения.


(Vitaly Bargatin) #18

Ну теперь к главному для меня - влияние фильтров. Речь пойдет о сравнении 3 фильтров, 2-ух часто упоминаемых кастомных фильтрах и одном стоковом.

Разберем их отличия сначала с технической точки зрения. Для этого я загрузил коэффициенты фильров в Matlab и далее анализ проводил в нем.

Все фильтры линейно фазовые.

  • Линейный Soekris - стандартный оконный фильтр. 1975 коэффициентов.
  • EQHQ (Equiripple), фильтр созданный Paul (http://www.moredamfilters.info). Алгоритм - эквирипл. Один из самый эффективных алгоритмов (позволяет получить фильтр минимальной длины при заданных спецификациях, по сравнению с другими алгоритмами). 1919 коэффициентов.
  • Nyquist - тоже создан Paul. Очень интересный алгоритм. Единственный, сохраняющий начальные отсчеты (до апсемплинга) без изменений. 129 коэффициентов.

Общий обзор:

Сначала разберемся с полосой пропускания. Принято считать по уровню -3dB, но я сознательно выбрал -0,5dB

Худший - Nyquist, уже с 17,5 кГц идет завал до уровня -0,5db
Лучший - Equiripple. Пропускает даже больше, чем слышимый диапазон.
Soekris Linear - в принципе все очень неплохо с точки зрения passband. 19,5 kHz проходят.

Что со stopband attenuation:

Худший - Nyquist, -120 dB начиная где то с 32 kHz. Это уже опасно, теоретически. В отфильтрованном сигнале будет aliasing (появятся дополнительные частоты в диапазоне от 22,1 kHz до 32 kHz.
Лучший - Equiripple. Давит все до -170dB в диапазоне выше 22,5 kHz.
Soekris Linear - очень хорошо. - 150 dB на примерно 22,5


(Vitaly Bargatin) #19

Посмотрим на уровень искажений (ripple) в полосе пропускания.

Худший - Nyquist. Имеем 0,000015 dB
Soekris Linear - лучший. Просто практически не видно.
Equiripple. - очень низкий уровень. 0,00000003 dB

Для сравнения - FIR фильтры Auralic VEGA имею спецификацию 0,003 / 0,1 dB (что безумно много, по сравнению со всеми фильтрами выше.

По показанному выше становится понятно, что при использовании фильтров более высокого порядка, мы получаем все больший passband, attenuation и все меньший ripple. Разные алгоритмы просто с разной степенью эффективности разменивают одно на другое.

Посмотрим на импульсный отклик фильтров.

Как и ожидалось. Меньший порядок фильтра - меньший пре и после звон.

Т.к. человек воспринимает не амплитуду а мощность звука, мне стало интересно проанализировать именно этот показатель (квадрат амплитуды в логарифмической шкале).

Т.к. шумовой порог у меня ~ 45 dB а слушаю я примерно на уровне 80 - 90 dB, то я провел линию на графике, примерно соответствующую уровню шума (-40 dB от максимума сигнала).
Чем уже LSIR в месте пересечения с линией шума, тем теоретически более корректно должны передаваться динамические характеристики сигнала (резкий удар, хлопок итд.)

В фильтре NOS Soekris, например, LSIR представляет собой прямую линию на аналогичном графике.

Здесь безусловный лидер - Nyquist. Худший - Equiripple, Soekris Linear где то между, ближе к Equiripple.

По итогам обзора:
Nyquist, видимо, должен отличаться лучшей динамикой, хотя может добавить “грязи” на ВЧ.
Equiripple - видимо лучший тональный баланс, возможно с худшей динамикой.

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

Об этом (что удастся услышать) чуть позже.


(Алексей) #20

Мне больше всего понравился фильтр EQHQ_lpbr_b4.
Наиболее ясное и тонально ровное звучание.
Правда у меня сокрис 1021 сильно измененный по сравнению со стоком.