В этом примере показано, как создать эталонную конструкцию для запуска звукового алгоритма и доступа к входу и выходу звука на плате ZYBO.
Для выполнения этого примера необходимо установить и настроить следующее программное и аппаратное обеспечение:
Пакет поддержки кодера HDL для платформы Xilinx Zynq
Пакет поддержки встроенного кодера для платформы Xilinx Zynq
Xilinx Vivado с последней версией, упомянутой в документации
Плата для разработчиков Digilent ® Zybo Zynq™ с комплектом аксессуаров
Примечание.В этом примере используется плата обучения Digilent ® Zybo Zynq-7000 ARM/FPGA SoC. Этот пример не работает с платой разработки Digilent ® Zybo Z7: Zynq-7000 ARM/FPGA SoC, которая имеет два варианта Zybo Z7-10 и Zybo Z7-20.
Для настройки платы ZYBO см. раздел Настройка платы Zybo в статье Определение пользовательской платы и эталонного дизайна для рабочего процесса Zynq.
В этом примере создается эталонная конструкция, которая принимает входные звуковые данные от платы ZYBO, выполняет на ней некоторую обработку и передает обработанные звуковые данные из платы ZYBO. Также создаются IP-ядра для периферийных интерфейсов с помощью HDL Workflow Advisor.
Для обработки звука на плате ZYBO необходимы следующие 2 протокола:
I2C для конфигурирования микросхемы аудиокодека SSM2603 на плате ZYBO.
I2S для потоковой передачи оцифрованных аудиоданных между микросхемой кодека и фабрикой zynq.

На приведенном выше рисунке показана высокоуровневая схема архитектуры, показывающая, как эталонная конструкция используется алгоритмом фильтрации IP на плате ZYBO. Этот пример аналогичен эталонному дизайну аудиосистемы для Zedboard, за исключением того, что плата ZYBO использует микросхему аудиокодека SSM2603, где плата Zedboard использует микросхему аудиокодека ADAU1761. Остальные рабочие параметры аналогичны эталонной конструкции аудиосистемы для Zedboard. Дополнительные сведения см. в разделе Разработка эталонного проекта для аудиосистемы на примере платы Zynq.
Для создания ссылочной конструкции, описанной выше, используются следующие шаги:
Создание IP-ядер для периферийных интерфейсов
Создание пользовательского эталонного дизайна аудиокодека в Vivado
Создание файла определения ссылочного проекта
Проверка ссылочной конструкции
В этом примере:
I2C IP разрабатывается с использованием блоков потока состояний и устаревшего кода VHDL для буфера tristate.
I2S IP разрабатывается путем моделирования его в Simulink.
Для создания I2C IP, чтобы настроить Аудиокодек SSM2603, обратитесь к IP Основному Поколению IP Диспетчера I2C, чтобы Настроить статью Audio Codec Chip.
Создайте модель в Simulink с помощью функции matlab, реализующей протокол I2S.
modelname = 'hdlcoder_I2S_ssm2603';
open_system(modelname);

Этапы тестирования и генерации ядра IP аналогичны этапам модели Zedboard I2S. Для получения информации о создании I2S IP см. Пример создания эталонного проекта для аудиосистемы на плате Zynq.
I2C, I2S и FIFO IPs включены в пользовательскую эталонную конструкцию. Для создания пользовательской ссылочной конструкции см. раздел «Создание и экспорт пользовательской ссылочной конструкции с помощью Xilinx Vivado» в разделе Определение пользовательской платы и ссылочной конструкции для рабочего процесса Zynq.
При создании этой пользовательской ссылочной конструкции необходимо отметить следующие ключевые моменты:
Мы должны понимать теорию работы микросхемы аудиокодека на плате ZYBO.
Для FIFO установлены значения по умолчанию для их конфигурации.
Для IP-ядер, созданных с помощью HDL Workflow Advisor, IPCORE_CLK и AXI4_Lite_ACLK должны быть подключены к одному источнику синхросигналов.
При проверке конструкции блока в Vivado не должно быть никаких критических предупреждений, кроме неподключенных портов.
В этой эталонной конструкции аудиокодек сконфигурирован для работы в главном режиме.
Между эталонной конструкцией на Zynq Soc и аудиокодеком на плате ZYBO выполняются следующие сигналы:
Bit_clock - это произведение частоты дискретизации, количества битов на канал и количества каналов. Он управляется аудиокодеком в главном режиме. В этом примере частота дискретизации равна 48KHz, число каналов равно 2, число битов на канал равно 24.
Serial_data_in - это аналогово-цифровые преобразованные аудиоданные из кодека.
Serial_data_out - цифровые аудиоданные, поступающие в кодек для преобразования в аналоговую форму.
I2C_CLK и I2C_DATA являются стандартными сигналами I2C
MUTEN - это аппаратный контакт отключения звука, подключенный к аудиокодеку SSM2603.
MCLK - это 12.288MHz тактовый сигнал, требуемый кодеком.
Созданный для этого примера пользовательский эталонный проект аудиокодека показан ниже:

Следующий код описывает содержимое файла определения ссылочной конструкции платы 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 папке.

Чтобы проверить эталонную конструкцию, создайте IP-ядро аудиофильтра из модели и интегрируйте его с эталонной конструкцией аудиокодека, см. пример «Запуск аудиофильтра при вводе звука в реальном времени с использованием платы Zynq».