Расширенный расширяемый интерфейс
![]() | В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Расширенный расширяемый интерфейс ( AXI ) — это протокол встроенной коммуникационной шины, являющийся частью спецификации усовершенствованной архитектуры шины микроконтроллера (AMBA). [1] [2] AXI был представлен в 2003 году со спецификацией AMBA3. В 2010 году новая версия AMBA, AMBA4, определила протоколы AXI4, AXI4-Lite и AXI4-Stream . AXI не требует лицензионных отчислений , а его спецификация доступна бесплатно на сайте ARM .
AMBA AXI определяет множество дополнительных сигналов , которые могут быть включены в зависимости от конкретных требований конструкции. [3] что делает AXI универсальной шиной для множества применений.
Хотя связь по шине AXI осуществляется между одним инициатором и одной целью, спецификация включает подробные описания и сигналы для включения межсоединений N:M, позволяющих расширить шину до топологий с несколькими инициаторами и целями. [4]
AMBA AXI4, AXI4-Lite и AXI4-Stream были приняты компанией Xilinx и многими ее партнерами в качестве основной коммуникационной шины в своих продуктах. [5] [6]
Идентификаторы потоков
[ редактировать ]Идентификаторы потоков позволяют одному порту инициатора поддерживать несколько потоков, при этом каждый поток имеет упорядоченный доступ к адресному пространству AXI, однако каждый идентификатор потока, инициированный из одного порта инициатора, может завершиться не по порядку по отношению друг к другу. Например, в случае, когда один идентификатор потока блокируется медленным периферийным устройством, другой идентификатор потока может продолжаться независимо от порядка первого идентификатора потока. Другой пример: одному потоку на ЦП может быть назначен идентификатор потока для доступа к памяти конкретного порта инициатора, например, чтение адреса1, запись адреса1, чтение адреса1, и эта последовательность будет завершена по порядку, поскольку каждая транзакция имеет одинаковый идентификатор потока порта инициатора. Другой поток, работающий в ЦП, может иметь другой идентификатор потока порта инициатора, назначенный ему, и его доступ к памяти также будет в порядке, но может быть перемешан с транзакциями идентификаторов первого потока.
Идентификаторы потоков в порту инициатора не определены глобально, поэтому коммутатор AXI с несколькими портами инициатора будет внутренне префикс индекса порта инициатора перед идентификатором потока и предоставит этот объединенный идентификатор потока целевому устройству, а затем при возврате транзакции на его порт происхождения инициатора, этот префикс идентификатора потока будет использоваться для определения порта инициатора, а префикс будет усечен. Вот почему идентификатор потока целевого порта шире в битах, чем идентификатор потока порта инициатора.
Шина AXI-Lite — это шина AXI, которая поддерживает только один поток идентификатора для каждого инициатора. Эта шина обычно используется для конечной точки, которой необходимо одновременно взаимодействовать только с одним устройством-инициатором, например, с простым периферийным устройством, таким как UART . Напротив, ЦП способен инициировать транзакции с несколькими периферийными устройствами и адресными пространствами одновременно и будет поддерживать более одного идентификатора потока на своих портах инициатора AXI и целевых портах AXI. Вот почему ЦП обычно поддерживает полную спецификацию шины AXI. Типичный пример переключателя AXI на передней стороне может включать в себя инициатор AXI с полной спецификацией, подключенный к инициатору ЦП, и несколько целевых объектов AXI-Lite, подключенных к переключателю AXI от различных периферийных устройств.
(Кроме того, шина AXI-Lite ограничена поддержкой только длины транзакции, равной одному слову данных на транзакцию.)
Рукопожатие
[ редактировать ]
AXI определяет базовый механизм установления связи , состоящий из xVALID
и xREADY
сигнал. [7] xVALID
Сигнал подается источником, чтобы сообщить объекту-получателю, что полезная нагрузка на канале действительна и может быть прочитана, начиная с этого тактового цикла . Аналогичным образом, xREADY
Сигнал подается принимающим объектом для уведомления о том, что он готов к приему данных.
Когда оба xVALID
и xREADY
сигналы имеют высокий уровень в одном и том же тактовом цикле , полезная нагрузка данных считается переданной, и источник может либо предоставить новую полезную нагрузку данных, сохраняя высокий уровень xVALID
или прекратить передачу, отменив утверждение xVALID
. Индивидуальная передача данных, поэтому тактовый цикл, когда оба xVALID
и xREADY
высокие, называется «бить».
Для управления этими сигналами определены два основных правила:
- Источник не должен ждать высокого
xREADY
утверждатьxVALID
. - Один раз
xVALID
утверждается, источник должен поддерживать это утверждение до тех пор, пока не произойдет рукопожатие.
Благодаря этому механизму установления связи и источник, и пункт назначения могут контролировать поток данных, при необходимости регулируя скорость.
Каналы
[ редактировать ]В спецификации AXI пять каналов : описаны [8]
- Чтение адресного канала (AR)
- Чтение канала данных (R)
- Канал записи адреса (AW)
- Канал записи данных (W)
- Канал ответа записи (B)
Помимо некоторых основных правил заказа, [9] каждый канал независим друг от друга и имеет свою пару xVALID/xREADY
рукопожатия . сигналы [10]
АКСИ
[ редактировать ]Сигналы
[ редактировать ]Описание сигнала | Запись адреса канала | Чтение адресного канала |
---|---|---|
Идентификатор адреса для идентификации нескольких потоков по одному каналу. | AWID | засуха |
Адрес первого бита пакета | АВАДДР | АРАДДР |
Количество бит внутри пакета | ОЛЕН [номер 1] | АРЛЕН [номер 1] |
Размер каждого бита | РАЗМЕР | АРЗАЙЗ |
Тип взрыва | АВБЕРСТ | АРБЕРСТ |
Тип блокировки для обеспечения атомарных операций. | АВЛОК [номер 1] | АРЛОК [номер 1] |
Тип памяти, как транзакция должна проходить через систему | АВКЭШ | АРКАШ |
Тип защиты: привилегии , уровень безопасности и доступ к данным/инструкциям. | АВПРОТ | АРПРОТ |
Качество обслуживания сделки | АВКОС [номер 2] | АРКИ [номер 2] |
Идентификатор региона для доступа к нескольким логическим интерфейсам с одного физического. | АРЕГИОН [номер 2] | АРРЕГИОН [номер 2] |
Пользовательские данные | АВУЗЕР [номер 2] | АРУСЕР [номер 2] |
xVALID рукопожатия сигнал | АВДЕЙСТВИТЕЛЬНО | АРВАЛИД |
xREADY рукопожатия сигнал | УЖЕ | УЖЕ |
Описание сигнала | Канал записи данных | Чтение канала данных |
---|---|---|
Идентификатор данных для идентификации нескольких потоков по одному каналу. | WID [номер 3] | ИЗБАВЛЯТЬ |
Чтение/запись данных | ВДАТА | РДАТА |
Прочитайте ответ, чтобы указать статус текущего сигнала RDATA. | РЕСП | |
Строб байта, указывающий, какие байты сигнала WDATA действительны. | ВСТРБ | |
Идентификатор последнего бита | ПОСЛЕДНИЙ | РЛАСТ |
Пользовательские данные | ВУСЕР [номер 2] | РУССКИЙ [номер 2] |
xVALID рукопожатия сигнал | WVALID | РВАЛИД |
xREADY рукопожатия сигнал | ВРЕДИ | ГОТОВО |
Описание сигнала | Написать канал ответа |
---|---|
Запишите идентификатор ответа, чтобы идентифицировать несколько потоков по одному каналу. | ДЕЛАТЬ СТАВКУ |
Напишите ответ, чтобы указать статус пакета. | БРЕСП |
Пользовательские данные | АВТОБУСЕР [номер 2] |
xVALID рукопожатия сигнал | БВАЛИД |
xREADY рукопожатия сигнал | ХЛЕБ |
всплески
[ редактировать ]
AXI — пакетный протокол , [12] это означает, что для одного запроса может быть несколько передач данных (или тактов). Это делает его полезным в тех случаях, когда необходимо передать большой объем данных с определенного шаблона адресов или на него.В AXI пакеты могут быть трех типов, выбираемых сигналами ARBURST (для чтения) или AWBURST (для записи): [13]
- ЗАФИКСИРОВАННЫЙ
- ИНКР
- СВОРАЧИВАТЬ
В ФИКСИРОВАННЫХ пакетах каждый такт внутри передачи имеет один и тот же адрес. Это полезно для повторного доступа к одной и той же ячейке памяти, например, при чтении или записи FIFO .
С другой стороны, в пакетах INCR каждый такт имеет адрес, равный предыдущему плюс размер передачи. Этот тип пакета обычно используется для чтения или записи последовательных областей памяти.
Пакеты WRAP аналогичны пакетам INCR, поскольку каждая передача имеет адрес, равный предыдущему, плюс размер передачи. Однако при использовании пакетов WRAP, если адрес текущего такта достигает «высшей границы адреса», он сбрасывается до «границы переноса»:
с
Транзакции
[ редактировать ]Читает
[ редактировать ]
Чтобы начать транзакцию чтения, инициатор должен предоставить в канале адреса чтения:
- начальный адрес на ARADDR
- тип пакета FIXED, INCR или WRAP для ARBURST (если присутствует)
- длина пакета на ARLEN (если присутствует).
Кроме того, другие вспомогательные сигналы, если они присутствуют, используются для определения более конкретных передач.
После обычного рукопожатия ARVALID/ARREADY цель должна предоставить по каналу данных чтения:
- данные, соответствующие указанному адресу(ям) в RDATA
- статус каждого такта на RRESP
плюс любые другие дополнительные сигналы.Каждый такт ответа цели выполняется с помощью рукопожатия RVALID/RREADY, и при последней передаче цель должна установить RLAST, чтобы сообщить, что без нового запроса на чтение больше тактов не будет.
Пишет
[ редактировать ]
Чтобы начать операцию записи, инициатор должен предоставить как информацию об адресе, так и данные.
Информация об адресе передается по каналу адреса записи аналогично операции чтения:
- начальный адрес должен быть указан в AWADDR
- тип пакета: FIXED, INCR или WRAP, на AWBURST (если присутствует)
- длина пакета на AWLEN (если присутствует)
и, если присутствуют, все дополнительные сигналы.
Инициатор также должен предоставить данные, относящиеся к указанному адресу(ам) по каналу записи данных:
- данные по WDATA
- биты «строба» в WSTRB (если они есть), которые условно помечают отдельные байты WDATA как «действительные» или «недействительные».
Как и в пути чтения, в последнем слове данных инициатор должен установить WLAST.
После завершения обеих транзакций цель должна отправить обратно инициатору статус записи по каналу ответа на запись, вернув результат по сигналу BRESP.
AXI4-Лайт
[ редактировать ]AXI4-Lite — это подмножество протокола AXI4, обеспечивающее структуру , подобную регистру, с уменьшенными функциями и сложностью. [15] Заметные различия:
- все пакеты состоят только из 1 доли
- при любом доступе к данным используется полная ширина шины данных, которая может составлять 32 или 64 бита.
AXI4-Lite удаляет часть сигналов AXI4, но для остальных соответствует спецификации AXI4. Будучи подмножеством AXI4, транзакции AXI4-Lite полностью совместимы с устройствами AXI4, обеспечивая взаимодействие между инициаторами AXI4-Lite и целями AXI4 без дополнительной логики преобразования. [16]
Сигналы
[ редактировать ]Написать адрес канала | Запись канала данных | Написать канал ответа | Чтение адресного канала | Чтение канала данных |
---|---|---|---|---|
АВДЕЙСТВИТЕЛЬНО | WVALID | БВАЛИД | АРВАЛИД | РВАЛИД |
УЖЕ | ВРЕДИ | ХЛЕБ | УЖЕ | ГОТОВО |
АВАДДР | ВДАТА | БРЕСП | АРАДДР | РДАТА |
АВПРОТ | ВСТРБ | АРПРОТ | РЕСП |
AXI-поток
[ редактировать ]AXI4-Stream — это упрощенный и легкий протокол шины, разработанный специально для приложений высокоскоростной потоковой передачи данных. Он поддерживает только однонаправленный поток данных без необходимости адресации или сложного установления связи. Поток AXI аналогичен каналу записи данных AXI, но с некоторыми важными отличиями в организации данных:
- нет пакетов, вместо этого данные упаковываются в пакеты, кадры и потоки данных
- нет ограничений на длину данных, которые могут быть непрерывными
- ширина данных может быть любым целым числом байтов
Протокол AXI5 Stream обеспечивает сигнализацию пробуждения и защиту сигнала с использованием четности.
Один передатчик потока AXI может управлять несколькими потоками, которые могут чередоваться, но переупорядочение не допускается.
Сигнал | Источник | Ширина | Описание |
---|---|---|---|
АКЛК | Часы | 1 | ACLK — это глобальный тактовый сигнал. Все сигналы отбираются по нарастающему фронту ACLK. |
ARESETn | Перезагрузить | 1 | ARESETn — это сигнал глобального сброса. |
ТВАЛС | Передатчик | 1 | TVALID указывает, что передатчик осуществляет действительную передачу. Передача происходит, когда подтверждены как TVALID, так и TREADY. |
ТРИДИ | Получатель | 1 | TREADY указывает, что Получатель может принять перевод. |
ТДАТА | Передатчик | TDATA_WIDTH | TDATA — это основная полезная нагрузка, используемая для предоставления данных, передаваемых через интерфейс. TDATA_WIDTH должно быть целым числом байтов; рекомендуется его длина 8, 16, 32, 64, 128, 256, 512 или 1024 бита. |
ТСТРБ | Передатчик | TDATA_WIDTH/8 | TSTRB — это квалификатор байта, который указывает, обрабатывается ли содержимое связанного байта TDATA как байт данных или байт позиции. |
ДЕРЖАТЬ | Передатчик | TDATA_WIDTH/8 | TKEEP — это квалификатор байта, который указывает, обрабатывается ли содержимое связанного байта TDATA как часть потока данных. |
ТЛАСТ | Передатчик | 1 | TLAST указывает границу пакета. |
ВРЕМЯ | Передатчик | TIME_WIDTH | TID — идентификатор потока данных. TID_WIDTH рекомендуется составлять не более 8. |
TDEST | Передатчик | TDEST_WIDTH | TDEST предоставляет информацию о маршрутизации потока данных. Рекомендуется значение TDEST_WIDTH не более 8. |
ТЫСЯЧИ | Передатчик | TUSER_WIDTH | TUSER — это определяемая пользователем информация о боковой полосе, которая может передаваться в потоке данных. Рекомендуется, чтобы значение TUSER_WIDTH было целым числом, кратным TDATA_WIDTH/8. |
ПРОБУЖДЕНИЕ | Передатчик | 1 | TWAKEUP идентифицирует любую активность, связанную с интерфейсом AXI-Stream. |
См. также
[ редактировать ]- Усовершенствованная архитектура шины микроконтроллера
- Поперечный рычаг (компьютерный автобус)
- Главный/ведомый (технология)
Ссылки
[ редактировать ]- ^ «АМБА | Документация» . Арм Холдингс.
- ^ Тул, Кристина (24 октября 2016 г.). «Введение в протокол AXI: понимание интерфейса AXI» . Arm.com . Арм Лимитед . Проверено 11 сентября 2023 г.
Сегодня многие разработчики SoC используют протокол AXI, или Advanced eXtensible Interface, и он является частью спецификации Arm Advanced Microcontroller Bus Architecture (AMBA). Он особенно распространен в устройствах Zynq от Xilinx, обеспечивая интерфейс между системой обработки и программируемыми логическими секциями чипа.
- ^ Арм Холдингс. «Спецификация протоколов AMBA AXI и ACE» (PDF) . Developer.arm.com . стр. 109–118. Архивировано из оригинала (PDF) 5 июля 2019 года . Проверено 5 июля 2019 г.
- ^ Арм Холдингс. «Спецификация протоколов AMBA AXI и ACE» (PDF) . Developer.arm.com . стр. 23–24. Архивировано из оригинала (PDF) 5 июля 2019 года . Проверено 5 июля 2019 г.
- ^ «Протокол интерфейса AMBA AXI4» . www.xilinx.com . Компания Xilinx Inc.
- ^ «AXI4 IP» . www.xilinx.com . Компания Xilinx Inc.
- ^ Арм Холдингс. «Спецификация протоколов AMBA AXI и ACE» (PDF) . Developer.arm.com . стр. 37–38. Архивировано из оригинала (PDF) 5 июля 2019 года . Проверено 5 июля 2019 г.
- ^ Арм Холдингс. «Спецификация протоколов AMBA AXI и ACE» (PDF) . Developer.arm.com . стр. 22–23. Архивировано из оригинала (PDF) 5 июля 2019 года . Проверено 5 июля 2019 г.
- ^ Арм Холдингс. «Спецификация протоколов AMBA AXI и ACE» (PDF) . Developer.arm.com . п. 40. Архивировано из оригинала (PDF) 5 июля 2019 года . Проверено 5 июля 2019 г.
- ^ Арм Холдингс. «Спецификация протоколов AMBA AXI и ACE» (PDF) . Developer.arm.com . п. 38. Архивировано из оригинала (PDF) 5 июля 2019 года . Проверено 5 июля 2019 г.
- ^ Арм Холдингс. «Спецификация протоколов AMBA AXI и ACE» (PDF) . Developer.arm.com . стр. 28–34. Архивировано из оригинала (PDF) 5 июля 2019 года . Проверено 5 июля 2019 г.
- ^ Арм Холдингс. «Спецификация протоколов AMBA AXI и ACE» (PDF) . Developer.arm.com . п. 22. Архивировано из оригинала (PDF) 5 июля 2019 года . Проверено 5 июля 2019 г.
- ^ Арм Холдингс. «Спецификация протоколов AMBA AXI и ACE» (PDF) . Developer.arm.com . стр. 45–47. Архивировано из оригинала (PDF) 5 июля 2019 года . Проверено 5 июля 2019 г.
- ^ Перейти обратно: а б Арм Холдингс. «Спецификация протоколов AMBA AXI и ACE» (PDF) . Developer.arm.com . п. 44 . Проверено 5 июля 2019 г.
- ^ Арм Холдингс. «Спецификация протоколов AMBA AXI и ACE» (PDF) . Developer.arm.com . стр. 121–128. Архивировано из оригинала (PDF) 5 июля 2019 года . Проверено 5 июля 2019 г.
- ^ Арм Холдингс. «Спецификация протоколов AMBA AXI и ACE» (PDF) . Developer.arm.com . п. 124. Архивировано из оригинала (PDF) 5 июля 2019 года . Проверено 5 июля 2019 г.
- ^ Арм Холдингс. «Спецификация протоколов AMBA AXI и ACE» (PDF) . Developer.arm.com . п. 122. Архивировано из оригинала (PDF) 5 июля 2019 года . Проверено 5 июля 2019 г.