Аудиоэквалайзер на ПЛИС: улучшаем звучание дешевых колонок

equalizer

Автоматический аудиоэквалайзер, использующий цифровой анализ сигнала

 Введение

Разработанный проект – автоматический аудиоэквалайзер, использующий цифровой анализ сигнала, – это эквалайзер, позволяющий дешевым колонкам проигрывать звук высокого качества, подобно звуку из дорогих динамиков. Потребители могут скопировать характеристики динамиков с желаемым качеством звука и применить эти характеристики к собственным дешевым, низкокачественным динамикам. Структура и способ применения нашего проекта просты, и это позволяет пользователям дешевых динамиков добиться лучшего качества звука.

Созданный проект – это экономичное устройство, которое также может быть применено к аппаратуре более высокого уровня, чтобы добиться лучшего качества без модернизации существующей системы.

Описание функционала аудиоэквалайзера

Эквалайзер имеет три главные функции:

– Измерение и сохранение выхода системы динамиков.

– Анализ и сравнение сохраненного желаемого выхода с динамиков с выходом текущей системы, обработка входного сигнала и настройка характеристик выхода текущей системы динамиков, для того, чтобы подражать выходу исходной системы.

– Измерение выхода текущей системы и оценка производительности и качества.

Для того, чтобы реализовать озвученные функции, создан проект из четырех частей:

1) Реализован функционал блока быстрого преобразования Фурье (БПФ, Fast Fourier Transform, FFT) / обратного БПФ (ОБПФ, inverse FFT, IFFT) используя функции библиотеки MegaCore.

2) Аппаратное обеспечение для БПФ/ОБПФ настроено как эквалайзер путем хранения коэффициентов для каждого интервала частот в регистрах процессора Nios II.

3) Используя SOPC Builder в проект были добавлены следующие компоненты: контроллер SDRAM, контроллер флэш–памяти, FIFO буфер, пользовательская логика и интерфейс аудиокодека. Для системы с процессором Nios II портирована операционная система µClinux для управления процессорным ядром.

4) Создано программное обеспечение для мониторинга на базе ПК (персонального компьютера) с графическим интерфейсом пользователя (GUI), которое отображает и сохраняет выход системы и измеренный выход. Выход также может быть загружен в устройство Cyclone на учебной плате (DE1). Соединение между устройством и ПК происходит с помощью интерфейса RS-232 платы DE1.

Была выбрана µClinux в качестве ОС (операционной системы) для разрабатываемой системы, потому что многие программисты знакомы со средой Linux, что дает возможность уменьшить период разработки, а также из-за наличия большого количества ресурсов для разработчиков ориентированных на Linux. К тому же, µClinux существенно снижает потребность в низкоуровневом программировании, таком как обработка прерываний без перегрузки процессора.

Параметры производительности эквалайзера

Эквалайзер применяет уже измеренный отклик (выход) с другого динамика, к системе с текущим динамиком, а затем измеряет отклик действующей системы во второй раз. Пользователи могут отслеживать на сколько близки отклики между собой в GUI интерфейсе на компьютере.

Архитектура системы на базе НИОС

На рисунке 1 показана блок-схема системы. Блок обработки цифрового сигнала (DSP) выполняет часть обработки сигнала. Процессор Nios II реализует мониторинг и управление модулями. Существует также возможность расширить список задач, выполняемых процессором Nios II с помощью компилятора с С-to-Hardware (C2H) акселерацией или дополнительными пользовательскими инструкциями.

 

Рисунок 1. Диаграмма составных блоков системы

В проект был интегрирован цифровой анализатор сигналов (DSA) для измерения отклика динамика. Микрофон не зависит от выхода, поэтому, как только частотные характеристики достигнуты, другие частотные характеристики не являются критическими. На рисунке 2 показана блок-схема разработанного ПО (программного обеспечения).

Рисунок 2. Блок-схема ПО

Система выполняет три основные функции в соответствии с указаниями пользователя:

– Анализ выхода колонок. Система измеряет выход колонок, которые в данный момент подключены к системе. После измерения, программное обеспечение графически отображает результат, так что пользователь может решить, следует ли сохранить его.

– Сохранение выхода динамиков. Система может хранить измеренный выход динамиков на флэш-памяти; система может изменить выход других динамиков на основе этой информации.

– Настройка выхода динамиков. Если пользователь выбирает выход динамиков, которые в данный момент подключены к системе и желаемый выход динамиков, система может изменить выход текущего динамика с помощью DSP.

Эквалайзеры, представленные в настоящее время на рынке, могут осуществлять аналогичные функции, но пользователь должен вручную настроить каждую переменную. В будущем можно добавить функцию, которая импортирует рассчитанные значения переменных (как и те, которые используются в коммерческих эквалайзерах) в компьютер. Эта функция позволит пользователям использовать Winamp или Windows Media Player без использования дорогой коммерческой системы.

Описание разработки

Самая трудная часть проектирования аппаратной части системы – это пошаговая отладка и мониторинг работы системы. Новы блоки добавлялись в систему только после того, как предыдущая часть системы была полностью проверена. Также выполнена проверка корректности работы модулей, защищенных правом интеллектуальной собственности (ИС, IP-модули) с помощью симуляции. Этот процесс помог избежать повторной проверки существующих частей системы в процессе отладки и увеличил эффективность разработки.

Программное обеспечение Altera ® Quartus ® II, SOPC Builder и интегрированная среда разработки (IDE) Nios II позволили нам использовать уже проверенные функции ИС и методологии разработки, которые значительно снижают сложность отладки. Например:

– Поскольку был использован блок быстрого и обратного быстрого преобразования Фурье без каких-либо изменений, мы выполнили только простую проверку формата данных и синхронизации.

– Был реализован процессор Nios II, контроллер памяти, интерфейс FIFO и интерфейс аудиокодека путем использования SOPC Builder. Эти блоки являются основными функциями SOPC Builder-а, поэтому процесс разработки и испытания прошивки с использованием IDE Nios II не составили трудности.

– Сообщество ресрса JotSpot Wiki (nioswiki) предоставило хорошее описание того, как портировать µClinux. Требуется всего лишь следовать инструкциям, чтобы реализовать все IP блоки в SOPC Builder.

– Использовалось программирование в Windows для разработки мониторинговой программы для ПК. После того, как была разработана мониторинговая программа, была выполнена симуляция контролируемых сигналов с использованием программы на МАТЛАБ, а также использованы другие утилиты, которые облегчили работу с данными. Затем скомпилированный код был портирован на плату DE1 и выполенно его тестирование в аппаратуре.

Особенности разработки эквалайзера

Разработанный проект устройства эквалайзера имеет следующие особенности:

– Креативный. Используя ЦОС, разработанный эквалайзер позволяет заставить дешевые динамики звучать как дорогие.

– Недорогой. Все функции, кроме аудиокодека и микрофона, реализованы на Altera FPGA. На производительность не влияет использование дешевого микрофона, еще более уменьшая общую стоимость системы.

– Легкая и быстрая разработка. Процессор Nios II и определяемая пользователем логика (буфер, блок БПФ/ОБПФ, регистры и аудиокодек) подсоединены напрямую к шине Avalon, которая ими управляет. Таким образом, нет необходимости в использовании управления, использующего ввод-вывод общего назначения (general purpose IO, GPIO). В будущем, нет необходимости в разработке блока ЦОС отдельно, вместо этого, достаточно реализовать его с помощью процессора Nios II, используя стандартные инструкции, определяемые пользователем.

Выводы

С помощью ПЛИС Cyclone FPGA на плате DE1 реализован 2048-сэмпловый блок быстрого и обратного быстрого преобразования Фурье процессор Nios II и другие функции ИС (IP) для обработки звука в формате 16-бит и частотой 44-kHz. К сожалению, разработанный проект может обрабатывать только магнитуду выхода динамиков, игнорируя задержки фазы и другие помехи, которые ограничивают производительность системы. В будущем, улучшение обработки сигналов еще более улучшит производительность системы.

Использование платы DE2 очень облегчило разработку проекта, в основном за счет быстрого прототипирования, так как решения с использованием FPGA фирмы Altera позволяют использовать проверенные инструменты и блоки ИС из Megawizard Plugin Manager Quartus II, что значительно ускоряет разработку цифровых систем.

Адаптация материалов: Орлов Д.А, ДК-21, НТУУ «КПИ», каф. КЭВА.

Источник: Конкурс Альтера