exponenta event banner

Запуск аудиофильтра при вводе звука в реальном времени с помощью платы Zynq

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

Введение

В этом примере выполняется следующее:

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

  2. Реализация на плате Zynq с использованием эталонного звукового дизайна

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

Перед началом работы

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

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

  • Пакет поддержки встроенного кодера для платформы Xilinx Zynq

  • Xilinx Vivado версии 2019.1

  • Плата ZedBoard или Zybo

Для настройки платы Zedboard см. раздел Настройка оборудования и инструментов Zynq в примере «Начало работы с платформой Targeting Xilinx Zynq». Подключите звуковой вход мобильного или MP3 проигрывателя к разъему LINE IN и наушники или динамики к разъему HPH OUT на плате Zedboard, как показано ниже. Аналогичную настройку можно выполнить на плате Zybo. Сведения о настройке платы Zybo см. в разделе Настройка платы Zybo в примере «Определение пользовательской платы и ссылочной конструкции для рабочего процесса Zynq».

Введение

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

modelname = 'hdlcoder_audio_filter_biquad';
open_system(modelname);

Моделирование системы с фильтрами нижних, полосовых и верхних частот

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

Эту модель можно протестировать, смоделировав модель в Simulink. Диапазон частот, отображаемых на анализаторе спектра, и аудиоэффект, слышимый через блок записи аудиоустройств, должны изменяться в зависимости от типа выбранного фильтра. Блок выбора фильтра используется для выбора типа фильтрации, выполняемой на входе звука.

Настройка модели для платы 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 и использовать рабочий процесс совместного проектирования аппаратного и программного обеспечения Zynq для развертывания этого проекта на оборудовании Zynq. Более подробное пошаговое руководство см. в примере Начало работы с платформой Targeting Xilinx Zynq.

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 из подсистемы DUT, hdlcoder_audio_filter_biquad/Audio_filter или двойным щелчком по полю «Запуск помощника по рабочим процессам HDL» в модели.

Целевые настройки интерфейса уже сохранены для Zedboard в этой модели, поэтому настройки в задании 1.1-1.3 загружаются автоматически. Дополнительные сведения о сохранении настроек целевого интерфейса в модели см. в разделе Сохранение настроек целевого оборудования в примере модели.

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

В задаче 1.2 для эталонного проектирования выбрана аудиосистема с интерфейсом AXI4 Stream.

Интерфейс AXI4-Stream используется для передачи аудиоданных между эталонной конструкцией и алгоритмом фильтрации IP. Интерфейс AXI4-Stream содержит данные (Data) и управляющие сигналы, такие как действительные данные (Valid), обратное давление (Ready) и граница данных (TLAST). По крайней мере, Данные и Действительные сигналы требуются для IP AXI4-потока основное поколение. В задаче 1.3 загружается таблица интерфейса целевой платформы, как показано на следующем рисунке. Порты потока аудиоданных, Valid_in, Data_in, Valid_out и Data_out,are, отображаемые на интерфейсы AXI4-Stream, 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 Master.

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

Интеграция IP в AXI4-Stream аудио совместимый эталонный дизайн

Затем в помощнике по рабочим процессам HDL выполняются задачи интеграции встроенных систем для развертывания созданного IP-ядра HDL на оборудовании Zynq.

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

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

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

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

Модель интерфейса программного обеспечения генерируется в задаче 4.2 «Создание модели интерфейса программного обеспечения».

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

  1. В созданной модели щелкните панель Оборудование (Hardware) и перейдите в раздел Параметры оборудования (Hardware settings), чтобы открыть диалоговое окно Параметр конфигурации (Configuration Parameter).

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

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

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

Тип используемого фильтра можно выбрать с помощью раскрывающегося списка в блоке «Выбор фильтра»

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