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

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

Введение

В этом примере, вас:

  1. Смоделируйте аудиосистему с Низкой передачей, передачей Полосы и Фильтрами высоких частот

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

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

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

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

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

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

  • Версия 2017.4 Xilinx Vivado

  • ZedBoard или Совет Zybo

Чтобы установить плату Zedboard, обратитесь к разделу "Set up Zynq hardware and tools" в Начале работы с Рабочим процессом Элемента кода HW/SW для примера Платформы Xilinx Zynq. Соедините аудиовход с мобильного телефона или MP3-плеера к ЛИНИИ разъем IN и или наушники или динамики к разъему HPH OUT на Zedboard как показано ниже. Подобная настройка может быть сделана на плате Zybo. Для настройки платы Zybo отошлите к разделу "Set up the Zybo board" в Задавании и Регистре Пользовательский Совет и Исходный проект для примера Рабочего процесса Zynq.

Введение

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

modelname = 'hdlcoder_audio_filter_biquad';
open_system(modelname);

Смоделируйте систему с Низкой передачей, передачей Полосы и Фильтрами высоких частот

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

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

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

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

Для платы Zybo обратитесь к Авторской разработке исходного проекта для аудиосистемы на примере платы Zybo.

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

Data_in и Valid_in являются AXI4-потоковыми сигналами. Чтобы изучить, как AXI4-потоковый интерфейс используется, обратитесь к разделу "Model Streaming Algorithm with Simplified Streaming Protocol" в Начале работы с AXI4-потоковым Интерфейсом в примере Рабочего процесса Zynq. Data_in содержит аудиоданные, которые будут обработаны и действия Valid_in как разрешать сигнал. Каждый фильтр сопоставлен с Вовлеченным плата Zedboard или Zybo, чтобы визуально указать, работает ли фильтр или прочь.

Входом FilterSelect управляют через интерфейс AXI4 LITE.

Сгенерируйте ядро IP HDL с AXI4-потоковым Интерфейсом

Затем можно запустить HDL Workflow Advisor и использовать рабочий процесс элемента кода аппаратного программного обеспечения Zynq, чтобы развернуть этот проект на оборудовании Zynq. Для более подробного пошагового руководства можно обратиться к Началу работы с Рабочим процессом Элемента кода HW/SW для примера Платформы Xilinx Zynq.

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

hdlsetuptoolpath('ToolName', 'Xilinx Vivado', 'ToolPath', 'C:\Xilinx\Vivado\2017.4\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 в этой модели в качестве примера, таким образом, настройки в Задаче 1.1 к 1,3 автоматически загружаются. Чтобы узнать больше о сохранении цели соединяют интерфейсом с настройками в модели, можно обратиться к Сохранять Настройкам Целевого компьютера в примере Модели.

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

В Задаче 1.2, Аудиосистема с Потоковым Интерфейсом AXI4 выбрана для Исходного проекта.

Интерфейс AXI4-Stream используется в передаче аудиоданных между исходным проектом и IP алгоритма фильтрации. Интерфейс AXI4-Stream содержит данные (Данные) и управляющие сигналы, такие как данные, допустимые (Допустимый), (Готовое) противодавление, и контур данных (TLAST). По крайней мере, Данные и Допустимые сигналы требуются для AXI4-потоковой генерации ядра IP. В Задаче 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, затем сопоставляют светодиоды с фильтром вручную путем выбора LEDs General Purpose [0:4].

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

3. Щелкните правой кнопкой по Task 3.2, Сгенерируйте Код RTL и Ядро IP, и выберите Run to Selected Task, чтобы сгенерировать ядро IP. Можно найти отображение адресов регистра и другую документацию для ядра IP в сгенерированном Отчете Ядра IP.

Интегрируйте IP в AXI4-потоковое-аудио совместимый исходный проект

Затем в HDL Workflow Advisor, вы запускаете задачи Интегрирования Встраиваемой системы развернуть сгенерированное ядро IP HDL на оборудовании Zynq.

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

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

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

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

Модель программного интерфейса сгенерирована в Задаче 4.2, Сгенерируйте Модель Программного интерфейса.

1. Прежде чем вы сгенерируете код из модели программного интерфейса, прокомментируете источник аудиовхода и приемник аудиовыхода т.е. Из Мультимедийного Файла, Преобразования типа данных, Буфера, Средства записи Аудио устройства и Спектра Блоки Анализатора. Эти блоки не должны быть запущены на процессоре ARM. IP Audio_filter запускается как *Filtering_Algorithm" на матрице FPGA. Процессор ARM использует интерфейс AXI4-Lite в выборе типа фильтра, т.е. Biquad Низко передают, передача полосы, Высокая передача или Проходят.

  1. В сгенерированной модели откройте диалоговое окно Configuration Parameters.

  2. Выберите Solver и установите "Время остановки" на "inf".

  3. В меню модели выберите Simulation> Mode> External.

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

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

Отфильтрованный аудиовыход можно услышать путем включения наушников или динамиков к разъему HPH OUT на плате Zynq. В зависимости от выбранного фильтра соответствие Вовлекло плату Zynq, включает. В этом примере LD0 включает, когда Проходят (Никакой используемый фильтр), опция выбрана, LD1 включает, когда Фильтр нижних частот Biquad выбран, LD2 включает, когда фильтр передачи Полосы Biquad выбран, и LD3 включает, когда Фильтр высоких частот Biquad выбран.

Для просмотра документации необходимо авторизоваться на сайте