El bus de medios entre chips serial de bajo consumo ( SLIMbus ) es una interfaz estándar entre procesadores de banda base o de aplicaciones y componentes periféricos en terminales móviles. Fue desarrollado dentro de la MIPI Alliance , fundada por ARM , Nokia , STMicroelectronics y Texas Instruments . [1] La interfaz admite muchos componentes de audio digital simultáneamente y transporta múltiples flujos de datos de audio digital a diferentes frecuencias de muestreo y anchos de bits.
SLIMbus se implementa como una estructura de trama configurable de multiplexación por división de tiempo (TDM) sincrónica de 2 cables . Tiene mecanismos de arbitraje de bus de apoyo y estructuras de mensajes que permiten reconfigurar las características operativas del bus según las necesidades de la aplicación del sistema en tiempo de ejecución. Físicamente, la línea de datos (DATA) y la línea de reloj (CLK) interconectan múltiples componentes SLIMbus en una topología de bus multipunto . Los dispositivos SLIMbus pueden "desconectarse" dinámicamente del bus y "reconectarse" al bus según sea necesario mediante el uso de protocolos apropiados descritos en la especificación SLIMbus. Cuando se utiliza en un terminal móvil o un producto portátil, SLIMbus puede reemplazar interfaces de audio digital heredadas como PCM , I 2 S , [2] y SSI (Interfaz serial sincrónica para audio digital), así como algunas instancias de muchos buses de control digital como I 2 C, [3] SPI, microWire , [4] UART o pines GPIO en los componentes de audio digital.
Las definiciones de clases de dispositivos SLIMbus son aquellas que especifican los requisitos mínimos para los datos de control de dispositivos, el comportamiento de los dispositivos y la compatibilidad con el protocolo de transporte de datos. Existen cuatro clases de dispositivos SLIMbus definidas en la versión 1.01 de la especificación SLIMbus: Manager, Framer, Interface y Generic. Se pueden implementar sistemas SLIMbus completos sin clases de dispositivos adicionales.
El dispositivo administrador es responsable de configurar SLIMbus y realiza la administración del bus (administración de componentes y dispositivos, configuración del bus y asignación dinámica de canales) y generalmente está ubicado en un procesador de banda base o de aplicación en lugar de en un componente periférico.
El Framer entrega una señal de reloj en la línea CLK a todos los componentes SLIMbus y también contiene lógica para transmitir los canales de sincronización de trama y de información de trama en la línea DATA.
El dispositivo de interfaz proporciona servicios de administración de bus, monitorea la capa física para detectar errores, informa sobre el estado de un componente SLIMbus y administra el componente de modo que los dispositivos dentro de él funcionen correctamente en el bus.
Para implementar un componente SLIMbus funcional siempre se requiere el uso de un dispositivo de interfaz SLIMbus, además de la función a realizar, como DAC, ADC, amplificador digital , etc.
Un dispositivo genérico es un dispositivo distinto de un administrador, un encuadrador o una interfaz. Por lo general, se considera que un dispositivo genérico es el dispositivo que proporciona cierta funcionalidad de la aplicación, por ejemplo, la conversión de audio digital a analógico (DAC) y viceversa (ADC).
Un componente SLIMbus contiene dos o más dispositivos SLIMbus. Un componente SLIMbus tendrá solo un dispositivo de interfaz SLIMbus (INTERFAZ) y puede tener uno o más tipos de dispositivos SLIMbus que realizan una función particular (FUNCIÓN).
Un puerto SLIMbus (P) proporciona la ruta de conexión para el flujo de datos entre dispositivos. Los puertos SLIMbus se utilizan normalmente para el flujo de datos de audio digital, pero también pueden utilizarse para otros flujos de datos digitales.
Las capacidades del puerto varían según el dispositivo y se deben especificar en la hoja de datos del componente. Los atributos típicos del puerto incluyen la dirección de los datos, es decir, solo entrada (receptor), solo salida (origen) o tanto entrada como salida, los protocolos de transporte compatibles y el ancho de los datos.
Un ejemplo simple de un componente SLIMbus se muestra en la Figura 1 a continuación, y un ejemplo complejo de un componente SLIMbus se muestra en la Figura 2 a continuación.
Todos los dispositivos SLIMbus utilizan DATA y CLK para sincronizarse con la configuración del bus en uso, para recibir o transmitir mensajes y datos, y para implementar arbitraje de bus, detección de colisiones y resolución de contención entre dispositivos.
Para todos los componentes SLIMbus (excepto uno que contenga un dispositivo Framer), el terminal CLK es de entrada únicamente. Si un componente SLIMbus es el dispositivo Framer o contiene un dispositivo Framer, la señal CLK es bidireccional.
Para todos los componentes SLIMbus, la línea de DATOS es bidireccional y transporta toda la información enviada o recibida en el bus mediante codificación NRZI ( sin retorno a cero invertido ).
La línea de DATOS se activa en el borde positivo y se lee en el borde negativo de la línea CLK. La línea de DATOS se puede activar en nivel alto, bajo o mantener en nivel alto o bajo mediante un circuito de soporte de bus interno , según el modo operativo particular de un dispositivo SLIMbus.
Las líneas DATA y CLK de la interfaz SLIMbus utilizan señales de modo de voltaje de riel a riel, con referencia a tierra y de un solo extremo, similares a las de CMOS , y los voltajes de señalización se especifican con respecto al voltaje de suministro de la interfaz (se permiten +1,8 Vdd o +1,2 Vdd). Por razones de rendimiento EMI, se han especificado límites de velocidad de respuesta para SLIMbus.
La frecuencia de la línea CLK de SLIMbus está determinada por un rango de frecuencias de reloj "raíz" de hasta 28 MHz y 10 engranajes de reloj para alterar la frecuencia de reloj en potencias de 2 en un lapso de 512x desde el engranaje más bajo al más alto. La frecuencia raíz se define como 2 (10-G) veces la frecuencia de la línea CLK. Para G=10, la frecuencia de la línea CLK y la frecuencia raíz son iguales.
El SLIMbus CLK también puede detenerse y reiniciarse.
Las frecuencias CLK de SLIMbus y los protocolos de transporte de datos admitirán todas las frecuencias de sobremuestreo de convertidores de audio digitales comunes y las frecuencias de muestreo asociadas.
La estructura del marco SLIMbus tiene cinco bloques de construcción: celdas, ranuras, marcos, submarcos y supermarcos.
Una celda se define como una región de la señal de DATOS que está delimitada por dos bordes positivos consecutivos de la línea CLK y contiene un solo bit de información.
Una ranura se define como cuatro celdas contiguas (4 bits transmitidos en orden de MSB a LSB). La asignación de ancho de banda para diversas organizaciones de datos, desde 4 bits hasta 32 bits o más, se puede realizar agrupando ranuras de 4 bits.
Una trama se define como 192 (0 a 191) ranuras contiguas y se transmiten como S0, seguido de S1, S2... S191 en ese orden. La primera ranura (ranura 0) de cada trama es una ranura de espacio de control que contiene el símbolo de sincronización de trama de cuatro (4) bits. La ranura S96 de cada trama también es una ranura de espacio de control que contiene cuatro (4) bits de información de trama.
El encuadrador activo escribe toda la información de encuadre en la línea de datos en el momento apropiado.
Una subtrama se define como la división de la estructura de trama en la que se intercalan el espacio de control y el espacio de datos . Una subtrama se divide en 1 o más espacios de espacio de control, seguidos de 0 o más espacios de espacio de datos.
Como se muestra en la Figura 4 a continuación, la longitud de la subtrama se puede programar en 6, 8, 24 o 32 ranuras contiguas (24, 32, 96 o 128 celdas). Por lo tanto, la cantidad de subtramas posibles por trama es 32, 24, 8 o 6 respectivamente. La configuración de subtrama utilizada se puede cambiar dinámicamente según los requisitos de flujo de datos de las aplicaciones admitidas en ese momento.
4 de las ranuras del espacio de control están reservadas para un símbolo de sincronización de trama, 4 bits para una palabra de información de trama y 8 bits para el byte guía. El resto está disponible para mensajes de control más generales.
Cualquier espacio no asignado al espacio de control se considera espacio de datos.
Un supermarco se define como ocho marcos contiguos (1536 espacios). Los marcos dentro de un supermarco se etiquetan como Marco 0 a Marco 7.
La duración de un superframe es fija en términos de ranuras (y, por lo tanto, celdas), pero no en términos de tiempo. La velocidad del superframe se puede cambiar dinámicamente en SLIMbus para adaptarse a la aplicación particular modificando la frecuencia raíz de SLIMbus o la velocidad de reloj, o ambas.
La información de la línea DATA de SLIMbus se asigna a los canales de Espacio de control y Espacio de datos.
El espacio de control transporta información de sincronización y configuración del bus, así como comunicación de mensajes entre dispositivos. El espacio de control puede programarse dinámicamente para utilizar la mayor cantidad de ancho de banda de SLIMbus que se requiera, incluso hasta el 100 % en ocasiones.
El espacio de datos, cuando está presente, transporta información específica de la aplicación, como flujos de datos isócronos y asincrónicos .
Los componentes de SLIMbus transmiten información de control y datos entre sí mediante canales de control y datos con protocolos de transporte para lograr el funcionamiento requerido del sistema. Los mensajes se utilizan para funciones de control.
Se pueden establecer canales entre un par de dispositivos (comunicación entre dispositivos), o entre un dispositivo y muchos dispositivos (comunicación de difusión), o en el caso del canal de mensajes, desde todos los dispositivos a todos los demás dispositivos (compartido).
El espacio de control se divide en tres tipos de canales: Encuadre, Guía y Mensaje.
El canal de encuadre ocupa las ranuras 0 y 96 de cada trama. (Dado que todas las longitudes de subtrama dividen 96, estas ranuras siempre están disponibles para este propósito). La ranura 0 contiene un símbolo de sincronización de trama fijo (1011 2 ), mientras que la ranura 96 contiene 4 bits de una palabra de información de encuadre. En el transcurso de una supertrama, hay disponibles 32 bits de información de encuadre. Algunos de estos contienen un patrón de bits fijo que se utiliza para adquirir la sincronización de la supertrama (0 x 011 xxx 2 ), mientras que los demás contienen otra información de configuración crítica.
El canal guía consta de las primeras 2 ranuras de control que no son de trama en cada supertrama. Este "byte guía" normalmente es 0, pero si un mensaje de control se extiende a lo largo de un límite de supertrama, indica la cantidad de bytes hasta el final de ese mensaje.
El canal de mensajes consta de todas las ranuras restantes y transporta diversos tipos de información, incluidos anuncios de configuración del bus, control del dispositivo y estado del dispositivo.
El formato del espacio de control se determina mediante un identificador de modo de subtrama de 5 bits transmitido en la palabra de información de trama. Esto comunica la longitud de la subtrama y el número de ranuras de control. El número de ranuras de control está limitado a las opciones de 1, 2, 3, 4, 6, 8, 12, 16 o 24. Si se agrega la limitación de que el número de ranuras de control debe ser menor que la longitud de la subtrama, se obtienen 26 combinaciones válidas. Una codificación especial para "100 % espacio de control", en cuyo caso la longitud de la subtrama no es importante, produce 27 modos válidos. (Los modos 1 a 3, 20 y 30 no son válidos).
Los canales de datos son uno o más segmentos de datos contiguos y el administrador activo los crea de forma dinámica según la aplicación y el tamaño del espacio de datos disponible. Un canal de datos y, por lo tanto, la estructura de un segmento se definen mediante parámetros como la velocidad de datos, el tipo, la longitud del campo y el protocolo de transporte requerido.
Los segmentos se repiten a intervalos conocidos y se comportan como buses virtuales con su propia garantía de ancho de banda y latencia.
Un segmento, como se muestra a continuación en la Figura 5, tiene los campos TAG (2 ranuras), AUX (2 ranuras) y DATA. Los campos TAG y AUX son opcionales. Si se utilizan, los bits TAG llevan información de control de flujo para el canal de datos, mientras que los bits auxiliares (AUX) llevan información adicional relacionada con el contenido del campo DATA. La carga útil de datos puede o no llenar todo el campo DATA asignado.
Un canal de datos tiene exactamente una fuente de datos a la vez y puede tener uno o más receptores de datos dependiendo del protocolo de transporte utilizado en el canal.
El control de flujo en el canal, si es necesario, depende de los dispositivos y del tipo de datos involucrados. Los bits TAG se utilizan para transportar la información de control de flujo.
Los puertos de dispositivos SLIMbus se asocian con canales de datos mediante mensajes de conexión y desconexión de canales adecuados. Para el flujo de datos entre puertos conectados a canales, SLIMbus admite un pequeño grupo de protocolos de transporte de uso frecuente (incluido un protocolo de transporte definido por el usuario) que definen el tipo de flujo de datos, el mecanismo de control de flujo y un canal secundario (si lo hubiera) para cualquier información adicional específica de la aplicación. En la Tabla 1 se muestra un resumen de los protocolos de transporte.
Los protocolos de usuario 1 y 2 se utilizan para ampliar los mecanismos de transmisión de datos de SLIMbus y se supone que un dispositivo conectado a un canal de datos de protocolo de usuario conoce la definición de los bits TAG y AUX y cómo se utilizan.
En la Figura 7 se muestra un sistema SLIMbus con fines ilustrativos únicamente. Todos los componentes son diferentes entre sí. Observe que el componente SLIMbus superior izquierdo de este ejemplo contiene un dispositivo Framer (F) y, por lo tanto, la señal CLK para este componente es bidireccional.
El componente SLIMbus superior izquierdo también contiene un dispositivo administrador (M). Sin embargo, no es necesario que el dispositivo administrador y el dispositivo Framer estén en el mismo componente SLIMbus.
El dispositivo administrador y/o enmarcador que se muestra en el componente SLIMbus superior izquierdo también se puede incorporar a procesadores de banda base y/o aplicaciones que normalmente se utilizan para construir terminales móviles.
La Figura 8 a continuación muestra una vista conceptual de un posible sistema SLIMbus del mundo real. La "M" y la "F" representan los dispositivos de administrador y de encuadre respectivamente. Alternativamente, la matriz de múltiples micrófonos podría reemplazar al micrófono único en el sistema. Se podría conectar cualquier combinación de bloques relacionados con el audio.
A continuación se incluye una lista parcial de información sobre los implementadores de SLIMbus: