В этом примере показано, как смоделировать аудиосистему с несколькими AXI4-речными-руслами и развернуть ее на ZedBoard™ при помощи аудио исходного проекта.
В этом примере вы моделируете программируемый аудиофильтр со спектрограммой с помощью нескольких AXI4-речных-русел, и усовершенствованный AXI4-поток сигнализирует о Ready
и TLAST
. Одно AXI4-речное-русло передает данные между фильтром и аудиокодеком. Другое AXI4-речное-русло взаимодействует через интерфейс с Системой обработки, чтобы программировать коэффициенты фильтра и данные о спектрограмме передачи к хосту - компьютеру для анализа.
Можно затем запустить IP Core Generation
рабочий процесс, чтобы сгенерировать ядро IP HDL и развернуть алгоритм на ZedBoard при помощи аудио исходного проекта.
Этот рисунок показывает высокоуровневую архитектуру системы.
Дюйм/с Аудиокодека конфигурирует аудиокодек и передает аудиоданные между ZedBoard и аудиокодеком. IP Обработки аудиоданных, сгенерированный HDL Coder™, выполняет анализ спектра и фильтрация. Дюйм/с DMA передает AXI4-потоковые данные между Системой обработки и FPGA. Потоковые данные передали от Системы обработки до программ MM2S DMA IP коэффициенты фильтра на FPGA. Потоковые данные, полученные Системой обработки через S2MM DMA IP, содержат данные о спектрограмме, вычисленные на FPGA. Система обработки также конфигурирует кривую взвешивания для анализа спектра с помощью интерфейса AXI4-Lite.
Этот пример расширяет аудиофильтр на живом входном примере, чтобы использовать несколько каналов потоковой передачи. Чтобы узнать о примере, который использует один канал потоковой передачи, смотрите Выполнение Аудиофильтра на Живом Аудиовходе Используя Совет Zynq.
Чтобы запустить этот пример, необходимо было установить следующее программное и аппаратное обеспечение и настроить:
Пакет поддержки HDL Coder для платформы Xilinx® Zynq®
Embedded Coder® Support Package для платформы Xilinx Zynq
Xilinx последняя версия Vivado® Design Suite, как упомянуто в Поддержке Языка HDL и Поддерживаемых Сторонних программах и Оборудовании
ZedBoard
Чтобы установить ZedBoard, отошлите к Набору оборудование Zynq и раздел инструментов в Начале работы с Предназначением для примера Платформы Xilinx Zynq. Соедините аудиовход с мобильного телефона или MP3-плеера к ЛИНИИ разъем IN и или наушники или динамики к разъему HPH OUT на ZedBoard как показано ниже.
Откройте модель hdlcoder_audio_filter_multistream
.
open_system('hdlcoder_audio_filter_multistream') set_param('hdlcoder_audio_filter_multistream', 'SimulationCommand', 'Update')
Модель содержит подсистему DUT для обработки аудиоданных, источника и блоков приемника для симуляции аудио и моделей объекта управления для DMAs, которые передают потоковые данные между Системой обработки и FPGA.
Факторы уровня
Для аудиоприложений, работающих на FPGA, тактовая частота FPGA несколько раз быстрее, чем частота дискретизации звука. Отношение тактовой частоты FPGA к частоте дискретизации аудиоданных является фактором Сверхдискретизации. В этом примере фактор Сверхдискретизации моделируется при помощи Повторения, и Сверхдискретизируйте блоки.
Моделирование вашего проекта на тактовой частоте FPGA позволяет вам оптимизировать использование ресурсов на платформе целевого компьютера путем усиления неактивных тактов и многократного использования различных компонентов. Аудиоприложение, проиллюстрированное в этом примере, использует частоту дискретизации звука 48kHz
и тактовая частота FPGA 96MHz
. Фактором Сверхдискретизации в этом случае является 2000
. Такое большое значение Сверхдискретизации фактора значительно замедляет симуляцию Simulink.
Чтобы уменьшать время симуляции, вместо того, чтобы использовать установку фактора Сверхдискретизации, можно смоделировать проект в минимальном факторе Сверхдискретизации, который требуется проектом. Минимум, требуемый, Сверхдискретизировав фактор для проекта, может быть определен длиной аудиофильтра, который является 1001
. Это значение уменьшает время симуляции наполовину и обеспечивает достаточные неактивные циклы между выборками данных для последовательной логики фильтра.
Аудиофильтр
В подсистеме DUT КИХ-фильтр обрабатывает данные от AXI4-речного-русла аудиокодека. Коэффициенты фильтра сгенерированы в MATLAB® и запрограммированы при помощи второго интерфейса AXI4-Stream, который взаимодействует через интерфейс с Системой обработки. Отфильтрованный аудиовыход передается потоком назад к аудиокодеку.
Аудиофильтр является полностью последовательной реализацией КИХ-фильтра. Эта структура фильтра подходит лучше всего для аудиоприложений, которые требуют большого фактора Сверхдискретизации, потому что использование фильтра умножение накапливает операцию (MAC) для каждого канала. Фильтр также использует блоки RAM, чтобы реализовать линию задержки данных и содействующий источник. Эта реализация сохраняет область путем предотвращения высокого использования логики среза старших фильтров.
Спектр Анализатор
Звуковой сигнал подан в спектр анализатор после прохождения через КИХ-фильтр. Спектр анализатор вычисляет БПФ отфильтрованного сигнала, применяет функцию взвешивания и преобразует результат в dBm. Можно программировать тип взвешивания, которое будет выполняться при помощи интерфейса AXI4-Lite или как без взвешиваний, A-взвешивание, C-взвешивание или как K-взвешивание. Фактические функции взвешивания реализованы с помощью интерполяционных таблиц, которые были сгенерированы при помощи функции Audio Toolbox™ weightingFilter
.
Модель содержит два AXI4-потоковых интерфейса. Один интерфейс AXI4-Stream связывается с аудиокодеком. Другой интерфейс AXI4-Stream связывается с Системой обработки через DMAs. Интерфейс аудиокодека только требует Data
и Valid
сигналы. Интерфейс DMA, с другой стороны, дополнительно использует Ready
и TLAST
сигналы AXI4-потокового протокола.
Чтобы узнать больше о сигналах, используемых в AXI4-потоковом моделировании, см. Проект Модели для AXI4-потоковой Генерации Интерфейса.
Готовый сигнал
В интерфейсе AXI4-Stream вы используете Ready
сигнал применяться или ответить на противодавление. Модель использует Ready
сигнал на AXI4-потоковом Ведущем канале от FPGA до Системы обработки, чтобы ответить на противодавление от DMA. Когда нисходящий DMA не может получить больше выборок спектрограммы, это de-asserts вход Ready
сигнал на AXI4-потоковом Ведущем канале. Чтобы гарантировать, что spectogram выборки не пропущены, модель буферизует данные в FIFO до Ready
сигнал утверждается, указывая, что DMA готов получить выборки снова.
AXI4-потоковый Ведомый канал от Системы обработки до FPGA не должен применять противодавление, и следовательно его Ready
сигнал всегда утверждается. Аудиокодек не обрабатывает противодавление и не использует его Ready
сигнал на любом канале. Узнать больше о Ready
сигнал в AXI4-потоковом моделировании, смотрите Готовый Сигнал (Необязательно).
Сигнал TLAST
TLAST
сигнал используется, чтобы указать на последнюю выборку системы координат. Модель использует TLAST
сигнал на AXI4-потоковом Ведомом устройстве образовывает канал как индикатор, что это получило полный набор коэффициентов фильтра. На AXI4-потоковом Ведущем канале, TLAST
сигнал используется, чтобы указать на конец спектра система координат анализатора. Узнать больше о TLAST
сигнал в AXI4-потоковом моделировании, смотрите Другие (дополнительные) Сигналы Протокола.
Чтобы реализовать эту модель на ZedBoard, у вас должен сначала быть исходный проект в Vivado, который получает аудиовход на ZedBoard и передает обработанные аудиоданные из ZedBoard. Для получения дополнительной информации о том, как создать исходный проект, который взаимодействует через интерфейс с аудиокодеком на ZedBoard, смотрите Авторскую разработку Исходного проекта для Аудиосистемы в Совете Zynq. Этот пример расширяет исходный проект в том примере путем добавления дюйм/с DMA для связи с Системой обработки.
В исходном проекте левые и правые аудиоданные канала объединены, чтобы сформировать один канал, таким образом что более низкий 24
биты формируют левый канал и верхний 24
биты формируют правильный канал. В модели Simulink®, показанной выше, CODEC_data_in
разделен в левые и правые каналы. Фильтрация сделана на каждом канале индивидуально. Каналы затем конкатенированы, чтобы сформировать один канал для CODEC_data_out
.
Затем можно запустить HDL Workflow Advisor и использовать рабочий процесс элемента кода аппаратного программного обеспечения Zynq, чтобы развернуть этот проект на оборудовании Zynq. Для более подробного пошагового руководства можно обратиться к Началу работы с Рабочим процессом Элемента кода HW/SW для примера Платформы Xilinx Zynq.
1. Настройте инструмент path синтеза 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 Workflow Advisor от подсистемы DUT, hdlcoder_audio_filter_multistream/DUT
или дважды кликните, Launch HDL Workflow Advisor окружают модель.
Целевые интерфейсные настройки уже сохранены для ZedBoard в этой модели в качестве примера, таким образом, настройки в задачах 1.1 к 1,3 автоматически загружаются. Чтобы узнать больше о сохранении цели соединяют интерфейсом с настройками в модели, можно обратиться к Сохранять Настройкам Целевого компьютера в примере Модели.
4. Запустите задачу Инструмента Целевого устройства и Синтеза Набора.
В этой задаче, IP Core Generation
выбран для Целевого рабочего процесса и ZedBoard
выбран для Целевой платформы.
5. Запустите Целевую задачу Исходного проекта Набора. Audio system with DMA Interface
выбран как Исходный проект.
6. Запустите Цель Набора Интерфейсная задача.
В этой задаче порты подсистемы DUT сопоставлены с интерфейсами Ядра IP. Порты аудиокодека сопоставлены с Аудиоинтерфейсом, и порты DMA сопоставлены с интерфейсом AXI DMA. Это оба AXI4-потоковые интерфейсы. Интерфейс AXI4-Stream связывается в основном/ведомом режиме, куда ведущее устройство отправляет данные в ведомое устройство. Поэтому, если порт данных является входным портом, он присвоен AXI4-Stream Slave
интерфейс, и если порт данных является выходным портом, он присвоен AXI4-Stream Master
интерфейс. Исключением к этому является Готовый сигнал. AXI4-Stream Master Ready
сигнал является входом к модели и AXI4-Stream Slave Ready
сигналом является выход модели. Спектр порты управления анализатора сопоставлен с AXI4-Lite
.
Выполнение этой задачи выдает предупреждение, что автоматическая генерация Готового сигнала отключена, и что Аудиоинтерфейс не присваивает порт Ready. Можно проигнорировать предупреждение для этого проекта, потому что противодавление уже составлялось. А именно, проект обратился к противодавлению в интерфейсе DMA при помощи FIFO. В интерфейсе аудиокодека не может быть применено противодавление, таким образом, никакая Готовая логика сигнала не необходима.
7. В Целевой задаче Частоты Набора, набор Целевая Частота (МГц) к 96
. Запустите эту задачу.
Это целевое значение частоты заставляет Сверхдискретизацию учесть ровное целое число относительно частоты дискретизации звука 48kHz
.
8. Щелкните правой кнопкой по Generate RTL Code и задаче IP Core и выберите Run to Selected Task.
Можно найти отображение адресов регистра и другую документацию для ядра IP в сгенерированном Отчете Ядра IP.
Затем в HDL Workflow Advisor, вы запускаете задачи Интегрирования Встраиваемой системы развернуть сгенерированное ядро IP HDL на оборудовании Zynq®.
1. Запустите Создать задачу Проекта.
Эта задача вставляет сгенерированное ядро IP в Audio System with AXI DMA Interface
исходный проект. Как показано в первой схеме, этот исходный проект содержит дюйм/с, чтобы обработать данные о передаче потокового аудио в и из ZedBoard, и для потоковой передачи данных в и из Системы обработки. Сгенерированный проект является полным проектом ZedBoard. Это включает часть алгоритма, которая является сгенерированным IP алгоритма DUT и частью платформы, которая является исходным проектом.
2. Щелкните по ссылке в панели Результата, чтобы открыть сгенерированный проект Vivado. В инструменте Vivado нажмите Open Block Design, чтобы просмотреть схему проекта Zynq, которая включает сгенерированное ядро IP HDL, другого дюйм/с обработки аудиоданных и процессор Zynq.
3. В HDL Workflow Advisor запустите остающиеся задачи сгенерировать модель программного интерфейса, и создать и загрузить поток битов FPGA. Выберите Download
метод программирования в Целевом устройстве Программы задачи, чтобы загрузить FPGA передает поток битов на SD-карту на плате Zynq. Ваш проект затем автоматически перезагружается, когда вы подвергаете циклу включения и выключения питания плату Zynq.
В задаче Генерируют Модель Программного интерфейса, модель программного интерфейса сгенерирована.
В сгенерированной модели были автоматически добавлены AXI4-облегченные блоки драйверов. Однако AXI4-потоковые блоки драйверов не могут быть автоматически сгенерированы, потому что блоки драйверов ожидают векторные входные параметры на стороне программного обеспечения, но порты DMA DUT являются скалярными портами. Для получения дополнительной информации о том, как обновить модель программного интерфейса с правильными блоками драйверов, обратитесь к Началу работы с AXI4-потоковым Интерфейсом в Рабочем процессе Zynq.
В данном примере вы используете обновленную модель программного интерфейса. Открыть эту модель, запуск:
open_system('hdlcoder_audio_filter_multistream_sw');
Настроить параметры:
1. Нажмите кнопку Monitor & Tune на вкладке Hardware панели инструментов модели. Embedded Coder создает модель, загружает исполняемый файл ARM® на оборудование ZedBoard, выполняет его и соединяет модель с рабочим исполняемым файлом. В то время как модель запускается, различные параметры могут быть настроены.
2. Можно выбрать тип фильтра при помощи параметров блоков Типа Фильтра блока Filter Select. Коэффициенты фильтра вычисляются в этом блоке с помощью fir1
функция от Signal Processing Toolbox™. Коэффициенты отправляются от Системы обработки до FPGA при помощи блока AXI4-Stream IIO Write, который связывается через MM2S DMA IP.
3. Кривая взвешивания, используемая спектром анализатор, может быть выбрана с помощью параметров блоков Кривой блока Weighting Curve Select. Выбор отправляется в от Системы обработки до FPGA с помощью интерфейса AXI4-Lite.
4. Спектр анализатор выход может быть просмотрен в Графике Массивов. Выберите различный тип фильтра или измените кривую взвешивания и наблюдайте, как данные о спектре изменяются.
Отфильтрованный аудиовыход можно услышать путем включения наушников или динамиков к разъему HPH OUT на ZedBoard.