Выполнение аудиофильтра на входе Live Audio с помощью платы Zynq

В этом примере показано, как смоделировать аудиосистему и реализовать ее на плате Zynq ® с помощью звукового исходного проекта.

Введение

В этом примере вы:

  1. Моделируйте аудиосистему с фильтрами Low pass, Band pass и High pass

  2. Реализуйте его на плате Zynq с помощью audio исходный проект

Цель этого примера состоит в том, чтобы получить аудиовход через линию вход Zedboard или Zybo, обработать его на FPGA и передать обработанный аудио в динамик. Приведенный выше рисунок показывает архитектуру такой системы высокого уровня. Он использует аудиокодек для интерфейса с периферийными устройствами и для преобразования аналого-цифровых сигналов и наоборот. IP Аудиокодека используются, чтобы настроить аудиокодек и для передачи аудиоданных между Zynq Soc и аудиокодеком. IP-адрес фильтра используется для обработки звука. Процессор ARM используется для управления типом фильтра, который будет использоваться, например, низкочастотным, полосовым или высокочастотным.

Прежде чем вы начнете

Чтобы запустить этот пример, вы должны установить и настроить следующее программное и оборудование:

  • HDL Coder поддержки платформы Xilinx Zynq

  • Пакет поддержки Embedded Coder для платформы Xilinx Zynq

  • Xilinx Vivado версия 2019.1

  • Плата ZedBoard или Zybo

Для настройки платы Zedboard см. раздел Set up Zynq hardware and tools в примере Начало работы with Targeting Xilinx Zynq Platform. Подключите аудио входа с мобильного или MP3 плеера к разъему IN- ЛИНИИ и наушникам или динамикам к разъему HPH OUT на панели Zedboard, как показано ниже. Подобная настройка может быть выполнена на плате Zybo. Для настройки платы Zybo см. раздел «Настройка платы Zybo» в разделе «Определение пользовательской платы» и Исходного проекта для Рабочего процесса Zynq.

Введение

В следующей модели аудио файла используется как вход в подсистему DUT, Audio_filter. При симуляции этой модели в Simulink обработанный аудиоэффект можно услышать через блок Audio Device Writer, и блок Spectrum Analyzer отображает спектрограмму отфильтрованного аудиовыхода.

modelname = 'hdlcoder_audio_filter_biquad';
open_system(modelname);

Моделируйте систему с фильтрами Low pass, Band pass и High pass

Коэффициенты фильтра могут быть сгенерированы с помощью функции MATLAB ® или в Simulink ®. В этой модели инструмент filterDesigner используется, чтобы сгенерировать коэффициенты фильтра для каждого типа фильтра. Затем эти коэффициенты фильтра экспортируются и сохраняются как файл MATLAB. Эти коэффициенты будут использоваться для разработки фильтров в Simulink. В этой модели дискретные блоки БИХ из Simulink используются в качестве биквадовских фильтров нижних частот, полосы пропускания или высоких частот в зависимости от соответствующих коэффициентов фильтра.

Можно протестировать эту модель, симулируя модель в Simulink. Области значений частот, наблюдаемых на анализаторе спектра, и аудио эффекта, услышанное через блок Аудио устройства Средства записи, должны варьироваться в зависимости от типа выбранного фильтра. Блок Filter Select используется для выбора типа фильтрации, которая должна выполняться при входе.

Настройте модель для платы Zynq

В порядок реализации этой модели на Zedboard необходимо сначала создать исходный проект в Vivado, который получает аудио входа на Zedboard и передает обработанное аудио данных из Zedboard. Для получения дополнительной информации о том, как создать исходный проект, которая интегрирует модель аудиофильтра, смотрите пример разработки Исходного проекта для аудиосистемы на плате Zynq.

Для получения информации о плате Zybo см. раздел «Создание Исходного проекта для аудиосистемы на плате ZYBO».

В исходном проекте, левом и правом каналах аудио данных объединяются вместе, образуя один канал. Они объединены таким образом, что нижние 24 бита являются левым каналом, а верхние 24 бита являются правым каналом. В модели Simulink, показанной выше, Data_in разделяется на 2 канала, т.е. слева и справа соответственно. Их величина делится на 2, и 2 канала складываются вместе, чтобы сформировать один канал. Фильтрация выполняется на этом канале.

Data_in и Valid_in являются AXI4-Stream сигналами. Чтобы понять, как используется AXI4-stream интерфейс, смотрите раздел «Алгоритм потоковой передачи модели с упрощенным потоковым протоколом» в примере «Начало работы с AXI4-Stream интерфейсом» в рабочем процессе Zynq. Data_in содержит аудио данных, которое должно обрабатываться, и Valid_in действует как разрешающий сигнал. Каждый фильтр сопоставлен со светодиодным индикатором на плате Zedboard или Zybo, чтобы визуально указать, включен или выключен фильтр.

FilterSelect входа управляется через AXI4 LITE.

Сгенерируйте IP-ядро HDL с AXI4-Stream интерфейсом

Затем можно запустить HDL Workflow Advisor и использовать рабочий процесс совместного проектирования аппаратного и программного обеспечения Zynq, чтобы развернуть этот проект на оборудовании Zynq. Более подробное пошаговое руководство можно найти в примере Начало работы с Targeting Xilinx Zynq Platform.

1. Настройте путь инструмента синтеза Xilinx Vivado с помощью следующей команды в командном окне MATLAB. Используйте собственный путь установки Vivado при запуске команды.

hdlsetuptoolpath('ToolName', 'Xilinx Vivado', 'ToolPath', 'C:\Xilinx\Vivado\2019.1\bin\vivado.bat');

2. Добавьте папку репозитория IP и файл регистрации Zedboard в путь MATLAB с помощью следующих команд:

addpath(fullfile(matlabroot,'toolbox','hdlcoder','hdlcoderdemos','customboards','ipcore'));
addpath(fullfile(matlabroot,'toolbox','hdlcoder','hdlcoderdemos','customboards','ZedBoard'));

Для платы Zybo используйте следующие команды.

addpath(fullfile(matlabroot,'toolbox','hdlcoder','hdlcoderdemos','customboards','ipcore'));
addpath(fullfile(matlabroot,'toolbox','hdlcoder','hdlcoderdemos','customboards','ZYBO'));

3. Запустите HDL Workflow Advisor из подсистемы DUT, hdlcoder_audio_filter_biquad/Audio_filter или двойным нажатием по полю Launch HDL Workflow Advisor в модели.

Настройки целевого интерфейса уже сохранены для Zedboard в этой модели примера, поэтому настройки в Task 1.1 до 1.3 загружаются автоматически. Чтобы узнать больше о сохранении настроек целевого интерфейса в модели, можно обратиться к примеру Save Target Hardware Settings in Model.

В Задаче 1.1 для Целевого рабочего процесса выбрана Генерация ядра IP, а для Целевой платформы - ZedBoard. Если вы используете плату Zybo, выберите ZYBO в качестве целевой платформы вместо Zedboard.

В Задаче 1.2 для AXI4 выбрана Аудиосистема с Исходным проектом Stream Interface.

Интерфейс AXI4-Stream используется для передачи аудио данных между исходным проектом и алгоритмом фильтрации IP. Интерфейс AXI4-Stream содержит данные (Data) и сигналы управления, такие как действительные данные (Valid), обратные давления (Ready) и контура данных (TLAST). Для генерации данных IP требуются по крайней мере сигналы Data AXI4-Stream и Valid. В Задаче 1.3 таблица интерфейсов целевой платформы загружается как показано на следующем рисунке. Порты потока аудиоданных, Valid_in, Data_in, Valid_out и Data_out, нанесены на карту к интерфейсам AXI4-потока, Pass_through_LED, BiQuad_LPF_LED, BiQuad_BPF_LED, BiQuad_HPF_LED нанесены на карту к светодиодам на Zedboard и порте параметра контроля, Filter_select нанесен на карту к интерфейсу AXI4-Lite. Если вы используете плату Zybo, отобразите светодиодные индикаторы на фильтр вручную, выбрав светодиодные индикаторы общего назначения [0:4].

Интерфейс AXI4-Stream сообщается в главном/ведомом режиме, где ведущее устройство отправляет данные в ведомое устройство. Поэтому, если порт данных является входом портом, присвойте его интерфейсу AXI4-Stream Slave, а если порт данных является выходом портом, присвойте его главному интерфейсу AXI4-Stream.

3. Щелкните правой кнопкой мыши Задачу 3.2, Сгенерируйте код RTL и IP Core и выберите Выполнить до выбранной задачи, чтобы сгенерировать ядро IP. В сгенерированном отчете IP Core Report можно найти отображение адресов регистров и другую документацию для ядра IP.

Интеграция IP-адресов с AXI4-Stream Audio Compatible Исходный Проект

Далее в HDL Workflow Advisor запускаются задачи Embedded System Интегрирования для развертывания сгенерированного IP-ядра HDL на оборудовании Zynq.

1. Запуск задачи 4.1, создание проекта. Эта задача вставляет сгенерированное IP-ядро в аудиосистему с AXI4 Stream Interface исходного проекта. Как показано на первой схеме, этот исходный проект содержит IP-адреса для обработки аудио данных внутри и вне Zedboard. Сгенерированный проект является полным проектом Zynq, включая часть алгоритма (сгенерированный алгоритм DUT IP) и часть платформы ( исходного проекта). Для получения дополнительной информации о том, как создать исходный проект, интегрирующий модель аудиофильтра, см. раздел Создание Исходный проект для аудиосистемы на плате Zynq или Создание Исходного проекта для аудиосистемы на пример платы ZYBO.

2. Щелкните ссылку на панели результатов, чтобы открыть сгенерированный проект Vivado. В инструменте Vivado нажмите Open Блока Проекта, чтобы просмотреть схему Zynq проекта, которая включает сгенерированное IP-ядро HDL, другие IP обработки аудио и процессор Zynq.

3. В HDL Workflow Advisor запустите остальные задачи, чтобы сгенерировать модель интерфейса программного обеспечения, и создайте и загрузите битовый поток FPGA. Выберите Download programming method в задаче Program Target Device, чтобы загрузить битовый поток FPGA на карту SD на плате Zynq, поэтому ваш проект будет автоматически перезагружен при цикле включения платы Zynq.

Сгенерируйте исполняемый файл ARM для настройки параметров на FPGA Fabric

Модель интерфейса программного обеспечения сгенерирована в Задаче 4.2, Generate Software Interface Model.

1. Прежде чем вы сгенерируете код из модели интерфейса программного обеспечения, закомментируйте источник аудио входа и приемник аудио выхода то есть из мультимедийного файла, преобразования типа данных, буфера, Аудио устройства Средства записи и блоков анализатора спектра. Эти блоки не нужно запускать на процессоре ARM. IP-адрес Audio_filter работает как * Filtering_Algorithm "на фабрике FPGA. Процессор ARM использует AXI4-Lite интерфейс для выбора типа фильтра, то есть Biquad Low pass, полоса, High pass или Pass Through.

  1. В сгенерированной модели щелкните на панели Hardware и перейдите в Hardware settings, чтобы открыть диалоговое окно Параметр Конфигурации.

  2. Выберите решатель и установите «Stop Time» на «inf» и нажмите ok.

  3. На панели « Оборудовании» нажмите кнопку «Монитор и настройка».

  4. Нажмите кнопку Run на панели инструментов модели. Embedded Coder строит модель, загружает исполняемый файл ARM на оборудование платы Zynq, выполняет его и соединяет модель с исполняемым файлом, работающим на оборудовании платы Zynq.

Тип фильтра, который будет использоваться, может быть выбран с помощью раскрывающихся опций в блоке Filter Select

Отфильтрованные аудио выходы можно услышать, подключив наушники или динамики к разъему HPH OUT на плате Zynq. В зависимости от выбранного фильтра включается соответствующий светодиодный индикатор на плате Zynq. В этом примере LD0 включается, когда выбрана опция Pass through (No filter used), LD1 включается, когда выбран фильтр Biquad Low pass, LD2 включается, когда выбран фильтр Biquad Band pass и LD3 включается, когда выбран фильтр Biquad High pass.