PushButton Volume
Блок PushButton Volume может использоваться с кнопками GPIO для управления громкостью входного аудиосигнала. Этот блок объединяет в себе функциональность блоков Push and Hold, Up/Down Control, Index lookup Table и SW External Volume control. Пользователь может гибко настроить собственную кривую громкости, которая будет прокручиваться с помощью кнопок.
Этот блок имеет ту же функциональность, что и алгоритм PushButton Volume, Mute, за исключением функции отключения звука (mute) при одновременном нажатии обеих кнопок GPIO.
Входные пины
| Name | Format [int/dec] - [control/audio] | Function Description |
|---|---|---|
| Pin 0: PushButton Up | int - control | Сигнал GPIO от кнопки, который увеличивает громкость |
| Pin 1: PushButton Down | int - control | Сигнал GPIO от кнопки, который уменьшает громкость |
| Pin 2: Interface Read | n/a | Регистр Interface Read для загрузки предыдущего постоянного значения данных в алгоритм |
| Pin 3: Interface Read | decimal - audio | Аудиовход для управления громкостью |
Выходные пины
| Name | Format [int/dec] - [control/audio] | Function Description |
|---|---|---|
| Pin 0: Interface Write | n/a | Регистр Interface Write для сохранения постоянных данных громкости для последующего вызова |
| Pin 1: Output Audio | decimal - audio | Аудиовыход с отрегулированной громкостью |
Элементы управления GUI
| GUI Control Name | Default Value | Range | Function Description |
|---|---|---|---|
| Invert GPIO | unchecked | [checked, unchecked] | Установка этого флажка инвертирует сигнал на входах для кнопок GPIO. Аппаратное обеспечение SigmaDSP GEN2 имеет регистровые функции для инвертирования сигнала, однако аппаратное обеспечение GEN3 этого не поддерживает. Установка или снятие этого флажка требует перекомпиляции, так как для реализации этой функции программный код добавляется или удаляется. |
| Hold (ms) | 500 | [0, 10000] | Определяет, как долго удерживается текущий уровень громкости, прежде чем будут генерироваться повторяющиеся импульсы для увеличения/уменьшения громкости, пока кнопка удерживается нажатой. |
| Repeat (ms) | 250 | [0, 10000] | Задает временной интервал между повторяющимися импульсами во время удержания. |
| Volume Table Points | 33 pts | [2, 800] | Задает размер таблицы: количество точек, используемых в кривой таблицы громкости. |
| Volume Table Values | 1 | [-16, 15.99] | Точки таблицы представляют собой фактические значения усиления для кривой громкости в линейном представлении. Хотя диапазон поддерживает полные значения [-16, 15.99], значения таблицы обычно должны находиться в диапазоне [0, 1] для правильной регулировки усиления. Пользователь имеет полный контроль над этой таблицей и может добавить линейную, логарифмическую или пользовательскую кривую усиления громкости. |
| SW Slew Rate | 12 | [1, 23] | Управляет скоростью нарастания сигнала (slew) для перехода громкости между последовательными точками усиления громкости |
Информация о параметрах DSP
| GUI Control Name | Compiler Name | Function Description |
|---|---|---|
| Hold (ms) | PushButtonVolAlg1holdtime | Время удержания записывается в DSP как количество сэмплов, представляющее время в миллисекундах: Сэмплы = HoldTime(ms)*10^-3 *Fs |
| Repeat (ms) | PushButtonVolAlg1repeattime | Время отпускания записывается в DSP как количество сэмплов, представляющее время в миллисекундах: Сэмплы = HoldTime(ms)*10^-3 *Fs |
| Volume Table Points | PushButtonVolAlg1maxindex | Количество точек минус 1 является максимальным индексом в таблице. |
| Volume Table Values | PushButtonVolAlg1table_p0 … | Все точки в таблице записываются в DSP в их линейном формате усиления. |
| SW Slew Rate | PushButtonVolAlg1step | Значение скорости нарастания сигнала (slew rate), записываемое в DSP, соответствует формуле: 2^(-SW Slew Rate) |
Информация об алгоритме
Элемент управления PushButton Volume позволяет двум входам GPIO от кнопок управлять пользовательской кривой громкости. Кривая громкости может быть любой линейной, логарифмической или пользовательской кривой, построенной с любым количеством точек. При нажатии кнопки «Up» (Вверх) громкость увеличивается, индексируясь вверх по значениям таблицы. При нажатии кнопки «Down» (Вниз) громкость уменьшается, индексируясь вниз по значениям таблицы. При достижении предельного индекса на любом конце громкость просто удерживается.
Когда кнопка удерживается в положении «вверх» или «вниз», алгоритм прокручивает точки усиления громкости со скоростью, определяемой временем удержания (hold) и повтора (repeat). Время удержания определяет, как долго должна удерживаться кнопка, прежде чем будет запущен новый импульс повтора. Импульс повтора определяет интервал между инкрементальным или декрементальным переходом по точкам громкости, пока кнопка удерживается.
Пример
На следующем изображении показано, как два входа GPIO используются для управления алгоритмом громкости в блоке PushButton Volume. Алгоритм PushButton Volume был расширен (grown) для поддержки стереофонического аудио. Переключатель mux позволяет сравнивать прямой сигнал от входов и сигнал с отрегулированной громкостью, направляемый на выходы. Блоки Interface Read и Write позволяют сохранять и вызывать последний уровень громкости.

Детали алгоритма
| Toolbox Path | GPIO Conditioning - Volume Control - Push Button - PushButton Volume |
| Cores Supported | ADAU170x ADAU144x ADAU176x ADAU178x |
| “Grow Algorithm” Supported | yes - see Algorithm Growth Information |
| “Add Algorithm” Supported | no |
| Subroutine/Loop Based | no |
| Program RAM | 102* |
| Program RAM (Invert GPIO) | 106* |
| Data RAM | 31* |
| Parameter RAM | 37* - Based on 33 points in table: each point = 1 Parameter RAM |
*Числа основаны на одном экземпляре алгоритма без дополнительного «add» или «grow»
