Проект SigmaStudio для зонного DSP усилителя. Установка стека A2B в SigmaStudio
В этой статье опишу процесс создания проекта в SigmaStudio для зонного DSP усилителя.
1. Установка SigmaStudio и стека A2B
Для начала необходимо скачать и установить последнюю версию программы SigmaStudio. Процесс установки стандартный и описывать его смысла нет.
Далее, для поддержки в SigmaStudio устройств шины A2B необходимо скачать и установить стек для поддержки устройств A2B. По умолчанию ПО ставится на диск C — C:\Analog Devices\ADI_A2B_Software-Rel19.3.1\. После установки стека A2B переходим в каталог c:\Analog Devices\ADI_A2B_Software-Rel19.3.1\GUI\x86_x64\ и копируем два dll файла A2B.dll и A2BStack.dll в корень каталога установки SigmaStudio (C:\Program Files\Analog Devices\SigmaStudio 4.6\).
После копирования файлов запускаем SigmaStudio, идем в пункт меню Tools → Add-Ins-Browser и проверяем, что в списке есть файл A2B.dll и на нем установлен чекбокс.
Если файл в списке не появился автоматом, то в этом же окне нажимаем кнопку «Add DLL» и выбираем скопированный на предыдущем этапе файл A2B.dll из каталога C:\Program Files\Analog Devices\SigmaStudio 4.6\. После добавления файла не забываем нажать кнопку сохранить в окне AddIns.
Теперь SigmaStudio поддерживает устройства A2B. Для проверки можно создать новый проект и в окне «Tree ToolBox» в секции «Communication Channels» должны быть видны две записи — A2B-Aardvark и A2B-USBi.
2. Проект SigmaStudio для усилителя
Далее рассмотрим тестовый проект, который можно скачать на странице проекта GitHub. В каталоге находятся два проекта, основной для ADAU1452 — test_project_main.dspproj и для конфигурации шины A2B — test_project_a2b.dspproj. Рассмотрим каждый из них отдельно.
Конфигурация модулей тестового проекта следующая:
- Главный модуль
- 8 канальный усилитель
- Модуль аналоговых входов на АЦП ADAU1978.
2.1. Проект DSP ADAU1452
На вкладке «Hardware Configuration» добавляем USBi интерфейс, DSP процессор ADAU1452 с I2C адресом 0x70 и EEPROM память, которая располагается на шине SPI.
Далее необходимо настроить регистры ADAU1452, для этого переходим на вкладку сверху «Hardware Configuration» и снизу на вкладку «IC 1 — ADAU145x Register Control«, и на вкладке «CLOCK_CONTROL» выставляем конфигурацию тактовых генераторов и PLL.
На вкладке «SERIAL_PORTS» конфигурируем аудио порты для входов и выходов.
На входах SDATA_IN0 и SDATA_IN1 у нас подключена мастер нода шины A2B, сюда поступают все восходящие аудиопотоки от нод на шине A2B (например от модуля аналоговых входов). На вход SDATA_IN2 подключен аудио выход I2S от ESP32, который используется для приема аудио по Bluetooth. На вход SDATA_IN3 подключена USB аудиокарта на микросхеме PCM2706.
Выходы SDATA_OUT0 и «SDATA_OUT1 подключены на мастер ноду шины A2B, сюда идет звук на нисходящие каналы нод (например выходы на усилитель мощности или модуль линейных выходов). Выходы SDATA_OUT2 и SDATA_OUT3 не используются.
Описание блоков тестового проекта ADAU1452.
Проект блока для физического регулятора громкости находится на второй странице проекта ADC_VOL. Он читает сигнал на 0 входе АЦП ADA1452.
NxM Mixer позволяет с помощью регулировки громкости каждого входа направить звук абсолютно на любой канал, а так же микшировать несколько входов на любой выход. Каждый регулятор может регулироваться через MQTT.
2.2. Проект шины A2B
Шину A2B необходимо сконфигурировать со всеми слейвами и устройствами на шинах I2C слейвов. Далее сгенерированый файл проекта необходимо будет положить в каталог прошивки ESP32
На вкладке «Hardware Configuration» добавляем USBi интерфейс и трансивер серии AD24xx. Выставляем I2C адрес трансивера 0x68.
На изображении ниже описание блоков проекта A2B.
Нажимаем на блоке DSP ADAU1452 ПКМ, выбираем «Peripheral Properties» и указываем xml файл проекта DSP.
Настройки мастер ноды A2B. Включаем Upstream и Downstream потоки. Размерность слота ставим 24bit. Чем выше размерность тем меньше трансивер поддерживает одновременных потоков.
На вкладке «Audio Config» выбираем формат TDM8 (для текущей конфигурации — один 8 канальный усилитель)»
Настройка ноды усилителя. На вкладке «Slot Config» cтавим чекбокс «Enable Manual Slot Configuration«. Количество пропускаемых, через ноду , вверх слотов из порта B выставляем 2, это 2 входных канала от модуля аналоговых входов. В Downstream отмечаем номера слотов TDM8, они у нас первые 8.
Выбираем режим TDM8 с размерностью кадра 32bit.
Для блоков I2c с адресами 0X6A и 0X6B , это 2 микросхемы усилителей на шине I2C трансивера в усилителе (нода 1), выбираем файл с командами конфигурации микросхем, при загрузке проекта через SigmaStudio команды из этого файла выполняются, тем самым производя настройку микросхем усилителей (TAS6424). Эти команды так же сохраняются в заголовочный файл adi_a2b_i2c_commandlist.h при экспорте файлов проекта, из этого файла ESP32 будет инициализировать все ноды и устройства I2C на шинах нод при включении усилителя.
Указанный xml файл содержит следующие команды для записи в регистры TAS6424.
Настройка ноды аудио входов производится аналогично. Для теста я использовал 2 канала вместо поддерживаемых 4. Количество восходящих каналов 2.
Формат аудиоданных TDM2, размер фрейма 32bit.
Указываем файл с командами для I2C, настройка АЦП ADAU1978.
После настройки и тестирования проекта необходимо экспортировать файлы, заголовочный файл adi_a2b_i2c_commandlist.h используется при компиляции прошивки ESP32. Его необходимо скопировать в каталог configFromSigma проекта прошивки.