Создание Исходного проекта для аудиосистемы на плате ZYBO

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

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

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

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

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

  • Xilinx Vivado, с последней версией, упомянутой в документации

  • Плата для разработки Zynq™ Digilent ® Zybo с комплектом аксессуаров

Примечание: Этот пример использует учебную плату Digilent ® Zybo Zynq-7000 ARM/FPGA SoC. Этот пример не работает с Digilent ® Zybo Z7: Zynq-7000 платы разработки ARM/FPGA SoC, которые имеют два варианта Zybo Z7-10 и Zybo Z7-20.

Для настройки платы ZYBO см. раздел Set up the Zybo board в статье Define Custom Board and Исходный Проект for Zynq Workflow.

Введение

В этом примере вы создадите исходный проект, который получает аудио входа от платы ZYBO, выполняет некоторую обработку и передает обработанное аудио данных от платы ZYBO. Вы также генерируете IP-ядра для периферийных интерфейсов, используя HDL Workflow Advisor.

Для выполнения обработки звука на плате ZYBO необходимы следующие 2 протокола:

  1. I2C для настройки SSM2603 микросхемы аудиокодека на плате ZYBO.

  2. I2S для потоковой передачи оцифрованного аудио данных между чипом кодека и тканью zynq.

Приведенный выше рисунок представляет собой схему архитектуры высокого уровня, которая показывает, как исходный проект используется IP алгоритма фильтрации на плате ZYBO. Этот пример аналогичен исходному проекту аудиосистемы для Zedboard, за исключением того, что плата ZYBO использует SSM2603 микросхему аудиокодека, где, когда Zedboard использует ADAU1761 микросхему аудиокодека. Остальные рабочие параметры совпадают с исходными параметрами Audio System для Zedboard. Для получения дополнительной информации см. пример разработки Исходного проекта для аудиосистемы на плате Zynq.

Для создания исходного проекта, описанного выше, используются следующие шаги:

  1. Сгенерируйте IP-ядра для периферийных интерфейсов

  2. Создайте пользовательский исходный проект аудиокодека в Vivado

  3. Создайте файл определения исходного проекта

  4. Проверьте исходный проект

1. Сгенерируйте IP-ядра для периферийных интерфейсов с помощью HDL Workflow Advisor

В этом примере,

  1. I2C IP разрабатывается с использованием блоков stateflow и устаревшего кода VHDL для тристатного буфера.

  2. I2S IP разработан путем моделирования его в Simulink.

1.1 Создание I2C IP

Для создания I2C IP для настройки SSM2603 Audio Codec, смотрите Генерация IP Core IP контроллера I2C, чтобы Сконфигурировать статью Audio Codec Chip.

1.2 Создание I2S IP

Создайте модель в Simulink с функцией matlab, которая реализует протокол I2S.

modelname = 'hdlcoder_I2S_ssm2603';
open_system(modelname);

Шаги тестирования и генерации ядра IP те же, что и у модели Zedboard I2S. Для генерации I2S IP смотрите Создание Исходного проекта для аудиосистемы на пример платы Zynq.

2. Создайте пользовательский исходный проект аудиокодека в Vivado

I2C, I2S и IP-адреса FIFO включены в пользовательские исходные проекты. Для создания пользовательского исходного проекта см. раздел «Создание и экспорт пользовательского исходного проекта с помощью Xilinx Vivado» в разделе «Определение пользовательской платы и Исходного проекта для Рабочего процесса Zynq».

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

  1. Мы должны понять теорию операции чипа аудиокодека на плате ZYBO.

  2. Для FIFO заданы значения по умолчанию для их строения.

  3. Для ядер IP, сгенерированных с помощью HDL Workflow Advisor, IPCORE_CLK и AXI4_Lite_ACLK должны быть подключены к одному и тому же источнику синхроимпульса.

  4. При проверке проекта блока в Vivado не должно быть критических предупреждений, кроме несвязанных портов.

  5. В этом исходном проекте аудиокодек сконфигурирован для работы в главном режиме.

Между исходным проектом на Zynq Soc и аудиокодеком на плате ZYBO выполняются следующие сигналы:

  1. Bit_clock является продуктом частоты дискретизации, количества бит на канал и количества каналов. Он управляется аудиокодеком в главном режиме. В этом примере частота дискретизации 48KHz, нет каналов 2, количество бит на канал 24.

  2. Serial_data_in - аналого-цифровой преобразованный аудио данные от кодека.

  3. Serial_data_out цифровой аудио данных, поступающий в кодек, преобразуется в аналоговый вид.

  4. I2C_CLK и I2C_DATA являются стандартными I2C сигналами

  5. MUTEN является оборудованием, подключенным к SSM2603 аудиокодека.

  6. MCLK является 12.288MHz тактовым сигналом, требуемым кодеком.

Пользовательский аудиокодек исходного проекта созданный для этого примера, показан ниже:

3. Создайте файл определения исходного проекта

Следующий код описывает содержимое файла определения платы ZYBO исходного проекта plugin_rd.m для вышеуказанных исходных проектов. Для получения дополнительной информации о том, как определять и регистрировать пользовательскую плату, см. пример «Определение пользовательской платы и исходного проекта для рабочего процесса Zynq».

Перейдите в папку ZYBO с помощью следующей команды:

cd ([matlabroot '/toolbox/hdlcoder/hdlcoderdemos/customboards/ZYBO']);

Все файлы, которые требуются для исходного проекта, такие как файлы ядра IP, файлы XDC, plugin_rd файл и т.д., должны быть добавлены в путь matlab, внутри папки ZYBO с помощью иерархии, показанной ниже. Пользовательские файлы ядра IP должны находиться в папке + vivado. plugin_rd.m, файлы tcl и файлы xdc должны быть в папке + vivado _ audio _ filter _ 2017 _ 2.

4. Проверьте исходный проект

Для проверки исходного проекта, чтобы сгенерировать IP-ядро Audio Filter из модели и интегрировать его с исходным проектом аудиокодека, смотрите Запуск Аудиофильтра на Live Audio Входа Используя пример платы Zynq.