La Interfaz extensible avanzada ( AXI ), parte de las especificaciones ARM Advanced Microcontroller Bus Architecture 3 (AXI3) y 4 (AXI4), [1] es una interfaz paralela de alto rendimiento, síncrona , alta frecuencia, multimaestro, multiesclavo. Interfaz de comunicación , diseñada principalmente para comunicación en chip.
AXI se introdujo en 2003 con la especificación AMBA3. En 2010, una nueva revisión del AMBA, AMBA4, definió el AXI4, AXI4-Lite y AXI4-Stream protocolo . AXI no tiene derechos de autor y su especificación está disponible gratuitamente en ARM .
AXI ofrece una amplia gama de funciones, que incluyen:
- fases separadas de dirección / control y datos
- soporte para accesos de datos no alineados
- transferencias basadas en ráfagas, con una única transmisión de la dirección de inicio
- canales de lectura y escritura separados e independientes
- soporte para transacciones pendientes
- soporte para la finalización de transacciones fuera de orden para transacciones que tienen diferentes ID de hilo en el mismo puerto maestro. (Las transacciones en el mismo puerto maestro que tienen el mismo ID de subproceso deben completarse en orden. Además, los diferentes puertos maestros pueden completarse fuera de orden entre sí).
- soporte para operaciones atómicas .
AMBA AXI especifica muchas señales opcionales , que se pueden incluir opcionalmente dependiendo de los requisitos específicos del diseño, [2] haciendo de AXI un bus versátil para numerosas aplicaciones.
Si bien la comunicación a través de un bus AXI es entre un solo maestro y un solo esclavo, la especificación incluye una descripción detallada y señales para incluir interconexiones N: M, capaces de extender el bus a topologías con más maestros y esclavos. [3]
Xilinx y muchos de sus socios han adoptado AMBA AXI4, AXI4-Lite y AXI4-Stream como principales buses de comunicación en sus productos. [4] [5]
ID de hilo
Los ID de subprocesos permiten que un solo puerto maestro admita varios subprocesos, donde cada subproceso tiene acceso en orden al espacio de direcciones AXI, sin embargo, cada ID de subproceso iniciado desde un solo puerto maestro puede completarse fuera de orden entre sí. Por ejemplo, en el caso de que un ID de subproceso esté bloqueado por un periférico lento, otro ID de subproceso puede continuar independientemente del orden del primer ID de subproceso. Otro ejemplo, a un subproceso en una CPU se le puede asignar un ID de subproceso para un acceso de memoria de puerto maestro en particular, como leer addr1, escribir addr1, leer addr1, y esta secuencia se completará en orden porque cada transacción tiene el mismo ID de subproceso del puerto maestro. Otro subproceso que se ejecuta en la CPU puede tener asignado otro ID de subproceso de puerto maestro, y su acceso a la memoria también estará en orden, pero tal vez entremezclado con las primeras transacciones de ID de subproceso.
Las ID de subproceso en un puerto maestro no se definen globalmente, por lo tanto, un conmutador AXI con varios puertos maestros prefijará internamente el índice del puerto maestro a la ID del subproceso y proporcionará esta ID de subproceso concatenado al dispositivo esclavo, luego, al regresar la transacción a su puerto maestro de origen, este prefijo de ID de subproceso se utilizará para ubicar el puerto maestro y el prefijo se truncará. Esta es la razón por la que el ID de subproceso del puerto esclavo es más ancho en bits que el ID del subproceso del puerto maestro.
El bus Axi-lite es un bus AXI que solo admite un único hilo de ID por maestro. Este bus se usa generalmente para un punto final que solo necesita comunicarse con un solo dispositivo maestro a la vez, por ejemplo, un periférico simple como un UART . Por el contrario, una CPU es capaz de controlar múltiples periféricos y espacios de direcciones a la vez, y admitirá más de una ID de subproceso en sus puertos axi master y axi slave. Esta es la razón por la que una CPU generalmente admitirá un bus axi de especificación completa. Un ejemplo típico de un conmutador axi del lado frontal incluiría un maestro axi de especificación completa conectado a un maestro de la CPU y varios esclavos axi-lite conectados al conmutador axi desde diferentes dispositivos periféricos.
(Además, el bus axi-lite está restringido para admitir solo longitudes de transacción de 1 palabra de datos por transacción).
Apretón de manos
AXI define un mecanismo de protocolo de enlace básico , compuesto por una señal xVALID y xREADY. [6] La señal xVALID es impulsada por la fuente para informar a la entidad de destino que la carga útil en el canal es válida y se puede leer desde ese ciclo de reloj en adelante. De manera similar, la señal xREADY es impulsada por la entidad receptora para notificar que está preparada para recibir datos.
Cuando las señales xVALID y xREADY son altas en el mismo ciclo de reloj , la carga útil de datos se considera "transferida" y la fuente puede proporcionar una nueva carga útil de datos, manteniendo alto xVALID, o terminar la transmisión, desactivando xVALID. Una transferencia de datos individual, por lo que un ciclo de reloj cuando tanto xVALID como xREADY son altos, se llama "latido".
Se definen dos reglas principales para el control de estas señales:
- Una fuente no debe esperar un alto xREADY para afirmar xVALID.
- Una vez confirmada, una fuente debe mantener un xVALID alto hasta que se produzca un apretón de manos.
Gracias a este mecanismo de protocolo de enlace , tanto el origen como el destino pueden controlar el flujo de datos, reduciendo la velocidad si es necesario.
Canales
En la especificación AXI, se describen cinco canales : [7]
- Leer canal de dirección (AR)
- Leer canal de datos (R)
- Canal de dirección de escritura (AW)
- Escribir canal de datos (W)
- Canal de respuesta de escritura (B)
Aparte de algunas reglas de ordenación básica, [8] cada canal es independiente el uno del otro y tiene su propio par de xVALID / xREADY handshake señales. [9]
AXI
Señales
Descripción de la señal | Canal de dirección de escritura | Leer canal de dirección |
---|---|---|
ID de dirección, para identificar múltiples transmisiones en un solo canal | AWID | ÁRIDO |
Dirección del primer latido del estallido | AWADDR | ARADDR |
Número de latidos dentro de la ráfaga | AWLEN [nb 1] | ARLEN [nb 1] |
Tamaño de cada latido | AWSIZE | TAMAÑO |
Tipo de explosión | AWBURST | ARBURST |
Tipo de bloqueo, para proporcionar operaciones atómicas. | AWLOCK [nb 1] | ARLOQUE [nb 1] |
Tipo de memoria, cómo debe progresar la transacción a través del sistema. | AWCACHE | ARCACHE |
Tipo de protección: privilegio , nivel de seguridad y acceso a datos / instrucciones | AWPROT | ARPROT |
Calidad de servicio de la transacción | AWQOS [nb 2] | ARQOS [nb 2] |
Identificador de región, para acceder a múltiples interfaces lógicas desde una única física | AWREGION [nb 2] | ARREGIÓN [nb 2] |
Datos definidos por el usuario | AWUSER [nb 2] | ARUSER [nb 2] |
xVALID apretón de manos de la señal | AWVALID | ARVALID |
xREADY apretón de manos de la señal | AWREADY | ARREADY |
Descripción de la señal | Escribir canal de datos | Leer canal de datos |
---|---|---|
Identificación de datos, para identificar múltiples transmisiones en un solo canal | WID [nb 3] | DESHACERSE |
Leer / escribir datos | WDATA | RDATA |
Leer respuesta, para especificar el estado de la señal RDATA actual | RRESP | |
Byte estroboscópico, para indicar qué bytes de la señal WDATA son válidos | WSTRB | |
Identificador del último latido | WLAST | RLAST |
Datos definidos por el usuario | WUSER [nb 2] | RUSER [nb 2] |
xVALID apretón de manos de la señal | WVALID | RVALID |
xREADY apretón de manos de la señal | WREADY | LISTO |
Descripción de la señal | Canal de respuesta de escritura |
---|---|
Escriba el ID de respuesta para identificar múltiples transmisiones en un solo canal | LICITACIÓN |
Escribir respuesta, para especificar el estado de la ráfaga. | BRESP |
Datos definidos por el usuario | BUSER [nb 2] |
xVALID apretón de manos de la señal | BVALID |
xREADY apretón de manos de la señal | PAN |
[10]
- ^ a b c d Comportamiento diferente entre AXI3 y AXI4
- ^ a b c d e f g h i Disponible solo con AXI4
- ^ Disponible solo con AXI3
Ráfagas
AXI es un protocolo basado en ráfagas , [11] lo que significa que puede haber múltiples transferencias de datos (o latidos) 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, seleccionados por las señales ARBURST (para lecturas) o AWBURST (para escrituras): [12]
- REPARADO
- INCR
- ENVOLTURA
En ráfagas FIJAS, cada latido dentro de la transferencia tiene la misma dirección. Esto es útil para el acceso repetido a la misma ubicación de la memoria, como al leer o escribir un FIFO .
En las ráfagas INCR, por otro lado, cada latido 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 áreas de memoria secuenciales.
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 tiempo actual alcanza el "Límite de dirección superior", se restablece al "Límite de envoltura":
con
Actas
Lee
Para iniciar una transacción de lectura, el maestro debe proporcionar en el canal de dirección de lectura:
- la dirección de inicio en ARADDR
- el tipo de ráfaga, ya sea FIXED, INCR o WRAP, en ARBURST (si está presente)
- la longitud de la ráfaga en ARLEN (si está presente).
Además, las otras señales auxiliares, si están presentes, se utilizan para definir transferencias más específicas.
Después del protocolo de enlace ARVALID / ARREADY habitual, el esclavo debe proporcionar en el canal de datos de lectura:
- los datos correspondientes a las direcciones especificadas en RDATA
- el estado de cada latido en RRESP
más cualquier otra señal opcional. Cada latido de la respuesta del esclavo se realiza con un protocolo de enlace RVALID / RREADY y, en la última transferencia, el esclavo tiene que afirmar RLAST para informar que no seguirán más latidos sin una nueva solicitud de lectura.
Escribe
Para iniciar una operación de escritura, el maestro debe proporcionar tanto la información de dirección como la de datos.
La información de la dirección se proporciona a través del canal de dirección de escritura, de manera similar a una operación de lectura:
- la dirección de inicio debe proporcionarse en AWADDR
- el tipo de ráfaga, ya sea FIXED, INCR o WRAP, en AWBURST (si está presente)
- la longitud de la ráfaga en AWLEN (si está presente)
y, si están presentes, todas las señales opcionales.
Un maestro también debe proporcionar los datos relacionados con las direcciones especificadas en el canal de datos de escritura:
- los datos en WDATA
- los bits "estroboscópicos" en WSTRB (si están presentes), que marcan condicionalmente los bytes WDATA individuales como "válidos" o "no válidos"
Al igual que en la ruta de lectura, en la última palabra de datos, el maestro debe confirmar WLAST.
Después de completar ambas transacciones, el esclavo debe enviar de vuelta al maestro el estado de la escritura a través del canal de respuesta de escritura, devolviendo el resultado a través de la señal BRESP.
AXI4-Lite
AXI4-Lite es un subconjunto del protocolo AXI4, que proporciona una estructura similar a un registro con características y complejidad reducidas. [14] Las diferencias notables son:
- todas las ráfagas están compuestas por 1 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 maestros AXI4-Lite y esclavos AXI4 sin lógica de conversión adicional. [15]
Señales
Escribir dirección de canal | Escribir canal de datos | Escribir canal de respuesta | Leer canal de dirección | Leer canal de datos |
---|---|---|---|---|
AWVALID | WVALID | BVALID | ARVALID | RVALID |
AWREADY | WREADY | PAN | ARREADY | LISTO |
AWADDR | WDATA | BRESP | ARADDR | RDATA |
AWPROT | WSTRB | ARPROT | RRESP |
[dieciséis]
Ver también
- Arquitectura de bus de microcontrolador avanzada
- Wishbone (bus de computadora)
- Maestro / esclavo (tecnología)
Referencias
- ^ "AMBA | Documentación" . Arm Holdings.
- ^ Arm Holdings. "Especificación del protocolo AMBA AXI y ACE" (PDF) . developer.arm.com . págs. 109-118 . Consultado el 5 de julio de 2019 .
- ^ Arm Holdings. "Especificación del protocolo AMBA AXI y ACE" (PDF) . developer.arm.com . págs. 23-24 . Consultado el 5 de julio de 2019 .
- ^ "Protocolo de interfaz AMBA AXI4" . www.xilinx.com . Xilinx Inc.
- ^ "AXI4 IP" . www.xilinx.com . Xilinx Inc.
- ^ Arm Holdings. "Especificación del protocolo AMBA AXI y ACE" (PDF) . developer.arm.com . págs. 37–38 . Consultado el 5 de julio de 2019 .
- ^ Arm Holdings. "Especificación del protocolo AMBA AXI y ACE" (PDF) . developer.arm.com . págs. 22-23 . Consultado el 5 de julio de 2019 .
- ^ Arm Holdings. "Especificación del protocolo AMBA AXI y ACE" (PDF) . developer.arm.com . pag. 40 . Consultado el 5 de julio de 2019 .
- ^ Arm Holdings. "Especificación del protocolo AMBA AXI y ACE" (PDF) . developer.arm.com . pag. 38 . Consultado el 5 de julio de 2019 .
- ^ Arm Holdings. "Especificación del protocolo AMBA AXI y ACE" (PDF) . developer.arm.com . págs. 28–34 . Consultado el 5 de julio de 2019 .
- ^ Arm Holdings. "Especificación del protocolo AMBA AXI y ACE" (PDF) . developer.arm.com . pag. 22 . Consultado el 5 de julio de 2019 .
- ^ Arm Holdings. "Especificación del protocolo AMBA AXI y ACE" (PDF) . developer.arm.com . págs. 45–47 . Consultado el 5 de julio de 2019 .
- ^ a b Arm Holdings. "Especificación del protocolo AMBA AXI y ACE" (PDF) . developer.arm.com . pag. 44 . Consultado el 5 de julio de 2019 .
- ^ Arm Holdings. "Especificación del protocolo AMBA AXI y ACE" (PDF) . developer.arm.com . págs. 121-128 . Consultado el 5 de julio de 2019 .
- ^ Arm Holdings. "Especificación del protocolo AMBA AXI y ACE" (PDF) . developer.arm.com . pag. 124 . Consultado el 5 de julio de 2019 .
- ^ Arm Holdings. "Especificación del protocolo AMBA AXI y ACE" (PDF) . developer.arm.com . pag. 122 . Consultado el 5 de julio de 2019 .
enlaces externos
- Página web de AMBA
- Especificación AXI4
- Introducción a ARM AXI
- Introducción a Xilinx AXI