Эта статья поможет тебе собрать свой первый — а может, уже не первый? — цифроаналоговый преобразователь. В твоем распоряжении будет несколько концептов, как классических, так и весьма радикальных. Выбирай сам, что тебе по душе. Будет пара вариантов даже для тех, кто не дружит с паяльником!

Однозначно правильного способа сборки цифроаналоговых преобразователей не существует, потому что нет общей парадигмы. Есть только наборы: подходов, методов, школ и философий — и все это, по сути, наборы стереотипов.

Я расскажу о своем личном опыте, но опишу лишь основные моменты. Я не буду касаться реализации питания, усилителей, акустики и так далее — это уже дело вкуса.

Если захочешь повторить эксперименты, обрати внимание на предупреждение.

WARNING

Автор и редакция не дают никаких гарантий и не несут ответственности за любой вред, причиненный во время попыток повторить описанное в статье. Все, что ты делаешь, ты делаешь на свой страх и риск! Хотя все схемы проверялись на практике, они намеренно упрощены и представляют собой пример для объяснения принципа работы, а не законченное изделие.

 

PCM DAC (ИКМ ЦАП)

Обычно звуковой тракт можно разделить на три части:

  • источник;
  • I2S-преобразователь (конвертер);
  • I2S ЦАП.
 

Источник

В качестве источника может выступать компьютер, планшет, телефон или микрокомпьютер вроде Raspberry Pi. В отдельных случаях источник и конвертер могут быть выполнены в одном устройстве — это проигрыватели с выходом I2S или микрокомпьютеры.

 

I2S-преобразователь (конвертер)

Преобразователи I2S могут подключаться к источнику с помощью разных интерфейсов: USB, S/PDIF, LAN. Есть еще вариации с Bluetooth, но нас они не интересуют, потому что высокого качества в такой системе не добиться. Скорость передачи данных Bluetooth очень мала, о Hi-Res (192 × 24, DSD) можно забыть сразу. Но даже при прослушивании MP3 (44,1 × 16), цифровой поток проходит через несколько цифровых фильтров, к тому же с обрезкой частоты звукового сигнала.

Кстати говоря, то же относится и к блютусным наушникам. Дело ухудшается тем, что в наушниках из-за малого размера сложно разместить полноценный ЦАП и питание к нему, поэтому, как правило, используют «урезанные» версии.

WWW

Подробно о передаче звука по Bluetooth ты можешь прочитать в статье «Аудио через Bluetooth: максимально подробно о профилях, кодеках и устройствах».

USB

Самый распространенный вариант преобразователей I2S — конвертеры USB — I2S.

Все просто: подключаем к порту USB источника, устанавливаем драйвер и при проигрывании на выходе I2S получаем поток данных PCM или DSD. В операционной системе конвертер определяется как звуковое устройство или звуковая карта. Предложений конвертеров USB — I2S огромное количество, те же AliExpress или eBay выдадут вам десятки вариантов по запросу usb to i2s.

S/PDIF

Множество коммерческих — проприетарных — ЦАП подключаются через разъем S/PDIF.

Не так давно S/PDIF был популярным интерфейсом и встречался почти в каждой звуковой карте, даже в самых дешевых, встроенных в материнские платы ПК. Но не все знают, что почти всегда S/PDIF — это промежуточное звено и используется чаще в роли транспорта. Либо у источника, либо у ЦАП в большинстве случаев S/PDIF подключен через I2S. Другими словами, сигнал передается не напрямую, а вначале конвертируется из I2S в S/PDIF, а потом обратно.

Не берусь называть конкретные цифры, но считается, что потери при конвертации и передаче имеются. Кроме того, у S/PDIF есть и другие недостатки — скорость передачи и стоимость. Самые дешевые DIY-устройства USB to S/PDIF стоят около 4000 рублей, а передавать по ним возможно максимум PCM 192 × 24 или DSD64 через DOP.

Таким образом, использовать S/PDIF нецелесообразно, если есть другие варианты.

LAN

Теперь рассмотрим подключение I2S-конвертера по LAN (локальной сети). Для этого используются специальные программные плееры: Squeezelite, HQPlayer, Roon и другие. Они устанавливаются на основной компьютер, который выступает в роли передатчика (источника). При воспроизведении выполняется распаковка, декодирование и, если требуется, обработка цифрового потока. Далее цифровой аудиопоток через определенный сетевой протокол передается на приемник — чаще всего микрокомпьютер. Далее микрокомпьютер либо сам конвертирует полученный поток в I2S, либо передает поток на конвертер, подключенный к нему по USB. Существуют и самодельные решения, основанные, например, на микрокомпьютерах BeagleBone black или Raspberry Pi, и серийные решения различных производителей.

Часто встречаются устройства, которые объединяют в себе одновременно источник и конвертер, конвертер и ЦАП или сразу все в одном устройстве.

 

I2S ЦАП

Цифроаналоговых преобразователей с входом I2S огромное количество. Мы не будем рассматривать полностью собранные серийные ЦАП; нас больше интересуют самоделки. Самый простой и дешевый способ послушать тот или иной ЦАП — купить готовую самодельную плату с ЦАП. Можно поискать ЦАП без питания и предусиления, если захочешь допилить самостоятельно. Для первого раза можно взять что-нибудь простенькое и дешевое, как плата на чипе PCM5102A на фото.

Самодельная плата на чипе PCM5102A компании Texas Instruments
Самодельная плата на чипе PCM5102A компании Texas Instruments

В качестве конвертера в моем случае будет Amanero компании Amanero Technologies.

Все необходимое для PCM5102A можно подать прямо с конвертера: питание — VIN соединить с контактом 3,3 В, землю GNG c землей конвертера GND, LCK c контактом FSCLK конвертера, DIN c DATA, BCK c BCLK. А вот SCK и MCLK в PCM5102A соединять не обязательно, он сможет работать и без дополнительной синхронизации. Но для повышения точности, если есть такая возможность, MCLK лучше все же подключать. Аналогичным образом этот ЦАП можно подсоединить и к Raspberry Pi.

Как видишь, все просто и специальных знаний не требуется! Подобным образом к I2S можно подключить и другие цифроаналоговые преобразователи. Для воспроизведения через USB подойдут практически любые плееры. На Raspberry Pi новичкам можно посоветовать Volumio, а более продвинутым слушателям сборку с Album Player.

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

 

DSD ЦАП

Изучим на практике способы передачи и воспроизведения DSD.

Обычно поток данных DSD в самодельных устройствах передается от источника к цифроаналоговому преобразователю через I2S-конвертер. Далеко не все конвертеры поддерживают DSD, поэтому перед покупкой обязательно нужно удостовериться, что в спецификациях указана поддержка DSD. Самые дешевые конвертеры USB to I2S с поддержкой DSD — это преобразователи Amanero или их копии, а также конвертеры с применением процессоров XMOS.

Нужно учесть, что не все плееры поддерживают воспроизведение DSD и не все драйверы в состоянии передать чистый DSD (DSD native), даже если плеер на это способен. Ограничение драйвера можно преодолеть, используя DOP (DSD over PCM), соответственно, плеер тоже должен иметь возможность преобразования DSD в DOP.

В случае Amanero и XMOS поток DSD передается к ЦАП по тем же выходам I2S: DATA передает данные правого канала, LRCK — данные левого, а BCLK — битовую синхронизацию этих данных.

Воспроизвести поток DSD можно разными способами, стоит выделить три:

  • проприетарные ЦАП;
  • через ФНЧ;
  • самодельные ЦАП.
 

Проприетарный ЦАП

Большинство коммерческих ЦАП, которые поддерживают воспроизведение DSD, принимают и PCM, и DSD через один и тот же разъем I2S. В этом случае достаточно подключить контакты конвертера и ЦАП способом, описанным выше, и переключение между PCM и DSD будет работать автоматически. Бывают отдельные входы для DSD, но это реализовано для раздельного подключения устройств, использовать их в большинстве случаев не обязательно.

 

Воспроизведение через ФНЧ

Этот способ подкупает своей простотой и, кстати, неплохим звучанием. Суть его, как понятно из названия, заключается в воспроизведении DSD напрямую через фильтр нижних частот, без использования какого-либо цифроаналогового преобразователя. Когда я узнал об этом способе впервые, отнесся скептически, но оказалось, что звучит такой вариант лучше, чем все ЦАП, которые я слушал до этого. Не хочу никого убеждать, но сам я теперь вряд ли вернусь к проприетарным цифроаналоговым преобразователям.

Единственная проблема: контента, доступного в DSD, значительно меньше, чем в Audio CD. Но тут нас спасет конвертация PCM в DSD — она может выполняться как заранее, перед прослушиванием, так и в реальном времени. Делать это можно на ПК или мобильных девайсах с iOS и Android, а в качестве передатчика будет выступать I2S-конвертер.

Принцип работы

В формате DSD используется плотностно-импульсная модуляция, на выходе I2S рядом стоящие положительные импульсы (логические единицы) складываются в один продолжительный по времени импульс, и напряжение растет. Отсутствие положительных импульсов приводит к падению напряжения.

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

Выбор фильтра

В качестве фильтра нижних частот может выступать простая RС- или RL-цепь, а для удаления постоянной составляющей сигнала достаточно обычного конденсатора.

Рассчитать такие фильтры просто. RC (сопротивление, емкость) рассчитывается по формуле fc = 1/2πRC, RL (сопротивление, индуктивность) — по формуле fc = R/2πL, где fc — частота среза фильтра, ее лучше выбирать в диапазоне от 25 до 50 кГц.

Для удобства можно использовать онлайновый калькулятор.

Емкость конденсатора (на схеме справа) для удаления постоянной составляющей рассчитывается как RC ФВЧ — фильтр верхних частот.

По формуле fc = 1/2πRC, где в качестве сопротивления выступает переменный резистор на входе усилителя (предусилителя). Соответственно, R будет равно номинальному сопротивлению этого резистора. Емкость конденсатора нужно выбрать такую, чтобы частота среза не превышала 30 Гц. Можно также воспользоваться специальным калькулятором.

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

Выбор порядка фильтра и частоты среза будет во многом зависеть от усилителя (предусилителя). Например, для многих транзисторных усилителей ФНЧ первого порядка будет недостаточно, и это приведет к шумам и искажениям. А для ламповых усилителей ФНЧ первого порядка может быть вполне достаточно.

В выборе фильтра важно, как усилитель реагирует на высокие частоты. Определить это можно, меняя порядок фильтра и частоту среза. Необходимо будет искать компромисс между «звучанием» и уровнем искажений. При срезе ФНЧ ниже 20 кГц сильно ухудшается качество звучания, при слишком высоком срезе может появиться шум или эффекты перегрузки. На каких-то усилителях достаточно будет фильтра первого порядка и частоты среза в 40–50 кГц, а на других придется использовать ФНЧ второго-третьего порядка и понижать частоту среза до 25 кГц. Чем ниже частота среза ФНЧ, тем больше влияния на сигнал он оказывает, потому что уровень сигнала падает постепенно, затрагивая и другие частоты еще до выбранной частоты среза. Подробнее можно прочитать в работе по ФНЧ.

 

DIY ЦАП

Наконец мы добрались до собственноручной сборки ЦАП с минимальными затратами. Концепции будут расположены от самого простого варианта к более сложному.

 

Предусиление

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

 

Стационарный вариант

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

Они увеличивают напряжение сигнала примерно в четыре раза, их можно подключить к балансному входу-выходу, диапазон воспроизводимых частот 20 Гц — 20 кГц. Стоимость примерно 2000 рублей за пару; это одни из самых дешевых трансформаторов, но свою задачу они выполняют.

У способа усиления с помощью трансформаторов, конечно, есть и недостатки.

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

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

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

Для расчета емкости конденсатора нужно взять сопротивление трансформатора, в данном случае 600 Ом, и подставить в формулу fc = 1/2πRC; частоту среза следует выбирать минимальную. Я использовал конденсаторы на 22 мкФ, частота среза получилась около 12 Гц.

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

Еще нужно будет использовать ФНЧ, чтобы убрать высокочастотный шум. Здесь должно хватить фильтра первого порядка. Трансформаторы имеют определенную полосу пропускания, и при совместном использовании с ФНЧ увеличивается крутизна среза. С трансформатором логичнее всего использовать RL-фильтр (сопротивление, индуктивность), в котором в качестве сопротивления R будет выступать входное сопротивление трансформатора, а в качестве индуктивности — катушка индуктивности, в данном случае 2,2–2,7 мГн (миллигенри).

Индуктивный фильтр можно рассчитать калькулятором.

Такой способ предусиления хорошо подходит для стационарного использования, но носить с собой трансформаторы и усилитель, пусть даже небольшого размера, вряд ли кому-то захочется. Давай рассмотрим, как можно собрать переносное устройство, которое легко поместится в карман.

 

Портативный вариант

Для портативного варианта лучше всего подойдет предусилитель на микросхеме с однополярным питанием не более 5 В. Чтобы пойти по пути наименьшего сопротивления, в прямом и переносном смысле, хорошо бы собрать все в одном: активный ФНЧ и предусилитель на операционном усилителе. Подобрать и рассчитать такой фильтр можно и вручную, но проще всего использовать онлайн-приложения для расчетов, например Analog Filter Wizard компании Analog Devices или Filter Design Tool, предоставленный компанией Texas Instruments. Веб-приложения просты в обращении, тебе нужно указать следующие параметры:

  • тип фильтра — Low Pass;
  • усиление, Gain — можно задать в вольтах, оно не должно превышать значения питания;
  • Passband — нужная частота среза;
  • параметр Stopband нужно задать таким образом, чтобы получился фильтр второго порядка — 2nd order, иначе придется использовать два и более операционных усилителя;
  • напряжение питания +Vs — 3–5 В, -Vs — 0 В.

Исходя из характеристик, выбирай микросхему, для которой будут производиться расчеты. Готово!

Я использовал Analog Filter Wizard, и у меня получилась следующая схема.

Спецификации

  • Напряжение питания (supply voltage): +Vs: 3 В; -Vs: 0 В
  • Усиление (Gain): 3 В/В
  • Полоса пропускания (Passband): –3 дБ при 35 кГц
  • Полоса подавления (Stopband): –40 дБ при 500 кГц

Если ты не любишь паять или не разбираешься в электротехнике, можешь купить готовый предусилитель с фильтром, например на AliExpress.

Но придется потратиться: таких фильтров нужно две штуки, по одной на канал. Или можно купить вариант на два канала.

Он рассчитан на балансное подключение, при котором каждый канал передается отдельно по трехпроводной схеме: по одному проводу передается основной сигнал, по второму проводу этот же сигнал в противофазе, а третий провод — это земля. Поэтому подключать напрямую — не лучшая идея. Но можно получить сигнал в противофазе, инвертируя выход DSD при помощи операционного усилителя, либо триггера Шмитта, либо логического инвертора.

Важно получить два идентичных сигнала в противофазе. Даже малейшие различия будут оказывать значительное влияние на выходной сигнал.

При выборе элементов обязательно нужно обратить внимание на то, с какой частотой они могут работать, потому что частота потока DSD может варьироваться от 2822,4 до 24 576 кГц. Также настоятельно рекомендую использовать гальваническую развязку.

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

 

Сборка портативного варианта

Если ты не ищешь легких путей, давай перейдем к сборке.

Железо

В качестве I2S-конвертера можно использовать следующие платы.

  1. Оригинальный Amanero. Стоимость около 7000 рублей.
  2. Китайская копия, плата ATSAM3U1C XC2C64A. Минимальная стоимость «репликанта» около 2000 рублей. Это почти полная копия Amanero, основное их отличие в качестве материала самой платы и компонентов.
  3. Платы на основе чипов Xmos. Стоимость от 1700 рублей, принцип подключения будет тот же, но у них высокое энергопотребление.

В качестве фильтра и предусилителя используем AD8656 — операционный усилитель.

Также понадобятся расходники — резисторы и конденсаторы, указанные в схеме подключения.

Схема подключения
Схема подключения

В идеале для контактов FSCLK и DATA нужно использовать гальваническую развязку. Развязку ищи с запасом по скорости передачи данных — от 25 Мбит/с, а напряжение питания развязки выбирай в диапазоне 2,7–5,5 В. Для питания операционного усилителя лучше всего использовать отдельный малошумящий стабилизатор напряжения. На входе можно добавить сопротивление для ограничения уровня сигнала, а на выход добавить ФНЧ. Вот и все!

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

Софт

Драйверы для Windows для Amanero и китайской реплики (ATSAM3U1C XC2C64A) можно скачать с сайта Amanero. В Linux и Android драйверы не нужны, на iOS, вероятно, тоже.

Для мобильных устройств существуют десятки плееров с поддержкой Hi-Res PCM. Однако через фильтр можно слушать только DSD, поэтому необходима конвертация PCM в DSD. К счастью, есть плеер, который конвертирует в реальном времени, — Onkyo HF Player. Этот плеер из MP3 и FLAC может конвертировать в DSD64 и 128. При помощи Onkyo HF Player ты можешь слушать практически любую музыку через простой ФНЧ. Жаль, конечно, что плеер не бесплатен: для Android он стоит 699, а для iOS — 749 рублей.

Воспроизведение DSD через ФНЧ выигрывает по сравнению с классическим способом воспроизведения через ЦАП.

Во-первых, звук получается гораздо лучше, чем на многих ЦАП.

Почему так? Основная составная часть дельта-сигма-ЦАП — это цифровая обработка сигнала. Представь сложный цифровой фильтр с многократным оверсемплингом, модулятором 5–7-го порядка с dithering или noise shaping. Тут требуется серьезная вычислительная мощность, которая в ЦАП ограничена, тогда как в современных процессорах для смартфонов она в разы больше. Соответственно, на смартфоне можно реализовать более качественную цифровую фильтрацию и модуляцию.

Почему производители не добавляют мощные процессоры в ЦАП — загадка! Может, экономят, а может, считают, что обработкой должно заниматься отдельное устройство. Например, Asahi Kasei Microdevices (AKM) выпускают отдельно DSP, которые занимаются конвертацией, в том числе c оверсемплингом, — и отдельно ЦАП с режимом bypass.

INFO

Чтобы освежить в памяти термины и теорию, смотри мою прошлую статью о цифровом звуке.

Во-вторых, воспроизведение DSD через ФНЧ существенно экономит деньги, ведь стоимость хорошего ЦАП, даже китайского, будет гораздо выше.

Итого

Плюсы
  • Такое устройство легко сделать самому, даже если ты начинающий радиолюбитель.
  • Есть возможность подключения к мобильным устройствам.
  • Стоимость от 2000 рублей.
  • На телефоне с батареей в 3200 мА ⋅ ч этот самодельный ЦАП проработал больше шести часов в режиме прослушивания с конвертацией PCM — DSD в реальном времени.
  • Звук, по моим ощущениям, лучше многих топовых ЦАП.
Минусы
  • Выход одноуровневый, поэтому шум будет коррелирован с основным сигналом. При слабом уровне сигнала возможны небольшие искажения.
 

Сборка стационарного варианта

Этот вариант будет гораздо сложнее в реализации, но оно того стоит.

Железо

Наилучший результат даст использование BeagleBone black или BeagleBone green в качестве I2S-конвертера.

BeagleBone — единственный микрокомпьютер, для которого есть открытый драйвер с поддержкой подключения внешнего генератора тактовой частоты. К внешнему генератору можно подключить как сам конвертер, так и ЦАП, если он есть. Это позволит снизить количество ошибок при передаче данных по I2S. А еще мы можем сами выбирать, какого качества и какой частоты генератор использовать.

ЦАП для прослушивания DSD в этом варианте не требуется. Но важно подключение качественных генераторов 45 158,4 и 49 152 кГц при воспроизведении DSD 256, 512, потому что частота однобитного сигнала будет очень высокой — 11 289,6 и 22 579,2 кГц соответственно. Частота тактового генератора MCLK должна быть хотя бы вдвое больше частоты передаваемых данных, иначе могут возникнуть ошибки при передаче.

Внешний клок

Первое, что тебе потребуется, — внешний генератор тактовой частоты, в простонародье «клок». У тебя, как обычно, два пути: если ты дружишь с паяльником, можешь собрать его самостоятельно, если нет — купить готовое решение.

У Павла Погодина есть проект DSC — ЦАП под открытой лицензией. На сайте выложена документация к ЦАП Павла, там же ты найдешь схему реклокера для BeagleBone. В этой схеме реализовано подключение внешних клоков и автоматическое переключение их под частотные сетки 44,1/48. Можешь взять ее за основу и собрать нечто похожее.

Эта плата разработана для воспроизведения как PCM, так и DSD, но если тебя, как и меня, интересует исключительно воспроизведение DSD, то можно обойтись только следующей частью схемы.

INFO

Все названия элементов и номиналы указаны в документации (PDF).

И конечно, самый простой, но затратный способ — купить готовые генераторы.

Самые дешевые из более-менее приемлемых генераторов выглядят так
Самые дешевые из более-менее приемлемых генераторов выглядят так

Чтобы генератор автоматически переключался под частотные сетки 44,1/48, придется все-таки взять в руки паяльник и распаять селектор U7 (74AUP2G157) указанный на схеме выше, — иначе генераторы надо будет переключать вручную. Например, для прослушивания CDDA, MP3 и DSD потребуется только генератор 45 158,4 кГц, но, если ты захочешь слушать «винилрипы» с частотой дискретизации 96 и 192 кГц, понадобится уже генератор 49 152 кГц.

После подключения генератора к BeagleBone black (контакт P9_25) останется только вывести два канала DSD (контакты P9_30, P9_41).

Номера контактов указаны для дистрибутива mini Botic7 (архив), собранного Павлом Погодиным. К контактам DSD1 и DSD2 нужно подключить фильтр, и устройство будет готово к работе.

Софт

Теперь поговорим о программной части. Начнем с драйвера.

Для BeagleBone black/green существует открытый драйвер, написанный участником форума diyaudio.com под ником Miero.

У драйвера немало настроек, все они описаны на сайте. Менять их можно в конфиге /boot/uEnv.txt. Например, можно задать вывод PCM и DSD на разные контакты, длину кадра LRCLK (актуально для мультибитов) или определенную частоту генератора тактовой частоты.

В нашем случае менять ничего не придется. Нужно только скачать прошивку для BeagleBone black (архив), в ней уже имеется этот драйвер. Скачанную прошивку записываем на карту microSD при помощи, например, программы dd в Linux или Rufus в Windows. Затем вставляем карту в разъем на микрокомпьютере, зажимаем кнопку рядом с этим разъемом и подключаем питание. Через несколько секунд кнопку можно отпускать. Плата должна начать загрузку, весело мигая светодиодами.

По умолчанию будет загружен профиль с клиентом для HQPlayer, именно он нам и нужен. Также прошивку можно скопировать во внутреннюю память BeagleBone black, инструкции есть на сайте Павла Погодина.

HQPlayer — лучший вариант для воспроизведения с конвертацией PCM в DSD, поскольку у него самый большой набор модуляторов и цифровых фильтров. Он поддерживает 11 сигма-дельта-модуляторов, 30 цифровых фильтров, oversampling до 98,304 мГц (DSD 2048), а также технологию CUDA.

Конечно, oversampling в DSD 2048 — это перебор, тем более в нашем случае: BeagleBone black и Amanero могут воспроизводить максимум DSD 512. Плюс далеко не все компьютеры потянут даже DSD 256 на «тяжелых» цифровых фильтрах со сложными модуляторами. Цифровые фильтры в HQPlayer очень качественные и требуют большой вычислительной мощности.

У этого плеера есть свои минусы. Во-первых, плеер платный, причем не из дешевых; во-вторых, он поддерживает крайне ограниченный набор форматов: CDDA, FLAC, DSDIFF, DSF, RIFF, AIFF — и, к сожалению, не поддерживает CUE. Впрочем, его не обязательно покупать. Плеер в пробной версии позволяет прослушивать музыку без ограничений в течение 30 минут, а после просто закрывается. И ничто не мешает открыть его заново и использовать еще много раз по полчаса, пока не надоест.

Все недостатки перевешивает его вариативность и отличный звук. Плеер позволяет добиться очень качественного звучания. Цифровой фильтр и модулятор — это основная часть сигма-дельта-ЦАП. Их различные варианты как раз и реализованы внутри этого плеера, что позволяет подобрать качество цифровой обработки в зависимости от быстродействия компьютера. При использовании с BeagleBone black или Amanero HQPlayer становится тонко настраиваемым сигма-дельта-цифроаналоговым преобразователем с огромными вычислительными ресурсами в виде твоего компьютера.

Для подключения к BeagleBone black в настройках HQPlayer нужно выбрать в выпадающем меню Backend пункт NetworkAudioAdapter. В выпадающем списке Device должен появиться Botic7: Botic при условии, что основной компьютер с HQPlayer и микрокомпьютер BeagleBone находятся в одной подсети и имеется DHCP-сервер. В параметре Default Output Mode выбираем SDM (DSD), параметр Bit rate (/limit) для начала лучше выставить 44,1k х64. В третьей и четвертой версиях плеера настройки выглядят по-разному.

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

Теперь к DSD-выходам BeagleBone black нужно подключить ФНЧ. Чтобы убрать шумы от питания и пульсации светодиодов, лучше всего использовать гальваническую развязку. Вот и все, устройство готово!

Итого

Плюсы
  • Структура получилась почти open source: BeagleBone black изначально был открытым проектом, на официальном сайте есть документация и полная схема микрокомпьютера, исходные коды I2S-драйвера выложены в открытом доступе, схема реклокера (генератора тактовой частоты) также опубликована под открытой лицензией. Единственный проприетарный компонент здесь HQPlayer — жаль, что нет альтернативы с открытым исходным кодом.
  • BeagleBone black обойдется в 3800 рублей, генераторы и расходники — от 600 рублей.
  • Устройство отличается превосходным звуком, особенно при воспроизведении чистого DSD или конвертации PCM через HQPlayer.
Минусы

Минусы обнаружились только у плеера, их я уже перечислил.

 

Проект DSC и ПЛИС

При воспроизведении через ФНЧ есть лишь один недостаток — сигнал на выходе одноуровневый. Но при высокой частоте дискретизации влияние шума сводится к минимуму, к тому же при определенных затратах можно решить и эту проблему.

Проект самодельного ЦАП DSC, созданный Павлом Погодиным, может стать высококлассной альтернативой технологии DEM. Но, судя по всему, коммерческий ЦАП по схеме Погодина будет дороговат. Даже китайские самопальные платы, собранные по первым версиям DSC, стоили больше 10 000 рублей, а ведь сверху прибавится цена прецизионных компонентов, питания и корпуса.

Можно, конечно, копить деньги и ждать выхода ЦАП, но меня, например, это не устраивает. Поэтому я решил перенести проект DSC на ПЛИС (программируемая логическая интегральная схема). Надеюсь, Павел не останется в обиде за это. 🙂

Для сборки мне понадобится собственно ПЛИС. Я выбрал одну из самых дешевых — Altera MAX II (EPM240T100C5). В ней 240 логических элементов и 100 выводов. Для современных ПЛИС это скромные показатели, зато и цена скромная — от 500 рублей.

За основу была взята схема версии DSC 2.5.2/2.6.2 (PDF).

Проект DSC основан на сдвиговом регистре 74AHCT595; восемь таких регистров формируют один звуковой канал, правый или левый. Первые четыре регистра подключены друг к другу и составляют один большой сдвиговый регистр на 32 параллельных выхода, эти четыре регистра формируют положительную волну. Другие четыре регистра подключены друг к другу аналогичным образом и формируют отрицательную волну. На вход первых четырех регистров подаются DSD-данные в исходном виде, а на вход других четырех — эти же данные, но с инверсией. К параллельным выходам этих регистров подключены резисторы, соединенные в две шины — одна для положительной волны, другая для отрицательной. Эти шины формируют балансный аудиовыход.

Принцип работы DSC похож на принцип работы мультибитного ЦАП, только данные на выходах меняются постоянно, а не по кадрам LRCK и каждый бит данных имеет одинаковый вес. Выходной сигнал в таком ЦАП, по сути, представляет собой сумму отдельных сигналов с выходов регистров.

Графический проект

В библиотеке среды разработки Quartus Prime, в которой и будет компилироваться прошивка для ПЛИС, есть готовая модель сдвигового регистра, именно того, что используется в оригинальном DSC, 74AHCT595.

Также в Quartus Prime можно собрать логическую схему полностью в графическом виде, не изучая никаких языков описания и программирования. Сделать схему просто, как в программах для рисования схем.

Но есть проблема: в выбранный ПЛИС Altera MAX II не влезает целиком схема оригинального DSC, так что ее придется упростить. У MAX II всего 100 выводов (причем не все из них можно использовать), а для DSC нужно как минимум 128 выводов. Придется отказаться от балансного выхода! Чуть позже я расскажу, как сделать полный вариант. А пока отложим в сторону сдвиговые регистры отрицательной волны и лишние логические элементы для инверсии сигнала.

Остается только назначить выводы, скомпилировать проект и загрузить в ПЛИС.

После загрузки прошивки нужно подключить резисторы к пинам ПЛИС и объединить их выходы по оригинальной схеме DSC.

Далее нужно подключить ФНЧ и конденсатор к общему выходу резисторов, чтобы убрать паразитные высокие частоты и постоянную составляющую сигнала.

Выход ФНЧ подключаем к усилителю, а на входные контакты подаем DSD c BeagleBone black или Amanero. Облегченная версия проекта DSC готова!

Проект на Verilog, stereo

Для оптимизации и расширения возможностей я перенес логику работы DSC на язык описания схем Verilog HDL. В результате количество используемых логических элементов в ПЛИС сократилось почти вдвое. Для наглядности я создал смешанный проект, где верхний уровень представлен в графическом виде, а вложенные блоки описаны кодом Verilog.

Блоки SR — это сдвиговые регистры, по сравнению с 74AHCT595 они значительно упрощены. На языке Verilog их код выглядит так:

module SR #(parameter output_pins = 32)
(
  input clk, data,
  output [0:output_pins-1]out
);

reg [output_pins-1:0]data_reg;
always @(posedge clk)
data_reg <= {data_reg[output_pins-2:0], data};
assign out = data_reg;

endmodule

В этом варианте специально для BeagleBone black добавлен селектор для переключения внешних генераторов тактовых импульсов. На большинстве качественных генераторов тактовых импульсов имеется управляющий контакт. Когда на этом контакте логическая единица, генератор работает, а когда логический ноль — нет. Располагаются управляющие контакты обычно там, где нарисован «ключ» — это небольшой кружок в одном из углов генератора.

Таким образом, если соединить выходы двух генераторов через резисторы номиналом 33 Ом, можно реализовать переключение под необходимую частотную сетку. Ниже приведен модуль, который переключает состояние контактов в зависимости от частоты дискретизации. Контакт P9_24 на BeagleBone black следует соединить с контактом CLK_select на ПЛИС, а выходы Clock44, Clock48 подвести к управляющим входам генераторов.

Исходный код:

module switch(
  input clk_select,
  output clock44,
  output clock48
);

assign clock44 = clk_select ? 1 : 0;
assign clock48 = clk_select ? 0 : 1;

endmodule

Чтобы можно было автоматически включать-выключать звуковой выход, добавлена логическая схема Mute согласно оригинальной схеме DSC.

Исходный код:

module Mute(
  input mute,
  input dsd_on,
  output mute_out
);

assign mute_out = ~(mute | ~dsd_on);

endmodule

Элемент Mute реализует только логику переключения состояния контакта Mute_OUT, для реальной работы Mute нужно устройство, которое отключает аудиовыход ЦАП. Есть различные способы реализации. Например, в DSC версии 2.5.2 используется управляемый аналоговый переключатель. Что именно использовать — дело вкуса. Можно обойтись вообще без Mute, ничего страшного не произойдет, только будут слышны одиночные щелчки при ручном переключении треков.

Проект на Verilog, mono

Покажу вариант реализации DSC, наиболее близкий к оригиналу. Помнишь, оригинальный проект не влезал на MAX II из-за недостаточного количества выходных портов?

У этой проблемы есть два решения: первое — купить ПЛИС с большим количеством портов, второе — купить две ПЛИС и реализовать правый и левый канал раздельно. Одна ПЛИС с достаточным количеством выходных портов гораздо дороже, чем две ПЛИС Altera MAX II, так что выбор очевиден. А еще считается, что dual mono — двойное моно — звучит лучше, чем обычное стерео. Теперь у нас есть отличный повод проверить это утверждение!

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

На вход data подается выход данных правого или левого канала DSD, а на вход clk — синхронизация DSD. На выходах получаем прямой и инвертированный поток данных DSD.

module Inverter (
  input data, clk,
  output reg data_out = 0, invert_data_out = 0
);

reg check = 0;
always @(posedge clk)

begin
  if(data) check = 1;
  if(check)
  begin
    data_out <= data;
    invert_data_out <= ~data;
  end
end

endmodule

Далее, как и в предыдущих версиях, подключаем созданный элемент к сдвиговым регистрам.

К выходам сдвиговых регистров нужно припаять резисторы, как в оригинальной схеме. В результате получается балансный выход. На первой ПЛИС — правый канал dual mono, на второй ПЛИС — левый. Выходы P9_30 (DSD1) и P9_41 (DSD2) микрокомпьютера BeagleBone black нужно подключить к входу DSD1 на первой ПЛИС и такому же входу на второй ПЛИС. Выход микрокомпьютера P9_31 (BCK) будет общим для обеих ПЛИС, его следует подключить к входу dsd_clk.

Я не указываю номера контактов ПЛИС, потому что проекты, скорее всего, будут обновляться и номера могут измениться. Чтобы узнать номера и при необходимости поменять их под свои цели, открой проект в Quartus Prime.

В качестве резисторов на выходах лучше всего использовать готовые резисторные сборки. Существуют сборки хорошей точности — они дополнительно улучшат характеристики звучания. Трансформаторы подключаются к общей шине резисторов, как в оригинальном DSC.

  • R_OUT_HOT — вход для шины первого регистра.
  • R_OUT_COLD — вход шины второго регистра.

Все, мы собрали проект, максимально похожий на DSC! Надеюсь, по звучанию он будет не сильно уступать оригиналу. В идеале нужно переделать питание, но даже на моем тестовом ПЛИС с резисторами с точностью 1% и стандартным питанием от импульсного блока звук получился прекрасным. А с качественным питанием и точными резисторами будет еще лучше!

Итого

Плюсы
  • Стоимость от 600 рублей плюс BeagleBone black или Amanero.
  • Звук еще лучше, чем при воспроизведении DSD через ФНЧ.
  • Возможность полной кастомизации и добавления новых алгоритмов работы.
  • Значительно проще в реализации по сравнению с оригинальным DSC.
Минусы

Минусы не обнаружены (по крайней мере пока).

 

Заключение

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

Положа руку на сердце, скажу, что, какие бы цифровые фильтры, частоту дискретизации и модуляторы я ни использовал, чистый DSD все равно звучит лучше. К тому же при воспроизведении он не требует никакой цифровой обработки: не нужны ни фильтры, ни модуляторы, ни noise shaping — отчасти потому, что цифровая обработка уже выполнялась при записи.

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

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    2 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии