Практические видеоуроки по программированию процессоров Analog Devices SigmaDSP в SigmaStudio: построение тракта, фильтры, кроссоверы, органы управления и диагностика.
17 роликов · 17 показано
14:18
Регуляторы громкости со сглаживанием (Volume Control Slews)
Программные и аппаратные регуляторы громкости со сглаживанием (slew) в SigmaStudio: настройки, типы кривых и управление.10 тайм-кодов14:18
Ролик посвящён регуляторам громкости со сглаживанием (slew) и тому, как они устраняют «zipper»-шум при изменении усиления. Автор открывает проект с двумя регуляторами — дистанционным и аппаратным slew — и подробно разбирает программный slew: варианты RC Optimized (аппроксимированная кривая, экономит инструкции) и RC Accurate (математически точная кривая). Объясняется, что slew делает переход между уровнями множеством крошечных шагов за каждый период дискретизации, поэтому громкость меняется плавно и без слышимого потрескивания; приводится эксперимент для сравнения на слух. Отдельно обсуждается, когда сглаживание не нужно (разовая калибровка и настройка под конкретную колонку), и что управляемые в реальном времени элементы (громкость, mute, переключатели) обычно должны иметь slew. Далее разбирается аппаратный ускоритель slew: раздельные скорости и типы кривых для нарастания и спада (RC, линейная, постоянное время, экспоненциальная), 32-битный регистр с четырьмя подполями и настройка типа прямо из GUI, включая пользовательские (custom) значения. В финале показано управление из микроконтроллера через окно захвата: смена режима slew, а также параметры gain и target gain, по которым можно считывать текущее усиление и задавать новое через целевое значение.
Тайм-коды (10)
00:05Введение: что такое slew
— Анонс темы регуляторов громкости со сглаживанием и переход к SigmaStudio; загруженный проект с двумя регуляторами.
00:17Программный slew: RC Optimized и RC Accurate
— Открывается блок Software Slew; разбираются два варианта: оптимизированная RC-аппроксимация и точная RC-кривая.
02:46Зачем нужен slew: zipper-шум
— Объясняется, что slew даёт множество мелких шагов и устраняет потрескивание; предлагается эксперимент со сравнением двух регуляторов на слух.
03:12Когда slew не нужен и что управляется в реальном времени
— Для разовой калибровки или настройки под колонку сглаживание необязательно; но всё, что меняется в реальном времени (включая mute и переключатели), нуждается в slew.
04:25Регулируемый slew и времена нарастания
— Сравнение одиночного/множественного регулируемого slew; числа соответствуют временам нарастания, информация о них есть на EngineerZone.
06:20Аппаратный ускоритель slew и типы кривых
— Разбирается аппаратный slew rate accelerator: отдельные скорости для роста и спада, типы RC, линейный, постоянное время и экспоненциальный.
08:17Регистр аппаратного slew и настройка в GUI
— 32-битный регистр с четырьмя подполями (постоянные времени и типы кривых для нарастания и спада); выбор типа через правую кнопку и Custom-значение.
10:58Управление из микроконтроллера
— В окне захвата видно, что режим slew — один из параметров (значение 208820a по умолчанию); его можно менять на лету, как это делал бы микроконтроллер.
11:32Параметры gain и target gain
— Считывание текущего усиления через gain; для изменения нужно писать в target gain, а не в gain, и следить за обновлением индикатора.
13:40Заключение
— Итог по типам slew и управлению; просьба о лайке и подписке.
14:17
Чтение данных из ядра (Readbacks)
Механизм обратного чтения (readback) в SigmaDSP: как считывать данные из любой точки программы, различия ядер Sigma 100/200/300 и приём со сдвигом через умножение.10 тайм-кодов14:17
Ролик объясняет, что такое readback — возможность считать данные из любой точки программы DSP и вывести их в SigmaStudio. Автор показывает, что readback в ядре Sigma 300/200 — это просто инструкция: результат нужной операции помещается в специальную 32-битную (или 28-битную) ячейку памяти, которая обновляется каждый период дискретизации, а SigmaStudio по нажатию кнопки читает эту ячейку и отображает её в hex или в формате с фиксированной запятой (есть и «непрерывное» чтение примерно каждые 10 мс). Значительно более громоздко это устроено в ядре Sigma 100: используется аппаратный регистр захвата, привязанный к указателю инструкций, а регистр чтения всего 24-битный, из-за чего в окне отображается формат 5.19, а не 5.23. Из-за этого младшие 4 бита 28-битного результата теряются, что важно при работе с целочисленными управляющими сигналами (например, положением мультиплексора), тогда как для аудио эти биты обычно ниже уровня шума. Чтобы увидеть их, данные нужно сдвинуть на 4 бита влево; в ядре Sigma 300 есть арифметический сдвиг, а в ядре Sigma 100 приходится умножать на 16, причём из-за 4-битной целой части один блок умножения не принимает 16, поэтому используются два блока умножения на 4 последовательно. В завершение подчёркиваются преимущества ядра Sigma 300.
Тайм-коды (10)
00:01Что такое readback
— Возможность считать данные из любой точки программы; чтение происходит за один период дискретизации по нажатию кнопки.
00:38История и разрядность ядер
— Функция появилась в первых SigmaDSP; ядро Sigma 100 реализовало её громоздко, в Sigma 200 (28 бит) и Sigma 300 (32 бита) её улучшили.
00:5932-битное число и подключение через USBI
— Автор рисует 32-битную ячейку и биты 0–31; USB-кабель соединяет SigmaStudio на ПК с оценочной платой, где в ядре выполняется программа.
02:11Readback как инструкция и ячейка памяти
— Результат последней операции (например, сложения) сохраняется в 32-битную ячейку, а инструкция readback обновляет её каждый период дискретизации.
04:10Непрерывное чтение данных
— При включении непрерывного чтения SigmaStudio читает и показывает ячейку примерно каждые 10 мс; часть значений может пропускаться.
04:55Особенности readback в ядре Sigma 100
— Вместо ячейки используется регистр захвата, привязанный к указателю инструкций; регистр чтения только 24-битный.
06:12Формат 5.19 против 5.23
— Из-за 24 бит в окне указывается 5.19, а не 5.23; разбирается расположение целой части и точки.
07:42Потеря младших бит и необходимость сдвига
— Четыре младших бита 28-битного результата не попадают в 24-битный регистр; это критично для целочисленных управляющих сигналов, таких как мультиплексор.
10:17Сдвиг через умножение
— Сдвиг на 4 бита реализуется умножением на 16; один блок умножения не принимает 16 из-за 4-битной целой части, поэтому два блока умножают на 4 последовательно.
13:02Итог и преимущества ядра Sigma 300
— В Sigma 300 есть инструкция арифметического сдвига и большая разрядность коэффициентов, поэтому задача решается проще; завершение ролика.
30:55
ADAU1452 Capture, Params and Sequencer windows
Работа с окнами захвата (Capture), параметров (Params) и секвенсора (Sequencer) для ADAU1452 / семейства Sigma 30011 тайм-кодов30:55
На базе проекта из предыдущего видео о ADAU1452 Дэвид Тибо подробно разбирает три ключевых окна SigmaStudio. Окно захвата (Capture) фиксирует весь обмен командами между SigmaStudio и микросхемой, что позволяет детально увидеть процедуру запуска DSP: переключение на SPI, программный сброс, настройку PLL, инициализацию регистров и блочную запись программы и памяти DM0/DM1. Окно параметров (Params) даёт доступ к памяти параметров DSP с отображением данных в hex, целочисленном и формате с фиксированной точкой, показывает имена объектов и их адреса, а также позволяет вручную редактировать ячейки. Секвенсор — встроенный генератор макросов, которому можно передавать захваченные команды, группировать их в режимы и сохранять в XML для воспроизведения в один клик. Автор также разбирает параметры конкретных объектов: генератора тона, регуляторов громкости с slew и без, индикаторов уровня и биквадратных фильтров, включая расчёт удержания индикатора через частоту дискретизации.
Тайм-коды (11)
00:00Введение и оборудование
— Автор представляет тему; кратко описывает плату ADAU1452 Rev B, USB-интерфейс, вход каналов 0–1 и выход 0–1.
01:00Подготовка проекта и вставка эквалайзера
— Выравниваются элементы, вставляется фильтр второго порядка двойной точности (в этом DSP не отнимает MIPS), делается стерео и подключается к тракту.
03:34Окно захвата: назначение и запуск
— Очищается окно захвата, выполняются link/compile/download; объясняется, что окно фиксирует обмен с микросхемой, но отфильтровывает непрерывные чтения индикаторов.
04:11Просмотр процедуры запуска DSP
— В захвате видна вся последовательность: переключение на SPI, программный сброс, PLL, инициализация регистров, блочная запись программы (824 байта), DM0 и DM1, перезапуск ядра.
06:10Экспорт захвата и переход к секвенсору
— Показано выделение строк (Shift) и контекстное меню: копирование, сохранение текстом/двоично/адрес-данные/файл регистров, отправка в секвенсор.
07:10Секвенсор: генератор макросов
— Секвенсор открывается двойной стрелкой справа; это инструмент для набора команд и отправки их в DSP в нужный момент, как если бы писал микроконтроллер.
08:21Окно параметров и форматы данных
— Params показывает память параметров DSP, имена объектов и адреса; одни и те же данные отображаются в hex, целом и формате с фиксированной точкой.
11:30Hex-адреса, DC-ячейка и ручное редактирование
— Адреса переключаются в hex; разбирается DC-ячейка (значение 1.0 в 8.24); рассматриваются кнопка обновления и выделение изменённых значений красным.
13:35Режимы секвенсора и сохранение XML
— Строка добавляется в последовательность, создаются режимы, выполняется запись в железо; демонстрируется баг с копированием, переименование режимов и сохранение последовательности в XML.
19:56Разбор объектов: тон, громкость, slew
— Разбираются параметры генератора тона (усиление в дБ), регуляторов с slew и без; объясняется, что писать нужно в Target, а не в текущее усиление, и как это видно в захвате.
26:15Индикаторы уровня, фильтры и заключение
— Показано время удержания индикатора (480 = 10 мс при 48 кГц) и биквадратные коэффициенты фильтра; в заключение — обобщение по инструментам отладки.
37:14
ADAU1452 Basic Starter Project
Первый базовый проект-заготовка для ADAU1452 (Sigma 300) в SigmaStudio: от обзора плат до ввода-вывода, громкости, генератора и переключателя10 тайм-кодов37:14
Это вводное видео о ADAU1452 (семейство Sigma 300), начиная с обзора отладочных плат и USB-интерфейса, который преобразует USB в I²C/SPI и служит только для программирования и управления DSP, а не для передачи аудио. Дэвид Тибо показывает старую плату MiniZ и актуальную Rev B на базе кодека AD1938, объясняя различия между семействами 1450/1451/1452 (тактовая частота и объём памяти при одинаковом ядре). В SigmaStudio создаётся универсальный базовый проект: вход и выход, регуляторы громкости с аппаратным slew, индикаторы уровня, mute, DC-ячейка с обратным чтением для проверки связи и генератор синусоидального тона. Разбираются режимы «проектирование» и «выполнение», процедура Link-Compile-Download, устройство последовательных портов ввода-вывода, TDM/I2S и тактовые домены, а также окно вывода с отчётом о MIPS, инструкциях и памяти. В конце обсуждается переносимость программ между чипами семейства.
Тайм-коды (10)
00:00Введение и цель видео
— Автор представляет себя и объявляет первое видео о ADAU1452 (Sigma 300); рекомендует предварительно посмотреть вводное видео о Sigma DSP/SigmaStudio.
00:39Аппаратура: USB-интерфейс и отладочные платы
— Показывается USB-интерфейс как преобразователь USB в I²C/SPI для программирования; отмечается, что аудио через него не передаётся.
02:59Плата Rev B и её возможности
— Обзор платы Rev B: кодек AD1938 (4 АЦП / 8 ЦАП), вспомогательные АЦП на потенциометрах, S/PDIF, внешнее питание, разъёмы и переключатели.
06:16Новый проект и подключение USB-интерфейса
— Создаётся новый проект, перетаскивается ADAU1452 и USB-интерфейс; при подключении индикатор загорается и связь становится зелёной.
10:35Режимы проектирования и выполнения
— Разъясняется, что программа выполняется на DSP, а SigmaStudio лишь компилирует, загружает и управляет; вводятся режимы проектирования и выполнения.
11:31Блочная обработка и панели инструментов
— Открывается вкладка схемы; обсуждается обработка на основе выборок против блочной обработки (FFT), переключение древовидной панели и окна захвата.
13:27Входы/выходы и тактирование
— Показаны четыре последовательных входных и выходных порта, поддержка TDM16/TDM8/I2S, независимые тактовые домены и обмен данными через память.
18:41Регулятор громкости, индикаторы, DC и readback
— Добавляется стереорегулятор громкости с аппаратным slew, индикаторы уровня, DC-ячейка и обратное чтение для проверки связи; производится загрузка и проверка звука.
27:39Mute, генератор и переключатель
— Ставятся блоки mute, добавляется генератор синусоидального тона, затем стереопереключатель (MUX) с T-соединением для выбора источника.
33:47Окно вывода, MIPS и различия чипов
— Разбирается отчёт компиляции: ассемблер, частота 48 кГц, MIPS, инструкции, память DM0/DM1; обсуждаются различия 1450/1451/1452 и переносимость на Sigma 350.
20:11
Volume controls
Типы регуляторов громкости (volume controls) в SigmaDSP, их настройка и принцип работы11 тайм-кодов20:11
Ролик посвящён регуляторам громкости в SigmaStudio: автор разбирает их типы, различия между аппаратным и программным slew, а также практические приёмы работы с ними. Объясняется, что ядра Sigma 100/200 (ADAU1701/1761) имеют только программное сглаживание, тогда как Sigma 300/350 и ADAU1467 получили встроенный аппаратный ускоритель slew. На базовом стартовом проекте демонстрируются варианты без сглаживания (одиночный и многоканальный), внешне управляемый регулятор, куда коэффициент усиления подаётся, например, с вспомогательного АЦП. Показаны настройки элемента управления (текущее значение, максимум, минимум, шаг) и то, что часть из них относится только к GUI, а не к DSP. Разбирается связь между дБ и коэффициентом усиления через dB-калькулятор Analog Devices, понятия target и gain при работе с микроконтроллером, а также предупреждение о перегрузке USB при слишком мелком шаге.
Тайм-коды (11)
00:02Введение и различия ядер DSP
— Обзор регуляторов громкости и различие архитектур: Sigma 100/200 только с программным slew, Sigma 300/350 и ADAU1467 с аппаратным ускорителем.
00:37Меню Volume Controls и типы slew
— Три подменю — регулировка усиления, огибающие и отключение звука; для gain доступны HW slew, SW slew и без сглаживания.
00:51Одиночный и многоканальный регуляторы без slew
— Демонстрация single и multiple control без плавности, при котором усиление меняется мгновенно и экономится трафик инструкций.
03:48Grow против Multiple control
— Разница между расширением одиночного регулятора и отдельным multiple-блоком; отсутствие выигрыша по инструкциям и предпочтение автора к отдельным подписываемым регуляторам.
05:20Внешне управляемый регулятор громкости
— Тип single slew с внешним усилением, куда сигнал подаётся с внешнего вывода, например через вспомогательный АЦП или потенциометр.
06:16Подача DC-источника и компиляция
— Подключение источника постоянного тока к входу внешнего усиления и загрузка проекта в DSP.
07:39Приёмы GUI и настройки элемента
— Grow через правый клик, копирование и вставка настроек между однотипными регуляторами.
08:36Диапазон, шаг и разрешение
— Настройки max/min и шага регулировки, ограничение 42 дБ в этом DSP, влияние шага на разрешение и трафик; поведение 0,25 дБ.
13:40dB-калькулятор и коэффициент усиления
— Использование калькулятора дБ на analog.com, перевод дБ в коэффициент усиления по напряжению (6 дБ = ×2, −14 дБ ≈ 0,1994).
15:56Target, запись из МК и внешнее управление
— При SW slew пишется в переменную target, а усиление подстраивает DSP; во внешнем регуляторе значение равно коэффициенту усиления (0,5, 0,1994, 2).
19:55Итоги
— Краткое резюме принципа работы регуляторов громкости и внешне управляемого варианта.
10:03
Saturators and Truncators
Работа сатураторов и усечения при выводе данных из ядра DSP в последовательный порт.9 тайм-кодов10:03
Ролик посвящён тому, что происходит на выходе ядра SigmaDSP, когда число слишком велико для 24-битного последовательного порта. Автор разбирает формат 5.23 у ядер Sigma 100/200: 23 младших бита уходят в дробную часть, знак сдвигается на нужное место, а старшие разряды проверяются на признак переполнения. Если в старших позициях обнаружена значащая единица (или, для отрицательных чисел, ноль), данные насыщаются до максимума 7FFFFF в положительную сторону или 800000 в отрицательную. Запоминание шестнадцатеричных представлений помогает быстро распознавать клиппинг в порту. Далее разбираются ядра Sigma 300/350 с форматом 8.24: там младший бит просто отбрасывается (усечение), 23 бита переносятся, а о переполнении сигнализируют старшие разряды целой части. Автор подчёркивает, что аппаратура сама выполняет усечение и насыщение при прогоне данных через последовательный порт.
Тайм-коды (9)
00:02Введение: сатураторы на выходе ядра
— Именно на выходе из ядра включаются сатураторы, так как нужно проверять, не слишком ли велико число.
00:28Формат 5.23 и 24-битный выход
— Ядро Sigma 100/200 берёт 28 бит и преобразует их в 24-битное число для последовательного порта.
01:02Перенос 5.23 в 24 бита
— 23 бита идут как дробная часть, знаковый бит сдвигается; возможны расширение знака без насыщения и насыщение.
02:20Условие насыщения: проверка старших битов
— Если единица есть в любой из старших позиций, число больше 24 бит и вернуть знак просто нельзя.
03:21Положительное насыщение 7FFFFF
— При переполнении на выходе появляется 7FFFFF — максимальное положительное 24-битное число, клиппинг.
04:26Отрицательная сторона и клиппинг
— Для отрицательных чисел знак равен единице, и появление нуля в старших битах означает переполнение.
05:50Итог по насыщению: 800000
— Отрицательный максимум равен 800000; автор напоминает о важности перевода в hex.
07:03Sigma 300/350: формат 8.24 и усечение
— Там младший бит отбрасывается в «корзину», 23 бита переносятся, старшие биты целой части дают насыщение.
09:00Аппаратное усечение и насыщение
— Аппаратная часть сама усекает и насыщает данные при прогоне через порт, софту это решать не нужно.
17:23
Binary and Hex Number Formats
Системы счисления — десятичная, двоичная, восьмеричная и шестнадцатеричная в контексте DSP10 тайм-кодов17:23
Ролик представляет собой вводный урок по системам счисления, ориентированный на работу с DSP. Начиная с привычной десятичной системы и понятия разрядов, автор переходит к двоичной системе с основанием два, показывает её веса разрядов и учит считать в двоичном виде. Затем объясняется перевод двоичных чисел в десятичные и закономерность числа возможных значений (три разряда — восемь значений, четыре — шестнадцать). Кратко упоминается восьмеричная система как почти вышедшая из употребления, после чего основное внимание уделяется шестнадцатеричной системе: четырём битам на цифру, символам от 0 до 9 и A–F и приёмам запоминания. Показано, что умножение и деление сводится к сдвигу разрядов влево или вправо. В конце устанавливается связь между битами, байтами и hex-числами: один байт — два hex-символа, 16 бит — четыре, 24 бита — шесть, 32 бита — восемь. Подчёркивается важность беглого перевода для работы с регистрами и протоколами связи.
Тайм-коды (10)
00:00Десятичная система и разряды
— Основание 10, десять символов 0–9, перенос разряда при превышении и веса разрядов как степени десяти.
01:39Двоичная система: основание 2
— Всего два символа 0 и 1, веса разрядов как степени двойки: единицы, двойки, четвёрки, восьмёрки и так далее.
03:45Счёт в двоичной системе
— Последовательный счёт от нуля, переполнение разряда при превышении двух значений и запись чисел в десятичном сопоставлении.
05:35Перевод двоичных чисел в десятичные
— Практика перевода: сложение весов единичных разрядов для получения десятичного значения.
06:14Степени двойки и число значений
— Наблюдение: три разряда дают восемь значений, четыре — шестнадцать; удобство чисел, являющихся степенями двойки.
06:52Восьмеричная система
— Система с основанием восемь, группировка бит по три; исторически применялась на мейнфреймах, сейчас почти не используется.
08:06Шестнадцатеричная система и A–F
— Основание 16, четыре бита на цифру, символы 0–9 и A–F для значений 10–15 и приёмы запоминания простых чисел.
10:57Сдвиг разрядов: умножение и деление
— В десятичной и двоичной системах умножение и деление на основание выполняется сдвигом разрядов.
13:26Байты, биты и hex в протоколах
— Один байт — восемь бит и два hex-символа; 16, 24 и 32 бита соответствуют четырём, шести и восьми hex-цифрам.
17:22Итог: важность практики
— Hex и двоичный формат критичны для регистров и протоколов связи; нужна регулярная практика перевода.
16:29
Дополнительный код и двоичная арифметика (Two's Complement)
Представление отрицательных чисел в дополнительном коде и арифметика сложения/вычитания для аудиообработки в DSP.10 тайм-кодов16:29
Ролик объясняет, зачем DSP нужен дополнительный код и как он превращает вычитание в обычное сложение. Автор начинает с двоичного сложения (5 + 7 = 12), затем показывает, что вычитание аппаратно сложнее, и вводит приём получения отрицательного числа: инвертировать все биты (обратный код) и прибавить единицу. На примерах 10 − 2 и 12 − 5 демонстрируется, что сложение с дополнительным кодом отрицательного числа даёт корректный результат, а перенос за пределы разрядной сетки просто отбрасывается. Далее объясняется аудиоконтекст: микширование требует суммирования положительных и отрицательных отсчётов, поэтому середина шкалы АЦП/ЦАП (синфазное напряжение, псевдоземля) принимается за ноль. На 4-битном примере показано, как 16 значений делятся между положительными и отрицательными числами и что старший бит служит знаком. В конце разбираются крайние значения диапазона, роль шумового порога и асимметрия: на отрицательной стороне доступно на одно значение больше.
Тайм-коды (10)
00:00Введение и двоичное сложение
— Что такое дополнительный код; на таблице десятичных, шестнадцатеричных и двоичных чисел складываются 5 и 7, получается 12 (C).
01:38Проблема вычитания и идея дополнительного кода
— Вычитание для аппаратуры сложнее, чем сложение; вводится дополнительный код как способ сделать число отрицательным.
01:51Как получить отрицательное число
— На примере шестёрки: инвертируются все биты (обратный код), затем прибавляется единица — получается −6.
03:18Практика: 10 − 2
— Двойка переводится в дополнительный код (−2) и складывается с 10; перенос отбрасывается, результат 8.
04:50Практика: 12 − 5
— Аналогично −5 прибавляется к 12 с учётом переносов, получается 7; метод подтверждается.
06:07Зачем это нужно в аудио
— Теория: сигналы суммируются при микшировании, отсчёты бывают положительными и отрицательными, что соответствует сложению давлений звуковой волны.
08:28Ноль посередине шкалы
— Синфазное напряжение (псевдоземля) между землёй и питанием принимается за ноль; вводится 4-битный пример на 16 значений.
09:24Распределение значений и знаковый бит
— Показано, как значения делятся на положительные и отрицательные; старший бит (MSB) указывает знак, три младших дают величину.
11:14Построение отрицательных чисел
— Получение −1, −2, −7 и −8 через обратный код и прибавление единицы; выявляется асимметрия диапазона.
12:45Крайние значения диапазона
— Максимальное отрицательное число — единица и нули, а не все единицы; обсуждаются шумовой порог и переключение битов.
36:56
ADAU1701 2-Way Crossover
Пошаговая сборка двухполосного кроссовера на ADAU1701 в SigmaStudio с кнопочным регулятором громкости, GPIO, логикой и отладкой через обратное чтение10 тайм-кодов36:56
В этом видео Дэвид Тибо на платах USB-интерфейса и ADAU1701 MiniZ собирает с нуля проект двухполосного кроссовера. Показано создание нового проекта, добавление входов/выходов, фильтров DC-блокировки, детекторов уровня и двухполосного кроссовера двойной точности, а также настройка точки раздела и фильтров Линквиста-Райли. Отдельно разбирается кнопочный регулятор громкости, управляемый через GPIO (вверх/вниз), настройка инверсии входов и механизма повтора удержания. Значительная часть ролика посвящена отладке: с помощью обратного чтения из DSP (readback) автор проверяет состояния GPIO, показывает, что регулятор громкости использует таблицу поиска (look-up table), импортирует логарифмическую таблицу и объясняет ограничение чтения в 24 бита и обходной путь через умножение. В финале демонстрируется функция mute, разделение его на три кнопки через логику OR и T-триггер, а также практические советы по непрерывному чтению и окну действий.
Тайм-коды (10)
00:00Введение и обзор оборудования
— Автор представляет себя и тему; показывает USB-интерфейс (I²C/SPI), плату ADAU1701 MiniZ, вход через 3,5-мм разъём и используемые выходы 2 и 3.
02:33Новый проект SigmaStudio и базовый вход/выход
— Создание проекта, выбор 1701, подключение USB-интерфейса; добавляются вход, фильтры DC-блокировки и детектор уровня для проверки сигнала.
03:35Двухполосный кроссовер
— Из категории фильтров добавляется двухполосный кроссовер двойной точности, делается стерео путём расширения алгоритма; обсуждается единый орган управления.
04:41Псевдонимы (alias) и кнопочный регулятор громкости
— Показано создание псевдонимов (alias) для обхода блока и уборки проекта; добавляется кнопочный регулятор громкости с управлением вверх/вниз и mute.
08:04Настройка GPIO и регулировка четырёх каналов
— Подключается интерфейс чтения GPIO, добавляются три копии регулятора громкости для четырёх каналов; настраиваются порты GPIO для кнопок вверх/вниз.
13:38MUX, настройка кроссовера и фазы
— Собирается мультиплексор для переключения между высокими, низкими и обходом; настраивается точка раздела (например, 1000 Гц), демонстрируется влияние смещения частоты и инверсии полярности.
19:27Регулятор громкости через таблицу поиска
— Выясняется, что громкость не работает, так как таблица поиска заполнена единицами; импортируется логарифмическая таблица коэффициентов из текстового файла, после чего громкость начинает работать.
23:03Отладка GPIO: инверсия и обратное чтение
— С помощью обратного чтения проверяется состояние кнопок GPIO 2 и 3; обнаруживается инверсия (нажато = 0) и выполняется инверсия кнопок.
26:09Ограничение 24 бит и обход через умножение
— Обсуждается настройка повтора удержания (500 мс, повтор каждые 250 мс); показывается, что при чтении доступны 24 бита из 28, младшие 4 бита не видны, и применяется умножение на 4 дважды.
31:45Mute, логика OR и T-триггер; итоги
— Демонстрируется mute одновременным нажатием; кнопка GPIO 9 через логику OR и T-триггер эмулирует обе кнопки; даются советы не перегружать шину непрерывными чтениями и закрывается видео.
▶RUTUBE-ID не задан
9:54
AUX ADC
Вспомогательные АЦП (AUX ADC) в SigmaDSP: разрядность, фильтрация и применение для управления.8 тайм-кодов9:54
Ролик объясняет, что вспомогательный АЦП (aux ADC) — это не аудио-АЦП, а преобразователь данных последовательного приближения (SAR) для управляющих сигналов, например потенциометров. У ядер Sigma 100 это 8-битный преобразователь на 256 значений (0–255), который при шуме может вызывать джиттер и дизеринг, если подать его на регулятор громкости. Для борьбы с этим в аппаратуре предусмотрены фильтр низких частот и гистерезис, что фактически даёт на выходе до 12 бит. Отмечается, что 8-битные данные выравниваются по левому краю и никогда не доходят до единицы, поэтому их удобно сразу подавать на регулятор громкости или таблицы. У ядер Sigma 200 вспомогательных АЦП нет, а у Sigma 300 их восемь (или шесть у части моделей), и это 10-битный преобразователь 0–1023 с выравниванием по правому краю, из-за чего для управления громкостью требуется сдвиг на 14 бит влево.
Тайм-коды (8)
00:02Что такое вспомогательный АЦП
— Это не аудио-АЦП, а преобразователь данных SAR; у Sigma 100 он 8-битный, 256 значений от 0 до 255.
00:53Проблемы шума, джиттера и дизеринга
— Шум потенциометра или цепи вызывает джиттер и дизеринг, что слышно при управлении громкостью.
01:22Аппаратный фильтр и гистерезис
— Можно включить ФНЧ для сглаживания и гистерезис, задающий порог переключения.
02:0512 бит после фильтрации и выравнивание
— При фильтрации на выходе фактически движутся 12 бит; данные выравниваются по левому краю и не достигают единицы.
04:00Применение: регулятор громкости и таблицы
— Значение от 0 до почти 1 можно сразу подавать на регулятор громкости или на таблицы (целые либо дробные).
05:32Ядра Sigma 200: нет AUX ADC
— У этих ядер вспомогательные АЦП отсутствуют — просто нет такого узла.
06:04Ядра Sigma 300: 10 бит, 0–1023
— Здесь 8 (или 6) АЦП, 10-битный SAR на 1024 значения, выравнивание по правому краю.
07:13Сдвиг на 14 бит для управления громкостью
— Чтобы 10-битное значение заработало как регулятор от 0 до 1, его нужно сдвинуть влево на 14 бит.
25:51
ADAU1701 Capture Window, Params Tab and Sequencer window
Использование окна захвата, вкладки параметров и окна секвенсора в SigmaStudio на примере ADAU170110 тайм-кодов25:51
На примере проекта кроссовера с кнопочным управлением (из предыдущих видео) Дэвид Тибо показывает, как SigmaStudio взаимодействует с DSP через окно захвата, вкладку параметров и секвенсор. Окно захвата фиксирует все обмены с микросхемой: видно огромные блочные записи данных программы и параметров, конфигурацию аппаратных регистров и записи от управления объектами, например мультиплексором. Вкладка Params открывает память параметров DSP в реальном времени, отображая значения в hex, формате 5.23 и как целое, и позволяет менять их вручную — при этом SigmaStudio не узнаёт о прямом изменении памяти. Автор разбирает конкретные параметры: стереомультиплексор (коэффициенты усиления и суммирование каналов), алгоритм усиления, алгоритм кнопки (время удержания в отсчётах, шаг, максимальный индекс и таблица громкости), коэффициенты биквадных кроссоверных фильтров и индикаторы уровня. В финале демонстрируется секвенсор: имитация действий микроконтроллера, добавление команд в последовательность, создание и переименование режимов и сохранение в XML.
Тайм-коды (10)
00:00Введение и проект
— Автор объявляет тему и использует существующий проект кроссовера с кнопочным управлением, регуляторами громкости и DC-ячейкой.
01:23Окно захвата: загрузка и экспорт
— Выполняется link/compile/download; видны блочные записи данных (5120 байт) и конфигурация; разбираются способы выделения и экспорта (текст, двоичные, адрес-данные, файл управления).
03:00Захват изменений и форматы данных
— При переключении мультиплексора в захвате появляются записи; данные показаны в hex и формате 5.23, что помогает понять логику коммутатора.
04:08Окно параметров и стереомультиплексор
— Открывается Params с памятью параметров в реальном времени; на примере стереомультиплексора (0/1, коэффициенты усиления и сумма) показано, как работает MUX.
06:36Параметры усиления и алгоритма кнопки
— Разбирается алгоритм Gain (усиление 1 и 1_2) и алгоритм кнопки: время удержания 24000 = 500 мс при 48 кГц, hold 12000, шаг 2048, максимальный индекс 32 и таблица громкости из 33 элементов.
11:07Коэффициенты кроссоверных фильтров
— Показаны коэффициенты биквадов (B0, B1, B2, A1, A2) для фильтров Линквиста-Райли 24 дБ; при изменении настроек фильтра значения в памяти меняются.
12:37Индикаторы уровня и регуляторы громкости
— Разбираются постоянная времени, удержание и спад индикаторов (480 = 10 мс при 48 кГц); рассматриваются простой Gain и программный регулятор громкости SLU с параметром target.
16:00Прямое редактирование памяти DC-ячейки
— Показано, как вручную записать значение в память DSP: SigmaStudio не видит это изменение и отображает старое значение до нажатия «Обновить» или обратного чтения.
19:35Окно секвенсора: имитация микроконтроллера
— Стрелкой справа открывается секвенсор; команда добавляется в последовательность, а режим загрузки в железо отправляет её в DSP, что фиксируется в окне захвата.
22:31Режимы последовательности и заключение
— Создаются и переименовываются режимы (например, DC to one / DC to two), последовательность сохраняется в XML; подводятся итоги по использованию окна параметров для понимания работы алгоритмов.
16:09
Введение в SigmaDSP и SigmaStudio (Intro to SigmaDSP and SigmaStudio)
Обзор семейства процессоров SigmaDSP, эволюции ядер и среды разработки SigmaStudio.10 тайм-кодов16:09
Этот вводный ролик серии рассказывает, что такое SigmaDSP и SigmaStudio и как они образуют единую платформу для аудиообработки. Автор, инженер поддержки SigmaDSP Дэвид Тибодо, объясняет, что DSP — это цифровой сигнальный процессор, хорошо приспособленный к умножению и сложению, а значит и к работе со звуком. Далее на слайдах показана история продуктов: от первых ядер Sigma до ядра Sigma 100 (популярные ADAU1701/1702/1401), ядра Sigma 200 на 172 МГц со встроенными ASRC и серии 1761 для портативных устройств, а затем переход к ядру Sigma 300/350 с четырёхъядерным MAC-блоком, аппаратными ускорителями и большим объёмом памяти. Подчёркивается, что ценность системы — в синергии мощного аппаратного DSP и графической среды SigmaStudio, позволяющей программировать компоненты без знания ассемблера. Разбираются три режима работы SigmaStudio: разработка через GUI, настройка параметров в реальном времени (runtime) и экспорт управляющего кода для системного контроллера. В конце показан интерфейс программы, выходной файл компилятора с оценкой MIPS, окно захвата, вкладка параметров и секвенсор.
Тайм-коды (10)
00:00Введение: DSP и SigmaDSP
— Приветствие и представление автора; DSP — это цифровой сигнальный процессор, специализированный на умножении и сложении, что подходит для аудио.
01:14История процессоров: ядро Sigma 100
— Первое поколение и ядро Sigma 100 со встроенными преобразователями; популярные модели 1701, 1702 и автомобильная 1401 на 50 МГц.
03:03Ядро Sigma 200 и серия 1761
— Более высокое быстродействие (172 МГц), встроенные ASRC для асинхронных тактов; серия 1761 на 50 МГц для портативных устройств с АЦП/ЦАП и усилителем для наушников.
04:34Ядро Sigma 300/350 и ускорители
— Крупный скачок архитектуры: частота около 300 МГц, четырёхъядерный MAC-блок, аппаратные ускорители, ASRC, множество последовательных портов и гибкое тактирование.
06:54SigmaStudio как ключевой инструмент
— Именно SigmaStudio позволяет программировать компоненты готовыми блоками без знания программирования DSP, сокращая время разработки.
08:30Три режима работы SigmaStudio
— Обзор трёх режимов: разработка в GUI, настройка в реальном времени и экспорт управляющего кода для системного контроллера.
09:44Режим реального времени (runtime)
— После компиляции и загрузки программа выполняется в DSP; SigmaStudio работает как контроллер и в реальном времени меняет громкость, эквалайзеры и маршрутизацию.
10:57Экспорт кода и самостоятельная загрузка
— Экспорт заголовков и C-кода для микроконтроллера; большинство SigmaDSP умеют сами загружаться из EEPROM, поэтому контроллер нужен не всегда.
12:47Обзор интерфейса и инструментов
— Центральное поле для перетаскивания блоков из панелей инструментов, выходной файл компилятора с оценкой MIPS, окно захвата, вкладка параметров и секвенсор.
15:14Заключение
— Итог обзора платформы, приглашение смотреть другие видео серии и контактные данные автора.
25:55
Creating a Starter Project for the ADAU1701
Пошаговое создание базового стартового проекта ввода-вывода для ADAU1701 в SigmaStudio10 тайм-кодов25:55
Ролик показывает, как с нуля собрать в SigmaStudio универсальный стартовый проект для сигнального процессора ADAU1701, который автор использует как основу для дальнейших аудиозадач. Сначала демонстрируется настройка окружения: создание проекта, панели инструментов, добавление USB-интерфейса и самого DSP, выбор связи по I²C или SPI. Затем собирается аудиоцепочка: входной блок с АЦП и цифровыми входами, аппаратный регулятор громкости со slew, переводимый в стерео, индикаторы уровня и выходные ячейки ЦАП. Отдельное внимание уделяется практическим проблемам: постоянному смещению с АЦП, которое устраняется фильтром DC blocking, запасу усиления в ядре и правильной интерпретации значений в dBFS. В проект добавляются синусоидальный генератор с переключателем MUX, бесплатное T-соединение для разветвления сигнала, а также источник DC и ячейка DSP readback для проверки обмена данными с микросхемой. В конце автор рекомендует сохранить полученную схему как базовый проект «input-output generator».
Тайм-коды (10)
00:00Настройка окружения SigmaStudio
— Создание нового проекта, обзор двух панелей инструментов (древовидной и второй), размещение окна захвата и включение недостающих панелей.
01:04Добавление USB-интерфейса и ADAU1701
— Перетаскивание USB-интерфейса связи и процессора 1701 в проект, индикация подключения цветом и настройка I²C/SPI и адресов.
02:41Вкладки конфигурации и регистров
— Переход на вкладку Hardware Configuration, просмотр регистровых элементов управления и переход к вкладке схемы.
03:21Вход, регулятор громкости и индикаторы
— Добавление входного блока (АЦП 0–1 и цифровые 2–9), программного регулятора громкости со slew, расширение до стерео и подключение индикаторов уровня с цифровым отображением дБ.
07:59Выходные ячейки, стерео и загрузка в DSP
— Выбор ЦАП 0–3 или цифровых выходов, копирование в стерео, назначение на DAC 2 и 3, режим разработки и команда Link Compile Download.
10:01Постоянное смещение и DC blocking
— Обнаружение DC-смещения с АЦП без фильтра верхних частот и добавление блока DC blocking из раздела Filters/Misc.
13:18Запас усиления, dBFS и индикаторы
— Разбор 24-битного входа и 28-битного ядра, запаса над 0 dBFS, настройки диапазона и единиц индикаторов уровня.
14:46Генератор, MUX и T-соединение
— Добавление синусоидального генератора, стереопереключателя MUX, регулятора для генератора и бесплатного T-соединения для разветвления сигнала.
21:06DC readback для проверки связи
— Источник DC и ячейка DSP readback как средство проверки обмена с DSP, формат 5.23 и потеря младших 4 бит при чтении.
25:29Сохранение базового проекта
— Сохранение схемы как базового проекта «input-output generator» для повторного использования.
6:35
Intro to the ADAU1701 and Preparing for a New Project
Вводный обзор микросхемы ADAU1701, USB-интерфейса и отладочной платы перед первым проектом в SigmaStudio.8 тайм-кодов6:35
Это первый вводный ролик по SigmaDSP для новичков, желающих собрать свой первый проект. Автор кратко разбирает микросхему ADAU1701: ядро DSP со встроенным стерео-кодеком, два АЦП и четыре ЦАП, последовательные порты ввода-вывода, GPIO, восемь вспомогательных АЦП (aux ADC) для потенциометров и интерфейс управления I²C или SPI. Отдельно поясняется USB-интерфейс: он преобразует USB в I²C или SPI и передаёт только управляющие данные, аудио через него не идёт, так как программа выполняется на самом DSP. Затем демонстрируется отладочная плата ADAU1701: потенциометр AUX ADC, USB-порт, переключатели самозагрузки и выбора тактового сигнала, светодиоды и кнопки на GPIO, питание от USB, стереовход и выходы на усилителе класса D. В конце показывается подключение платы, индикация питания и режима интерфейса, а также переключатель уровня IOVDD.
Тайм-коды (8)
00:00Введение и цель ролика
— Автор представляет первый вводный проект по SigmaDSP и объясняет, что покажет работу с SigmaStudio и ADAU1701.
01:32USB-интерфейс: USB ↔ I²C/SPI
— Интерфейс преобразует USB в I²C или SPI и передаёт только управляющие данные; аудио через него не проходит.
02:31Обзор отладочной платы ADAU1701
— Демонстрация платы: потенциометр AUX ADC, USB-порт, 1701 в центре, переключатели самозагрузки и тактирования.
03:36GPIO, светодиоды и кнопки
— К порту GPIO подключены два светодиода и три тактовые кнопки, которые можно использовать в программе.
03:45Питание и аудиовходы/выходы
— Плата питается от USB; есть стереовход 3,5 мм, выход на разъёме и первый/второй ЦАП на усилителе класса D для динамиков.
04:41Индикация и переключатель IOVDD
— Светодиоды питания, SPI и I²C показывают режим; переключатель задаёт уровень IOVDD 3,3 или 1,8 В.
05:44Подключение платы и завершение
— Автор подключает плату, проверяет индикацию и завершает настройку аппаратной части перед переходом в SigmaStudio.
12:32
Serial Port Data Transfers
Передача данных между последовательными портами и ядром DSP: разрядность, дополнительный код, расширение знака и сдвиг.8 тайм-кодов12:32
Ролик объясняет, как аудиоданные передаются между последовательными портами ввода-вывода и вычислительным ядром процессоров SigmaDSP. Автор разбирает разрядность: у старых ядер Sigma 100/200 (семейства ADAU1701, ADAU1761) ядро 28-битное, а последовательные порты и преобразователи — 24-битные. На примере таблицы двоичных чисел в дополнительном коде показывается, что знаковый бит и расширение знака критичны при переносе 24-битного слова в более широкое ядро. Отдельно рассматриваются ядра Sigma 300/350 (семейства ADAU1452, ADAU1467) с 32-битным ядром: там данные сдвигаются на один бит, а снизу добавляется ноль, что даёт дополнительный запас по уровню. В конце разбираются сатураторы, которые при выводе из ядра ограничивают слишком большие числа максимальным положительным или отрицательным 24-битным значением.
Тайм-коды (8)
00:00Введение: передача данных между портами и ядром
— Задача ролика — показать, как 24-битные данные последовательных портов попадают в ядро DSP и обратно.
00:19Двоичные числа в дополнительном коде
— Таблица положительных и отрицательных чисел: знаковый бит 1 означает минус, 0 — плюс.
00:53Разрядность ядра и портов у Sigma 100/200
— Ядра ADAU1701/ADAU1761 — 28 бит, а порты, АЦП и ЦАП — 24 бита (иногда 16).
02:12Расширение знака при входе в ядро
— Отрицательное 24-битное слово дополняется единицами сверху, положительное — нулями, чтобы значение сохранилось.
04:56Ядра Sigma 300/350 и сдвиг на один бит
— 32-битное ядро семейств ADAU1452/ADAU1467: младший бит при передаче обнуляется, 24 бита сдвигаются, а сверху расширяется знак.
07:57Обратная передача из ядра в порт
— При выводе бит отбрасывается, знак восстанавливается, 24 бита уходят в порт, лишний шумовой бит теряется.
09:24Сатураторы: положительное ограничение
— Если старший лишний бит равен единице, на выход выдаётся максимум 7FFFFF — число ограничено.
11:25Сатураторы: отрицательное ограничение
— Если один из старших битов равен нулю, выдаётся максимальное отрицательное 800000, что видно в порту.
17:14
Levels and Headroom
Уровни сигнала, динамический диапазон и запас усиления (headroom) в SigmaDSP9 тайм-кодов17:14
Ролик объясняет базовую цифровую теорию, необходимую для понимания уровней в SigmaDSP. На упрощённом примере 4-битного преобразователя автор показывает 16 возможных значений, квантование синусоиды по выборкам и возникновение клиппинга, когда сигнал выходит за пределы доступных чисел. Далее вводится правило: каждый добавленный бит удваивает напряжение и добавляет примерно 6 дБ, откуда выводится динамический диапазон — 24 дБ для 4 бит, 48, 96, 144 и 192 дБ для 8, 16, 24 и 32 бит соответственно. Обсуждается уровень 0 dBFS как полная шкала (full scale) и невозможность превысить её физически. Отдельно рассматривается внутренний запас усиления ядра: в Sigma 300 сигнал формата 1.23 расширяется, давая около 42 дБ headroom, а в Sigma 100 (ADAU1701) переход к 5.23 даёт 24 дБ. Подчёркивается, что при выводе из ядра избыток бит нужно снимать, иначе сигнал клиппируется. В завершение показано, что встроенные генераторы выдают ровно 0 dBFS и служат для проверки ЦАП и правильного выравнивания бит в последовательных портах.
Тайм-коды (9)
00:02Введение в цифровую теорию и уровни
— Постановка темы: базовые цифровые понятия и уровни сигнала в DSP.
00:154-битный пример и квантование
— Пример простого 4-битного преобразователя с 16 значениями, дополнительный код и оцифровка синусоиды по выборкам.
03:55Клиплинг при выходе за диапазон
— Когда сигнал превышает максимум доступных чисел, значения обрезаются — суть цифрового клиппинга.
04:35Каждый бит — это +6 дБ
— Добавление бита удваивает число значений и напряжение, что соответствует примерно +6 дБ, а деление вдвое — −6 дБ.
06:16Динамический диапазон и число битов
— Расчёт DNR: 4 бита — 24 дБ, 8 — 48, 16 — 96, 24 — 144, 32 — 192 дБ; понятие эффективных бит (ENOB).
09:060 dBFS и полная шкала
— Определение уровня 0 dBFS как максимального, использующего все доступные биты и числа; выше подняться нельзя.
11:03Запас усиления в ядре DSP
— Расширение бит при входе в ядро: Sigma 300 даёт ~42 дБ headroom, Sigma 100 (1701) — 24 дБ; необходимость снятия избытка при выводе.
14:02Генераторы 0 dBFS для проверки тракта
— Встроенные генераторы выдают ровно 0 dBFS для 24 бит и служат для проверки ЦАП и выравнивания бит в последовательных портах.
17:09Заключение
— Краткое резюме о уровнях, запасе усиления и практическом применении генераторов.
Sigma Studio Graphical Development Tool for SigmaDSP Audio Processors
Обзор среды графической разработки SigmaStudio для аудиопроцессоров SigmaDSP.
Обзорный видеоролик о среде графической разработки SigmaStudio для аудиопроцессоров Analog Devices SigmaDSP: общее представление о визуальном проектировании аудиотракта.
Исходные ролики размещены на RUTUBE; каталог собран из локального архива видео.