В этом примере показано, как:
Сгенерируйте IP-ядра для периферийных интерфейсов с помощью HDL Workflow Advisor
Создайте исходный проект, чтобы запустить аудио алгоритм и получить доступ к аудио входа и выводу
В этом примере вы создаете исходный проект, который получает аудио входа от Intel Стрелы SoC Development Kit, выполняет на нем некоторую обработку и передает обработанное аудио данных из Стрелы SoC Development Kit. Чтобы выполнить обработку аудио на Arrow SoC, вам нужны следующие 2 протокола:
I2C для настройки SSM2603 микросхемы аудиокодека на Arrow SoC.
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) образуют часть исходного проекта.
Для создания исходного проекта, описанного выше, используются следующие шаги:
Сгенерируйте IP-ядра для периферийных интерфейсов
Создайте пользовательский исходный проект аудиокодека в Qsys
Создайте файл определения исходного проекта
Проверьте исходный проект
В этом примере,
I2C IP разрабатывается путем моделирования его с помощью блоков Stateflow, а также с помощью устаревшего кода VHDL для тристатного буфера.
I2S IP разрабатывается путем моделирования его в Simulink.
Для создания IP- I2C для настройки SSM2603 Audio Codec см. раздел «Генерация IP-составляющей ядра I2C-контроллера» для настройки чипа Audio Codec.
Создайте модель в 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.
I2C и I2S IP включены в пользовательские исходные проекты. Чтобы создать пользовательский исходный проект, обратитесь к разделу создания Исходного проекта с помощью Intel Quartus Prime в разделе «Определение пользовательской платы» и Исходного проекта для рабочего процесса Intel SoC.
Ключевые точки, которые необходимо отметить при создании этого пользовательского исходного проекта:
Мы должны понять теорию операции чипа аудиокодека на Arrow SoC.
Для ядер IP, сгенерированных с помощью HDL Workflow Advisor, IPCORE_CLK и AXI4_ACLK должны быть подключены к одному и тому же источнику синхроимпульса.
В этом исходном проекте аудиокодек сконфигурирован для работы в главном режиме.
Между исходным проектом на Intel SoC и аудиокодеком на Arrow SoC выполняются следующие сигналы:
Bit_clock является продуктом частоты дискретизации, количества бит на канал и количества каналов. Он управляется аудиокодеком в главном режиме. В этом примере частота дискретизации 48KHz, нет каналов 2, количество бит на канал 24.
Left_right_select проводить различие между данными левого аудиоканала и данными правого аудиоканала. Он синхронизируется с синхроимпульсом Bit.
Serial_data_in - аналого-цифровой преобразованный аудио данные от кодека.
Serial_data_out цифровой аудио данных, поступающий в кодек, преобразуется в аналоговый вид.
I2C_CLK и I2C_DATA являются стандартными I2C сигналами
ADDR0 и ADDR1 являются I2C адресными битами.
Clk_24MHz - 24MHz тактовый сигнал, требуемый кодеком.
Пользовательский аудиокодек исходного проекта созданный для этого примера, показан ниже:
Следующий код описывает содержимое Стрелы файла определения исходного проекта 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.
В порядок, чтобы убедиться, что исходные проекты и интерфейсы в исходный проект работают, как ожидалось, разработайте модель Simulink, которая только что отправляет аудио через IP Алгоритма, интегрируйте его с исходным проектом и протестируйте на Стрелу SoC. Вы должны быть в состоянии услышать звуковой цикл назад.
modelname = 'hdlcoder_audio_pass_through';
open_system(modelname);
Интерфейсы в модели должны быть выбраны как показано ниже:
Чтобы сгенерировать IP-ядро из модели и интегрировать его с исходным проектом аудиокодека, обратитесь к разделу Запуск аудиофильтра на Live Audio Входа с помощью платы Intel.