В этом примере показано, как:
Создание IP-ядер для периферийных интерфейсов с помощью HDL Workflow Advisor
Создание эталонного проекта для запуска звукового алгоритма и доступа к входу и выходу звука
В этом примере вы создаете эталонный дизайн, который получает входные аудиосигналы от комплекта Intel Arrow SoC Development Kit, выполняет некоторую обработку и передает обработанные аудиоданные из комплекта Arrow SoC Development Kit. Для обработки звука на Arrow SoC необходимы следующие 2 протокола:
I2C для конфигурирования микросхемы аудиокодека SSM2603 на Arrow SoC.
I2S для потоковой передачи оцифрованных аудиоданных между микросхемой кодека и циклоном V FPGA.

На приведенном выше рисунке показана высокоуровневая схема архитектуры, показывающая, как эталонная конструкция используется алгоритмом фильтрации IP. I2S IP работает на 50MHz частоте, тогда как может потребоваться запустить алгоритм фильтрации IP на более высокой частоте. Эта частота контролируется на шаге 1.4 в помощнике по рабочим процессам HDL. В этом примере предположим, что фильтр работает при 50MHz. В зависимости от выбранного типа фильтра, алгоритм фильтрации IP фильтрует диапазон частот из входящих аудиоданных и передает отфильтрованные аудиоданные. На приведенном выше рисунке алгоритм фильтрации IP является нашим основным алгоритмом, который мы моделируем в Simulink. В то время как I2C и I2S IP должны быть созданы. Здесь у вас есть 3 варианта:
Использовать предварительно упакованный IP, например, если он существует
Смоделировать его в Simulink и создать ядро IP с помощью рабочего процесса создания ядра IP или
Использовать устаревший код HDL. Чтобы создать IP-код из устаревшего HDL-кода, используйте модель Simulink для «черного ящика» кода HDL и создания из него IP-ядра. I2C, I2S, IPs PLL и система HPS (Hard Processor System) циклона V являются частью эталонной конструкции.
Для создания ссылочной конструкции, описанной выше, используются следующие шаги:
Создание IP-ядер для периферийных интерфейсов
Создание пользовательского ссылочного проекта аудиокодека в Qsys
Создание файла определения ссылочного проекта
Проверка ссылочной конструкции
В этом примере:
I2C IP разрабатывается путем моделирования с использованием блоков Stateflow, а также с использованием устаревшего кода VHDL для тристатического буфера.
I2S IP разрабатывается путём его моделирования в Simulink.
Для создания I2C IP, чтобы настроить Аудиокодек SSM2603, обратитесь к IP Основному Поколению IP Диспетчера I2C, чтобы Настроить Чип Аудиокодека.
Создайте модель в Simulink с помощью функции matlab, реализующей протокол I2S.
modelname = 'hdlcoder_I2S_ssm2603';
open_system(modelname);

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

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

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

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

I2C и I2S IP включены в пользовательскую ссылочную конструкцию. Чтобы создать пользовательскую эталонную конструкцию, см. раздел Создание эталонной конструкции с использованием Intel Quartus Prime в разделе Определение пользовательской платы и эталонной конструкции для рабочего процесса Intel SoC.
При создании этой пользовательской ссылочной конструкции необходимо отметить следующие ключевые моменты:
Мы должны понять теорию работы микросхемы аудиокодека на Arrow SoC.
Для IP-ядер, созданных с помощью HDL Workflow Advisor, IPCORE_CLK и AXI4_ACLK должны быть подключены к одному источнику синхросигналов.
В этой эталонной конструкции аудиокодек сконфигурирован для работы в главном режиме.
Между эталонным дизайном на SoC Intel и аудиокодеком на SoC Arrow выполняются следующие сигналы:
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 тактовый сигнал, требуемый кодеком.
Созданный для этого примера пользовательский эталонный проект аудиокодека показан ниже:

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

Перейдите в папку ArrowSoC с помощью следующей команды:
cd ([matlabroot '/toolbox/hdlcoder/hdlcoderdemos/customboards/ArrowSoC']);
Все файлы, необходимые для эталонной конструкции, такие как файлы ядра IP, файл qsys, файл tcl, файл plugin_rd и т.д., должны быть добавлены в путь matlab внутри папки ArrowSoC с использованием иерархии, показанной ниже. Созданные пользователем файлы ядра IP должны находиться в папке + quartus. plugin_rd.m, файлы tcl и файлы qsys должны находиться в папке эталонного плагина дизайна, например, + qsys _ audio _ filter _ 18 _ 1.

Чтобы гарантировать, что эталонная конструкция и интерфейсы в эталонной конструкции работают так, как ожидалось, создайте модель Simulink, которая просто отправляет звук через алгоритм IP, интегрируйте ее с эталонной конструкцией и протестируйте на Arrow SoC. Вы должны иметь возможность слышать звуковой шлейф назад.
modelname = 'hdlcoder_audio_pass_through';
open_system(modelname);

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

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