ΣSigmaStudio Спросить ИИ English Войти

Видеоуроки

Практические видеоуроки по программированию процессоров 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)
  1. 00:05 Введение: что такое slew — Анонс темы регуляторов громкости со сглаживанием и переход к SigmaStudio; загруженный проект с двумя регуляторами.
  2. 00:17 Программный slew: RC Optimized и RC Accurate — Открывается блок Software Slew; разбираются два варианта: оптимизированная RC-аппроксимация и точная RC-кривая.
  3. 02:46 Зачем нужен slew: zipper-шум — Объясняется, что slew даёт множество мелких шагов и устраняет потрескивание; предлагается эксперимент со сравнением двух регуляторов на слух.
  4. 03:12 Когда slew не нужен и что управляется в реальном времени — Для разовой калибровки или настройки под колонку сглаживание необязательно; но всё, что меняется в реальном времени (включая mute и переключатели), нуждается в slew.
  5. 04:25 Регулируемый slew и времена нарастания — Сравнение одиночного/множественного регулируемого slew; числа соответствуют временам нарастания, информация о них есть на EngineerZone.
  6. 06:20 Аппаратный ускоритель slew и типы кривых — Разбирается аппаратный slew rate accelerator: отдельные скорости для роста и спада, типы RC, линейный, постоянное время и экспоненциальный.
  7. 08:17 Регистр аппаратного slew и настройка в GUI — 32-битный регистр с четырьмя подполями (постоянные времени и типы кривых для нарастания и спада); выбор типа через правую кнопку и Custom-значение.
  8. 10:58 Управление из микроконтроллера — В окне захвата видно, что режим slew — один из параметров (значение 208820a по умолчанию); его можно менять на лету, как это делал бы микроконтроллер.
  9. 11:32 Параметры gain и target gain — Считывание текущего усиления через gain; для изменения нужно писать в target gain, а не в gain, и следить за обновлением индикатора.
  10. 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)
  1. 00:01 Что такое readback — Возможность считать данные из любой точки программы; чтение происходит за один период дискретизации по нажатию кнопки.
  2. 00:38 История и разрядность ядер — Функция появилась в первых SigmaDSP; ядро Sigma 100 реализовало её громоздко, в Sigma 200 (28 бит) и Sigma 300 (32 бита) её улучшили.
  3. 00:59 32-битное число и подключение через USBI — Автор рисует 32-битную ячейку и биты 0–31; USB-кабель соединяет SigmaStudio на ПК с оценочной платой, где в ядре выполняется программа.
  4. 02:11 Readback как инструкция и ячейка памяти — Результат последней операции (например, сложения) сохраняется в 32-битную ячейку, а инструкция readback обновляет её каждый период дискретизации.
  5. 04:10 Непрерывное чтение данных — При включении непрерывного чтения SigmaStudio читает и показывает ячейку примерно каждые 10 мс; часть значений может пропускаться.
  6. 04:55 Особенности readback в ядре Sigma 100 — Вместо ячейки используется регистр захвата, привязанный к указателю инструкций; регистр чтения только 24-битный.
  7. 06:12 Формат 5.19 против 5.23 — Из-за 24 бит в окне указывается 5.19, а не 5.23; разбирается расположение целой части и точки.
  8. 07:42 Потеря младших бит и необходимость сдвига — Четыре младших бита 28-битного результата не попадают в 24-битный регистр; это критично для целочисленных управляющих сигналов, таких как мультиплексор.
  9. 10:17 Сдвиг через умножение — Сдвиг на 4 бита реализуется умножением на 16; один блок умножения не принимает 16 из-за 4-битной целой части, поэтому два блока умножают на 4 последовательно.
  10. 13:02 Итог и преимущества ядра Sigma 300 — В Sigma 300 есть инструкция арифметического сдвига и большая разрядность коэффициентов, поэтому задача решается проще; завершение ролика.
30:55

ADAU1452 Capture, Params and Sequencer windows

Работа с окнами захвата (Capture), параметров (Params) и секвенсора (Sequencer) для ADAU1452 / семейства Sigma 300 11 тайм-кодов 30:55

На базе проекта из предыдущего видео о ADAU1452 Дэвид Тибо подробно разбирает три ключевых окна SigmaStudio. Окно захвата (Capture) фиксирует весь обмен командами между SigmaStudio и микросхемой, что позволяет детально увидеть процедуру запуска DSP: переключение на SPI, программный сброс, настройку PLL, инициализацию регистров и блочную запись программы и памяти DM0/DM1. Окно параметров (Params) даёт доступ к памяти параметров DSP с отображением данных в hex, целочисленном и формате с фиксированной точкой, показывает имена объектов и их адреса, а также позволяет вручную редактировать ячейки. Секвенсор — встроенный генератор макросов, которому можно передавать захваченные команды, группировать их в режимы и сохранять в XML для воспроизведения в один клик. Автор также разбирает параметры конкретных объектов: генератора тона, регуляторов громкости с slew и без, индикаторов уровня и биквадратных фильтров, включая расчёт удержания индикатора через частоту дискретизации.

Тайм-коды (11)
  1. 00:00 Введение и оборудование — Автор представляет тему; кратко описывает плату ADAU1452 Rev B, USB-интерфейс, вход каналов 0–1 и выход 0–1.
  2. 01:00 Подготовка проекта и вставка эквалайзера — Выравниваются элементы, вставляется фильтр второго порядка двойной точности (в этом DSP не отнимает MIPS), делается стерео и подключается к тракту.
  3. 03:34 Окно захвата: назначение и запуск — Очищается окно захвата, выполняются link/compile/download; объясняется, что окно фиксирует обмен с микросхемой, но отфильтровывает непрерывные чтения индикаторов.
  4. 04:11 Просмотр процедуры запуска DSP — В захвате видна вся последовательность: переключение на SPI, программный сброс, PLL, инициализация регистров, блочная запись программы (824 байта), DM0 и DM1, перезапуск ядра.
  5. 06:10 Экспорт захвата и переход к секвенсору — Показано выделение строк (Shift) и контекстное меню: копирование, сохранение текстом/двоично/адрес-данные/файл регистров, отправка в секвенсор.
  6. 07:10 Секвенсор: генератор макросов — Секвенсор открывается двойной стрелкой справа; это инструмент для набора команд и отправки их в DSP в нужный момент, как если бы писал микроконтроллер.
  7. 08:21 Окно параметров и форматы данных — Params показывает память параметров DSP, имена объектов и адреса; одни и те же данные отображаются в hex, целом и формате с фиксированной точкой.
  8. 11:30 Hex-адреса, DC-ячейка и ручное редактирование — Адреса переключаются в hex; разбирается DC-ячейка (значение 1.0 в 8.24); рассматриваются кнопка обновления и выделение изменённых значений красным.
  9. 13:35 Режимы секвенсора и сохранение XML — Строка добавляется в последовательность, создаются режимы, выполняется запись в железо; демонстрируется баг с копированием, переименование режимов и сохранение последовательности в XML.
  10. 19:56 Разбор объектов: тон, громкость, slew — Разбираются параметры генератора тона (усиление в дБ), регуляторов с slew и без; объясняется, что писать нужно в Target, а не в текущее усиление, и как это видно в захвате.
  11. 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)
  1. 00:00 Введение и цель видео — Автор представляет себя и объявляет первое видео о ADAU1452 (Sigma 300); рекомендует предварительно посмотреть вводное видео о Sigma DSP/SigmaStudio.
  2. 00:39 Аппаратура: USB-интерфейс и отладочные платы — Показывается USB-интерфейс как преобразователь USB в I²C/SPI для программирования; отмечается, что аудио через него не передаётся.
  3. 02:59 Плата Rev B и её возможности — Обзор платы Rev B: кодек AD1938 (4 АЦП / 8 ЦАП), вспомогательные АЦП на потенциометрах, S/PDIF, внешнее питание, разъёмы и переключатели.
  4. 06:16 Новый проект и подключение USB-интерфейса — Создаётся новый проект, перетаскивается ADAU1452 и USB-интерфейс; при подключении индикатор загорается и связь становится зелёной.
  5. 10:35 Режимы проектирования и выполнения — Разъясняется, что программа выполняется на DSP, а SigmaStudio лишь компилирует, загружает и управляет; вводятся режимы проектирования и выполнения.
  6. 11:31 Блочная обработка и панели инструментов — Открывается вкладка схемы; обсуждается обработка на основе выборок против блочной обработки (FFT), переключение древовидной панели и окна захвата.
  7. 13:27 Входы/выходы и тактирование — Показаны четыре последовательных входных и выходных порта, поддержка TDM16/TDM8/I2S, независимые тактовые домены и обмен данными через память.
  8. 18:41 Регулятор громкости, индикаторы, DC и readback — Добавляется стереорегулятор громкости с аппаратным slew, индикаторы уровня, DC-ячейка и обратное чтение для проверки связи; производится загрузка и проверка звука.
  9. 27:39 Mute, генератор и переключатель — Ставятся блоки mute, добавляется генератор синусоидального тона, затем стереопереключатель (MUX) с T-соединением для выбора источника.
  10. 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)
  1. 00:02 Введение и различия ядер DSP — Обзор регуляторов громкости и различие архитектур: Sigma 100/200 только с программным slew, Sigma 300/350 и ADAU1467 с аппаратным ускорителем.
  2. 00:37 Меню Volume Controls и типы slew — Три подменю — регулировка усиления, огибающие и отключение звука; для gain доступны HW slew, SW slew и без сглаживания.
  3. 00:51 Одиночный и многоканальный регуляторы без slew — Демонстрация single и multiple control без плавности, при котором усиление меняется мгновенно и экономится трафик инструкций.
  4. 03:48 Grow против Multiple control — Разница между расширением одиночного регулятора и отдельным multiple-блоком; отсутствие выигрыша по инструкциям и предпочтение автора к отдельным подписываемым регуляторам.
  5. 05:20 Внешне управляемый регулятор громкости — Тип single slew с внешним усилением, куда сигнал подаётся с внешнего вывода, например через вспомогательный АЦП или потенциометр.
  6. 06:16 Подача DC-источника и компиляция — Подключение источника постоянного тока к входу внешнего усиления и загрузка проекта в DSP.
  7. 07:39 Приёмы GUI и настройки элемента — Grow через правый клик, копирование и вставка настроек между однотипными регуляторами.
  8. 08:36 Диапазон, шаг и разрешение — Настройки max/min и шага регулировки, ограничение 42 дБ в этом DSP, влияние шага на разрешение и трафик; поведение 0,25 дБ.
  9. 13:40 dB-калькулятор и коэффициент усиления — Использование калькулятора дБ на analog.com, перевод дБ в коэффициент усиления по напряжению (6 дБ = ×2, −14 дБ ≈ 0,1994).
  10. 15:56 Target, запись из МК и внешнее управление — При SW slew пишется в переменную target, а усиление подстраивает DSP; во внешнем регуляторе значение равно коэффициенту усиления (0,5, 0,1994, 2).
  11. 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)
  1. 00:02 Введение: сатураторы на выходе ядра — Именно на выходе из ядра включаются сатураторы, так как нужно проверять, не слишком ли велико число.
  2. 00:28 Формат 5.23 и 24-битный выход — Ядро Sigma 100/200 берёт 28 бит и преобразует их в 24-битное число для последовательного порта.
  3. 01:02 Перенос 5.23 в 24 бита — 23 бита идут как дробная часть, знаковый бит сдвигается; возможны расширение знака без насыщения и насыщение.
  4. 02:20 Условие насыщения: проверка старших битов — Если единица есть в любой из старших позиций, число больше 24 бит и вернуть знак просто нельзя.
  5. 03:21 Положительное насыщение 7FFFFF — При переполнении на выходе появляется 7FFFFF — максимальное положительное 24-битное число, клиппинг.
  6. 04:26 Отрицательная сторона и клиппинг — Для отрицательных чисел знак равен единице, и появление нуля в старших битах означает переполнение.
  7. 05:50 Итог по насыщению: 800000 — Отрицательный максимум равен 800000; автор напоминает о важности перевода в hex.
  8. 07:03 Sigma 300/350: формат 8.24 и усечение — Там младший бит отбрасывается в «корзину», 23 бита переносятся, старшие биты целой части дают насыщение.
  9. 09:00 Аппаратное усечение и насыщение — Аппаратная часть сама усекает и насыщает данные при прогоне через порт, софту это решать не нужно.
17:23

Binary and Hex Number Formats

Системы счисления — десятичная, двоичная, восьмеричная и шестнадцатеричная в контексте DSP 10 тайм-кодов 17:23

Ролик представляет собой вводный урок по системам счисления, ориентированный на работу с DSP. Начиная с привычной десятичной системы и понятия разрядов, автор переходит к двоичной системе с основанием два, показывает её веса разрядов и учит считать в двоичном виде. Затем объясняется перевод двоичных чисел в десятичные и закономерность числа возможных значений (три разряда — восемь значений, четыре — шестнадцать). Кратко упоминается восьмеричная система как почти вышедшая из употребления, после чего основное внимание уделяется шестнадцатеричной системе: четырём битам на цифру, символам от 0 до 9 и A–F и приёмам запоминания. Показано, что умножение и деление сводится к сдвигу разрядов влево или вправо. В конце устанавливается связь между битами, байтами и hex-числами: один байт — два hex-символа, 16 бит — четыре, 24 бита — шесть, 32 бита — восемь. Подчёркивается важность беглого перевода для работы с регистрами и протоколами связи.

Тайм-коды (10)
  1. 00:00 Десятичная система и разряды — Основание 10, десять символов 0–9, перенос разряда при превышении и веса разрядов как степени десяти.
  2. 01:39 Двоичная система: основание 2 — Всего два символа 0 и 1, веса разрядов как степени двойки: единицы, двойки, четвёрки, восьмёрки и так далее.
  3. 03:45 Счёт в двоичной системе — Последовательный счёт от нуля, переполнение разряда при превышении двух значений и запись чисел в десятичном сопоставлении.
  4. 05:35 Перевод двоичных чисел в десятичные — Практика перевода: сложение весов единичных разрядов для получения десятичного значения.
  5. 06:14 Степени двойки и число значений — Наблюдение: три разряда дают восемь значений, четыре — шестнадцать; удобство чисел, являющихся степенями двойки.
  6. 06:52 Восьмеричная система — Система с основанием восемь, группировка бит по три; исторически применялась на мейнфреймах, сейчас почти не используется.
  7. 08:06 Шестнадцатеричная система и A–F — Основание 16, четыре бита на цифру, символы 0–9 и A–F для значений 10–15 и приёмы запоминания простых чисел.
  8. 10:57 Сдвиг разрядов: умножение и деление — В десятичной и двоичной системах умножение и деление на основание выполняется сдвигом разрядов.
  9. 13:26 Байты, биты и hex в протоколах — Один байт — восемь бит и два hex-символа; 16, 24 и 32 бита соответствуют четырём, шести и восьми hex-цифрам.
  10. 17:22 Итог: важность практики — Hex и двоичный формат критичны для регистров и протоколов связи; нужна регулярная практика перевода.
16:29

Дополнительный код и двоичная арифметика (Two's Complement)

Представление отрицательных чисел в дополнительном коде и арифметика сложения/вычитания для аудиообработки в DSP. 10 тайм-кодов 16:29

Ролик объясняет, зачем DSP нужен дополнительный код и как он превращает вычитание в обычное сложение. Автор начинает с двоичного сложения (5 + 7 = 12), затем показывает, что вычитание аппаратно сложнее, и вводит приём получения отрицательного числа: инвертировать все биты (обратный код) и прибавить единицу. На примерах 10 − 2 и 12 − 5 демонстрируется, что сложение с дополнительным кодом отрицательного числа даёт корректный результат, а перенос за пределы разрядной сетки просто отбрасывается. Далее объясняется аудиоконтекст: микширование требует суммирования положительных и отрицательных отсчётов, поэтому середина шкалы АЦП/ЦАП (синфазное напряжение, псевдоземля) принимается за ноль. На 4-битном примере показано, как 16 значений делятся между положительными и отрицательными числами и что старший бит служит знаком. В конце разбираются крайние значения диапазона, роль шумового порога и асимметрия: на отрицательной стороне доступно на одно значение больше.

Тайм-коды (10)
  1. 00:00 Введение и двоичное сложение — Что такое дополнительный код; на таблице десятичных, шестнадцатеричных и двоичных чисел складываются 5 и 7, получается 12 (C).
  2. 01:38 Проблема вычитания и идея дополнительного кода — Вычитание для аппаратуры сложнее, чем сложение; вводится дополнительный код как способ сделать число отрицательным.
  3. 01:51 Как получить отрицательное число — На примере шестёрки: инвертируются все биты (обратный код), затем прибавляется единица — получается −6.
  4. 03:18 Практика: 10 − 2 — Двойка переводится в дополнительный код (−2) и складывается с 10; перенос отбрасывается, результат 8.
  5. 04:50 Практика: 12 − 5 — Аналогично −5 прибавляется к 12 с учётом переносов, получается 7; метод подтверждается.
  6. 06:07 Зачем это нужно в аудио — Теория: сигналы суммируются при микшировании, отсчёты бывают положительными и отрицательными, что соответствует сложению давлений звуковой волны.
  7. 08:28 Ноль посередине шкалы — Синфазное напряжение (псевдоземля) между землёй и питанием принимается за ноль; вводится 4-битный пример на 16 значений.
  8. 09:24 Распределение значений и знаковый бит — Показано, как значения делятся на положительные и отрицательные; старший бит (MSB) указывает знак, три младших дают величину.
  9. 11:14 Построение отрицательных чисел — Получение −1, −2, −7 и −8 через обратный код и прибавление единицы; выявляется асимметрия диапазона.
  10. 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)
  1. 00:00 Введение и обзор оборудования — Автор представляет себя и тему; показывает USB-интерфейс (I²C/SPI), плату ADAU1701 MiniZ, вход через 3,5-мм разъём и используемые выходы 2 и 3.
  2. 02:33 Новый проект SigmaStudio и базовый вход/выход — Создание проекта, выбор 1701, подключение USB-интерфейса; добавляются вход, фильтры DC-блокировки и детектор уровня для проверки сигнала.
  3. 03:35 Двухполосный кроссовер — Из категории фильтров добавляется двухполосный кроссовер двойной точности, делается стерео путём расширения алгоритма; обсуждается единый орган управления.
  4. 04:41 Псевдонимы (alias) и кнопочный регулятор громкости — Показано создание псевдонимов (alias) для обхода блока и уборки проекта; добавляется кнопочный регулятор громкости с управлением вверх/вниз и mute.
  5. 08:04 Настройка GPIO и регулировка четырёх каналов — Подключается интерфейс чтения GPIO, добавляются три копии регулятора громкости для четырёх каналов; настраиваются порты GPIO для кнопок вверх/вниз.
  6. 13:38 MUX, настройка кроссовера и фазы — Собирается мультиплексор для переключения между высокими, низкими и обходом; настраивается точка раздела (например, 1000 Гц), демонстрируется влияние смещения частоты и инверсии полярности.
  7. 19:27 Регулятор громкости через таблицу поиска — Выясняется, что громкость не работает, так как таблица поиска заполнена единицами; импортируется логарифмическая таблица коэффициентов из текстового файла, после чего громкость начинает работать.
  8. 23:03 Отладка GPIO: инверсия и обратное чтение — С помощью обратного чтения проверяется состояние кнопок GPIO 2 и 3; обнаруживается инверсия (нажато = 0) и выполняется инверсия кнопок.
  9. 26:09 Ограничение 24 бит и обход через умножение — Обсуждается настройка повтора удержания (500 мс, повтор каждые 250 мс); показывается, что при чтении доступны 24 бита из 28, младшие 4 бита не видны, и применяется умножение на 4 дважды.
  10. 31:45 Mute, логика OR и T-триггер; итоги — Демонстрируется mute одновременным нажатием; кнопка GPIO 9 через логику OR и T-триггер эмулирует обе кнопки; даются советы не перегружать шину непрерывными чтениями и закрывается видео.
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)
  1. 00:02 Что такое вспомогательный АЦП — Это не аудио-АЦП, а преобразователь данных SAR; у Sigma 100 он 8-битный, 256 значений от 0 до 255.
  2. 00:53 Проблемы шума, джиттера и дизеринга — Шум потенциометра или цепи вызывает джиттер и дизеринг, что слышно при управлении громкостью.
  3. 01:22 Аппаратный фильтр и гистерезис — Можно включить ФНЧ для сглаживания и гистерезис, задающий порог переключения.
  4. 02:05 12 бит после фильтрации и выравнивание — При фильтрации на выходе фактически движутся 12 бит; данные выравниваются по левому краю и не достигают единицы.
  5. 04:00 Применение: регулятор громкости и таблицы — Значение от 0 до почти 1 можно сразу подавать на регулятор громкости или на таблицы (целые либо дробные).
  6. 05:32 Ядра Sigma 200: нет AUX ADC — У этих ядер вспомогательные АЦП отсутствуют — просто нет такого узла.
  7. 06:04 Ядра Sigma 300: 10 бит, 0–1023 — Здесь 8 (или 6) АЦП, 10-битный SAR на 1024 значения, выравнивание по правому краю.
  8. 07:13 Сдвиг на 14 бит для управления громкостью — Чтобы 10-битное значение заработало как регулятор от 0 до 1, его нужно сдвинуть влево на 14 бит.
25:51

ADAU1701 Capture Window, Params Tab and Sequencer window

Использование окна захвата, вкладки параметров и окна секвенсора в SigmaStudio на примере ADAU1701 10 тайм-кодов 25:51

На примере проекта кроссовера с кнопочным управлением (из предыдущих видео) Дэвид Тибо показывает, как SigmaStudio взаимодействует с DSP через окно захвата, вкладку параметров и секвенсор. Окно захвата фиксирует все обмены с микросхемой: видно огромные блочные записи данных программы и параметров, конфигурацию аппаратных регистров и записи от управления объектами, например мультиплексором. Вкладка Params открывает память параметров DSP в реальном времени, отображая значения в hex, формате 5.23 и как целое, и позволяет менять их вручную — при этом SigmaStudio не узнаёт о прямом изменении памяти. Автор разбирает конкретные параметры: стереомультиплексор (коэффициенты усиления и суммирование каналов), алгоритм усиления, алгоритм кнопки (время удержания в отсчётах, шаг, максимальный индекс и таблица громкости), коэффициенты биквадных кроссоверных фильтров и индикаторы уровня. В финале демонстрируется секвенсор: имитация действий микроконтроллера, добавление команд в последовательность, создание и переименование режимов и сохранение в XML.

Тайм-коды (10)
  1. 00:00 Введение и проект — Автор объявляет тему и использует существующий проект кроссовера с кнопочным управлением, регуляторами громкости и DC-ячейкой.
  2. 01:23 Окно захвата: загрузка и экспорт — Выполняется link/compile/download; видны блочные записи данных (5120 байт) и конфигурация; разбираются способы выделения и экспорта (текст, двоичные, адрес-данные, файл управления).
  3. 03:00 Захват изменений и форматы данных — При переключении мультиплексора в захвате появляются записи; данные показаны в hex и формате 5.23, что помогает понять логику коммутатора.
  4. 04:08 Окно параметров и стереомультиплексор — Открывается Params с памятью параметров в реальном времени; на примере стереомультиплексора (0/1, коэффициенты усиления и сумма) показано, как работает MUX.
  5. 06:36 Параметры усиления и алгоритма кнопки — Разбирается алгоритм Gain (усиление 1 и 1_2) и алгоритм кнопки: время удержания 24000 = 500 мс при 48 кГц, hold 12000, шаг 2048, максимальный индекс 32 и таблица громкости из 33 элементов.
  6. 11:07 Коэффициенты кроссоверных фильтров — Показаны коэффициенты биквадов (B0, B1, B2, A1, A2) для фильтров Линквиста-Райли 24 дБ; при изменении настроек фильтра значения в памяти меняются.
  7. 12:37 Индикаторы уровня и регуляторы громкости — Разбираются постоянная времени, удержание и спад индикаторов (480 = 10 мс при 48 кГц); рассматриваются простой Gain и программный регулятор громкости SLU с параметром target.
  8. 16:00 Прямое редактирование памяти DC-ячейки — Показано, как вручную записать значение в память DSP: SigmaStudio не видит это изменение и отображает старое значение до нажатия «Обновить» или обратного чтения.
  9. 19:35 Окно секвенсора: имитация микроконтроллера — Стрелкой справа открывается секвенсор; команда добавляется в последовательность, а режим загрузки в железо отправляет её в DSP, что фиксируется в окне захвата.
  10. 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)
  1. 00:00 Введение: DSP и SigmaDSP — Приветствие и представление автора; DSP — это цифровой сигнальный процессор, специализированный на умножении и сложении, что подходит для аудио.
  2. 01:14 История процессоров: ядро Sigma 100 — Первое поколение и ядро Sigma 100 со встроенными преобразователями; популярные модели 1701, 1702 и автомобильная 1401 на 50 МГц.
  3. 03:03 Ядро Sigma 200 и серия 1761 — Более высокое быстродействие (172 МГц), встроенные ASRC для асинхронных тактов; серия 1761 на 50 МГц для портативных устройств с АЦП/ЦАП и усилителем для наушников.
  4. 04:34 Ядро Sigma 300/350 и ускорители — Крупный скачок архитектуры: частота около 300 МГц, четырёхъядерный MAC-блок, аппаратные ускорители, ASRC, множество последовательных портов и гибкое тактирование.
  5. 06:54 SigmaStudio как ключевой инструмент — Именно SigmaStudio позволяет программировать компоненты готовыми блоками без знания программирования DSP, сокращая время разработки.
  6. 08:30 Три режима работы SigmaStudio — Обзор трёх режимов: разработка в GUI, настройка в реальном времени и экспорт управляющего кода для системного контроллера.
  7. 09:44 Режим реального времени (runtime) — После компиляции и загрузки программа выполняется в DSP; SigmaStudio работает как контроллер и в реальном времени меняет громкость, эквалайзеры и маршрутизацию.
  8. 10:57 Экспорт кода и самостоятельная загрузка — Экспорт заголовков и C-кода для микроконтроллера; большинство SigmaDSP умеют сами загружаться из EEPROM, поэтому контроллер нужен не всегда.
  9. 12:47 Обзор интерфейса и инструментов — Центральное поле для перетаскивания блоков из панелей инструментов, выходной файл компилятора с оценкой MIPS, окно захвата, вкладка параметров и секвенсор.
  10. 15:14 Заключение — Итог обзора платформы, приглашение смотреть другие видео серии и контактные данные автора.
25:55

Creating a Starter Project for the ADAU1701

Пошаговое создание базового стартового проекта ввода-вывода для ADAU1701 в SigmaStudio 10 тайм-кодов 25:55

Ролик показывает, как с нуля собрать в SigmaStudio универсальный стартовый проект для сигнального процессора ADAU1701, который автор использует как основу для дальнейших аудиозадач. Сначала демонстрируется настройка окружения: создание проекта, панели инструментов, добавление USB-интерфейса и самого DSP, выбор связи по I²C или SPI. Затем собирается аудиоцепочка: входной блок с АЦП и цифровыми входами, аппаратный регулятор громкости со slew, переводимый в стерео, индикаторы уровня и выходные ячейки ЦАП. Отдельное внимание уделяется практическим проблемам: постоянному смещению с АЦП, которое устраняется фильтром DC blocking, запасу усиления в ядре и правильной интерпретации значений в dBFS. В проект добавляются синусоидальный генератор с переключателем MUX, бесплатное T-соединение для разветвления сигнала, а также источник DC и ячейка DSP readback для проверки обмена данными с микросхемой. В конце автор рекомендует сохранить полученную схему как базовый проект «input-output generator».

Тайм-коды (10)
  1. 00:00 Настройка окружения SigmaStudio — Создание нового проекта, обзор двух панелей инструментов (древовидной и второй), размещение окна захвата и включение недостающих панелей.
  2. 01:04 Добавление USB-интерфейса и ADAU1701 — Перетаскивание USB-интерфейса связи и процессора 1701 в проект, индикация подключения цветом и настройка I²C/SPI и адресов.
  3. 02:41 Вкладки конфигурации и регистров — Переход на вкладку Hardware Configuration, просмотр регистровых элементов управления и переход к вкладке схемы.
  4. 03:21 Вход, регулятор громкости и индикаторы — Добавление входного блока (АЦП 0–1 и цифровые 2–9), программного регулятора громкости со slew, расширение до стерео и подключение индикаторов уровня с цифровым отображением дБ.
  5. 07:59 Выходные ячейки, стерео и загрузка в DSP — Выбор ЦАП 0–3 или цифровых выходов, копирование в стерео, назначение на DAC 2 и 3, режим разработки и команда Link Compile Download.
  6. 10:01 Постоянное смещение и DC blocking — Обнаружение DC-смещения с АЦП без фильтра верхних частот и добавление блока DC blocking из раздела Filters/Misc.
  7. 13:18 Запас усиления, dBFS и индикаторы — Разбор 24-битного входа и 28-битного ядра, запаса над 0 dBFS, настройки диапазона и единиц индикаторов уровня.
  8. 14:46 Генератор, MUX и T-соединение — Добавление синусоидального генератора, стереопереключателя MUX, регулятора для генератора и бесплатного T-соединения для разветвления сигнала.
  9. 21:06 DC readback для проверки связи — Источник DC и ячейка DSP readback как средство проверки обмена с DSP, формат 5.23 и потеря младших 4 бит при чтении.
  10. 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)
  1. 00:00 Введение и цель ролика — Автор представляет первый вводный проект по SigmaDSP и объясняет, что покажет работу с SigmaStudio и ADAU1701.
  2. 00:28 Обзор микросхемы ADAU1701 — Ядро DSP со встроенным кодеком: 2 стерео АЦП, 4 ЦАП, последовательные порты, GPIO, 8-битные aux ADC, I²C/SPI.
  3. 01:32 USB-интерфейс: USB ↔ I²C/SPI — Интерфейс преобразует USB в I²C или SPI и передаёт только управляющие данные; аудио через него не проходит.
  4. 02:31 Обзор отладочной платы ADAU1701 — Демонстрация платы: потенциометр AUX ADC, USB-порт, 1701 в центре, переключатели самозагрузки и тактирования.
  5. 03:36 GPIO, светодиоды и кнопки — К порту GPIO подключены два светодиода и три тактовые кнопки, которые можно использовать в программе.
  6. 03:45 Питание и аудиовходы/выходы — Плата питается от USB; есть стереовход 3,5 мм, выход на разъёме и первый/второй ЦАП на усилителе класса D для динамиков.
  7. 04:41 Индикация и переключатель IOVDD — Светодиоды питания, SPI и I²C показывают режим; переключатель задаёт уровень IOVDD 3,3 или 1,8 В.
  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)
  1. 00:00 Введение: передача данных между портами и ядром — Задача ролика — показать, как 24-битные данные последовательных портов попадают в ядро DSP и обратно.
  2. 00:19 Двоичные числа в дополнительном коде — Таблица положительных и отрицательных чисел: знаковый бит 1 означает минус, 0 — плюс.
  3. 00:53 Разрядность ядра и портов у Sigma 100/200 — Ядра ADAU1701/ADAU1761 — 28 бит, а порты, АЦП и ЦАП — 24 бита (иногда 16).
  4. 02:12 Расширение знака при входе в ядро — Отрицательное 24-битное слово дополняется единицами сверху, положительное — нулями, чтобы значение сохранилось.
  5. 04:56 Ядра Sigma 300/350 и сдвиг на один бит — 32-битное ядро семейств ADAU1452/ADAU1467: младший бит при передаче обнуляется, 24 бита сдвигаются, а сверху расширяется знак.
  6. 07:57 Обратная передача из ядра в порт — При выводе бит отбрасывается, знак восстанавливается, 24 бита уходят в порт, лишний шумовой бит теряется.
  7. 09:24 Сатураторы: положительное ограничение — Если старший лишний бит равен единице, на выход выдаётся максимум 7FFFFF — число ограничено.
  8. 11:25 Сатураторы: отрицательное ограничение — Если один из старших битов равен нулю, выдаётся максимальное отрицательное 800000, что видно в порту.
17:14

Levels and Headroom

Уровни сигнала, динамический диапазон и запас усиления (headroom) в SigmaDSP 9 тайм-кодов 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)
  1. 00:02 Введение в цифровую теорию и уровни — Постановка темы: базовые цифровые понятия и уровни сигнала в DSP.
  2. 00:15 4-битный пример и квантование — Пример простого 4-битного преобразователя с 16 значениями, дополнительный код и оцифровка синусоиды по выборкам.
  3. 03:55 Клиплинг при выходе за диапазон — Когда сигнал превышает максимум доступных чисел, значения обрезаются — суть цифрового клиппинга.
  4. 04:35 Каждый бит — это +6 дБ — Добавление бита удваивает число значений и напряжение, что соответствует примерно +6 дБ, а деление вдвое — −6 дБ.
  5. 06:16 Динамический диапазон и число битов — Расчёт DNR: 4 бита — 24 дБ, 8 — 48, 16 — 96, 24 — 144, 32 — 192 дБ; понятие эффективных бит (ENOB).
  6. 09:06 0 dBFS и полная шкала — Определение уровня 0 dBFS как максимального, использующего все доступные биты и числа; выше подняться нельзя.
  7. 11:03 Запас усиления в ядре DSP — Расширение бит при входе в ядро: Sigma 300 даёт ~42 дБ headroom, Sigma 100 (1701) — 24 дБ; необходимость снятия избытка при выводе.
  8. 14:02 Генераторы 0 dBFS для проверки тракта — Встроенные генераторы выдают ровно 0 dBFS для 24 бит и служат для проверки ЦАП и выравнивания бит в последовательных портах.
  9. 17:09 Заключение — Краткое резюме о уровнях, запасе усиления и практическом применении генераторов.

Sigma Studio Graphical Development Tool for SigmaDSP Audio Processors

Обзор среды графической разработки SigmaStudio для аудиопроцессоров SigmaDSP.

Обзорный видеоролик о среде графической разработки SigmaStudio для аудиопроцессоров Analog Devices SigmaDSP: общее представление о визуальном проектировании аудиотракта.

Исходные ролики размещены на RUTUBE; каталог собран из локального архива видео.