ES2647147T3 - Procedimiento para minimizar el número de líneas de IRQ desde periféricos a un cable - Google Patents

Procedimiento para minimizar el número de líneas de IRQ desde periféricos a un cable Download PDF

Info

Publication number
ES2647147T3
ES2647147T3 ES14759403.0T ES14759403T ES2647147T3 ES 2647147 T3 ES2647147 T3 ES 2647147T3 ES 14759403 T ES14759403 T ES 14759403T ES 2647147 T3 ES2647147 T3 ES 2647147T3
Authority
ES
Spain
Prior art keywords
irq
bus
slave
signal
group
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES14759403.0T
Other languages
English (en)
Inventor
Shoichiro Sengoku
Richard Dominic Wietfeldt
George Alan Wiley
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2647147T3 publication Critical patent/ES2647147T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • G06F13/4226Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus with asynchronous protocol
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/22Handling requests for interconnection or transfer for access to input/output bus using successive scanning, e.g. polling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • G06F13/26Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/001In-Line Device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/002Bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)
  • Bus Control (AREA)

Abstract

Un dispositivo maestro (212), que comprende: una primera interfaz a un bus de petición de interrupción, IRQ, de línea única (326, 422), al que están acoplados uno o más dispositivos esclavos (218); una segunda interfaz a un bus de datos de control (330, 402) al que están también acoplados uno o más dispositivos esclavos; y un circuito de procesamiento acoplado a la primera interfaz y a la segunda interfaz, estando el circuito de procesamiento adaptado para: agrupar los uno o más dispositivos esclavos en uno o más grupos, donde cada grupo está asociado a una señal de IRQ diferente; supervisar el bus IRQ para determinar cuándo una señal de IRQ es activada por al menos un dispositivo esclavo; identificar un grupo al que está asociada la señal de IRQ; y recorrer los dispositivos esclavos del grupo identificado para determinar un dispositivo esclavo activador que activó la señal de IRQ en el bus IRQ.

Description

5
10
15
20
25
30
35
40
45
50
55
60
65
DESCRIPCION
Procedimiento para minimizar el número de líneas de IRQ desde periféricos a un cable CAMPO TÉCNICO
La presente divulgación se refiere a la reducción de la necesidad de líneas de petición de interrupción individuales para cada dispositivo esclavo, utilizando una única línea de petición de interrupción compartida para todos los dispositivos esclavos.
ANTECEDENTES
El bus en serie Circuito Inter-Integrado, que también puede mencionarse como el bus I2C o el bus I2C, es un bus de ordenador de extremo único en serie que fue concebido para su uso en la conexión de periféricos de baja velocidad a un procesador. El bus I2C es un bus multi-maestro en el que cada dispositivo puede servir como amo y esclavo para diferentes mensajes transmitidos en el bus I2C. El bus I2C puede transmitir datos utilizando sólo dos conectores bidireccionales de drenaje abierto, incluyendo una línea de datos en serie (SDA) y una línea de reloj en serie (SCL). Los conectores habitualmente incluyen cables de señal que están terminados por resistores de flexión.
Los protocolos que rigen las operaciones del bus I2C definen tipos básicos de mensajes, cada uno de los cuales comienza con un START (INICIO) y termina con un STOP (PARADA). El bus I2C utiliza direcciones de 7 bits y define dos tipos de nodos. Un nodo maestro es un nodo que genera el reloj e inicia la comunicación con los nodos esclavos. Un nodo esclavo es un nodo que recibe el reloj y responde cuando es aludido por el maestro. El bus I2C es un bus multi-maestro, lo que significa que puede estar presente cualquier número de nodos maestros. Además, los roles de maestro y esclavo se pueden cambiar entre mensajes (es decir, después de enviar un STOP).
Los sistemas I2C tradicionales utilizan líneas individuales de petición de interrupción (IRQ) para cada dispositivo esclavo, lo que aumenta el coste del dispositivo maestro debido al gran número de clavijas. Estas líneas de IRQ permiten que un dispositivo esclavo solicite la atención de un dispositivo maestro y/o indique al dispositivo maestro cuando desea comunicarse a través de un bus de datos.
Por lo tanto, se necesita una manera de reducir el número de las líneas de IRQ que entran en un dispositivo maestro desde una pluralidad de dispositivos esclavos.
El documento US 4586040 divulga la gestión de interrupciones agrupando los terminales mediante una sola línea de señal.
El documento US6263395 divulga una única línea de solicitud de interrupción explorada para una pluralidad de señales de IRQ.
El documento US7089338 divulga un dispositivo maestro con una entrada de interrupción única que combina las salidas de interrupción de una pluralidad de esclavos.
El documento US5530875 divulga el agrupamiento flexible de orígenes de interrupción para su priorización. RESUMEN
A continuación se ofrece un sumario simplificado de uno o más aspectos de la presente divulgación, para proporcionar un entendimiento básico de tales aspectos. Este sumario no es una visión global extensa de todas las características contempladas de la divulgación y no pretende ni identificar elementos clave o críticos de todos los aspectos de la divulgación ni delimitar el alcance de algunos o todos los aspectos de la divulgación. Su única finalidad es presentar algunos conceptos de uno o más aspectos de la divulgación de manera simplificada como un preludio de la descripción más detallada que se presenta posteriormente.
En varios aspectos, un procedimiento operativo en un dispositivo maestro incluye agrupar uno o más dispositivos esclavos acoplados a un bus IRQ de línea única compartido en uno o más grupos, supervisar el bus IRQ para determinar cuándo una señal de IRQ es activada por uno de los dispositivos esclavos, identificar un grupo con el que está asociada la señal de IRQ y recorrer los dispositivos esclavos del grupo identificado para determinar un dispositivo esclavo activador que activó la señal de IRQ en el bus IRQ. Cada grupo puede estar asociado con una señal de IRQ diferente. Cada grupo incluye al menos un dispositivo esclavo.
En un aspecto, recorrer los dispositivos esclavos incluye explorar un registro de estado de IRQ del dispositivo esclavo activador. Al dispositivo activador esclavo se puede conceder acceso para transmitir datos a través del bus de datos de control.
En un aspecto, la señal de IRQ asociada a cada grupo tiene un ancho de pulso diferente al de las señales de IRQ
5
10
15
20
25
30
35
40
45
50
55
60
65
asociadas a los otros grupos.
En un aspecto, el bus de IRQ funciona de forma asíncrona. El bus de IRQ puede estar dedicado a transmisiones de señales unidireccionales desde los dispositivos esclavos al dispositivo maestro. El bus de datos de control puede prestar soporte a la señalización bidireccional entre los dispositivos esclavos y el dispositivo maestro.
En varios aspectos, un dispositivo maestro incluye una primera interfaz con un bus IRQ de línea única al que están acoplados uno o más dispositivos esclavos, una segunda interfaz con un bus de datos de control a la que están también acoplados uno o más dispositivos esclavos y un circuito de procesamiento acoplado a la primera interfaz y a la segunda interfaz. El circuito de procesamiento puede adaptarse o configurarse para agrupar uno o más dispositivos esclavos en uno o más grupos, donde cada grupo está asociado a una señal de IRQ diferente. El circuito de procesamiento puede ser adaptado o configurado para supervisar el bus IRQ para determinar cuándo una señal de iRq es activada por al menos un dispositivo esclavo. El circuito de procesamiento puede ser adaptado o configurado para identificar un grupo al que está asociada la señal de IRQ. El circuito de procesamiento puede ser adaptado o configurado para explorar los dispositivos esclavos para el grupo identificado, para identificar un dispositivo esclavo activador que activó la señal de IRQ en el bus IRQ.
En varios aspectos, un medio de almacenamiento legible por ordenador incluye un código para agrupar uno o más dispositivos esclavos acoplados a un bus IRQ de línea única compartido, en uno o más grupos, supervisar el bus IRQ para determinar cuándo una señal de IRQ es activada por uno de los dispositivos esclavos, identificar un grupo al que está asociada la señal de IRQ y recorrer los dispositivos esclavos del grupo identificado para determinar un dispositivo esclavo activador que activó la señal de IRQ en el bus IRQ. Cada grupo puede estar asociado a una señal de IRQ diferente. Cada grupo incluye al menos un dispositivo esclavo.
En varios aspectos, un procedimiento operativo en un dispositivo esclavo incluye la obtención de una asignación de grupo desde un dispositivo maestro, la supervisión de un bus IRQ para verificar si una señal de IRQ es activada por otro dispositivo esclavo, y la activación de una primera señal de IRQ en el bus IRQ cuando ninguna otra señal de IRQ está activada en el bus IRQ. La asignación de grupo puede identificar un grupo a partir de una pluralidad de grupos. Cada grupo puede estar asociado a una señal de IRQ diferente. Cada grupo incluye al menos un dispositivo esclavo.
En un aspecto, el procedimiento incluye desactivar la primera señal de IRQ del bus IRQ, supervisar el bus IRQ para determinar si otro dispositivo está activando una segunda señal de IRQ en el bus IRQ. Si se está activando la segunda señal de IRQ, la primera señal de IRQ puede ser reactivada después de que se desactive la segunda señal de IRQ y/o que el bus IRQ se quede inactivo.
En un aspecto, el procedimiento incluye recibir una consulta de registro de estado desde el dispositivo maestro a través de un bus de datos de control, y responder con una indicación de estado en cuanto a que el dispositivo esclavo activó la señal de IRQ en el bus IRQ.
En un aspecto, el bus IRQ funciona como un bus asíncrono. El bus IRQ puede estar dedicado a transmisiones de señales unidireccionales desde dispositivos esclavos al dispositivo maestro. El bus de datos de control puede ser un bus compatible con una interfaz de control de cámara. El bus de datos de control puede ser un bus bidireccional que se despliega entre los dispositivos esclavos y el dispositivo maestro.
En varios aspectos, un dispositivo esclavo incluye una primera interfaz con un bus IRQ de una sola línea a la que está acoplado un dispositivo maestro, una segunda interfaz para controlar el bus de datos al que también está acoplado el dispositivo maestro y un circuito de procesamiento acoplado a la primera interfaz y a la segunda interfaz. El circuito de procesamiento puede ser adaptado o configurado para obtener una asignación de grupo desde un dispositivo maestro, supervisar el bus IRQ para determinar si una señal de IRQ es activada por otro dispositivo esclavo y activar una señal de IRQ en el bus IRQ cuando ninguna otra señal de IRQ está activada en el bus IRQ. La asignación de grupo puede identificar un grupo a partir de una pluralidad de grupos. Cada grupo puede estar asociado a una señal de IRQ diferente.
En varios aspectos, un medio de almacenamiento legible por ordenador incluye código para obtener una asignación de grupo desde un dispositivo maestro, supervisar un bus IRQ para determinar si una señal de IRQ es activada por otro dispositivo esclavo y activar una primera señal de IRQ en el bus IRQ cuando ninguna otra señal de IRQ está activada en el bus IRQ. La asignación de grupo puede identificar un grupo a partir de una pluralidad de grupos. Cada grupo puede estar asociado a una señal de iRq diferente. Cada grupo incluye al menos un dispositivo esclavo.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
Diversas características, la naturaleza y las ventajas pueden resultar evidentes a partir de la descripción detallada expuesta a continuación cuando se considera conjuntamente con los dibujos, en los que los mismos caracteres de referencia identifican de manera correspondiente en toda su extensión.
5
10
15
20
25
30
35
40
45
50
55
60
65
La FIG. 1 representa un aparato que emplea un enlace de datos entre dispositivos de circuitos integrados, que funciona selectivamente de acuerdo a una entre una pluralidad de normas disponibles.
La FIG. 2 es un diagrama de bloques que ilustra un dispositivo que tiene un procesador de banda base y un sensor de imagen y que implementa un bus de datos de imagen y un bus de datos de control.
La FIG. 3 es un diagrama que ilustra una arquitectura de sistema simplificada para un aparato que emplea un enlace de datos entre dispositivos de IC de acuerdo a ciertos aspectos divulgados en la presente memoria.
La FIG. 4 es un diagrama de bloques que ilustra cómo un bus IRQ de un solo cable puede ser compartido por una pluralidad de dispositivos esclavos y uno o más dispositivos maestros, de acuerdo a ciertos aspectos divulgados en la presente memoria.
La FIG. 5 ilustra ejemplos de diferentes señales de IRQ que pueden ser asignadas o asociadas a diferentes grupos de acuerdo a ciertos aspectos divulgados en la presente memoria.
La FIG. 6 ilustra la supervisión para señales de IRQ y la identificación de un dispositivo esclavo activador de IRQ mediante un dispositivo maestro, de acuerdo a ciertos aspectos divulgados en la presente memoria.
La FIG. 7 ilustra una primera técnica que puede evitar activaciones simultáneas de IRQ en un bus IRQ de línea única compartido, de acuerdo a ciertos aspectos divulgados en la presente memoria.
La FIG. 8 ilustra una segunda técnica que puede gestionar activaciones simultáneas de IRQ en un bus de IRQ de línea única compartido, de acuerdo a ciertos aspectos divulgados en la presente memoria.
La FIG. 9 ilustra la temporización asociada a una longitud de la señal de IRQ más corta.
La FIG. 10 es un diagrama de bloques que ilustra un ejemplo de un aparato que emplea un circuito de procesamiento que puede adaptarse de acuerdo a ciertos aspectos divulgados en la presente memoria.
La FIG. 11 es un diagrama de flujo de un primer ejemplo de un procedimiento para activar una IRQ en un bus de IRQ compartido, de acuerdo a ciertos aspectos divulgados en la presente memoria.
La FIG. 12 es un diagrama de flujo de un primer ejemplo de un procedimiento para gestionar las IRQ en un bus de IRQ compartido, de acuerdo a ciertos aspectos divulgados en la presente memoria.
La FIG. 13 es un diagrama de flujo de un procedimiento para recorrer un grupo de dispositivos esclavos para identificar un dispositivo que activó una IRQ en un bus IRQ compartido, de acuerdo a ciertos aspectos divulgados en la presente memoria.
La FIG. La figura 14 es un diagrama de flujo de un segundo ejemplo de un procedimiento para gestionar las IRQ en un bus IRQ compartido, de acuerdo a ciertos aspectos divulgados en la presente memoria.
La FIG. 15 es un diagrama que ilustra un ejemplo de una implementación de hardware de un aparato adaptado para gestionar las IRQ en un bus IRQ compartido.
La FIG. 16 es un diagrama de flujo de un segundo ejemplo de un procedimiento para activar las IRQ en un bus IRQ compartido, de acuerdo a ciertos aspectos divulgados en la presente memoria.
La FIG. 17 es un diagrama que ilustra un ejemplo de una implementación en hardware de un aparato adaptado para activar las IRQ en un bus IRQ compartido.
DESCRIPCIÓN DETALLADA
En la siguiente descripción, se dan detalles específicos para proporcionar una comprensión exhaustiva de los modos de realización. Sin embargo, alguien medianamente experto en la técnica entenderá que pueden llevarse a la práctica los modos de realización sin estos detalles específicos. Por ejemplo, pueden mostrarse circuitos en diagramas de bloques para no oscurecer los modos de realización con detalles innecesarios. En otros casos, pueden no mostrarse en detalle circuitos, estructuras y técnicas bien conocidos para no oscurecer los modos de realización.
Ciertas realizaciones divulgadas en la presente memoria proporcionan sistemas, procedimientos y aparatos que pueden mejorar el rendimiento de una interfaz de comunicaciones usando un bus en serie que presta soporte tanto a operaciones convencionales de bus I2C como a interfaces de comunicación mejoradas, usando un bus I2C común. En un ejemplo, una interfaz de control de cámara (CCI) puede basarse en un bus I2C y puede ser desplegada usando una interfaz en serie de dos cables, bidireccional, semi-dúplex, configurada como un bus que conecta un
5
10
15
20
25
30
35
40
45
50
55
60
65
amo y uno o más esclavos. Las operaciones de la CCI pueden ser compatibles con las operaciones del bus I2C. Según ciertos aspectos, se proporcionan sistemas, aparatos y procedimientos que minimizan el número de líneas de IRQ necesarias para prestar soporte a múltiples dispositivos periféricos conectados a un bus I2C o CCI. En algunos casos, una sola línea de IRQ puede gestionar solicitudes de interrupción desde todos los periféricos conectados al bus I2C o CCI. En un ejemplo divulgado en la presente memoria, los dispositivos de extensión de CCI (CCIe) pueden desplegarse utilizando el bus I2C para proporcionar una interfaz en serie de dos cables, bidireccional, semi- dúplex, que puede funcionar a velocidades de datos que son significativamente mayores que las velocidades de datos obtenidas usando las modalidades de funcionamiento de I2C o CCI. En este último ejemplo, una única línea de IRQ puede gestionar peticiones de interrupción desde periféricos de I2C, CCI o CCIe conectados al bus.
Panorama general
Tal y como se utilizan en esta solicitud, los términos "componente", "módulo", "sistema" y similares pretenden incluir una entidad relacionada con la informática, tal como, pero sin limitarse a, el hardware, el firmware, una combinación de hardware y software, el software o el software en ejecución. Por ejemplo, un componente puede ser, pero no se limita a ser, un proceso que se ejecuta en un procesador, un procesador, un objeto, un módulo ejecutable, un hilo de ejecución, un programa y/o un ordenador. A modo de ilustración, tanto una aplicación que se ejecuta en un dispositivo informático como el dispositivo informático pueden ser un componente. Uno o más componentes pueden residir dentro de un proceso y/o hilo de ejecución, y un componente puede estar localizado en un ordenador y/o estar distribuido entre dos o más ordenadores. Además, estos componentes pueden ejecutarse desde diversos medios legibles por un ordenador que tengan diversas estructuras de datos almacenadas en los mismos. Los componentes pueden comunicarse mediante procesos locales y/o remotos, tales como de acuerdo a una señal que tenga uno o más paquetes de datos, tales como datos de un componente que interactúa con otro componente en un sistema local, un sistema distribuido y/o a través de una red, tal como Internet, con otros sistemas por medio de la señal.
Además, el término "o" está concebido para significar un "o" inclusivo en lugar de un "o" exclusivo. Es decir, a no ser que se indique lo contrario, o que sea claro a partir del contexto, la frase "X emplea A o B" está concebida para significar cualquiera de las permutaciones inclusivas naturales. Es decir, la frase "X emplea A o B" se satisface en cualquiera de los siguientes casos: X emplea A; X emplea B; o X emplea tanto A como B. Además, los artículos "un" y "uno", según se utilizan en esta solicitud y en las reivindicaciones adjuntas, deberían ser interpretados en general con el significado de "uno o más", a no ser que se especifique lo contrario, o que sea claro a partir del contexto que se orientan a una forma singular.
Algunos aspectos de la invención pueden ser aplicables a los enlaces de comunicaciones desplegados entre dispositivos electrónicos que pueden incluir subcomponentes de un aparato tal como un teléfono, un dispositivo informático móvil, un artefacto, electrónica del automóvil, sistemas de aviónica, etc. La FIG. 1 representa un aparato que puede emplear un enlace de comunicación entre dispositivos de circuitos integrados (IC). En un ejemplo, el aparato 100 puede incluir un dispositivo de comunicación inalámbrica que comunica a través de un transceptor de RF con una red de acceso radioeléctrico (RAN), una red de acceso central, Internet y / u otra red. El aparato 100 puede incluir un transceptor de comunicaciones 106 acoplado de manera operativa al circuito de procesamiento 102. El circuito de procesamiento 102 puede tener uno o más dispositivos de IC, tales como un IC específico de la aplicación (ASIC) 108. El ASIC 108 puede incluir uno o más dispositivos de procesamiento, circuitos lógicos, etc. El circuito de procesamiento 102 puede incluir y/o acoplarse a un almacenamiento legible por procesador tal como una memoria 112 que puede mantener instrucciones y datos que pueden ser ejecutados por el circuito de procesamiento 102. El circuito de procesamiento 102 puede ser controlado por uno o más entre un sistema operativo y una capa de interfaz de programación de aplicaciones (API) 110 que da soporte y permite la ejecución de módulos de software que residen en medios de almacenamiento, tales como el dispositivo de memoria 112 del dispositivo inalámbrico. El dispositivo de memoria 112 puede incluir memoria de sólo lectura (ROM) o memoria de acceso aleatorio (RAM), ROM programable borrable eléctricamente (EEPROM), tarjetas de memoria flash o cualquier dispositivo de memoria que pueda usarse en sistemas de procesamiento y plataformas informáticas. El circuito de procesamiento 102 puede incluir o acceder a una base de datos local 114 que puede mantener parámetros operativos y otra información utilizada para configurar y operar el aparato 100. La base de datos local 114 puede implementarse utilizando uno o más entre un módulo de base de datos, memoria flash, medios magnéticos, EEPROM, medios ópticos, cinta, disco flexible o rígido, o similares. El circuito de procesamiento también puede estar acoplado operativamente a dispositivos externos tales como una antena 122, un visor 124, controles de operador, tales como un botón 128 y/o un panel de teclas 126, entre otros componentes.
Un primer ejemplo que ilustra un procedimiento para reducir líneas de IRQ
La FIG. 2 es un diagrama de bloques 200 que ilustra un ejemplo simplificado de un dispositivo 202 que tiene un procesador de banda base 204 y un sensor de imagen 206. Un bus de datos de imagen 216 y un bus de datos de control de modalidades múltiples 208 pueden implementarse en el dispositivo 202. El diagrama 200 ilustra un dispositivo de cámara 202 a modo de ejemplo solamente, y varios otros dispositivos y/o diferentes funcionalidades pueden implementar, operar y/o comunicarse utilizando el bus de datos de control 208. En el ejemplo representado, los datos de imagen pueden ser enviados desde el sensor de imagen 206 al procesador de banda base 204 por un
5
10
15
20
25
30
35
40
45
50
55
60
65
bus de datos de imagen 216, tal como el enlace diferencial de alta velocidad "DPHY" definido por MIPI. En un ejemplo, el bus de datos de control 208 puede tener dos cables que son configurables para el funcionamiento en una modalidad de bus I2C. Por consiguiente, el bus de datos de control 208 puede incluir cables de SCL y SDA. La SCL puede llevar una señal de reloj que puede utilizarse para sincronizar las transferencias de datos por el bus de datos de control 208 de acuerdo a los protocolos I2C. La línea de datos SDA y la línea de reloj SCL pueden acoplarse a múltiples dispositivos 212, 214 y 218 en el bus I2C (bus de datos de control 208). En el ejemplo, los datos de control pueden ser intercambiados entre el procesador de banda base 204 y el sensor de imagen 206, así como otros dispositivos periféricos 218, mediante el bus de datos de control 208. Según los protocolos I2C, las velocidades de reloj en el cable de SCL pueden ser de hasta 100 KHz para el funcionamiento de I2C normal, de hasta 400 KHz para la modalidad rápida de I2C y de hasta 1 MHz para la modalidad rápido plus de I2C (Fm +). Estas modalidades de funcionamiento por un bus I2C pueden denominarse modalidad CCI cuando se utilizan para aplicaciones de cámara.
En algunos casos, dos o más dispositivos esclavos 214 o 218a pueden solicitar la atención del procesador de banda base 204 al activar un nivel lógico predefinido en una correspondiente línea de IRQ 220 o 222.
Ejemplo ilustrativo de ciertos aspectos de un dispositivo adaptado para operaciones de CCIe
La FIG. 3 es un diagrama esquemático de bloques que ilustra ciertos aspectos de un aparato 300 que puede emplear un bus de comunicaciones tal como un bus de CCIe 330. El aparato 300 puede estar realizado en uno o más entre un dispositivo móvil inalámbrico, un teléfono móvil, un sistema informático móvil, un teléfono inalámbrico, un ordenador portátil, un dispositivo informático de tableta, un reproductor de medios, un dispositivo de juegos o similares. El aparato 300 puede incluir múltiples dispositivos 302, 320 y/o 322a a 322n, que se comunican usando un bus de CCIe 330. El bus de CCIe 330 puede extender las capacidades de un bus de CCI convencional para dispositivos que están configurados para características mejoradas con soporte del bus de CCIe 330. Por ejemplo, el bus de CCIe 330 puede dar soporte a una velocidad de bits mayor que un bus de CCI 330. De acuerdo a ciertos aspectos divulgados en la presente memoria, algunas versiones del bus de CCIe 330 pueden configurarse o adaptarse para dar soporte a velocidades de bits de 16,7 Mbps o más y algunas versiones del bus de CCIe pueden configurarse o adaptarse para dar soporte a velocidades de datos de al menos 23 megabits por segundo.
En el ejemplo ilustrado en la FIG. 3, un dispositivo de formación de imágenes 302 está configurado para funcionar como un dispositivo esclavo en el bus de CCIe 330. El dispositivo de formación de imágenes 302 puede estar adaptado para proporcionar una función de control de sensor 304 que gestiona un sensor de imagen, por ejemplo. Además, el dispositivo de formación de imágenes 302 puede incluir registros de configuración 306 y / u otros dispositivos de almacenamiento 324, un circuito de procesamiento y/o lógica de control 312, un transceptor 310 y controladores / receptores de línea 314a y 314b. El circuito de procesamiento y/o la lógica de control 312 pueden incluir un procesador tal como una máquina de estados, un secuenciador, un procesador de señales o un procesador de uso general. El transceptor 310 puede incluir un receptor 310a, un transmisor 310c y ciertos circuitos comunes 310b, que incluyen circuitos y/o dispositivos de temporización, lógicos y de almacenamiento. En algunos casos, el transceptor 310 puede incluir codificadores y decodificadores, circuitos de recuperación de reloj y datos, y similares.
Se puede proporcionar una señal de reloj de transmisión (TXCLK) 328 al transmisor 310c, donde la señal TXCLK 328 puede usarse para determinar velocidades de transmisión de datos para una modalidad de comunicación de CCIe. La señal de TXCLK 328 puede estar integrada dentro de secuencias de símbolos transmitidos en el bus de CCIe 330, cuando tanto el cable de SDA 318 como el cable de SCL 316 se utilizan para codificar datos transmitidos. En un ejemplo, la señal TXCLK 328 puede ser integrada usando la transcodificación de reloj de transición, por lo que los datos a transmitir por el enlace físico 330 se transcodifican de tal manera que se produce un cambio de estado de al menos un cable 316 y/o 318 entre cada par de símbolos transmitidos en el bus de CCIe 330.
En un ejemplo divulgado en la presente memoria, los dispositivos de CCIe 302, 320 y/o 322a a 322n pueden acoplarse a un bus IRQ 326 que tiene un solo cable. Los dispositivos de CCIe 302, 320 y/o 322a a 322n pueden comunicarse utilizando los dos cables 316, 318 de un bus de datos de control 330. Por ejemplo, el bus de datos de control 330 de dos hilos puede dar soporte a modalidades de comunicación bidireccionales y semi-dúplex de CCIe que pueden proporcionar velocidades de datos significativamente mayores que las velocidades de datos con soporte de las modalidades de funcionamiento de I2C o CCI. Los dispositivos de CCIe 302, 320 y/o 322a-322n pueden transmitir datos tanto en el cable de SCL 316 como en el cable de SDA 318 del bus de datos de control 330, con información de reloj integrada en una secuencia de símbolos transmitidos por el bus de datos de control de dos cables 330. Ciertos dispositivos de CCIe 320 pueden configurarse como un amo de bus, y ciertos dispositivos 302 y/o 322a a-322n pueden configurarse como dispositivos esclavos. Los dispositivos de CCIe 302, 320 y/o 322a a 322n pueden ser compatibles con, o coexistir con, dispositivos I2C y/o de CCI acoplados al bus de datos de control 330, de manera que un dispositivo de CCIe 302, 320 o 322a a 322n pueda comunicarse con uno o más dispositivos de CCIe 302, 320 y/o 322a a 322n usando protocolos de CCIe y especificaciones de señalización, incluso cuando los dispositivos I2C están supervisando el bus de datos de control 330. Un ejemplo divulgado en la presente memoria proporciona una interfaz que puede gestionar múltiples esclavos 302 y/o 322a a 322n acoplados al bus, con un único dispositivo maestro 320, cuando tanto dispositivos de CCIe como de I2C / CCI se despliegan en el mismo bus. En el último ejemplo, dos o más dispositivos de CCIe 302, 320 y/o 322a a 322n pueden comunicarse
5
10
15
20
25
30
35
40
45
50
55
60
65
utilizando protocolos de CCIe y cualquier transacción de comunicación con un dispositivo I2C o de CCI se lleva a cabo de acuerdo a los protocolos de bus I2C.
Ejemplo ilustrativo del uso de un bus IRQ común
La FIG. 4 es un diagrama de bloques 400 que ilustra un ejemplo en el que uno o más dispositivos esclavos 410, 412, 414, 418, 418 pueden solicitar la atención de un amo de bus 404 activando un nivel lógico predefinido en un bus IRQ de línea única común o compartido 422. Un bus IRQ 420 de un solo cable puede ser compartido por una pluralidad de dispositivos esclavos 410, 412, 414, 416, 418, que pueden incluir dispositivos I2C, de CCI y/o CCIe. En el ejemplo representado, cada uno de los dispositivos esclavos 410, 412, 414, 416, 418 puede adaptarse para dar soporte a modalidades de comunicación de CCIe, y el dispositivo amo de bus 404 está adaptado para servir como un amo de bus en modalidades de funcionamiento I2C, de CCI y CCIe.
Según un aspecto, un bus IRQ 422 de una única línea compartida está acoplado a los dispositivos esclavos 410, 412, 414, 416, 418 al dispositivo maestro 404. Una resistencia de flexión 420 puede acoplarse al cable del bus IRQ 422 para definir el estado de señalización del bus IRQ 422 cuando ninguno de los dispositivos esclavos 410, 412, 414, 416, 418 está activando una petición de interrupción. En un ejemplo, los dispositivos esclavos 410, 412, 414, 416, 418 pueden accionar el bus IRQ 422 a la baja para interrumpir o solicitar una interrupción del dispositivo maestro 404. Es decir, cada dispositivo esclavo 410, 412, 414, 416 y 418 puede activar independientemente una solicitud de interrupción accionando la señal de IRQ para solicitar atención del dispositivo maestro 404.
El bus IRQ 422 de un solo cable común compartido puede ser compartido por una pluralidad de dispositivos esclavos 410, 412, 414, 416, 418, configurando cada uno de los dispositivos esclavos 410, 412, 414, 416, 418 para proporcionar una indicación de la identidad de uno o más dispositivos esclavos 410, 412, 414, 416 y/o 418 que han activado una solicitud de interrupción. En algunos casos, dos o más de los dispositivos esclavos 410, 412, 414, 416, 418 pueden competir por la atención del dispositivo maestro 404, y la indicación de la identidad de estos dispositivos esclavos en competición 410, 412, 414, 416, y/o 418 puede usarse para determinar qué solicitud de atención del dispositivo maestro 404 ha de concederse. En un ejemplo, cada dispositivo esclavo 410, 412, 414, 416, 418 puede configurarse para activar una petición de interrupción accionando el bus IRQ 422 durante un periodo de tiempo que tiene una longitud correspondiente a la identidad del dispositivo 410, 412, 414, 416 o 418 que acciona el bus IRQ 422. En algunos casos, la longitud de un pulso utilizado para accionar el bus IRQ 422 puede identificar un grupo 406, 408 de los dispositivos esclavos 410, 412, 414, 416, 418 que incluye un dispositivo esclavo 410, 412, 414, 416, 418 que está compitiendo por la atención del dispositivo maestro 404. Cada dispositivo esclavo 410, 412, 414, 416 o 418 puede configurarse para generar un pulso que tiene una anchura definida y/o asignada a un grupo 406, 408 al que pertenece el dispositivo esclavo 410, 412, 414, 416 o 418. Por ejemplo, los dispositivos esclavos 410 y 412 en un primer grupo 406 pueden estar configurados para generar un pulso en el bus IRQ 422 de un solo cable compartido, que tiene una duración diferente a la duración de un pulso generado por los dispositivos esclavos 414 y 416 en un segundo grupo 408. Cada grupo 406 y 408 incluye al menos un dispositivo esclavo.
La duración de una activación del bus IRQ 422 puede determinar si a un dispositivo esclavo solicitante 410, 412, 414, 416 o 418 se concede la atención del dispositivo maestro 404. En un ejemplo, un esquema de priorización puede asignar anchos de pulsos más largos a los dispositivos esclavos de prioridad más alta 410, 412, 414, 416, 418 y anchos de pulsos más cortos a los dispositivos esclavos de prioridad más baja 410, 412, 414, 416, 418. En funcionamiento, un primer dispositivo esclavo 410, 412, 414, 416 o 418 puede activar una petición de interrupción proporcionando un pulso en el bus IRQ 422. Un segundo dispositivo esclavo 410, 412, 414, 416 o 418 de mayor prioridad puede activar una solicitud de interrupción proporcionando un pulso en el bus IRQ 422 que tiene un ancho más largo que el ancho del pulso proporcionado por el primer dispositivo esclavo 410, 412, 414, 416 o 418. Cuando se ha activado el bus IRQ 422, el dispositivo maestro 404 puede utilizar la duración de la activación del bus IRQ 422 para identificar el grupo de prioridad más alta 406 o 408 que incluye un dispositivo esclavo activador 410, 412, 414, 416 y/o el dispositivo esclavo de prioridad más alta 410, 412, 414, 416 o 418 que está activando el bus IRQ 422. El dispositivo maestro puede entonces utilizar la señalización en el bus de datos de control 402 para explorar un registro de estado de IRQ, en uno o más dispositivos esclavos 410, 412, 414, 416, 418, al que se ha asignado el ancho de pulso que se observó en el bus IRQ 422.
En algunos casos, un primer dispositivo esclavo 410, 412, 414, 416 o 418 puede ceder ante un segundo dispositivo esclavo 410, 412, 414, 416 o 418 cuando el bus IRQ 422 continúa siendo accionado activamente después de la terminación del pulso proporcionado por el primer dispositivo esclavo 410, 412, 414, 416 o 418, lo que indica que al menos el segundo dispositivo esclavo, de prioridad más alta, 410, 412, 414, 416 o 418 también está solicitando la atención del dispositivo maestro 404 accionando el bus IRQ 422 con un ancho de pulso más largo. En tales circunstancias, el primer dispositivo esclavo 410, 412, 414, 416 o 418 puede volver a una modalidad inactiva o durmiente hasta que surja una oportunidad siguiente para competir por el bus de datos de control 402.
En algunos casos, el bus IRQ de cable único 422 puede ser compartido por los dispositivos esclavos 410, 412, 414, 416, 418 y uno o más dispositivos maestros 404. En este ejemplo, los dispositivos esclavos 410, 412, 414, 416, 418 pueden estar agrupados lógicamente. Por ejemplo, un primer grupo 406 puede incluir una primera pluralidad de dispositivos esclavos 410 y 412, y un segundo grupo 408 puede incluir una segunda pluralidad de dispositivos
5
10
15
20
25
30
35
40
45
50
55
60
65
esclavos 414 y 416. Dichos agolpamientos pueden estar, por ejemplo, preconfigurados, definidos dinámicamente y/o definidos por enumeración por el dispositivo maestro 404 en la inicialización. El uso de los grupos 406, 408 puede permitir que el dispositivo maestro 404 identifique más rápidamente uno o más dispositivos esclavos 410, 412, 414, 416 y/o 418 que activan una petición de interrupción accionando el bus IRQ 422.
En algunos casos, el bus de IRQ de línea única puede funcionar asincrónicamente, sin la gestión de un dispositivo maestro 404 u otro dispositivo. En el funcionamiento asíncrono, un dispositivo esclavo 410, 412, 414, 416 o 418 puede accionar unilateralmente el bus IRQ 422 en cualquier momento. En algunos casos, los dispositivos esclavos 410, 412, 414, 416, 418 pueden confirmar que el bus IRQ 422 está inactivo (es decir, no accionado por otro dispositivo) antes de activar una petición de interrupción.
En algunos casos, el bus IRQ de línea única 422 puede estar dedicado a transmisiones de señales unidireccionales desde dispositivos esclavos 410, 412, 414, 416, 418 al dispositivo maestro 404. Es decir, el bus IRQ 422 puede reservarse para la señalización de peticiones de interrupción y otros tipos de señales no disponen de soporte en el bus IRQ 422.
Los grupos 406, 408 de los dispositivos esclavos 410, 412, 414, 416 pueden configurarse para utilizar una señal de IRQ distinta. En un ejemplo, un primer grupo 406 puede usar una primera señal que tiene un primer periodo, un segundo grupo 408 puede usar una segunda señal que tiene un segundo periodo, y así sucesivamente. En algunos casos, un dispositivo esclavo 418 que no está agrupado con otro dispositivo esclavo puede tratarse como un grupo de un dispositivo y puede asignarse para utilizar una tercera señal que tiene un tercer período. El periodo de una señal de IRQ puede definirse como el lapso durante el cual el bus IRQ 420 es accionado (por ejemplo, accionado a la baja) por el dispositivo esclavo activador 410, 412, 414, 416 o 418. También pueden usarse otras formas de diferenciación de señales. Por ejemplo, pueden asignarse diferentes niveles de tensión de la señal de IRQ a diferentes grupos 406, 408 de dispositivos esclavos 410, 412, 414, 416 y/o a un dispositivo esclavo 418 que no está asignado a un grupo o está tratado de otro modo como el miembro único de un grupo.
En algunos casos, un grupo 406, 408 puede definir un grupo lógico de dispositivos esclavos 410, 412, 414, 416, 418, de manera que cada grupo 406, 408 pueda incluir al menos un dispositivo esclavo 410, 412, 414, 416, 418. Un grupo 406, 408 puede incluir múltiples dispositivos esclavos 410, 412, 414, 418. El número de dispositivos esclavos 410, 412, 414, 416, 418 asignados a cada grupo 406, 408 se puede determinar basándose en factores tales como la duración del tiempo para consultar e identificar cada dispositivo esclavo activador potencial 410, 412, 414, 416, 418 en el grupo 406, 408. Por ejemplo, puede resultar un retraso inaceptablemente largo cuando todos los dispositivos esclavos 410, 412, 414, 416, 418 acoplados al bus IRQ 422 son consultados por el dispositivo maestro 404.
El tiempo para identificar un dispositivo esclavo activador 410, 412, 414, 416, 418 puede reducirse significativamente mediante el uso de distintas señales de IRQ para identificar un grupo 406, 408 en el que un dispositivo esclavo 410, 412, 414, 416, 418 ha activado una IRQ, y consultando luego cada dispositivo esclavo miembro 410, 412, 414, 416, 418 en el grupo identificado 406 o 408. El dispositivo maestro 404 puede detectar la aparición de una activación del bus IRQ 422, y el dispositivo maestro 404 puede determinar la duración de la activación. Basándose en la duración determinada de la activación de la IRQ, el dispositivo maestro 404 puede identificar un grupo 406 o 408 correspondiente a una duración de la longitud observada por el dispositivo maestro 404. El dispositivo maestro 404 puede entonces consultar cada dispositivo esclavo 410, 412, 414, 416, 418 en el grupo 406, 408 para identificar qué dispositivo esclavo disparó o activó la señal de IRQ. En un ejemplo, el dispositivo maestro 404 puede determinar que una activación de IRQ se originó a partir de un primer grupo 406. El dispositivo maestro 404 puede transmitir una petición o comando por el bus de datos de control 402 a un primer dispositivo esclavo 410 o 412. El dispositivo maestro 404 puede transmitir una solicitud de estado de registro, por ejemplo. En respuesta, el primer dispositivo esclavo 410 o 412 puede transmitir información de estado al dispositivo maestro 404. Si la información de estado indica que el primer dispositivo esclavo 410 o 412 no es el origen de la petición de IRQ, el dispositivo maestro 404 puede transmitir una petición de estado de registro por el bus de datos de control 402 a un segundo dispositivo esclavo 412 o 410 en el primer grupo 406. Este proceso puede repetirse para todos los dispositivos esclavos 410, 412 en el primer grupo 406 hasta que se identifique un dispositivo esclavo 410, 412 que activó la señal de IRQ.
La FIG. 5 es un diagrama de temporización 500 que ilustra ejemplos de temporización de señales de IRQ 502, 504, 506, utilizadas por diferentes grupos 406, 408, 514, respectivamente. Se puede asignar o asociar diferente temporización de señales de IRQ a cada grupo diferente 406, 408, 514, y/o la temporización de señales de IRQ de los dispositivos esclavos miembros 410, 412, 414, 416, 418 de cada grupo 406, 408 o 514 puede basarse en, u obtenerse de, la señal de IRQ asignada o asociada al correspondiente grupo 406, 408, 514. Cada grupo 406, 408, 514 puede incluir uno solo de los dispositivos esclavos miembros 410, 412, 414, 416, 418 o una pluralidad de los dispositivos esclavos miembro 410, 412, 414, 416, 418. Un primer grupo 406 puede utilizar una señal de IRQ 502 que tiene un primer ancho de pulso 508, un segundo grupo 408 puede utilizar una señal de IRQ 504 que tiene un segundo ancho de pulso 510 y un n-ésimo grupo 506 puede configurarse para usar una tercera señal de IRQ 506 que tiene un tercer ancho de pulso 512.
La FIG. 6 ilustra el funcionamiento de un bus IRQ compartido 422 desde la perspectiva de un dispositivo maestro 404 de bus. El ejemplo puede aplicarse a la temporización 612 de operaciones en un bus de datos de control 402
5
10
15
20
25
30
35
40
45
50
55
60
65
que se opera de acuerdo a los protocolos I2C, de CCI y/o CCIe. El dispositivo maestro de bus 404 puede supervisar la temporización 602 de señales en el bus IRQ 422 para determinar si se ha activado una solicitud de interrupción. El dispositivo maestro de bus 404 puede identificar el dispositivo esclavo que activa la petición de interrupción basándose en la duración 604, 606 de un pulso 608, 610 en el bus IRQ 422.
En el ejemplo, los grupos 406, 408 de dispositivos esclavos pueden estar configurados para accionar el bus IRQ 422 durante periodos de tiempo predefinidos 604, 606. Por consiguiente, el dispositivo maestro de bus 404 puede supervisar el bus IRQ 422 con respecto a los pulsos 608 y 610, y puede medir o temporizar las duraciones 604, 606 de cualquier pulso detectado 608, 610. En un ejemplo, el dispositivo maestro de bus 404 puede incluir un temporizador o contador que se inicia al detectar una transición 620, 622 al comienzo del pulso 608, 610. El valor del temporizador o del contador después de la terminación del pulso 608, 610 puede entonces compararse con las duraciones predefinidas asociadas a cada grupo 406, 408.
En el ejemplo, el bus de control de datos 402 puede estar inactivo durante un primer periodo de tiempo 614, antes de que sea recibido un primer pulso 608. Cuando se activa una primera señal de IRQ en el bus IRQ de línea única compartida 422, el dispositivo maestro de bus 404 detecta que el bus IRQ se ha accionado a la baja y determina el periodo, ancho o duración 604 del pulso. Por ejemplo, el dispositivo maestro de bus 404 puede determinar que la duración 604 del primer pulso 608 es congruente con una petición de interrupción de un miembro de un primer grupo de dispositivos 406 al terminar el primer pulso 608. El dispositivo maestro de bus 404 puede iniciar un recorrido 616 de los miembros del primer grupo de dispositivos 406 para determinar su estado de IRQ e identificar qué miembro o miembros del primer grupo 406 han activado la petición de IRQ 608. En un ejemplo, el dispositivo maestro de bus 404 puede transmitir comandos y/o solicitudes por el bus de datos de control 402 a cada miembro del primer grupo 406, que hacen que el destinatario de cada solicitud responda con el estado de IRQ. El dispositivo maestro de bus 404 puede intercambiar datos, control y otra información con el miembro interruptor identificado del primer grupo 406.
Un segundo pulso de petición de interrupción 610 puede recibirse en algún momento después del primer pulso de petición de interrupción 608. El segundo pulso de petición de interrupción 610 puede tener una duración 606 que corresponde a un segundo grupo de dispositivos esclavos 408. Al recibir el segundo pulso de petición de interrupción 610, el dispositivo maestro de bus 404 puede detectar, determinar o calcular el ancho, el periodo o la duración del pulso 606. El dispositivo maestro de bus 404 puede iniciar entonces una exploración 618 de los miembros del segundo grupo de dispositivos 409 para determinar su estado de IRQ e identificar qué miembro o miembros del segundo grupo 408 han activado la petición de IRQ correspondiente al segundo pulso 610.
La FIG. 7 es un diagrama de temporización que ilustra un procedimiento para evitar la aparición de solicitudes de interrupción simultáneas, solapadas y/o en conflicto, de acuerdo a ciertos aspectos divulgados en la presente memoria. En algunos casos, puede ser deseable evitar la aparición de pulsos de IRQ solapados que pueden conducir a peticiones de interrupción en conflicto o en competición. Las peticiones de interrupción en conflicto se pueden evitar configurando los dispositivos esclavos para supervisar el bus IRQ 422 antes de activar una petición de interrupción. Las solicitudes de interrupción 712 pueden ser aplazadas 714 si otro dispositivo ya ha activado una petición de interrupción 708 en el bus iRq de línea única compartido 422.
En el ejemplo representado, un primer pulso 704 se activa en el bus IRQ 422 mediante un dispositivo esclavo del primer grupo de dispositivos 406. Un segundo dispositivo esclavo puede desear activar una petición de interrupción durante la duración 704 del primer pulso 708. Según un aspecto, el segundo dispositivo esclavo puede retrasar la activación de la solicitud de interrupción en el bus IRQ 422. En un momento 718, el segundo dispositivo esclavo puede decidir iniciar una petición de interrupción. Después de comprobar el bus IRQ 422, el segundo dispositivo esclavo puede determinar que un pulso 708 ha sido activado en el bus IRQ 422 por otro dispositivo esclavo. Por consiguiente, el segundo dispositivo puede iniciar un periodo de retención o retardo 712 para permitir que el bus IRQ 422 vuelva a un estado inactivo. El periodo de retención 712 puede tener una duración predefinida, una duración que incluye un período mínimo de retroceso y/o un retardo aleatorio, o un período que termina un tiempo predefinido después de que el bus IRQ 422 vuelva a un estado inactivo. El segundo dispositivo esclavo puede estar impedido de activar una petición de interrupción durante un período de tiempo mínimo 710 durante el cual el bus IRQ 422 debe estar libre o inactivo. El periodo de tiempo libre de bus IRQ 710 puede medirse desde el momento 720 en el que termina el primer pulso 708 en el bus iRq 422 y, por ejemplo, el bus IRQ 422 vuelve a un estado lógico alto. La siguiente petición de interrupción 716 puede ser activada después de que se agote el tiempo libre mínimo de bus 710. Al agotarse el tiempo libre mínimo de bus 710, el segundo dispositivo esclavo puede activar una petición de interrupción proporcionando un pulso 716 en el bus IRQ 422. En el ejemplo, el segundo dispositivo esclavo es un miembro del segundo grupo de dispositivos esclavos 408 y la duración 706 del segundo pulso 716 puede ser diferente a la duración 704 del primer pulso 708.
La FIG. 8 es un diagrama de temporización 800 que ilustra el funcionamiento de un esquema que puede emplearse cuando las señales de IRQ simultáneas tienen soporte en una interfaz I2C, de CCI y/o CCIe. Las señales de IRQ simultáneas pueden dar lugar a competiciones y/o conflictos entre dispositivos esclavos individuales y/o entre dispositivos esclavos en diferentes grupos 406, 408 que utilizan un bus IRQ único compartido 422. La temporización de las señales en el bus IRQ 422 se ilustra en un primer gráfico de temporización 802, mientras que las
5
10
15
20
25
30
35
40
45
50
55
60
65
contribuciones de los dispositivos esclavos en los grupos primero y segundo 406, 408 se ilustran en los gráficos de temporización segundo y tercero 812, 822, respectivamente. Un primer pulso de IRQ 814 es activado por un primer dispositivo esclavo en el primer grupo 406 al mismo tiempo o simultáneamente con un segundo pulso de IRQ 824 activado por un segundo dispositivo esclavo en un segundo grupo 408. El segundo pulso de IRQ 824 puede tener una duración más larga 804 que la duración del primer pulso 806. Después de la terminación del primer pulso 814, el primer dispositivo esclavo puede reconocer que un dispositivo de mayor prioridad ha activado una petición de interrupción debido a la presencia de una parte 808 del segundo pulso 824 en el bus IRQ 422. El primer dispositivo esclavo puede reconocer esta condición 808 del bus IRQ 422 como una colisión, competición o conflicto efectivo supervisando el bus IRQ 422 después de la terminación del primer pulso 814. El primer dispositivo puede entonces determinar que el segundo dispositivo esclavo tiene una prioridad más alta y puede aplazar una petición renovada hasta después del periodo libre de bus IRQ 818, que comienza después de la terminación del segundo pulso 824. El dispositivo maestro de bus 404 puede detectar la duración del segundo pulso 824 y abordar al segundo grupo 408 de dispositivos para identificar y dar servicio al origen de la petición de interrupción. El dispositivo maestro de bus 404 puede no ser consciente del primer pulso 814.
El primer dispositivo esclavo puede volver a emitir su petición de interrupción proporcionando un tercer pulso 826 en el bus IRQ 422 después de agotarse el período libre de bus IRQ 818.
La FIG. 9 es un diagrama de temporización 900 que ilustra la tolerancia de temporización relacionada con un pulso de IRQ, donde las tolerancias pueden ser determinantes del ancho mínimo de pulso de IRQ. En algunos casos, los protocolos que rigen la señalización en la interfaz I2C, CCI y/o CCIe pueden definir un valor mínimo para la baja duración (tBAJO) 906 para permitir la detección por un dispositivo maestro de I2C, CCI y/o CCIe 404, aunque, a los efectos de esta divulgación, se puede suponer que la baja duración puede no estar sujeta a un mínimo especificado. El diagrama de temporización 900 ilustra un solo pulso 902.
En el diagrama de temporización ejemplar 900, la tensión de umbral mínima para detectar un estado de señalización "alta" está en el 70% del nivel de tensión de alimentación del circuito de conmutación ("VDD") y la tensión de umbral máxima para detectar un estado de señalización "baja" es del 30% del nivel de VDD. Un receptor puede determinar un estado de señalización alto o bajo para un nivel de tensión del bus IRQ 422 que está entre el 30% y el 70% del nivel de VDD, en función de los niveles de entrada del receptor. Se puede definir un tiempo máximo de caída-alza (TFRmax) 904. La duración de TFRmax 904 puede ser determinante de la duración de un periodo bajo (Tbajo) 910 asignado a un dispositivo esclavo para activar una petición de interrupción. El valor de Tbajo 910 puede seleccionarse para permitir que un dispositivo maestro 404 distinga entre señales de IRQ desde diferentes grupos de dispositivos esclavos. Desde la perspectiva del dispositivo maestro 404, se puede observar una condición baja en el bus IRQ 422 si:
TRFmáx <Tbajo.
Con el fin de distinguir entre los grupos 406, 408 de dispositivos esclavos, se pueden asignar diferentes unidades de Tbajo como el ancho de pulso de IRQ para los grupos 406, 408. En un ejemplo, se puede asignar a un primer grupo 406 un ancho de pulso de IRQ de Tbajo, mientras que a un segundo grupo 408 se le puede asignar un ancho de pulso de IRQ de 2xTbajo. En este ejemplo, el periodo bajo observado por el dispositivo maestro de bus 404 puede calcularse de la siguiente manera:
Primer grupo 406: Tbajo - TFR < Tbajo < Íbajo + TFR
Segundo grupo 406: 2Tbajo - TFR < Íbajo <2Tbajo + TFR.
Obsérvese que después de que un primer dispositivo esclavo active la señal de IRQ baja, un segundo dispositivo esclavo puede no detectar la señal de IRQ baja durante un período de tiempo que se extiende desde TFRmax a tBAJomín, que debe tener una duración de al menos TFRmáx. Por lo tanto, TBAJO> 3TFR máx y tBAJO mín> 2TFRmáx. Por consiguiente, un valor mínimo para tBAJO 906 puede calcularse de la siguiente manera:
2T TFR
- 2TFRmáx <Tbajo -* 3TFRmáx <Tbajo - 2TFRmáx <tBAJOmm
Ejemplos de aparatos, sistemas y procedimientos que implican un bus IRQ común
La FIG. 10 es un diagrama conceptual 1000 que ilustra un ejemplo simplificado de una implementación de hardware para un aparato que emplea un circuito de procesamiento 1002 que puede estar configurado para llevar a cabo una o más funciones divulgadas en la presente memoria. De acuerdo a diversos aspectos de la divulgación, se puede implementar un elemento, o cualquier parte de un elemento, o cualquier combinación de elementos según lo divulgado en la presente memoria para gestionar o iniciar interrupciones utilizando un bus IRQ común, utilizando el circuito de procesamiento 1002. El circuito de procesamiento 1002 puede incluir uno o más procesadores 1004 que
5
10
15
20
25
30
35
40
45
50
55
60
65
están controlados por alguna combinación de módulos de hardware y software. Los ejemplos de procesadores 1004 incluyen microprocesadores, micro-controladores, procesadores de señales digitales (DSP), formaciones de compuertas programables en el terreno (FPGA), dispositivos de lógica programable (PLD), máquinas de estados, lógica de compuertas, circuitos de hardware discretos y otro hardware adecuado, configurado para llevar a cabo la diversa funcionalidad descrita a lo largo de esta divulgación. Uno o más procesadores 1004 pueden incluir procesadores especializados que realizan funciones específicas, y que pueden ser configurados, aumentados o controlados por uno de los módulos de software 1016. Por ejemplo, el circuito de procesamiento puede configurarse como un procesador de comunicaciones u otro tipo de procesador que puede estar adaptado para gestionar la codificación y decodificación de datos para su transmisión en una o más redes inalámbricas. Los uno o más procesadores 1004 pueden configurarse mediante una combinación de uno o más módulos de software 1016 cargados durante la inicialización, y pueden configurarse adicionalmente cargando o descargando uno o más de los módulos de software 1016 durante el funcionamiento.
En el ejemplo ilustrado, el circuito de procesamiento 1002 puede implementarse con una arquitectura de bus, representada generalmente mediante el bus 1010. El bus 1010 puede incluir cualquier número de buses y puentes de interconexión, en función de la aplicación específica del circuito de procesamiento 1002 y de las limitaciones de diseño globales. El bus 1010 enlaza entre sí varios circuitos, incluyendo los uno o más procesadores 1004, y el almacenamiento 1006. El almacenamiento 1006 puede incluir dispositivos de memoria y dispositivos de almacenamiento masivo, y puede ser mencionado en la presente memoria como medios legibles por ordenador. El bus 1010 también puede enlazar otros diversos circuitos, tales como orígenes de temporización, temporizadores, periféricos, reguladores de tensión y circuitos de administración de energía. Una interfaz de bus 1008 puede proporcionar una interfaz entre el bus 1010 y uno o más transceptores o el circuito de interfaz de línea 1012. Un circuito de interfaz de línea 1012 puede incluir controladores y receptores de línea diferencial, un CDR, codificadores y decodificadores que se utilizan para comunicar con otros diversos aparatos a través de un medio de transmisión que puede incluir un bus en serie multicable. Según la naturaleza del aparato, también se puede proporcionar una interfaz de usuario 1018 (por ejemplo, panel de teclas, pantalla, altavoz, micrófono, palanca de juegos) y puede estar comunicativamente acoplada al bus 1010, directamente o a través de una interfaz de bus 1008.
Un procesador 1004 puede ser responsable de gestionar el bus 1010 y/o del procesamiento general que puede incluir la ejecución de software almacenado en un medio legible por ordenador que puede incluir el almacenamiento 1006. A este respecto, el circuito de procesamiento 1002, incluyendo el procesador 1004, se puede usar para implementar cualquiera de los procedimientos, funciones y técnicas divulgados en la presente memoria. El almacenamiento 1006 puede usarse para almacenar datos que son manipulados por el procesador 1004 al ejecutar software y el software puede configurarse para implementar uno cualquiera de los procedimientos divulgados en la presente memoria.
Uno o más procesadores 1004 en el circuito de procesamiento 1002 pueden ejecutar software. Deberá interpretarse que el término “software” significa, en un sentido general, instrucciones, conjuntos de instrucciones, código, segmentos de código, código de programa, programas, sub-programas, módulos de software, aplicaciones, aplicaciones de software, paquetes de software, rutinas, subrutinas, objetos, módulos ejecutables, hilos de ejecución, procedimientos, funciones, algoritmos, etc., independientemente de que se mencione como software, firmware, middleware, micro-código, lenguaje de descripción de hardware, o de otra manera. El software puede residir en forma legible por ordenador en el almacenamiento 1006 o en un medio externo legible por ordenador. El medio legible por ordenador 1006 puede ser un medio no transitorio legible por ordenador. Un medio no transitorio legible por ordenador incluye, a modo de ejemplo, un dispositivo de almacenamiento magnético (por ejemplo, un disco duro, un disco flexible, una cinta magnética), un disco óptico (por ejemplo, un disco compacto (CD), un disco versátil digital (DVD)), una tarjeta inteligente, un dispositivo de memoria flash (por ejemplo, un "controlador flash", una tarjeta, una barra, un dispositivo USB de llavero), una memoria de acceso aleatorio (RAM), una memoria de solo lectura (ROM), una ROM programable (PROM), una PROM borrable (EPROM), una PROM borrable eléctricamente (EEPROM), un registro, un disco extraíble y cualquier otro medio adecuado para almacenar software y/o instrucciones a los que pueda acceder y pueda leer un ordenador. El medio y/o el almacenamiento legible por ordenador 1006 también puede incluir, a modo de ejemplo, una onda portadora, una línea de transmisión y cualquier otro medio adecuado para transmitir software y/o instrucciones a los que se pueda acceder y pueda leer un ordenador. El medio y/o el almacenamiento legible por ordenador 1006 pueden residir en el circuito de procesamiento 1002, en el procesador 1004, externos al circuito de procesamiento 1002, o distribuirse entre múltiples entidades, incluyendo el circuito de procesamiento 1002. El medio y/o el almacenamiento legible por ordenador 1006 puede realizarse en un producto de programa informático. A modo de ejemplo, un producto de programa informático puede incluir un medio legible por ordenador en materiales de embalaje. Los expertos en la técnica reconocerán cómo implementar óptimamente la funcionalidad descrita presentada a lo largo de la presente divulgación, en función de la aplicación particular y de las limitaciones globales de diseño impuestas en el sistema global.
El almacenamiento 1006 puede mantener software mantenido y / u organizado en segmentos de código cargables, módulos, aplicaciones, programas, etc., que se pueden mencionar en la presente memoria como módulos de software 1016. Cada uno de los módulos de software 1016 puede incluir instrucciones y datos que, cuando se instalan o cargan en el circuito de procesamiento 1002 y son ejecutados por los uno o más procesadores 1004,
5
10
15
20
25
30
35
40
45
50
55
60
65
contribuyen a una imagen de tiempo de ejecución 1014 que controla el funcionamiento de los uno o más procesadores 1004. Cuando se ejecutan, ciertas instrucciones pueden hacer que el circuito de procesamiento 1002 realice funciones de acuerdo a ciertos procedimientos, algoritmos y procesos descritos en la presente memoria.
Algunos de los módulos de software 1016 pueden cargarse durante la inicialización del circuito de procesamiento 1002, y estos módulos de software 1016 pueden configurar el circuito de procesamiento 1002 para habilitar la realización de las diversas funciones divulgadas en la presente memoria. Por ejemplo, algunos módulos de software 1016 pueden configurar dispositivos internos y/o circuitos lógicos 1022 del procesador 1004 y pueden gestionar el acceso a dispositivos externos tales como los circuitos de interfaz de línea 1012, la interfaz de bus 1008, la interfaz de usuario 1018, temporizadores, coprocesadores matemáticos, etc. Los módulos de software 1016 pueden incluir un programa de control y/o un sistema operativo que interactúa con gestores de interrupciones y controladores de dispositivos, y que controla el acceso a diversos recursos proporcionados por el circuito de procesamiento 1002. Los recursos pueden incluir memoria, tiempo de procesamiento, acceso a la interfaz de línea 1012, la interfaz de usuario 1018, etc.
Uno o más procesadores 1004 del circuito de procesamiento 1002 pueden ser multifuncionales, por lo que algunos de los módulos de software 1016 se cargan y configuran para realizar diferentes funciones o diferentes instancias de la misma función. Los uno o más procesadores 1004 pueden estar adicionalmente adaptados para gestionar tareas de fondo iniciadas en respuesta a entradas procedentes de la interfaz de usuario 1018, los circuitos de interfaz de línea 1012 y controladores de dispositivo, por ejemplo. Para prestar soporte a la realización de múltiples funciones, los uno o más procesadores 1004 pueden configurarse para proporcionar un entorno multitarea, por lo que cada una entre una pluralidad de funciones se implementa como un conjunto de tareas que son atendidas por los uno o más procesadores 1004 según sea necesario o deseado. En un ejemplo, el entorno de multitarea puede implementarse utilizando un programa de compartición de tiempo 1020 que pasa el control de un procesador 1004 entre diferentes tareas, por lo que cada tarea devuelve el control de los uno o más procesadores 1004 al programa de compartición de tiempo 1020 al completar operaciones pendientes cualesquiera y/o en respuesta a una entrada tal como una interrupción. Cuando una tarea tiene el control de los uno o más procesadores 1004, el circuito de procesamiento está efectivamente especializado para los fines abordados por la función asociada a la tarea de control. El programa de compartición de tiempo 1020 puede incluir un sistema operativo, un bucle principal que transfiere el control en bucle circular, una función que asigna el control de los uno o más procesadores 1004 de acuerdo a una priorización de las funciones, y/o un bucle principal controlado por interrupciones que responde a sucesos externos proporcionando el control de los uno o más procesadores 1004 a una función de gestión.
La FIG. 11 es un diagrama de flujo 1100 que ilustra un primer ejemplo de un procedimiento para activar una IRQ en un bus IRQ compartido, de acuerdo a ciertos aspectos divulgados en la presente memoria. El procedimiento puede ser implementado por un dispositivo esclavo, por ejemplo. El dispositivo esclavo puede determinar la necesidad de comunicarse a través de un bus de datos de control y puede iniciar el procedimiento para comunicar una petición de interrupción a un dispositivo maestro a través de un bus IRQ compartido. En el bloque 1102, el dispositivo esclavo puede determinar si otro dispositivo está señalizando en el bus IRQ compartido. Por ejemplo, el bus IRQ puede estar en un estado lógico bajo cuando otro dispositivo está señalizando una IRQ. Si el bus IRQ está bajo (IRQN = 0), entonces el dispositivo esclavo puede esperar en el bloque 1114 hasta que el bus IRQ se alce. Cuando el dispositivo esclavo determina en el bloque 1102 que el bus IRQ está en un estado de señalización representativo de una alta lógica, el dispositivo esclavo puede activar su señal de IRQ en el bloque 1104 llevando el bus IRQ a la baja. El dispositivo esclavo puede entonces esperar un periodo predefinido de tiempo de señal de IRQ en el bloque 1106. El periodo de tiempo de la señal de IRQ puede tener una duración que identifique el dispositivo esclavo y/o un grupo de dispositivos esclavos. En un ejemplo, el periodo de tiempo de la señal de IRQ puede definirse en unidades de un tiempo mínimo bajo (TBAJO). Después de que ha transcurrido el periodo predefinido de tiempo de la señal de IRQ, el dispositivo esclavo puede desactivar su señal de IRQ en el bloque 1108. En algunos casos, el dispositivo esclavo puede supervisar el bus IRQ después de otro periodo de tiempo predefinido (TFRmáx) en el bloque 1110. El dispositivo esclavo puede supervisar el bus IRQ en el bloque 1112 para determinar si el bus IRQ permanece en un estado de señalización representativo de un nivel lógico bajo (es decir, IRQN = 0). Si el estado de señalización del bus IRQ permanece en el nivel lógico bajo, entonces otro dispositivo esclavo puede haber activado su señal de IRQ y el dispositivo esclavo puede repetir el proceso para volver a emitir su señal de IRQ comenzando en el bloque 1102. Si el estado de señalización del bus IRQ ha retornado a un estado lógico de alta señalización, el proceso termina y el dispositivo esclavo puede anticipar comandos o peticiones desde el dispositivo maestro de bus.
La FIG. 12 es un diagrama de flujo 1200 que ilustra un primer ejemplo de un procedimiento para manejar las IRQ en un bus IRQ compartido, de acuerdo a ciertos aspectos divulgados en la presente memoria. El procedimiento puede ser implementado por un dispositivo maestro, por ejemplo. El dispositivo maestro puede determinar la identidad de un grupo de dispositivos que incluye un dispositivo esclavo que ha activado una señal de IRQ en un bus de IRQ de línea única compartido. El dispositivo maestro puede determinar si se ha activado una señal de IRQ en el bus IRQ de línea única compartido, en el bloque 1202. La señal de IRQ puede ser activada llevando el bus de IRQ de línea única compartido al nivel lógico bajo, por ejemplo. Cuando se ha activado el bus IRQ de línea única compartido, el dispositivo maestro puede reiniciar un contador en el bloque 1204. El dispositivo maestro puede entonces incrementar el contador en el bloque 1206 mientras comprueba si el bus IRQ todavía está activado en el bloque 1208. Este contador permite que el dispositivo maestro compruebe la longitud / periodo de la señal de IRQ (por
5
10
15
20
25
30
35
40
45
50
55
60
65
ejemplo, ancho de pulso). Una vez que el bus IRQ está desactivado, el dispositivo maestro puede seleccionar un grupo, en el bloque 1210, al que pertenece el dispositivo esclavo basándose en la longitud / periodo de la señal de IRQ. El dispositivo maestro puede continuar supervisando el bus de IRQ de una única línea compartida para solicitudes adicionales de interrupción. El dispositivo maestro puede iniciar adicionalmente una exploración y/o consulta de los dispositivos esclavos en ese grupo en el bloque 1212 (como se ilustra en la FIG. 13, por ejemplo) para identificar el dispositivo esclavo activador. La exploración de IRQ del grupo 1212 puede realizarse independientemente, de tal manera que el dispositivo maestro pueda continuar supervisando el bus de IRQ de una sola línea compartida con respecto a solicitudes adicionales de interrupción mientras se realiza la exploración IRQ del grupo 1212. En algunos casos, el dispositivo maestro puede diferenciar entre señales de IRQ usando otras características, incluyendo niveles de tensión, por ejemplo.
La FIG. 13 es un diagrama de flujo 1300 que ilustra un ejemplo de un procedimiento para realizar una exploración de IRQ grupal para identificar un dispositivo esclavo después de que se activa una señal de IRQ en un bus IRQ de línea única compartido. El procedimiento puede realizar las funciones identificadas en el bloque 1212 ilustrado en la FIG. 12. La exploración de IRQ grupal puede incluir consultar cada dispositivo esclavo en un grupo con respecto a su registro de estado respectivo en los bloques 1302, 1304, 1306, 1308. La respuesta a las consultas puede permitir que el dispositivo maestro compruebe qué dispositivo esclavo en un grupo ha activado la señal de IRQ. Una vez identificado, el dispositivo maestro puede conceder al dispositivo esclavo activador el uso de un bus de datos de control.
La FIG. 14 es un diagrama de flujo 1400 que ilustra un segundo ejemplo de un procedimiento para gestionar las IRQ en un bus de IRQ compartido, de acuerdo a ciertos aspectos divulgados en la presente memoria. El procedimiento puede referirse a la gestión de solicitudes de interrupción comunicadas a través de un bus IRQ de línea única que puede ser compartido por una pluralidad de dispositivos esclavos. El bus IRQ de línea única puede funcionar de forma asíncrona. El bus IRQ de línea única puede estar dedicado a transmisiones de señales unidireccionales desde los dispositivos esclavos al dispositivo maestro. El procedimiento puede ser realizado por un circuito de procesamiento de un dispositivo adaptado para funcionar como un dispositivo maestro en un bus I2C, de CCI o CCIe.
En el bloque 1402, el dispositivo maestro puede agrupar dispositivos esclavos acoplados al bus IRQ de línea única compartido, en uno o más grupos. Cada grupo puede estar asociado a una señal de IRQ diferente. La señal de IRQ asociada a cada grupo puede tener un ancho de pulso diferente al de otras señales de IRQ asociadas a otros grupos.
En el bloque 1404, el dispositivo maestro puede supervisar el bus IRQ para determinar cuándo una señal de IRQ es activada por uno o más de los dispositivos esclavos.
En el bloque 1406, el dispositivo maestro puede identificar un grupo al que está asociada la señal de IRQ.
En el bloque 1408, el dispositivo maestro puede explorar los dispositivos esclavos del grupo identificado para determinar o constatar un dispositivo esclavo activador que activó la señal de IRQ en el bus IRQ. La exploración de un dispositivo esclavo en el grupo identificado de dispositivos esclavos puede incluir la exploración de un registro de estado de IRQ del dispositivo esclavo. El dispositivo esclavo activador puede recibir más atención desde el dispositivo maestro después de que se haya explorado el registro de estado de IRQ del dispositivo esclavo activador. En un ejemplo, el dispositivo maestro puede conceder al dispositivo esclavo activador acceso para transmitir datos a través del bus de datos de control.
En un aspecto, el dispositivo maestro puede dar soporte a una primera interfaz con el bus IRQ de línea única y a una segunda interfaz con un bus de datos de control al que están acoplados uno o más dispositivos esclavos. El bus de datos de control puede prestar soporte a la señalización bidireccional entre los dispositivos esclavos y el dispositivo maestro. Al menos uno entre la pluralidad de grupos puede incluir al menos dos dispositivos esclavos.
La FIG. 15 es un diagrama conceptual que ilustra un ejemplo de una implementación de hardware para un aparato 1500 que emplea un circuito de procesamiento 1502. En este ejemplo, el circuito de procesamiento 1502 puede implementarse con una arquitectura de bus, representada generalmente mediante el bus 1516. El bus 1516 puede incluir cualquier número de buses y puentes de interconexión, en función de la aplicación específica del circuito de procesamiento 1502 y de las limitaciones de diseño globales. El bus 1516 enlaza entre sí diversos circuitos, incluyendo uno o más procesadores, representados generalmente por el procesador 1512, y medios legibles por ordenador, representados generalmente por el medio legible por procesador 1514. Uno o más temporizadores pueden estar conectados al bus y/o pueden estar directamente accesibles o realizados en un procesador 1512. El bus 1516 también puede enlazar otros diversos circuitos tales como orígenes de temporización, temporizadores, periféricos, reguladores de tensión y circuitos de administración de energía. Los circuitos de interfaz de línea 1512 pueden incluir controladores diferenciales y receptores que acoplan el circuito de procesamiento 1502 a un bus de datos de control y/o circuitos que acoplan el circuito de procesamiento a un bus IRQ. Según la naturaleza del aparato, puede proporcionarse una interfaz de usuario para dar soporte a dispositivos tales como un panel de teclas, una pantalla, un altavoz, un micrófono, una palanca de juegos y similares.
5
10
15
20
25
30
35
40
45
50
55
60
65
El procesador 1512 es responsable de gestionar el bus 1516 y el procesamiento general, incluyendo la ejecución de software almacenado en el medio de almacenamiento legible por procesador 1514. El software, cuando es ejecutado por el procesador 1512, hace que el circuito de procesamiento 1502 lleve a cabo las diversas funciones descritas anteriormente para cualquier aparato particular. El medio de almacenamiento legible por procesador 1514 puede usarse también para almacenar los datos que sean manipulados por el procesador 1512 cuando se ejecute el software. El medio de almacenamiento legible por procesador 1514 también puede usarse para almacenar información del sistema relacionada con uno o más dispositivos gestionados remotamente (por ejemplo, perfiles), y el propio aparato 1500.
En una configuración, el circuito de procesamiento 1502 puede realizar una o más funciones de un dispositivo adaptado para comunicarse como un amo de bus en un bus I2C, de CCI y/o CCIe. El circuito de procesamiento 1502 puede conectarse a través de un primer circuito de los circuitos de interfaz 1518 a un bus de IRQ de línea única 1522 al que están acoplados uno o más dispositivos esclavos y, a través de un segundo circuito de los circuitos de interfaz 1518, a un bus de datos de control 1520 al que los uno o más dispositivos esclavos también están acoplados. El circuito de procesamiento 1502 puede incluir un módulo o circuito 1510 configurado para agrupar los dispositivos esclavos en uno o más grupos, un módulo o circuito 1504 configurado para supervisar el bus IRQ para determinar cuándo una señal de IRQ es activada por al menos un dispositivo esclavo, un módulo o circuito 1506 configurado para identificar un grupo al que está asociada la señal de IRQ y un módulo o circuito 1508 configurado para explorar los dispositivos esclavos del grupo identificado para determinar un dispositivo esclavo activador que activó la señal de IRQ en el bus IRQ. Cada grupo puede estar asociado a una señal de IRQ diferente. En un ejemplo, las señales de IRQ pueden diferenciarse por la duración de un pulso en las señales de IRQ.
La FIG. 16 es un diagrama de flujo 1600 que ilustra un segundo ejemplo de un procedimiento para activar las IRQ en un bus IRQ compartido, de acuerdo a ciertos aspectos divulgados en la presente memoria. El procedimiento puede referirse a, o facilitar, la petición de interrupciones a través de un bus IRQ de línea única que es compartido por una pluralidad de dispositivos esclavos, de acuerdo a ciertos aspectos divulgados en la presente memoria. El bus IRQ de línea única puede funcionar de forma asíncrona. El bus IRQ de línea única puede estar dedicado a transmisiones de señales unidireccionales desde los dispositivos esclavos al dispositivo maestro. El procedimiento puede ser realizado por un circuito de procesamiento de un dispositivo adaptado para funcionar como un dispositivo esclavo en un bus I2C, de CCI o CCIe.
En el bloque 1602, el dispositivo esclavo puede obtener una asignación de grupo desde un dispositivo maestro. La asignación de grupo puede identificar un grupo a partir de una pluralidad de grupos. Cada grupo puede estar asociado a una señal de IRQ diferente. Cada grupo incluye al menos un dispositivo esclavo.
En el bloque 1604, el dispositivo esclavo puede supervisar el bus IRQ para determinar cuándo una señal de IRQ es activada por uno de los otros dispositivos esclavos.
En el bloque 1606, el dispositivo esclavo puede activar una señal de IRQ en el bus IRQ cuando no se activa ninguna otra señal de IRQ en el bus IRQ.
En un aspecto, el dispositivo esclavo puede desactivar la señal de IRQ del bus IRQ, y supervisar el bus IRQ para determinar si otro dispositivo está activando una señal en el bus IRQ. Si el otro dispositivo está activando la señal, el dispositivo esclavo puede reactivar la señal de IRQ después de que el bus IRQ se quede inactivo.
En un aspecto, el dispositivo esclavo puede recibir una consulta de registro de estado desde el dispositivo maestro a través del bus de datos de control, y responder con una indicación de estado en cuanto a que el dispositivo esclavo activó la señal de IRQ en el bus IRQ.
En un aspecto, el dispositivo esclavo puede acoplarse a un bus de datos de control. El bus de datos de control puede ser compatible con protocolos y/o señalización de I2C, de CCI y/o de CCIe. El bus de datos de control puede funcionar de una manera bidireccional entre los dispositivos esclavos y el dispositivo maestro.
La FIG. 17 es un diagrama conceptual que ilustra un ejemplo de una implementación de hardware para un aparato 1700 que emplea un circuito de procesamiento 1702 adaptado para activar las IRQ en un bus IRQ compartido. En este ejemplo, el circuito de procesamiento 1702 puede implementarse con una arquitectura de bus, representada generalmente por el bus 1716. El bus 1716 puede incluir cualquier número de buses y puentes de interconexión, en función de la aplicación específica del sistema de procesamiento 1702 y de las limitaciones de diseño globales. El bus 1716 enlaza entre sí diversos circuitos, incluyendo uno o más procesadores, representados generalmente por el procesador 1712, y medios legibles por ordenador, representados generalmente por el medio de almacenamiento legible por procesador 1714. Uno o más temporizadores pueden estar conectados al bus y/o pueden estar directamente accesibles o realizados en un procesador 1712. El bus 1716 también puede enlazar otros diversos circuitos, tales como orígenes de temporización, temporizadores, periféricos, reguladores de tensión y circuitos de administración de energía. Los circuitos de interfaz de línea 1712 pueden incluir controladores diferenciales y receptores que acoplan el circuito de procesamiento 1702 a un bus de datos de control y/o circuitos que acoplan el
5
10
15
20
25
30
circuito de procesamiento a un bus IRQ. Según la naturaleza del aparato, puede proporcionarse una interfaz de usuario para dar soporte a dispositivos tales como un panel de teclas, una pantalla, un altavoz, un micrófono, una palanca de juegos y similares.
El procesador 1712 es responsable de gestionar el bus 1716 y el procesamiento general, incluyendo la ejecución de software almacenado en el medio de almacenamiento legible por procesador 1714. El software, cuando es ejecutado por el procesador 1712, hace que el circuito de procesamiento 1702 lleve a cabo las diversas funciones descritas anteriormente para cualquier aparato particular. El medio de almacenamiento legible por procesador 1714 puede usarse también para almacenar los datos que sean manipulados por el procesador 1712 cuando se ejecute el software. El medio de almacenamiento legible por procesador 1714 también se puede usar para almacenar información del sistema relacionada con uno o más dispositivos gestionados remotamente (por ejemplo, perfiles), y el propio aparato 1700.
En una configuración, el circuito de procesamiento 1702 puede realizar una o más funciones de un dispositivo adaptado para comunicarse como un esclavo de bus en un bus I2C, de CCI y/o CCIe 1720. El circuito de procesamiento 1702 puede conectarse, a través de un primer circuito de los circuitos de interfaz 1718, a un bus IRQ de línea única 1722 al que están acoplados un amo de bus y uno o más dispositivos esclavos y, a través de un segundo circuito de los circuitos de interfaz 1718, a un bus de datos de control 1720 al que están acoplados también el amo de bus y los uno o más dispositivos esclavos. El circuito de procesamiento 1702 puede incluir un módulo o circuito 1704 configurado para obtener una asignación de grupo desde un dispositivo maestro, un módulo o circuito 1706 configurado para supervisar el bus IRQ para determinar cuándo una señal de IRQ es activada por uno de los otros dispositivos esclavos y un módulo o circuito 1708 configurado para activar una señal de IRQ en el bus IRQ cuando no se activa ninguna otra señal de IRQ en el bus IRQ. La asignación de grupo puede identificar un grupo entre una pluralidad de grupos. Cada grupo puede estar asociado a una señal de IRQ diferente.
Se entenderá que el orden o jerarquía específicos de las etapas en los procedimientos divulgados es una ilustración de procesos a modo de ejemplo. En base a las preferencias de diseño, se entiende que pueden reorganizarse el orden o jerarquía específicos de las etapas en los procedimientos. Las reivindicaciones adjuntas de procedimiento presentan elementos de las diversas etapas en un orden de muestra y no están concebidas para limitarse al orden o jerarquía específicos presentados, a menos que se mencione de forma específica en las mismas.

Claims (11)

1.
5
10
15
20
25 2.
30 3.
35
40
4.
45
50
55 5.
60 6.
REIVINDICACIONES
Un dispositivo maestro (212), que comprende:
una primera interfaz a un bus de petición de interrupción, IRQ, de línea única (326, 422), al que están acoplados uno o más dispositivos esclavos (218);
una segunda interfaz a un bus de datos de control (330, 402) al que están también acoplados uno o más dispositivos esclavos; y
un circuito de procesamiento acoplado a la primera interfaz y a la segunda interfaz, estando el circuito de procesamiento adaptado para:
agrupar los uno o más dispositivos esclavos en uno o más grupos, donde cada grupo está asociado a una señal de IRQ diferente;
supervisar el bus IRQ para determinar cuándo una señal de IRQ es activada por al menos un dispositivo esclavo;
identificar un grupo al que está asociada la señal de IRQ; y
recorrer los dispositivos esclavos del grupo identificado para determinar un dispositivo esclavo activador que activó la señal de IRQ en el bus IRQ.
El dispositivo de la reivindicación 1, en el que el circuito de procesamiento está adaptado también para:
conceder al dispositivo esclavo activador acceso para transmitir datos a través del bus de datos de control.
El dispositivo de la reivindicación 1, en el que la señal de IRQ asociada a cada grupo tiene un ancho de pulso diferente al de las señales de IRQ asociadas a otros grupos; y/o
en el que el bus IRQ de línea única es un bus asíncrono; o
en el que el bus IRQ de línea única está dedicado a transmisiones de señal unidireccionales desde los dispositivos esclavos al dispositivo maestro; o
en el que el bus de datos de control da soporte a la señalización bidireccional entre los dispositivos esclavos y el dispositivo maestro.
Un procedimiento (1400) operativo en un dispositivo maestro (212), que comprende:
agrupar (1402) dispositivos esclavos (218) acoplados a un bus de petición de interrupción, IRQ, de línea única compartida (326, 422) en uno o más grupos, donde cada grupo está asociado a una señal de IRQ diferente;
supervisar (1404) el bus IRQ para determinar cuándo una señal de IRQ es activada por uno o más de los dispositivos esclavos;
identificar (1406) un grupo al que está asociada la señal de IRQ; y
explorar (1408) al menos un dispositivo esclavo en el grupo identificado para determinar un dispositivo esclavo activador que activó la señal de IRQ en el bus IRQ.
El procedimiento de la reivindicación 4, en el que la exploración del al menos un dispositivo esclavo comprende:
explorar un registro de estado de IRQ del dispositivo esclavo activador.
El procedimiento de la reivindicación 4, que comprende además:
conceder al dispositivo esclavo activador acceso a transmitir datos a través de un bus de datos de control (330, 402);
y, preferentemente,
en el que el bus de datos de control da soporte a una señalización bidireccional entre los dispositivos
5
10
15
20
25
30
35
40
45
50
55
60
65
esclavos y el dispositivo maestro.
7. El procedimiento de la reivindicación 4, en el que la señal de IRQ asociada a cada grupo tiene un ancho de pulso diferente al de otras señales de IRQ asociadas a otros grupos; o
en el que el bus IRQ funciona de forma asíncrona; o
en el que el bus IRQ está dedicado a transmisiones de señales unidireccionales desde los dispositivos esclavos al dispositivo maestro; o
en el que cada uno de los uno o más grupos incluye al menos un dispositivo esclavo.
8. Un dispositivo esclavo (218), que comprende:
una primera interfaz a un bus de solicitud de interrupción, IRQ, de línea única (326, 422), al que está acoplado un dispositivo maestro (212);
una segunda interfaz a un bus de datos de control (330, 402) al que también está acoplado el dispositivo maestro; y
un circuito de procesamiento acoplado a la primera interfaz y a la segunda interfaz, estando el circuito de procesamiento adaptado para:
obtener una asignación de grupo desde un dispositivo maestro, en el que la asignación de grupo identifica un grupo a partir de una pluralidad de grupos, estando cada grupo asociado a una señal de IRQ diferente;
supervisar el bus IRQ para comprobar si una señal de IRQ es activada por otro dispositivo esclavo; y
activar una primera señal de IRQ en el bus IRQ cuando no está activada ninguna otra señal de IRQ en el bus IRQ.
9. El dispositivo esclavo de la reivindicación 8, en el que el bus IRQ está dedicado a transmisiones de señales unidireccionales desde uno o más dispositivos esclavos al dispositivo maestro; o en el que el bus de datos de control da soporte a comunicaciones bidireccionales entre uno o más dispositivos esclavos y el dispositivo maestro.
10. El dispositivo de la reivindicación 1, o el dispositivo esclavo de la reivindicación 8, en el que el bus de datos de control comprende un bus en serie de circuito inter-integrado, I2C, un bus en serie de interfaz de control de cámara, CCI, o un bus en serie de extensión de CCI, CCIe.
11. Un procedimiento (1600) operativo en un dispositivo esclavo (218), que comprende:
obtener (1602) una asignación de grupo desde un dispositivo maestro (212), en el que la asignación de grupo identifica un grupo a partir de una pluralidad de grupos, estando cada grupo asociado a una señal de petición de interrupción, IRQ, diferente;
supervisar (1604) un bus IRQ de línea única (326, 422) para comprobar si una señal de IRQ está activada por uno de los otros dispositivos esclavos; y
activar (1606) una primera señal de IRQ en el bus IRQ cuando no está activada ninguna otra señal de IRQ en el bus IRQ.
12. El procedimiento de la reivindicación 11, en el que el bus IRQ es un bus asíncrono; o
en el que el bus IRQ está dedicado a transmisiones de señales unidireccionales desde dispositivos esclavos al dispositivo maestro.
13. El dispositivo esclavo de la reivindicación 8 o el procedimiento de la reivindicación 11, en el que cada uno entre la pluralidad de grupos incluye al menos un dispositivo esclavo.
14. El procedimiento de la reivindicación 11, que comprende además:
desactivar la primera señal de IRQ del bus IRQ;
5
10
15
supervisar el bus IRQ para determinar si otro dispositivo está activando una segunda señal de IRQ en el bus IRQ;
y reactivar la primera señal de IRQ si el otro dispositivo está activando la segunda señal de IRQ, en donde la primera señal de IRQ es reactivada después de que se desactive la segunda señal de IRQ.
15. El procedimiento de la reivindicación 11, que comprende además:
recibir una consulta de registro de estado desde el dispositivo maestro a través de un bus de datos de control (330, 402); y
responder con una indicación de estado en cuanto a que el dispositivo esclavo activó la primera señal de IRQ en el bus IRQ; y, preferentemente,
en el que un bus de datos de control es un bus compatible con la CCIe; o
en el que un bus de datos de control es un bus bidireccional entre los dispositivos esclavos y el dispositivo maestro.
ES14759403.0T 2013-08-24 2014-08-19 Procedimiento para minimizar el número de líneas de IRQ desde periféricos a un cable Active ES2647147T3 (es)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361869673P 2013-08-24 2013-08-24
US201361869673P 2013-08-24
US201414462363 2014-08-18
US14/462,363 US9921981B2 (en) 2013-08-24 2014-08-18 Method to minimize the number of IRQ lines from peripherals to one wire
PCT/US2014/051758 WO2015031115A1 (en) 2013-08-24 2014-08-19 Method to minimize the number of irq lines from peripherals to one wire

Publications (1)

Publication Number Publication Date
ES2647147T3 true ES2647147T3 (es) 2017-12-19

Family

ID=52481419

Family Applications (1)

Application Number Title Priority Date Filing Date
ES14759403.0T Active ES2647147T3 (es) 2013-08-24 2014-08-19 Procedimiento para minimizar el número de líneas de IRQ desde periféricos a un cable

Country Status (9)

Country Link
US (1) US9921981B2 (es)
EP (1) EP3036647B1 (es)
JP (1) JP2016532967A (es)
KR (1) KR20160047484A (es)
CN (1) CN105474193A (es)
CA (1) CA2918503A1 (es)
ES (1) ES2647147T3 (es)
HU (1) HUE033685T2 (es)
WO (1) WO2015031115A1 (es)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9519603B2 (en) * 2013-09-09 2016-12-13 Qualcomm Incorporated Method and apparatus to enable multiple masters to operate in a single master bus architecture
DE102014014379B3 (de) * 2014-10-02 2015-08-20 Micronas Gmbh Verfahren für eine deterministische Auswahl eines Sensors aus einer Vielzahl von Sensoren
US20180107987A1 (en) * 2016-10-14 2018-04-19 Microsoft Technology Licensing, Llc Meeting service with meeting time and location optimization
KR20180124340A (ko) * 2017-05-11 2018-11-21 엘에스산전 주식회사 프로그래머블 논리 제어 장치
JP6939240B2 (ja) 2017-08-17 2021-09-22 富士フイルムビジネスイノベーション株式会社 情報処理装置
US11030133B2 (en) * 2018-08-30 2021-06-08 Qualcomm Incorporated Aggregated in-band interrupt based on responses from slave devices on a serial data bus line

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6046748B2 (ja) * 1977-02-21 1985-10-17 株式会社日立製作所 コンピユ−タの割込処理方式
US4332011A (en) * 1980-03-17 1982-05-25 Cambridge Telecommunications, Inc. Data processing arrangement including multiple groups of I/O devices with priority between groups and within each group
JPS58198994A (ja) * 1982-05-15 1983-11-19 Matsushita Electric Works Ltd 時分割多重遠隔制御システムの割込処理方式
JPH07117935B2 (ja) * 1985-01-31 1995-12-18 株式会社東芝 割込み検出方式
JPH0817394B2 (ja) * 1989-09-14 1996-02-21 松下電工株式会社 時分割多重伝送システムの割込処理方式
US5555420A (en) 1990-12-21 1996-09-10 Intel Corporation Multiprocessor programmable interrupt controller system with separate interrupt bus and bus retry management
US5321818A (en) 1992-05-12 1994-06-14 Hughes Aircraft Company System for arbitrating for access on VME bus structures
US5530875A (en) * 1993-04-29 1996-06-25 Fujitsu Limited Grouping of interrupt sources for efficiency on the fly
JPH07302203A (ja) * 1994-05-10 1995-11-14 Matsushita Electric Ind Co Ltd 割込制御装置
US5943500A (en) * 1996-07-19 1999-08-24 Compaq Computer Corporation Long latency interrupt handling and input/output write posting
US5940402A (en) 1997-06-06 1999-08-17 Timeplex, Inc. Method and apparatus for TDM interrupt transmissions between multiple devices and a processor
JPH11232210A (ja) * 1998-02-16 1999-08-27 Fuji Xerox Co Ltd 情報処理装置
US6065073A (en) * 1998-08-17 2000-05-16 Jato Technologies, Inc. Auto-polling unit for interrupt generation in a network interface device
US6263395B1 (en) * 1999-01-06 2001-07-17 Compaq Computer Corp. System and method for serial interrupt scanning
JP2000231539A (ja) * 1999-02-12 2000-08-22 Ricoh Co Ltd データ転送システムおよびデータ転送方法
JP2002055830A (ja) 2000-05-29 2002-02-20 Seiko Epson Corp 割込信号生成装置及び割込信号の生成方法
US6704823B1 (en) * 2000-07-20 2004-03-09 International Business Machines Corporation Method and apparatus for dynamic allocation of interrupt lines through interrupt sharing
US20020116563A1 (en) * 2000-12-12 2002-08-22 Lever Paul D. Apparatus and method to reduce interrupt latency in shared interrupt systems
US7089338B1 (en) * 2002-07-17 2006-08-08 Cypress Semiconductor Corp. Method and apparatus for interrupt signaling in a communication network
GB0219570D0 (en) * 2002-08-22 2002-10-02 Ibm Disk drive arrangement, enclosure, adapter and method
US7200700B2 (en) 2005-05-19 2007-04-03 Inventec Corporation Shared-IRQ user defined interrupt signal handling method and system
US7752365B2 (en) 2008-04-01 2010-07-06 Kyocera Corporation Bi-directional single conductor interrupt line for communication bus
DE102008059204B9 (de) 2008-11-27 2011-05-05 Infineon Technologies Ag Verfahren zum Suchen eines Slave-Knotens in einem Kommunikationsnetz, Master-Knoten und Slave-Knoten für ein Kommunikationsnetz
US8489786B2 (en) * 2009-11-09 2013-07-16 Stmicroelectronics International N.V. Acknowledgement management technique for supported command set of SMBUS/PMBUS slave applications
US8775707B2 (en) 2010-12-02 2014-07-08 Blackberry Limited Single wire bus system
US8725916B2 (en) * 2012-01-07 2014-05-13 Microsoft Corporation Host side implementation for HID I2C data bus
US20150095537A1 (en) * 2013-10-02 2015-04-02 Qualcomm Incorporated Camera control interface sleep and wake up signaling
US9519603B2 (en) * 2013-09-09 2016-12-13 Qualcomm Incorporated Method and apparatus to enable multiple masters to operate in a single master bus architecture
US9690725B2 (en) * 2014-01-14 2017-06-27 Qualcomm Incorporated Camera control interface extension with in-band interrupt
US10353837B2 (en) * 2013-09-09 2019-07-16 Qualcomm Incorporated Method and apparatus to enable multiple masters to operate in a single master bus architecture
US9892077B2 (en) * 2013-10-07 2018-02-13 Qualcomm Incorporated Camera control interface slave device to slave device communication
CN105612507A (zh) * 2013-10-08 2016-05-25 高通股份有限公司 I2c从动设备与相机控制接口扩展设备在共享控制数据总线上的共存
US9684624B2 (en) * 2014-01-14 2017-06-20 Qualcomm Incorporated Receive clock calibration for a serial bus
US9904637B2 (en) * 2014-11-26 2018-02-27 Qualcomm Incorporated In-band interrupt time stamp

Also Published As

Publication number Publication date
HUE033685T2 (en) 2017-12-28
EP3036647B1 (en) 2017-09-20
CA2918503A1 (en) 2015-03-05
US9921981B2 (en) 2018-03-20
EP3036647A1 (en) 2016-06-29
JP2016532967A (ja) 2016-10-20
CN105474193A (zh) 2016-04-06
KR20160047484A (ko) 2016-05-02
US20150058507A1 (en) 2015-02-26
WO2015031115A1 (en) 2015-03-05

Similar Documents

Publication Publication Date Title
ES2647147T3 (es) Procedimiento para minimizar el número de líneas de IRQ desde periféricos a un cable
KR102445344B1 (ko) 시리얼 버스를 위한 수신 클록 캘리브레이션
EP3095038B1 (en) Camera control interface extension with in-band interrupt
US9990316B2 (en) Enhanced serial peripheral interface
US7707339B2 (en) Data arbitration on a bus to determine an extreme value
JP6625557B2 (ja) センサーグローバルバス
US9684624B2 (en) Receive clock calibration for a serial bus
US20160217090A1 (en) Method and apparatus to enable multiple masters to operate in a single master bus architecture
CN112639756B (zh) 混合模式射频前端接口
EP3103021B1 (en) Methods and apparatus for a multiple master bus protocol
US20150378959A1 (en) Multi-protocol serial nonvolatile memory interface
US20190213165A1 (en) Priority scheme for fast arbitration procedures
US10747360B2 (en) Display device and driver thereof
KR20180092972A (ko) 하드웨어 플로우-제어를 갖는 강화된 직렬 주변장치 인터페이스
CN107710179B (zh) 具有多个sdio单元的多址单sdio接口
US9880895B2 (en) Serial interface with bit-level acknowledgement and error correction
EP3475836A1 (en) Accelerated i3c master stop
JP4666143B2 (ja) データ転送処理装置
CA2281589C (en) Method for exchanging signals between modules connected via a bus and a device for carrying out said method
US11360916B2 (en) Group slave identifier time-multiplexed acknowledgment for system power management interface