
Всем привет! Сегодня мы продолжим разговор о DSP и цифровой обработке звука.
Я закончил разработку и создание следующей версии DSP предыдущая версия описана тут. (хотя разработку, как и ремонт, нельзя закончить — её можно только прекратить). В этой статье мы разберём устройство моего устройства)) Его плюсы, минусы, сильные и слабые стороны, а также то, что в принципе ещё можно улучшить.
Если кому лень читать много текста в конце статьи будет ссылка на видео.
Напомню, зачем вообще всё это нужно. Основная задача моего DSP — частотная коррекция мониторов, призванная немного сгладить косяки моей далеко не идеально акустически оформленной комнаты (так называемая room correction), а также, при необходимости, обеспечить возможность такой же коррекции для наушников. Ну и раз уж речь идёт о подключении наушников, неплохо было бы иметь на борту ещё и усилитель для них, способный раскачать любые, даже высокоомные модели.
Итак, план такой: сначала рассмотрим архитектуру и логику работы устройства в целом, посмотрим на него вживую — снаружи и внутри, — потом пройдёмся по отдельным модулям и особенностям их работы, а в конце обсудим плюсы и минусы, а также возможные направления доработки и улучшения.
Прошу заметить, что я занимаюсь этим без коммерческих целей, просто как хобби, и не планирую вам что-либо продавать или рекламировать. Поэтому буду говорить честно, как есть. Просто хочу поделиться результатами своей немаленькой проделанной работы.
Структурная схема
Слева на право:
Модуль DSP (ADAU1701)
Модуль кодека (АЦП/ЦАП AD1938)
Аудио плата (регуляторы громкости, предусилитель, усилитель для наушников, схема мьюта)
Программатор (На базе Cypress CY7C68013A)
Блок питания
Стрелочные индикаторы уровня с платой управления
Теперь посмотрим на внешний вид устройства и органы управления.

Здесь можно видеть VU индикаторы уровня для каждого канала, два переключателя для включения и отключения коррекции первый для канала мониторов, второй для канала наушников, энкодеры громкости (модули цифровой регулировки wondom VC01-M62429) и выход на наушники.
Общая логика работы устройства:
Аналоговый сигнал с выхода звуковой карты поступает на АЦП (кодек AD1938), оцифровывается и по шине I2S отправляется в DSP (ADAU1701) там он проходит через обработку (частотная рум-коррекция на основании измерений АЧХ акустической системы в комнате и отдельно второй канал для наушников, тоже может быть скорректирован), после обработки сигнал так же по шине I2S возвращается на ЦАП (кодек AD1938), в виде уже двух каналов: для мониторов и наушников, преобразуется обратно в аналог, канал мониторов проходит только регулятор громкости и идет на выход, на мониторы, канал наушников же, после регулятора громкости попадает на усилитель на базе микросхемы TPA6120 и идет на выход наушников.
Устройство подключается к ПК по USB. В нормальном режиме работы напряжение на USB используется только как управляющий сигнал для системы мьютирования выходов (напряжение есть — мьют снят, напряжение пропадает — выходы глушатся, чтоб избежать хлопков динамиков от переходных процессов).
Отдельным 4 полюсным переключателем можно подключить к USB установленный программатор (USBi на базе Cypress CY7C68013A), и через Sigma Studio производить настройку и прошивку ПО DSP.
Аналоговые стрелочные индикаторы подключены ко входу и соответственно показывают уровень входного сигнала, основная же их задача добавить хоть немного теплой ламповой атмосферы в это бездушное цифровое устройство.
Прошивка устройства, логика обработки и маршрут сигнала.
Перед нами экран проекта в Sigma Studio. Сигнал после цифрового входа (каналы 2 и 3) разветвляется и поступает на модуль определения клиппинга. Он представляет из себя следующую цепочку: сумматор, модуль абсолютного значения (собственно модуль модуля, такой вот каламбур) и дальше клиппинг определяется простым сравнением уровня сигнала со значением близким к 0 Дб. Если сигнал равен или превышает установленный уровень, то на пине GPIO_2 появляется логическая 1 что и сигнализирует о клиппинге.
Дальше сигнал еще раз разделяется на два стерео канала, верхний (по схеме) это канал мониторов, нижний канал наушников. На каждом канале сначала идет регулятор уровня, для того чтобы можно было скомпенсировать подъём, если он будет нужен при частотной коррекции.
undefinedСледом идет основной модуль 15 полосного эквалайзера который и позволяет скорректировать АЧХ.
Так выглядит моя коррекция, рассчитанная с помощью ПО REW (Room EQ Wizard Room Acoustics Software) Как видно хватило всего 13 полос, можно обойтись и меньшим количеством.
Переключатели MX1_2 и MX1_3 позволяют оперативно пустить сигнал в обход коррекции. Это очень полезно при настройке, для понимания того что именно меняется и как сильно. Расчет коррекции можно провести в REW, как это сделал я, или в самой Sigma Studio. Итоговый результат можно немного скорректировать по своему слуху.
Теперь давайте пройдёмся по отдельным модулям и общей философии устройства.
И начать хотелось бы с самого модуля DSP, а именно ADAU1701. Бытует некоторое пренебрежительное отношение к этой микросхеме. Правда, в основном среди комментаторов, а не тех, кто что‑то реально делает. Мол, это слабый, какой‑то ущербный и вообще недостойный DSP, годящийся разве что для озвучки открыток и игрушек.
Но это абсолютно не так.
Ещё ADAU1701 любят сравнивать со старшими моделями, такими как ADAU1452 и ADAU1467, утверждая, что они звучат лучше. Но такое сравнение само по себе лишено смысла: в старших моделях нет встроенных АЦП и ЦАП, поэтому получается, что сравнивают встроенный ЦАП ADAU1701 с каким-нибудь внешним ЦАП, подключённым к ADAU1452 или ADAU1467. Согласитесь, довольно странно.
С одной стороны, я понимаю, откуда всё это берётся. Когда целый DSP с доставкой стоит дешевле, чем один фирменный потенциометр или разъём, я уж не говорю про аудиофильские конденсаторы или операционные усилители, у многих это вызывает некий когнитивный диссонанс.
Но проблема здесь не в DSP. Это просто XXI век и современные технологии. От этого никуда не деться — придётся принять.
Теперь осмотрим, что там под капотом и насколько он действительно плох или хорош.
И прямо на первой странице даташита мы видим, что это 28/56-битный DSP. Что это означает? Давайте разбираться.
На вход и с выхода самого DSP звук передаётся с разрешением 24 бита. Встроенные ЦАП и АЦП имеют такую разрядность; если же используются внешние, они тоже могут работать с 24-битными данными. Это, в принципе, уже неплохо: теоретический динамический диапазон 24-битного сигнала составляет около 144 дБ.
Но, как мы видим, процессор для внутренней обработки использует 28 бит. То есть дополнительные 4 бита позволяют точнее выполнять вычисления над 24-битными данными и уменьшать ошибки округления.
Но и это ещё не всё! DSP может использовать внутренний аккумулятор и проводить некоторые вычисления с двойной точностью — 56 бит (!).
В SigmaStudio можно заметить, что некоторые модули обозначены как Double Precision. Это и есть обработка с двойной точностью, при которой используются 56-битные вычисления.
Много ли это? Да, это очень много!
Например, у меня Cubase на компьютере работает в режиме 32-bit float. При работе с сигналом, не выходящим за пределы диапазона, соответствующего 0 dBFS, точность мантиссы такого формата сопоставима с точностью 24-битного целочисленного представления. При этом у формата с плавающей точкой есть дополнительный запас по уровню, позволяющий работать с сигналами выше 0 dBFS без немедленного клиппинга.
А 56 бит — это более 300 дБ между уровнями, соответствующими младшим разрядам и полной шкале. В реальных физических устройствах такого просто не бывает: шумы любого аналогового тракта гораздо выше. На сегодняшний день даже лучшие ЦАП могут похвастаться динамическим диапазоном порядка 130 дБ. Это всего лишь немногим больше 21 бита полезного сигнала.
Поэтому вычисления с 56-битной точностью практически не способны внести заметные дополнительные ошибки округления в сигнал. Разумеется, это не означает, что вся система автоматически получает такой динамический диапазон: итоговые характеристики зависят от всех компонентов тракта.
Что ещё хочется сказать по поводу самих обработок.
Для домашнего DSP (или автомобильного, где такие устройства тоже часто используются) всё, что требуется делать со звуком, — это фильтрация, кроссоверная обработка, эквализация и иногда задержка. Алгоритмы этих операций достаточно просты, хорошо изучены и работают практически одинаково везде.
Это значит, что нет никакой принципиальной разницы, сделали ли вы эквализацию на DSP или в эквалайзере на компьютере. При одинаковых параметрах фильтров, частоте дискретизации и прочих условиях результат будет практически одинаковым.
Наверное, у вас возникает логичный вопрос: в чём же тогда подвох? Почему существуют более дорогие процессоры и зачем они нужны?
Конечно, технологии развиваются, и в более старших моделях могут улучшаться возможности обработки. Но основная разница между DSP чаще всего заключается не в качестве самих базовых операций, а в их возможном количестве, то есть в вычислительной мощности и объёме внутренней памяти.
Например, в моём проекте на ADAU1701 используются два блока эквалайзера с двойной точностью, каждый на два канала (стерео). В каждом эквалайзере по 15 фильтров, чего мне более чем хватает. Можно добавить ещё один эквалайзер — то есть получить три блока по 15 фильтров. А вот на четвёртый уже не хватает памяти, я проверял.
Когда действительно нужны более мощные DSP?
Когда могут потребоваться дополнительные вычислительные ресурсы и память? Вариантов на самом деле много, и то, что можно сделать на базе DSP, ограничено в основном вашей фантазией.
Но можно перечислить несколько наиболее ресурсоёмких видов обработки.
Во-первых, это различные задержки. Они требуют памяти для хранения буфера. Например, для ADAU1701, ADAU1452 и ADAU1467 максимальная задержка при работе на частоте дискретизации 48 кГц составляет примерно 40, 800 и 1600 мс соответственно.
Ещё один ресурсоёмкий вариант — FIR-фильтры, которые часто применяются для линейно-фазовой эквализации. Они могут требовать значительных вычислительных ресурсов и памяти, особенно при большой длине фильтра.
Также довольно затратны по ресурсам импульсные ревербераторы и вообще любые свёрточные эффекты. Но это уже немного другая область, и эту тему мы здесь рассматривать не будем.
Что касается моего проекта, изначально я планировал использовать ADAU1452 — просто чтобы был запас мощности. Но с ней возникли некоторые проблемы с загрузкой проекта, причём, как оказалось, довольно распространённые. В итоге я перешёл на ADAU1701, поскольку с ней таких проблем не было, а ресурсов для моих целей вполне хватает.
К слову, проблему с загрузкой ADAU1452 позже всё-таки удалось решить сменой интерфейса программирования с I²C на SPI. Но переходить на неё сейчас мне нет никакого смысла, поэтому оставил её для экспериментов и, возможно, других проектов.
Линейно-фазовые FIR-фильтры и задержка
И ещё один момент по поводу линейно-фазовых FIR-фильтров.
На первый взгляд может показаться, что это хорошее решение и повод использовать более мощные DSP, такие как ADAU1452 или ADAU1467. Но не стоит забывать об обратной стороне — задержке.
Если аудиосистема используется, например, для игры на гитаре в линию вживую, как это делаю я и, наверное, некоторые из вас тоже, то здесь могут возникнуть проблемы.
Для качественной обработки низких частот FIR-фильтр должен быть достаточно длинным. К примеру, при частоте дискретизации 48 кГц фильтр длиной 8000 отсчётов позволит получить характерный частотный масштаб порядка 6 Гц, что в принципе нормально для коррекции низа и нижней середины, где обычно сосредоточены основные комнатные моды.
Однако такой фильтр при линейно-фазовой обработке даст задержку порядка 83 мс. Это уже делает игру на инструменте в реальном времени практически невозможной из-за заметного запаздывания звука.
Схемотехника блока питания и аудио платы
Начнем с блока питания:
Здесь все относительно просто. Он собран из трех изолированных DC-DC преобразователей, это не самое дешевое решение, но за то оно позволяет отвязать устройство от сети и земляных петель и обеспечить достаточно чистое питание в небольших габаритах и без особых сложностей. В общем для DIY устройства то что нужно.
На выходе у нас есть напряжения:
+3,3В основное питание цифровой части (DSP, кодек)
+5В питание модулей регулятора громкости и ОУ на плате кодека.
+/-9В питание операционного усилителя и усилителя для наушников
+12В питание платы аналоговых стрелочных индикаторов
Аудио плата:
Здесь у нас идут два отдельных стерео канала. На мониторы и наушники. Оба проходят через модули регулировки громкости (wondom VC01-M62429), после этого канал мониторов идет на выход сразу, а канал наушников на операционный усилитель для увеличения уровня, и после на усилитель для наушников на базе TPA6120.
Так же на плате реализована схема мьютирования (глушения) сигнала, управляемая напряжением на USB. Логика ее работы такая, при включении ПК и появлении напряжения на USB она снимает глушение с выходов с некоторой задержкой, чтобы избежать щелчков от переходных процессов. А при выключении ПК наоборот, как только пропадает напряжение, сразу глушит сигнал на землю через своё внутреннее небольшое сопротивление и внешний резистор.
Итоги, плюсы и минусы
Теперь можно подвести итоги, обсудить плюсы и минусы, а также возможные направления для улучшения.
Проект в целом получился непростым и достаточно объёмным, но интересным. Главный его плюс — он работает и делает это так, как от него и ожидалось. Он позволяет точно настроить звук и скорректировать АЧХ как для мониторов, так и для наушников.
Замеры соотношения сигнал/шум


Как видно по графику, соотношение сигнал/шум более 110 Дб, гармоники находятся на уровне около -90 Дб, что, я считаю, вполне не плохо. Для примера в архиве проекта есть измерения самой звуковой карты и некоторых ЦАП которые были у меня в наличии.
Каких‑то явно заметных минусов у устройства нет. Из теоретических ограничений можно отметить двойное цифро‑аналоговое преобразование. Но, повторюсь, моя текущая звуковая карта не имеет цифровых выходов, поэтому других вариантов просто нет.
Если в будущем соберусь обновить оборудование и в новой звуковой карте будет цифровой выход, возможно, добавлю в DSP вход S/PDIF и заменю сам модуль DSP.
Что касается блока питания, линейный стабилизатор можно заменить на импульсный, поскольку устройство потребляет приличный ток — 0,15–0,3 А, — и блок питания немного греется, хотя и не критично.
С аудио платой всё хорошо: усилитель для наушников, схема мьюта — всё отрабатывает прекрасно. Единственное, что можно сделать, — добавить ещё один операционный усилитель на канал мониторов, просто в качестве буфера для лучшего согласования выходного сопротивления устройства с входным сопротивлением мониторов.
Видео с подробностями и объяснениями можно посмотреть тут:
Файлы проекта и измерений:
https://mega.nz/file/mfBzlCaA#sIgf3Qn9DcdZedJCWREPQ1mTJrAsDBiGk7HoSchpTGQ
На этом, пожалуй, всё. Если есть вопросы по теме или дополнения, пишите в комментариях!

