exponenta event banner

Поколение IP-ядра контроллера I2C для конфигурирования микросхемы аудиокодека

В этом примере показано, как моделировать контроллер I2C с использованием контроллера I2C Master, смоделированного с использованием блоков Stateflow™ для конфигурирования микросхемы аудиокодека.

В этом примере выполняется следующее:

  1. Моделирование главного контроллера I2C с использованием блоков Stateflow ® в Simulink ®

  2. Моделирование контроллера I2C с использованием блока главного контроллера I2C для конфигурирования микросхемы аудиокодека

  3. Используйте подсистему blackbox и функции двунаправленного порта для обработки логики трех состояний в ядре IP I2C

  4. Используйте IP Основной технологический процесс Поколения, чтобы произвести IP ядро для Диспетчера I2C

1. Обзор протокола I2C

Шина I2C, также называемая шиной Inter-IC, представляет собой простую, многомастерную, многолучевую, двунаправленную двухпроводную шину, состоящую из последовательных линий передачи данных (SDA) и последовательных тактовых линий (SCL). Каждое устройство, подключенное к шине, является программным, адресуемым по уникальному 7-битному или 10-битному адресу, и поддерживает простую связь ведущий-ведомый. Последовательные, ориентированные на 8 бит, двунаправленные передачи данных могут осуществляться со скоростью до 100 кбит/с в стандартном режиме, до 400 кбит/с в быстром режиме или до 3,4 Мбит/с в высокоскоростном режиме. I2C шина имеет два узла: главный узел и подчиненный узел. Главный узел генерирует часы и инициирует связь с ведомым узлом. Ведомый узел, к которому обращается ведущий, получает тактовый сигнал и отвечает ведущему во время подтверждения. Существуют четыре режима работы: ведущая передача, ведущая прием, подчиненная передача и подчиненная прием. Ведущий начинает связь, посылая начальный бит, за которым следует 7 или 10 битовый адрес подчиненного устройства, за которым следует бит считывания (1) или записи (0). Если присутствует подчиненное устройство, соответствующее этому адресу, то оно отвечает битом ACK. Ведущий продолжает связь в режиме передачи или приема на основе бита считывания или записи. Аналогично, подчиненное устройство продолжает свою работу на основе команды чтения или записи от ведущего устройства. На рисунке ниже показана временная диаграмма протокола I2C.

2. Моделирование обобщенного главного контроллера I2C в Simulink с использованием блоков потока состояний

Настройка нескольких периферийных устройств в конструкции может быть громоздким и утомительным процессом. Вместо этого создайте общий главный контроллер I2C, который можно непосредственно использовать для настройки чипов аудиокодека. На рисунке ниже показана архитектура обобщенного главного контроллера I2C, который реализован с использованием блоков Stateflow в Simulink.

В вышеприведенной части показан блок главного контроллера I2C. Чтобы настроить периферийное устройство, необходимо настроить блок главного контроллера I2C. Ниже приведена блок-схема конфигурирования микросхемы аудиокодека с использованием главного контроллера I2C.

В приведенной ниже модели показан главный контроллер I2C, который моделируется в Simulink с использованием блоков Stateflow.

modelname = 'hdlcoder_I2C_master_controller';
open_system(modelname);
open_system('hdlcoder_I2C_master_controller/I2C_MasterController');

Главный контроллер I2C поддерживает только запись I2C и в настоящее время не поддерживает обратное чтение I2C. I2C Master Controller состоит из двух частей, I2C Master Controller chart и tristate buffer blackbox. I2C Диаграмма главного контроллера предоставляет последовательные данные, SDA и последовательные часы, SCL к ведомому устройству через трехуровневый буфер blackbox. Tristate buffer blackbox использует рукописный код VHDL и используется для двунаправленной функциональности порта SDA. Tristate buffer blackbox добавляется в модель, так как Simulink не поддерживает двунаправленное моделирование портов.

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

1. Создайте подсистему, содержащую входные и выходные порты исходного кода HDL, который требуется импортировать для создания blackbox. Буферный черный ящик I2C tristate как показано ниже.

2. Чтобы указать подсистему как интерфейс черного ящика, щелкните правой кнопкой мыши подсистему и выберите HDL Code > HDL Block Properties и установите для Architecture значение Blackbox, как показано на следующем рисунке.

3. Порт данных I2C_SDA главного контроллера I2C является двунаправленным. Чтобы установить порт как двунаправленный, щелкните правой кнопкой мыши по порту I2C_SDA, выберите свойства блока HDL и установите BidirecedPort на, как показано ниже.

4. Во время моделирования для моделирования будет использоваться фактическое содержимое в подсистеме blackbox.

Во время генерации кода кодер HDL не генерирует код в подсистеме blackbox. Вместо этого генератор кода интегрирует написанный вручную код HDL в ядро IP. Входы в блок главного контроллера I2C могут быть предоставлены путем добавления схемы конфигурации устройства на входе. Эта диаграмма содержит сведения о регистрах, которые необходимо настроить для ведомого устройства. Дополнительные сведения о конфигурации устройств приведены в разделе конфигурации аудиокодека Zedboard, Zybo и комплекта разработки Arrow SoC с использованием главного контроллера I2C.

2,1 Описание блока главного контроллера ввода/вывода I2C

На следующем рисунке представлена подробная информация о входных и выходных портах блока главного контроллера I2C.

2.2 Описание диаграммы статусов главного контроллера I2C

Контроллер Владельца I2C, которым диаграмма сделана таким способом, который во всех государствах потребовал часов (SCL), произведен, и данные обеспечены согласно протоколу I2C через последовательные данные (SDA) порт. Следующие состояния показывают генерацию тактового сигнала и стартового бита.

Следующие состояния используются для отправки 7-разрядного адреса ведомого устройства.

Бит функции используется для последовательной отправки битов в порт SDA. Он позволяет пользователю получить битовое значение в указанной позиции целого числа, упомянутого в его списке аргументов. Переход из одного состояния в другое зависит от порядка выполнения, заданного для условий перехода. Как показано на приведенном выше рисунке, переход из cmd_slave_addr_p в cmd_slave_addr_n состояние происходит на основе условия перехода (bit_cnt > 0). Значение bit_cnt продолжает уменьшаться до тех пор, пока не будет удовлетворено условие перехода. Значение bit_cnt инициализируется в «» 7 «», и его значение уменьшается до тех пор, пока не станет «» 1 «», который используется для отправки 7-битного адреса ведомого устройства через порт SDA. Для создания кода HDL необходимо использовать поддерживаемые типы данных. Оператор двоеточия (:), как показано в состояниях, который является оператором типизации, используемым в cmd_slave_addr_n состоянии (scl (:) = 0), преобразует значение типа «double» в тип «logical» (SCL - логический тип данных в показанных состояниях). Приведенные ниже состояния используются для отправки адреса регистра ведомому устройству.

Приведенные ниже состояния используются для передачи данных регистра ведомому устройству.

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

3. Формирование аудиокодека ADAU1761 на Zedboard, используя Диспетчера Владельца I2C блок библиотеки

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

  1. Моделирование диаграммы конфигурации аудиокодека ADAU1761 устройства с использованием блоков Stateflow в Simulink.

  2. Используйте Основной блок библиотеки диспетчера I2C, чтобы настроить аудиокодек ADAU1761.

  3. Выполните моделирование созданной модели.

Как упоминалось выше, для конфигурирования аудиокодека на ADAU1761 Zedboard необходимо создать схему конфигурации устройства для ADAU1761. Эта диаграмма должна быть связана с Основным блоком библиотеки диспетчера I2C, созданным ранее.

Примечание.Необходимо создать схему конфигурации устройства для собственного устройства. Этот пример состоит в том, чтобы показать, как Основной блок библиотеки Диспетчера I2C может использоваться, чтобы настроить устройства аудиокодека. Диаграмма конфигурации устройства, используемая для ADAU1761, специфична для данного устройства и не может использоваться для настройки других устройств.

Модель конфигурации, созданная для ADAU1761, показана ниже.

modelname = 'hdlcoder_I2C_adau1761';
open_system(modelname);

3.1 Моделирование модели конфигурации аудиокодека ADAU1761

Для ADAU1761 микросхемы аудиокодека необходимо сконфигурировать 20 регистров. Немногие из них должны быть написаны Первоклассным Диспетчером I2C в способе взрыва и немногими в способе байта. Первый регистр записывается в байтовом режиме, второй - в пакетном режиме длиной 6 байт. Остальные 18 регистров записываются в байтовом режиме.

Имитационная форма сигнала для конфигурации аудиокодека ADAU1761 показана ниже.

Передачу способа байта между Основным Контроллером I2C и чипом аудиокодека ADAU1761 показывают в следующем числе.

Ниже показано моделирование посылки начального бита, за которым следует 7-разрядный адрес ведомого устройства (0x3B), за которым следует бит записи (0), за которым следует 16-разрядный адрес регистра (0x4000), за которым следуют 8-разрядные данные регистра (0x0E) и подтверждения от ведомого устройства.

3.2 Рабочий процесс создания IP-ядра

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

1. Настройте траекторию инструмента синтеза Xilinx Vivado с помощью следующей команды в окне команды MATLAB. Используйте собственный путь установки Vivado при выполнении команды

hdlsetuptoolpath('ToolName', 'Xilinx Vivado', 'ToolPath', 'C:\Xilinx\Vivado\2017.4\bin\vivado.bat');

2. В модели конфигурации ADAU1761 выберите I2C_IP подсистему и щелкните правой кнопкой мыши, чтобы открыть советника по рабочим процессам HDL. В задаче 1.1 выберите рабочий процесс создания IP-ядра для целевой платформы, общую платформу Xilinx для целевой платформы и инструмент Xilinx Vivado для синтеза. Также выберите семейство, устройство, пакет и скорость, как показано на рисунке ниже.

3. В задаче 1.2 установите для интерфейсов целевой платформы значение «Внешний порт» для всех портов.

4. Логика Tristate HDL присутствует в hdlcoder_I2C_tristate.vhd файлов VHDL. Скопируйте его в текущий рабочий каталог.

copyfile (полный файл (matlabroot, 'toolbox', 'hdlcoder', 'hdlcoderdemos', 'hdlcoder _ I2C _ tristate.vhd'), 'hdlcoder _ I2C _ tristate.vhd');

5. В задаче 3.2 добавьте файл VHDL с трехуровневым буфером в дополнительные исходные файлы. Затем щелкните правой кнопкой мыши на Generate RTL code and IP Core и выберите Run to Selected Task.

Ядро I2C IP для конфигурации ADAU1761 будет произведено. На рисунке ниже показан отчет о генерации IP Core.

Сгенерированное ядро IP может использоваться в ссылочных проектах пользователей. Сведения о создании эталонной конструкции см. в разделе Разработка эталонной конструкции для аудиосистемы на плате Zynq.

4. Формирование аудиокодека SSM2603 на совете Zybo, использующем Диспетчера Владельца I2C блок библиотеки

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

  1. Моделирование диаграммы конфигурации аудиокодека SSM2603 устройства с использованием блоков Stateflow в Simulink.

  2. Используйте Основной блок библиотеки диспетчера I2C, чтобы настроить аудиокодек SSM2603.

  3. Выполните моделирование созданной модели.

Для конфигурирования SSM2603 аудиокодека на плате Zybo необходимо создать схему конфигурации устройства для SSM2603. Эта диаграмма должна быть связана с Основным блоком библиотеки диспетчера I2C, созданным ранее.

Примечание.Схема конфигурации устройства, используемая для SSM2603, специфична для данного устройства и не может использоваться для настройки других устройств.

Модель конфигурации, созданная для SSM2603, показана ниже.

modelname = 'hdlcoder_I2C_ssm2603';
open_system(modelname);

4.1 Моделирование модели конфигурации аудиокодека SSM2603

Для SSM2603 микросхемы аудиокодека необходимо сконфигурировать 11 регистров. Все записи должны быть записаны в байтовом режиме.

Имитационная форма сигнала для конфигурации аудиокодека SSM2603 показана ниже.

Ниже показано моделирование посылки начального бита, за которым следует 7-разрядный адрес ведомого устройства (0x1A), за которым следует бит записи (0), за которым следует 8-разрядный адрес регистра (0x0C), за которым следуют 8-разрядные данные регистра (0x10) и подтверждения от ведомого устройства.

4.2 Процесс создания IP-ядра

Шаги создания IP Core для SSM2603 модели конфигурации аналогичны шагам, упомянутым выше в разделе 3.2, рабочий процесс создания IP Core. Сгенерированное ядро IP может использоваться в ссылочных проектах пользователей. Сведения о создании эталонной конструкции см. в разделе Разработка эталонной конструкции для аудиосистемы на плате ZYBO.

5 аудиокодеков Формирования SSM2603 на Стреле Средство разработки SoC, используя Диспетчера Владельца I2C блок библиотеки

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

  1. Моделирование диаграммы конфигурации аудиокодека SSM2603 устройства с использованием блоков Stateflow в simulink.

  2. Используйте Основной блок библиотеки диспетчера I2C, чтобы настроить аудиокодек SSM2603.

  3. Выполните моделирование созданной модели.

Для настройки SSM2603 аудиокодека на комплекте разработки Arrow SoC необходимо создать диаграмму конфигурации устройства для SSM2603. Эта диаграмма должна быть связана с Основным блоком библиотеки диспетчера I2C, созданным ранее.

Примечание.Схема конфигурации устройства, используемая для SSM2603, специфична для данного устройства и не может использоваться для настройки других устройств.

Модель конфигурации для SSM2603 на Arrow SoC Development Kit аналогична модели конфигурации для SSM2603 на плате Zybo. Для получения информации о SSM2603 модели конфигурации см. раздел 4 этой статьи.

5.1 Моделирование модели конфигурации аудиокодека SSM2603

Конфигурация SSM2603 аудиокодека в комплекте разработки Arrow SoC аналогична конфигурации SSM2603 аудиокодека на плате Zybo. Сведения о моделировании см. в разделе 4.1 данной статьи.

5.2 Процесс создания IP-ядра

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

1. Настройте траекторию инструмента Intel Quartus с помощью следующей команды в окне команд MATLAB. При выполнении команды используйте собственный путь установки Quartus

hdlsetuptoolpath('ToolName', 'Altera Quartus II', 'ToolPath', 'C:\intelFPGA\18.1\quartus\bin64\quartus.exe');

2. В модели конфигурации SSM2603 выберите I2C_SSM2603 подсистему и щелкните правой кнопкой мыши, чтобы открыть советника по рабочим процессам HDL. В задаче 1.1 выберите рабочий процесс создания ядра IP для цели, общую платформу Altera для целевой платформы и Altera QUARTUS II для средства синтеза. Также выберите семейство, устройство, пакет и скорость, как показано на рисунке ниже.

3. В задаче 1.2 установите для интерфейсов целевой платформы значение «External Port» для всех портов.

4. Логика Tristate HDL присутствует в hdlcoder_I2C_tristate_arrowssm2603.vhd файлов Verilog. Скопируйте его в текущий рабочий каталог.

copyfile (полный файл (matlabroot, 'toolbox', 'hdlcoder', 'hdlcoderdemos', 'hdl _ I2C _ tristate _ arrowssm2603.vhd'), 'hdl _ I2C _ tristate _ arrowssm2603.vhd');

5. В задаче 3.2 добавьте файл Verilog с тристатическим буфером в дополнительные исходные файлы. Затем щелкните правой кнопкой мыши на Generate RTL code and IP Core и выберите Run to Selected Task.

Ядро I2C IP для конфигурации SSM2603 будет произведено. На рисунке ниже показан отчет о генерации IP Core.

Сгенерированное ядро IP может использоваться в ссылочных проектах пользователей. Сведения о создании эталонной конструкции см. в разделе Разработка эталонной конструкции для аудиосистемы на плате Intel.