Расширенный расширяемый интерфейс - Википедия - Advanced eXtensible Interface

В Расширенный расширяемый интерфейс (AXI), часть РУКА Расширенная архитектура шины микроконтроллера 3 (AXI3) и 4 (AXI4) спецификации,[1] это параллельно высокая производительность, синхронный, высокая частота, мульти-мастер, мульти-подчиненный коммуникация интерфейс, в основном предназначен для внутрикристальной коммуникации.

AXI был представлен в 2003 году со спецификацией AMBA3. В 2010 году новая версия AMBA, AMBA4, определила AXI4, AXI4-Lite и AXI4-Stream. протокол. AXI - это бесплатно и его спецификация находится в свободном доступе по адресу РУКА.

AXI предлагает широкий спектр функций, в том числе:

  • отдельный адрес / этапы управления и данных
  • поддержка невыровненного доступа к данным
  • пакетные передачи, с однократной передачей стартового адрес
  • отдельные и независимые каналы чтения и записи
  • поддержка незавершенных транзакций
  • поддержка завершения транзакций вне очереди для транзакций, имеющих разные идентификаторы потока на одном и том же главном порту. (Транзакции на одном и том же главном порту с одинаковым идентификатором потока должны выполняться по порядку. Кроме того, разные главные порты могут выполняться не по порядку относительно друг друга.)
  • Поддержка для атомарные операции.

AMBA AXI определяет множество необязательных сигналы, которые могут быть опционально включены в зависимости от конкретных требований дизайна,[2] что делает AXI универсальной шиной для множества приложений.

Хотя общение через AXI автобус находится между одним ведущим и одним ведомым, спецификация включает подробное описание и сигналы для включения N: M межсоединений, способных расширить шину до топологий с большим количеством ведущих и ведомых устройств.[3]

AMBA AXI4, AXI4-Lite и AXI4-Stream были приняты Xilinx и многие из ее партнеров в качестве основных коммуникационных шин в своих продуктах.[4][5]


ID потоков

Идентификаторы потоков позволяют одному главному порту поддерживать несколько потоков, при этом каждый поток имеет упорядоченный доступ к адресному пространству AXI, однако каждый идентификатор потока, инициированный с одного главного порта, может завершаться не по порядку относительно друг друга. Например, в случае, когда один идентификатор потока заблокирован медленным периферийным устройством, другой идентификатор потока может продолжаться независимо от порядка идентификатора первого потока. Другой пример, одному потоку на процессоре может быть назначен идентификатор потока для доступа к памяти конкретного главного порта, такого как чтение addr1, запись addr1, чтение addr1, и эта последовательность будет завершена по порядку, потому что каждая транзакция имеет один и тот же идентификатор потока главного порта. Другой поток, работающий на процессоре, может иметь другой идентификатор потока главного порта, назначенный ему, и его доступ к памяти также будет в порядке, но может быть смешан с транзакциями с идентификаторами первого потока.

Идентификаторы потоков на главном порте не определены глобально, поэтому коммутатор AXI с несколькими главными портами будет внутренним префиксом индекса главного порта к идентификатору потока и предоставит этот объединенный идентификатор потока ведомому устройству, а затем при возврате транзакции на его мастер-порт происхождения, этот префикс идентификатора потока будет использоваться для определения местоположения главного порта, и префикс будет усечен. Вот почему идентификатор потока подчиненного порта в битах шире, чем идентификатор потока главного порта.

Шина Axi-lite - это шина AXI, которая поддерживает только один поток ID для каждого мастера. Эта шина обычно используется для конечной точки, которой необходимо одновременно обмениваться данными только с одним ведущим устройством, например, с простым периферийным устройством, таким как UART. Напротив, ЦП способен одновременно управлять несколькими периферийными устройствами и адресными пространствами и будет поддерживать более одного идентификатора потока на своих главных портах axi и подчиненных портах axi. Вот почему ЦП обычно поддерживает шину Axi с ​​полной спецификацией. Типичный пример переключателя axi на передней панели может включать мастер-устройство axi с полной спецификацией, подключенное к мастеру процессора, и несколько подчиненных устройств axi-lite, подключенных к переключателю axi от различных периферийных устройств.

(Дополнительная шина axi-lite ограничена поддержкой длины транзакции только в 1 слово данных на транзакцию.)

Рукопожатие

Базовый механизм рукопожатия AMBA AXI протокол. В этом примере объект назначения ожидает высокого значения VALID для подтверждения своего собственного READY.

AXI определяет базовый механизм рукопожатия, состоящий из сигналов xVALID и xREADY.[6] Сигнал xVALID управляется источником, чтобы сообщить объекту назначения, что полезная нагрузка на канале действительна и может быть прочитана из этого такт вперед. Точно так же сигнал xREADY запускается принимающим объектом, чтобы уведомить, что он готов к приему данных.

Когда оба сигнала xVALID и xREADY имеют высокий уровень такт, полезная нагрузка данных считается "переданной", и источник может либо предоставить новую полезную нагрузку, поддерживая высокий xVALID, либо прекратить передачу, отменив xVALID. Индивидуальная передача данных, поэтому тактовый цикл, когда и xVALID, и xREADY имеют высокий уровень, называется "биением".

Для управления этими сигналами определены два основных правила:

  • Источник не должен ждать высокого уровня xREADY для подтверждения xVALID.
  • После утверждения источник должен поддерживать высокий xVALID до тех пор, пока не произойдет рукопожатие.

Благодаря этому рукопожатие Механизм, как источник, так и место назначения могут контролировать поток данных, при необходимости регулируя скорость.

каналы

В спецификации AXI пять каналы описаны:[7]

  • Чтение адресного канала (AR)
  • Чтение канала данных (R)
  • Канал записи адреса (AW)
  • Канал записи данных (Вт)
  • Канал ответа на запись (B)

Помимо некоторых основных правил заказа,[8] каждый канал независимы друг от друга и имеют свою пару xVALID / xREADY рукопожатие сигналы.[9]

Каналы чтения AXI
Каналы чтения адреса и данных AXI.
Каналы записи AXI
Каналы записи адресов, данных и ответов в AXI.

AXI

Сигналы

Сигналы каналов чтения и записи адреса
Описание сигналаНаписать адресный каналЧитать адресный канал
Идентификатор адреса для идентификации нескольких потоки за один каналAWIDARID
Адрес первой доли очередиAWADDRARADDR
Количество ударов внутри пакетаAWLEN[nb 1]АРЛЕН[nb 1]
Размер каждой долиAWSIZEARSIZE
Тип взрываAWBURSTАРБЕРСТ
Тип замка, чтобы обеспечить атомарные операцииAWLOCK[nb 1]АРЛОК[nb 1]
Тип памяти, как транзакция должна проходить через системуAWCACHEARCACHE
Тип защиты: привилегия, уровень безопасности и доступ к данным / инструкциямАВПРОТARPROT
Качество обслуживания сделкиAWQOS[nb 2]ARQOS[nb 2]
Идентификатор региона для доступа к нескольким логическим интерфейсам с одного физическогоAWREGION[nb 2]ОБЛАСТЬ[nb 2]
Пользовательские данныеAWUSER[nb 2]ARUSER[nb 2]
xVALID рукопожатие сигналНЕДЕЙСТВИТЕЛЬНОАРВАЛИД
xREADY рукопожатие сигналУДИВИТЕЛЬНОЗАВЕРШАЕТСЯ
Сигналы каналов чтения и записи данных
Описание сигналаЗапись канала данныхЧтение канала данных
Идентификатор данных, чтобы идентифицировать несколько потоки за один каналWID[№ 3]ИЗБАВЛЯТЬ
Чтение / запись данныхWDATARDATA
Прочитать ответ, чтобы указать статус текущего сигнала RDATARRESP
Байт строб, чтобы указать, какие байты сигнала WDATA действительныWSTRB
Идентификатор последней долиWLASTRLAST
Пользовательские данныеWUSER[nb 2]РУСЕР[nb 2]
xVALID рукопожатие сигналWVALIDRVALID
xREADY рукопожатие сигналПОДГОТОВКАНАСТОЯЩИЙ
Сигналы канала Write Response
Описание сигналаНаписать канал ответа
Запишите идентификатор ответа, чтобы идентифицировать несколько потоки за один каналДЕЛАТЬ СТАВКУ
Напишите ответ, чтобы указать статус пакетаБРЕСП
Пользовательские данныеБУСЕР[nb 2]
xVALID рукопожатие сигналBVALID
xREADY рукопожатие сигналХЛЕБ

[10]

  1. ^ а б c d Различное поведение между AXI3 и AXI4
  2. ^ а б c d е ж грамм час я Доступно только с AXI4
  3. ^ Доступно только с AXI3

Всплески

Пример пакетов FIXED, INCR и WRAP

AXI - это пакетный протокол,[11] Это означает, что для одного запроса может быть несколько передач данных (или битов). Это делает его полезным в случаях, когда необходимо передать большой объем данных от или к определенному шаблону адресов. В AXI пакеты могут быть трех типов, выбранных сигналами ARBURST (для чтения) или AWBURST (для записи ):[12]

  • ФИКСИРОВАННЫЙ
  • INCR
  • СВОРАЧИВАТЬ

В ФИКСИРОВАННЫХ пакетах каждый такт в передаче имеет один и тот же адрес. Это полезно для повторного доступа к одной и той же ячейке памяти, например, при чтении или записи ФИФО.

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

Пакеты WRAP аналогичны пакетам INCR, поскольку каждая передача имеет адрес, равный предыдущему, плюс размер передачи. Однако с пакетами WRAP, если адрес текущего удара достигает «границы верхнего адреса», он сбрасывается до «границы переноса»:

с

Сделки

Читает

Пример транзакции чтения AXI. Мастер запрашивает 4 удара (АРЛЕН + 1[13]) по 4 байта каждый, начиная с адреса 0x0 с типом INCR. Подчиненное устройство возвращает 0x10 для адреса 0x0, 0x11 для адреса 0x4, 0x12 для адреса 0x8 и 0x13 для адреса 0xc, все со статусом OKAY. Здесь показаны только самые актуальные сигналы.

Чтобы начать транзакцию чтения, мастер должен предоставить в канале адреса чтения:

  • начальный адрес на ARADDR
  • тип пакета, FIXED, INCR или WRAP, на ARBURST (если есть)
  • длина пакета на ARLEN (если есть).

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

После обычного рукопожатия ARVALID / ARREADY ведомое устройство должно предоставить на канале чтения данных:

  • данные, соответствующие указанному адресу (ам) на RDATA
  • статус каждой доли на RRESP

плюс любые другие дополнительные сигналы. Каждый такт ответа ведомого выполняется с помощью рукопожатия RVALID / RREADY, и при последней передаче ведомое устройство должно подтвердить RLAST, чтобы сообщить, что больше тактов не последует без нового запроса на чтение.

Пишет

Пример транзакции записи AXI. Мастер гонит 4 удара (AWLEN + 1[13]) по 4 байта каждый, начиная с адреса 0x0 с типом INCR, записывая 0x10 для адреса 0x0, 0x11 для адреса 0x4, 0x12 для адреса 0x8 и 0x13 для адреса 0xc. Ведомое устройство возвращает «OKAY» в качестве ответа записи для всей транзакции. Здесь показаны только самые важные сигналы.

Чтобы начать операцию записи, мастер должен предоставить как адресную информацию, так и данные.

Информация об адресе предоставляется по каналу адреса записи аналогично операции чтения:

  • начальный адрес должен быть указан на AWADDR
  • тип пакета, FIXED, INCR или WRAP, на AWBURST (если присутствует)
  • длина пакета на AWLEN (если есть)

и, если есть, все дополнительные сигналы.

Мастер также должен предоставить данные, относящиеся к указанному адресу (адресам) в канале данных записи:

  • данные по WDATA
  • биты «строба» в WSTRB (если они есть), которые условно помечают отдельные байты WDATA как «действительные» или «недействительные»

Как и в пути чтения, в последнем слове данных мастер должен подтвердить WLAST.

После завершения обеих транзакций ведомое устройство должно отправить обратно ведущему устройству состояние записи по каналу ответа записи, возвращая результат по сигналу BRESP.

AXI4-Lite

AXI4-Lite - это подмножество протокола AXI4, обеспечивая регистрационный структура с уменьшенными функциями и сложностью.[14] Заметные отличия:

  • все пакеты состоят только из 1 доли
  • все обращения к данным используют полную ширину шины данных, которая может быть 32 или 64 бит

AXI4-Lite удаляет часть сигналов AXI4, но следует спецификации AXI4 для остальных. Быть подмножество транзакций AXI4, AXI4-Lite полностью совместимы с устройствами AXI4, что позволяет совместимость между ведущими устройствами AXI4-Lite и ведомыми устройствами AXI4 без дополнительной логики преобразования.[15]

Сигналы

Написать адресный каналЗапись канала данныхНаписать канал ответаЧитать адресный каналЧтение канала данных
НЕДЕЙСТВИТЕЛЬНОWVALIDBVALIDАРВАЛИДRVALID
УДИВИТЕЛЬНОПОДГОТОВКАХЛЕБЗАВЕРШАЕТСЯНАСТОЯЩИЙ
AWADDRWDATAБРЕСПARADDRRDATA
АВПРОТWSTRBARPROTRRESP

[16]

Смотрите также

Рекомендации

  1. ^ «AMBA | Документация». Arm Holdings.
  2. ^ Arm Holdings. «Спецификация протокола AMBA AXI и ACE» (PDF). developer.arm.com. стр. 109–118. Получено 5 июля 2019.
  3. ^ Arm Holdings. «Спецификация протокола AMBA AXI и ACE» (PDF). developer.arm.com. стр. 23–24. Получено 5 июля 2019.
  4. ^ «Протокол интерфейса AMBA AXI4». www.xilinx.com. Xilinx Inc.
  5. ^ «AXI4 IP». www.xilinx.com. Xilinx Inc.
  6. ^ Arm Holdings. «Спецификация протокола AMBA AXI и ACE» (PDF). developer.arm.com. стр. 37–38. Получено 5 июля 2019.
  7. ^ Arm Holdings. «Спецификация протокола AMBA AXI и ACE» (PDF). developer.arm.com. стр. 22–23. Получено 5 июля 2019.
  8. ^ Arm Holdings. «Спецификация протокола AMBA AXI и ACE» (PDF). developer.arm.com. п. 40. Получено 5 июля 2019.
  9. ^ Arm Holdings. «Спецификация протокола AMBA AXI и ACE» (PDF). developer.arm.com. п. 38. Получено 5 июля 2019.
  10. ^ Arm Holdings. «Спецификация протокола AMBA AXI и ACE» (PDF). developer.arm.com. стр. 28–34. Получено 5 июля 2019.
  11. ^ Arm Holdings. «Спецификация протокола AMBA AXI и ACE» (PDF). developer.arm.com. п. 22. Получено 5 июля 2019.
  12. ^ Arm Holdings. «Спецификация протокола AMBA AXI и ACE» (PDF). developer.arm.com. стр. 45–47. Получено 5 июля 2019.
  13. ^ а б Arm Holdings. «Спецификация протокола AMBA AXI и ACE» (PDF). developer.arm.com. п. 44. Получено 5 июля 2019.
  14. ^ Arm Holdings. «Спецификация протокола AMBA AXI и ACE» (PDF). developer.arm.com. стр. 121–128. Получено 5 июля 2019.
  15. ^ Arm Holdings. «Спецификация протокола AMBA AXI и ACE» (PDF). developer.arm.com. п. 124. Получено 5 июля 2019.
  16. ^ Arm Holdings. «Спецификация протокола AMBA AXI и ACE» (PDF). developer.arm.com. п. 122. Получено 5 июля 2019.

внешняя ссылка