Uno de los protocolos de bus AMBA [protocolo de bus AHB]

1 Protocolo Introducción

  Este artículo se basa principalmente en el análisis de la última especificación del protocolo AMBA 5 AHB y enumera las introducciones de simulación basadas en la experiencia de uso real.

  AMBA AHB es una interfaz de bus adecuada para un diseño integrado de alto rendimiento. Define las interfaces entre componentes como componentes maestros, componentes de interconexión y componentes esclavos.
  El AMBA AHB implementa las funciones requeridas para sistemas de alto rendimiento y alta frecuencia de reloj, que incluyen:

  • transmisión en ráfaga
  • Operación de borde de reloj único
  • Experimentos sin estado
  • El ancho de bits de datos admite 64, 128, 256, 512 y 1024.

  Los dispositivos esclavos AHB más comunes son los dispositivos de memoria interna, las interfaces de memoria externa y los periféricos de gran ancho de banda. Aunque los periféricos de bajo ancho de banda pueden actuar como esclavos AHB, por lo general residen en el bus periférico avanzado (APB) de AMBA por razones de rendimiento del sistema. El puente entre AHB y APB de alto rendimiento se realiza mediante el esclavo AHB, llamado puente APB.
   La figura 1 muestra un maestro AHB conectado con 3 esclavos AHB. La lógica de interconexión del bus incluye un módulo de decodificación de direcciones y un multiplexor de esclavo a maestro. El módulo de decodificación de direcciones convierte la dirección enviada por el maestro en una selección de señal SEL adecuada. Un dispositivo esclavo , el multiplexor selecciona razonablemente los datos de salida de cada esclavo al maestro. Tenga en cuenta que el bus AHB puede tener varios maestros.
inserte la descripción de la imagen aquí

1.1 Maestro

  Tome un maestro típico como ejemplo para introducir señales de interfaz.
inserte la descripción de la imagen aquí
INPUT信号:

  • HREADY : Lo da Slave, indicando que la transmisión está completa. La próxima transferencia está lista.
  • HRESP : Alguna información de estado adicional proporcionada por Slave, como éxito, falla, etc.
  • HRESETn : señal de reinicio global, baja efectividad, el reinicio se puede conectar directamente al reinicio del bus del sistema.
  • HCLK , : Señal de reloj global.
  • HRDATA[31:0] : Leer datos enviados por el puerto esclavo.

OUTPUT信号:

  • HADDR[31:0] : dirección de bus AHB.
  • HWRITE : señal indicadora de lectura y escritura, 1 es escritura, 0 es lectura.
  • HSIZE[2:0] : Se utiliza para indicar el tamaño de los datos de cada transferencia.
  • HBURST[2:0] : se utiliza para especificar el número de transmisiones en ráfaga y el método de incremento de dirección.
  • HPROT[3:0] : señal de control de protección, utilizada para indicar el tipo de esta transmisión.
  • HTRANS[1:0] : Se utiliza para indicar el tipo de transmisión, hay cuatro tipos en total: IDLE/BUSY/NONSEQUENTIAL/SEQUENTIAL, que son transmisión inactiva, ocupada, no secuencial y continua.
  • HMASTERLOCK : Bloquea la transmisión maestra, la maestra no puede ser interrumpida durante el período de bloqueo.
  • HWDATA[31:0] : escribe datos, el soporte máximo es de 1024 bits y se recomienda entre 32 y 256 bits.
  • HNONSEC : Indica si la transmisión actual es segura.
  • HEXCL : Se utiliza para indicar si la transferencia es una transferencia exclusiva (Exclusive Access).
  • HWSTRB : habilitación de byte de datos de escritura, el ancho de bit es el ancho de bit HWDATA dividido por 8, el máximo es 128.

1.2 esclavo

   El lado esclavo usa la señal de selección HSELx enviada desde el decodificador de direcciones para responder a la transmisión del bus.
inserte la descripción de la imagen aquí
slave端输出信号:

  • HRDATA : leer datos, el ancho máximo de bits es de 1024 bits, se recomienda entre 32 y 256 bits.
  • HREADYOUT : Señal de dispositivo esclavo listo, el uso es similar al PREADY de APB.
  • HRESP : la señal de respuesta del dispositivo final esclavo, que indica si la transmisión actual es exitosa, "1" es incorrecto.
  • HEXOKAY : Indica si la transferencia exclusiva es exitosa.

译码器信号:

  • HSELx : señal de selección de dispositivo esclavo, el uso es similar al PSEL de APB. Cuando se selecciona Esclavo y la transmisión no es INACTIVA, HSELx debe ser efectivo al mismo tiempo que las señales de dirección y control.

多路选择器信号:

  • HREADY : el bus genera esta señal internamente para notificar al Maestro y al Esclavo que la última transmisión ha finalizado y que el bus está listo para la siguiente transmisión.

2 Transferencia

2.1 Transmisión básica

AHB传输分两个阶段:地址阶段和数据阶段:

  • Etapa de dirección: HWRITE, HADDR y otras señales de control son válidas al mismo tiempo, y luego HREADY se eleva para indicar que la dirección actual ha tenido efecto.
  • Etapa de datos: HWDATA, HRDATA y otras señales relacionadas con datos son válidas, lo que indica el inicio de la lectura y escritura de datos. La etapa de datos puede abarcar varios ciclos de reloj HCLK, según el tamaño de los datos transmitidos.

HWRITE信号控制数据传输方向:

  1. HWRITE=1, significa una transferencia de escritura, el maestro escribe los datos en el bus HWDATA[31:0].
  2. HWRITE=0, significa una transferencia de lectura, el esclavo envía los datos al bus HRDATA[31:0].
  3. La siguiente figura muestra una sola transferencia de lectura y escritura en el bus AHB, incluida la lectura inmediata y la escritura inmediata.
    Transferencia de lectura:
    inserte la descripción de la imagen aquí
    Transferencia de escritura:
    inserte la descripción de la imagen aquí

  En una transferencia simple sin estados de espera:

  1. Siguiendo el flanco ascendente de HCLK, el maestro conduce las señales de dirección y control al bus.
  2. Luego, el esclavo muestrea la dirección y la información de control en el siguiente flanco ascendente de HCLK.
  3. Después de que el esclavo haya muestreado las señales de dirección y control, puede generar una respuesta READYOUT. La respuesta se muestrea en el tercer flanco ascendente de HCLK.

  Este ejemplo simple demuestra cómo las fases de dirección y datos de la transferencia ocurren durante diferentes relojes. Para cualquier transferencia, la fase de dirección ocurre antes que la fase de datos. Esta dirección y datos superpuestos son la base para la canalización del bus, lo que permite operaciones de alto rendimiento y proporciona a los esclavos tiempo suficiente para responder a las transferencias.
  Los esclavos pueden insertar estados de espera en cualquier transferencia para ganar tiempo de finalización adicional. Cada esclavo tiene una señal HREADYOUT activada durante la fase de datos de la transferencia. El conector combina las señales HREADYOUT de todos los esclavos para generar una señal HREADY de control, controlando así todo el proceso de transmisión.
  La siguiente figura muestra la inserción de transferencias de lectura y escritura en espera:
inserte dos transferencias de lectura en espera:
inserte la descripción de la imagen aquí
inserte una transferencia de escritura en espera:
inserte la descripción de la imagen aquí
Nota: la etapa de dirección y la etapa de datos se pueden canalizar, si se pueden realizar varias transferencias consecutivas, pero con direcciones used La operación se completa en la secuencia que se muestra en la siguiente figura, y los datos en A pueden iniciar la fase de dirección de B.

inserte la descripción de la imagen aquí

2.2 Tipo de transmisión

HTRANS[1:0]:
inserte la descripción de la imagen aquí
La siguiente figura muestra los tipos de transferencia NONSEQ, BUSY y SEQ.

  • T0-T1, haz una lectura de 4 tiempos desde la transmisión NONSEQ.
  • T1-T2, el maestro no puede ejecutar la segunda ráfaga e inserta una transferencia OCUPADA para retrasar la segunda ráfaga, y el lado esclavo devuelve los datos de lectura de la primera ráfaga.
  • T2-T3, el maestro está listo para iniciar la segunda operación de ráfaga, por lo que se inicia la transmisión SEQ y el maestro ignorará cualquier dato de lectura devuelto por el esclavo.
  • T3-T4, el extremo maestro ejecuta la tercera ráfaga y el extremo esclavo devuelve los datos de la segunda ráfaga.
  • T4-T5, el maestro ejecuta la última ráfaga y el extremo esclavo no puede completar la transmisión, así que use HREADYOUT para insertar un ciclo de espera.
  • T5-T6, el extremo esclavo devuelve los datos de lectura de la tercera ráfaga.
  • T6-T7, el extremo esclavo devuelve los datos leídos de la última ráfaga.

inserte la descripción de la imagen aquí

3.3 Transferencias bloqueadas

  Si el maestro necesita bloquear el acceso, también debe usar la señal HMASTLOCK. Esta señal indica a cualquier esclavo que la secuencia de transferencia actual es indivisible y, por lo tanto, debe procesarse antes de procesar otras transferencias.
  Normalmente, las transferencias bloqueadas se utilizan para mantener la integridad de la señal, lo que garantiza que el dispositivo esclavo no realice ninguna otra operación entre lecturas y escrituras. La señal HMASTLOCK se muestra en la siguiente figura
inserte la descripción de la imagen aquí
Nota: Después de una transferencia de bloqueo, se recomienda que el extremo maestro inserte una transferencia IDLE.
La mayoría de los esclavos no necesitan implementar la función HMASTLOCK, solo necesitan ejecutar las instrucciones recibidas en orden. Múltiples maestros pueden acceder al esclavo. Por ejemplo, un controlador de memoria multipuerto (MPMC) debe implementar la señal HMASTLOCK.
Y al comienzo de la transmisión de datos IDLE, el maestro también puede activar el HMASTERLOCK y bajar la señal HMASTLOCK en el estado no IDLE.

3.4 Tamaño de transferencia

  HSIZE[2:0] representa el tamaño de la transferencia de datos, la siguiente tabla enumera el tamaño de la transferencia

TAMAÑO[2:0] bits de tamaño Descripción
000 8 Byte
001 dieciséis Conviértete en la mitad
010 32 Palabra
011 64 mundo doble
100 128 línea de 4 palabras
101 256 línea de 8 palabras
110 512 -
111 1024 -

Nota:
El tamaño de la transferencia está determinado por HSIZE, que debe ser menor o igual que el ancho de bits de datos del Bus. Por ejemplo, para un ancho de bits de datos de 32 bits, HSIZE debe usar 0b000, 0b001 o 0b010. Use HSIZE combinado
con HBURST para determinar el límite de la dirección.

3.5 Opción de ráfaga

   El transporte busrt admite dos tipos, busrt incremental y envolvente.

  • Las ráfagas incrementales acceden a ubicaciones secuenciales, y la dirección de cada transferencia en la ráfaga es una dirección incremental.
  • El número de ráfagas de ráfagas envolventes está controlado por HBURST y HSIZE. Por ejemplo, para una ráfaga de 4 tiempos, la dirección de inicio de transmisión es 0x34, luego las direcciones de transmisión son 0x34, 0x38, 0x3c y 0x30.
  • La codificación de la señal de ráfaga es la siguiente:
HbURST[2:0] TIPO Descripción
000 SOLTERO ráfaga de transferencia única
001 INC Ráfaga incremental de longitud indefinida
010 ENVOLTURA4 Explosión envolvente de 4 tiempos
011 INCR4 Ráfaga creciente de 4 tiempos
100 ENVOLTURA8 Explosión envolvente de 8 tiempos
101 INCR8 Explosión incremental de 8 tiempos
110 ENVOLTURA16 Explosión envolvente de 16 tiempos
111 INCR16 Explosión incremental de 16 tiempos

Nota: Todas las transferencias de ráfaga deben ser transferencias alineadas con el borde de la dirección, por ejemplo, las transferencias de palabras deben estar alineadas con el borde de la dirección de la palabra HADDR[1:0] == 0b00.

Supongo que te gusta

Origin blog.csdn.net/sinat_43629962/article/details/127358816
Recomendado
Clasificación