exponenta event banner

Разработка эталонного проекта аудиосистемы на плате Zynq

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

Введение

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

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

  1. I2C для конфигурирования микросхемы аудиокодека ADAU1761 на плате Zedboard.

  2. I2S для потоковой передачи оцифрованных аудиоданных между микросхемой кодека и фабрикой Zynq.

На приведенном выше рисунке показана высокоуровневая схема архитектуры, показывающая, как эталонная конструкция используется алгоритмом фильтрации IP. I2S IP работает на 50MHz частоте, тогда как может потребоваться запустить алгоритм фильтрации IP на более высокой частоте. Эта частота контролируется на шаге 1.4 в помощнике по рабочим процессам HDL. В этом примере предположим, что фильтр работает при 80MHz. Поскольку IP-адреса алгоритмов I2S и фильтрации работают на разных частотах, нам нужны FIFO для обработки пересечения тактовой области. В зависимости от выбранного типа фильтра, алгоритм фильтрации IP фильтрует диапазон частот из входящих аудиоданных и передает отфильтрованные аудиоданные. На приведенном выше рисунке алгоритм фильтрации IP является нашим основным алгоритмом, который мы моделируем в Simulink. Хотя в Vivado предоставляется протокол FIFO IP, необходимо создать I2C и I2S IP. Здесь пользователь имеет 3 варианта: (а) использовать предварительно упакованный IP, например, если он существует, (б) моделировать его в Simulink и генерировать ядро IP с использованием рабочего процесса генерации ядра IP или (в) использовать унаследованный код HDL. Чтобы создать IP-код из устаревшего HDL-кода, используйте модель Simulink для «черного ящика» кода HDL и создания из него IP-ядра. IPS FIFO обрабатывают пересечение области синхронизации между входящими аудиоданными в 50MHz и IP-адресом фильтра, работающим в 80MHZ. I2C, I2S, PLL, FIFO IPs и система обработки являются частью эталонной конструкции.

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

  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, чтобы настроить Аудиокодек ADAU1761, обратитесь к IP Основному Поколению IP Диспетчера I2C, чтобы Настроить статью Audio Codec Chip.

1,2 Создание I2S IP

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

modelname = 'hdlcoder_I2S_adau1761';
open_system(modelname);

Создайте тестовый стенд в модели для имитации входящих аудиоданных из кодека.

Подайте эти данные в блок подсистемы, который выполняет I2S операцию. Проверьте выходные данные подсистемы в области.

Запустите помощник по рабочим процессам HDL из подсистемы DUT. В задаче 1.1 сохраните те же настройки, что и у IP I2C созданного ранее. в задаче 1.2 установите интерфейсы целевой платформы, как показано ниже:

Запустите задачу 3.2 и создайте ядро ip.

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

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

При создании этой пользовательской ссылочной конструкции необходимо отметить следующие ключевые моменты:

  1. Мы должны понимать теорию работы микросхемы аудиокодека на Zedboard.

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

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

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

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

Между эталонным дизайном на Zynq Soc и аудиокодеком на Zedboard выполняются следующие сигналы:

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

  2. Left_right_select состоит в том, чтобы различать данные левого аудиоканала и данные правого аудиоканала. Он синхронизирован с тактовым сигналом Bit.

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

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

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

  6. ADDR0 и ADDR1 являются битами адреса I2C.

  7. Clk_24MHz - 24MHz тактовый сигнал, требуемый кодеком.

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

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

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

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

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

Все файлы, необходимые для эталонной конструкции, такие как файлы ядра IP, файлы XDC, файлы plugin_rd и т.д., должны быть добавлены в путь к шаблону в папке Zedboard с использованием иерархии, показанной ниже. Созданные пользователем файлы IP-ядра должны находиться в папке + vivado. plugin_rd.m, tcl файлы и xdc файлы должны находиться в папке эталонного дизайна плагина, например, + vivado _ audio _ filter _ 2017 _ 2 папка.

4. Проверка ссылочной конструкции

Чтобы гарантировать, что эталонная конструкция и интерфейсы в эталонной конструкции работают так, как ожидалось, создайте модель Simulink, которая просто передает звук через алгоритм IP, интегрируйте ее с эталонной конструкцией и протестируйте на Zedboard. Пользователь должен иметь возможность слышать звуковой шлейф.

modelname = 'hdlcoder_audio_pass_through';
open_system(modelname);

Интерфейсы в модели должны быть выбраны следующим образом:

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