Articulo de referencia

Interfaz extensible avanzada

La Interfaz Extensible Avanzada ( AXI ) es un protocolo de bus de comunicación en chip y forma parte de la especificación de la Arquitectura Avanzada de Bus de Microcontroladore...

La Interfaz Extensible Avanzada ( AXI ) es un protocolo de bus de comunicación en chip y forma parte de la especificación de la Arquitectura Avanzada de Bus de Microcontroladores (AMBA). [ 1 ] [ 2 ] AXI es de uso libre y su especificación está disponible gratuitamente en ARM .

AMBA AXI especifica muchas señales opcionales , que pueden incluirse según los requisitos específicos del diseño, [ 3 ] lo que convierte a AXI en un bus versátil para numerosas aplicaciones.

Si bien la comunicación a través de un bus AXI se realiza entre un único iniciador y un único destino, la especificación incluye descripciones detalladas y señales para incluir interconexiones N:M, capaces de extender el bus a topologías con múltiples iniciadores y destinos. [ 4 ]

AXI3 se introdujo en 2003 con la especificación AMBA3. En 2010, una nueva revisión de AMBA, AMBA4, definió los protocolos AXI4, AXI4-Lite y AXI4-Stream. Xilinx y muchos de sus socios han adoptado AMBA AXI4, AXI4-Lite y AXI4-Stream como bus de comunicación principal en sus productos. [ 5 ] [ 6 ] AMBA5 con AXI5 se lanzó en 2022, añadiendo atomicidad, protección de datos y operaciones de caché. Se especifica una nueva ACE (AXI Coherency Extension). [ 7 ]

Identificadores de subprocesos

Los ID de hilo permiten que un único puerto iniciador admita múltiples hilos, donde cada hilo tiene acceso secuencial al espacio de direcciones AXI. Sin embargo, cada ID de hilo iniciado desde un único puerto iniciador puede completarse de forma no secuencial con respecto a los demás. Por ejemplo, si un ID de hilo se bloquea por un periférico lento, otro ID de hilo puede continuar independientemente del orden del primer ID de hilo. Otro ejemplo: a un hilo en una CPU se le puede asignar un ID de hilo para un acceso a memoria de un puerto iniciador específico, como leer addr1, escribir addr1, leer addr1, y esta secuencia se completará secuencialmente porque cada transacción tiene el mismo ID de hilo de puerto iniciador. A otro hilo que se ejecuta en la CPU se le puede asignar otro ID de hilo de puerto iniciador, y su acceso a memoria también será secuencial, pero puede mezclarse con las transacciones del primer ID de hilo. [ 8 ]

Los ID de subprocesos en un puerto iniciador no están definidos globalmente; por lo tanto, un conmutador AXI con múltiples puertos iniciadores antepondrá internamente el ID de subproceso al índice del puerto iniciador y proporcionará este ID de subproceso concatenado al dispositivo de destino. Luego, al regresar la transacción a su puerto iniciador de origen, este prefijo del ID de subproceso se utilizará para localizar el puerto iniciador y el prefijo se truncará. Por esta razón, el ID de subproceso del puerto de destino tiene más bits que el ID de subproceso del puerto iniciador. [ 9 ]

El bus AXI-Lite es un bus AXI que solo admite un único ID de hilo por iniciador. Este bus se utiliza normalmente para un punto final que solo necesita comunicarse con un único dispositivo iniciador a la vez, por ejemplo, un periférico simple como una UART . En cambio, una CPU es capaz de iniciar transacciones con múltiples periféricos y espacios de direcciones simultáneamente, y admite más de un ID de hilo en sus puertos de iniciador AXI y puertos de destino AXI. Por este motivo, una CPU suele admitir un bus AXI de especificación completa. Un ejemplo típico de un conmutador AXI frontal incluiría un iniciador AXI de especificación completa conectado a un iniciador de CPU y varios destinos AXI-Lite conectados al conmutador AXI desde diferentes dispositivos periféricos. [ 10 ]

(Además, el bus AXI-Lite está restringido a admitir únicamente longitudes de transacción de una sola palabra de datos por transacción).

Apretón de manos

Mecanismo básico de establecimiento de conexión del protocolo AMBA AXI . En este ejemplo, la entidad de destino espera un VALID alto para confirmar su estado READY.

AXI define un mecanismo básico de intercambio de claves , compuesto por una señal xVALIDy una xREADYseñal. [ 11 ] La xVALIDseñal es generada por la fuente para informar a la entidad de destino que la carga útil en el canal es válida y puede leerse a partir de ese ciclo de reloj . De manera similar, la xREADYseñal es generada por la entidad receptora para notificar que está preparada para recibir datos.

Cuando las señales xVALIDy xREADYestán en nivel alto en el mismo ciclo de reloj , se considera que la carga útil de datos se ha transferido y la fuente puede proporcionar una nueva carga útil de datos, manteniendo la señal en nivel alto xVALID, o finalizar la transmisión, desactivando la señal xVALID. Una transferencia de datos individual, es decir, un ciclo de reloj en el que ambas señales xVALIDy xREADYestán en nivel alto, se denomina "latido".

Se definen dos reglas principales para el control de estas señales:

  • Una fuente no debe esperar a que haya un nivel alto xREADYpara afirmar xVALID.
  • Una vez xVALIDque se realiza una afirmación, la fuente debe mantenerla hasta que se produzca un acuerdo de reciprocidad.

Gracias a este mecanismo de sincronización , tanto el origen como el destino pueden controlar el flujo de datos, regulando la velocidad si es necesario.

Canales

En la especificación AXI se describen cinco canales : [ 12 ]

  • Canal de direcciones de lectura (AR)
  • Canal de lectura de datos (R)
  • Canal de direcciones de escritura (AW)
  • Canal de datos de escritura (W)
  • Canal de respuesta de escritura (B)

Aparte de algunas reglas de ordenación básicas, [ 13 ] cada canal es independiente de los demás y tiene su propio par de señales xVALID/xREADYde enlace . [ 14 ]

Canales de lectura AXI
Canales de lectura de direcciones y datos AXI.
Canales de escritura AXI
Canales de escritura de dirección, escritura de datos y escritura de respuesta de AXI.

EJE

Señales

[ 15 ]

  1. ^ a b c d Comportamiento diferente entre AXI3 y AXI4
  2. ^ a b c d e f g h i Disponible solo con AXI4
  3. ^ Disponible únicamente con AXI3

Ráfagas

Ejemplo de ráfagas FIJAS, INCREMENTALES y ENVOLTURAS

AXI es un protocolo basado en ráfagas , [ 16 ] lo que significa que puede haber múltiples transferencias de datos (o pulsos) para una sola solicitud. Esto lo hace útil en los casos en que es necesario transferir una gran cantidad de datos desde o hacia un patrón específico de direcciones. En AXI, las ráfagas pueden ser de tres tipos, seleccionadas por las señales ARBURST (para lecturas) o AWBURST (para escrituras): [ 17 ]

  • FIJADO
  • INCR
  • ENVOLTURA

En las ráfagas FIJAS, cada pulso dentro de la transferencia tiene la misma dirección. Esto es útil para el acceso repetido a la misma ubicación de memoria, como cuando se lee o se escribe en una FIFO .

Addrmiss=StartAddrmiss{\displaystyle {\mathit {Address}}={\mathit {StartAddress}}}

En las ráfagas INCR, por otro lado, cada pulso tiene una dirección igual a la anterior más el tamaño de la transferencia. Este tipo de ráfaga se usa comúnmente para leer o escribir en áreas de memoria secuenciales.

Addrmissi=StartAddrmiss+iTranortesFmirSizmi{\displaystyle {\mathit {Address}}_{i}={\mathit {StartAddress}}+{\mathit {i}}\cdot {\mathit {TransferSize}}}

Las ráfagas WRAP son similares a las INCR, ya que cada transferencia tiene una dirección igual a la anterior más el tamaño de la transferencia. Sin embargo, con las ráfagas WRAP, si la dirección del latido actual alcanza el "límite de dirección superior", se restablece al "límite de envoltura".

Addrmissi=WrapagBonortedary+(StartAddrmiss+iTranortesFmirSizmi) metrood (BrstLminortegramothTranortesFmirSizmi){\displaystyle {\mathit {Address}}_{i}={\mathit {WrapBoundary}}+({\mathit {StartAddress}}+{\mathit {i}}\cdot {\mathit {TransferSize}})\ \mathrm {mod} \ ({\mathit {BurstLength}}\cdot {\mathit {TransferSize}})}

con

WrapagBonortedary=StartAddrmissnortemetrobmirBytmisBrstLminortegramoth(nortemetrobmirBytmisBrstLminortegramoth){\displaystyle {\mathit {WrapBoundary}}=\left\lfloor {\frac {\mathit {StartAddress}}{{\mathit {NumberBytes}}\cdot {\mathit {BurstLength}}}}\right\rfloor \cdot ({\mathit {NumberBytes}}\cdot {\mathit {BurstLength}})}

Actas

Lecturas

Ejemplo de una transacción de lectura AXI. El iniciador solicita 4 pulsos (ARLEN + 1 [ 18 ] ) de 4 bytes cada uno, comenzando desde la dirección 0x0 con tipo INCR. El destino devuelve 0x10 para la dirección 0x0, 0x11 para la dirección 0x4, 0x12 para la dirección 0x8 y 0x13 para la dirección 0xc, todos con estado OKAY. Aquí solo se muestran las señales más relevantes.

Para iniciar una transacción de lectura, el iniciador debe proporcionar en el canal de dirección de lectura:

  • la dirección de inicio en ARADDR
  • el tipo de ráfaga, ya sea FIJO, INCR o ENVOLTURA, en ARBURST (si está presente)
  • la duración de la ráfaga en ARLEN (si está presente).

Además, las demás señales auxiliares, si están presentes, se utilizan para definir transferencias más específicas.

Después del intercambio de claves ARVALID/ARREADY habitual, el objetivo debe proporcionar en el canal de datos de lectura:

  • los datos correspondientes a la(s) dirección(es) especificada(s) en RDATA
  • el estado de cada ritmo en RRESP

más cualquier otra señal opcional. Cada pulso de la respuesta del objetivo se realiza con un protocolo de enlace RVALID/RREADY y, en la última transferencia, el objetivo debe afirmar RLAST para informar que no seguirán más pulsos sin una nueva solicitud de lectura.

Escribe

Ejemplo de una transacción de escritura AXI. El iniciador envía 4 pulsos (AWLEN + 1 [ 18 ] ) de 4 bytes cada uno, comenzando desde la dirección 0x0 con tipo INCR, escribiendo 0x10 para la dirección 0x0, 0x11 para la dirección 0x4, 0x12 para la dirección 0x8 y 0x13 para la dirección 0xc. El destino devuelve 'OKAY' como respuesta de escritura para toda la transacción. Aquí solo se muestran las señales más relevantes.

Para iniciar una operación de escritura, el iniciador debe proporcionar tanto la información de la dirección como la información de los datos.

La información de la dirección se proporciona a través del canal de dirección de escritura, de forma similar a una operación de lectura:

  • La dirección de inicio debe proporcionarse en AWADDR.
  • el tipo de ráfaga, ya sea FIJO, INCR o ENVOLTURA, en AWBURST (si está presente)
  • la duración de la ráfaga en AWLEN (si está presente)

y, si están presentes, todas las señales opcionales.

El iniciador también debe proporcionar los datos relacionados con la(s) dirección(es) especificada(s) en el canal de datos de escritura:

  • los datos en WDATA
  • los bits "strobe" en WSTRB (si están presentes), que marcan condicionalmente los bytes WDATA individuales como "válidos" o "inválidos".

Al igual que en la ruta de lectura, en la última palabra de datos, el iniciador debe afirmar WLAST.

Una vez completadas ambas transacciones, el destinatario debe enviar al iniciador el estado de la escritura a través del canal de respuesta de escritura, devolviendo el resultado mediante la señal BRESP.

Subconjuntos

AXI-Lite

AXI4-Lite es un subconjunto del protocolo AXI4, que proporciona una estructura similar a un registro con características y complejidad reducidas. [ 19 ] Las diferencias notables son:

  • Todas las ráfagas están compuestas por un solo tiempo.
  • Todos los accesos a datos utilizan el ancho completo del bus de datos, que puede ser de 32 o 64 bits.

AXI4-Lite elimina parte de las señales AXI4, pero sigue la especificación AXI4 para las restantes. Al ser un subconjunto de AXI4, las transacciones AXI4-Lite son totalmente compatibles con los dispositivos AXI4, lo que permite la interoperabilidad entre iniciadores AXI4-Lite y destinos AXI4 sin lógica de conversión adicional. [ 20 ]

Señales

[ 21 ]

AXI-Stream

AXI4-Stream es un protocolo de bus simplificado y ligero diseñado específicamente para aplicaciones de transmisión de datos a alta velocidad. Admite únicamente flujo de datos unidireccional, sin necesidad de direccionamiento ni de un protocolo de enlace complejo. Un AXI Stream es similar a un canal de datos de escritura AXI, con algunas diferencias importantes en la organización de los datos:

  • No se producen ráfagas, sino que los datos se empaquetan en paquetes, tramas y flujos de datos.
  • No hay límite en la longitud de los datos, que pueden ser continuos.
  • El ancho de los datos puede ser cualquier número entero de bytes.

El protocolo AXI5 Stream introduce señalización de activación y protección de señal mediante paridad.

Un único transmisor AXI Stream puede controlar múltiples flujos que pueden intercalarse, pero no se permite reordenarlos.

Véase también

Referencias

  1. ^ "AMBA | Documentación" . Arm Holdings.
  2. ^Toole, Christina (24 October 2016). "Introduction to AXI Protocol: Understandingca the AXI interface". arm.com. Arm Limited. Retrieved 11 September 2023. The protocol used by many SoC designers today is AXI, or Advanced eXtensible Interface, and is part of the Arm Advanced Microcontroller Bus Architecture (AMBA) specification. It is especially prevalent in Xilinx's Zynq devices, providing the interface between the processing system and programmable logic sections of the chip.
  3. ^Arm Holdings. "AMBA AXI and ACE Protocol Specification"(PDF). developer.arm.com. pp. 109–118. Archived from the original(PDF) on 5 July 2019. Retrieved 5 July 2019.
  4. ^Arm Holdings. "AMBA AXI and ACE Protocol Specification"(PDF). developer.arm.com. pp. 23–24. Archived from the original(PDF) on 5 July 2019. Retrieved 5 July 2019.
  5. ^"AMBA AXI4 Interface Protocol". www.xilinx.com. Xilinx Inc.
  6. ^"AXI4 IP". www.xilinx.com. Xilinx Inc.
  7. ^ARM Ltd. "AMBA 5". Arm | The Architecture for the Digital World.
  8. ^"AMBA AXI and ACE Protocol Specification"(PDF). Arm Ltd. 22 February 2013. Retrieved 28 November 2025.
  9. ^"AXI Interconnect v2.1 LogiCORE IP Product Guide"(PDF). Xilinx. 17 May 2022. Retrieved 28 November 2025.
  10. ^"AXI Thread IDs (TIDs) – SoC Basics"(PDF). Institute for Embedded Systems, TU Graz. 2021. Retrieved 28 November 2025.
  11. ^Arm Holdings. "AMBA AXI and ACE Protocol Specification"(PDF). developer.arm.com. pp. 37–38. Archived from the original(PDF) on 5 July 2019. Retrieved 5 July 2019.
  12. ^ Arm Holdings. "Especificación del protocolo AMBA AXI y ACE" (PDF) . developer.arm.com . págs.  22–23 . Archivado del original (PDF) el 5 de julio de 2019. Consultado el 5 de julio de 2019 .
  13. ^ Arm Holdings. "Especificación del protocolo AMBA AXI y ACE" (PDF) . developer.arm.com . pág. 40. Archivado del original (PDF) el 5 de julio de 2019. Consultado el 5 de julio de 2019 .
  14. ^ Arm Holdings. "Especificación del protocolo AMBA AXI y ACE" (PDF) . developer.arm.com . pág. 38. Archivado del original (PDF) el 5 de julio de 2019. Consultado el 5 de julio de 2019 .
  15. ^ Arm Holdings. "Especificación del protocolo AMBA AXI y ACE" (PDF) . developer.arm.com . págs.  28–34 . Archivado del original (PDF) el 5 de julio de 2019. Consultado el 5 de julio de 2019 .
  16. ^ Arm Holdings. "Especificación del protocolo AMBA AXI y ACE" (PDF) . developer.arm.com . pág. 22. Archivado del original (PDF) el 5 de julio de 2019. Consultado el 5 de julio de 2019 .
  17. ^ Arm Holdings. "Especificación del protocolo AMBA AXI y ACE" (PDF) . developer.arm.com . págs.  45–47 . Archivado del original (PDF) el 5 de julio de 2019. Consultado el 5 de julio de 2019 .
  18. ^ a b Arm Holdings. "Especificación del protocolo AMBA AXI y ACE" (PDF) . developer.arm.com . pág. 44. Consultado el 5 de julio de 2019 .
  19. ^ Arm Holdings. "Especificación del protocolo AMBA AXI y ACE" (PDF) . developer.arm.com . págs.  121–128 . Archivado del original (PDF) el 5 de julio de 2019. Consultado el 5 de julio de 2019 .
  20. ^ Arm Holdings. "Especificación del protocolo AMBA AXI y ACE" (PDF) . developer.arm.com . pág. 124. Archivado del original (PDF) el 5 de julio de 2019. Consultado el 5 de julio de 2019 .
  21. ^ Arm Holdings. "Especificación del protocolo AMBA AXI y ACE" (PDF) . developer.arm.com . pág. 122. Archivado del original (PDF) el 5 de julio de 2019. Consultado el 5 de julio de 2019 .
  • Página web de AMBA
  • Especificación AXI4 archivada el 5 de julio de 2019 en Wayback Machine.
  • Introducción a ARM AXI
  • Introducción a Xilinx AXI
Obtenido de " https://en.wikipedia.org/w/index.php?title=Advanced_eXtensible_Interface&oldid=1332409128 "