Этот пример показывает как:
Сгенерируйте ядра IP для периферийных интерфейсов с помощью HDL Workflow Advisor
Создайте исходный проект, чтобы запустить аудио алгоритм и аудиовход доступа и вывести
В этом примере вы создадите исходный проект, который получает аудиовход от Zedboard, выполняет некоторую обработку на нем и передает обработанные аудиоданные из Zedboard. Чтобы выполнить обработку аудиоданных на Zedboard, вам нужны следующие 2 протокола:
I2C, чтобы сконфигурировать чип аудиокодека ADAU1761 на Zedboard.
I2S, чтобы передать оцифрованные аудиоданные потоком между чипом кодека и zynq матрицей.
Вышеупомянутая фигура является схемой высокоуровневой архитектуры, которая показывает, как исходный проект используется IP Алгоритма фильтрации. I2S IP действует на частоте на 50 МГц, тогда как можно хотеть запустить IP Алгоритма фильтрации на более высокой частоте. Этой частотой управляют на Шаге 1.4 в HDL Workflow Advisor. В этом примере примите, что фильтр действует на уровне 80 МГц. Поскольку I2S и дюйм/с Алгоритма фильтрации действуют на различных частотах, нам нужен FIFOs, чтобы обработать пересечение области часов. В зависимости от типа выбранного фильтра IP Алгоритма фильтрации фильтрует область значений частот от входящих аудиоданных и раздает отфильтрованные аудиоданные. В вышеупомянутой фигуре IP Алгоритма фильтрации является нашим основным алгоритмом, который мы моделируем в Simulink. В то время как IP FIFO обеспечивается в Vivado, I2C и дюйм/с I2S должны быть созданы. Здесь, у пользователя есть 3 варианта: (a) используйте предварительно группированный IP, например, если вы существуете, (b) смоделируйте его в Simulink и сгенерируйте ядро IP использование рабочего процесса генерации ядра IP или (c) используйте устаревший HDL-код. Чтобы создать IP из устаревшего HDL-кода, используйте модель Simulink для черного квадрата HDL-код и сгенерируйте ядро IP от него. Дюйм/с FIFO обрабатывает область часов, пересекающуюся между входящими аудиоданными на уровне 50 МГц и IP фильтра, достигающим 80 МГц. I2C, I2S, PLL, дюйм/с FIFO и Система обработки являются частью исходного проекта.
Следующие шаги используются, чтобы создать исходный проект, описанный выше:
Сгенерируйте Ядра IP для периферийных интерфейсов
Создайте пользовательский исходный проект аудиокодека в Vivado
Создайте файл определения исходного проекта
Проверьте исходный проект
В этом примере,
IP I2C разрабатывается путем моделирования его с помощью блоков Stateflow, и также с помощью устаревшего кода VHDL для буфера с тремя состояниями.
I2S IP разрабатывается путем моделирования его в Simulink.
Для создания IP I2C, чтобы сконфигурировать Аудиокодек ADAU1761, пошлите к Генерации Ядра IP Контроллера I2C IP Сконфигурировать статью Audio Codec Chip.
Разработайте модель в Simulink с функцией MATLAB, которая реализует протокол I2S.
modelname = 'hdlcoder_I2S_adau1761';
open_system(modelname);
Создайте испытательный стенд в модели, чтобы подражать входящим аудиоданным от кодека.
Накормите этими данными блок Subsystem, который делает операцию I2S. Проверьте вывод Подсистемы на Осциллографе.
Запустите HDL Workflow Advisor с подсистемы DUT. В Задаче 1.1, сохраните те же настройки как те из IP I2C сгенерированными ранее. в Задаче 1.2, устанавливает Интерфейсы Целевой платформы как показано ниже:
Запустите Задачу 3.2 и сгенерируйте IP ядро.
I2C, I2S и дюйм/с FIFO включены в пользовательский исходный проект. Чтобы создать пользовательский исходный проект, отошлите к разделу "Create and export a custom reference design using Xilinx Vivado" в Задавании и Регистре Пользовательский Совет и Исходный проект для примера Рабочего процесса Zynq.
Ключевые пункты, которые будут отмечены при создании этого пользовательского исходного проекта:
Мы должны понять теорию работы чипа аудиокодека на Zedboard.
FIFOs установлены в значения по умолчанию для своей настройки.
Для ядер IP, сгенерированных с помощью HDL Workflow Advisor, IPCORE_CLK и AXI4_Lite_ACLK должны быть соединены с тем же источником часов.
При проверке блочной конструкции в Vivado не должно быть никаких критических предупреждений за исключением неподключенных портов.
В этом исходном проекте аудиокодек сконфигурирован, чтобы действовать в Привилегированном режиме.
Следующие сигналы, запущенные между исходным проектом на Zynq Soc и аудиокодеком на Zedboard:
Bit_clock является продуктом частоты дискретизации, количеством битов на канал и количеством каналов. Это управляется аудиокодеком в привилегированном режиме. В этом примере Частота дискретизации составляет 48 кГц, Никакие из каналов не равняются 2, Количество битов на канал равняется 24.
Left_right_select должен различать левые данные о звуковом канале и правильные данные о звуковом канале. Это находится в синхронизации с Разрядным тактовым сигналом.
Serial_data_in является аналого-цифровыми конвертированными аудиоданными от кодека.
Serial_data_out является данными о цифровом аудио, собирающимися в кодек быть преобразованными в аналоговую форму.
I2C_CLK и I2C_DATA являются стандартными сигналами I2C
ADDR0 и ADDR1 являются Адресные биты I2C.
Clk_24MHz является сигналом часов на 24 МГц, требуемым кодеком.
Пользовательский исходный проект аудиокодека, созданный для этого примера, показывают ниже:
Следующий код описывает содержимое файла определения исходного проекта Zedboard plugin_rd.m для вышеупомянутого исходного проекта. Для получения дополнительной информации о том, как задать и указать пользовательскую плату, относитесь, чтобы Задать и Указать Пользовательский Совет и Исходный проект для примера Рабочего процесса Zynq.
Перейдите к папке Zedboard с помощью следующей команды:
cd ([matlabroot '/toolbox/hdlcoder/hdlcoderdemos/customboards/Zedboard']);
Все файлы, которые требуются для исходного проекта, такого как файлы ядра IP, файлы XDC, plugin_rd файл и т.д., должны быть добавлены к пути MATLAB в папке Zedboard с помощью иерархии, показанной ниже. Сгенерированные файлы ядра IP пользователя должны быть в +vivado папке. plugin_rd.m, tcl файлы и xdc файлы должен быть в папке плагина исходного проекта, например, +vivado_audio_filter_2017_2 папкой.
В порядке гарантировать, что исходный проект и интерфейсы в исходном проекте работают как ожидалось, разработайте модель Simulink, которая только отправляет аудио через IP Алгоритма, интегрируйте его с исходным проектом и протестируйте его на Zedboard. Пользователь должен смочь услышать аудио цикл назад.
modelname = 'hdlcoder_audio_pass_through';
open_system(modelname);
Интерфейсы в модели должны быть выбраны как показано ниже:
Чтобы сгенерировать ядро IP из модели и интегрировать его с исходным проектом аудиокодека, обратитесь к Выполнению аудиофильтра на живом аудиовходе с помощью примера платы Zynq.