Создание исходного проекта для создания аудиосистем на системной плате Intel

В этом примере показано, как:

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

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

Введение

В этом примере вы создаете исходный проект, который получает аудио входа от Intel Стрелы SoC Development Kit, выполняет на нем некоторую обработку и передает обработанное аудио данных из Стрелы SoC Development Kit. Чтобы выполнить обработку аудио на Arrow SoC, вам нужны следующие 2 протокола:

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

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

Приведенный выше рисунок является диаграммой архитектуры высокого уровня, которая показывает, как исходный проект используется IP-адресом алгоритма фильтрации. I2S IP работает с 50MHz частотой, в то время как можно хотеть запустить Алгоритм Фильтрации IP с более высокой частотой. Эта частота контролируется на шаге 1.4 в HDL Workflow Advisor. В этом примере примите, что фильтр работает на 50MHz. В зависимости от типа выбранного фильтра, Алгоритм фильтрации IP фильтрует область значений частот от входящего аудио данных и передает отфильтрованный аудио данные out. На приведенном выше рисунке IP алгоритма фильтрации является нашим основным алгоритмом, который мы моделируем в Simulink. В то время как I2C и I2S IP должны быть созданы. Здесь у вас есть 3 варианта:

  • Используйте предварительно упакованный IP, например, если он существует

  • Моделируйте его в Simulink и генерируйте IP-ядро, используя рабочий процесс генерации IP-ядра или

  • Используйте устаревший HDL-код. Чтобы создать IP-код из унаследованного HDL-кода, используйте модель Simulink для черного ящика HDL-кода и генерации IP-ядра из него. I2C, I2S, IP-адреса ФАП и жесткая процессорная система Cyclone V (HPS) образуют часть исходного проекта.

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

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

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

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

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

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

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

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

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

1.1 Создание I2C IP

Для создания IP- I2C для настройки SSM2603 Audio Codec см. раздел «Генерация IP-составляющей ядра I2C-контроллера» для настройки чипа Audio Codec.

1.2 Создание I2S IP

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

modelname = 'hdlcoder_I2S_ssm2603';
open_system(modelname);

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

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

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

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

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

I2C и I2S IP включены в пользовательские исходные проекты. Чтобы создать пользовательский исходный проект, обратитесь к разделу создания Исходного проекта с помощью Intel Quartus Prime в разделе «Определение пользовательской платы» и Исходного проекта для рабочего процесса Intel SoC.

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

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

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

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

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

  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. Создайте файл определения исходного проекта

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

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

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

Все файлы, которые требуются для исходного проекта, такие как файлы ядра IP, файл qsys, файл tcl, plugin_rd файл etc, должны быть добавлены в путь matlab, внутри папки ArrowSoC с помощью иерархии, показанной ниже. Пользовательские файлы ядра IP должны находиться в папке + quartus. plugin_rd.m файлы tcl и файлы qsys должны находиться в папке плагина ссылочного проекта, например, папка + qsys _ audio _ filter _ 18 _ 1.

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

В порядок, чтобы убедиться, что исходные проекты и интерфейсы в исходный проект работают, как ожидалось, разработайте модель Simulink, которая только что отправляет аудио через IP Алгоритма, интегрируйте его с исходным проектом и протестируйте на Стрелу SoC. Вы должны быть в состоянии услышать звуковой цикл назад.

modelname = 'hdlcoder_audio_pass_through';
open_system(modelname);

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

Чтобы сгенерировать IP-ядро из модели и интегрировать его с исходным проектом аудиокодека, обратитесь к разделу Запуск аудиофильтра на Live Audio Входа с помощью платы Intel.