Создание Исходного проекта для аудиосистемы на плате 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 Workflow Advisor. В этом примере примите, что фильтр работает на 80MHz. Поскольку IP-адреса I2S и алгоритма фильтрации работают на разных частотах, нам нужны FIFO, чтобы обрабатывать пересечение тактовой области. В зависимости от типа выбранного фильтра, Алгоритм фильтрации IP фильтрует область значений частот от входящего аудио данных и передает отфильтрованный аудио данные out. На приведенном выше рисунке IP алгоритма фильтрации является нашим основным алгоритмом, который мы моделируем в Simulink. В то время как IP-адрес FIFO предоставляется в Vivado, необходимо создать I2C и I2S IP. Здесь у пользователя есть 3 выбора: (a) использовать предварительно упакованный IP, например, если он существует, (b) смоделировать его в Simulink и сгенерировать IP-ядро с помощью рабочего процесса генерации ядра IP или (c) использовать устаревший HDL-код. Чтобы создать IP-код из унаследованного HDL-кода, используйте модель Simulink для черного ящика HDL-кода и генерации IP-ядра из него. IP-адреса FIFO обрабатывают пересечение домена синхроимпульса между входящими аудио данными на 50MHz и IP-адресом фильтра, выполняемым на 80MHZ. I2C, I2S, PLL, IP-адреса FIFO и система обработки являются частью исходного проекта.

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

  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 Audio Codec, смотрите Генерация IP Core IP контроллера I2C, чтобы Сконфигурировать статью Audio Codec Chip.

1.2 Создание I2S IP

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

modelname = 'hdlcoder_I2S_adau1761';
open_system(modelname);

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

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

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

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

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

I2C, I2S и IP-адреса FIFO включены в пользовательские исходные проекты. Для создания пользовательского исходного проекта см. раздел «Создание и экспорт пользовательского исходного проекта с помощью 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 файл и т.д., должны быть добавлены в путь matlab, внутри папки 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-ядро из модели и интегрировать его с исходным проектом аудиокодека, смотрите Запуск Аудиофильтра на Live Audio Входа Используя пример платы Zynq.