exponenta event banner

Запуск аудиофильтра с несколькими каналами AXI4-Stream на плате ZedBoard

В этом примере показано, как смоделировать аудиосистему с несколькими каналами AXI4-Stream и развернуть ее на ZedBoard™ с помощью эталонной аудиосистемы.

Введение

В этом примере вы моделируете программируемый аудиофильтр со спектрограммой, используя несколько каналов AXI4-Stream и расширенные сигналы AXI4-Stream Ready и TLAST. Один AXI4-Stream канал передает данные между фильтром и аудиокодеком. Другой AXI4-Stream канал взаимодействует с системой обработки для программирования коэффициентов фильтрации и передачи данных спектрограммы на главный компьютер для анализа.

Затем можно запустить IP Core Generation workflow-процесс создания IP-ядра HDL и развертывания алгоритма на плате ZedBoard с использованием звукового эталона.

Архитектура системы

На этом рисунке показана высокоуровневая архитектура системы.

IP аудиокодека конфигурируют аудиокодек и передают аудиоданные между платой ZedBoard и аудиокодеком. IP обработки звука, генерируемый HDL Coder™, выполняет фильтрацию и анализ спектра. IP DMA передают AXI4-Stream данные между системой обработки и FPGA. Потоковые данные, передаваемые из системы обработки через MM2S DMA IP, программируют коэффициенты фильтра на FPGA. Потоковые данные, принятые системой обработки через S2MM DMA IP, содержат данные спектрограммы, вычисленные на FPGA. Система обработки также конфигурирует весовую кривую для анализа спектра с использованием интерфейса AXI4-Lite.

Предпосылки

Этот пример расширяет аудиофильтр на примере ввода в реальном времени, чтобы использовать несколько потоковых каналов. Пример использования одного потокового канала см. в разделе Запуск аудиофильтра при вводе звука в реальном времени с помощью платы Zynq.

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

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

Алгоритм обработки звука модели

Открытие модели hdlcoder_audio_filter_multistream.

open_system('hdlcoder_audio_filter_multistream')
set_param('hdlcoder_audio_filter_multistream', 'SimulationCommand', 'Update')

Модель содержит подсистему DUT для обработки звука, блоки источника и приемника для моделирования звука, а также модели установок для DMA, которые передают данные потока между системой обработки и FPGA.

Соображения по ставке

Для аудиоприложений, работающих на FPGA, тактовая частота FPGA в несколько раз выше частоты дискретизации звука. Отношение тактовой частоты FPGA к частоте дискретизации аудиоданных является коэффициентом избыточной дискретизации. В этом примере коэффициент избыточной дискретизации моделируется с использованием блоков Repeat и Upsample.

Моделирование конструкции с тактовой частотой FPGA позволяет оптимизировать использование ресурсов на целевой аппаратной платформе за счет использования циклов простоя и повторного использования различных компонентов. Звуковое приложение, показанное в этом примере, использует частоту дискретизации звука, равную 48kHz и тактовая частота FPGA 96MHz. Коэффициент избыточной выборки в этом случае равен 2000. Такое большое значение коэффициента избыточной дискретизации значительно замедляет моделирование Simulink.

Чтобы сократить время моделирования, вместо использования параметра Коэффициент избыточной дискретизации (Oversampling factor) можно смоделировать конструкцию при минимальном коэффициенте избыточной дискретизации, необходимом для проекта. Минимальный требуемый коэффициент избыточной дискретизации для конструкции может быть определен длиной аудиофильтра, которая равна 1001. Это значение уменьшает время моделирования вдвое и обеспечивает достаточные циклы простоя между выборками данных для логики последовательного фильтра.

Аудиофильтр

Внутри подсистемы DUT фильтр FIR обрабатывает данные из канала AXI4-Stream аудиокодека. Коэффициенты фильтра генерируются в MATLAB ® и программируются с использованием второго интерфейса AXI4-Stream, который взаимодействует с системой обработки. Отфильтрованный аудиовыход передается в аудиокодек.

Аудиофильтр является полностью последовательной реализацией FIR-фильтра. Эта структура фильтра лучше всего подходит для аудиоприложений, которые требуют большого коэффициента избыточной дискретизации, поскольку фильтр использует операцию многократного накопления (MAC) для каждого канала. Фильтр также использует блоки ОЗУ для реализации линии задержки данных и источника коэффициентов. Эта реализация экономит площадь, избегая использования высокой логики среза фильтрами высокого порядка.

Анализатор спектра

Звуковой сигнал подается в анализатор спектра после прохождения через фильтр FIR. Анализатор спектра вычисляет БПФ отфильтрованного сигнала, применяет весовую функцию и преобразует результат в дБм. Можно запрограммировать тип взвешивания, выполняемый с помощью интерфейса AXI4-Lite, как без взвешивания, A-взвешивание, C-взвешивание или K-взвешивание. Фактические функции взвешивания реализуются с использованием таблиц поиска, созданных с помощью функции Audio Toolbox™. weightingFilter.

Интерфейсы AXI4-Stream модели

Модель содержит два AXI4-Stream интерфейса. Один AXI4-Stream интерфейс взаимодействует с аудиокодеком. Другой интерфейс AXI4-Stream взаимодействует с системой обработки данных через DMA. Для интерфейса аудиокодека требуется только Data и Valid сигналы. Интерфейс DMA, с другой стороны, дополнительно использует Ready и TLAST сигналы протокола AXI4-Stream.

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

Сигнал готовности

В интерфейсе AXI4-Stream используется Ready сигнал приложения или реакции на противодавление. Модель использует Ready сигнал на ведущем канале AXI4-Stream от FPGA в систему обработки для ответа на обратное давление от DMA. Когда DMA в нисходящем направлении не может получить больше выборок спектрограммы, он отменяет ввод Ready сигнал на ведущем канале AXI4-Stream. Чтобы гарантировать, что выборки спектограмм не отбрасываются, модель буферизирует данные в FIFO до Ready подается сигнал, указывающий, что DMA снова готов принять выборки.

Рабский канал AXI4-потока от Системы обработки до FPGA не должен применять противодавление и следовательно Ready сигнал всегда утверждается. Аудиокодек не обрабатывает обратное давление и не использует его Ready сигнал по любому каналу. Чтобы узнать больше о Ready в AXI4-Stream моделировании см. Готовый сигнал (необязательно).

Сигнал TLAST

TLAST сигнал используется для указания последней выборки кадра. Модель использует TLAST сигнал на Рабском канале AXI4-потока как индикатор, что это получило полный набор коэффициентов фильтра. На канале AXI4-Stream Master, TLAST сигнал используется для указания конца кадра анализатора спектра. Чтобы узнать больше о TLAST в AXI4-Stream моделировании см. Другие протокольные сигналы (необязательно).

Настройка модели для ZedBoard

Для реализации этой модели на плате ZedBoard сначала необходимо иметь эталонную конструкцию в Vivado, которая принимает входные аудиосигналы на плате ZedBoard и передает обработанные аудиоданные из платы ZedBoard. Дополнительные сведения о создании эталонной конструкции, которая взаимодействует с аудиокодеком на плате ZedBoard, см. в разделе Разработка эталонной конструкции для аудиосистемы на плате Zynq. Этот пример расширяет эталонную конструкцию в этом примере, добавляя IP-адреса DMA для связи с системой обработки.

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

Создание IP-ядра HDL с помощью интерфейсов AXI4-Stream

Затем можно запустить мастер рабочего процесса HDL и использовать рабочий процесс совместного проектирования аппаратного и программного обеспечения Zynq для развертывания этого проекта на оборудовании Zynq. Более подробное пошаговое руководство можно найти в примере «Начало работы с совместными разработками HW/SW для платформы 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'));

3. Откройте помощник по рабочим процессам HDL из подсистемы DUT, hdlcoder_audio_filter_multistream/DUT или дважды щелкните в модели поле Запустить помощника по рабочим процессам HDL (Launch HDL Workflow Advisor).

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

4. Запустите задачу Set Target Device and Synthesis Tool.

В этой задаче IP Core Generation выбран для целевого рабочего процесса, и ZedBoard выбран для целевой платформы.

5. Запустите задачу «Задать целевое ссылочное проектирование». Audio system with DMA Interface выбран в качестве ссылочного проекта.

6. Запустите задачу Set Target Interface.

В этой задаче порты подсистемы DUT сопоставляются с базовыми IP-интерфейсами. Порты аудиокодека отображаются на аудиоинтерфейс, а порты DMA - на интерфейс AXI DMA. Это оба AXI4-Stream интерфейса. Интерфейс AXI4-Stream осуществляет связь в режиме ведущий/ведомый, где ведущее устройство передает данные ведомому устройству. Поэтому, если порт данных является портом ввода, он назначается AXI4-Stream Slave и если порт данных является портом вывода, он назначается AXI4-Stream Master интерфейс. Исключение составляет сигнал Ready. AXI4-Stream Master Ready сигнал является входом в модель, и AXI4-Stream Slave Ready сигнал является выходом модели. Порты управления анализатором спектра отображаются в AXI4-Lite.

При выполнении этой задачи выдается предупреждение о том, что автоматическое формирование сигнала Ready отключено и что аудиоинтерфейс не назначает порт Ready. Предупреждение для этой конструкции можно проигнорировать, так как противодавление уже учтено. А именно, конструкция адресовала обратное давление на интерфейс DMA с помощью FIFO. На интерфейсе аудиокодека обратное давление не может быть применено, поэтому логика сигнала Ready не требуется.

7. В задаче Set Target Frequency (Задать целевую частоту) установите значение Target Frequency (МГц) в значение 96. Запустите эту задачу.

Это целевое значение частоты делает коэффициент избыточной дискретизации четным целым числом относительно частоты дискретизации звука 48kHz.

8. Щелкните правой кнопкой мыши задачу Создать код RTL и ядро IP и выберите Выполнить до выбранной задачи.

Сопоставление адресов регистров и другую документацию по IP-ядру можно найти в созданном отчете по IP-ядру.

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

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

1. Запустите задачу Создать проект.

Эта задача вставляет сгенерированное ядро IP в Audio System with AXI DMA Interface эталонный проект. Как показано на первой схеме, эта эталонная конструкция содержит IP-адреса для обработки потоковых аудиоданных в ZedBoard и из ZedBoard, а также для потоковой передачи данных в процессорной системе и из нее. Созданный проект является полным проектом ZedBoard. Он включает в себя часть алгоритма, которая является сформированным IP алгоритмом DUT, и часть платформы, которая является эталонным проектом.

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

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

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

В задаче Генерация модели интерфейса программного обеспечения создается модель интерфейса программного обеспечения.

В созданной модели автоматически добавлены AXI4-Lite блоки драйверов. Однако AXI4-Stream блоки драйверов не могут быть сгенерированы автоматически, поскольку блоки драйверов ожидают векторных входов на стороне программного обеспечения, но порты DMA DUT являются скалярными портами. Дополнительные сведения об обновлении модели интерфейса программного обеспечения с использованием правильных блоков драйверов см. в разделе Начало работы с интерфейсом AXI4-Stream в документе Zynq Workflow.

В этом примере используется обновленная модель интерфейса программного обеспечения. Чтобы открыть эту модель, выполните следующие действия.

open_system('hdlcoder_audio_filter_multistream_sw');

Для настройки параметров:

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

2. Тип фильтра можно выбрать с помощью параметра блока «Тип фильтра» блока «Выбор фильтра». Коэффициенты фильтра вычисляются в этом блоке с использованием fir1 функция из Toolbox™ обработки сигналов. Коэффициенты посылают от Системы обработки до FPGA при помощи AXI4-потока IIO, Пишут блок, который общается через IP MM2S DMA.

3. Весовая кривая, используемая анализатором спектра, может быть выбрана с помощью параметра блока Кривая (Curve) блока Выбор весовых кривых (Weighting Curve Select). Выбор передается в систему обработки в FPGA с помощью интерфейса AXI4-Lite.

4. Выходные данные анализатора спектра можно просмотреть на графике массива. Выберите другой тип фильтра или измените весовую кривую и посмотрите, как изменяются данные спектра.

Отфильтрованный аудиовыход можно услышать, подключив наушники или динамики к разъему HPH OUT на плате ZedBoard.

Связанные темы