62DAC: целостность сигналов
Что на этой плате ограничивает два AD1862 и что изменить, чтобы получить от них все 20 бит. Каждое число здесь получено бесплатными инструментами на реальной разводке из KiCad.
В каком состоянии плата
Разводка в основе правильная: два сплошных земляных слоя, короткие суммирующие узлы, развязка в 2–3 мм от каждого вывода питания AD1862. Реальные ограничения связаны со временем: как Pico формирует частоту выборки, как разведены общие линии тактирования и защёлки и как прошивка ими управляет.
паразитные составляющие −75…−80 dBFS (тон 10–20 кГц)
точная частота: нет
CLK на U1: 13,9 пс/мВ
точка-точка: 0,35 пс/мВ
CLK → данные: ≤ 12 мВ
с добавленным 10 мкФ X7R: ~0,02 Ом
худший обратный выброс 2,24 В > VIH 2,0 В
1/90–1/50 МЗР·выборки
фронт LE: 0,6–0,8 фКл, ≈ −150 дБ
(1 МЗР на выходе ≈ 2,7 мкВ)
Изменения по соотношению пользы и труда
Изменения в прошивке ничего не стоят и бьют по самому большому эффекту, поэтому они первые. У каждого пункта указан источник: моделирование этой разводки, diyAudio (номера сообщений в ветке форума об AD1862, № 354078) или даташит.
- Тактировать PIO от частоты, точно кратной частоте выборки
Установите clk_sys 110,25 МГц для 44,1/88,2/176,4 кГц (PLL: REFDIV 2, FBDIV 147, выходные делители 4 и 2; VCO 882 МГц) или 129,6 МГц для 48/96/192 кГц (VCO 1296 МГц, ÷5÷2). Напишите программу PIO так, чтобы каждая выборка занимала ровно 2500 (или 2700) системных тактов при целочисленном делителе. Обе частоты в пределах номинала RP2040 133 МГц, меняется только прошивка.
При 125 МГц из SDK и дробном делителе фронты LE гуляют на 4–7 нс по фиксированному шаблону, давая паразитные составляющие −75…−80 dBFS на тоне 10–20 кГц. С точной частотой эта ошибка равна нулю; остаётся случайный джиттер PLL, которого в даташите нет. Смена семейства частот выборки требует перенастройки системного PLL; USB работает от своего PLL и не затрагивается. Частоту тогда задаёт ЦАП, поэтому USB-аудио должно работать в асинхронном режиме с конечной точкой обратной связи.
моделирование (модель тактирования) · даташит RP2040 §2.18, §3.5.5
- Останавливать тактирование до спада LE и держать шину неподвижной в тишине
Выдвигать 20-битное слово с выравниванием вправо, остановить CLK, удерживать DATA, затем опустить LE через 3–4 битовых периода. В тишине держать CLK, LE и DATA неподвижными. Программа PIO делает это бесплатно.
Тогда смоделированная наводка CLK→LE в 51–88 мВ никогда не совпадает с фронтом LE, и полке от Т-разветвления нечего превращать в джиттер момента выборки. Сборщики в ветке измерили остаток на частоте выборки, эквивалентный примерно 1 мкА, который исчезает при остановке тактов.
моделирование · diyAudio #3957, #4277, #6513, #6533–6534
- Оставить выводы RP2040 с медленной скоростью нарастания и током 4 мА (по умолчанию)
Фронт 3 нс снижает чувствительность к джиттеру на U1 при Т-разветвлении с 13,9 до 1,15 пс/мВ на CLK и с 3,8 до 1,1 пс/мВ на LE. Заодно наводка CLK→LE падает с 88 до 51 мВ. Не включайте быстрый slew на этих четырёх выводах.
моделирование (ngspice + openEMS)
- Дать каждому ЦАП свой вывод LE, а лучше и свой CLK
Развести два GPIO Pico вместо одного, каждый через свой последовательный резистор возле Pico. При токе 4 мА на этих трассах 67 Ом подходит примерно 27 Ом. Side-set в PIO переключает оба вывода в одном такте, так что ЦАП остаются синхронными. Оба ЦАП тогда видят один чистый фронт с 0,35 пс/мВ, а резонанс дерева на 405 МГц исчезает.
моделирование · 2 резистора + 2 короткие трассы
- Перетактировать LE у ЦАП от малоджиттерного аудиогенератора
Подайте аудиогенератор 45,1584 или 49,152 МГц (или вдвое ниже) на GPIO20 (GPIN0, до 50 МГц) и синхронизируйте от него PIO: либо clk_sys от этого входа, либо PIO ждёт его фронтов. Поставьте рядом с ЦАП сдвоенный D-триггер (класса 74LVC74), тактируемый тем же генератором, чтобы каждый фронт LE брался от генератора, а не от PLL и выходов Pico.
Каждая половина триггера ведёт свой ЦАП по короткой трассе, что заодно убирает Т-разветвление. При джиттере генератора около 2 пс ошибка момента выборки остаётся ниже −135 dBFS даже для полномасштабного тона 20 кГц.
моделирование (модель тактирования) · даташит RP2040 §2.15 · diyAudio #870, #944, #1787
- Добавить 10 мкФ X7R рядом с каждым 100 нФ на ±VL и ±VS
Это выравнивает область 0,2–0,5 Ом и убирает антирезонанс на 4,5 МГц: импеданс от 200 кГц до 5 МГц падает примерно до 20 мОм. Остаётся небольшой горб 0,3 Ом около 100 кГц, всё равно далеко выше звукового диапазона.
моделирование (модель PDN в ngspice)
- Вкладываться в стабилизаторы, а не в ёмкость на плате
Ниже 20 кГц импеданс шины — это импеданс самого стабилизатора. Лучшие результаты сборщики получали на малошумящих LDO класса LT3045/LT3094. Не ставьте ферритовые бусины в аналоговые шины.
моделирование · diyAudio #893, #2819, #11631
- Поставить земляной via в пределах 0,5 мм от каждого сигнального via
У шести переходных отверстий на CLK, D_L и D_R ближайший земляной via сейчас в 1,6–2,6 мм. На этих переходах между слоями возвратный ток заметно расплывается.
моделирование (карта возвратного тока)
- C0G для конденсаторов 47 пФ и место под шунт суммирующего узла
C31, C36, C50 и C51 должны быть C0G. По желанию добавьте незапаиваемое посадочное место под шунт 1–2 нФ C0G от суммирующего узла на землю, как в схеме с AD1862 из даташита AD797. Мнения сборщиков о его пользе расходятся.
diyAudio #10842, #1970, #2716, #4960
- Не запаивать подстройку старшего разряда и защитить порядок включения питания
Подстраивать только по БПФ на −60 dBFS; неверно выставленный подстроечник добавляет 20–30 дБ нечётных гармоник. Поскольку в каждой шине есть съёмная перемычка, поставьте диод Шоттки, чтобы −VL никогда не опускалось ниже −VS.
diyAudio #4770–4772, #10842 · предельные режимы из даташита
Как моделировалась плата
Геометрия меди взята напрямую из 62DAC.kicad_pcb через собственный полигональный движок KiCad: каждая трасса, площадка, ствол переходного отверстия и залитая зона, по слоям. Стек JLC04161H-7628: препрег 0,21 мм (εr 4,4) между каждым внешним слоем и его земляным слоем и ядро 1,065 мм.
- Полноволновая модель: openEMS 0.37 FDTD, собранный из исходников и запущенный на GPU M1 через Metal. Модель охватывает цифровую шину, обе панельки AD1862 и оба каскада I/V: вырезку 43 × 65 мм, 11,2 млн ячеек. Все 31 конденсатор в этой области — последовательные R‑C элементы. Активная линия имеет источник 73 Ом (резистор 33 Ом + ~40 Ом выхода RP2040); пассивные линии нагружены на 73 Ом со стороны Pico; каждый вход ЦАП — 5 пФ; каждый суммирующий узел I/V — 50 Ом.
- Схемотехническая модель: модели CLK и LE на линиях передачи в ngspice для перебора параметров; модель PDN с измеренными расстояниями от конденсаторов до выводов.
- Тактирование выборок: модель делителя PIO RP2040 (даташит §3.5.5) и ограничений PLL (§2.18) со спектром выхода ЦАП для каждой схемы тактирования.
- Падение напряжения на земле: резистивный решатель на растеризованной заливке In1 + In2, связанной через каждый земляной via и ствол вывода.
Проверка модели
| Трасса 0,2 мм на F.Cu над In1 | Z0 | εeff | Примечание |
|---|---|---|---|
| Формула, полоска нулевой толщины (Хаммерстад–Йенсен) | 72,8 Ом | 3,16 | эталон для листовой модели FDTD |
| Формула, медь 35 мкм | 67,0 Ом | 3,19 | то, что на реальной плате |
| openEMS, ячейки 0,2 мм, линии по краям | 42,5 Ом | 3,52 | слишком грубо |
| openEMS, ячейки 0,1 мм | 62,0 Ом | 3,26 | сходится |
| openEMS, 0,15 мм с правилом краёв ⅓–⅔ (использовано для платы) | 73,8 Ом | 3,19 | в пределах 1,4 % от эталона |
Формы сигнала CLK в ngspice и openEMS совпадают: выброс 0,12–0,18 В при фронте 1 нс, та же пороговая полка на U1 и тот же звон ~405–430 МГц. Дерево звенит около 20 нс — дольше, чем практично моделировать, поэтому хвост каждого пробника после импульса продолжен собственными модами платы, подобранными совместно по всем пробникам. Ошибка подгонки хвоста — 2–11 % для большинства пробников и 23 % для IOUT_L. Цифры наводок ниже стоит считать с точностью ±25 %.

Частота Pico задаёт моменты выборки
В ЦАП без передискретизации каждая выборка появляется на выходе в момент спада LE, поэтому любая ошибка во времени спада LE становится ошибкой амплитуды. LE формирует программа PIO, а PIO тактируется от системной частоты через дробный делитель 16.8. В даташите он описан как дельта-сигма первого порядка: чтобы получить нецелое отношение, он растягивает часть периодов с n до n+1 системных тактов. При частоте SDK по умолчанию 125 МГц для 44,1 кГц нужно 2834,47 такта на выборку, поэтому фронты LE ложатся на сетку тактов по 8 нс по повторяющемуся шаблону.

Модель сдвигает каждую ступеньку выходного сигнала ЦАП на ошибку её LE и считает спектр выхода для тона −1 dBFS. Выход квантован до 20 бит, так что собственный порог AD1862 виден для сравнения.

| Схема тактирования | Ошибка LE | Тон 1 кГц | 10 кГц | 20 кГц | Отклонение частоты |
|---|---|---|---|---|---|
| 125 МГц, дробный делитель, 64 такта на выборку | 4 нс размах | вне полосы* | −80 dBFS | −76 dBFS | −12 ppm |
| 125 МГц, дробный делитель, 96 тактов на выборку | 7 нс размах | −98 dBFS | −79 dBFS | −75 dBFS | −56 ppm |
| Точно 110,25 МГц, принято 30 пс случайного | 30 пс скз | −136 dBFS | −117 dBFS | −113 dBFS | 0 |
| Аудиогенератор + триггер, ~2 пс | 2 пс скз | −159 dBFS | −140 dBFS | −137 dBFS | 0 |
Значения — суммарная ошибка от джиттера в полосе 20 Гц – 20 кГц относительно полной шкалы, для тона −1 dBFS при 44,1 кГц. * При 64 тактах шаблон чередуется каждую выборку, и ошибка тона 1 кГц попадает на 21,05 кГц, чуть выше звуковой полосы. Где окажутся паразитные составляющие, зависит от деталей прошивки.
С точной частотой остаётся случайный джиттер от PLL и выходных выводов Pico. В даташите его значения нет, поэтому график ниже показывает, во что обходится любая его величина. Чтобы остаться ниже порога AD1862 (~−120 дБ), нужно около 10 пс скз для полномасштабного тона 20 кГц или около 160 пс на 1 кГц. Хороший аудиогенератор с перетактированием через триггер даёт единицы пикосекунд.

Фронты CLK и LE на выводах AD1862
CLK и LE выходят каждый с одного вывода Pico, проходят один резистор 33 Ом и разветвляются. CLK идёт 27,8 мм до U1 и 80,2 мм до U2; LE — 31,9 и 65,3 мм. Поэтому ближний ЦАП получает фронт в два шага: половина перепада приходит сразу, а остальное ждёт отражения из дальней ветви. При быстром фронте эта ступенька попадает внутрь входной пороговой зоны 0,8–2,0 В.

| Линия · фронт | Топология | Время в 1,2–1,8 В, U1 | Сдвиг момента на мВ шума, U1 | U2 |
|---|---|---|---|---|
| CLK · 1 нс | общий, Т-разветвление (как сейчас) | 1,14 нс | 13,9 пс/мВ | 0,47 пс/мВ |
| LE · 1 нс | общий, Т-разветвление (как сейчас) | 0,74 нс | 3,84 пс/мВ | 0,51 пс/мВ |
| CLK или LE · 1 нс | свой вывод на ЦАП, 27 Ом | 0,20 нс | 0,35 пс/мВ | 0,35 пс/мВ |
| CLK · 3 нс | общий, Т-разветвление (как сейчас) | 0,57 нс | 1,15 пс/мВ | 1,17 пс/мВ |
| LE · 3 нс | общий, Т-разветвление (как сейчас) | 0,57 нс | 1,09 пс/мВ | 1,19 пс/мВ |
| CLK или LE · 3 нс | свой вывод на ЦАП, 27 Ом | 0,55 нс | 0,92 пс/мВ | 0,92 пс/мВ |
Что это значит для звука. Пусть на LE во время его спада на U1 при быстрых фронтах лежит 50 мВ шума, коррелированного с данными. Это сдвигает момент выборки примерно на 190 пс, что для полномасштабного тона 20 кГц даёт ошибку около −96 dBFS — далеко выше собственного шумового порога AD1862 (~−120 дБ). Соединение точка-точка снижает её примерно до −116 dBFS. Остановка тактов убирает сам источник шума.


Рефлектометрия (TDR) и входной импеданс дерева CLK
Со стороны резистора 33 Ом драйвер видит 26–46 Ом на первых сантиметрах: две ветви по 67 Ом параллельно, ещё ниже из-за переходных отверстий и выводов ЦАП. Во входном импедансе резкие антирезонансы на 405 МГц и около 930 МГц. На этих частотах источник не может поглощать энергию, поэтому дерево и продолжает звенеть. Пространственное разрешение этой TDR около 25 мм — его задаёт полоса моделирования 1,4 ГГц.

Сколько цифрового шума доходит до аналоговой части
Суммирующий узел I/V (вывод 11 AD1862 — вывод 2 OPA134) в каждом канале длиной всего 3,4 мм и лежит в стороне от шины. Один импульс CLK вносит в него пиковый ток 0,15–0,34 мкА. Суммарный заряд за фронт — 0,5 фКл в левом канале и 0,7–0,8 фКл в правом. Один МЗР, удерживаемый одну выборку при 44,1 кГц, — это 43 фКл. Допустим, на выборку приходится 32 фронта тактов и все они складываются, а не компенсируются парами нарастающий/спадающий. Получится около 1 нА среднего тока — примерно −120 дБ относительно полной шкалы ±1 мА, то есть на уровне собственного шума AD1862. На практике пары в основном компенсируются.

Когда активен LE
Спад LE — момент, когда AD1862 обновляет выход, поэтому во втором полноволновом прогоне активным был LE, а CLK молчал. Фронт LE вносит 0,6 фКл в левый суммирующий узел и 0,7–0,8 фКл в правый. Это происходит раз за выборку и одинаково каждую выборку, то есть не зависит от данных. В пересчёте на средний ток это около 35 пА, примерно −150 дБ относительно полной шкалы.
В свою очередь LE наводит на CLK у U1 55 мВ (фронт 3 нс) или 89 мВ (фронт 1 нс). Это намного ниже порога переключения ~1,4 В, так что ложный бит не защёлкнется. На графике для 1 нс также видна полка от Т-разветвления на спаде LE у U1, около 1,65 В. Именно этот фронт защёлкивает ЦАП.


Куда на самом деле уходит энергия CLK



Падение напряжения на земле от собственного тока ЦАП
Лестница R‑2R возвращает зависящий от сигнала ток через выводы 9 и 12 AD1862. Любое напряжение на слое между этими выводами и опорной землёй ОУ прямо добавляется к выходу. При токе 1 мА от земляных выводов каждого ЦАП к разъёму питания J1 разница составляет 0,59 мкВ (левый) и 0,60 мкВ (правый). Это около 0,2 МЗР на мА на выходе, так что земляной слой не ограничивает.

Развязка со стороны каждого вывода питания AD1862
У каждого вывода питания есть 100 нФ в 2,0–2,6 мм и электролит 47–100 мкФ в 4–7,5 мм. Выше 10 МГц кривую определяет индуктивность панельки DIP и выводов (около 4 нГн), которую никакие изменения платы не уберут. От 100 кГц до 5 МГц доминирует ESR электролитов с антирезонансом относительно 100 нФ около 4,5 МГц. 10 мкФ X7R рядом с каждым 100 нФ исправляет эту полосу.

Допущения, которые стоит помнить
- Выходное сопротивление RP2040 (40 Ом при 4 мА) и входная ёмкость AD1862 (5 пФ с панелькой) — типовые значения, не измеренные. Выводы сохраняются во всём переборе 2–12 мА.
- Суммирующий узел на высоких частотах смоделирован как 50 Ом. Реальный узел — вход OPA134 параллельно с 47 пФ на землю и 47 пФ на выход, так что фактический ток может быть немного больше или меньше.
- Медь — лист нулевой толщины, без паяльной маски. Реальная медь 35 мкм с маской снижает Z0 с 73,8 Ом примерно до 65 Ом, что лишь немного укорачивает полку.
- Модель тактирования точно воспроизводит шаблон делителя. Случайный джиттер PLL и выходов RP2040 Raspberry Pi не указывает; случаи 30 пс и 2 пс — допущения, а график показывает цену любой величины.
- Полноволновая модель — вырезка 43 × 65 мм. Модуль Pico и правый край платы в неё не входят.
- Карты полей относительные (на вольт источника). Они показывают, где концентрируется энергия, а не запас до норм ЭМС.
- Пункты с пометкой diyAudio — отчёты сборщиков со ссылками на номера сообщений; оценивайте их соответственно.