ES2882146T3 - Sistemas y métodos para controlar flujos de datos isócronos - Google Patents

Sistemas y métodos para controlar flujos de datos isócronos Download PDF

Info

Publication number
ES2882146T3
ES2882146T3 ES17737134T ES17737134T ES2882146T3 ES 2882146 T3 ES2882146 T3 ES 2882146T3 ES 17737134 T ES17737134 T ES 17737134T ES 17737134 T ES17737134 T ES 17737134T ES 2882146 T3 ES2882146 T3 ES 2882146T3
Authority
ES
Spain
Prior art keywords
processor
usb
packets
audio
uniform
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
ES17737134T
Other languages
English (en)
Inventor
Andy Yu
Andrew Cheung
Ameya Kulkarni
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 ES2882146T3 publication Critical patent/ES2882146T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L12/40052High-speed IEEE 1394 serial bus
    • H04L12/40058Isochronous transmission
    • 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/382Information transfer, e.g. on bus using universal interface adapter
    • 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/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • 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/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4291Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a clocked 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4295Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using an embedded synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/16Sound input; Sound output
    • G06F3/162Interface to dedicated audio devices, e.g. audio drivers, interface to CODECs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J3/00Time-division multiplex systems
    • H04J3/02Details
    • H04J3/06Synchronising arrangements
    • H04J3/062Synchronisation of signals having the same nominal but fluctuating bit rates, e.g. using buffers
    • H04J3/0632Synchronisation of packets and cells, e.g. transmission of voice via a packet network, circuit emulation service [CES]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L12/40052High-speed IEEE 1394 serial bus
    • H04L12/40117Interconnection of audio or video/imaging devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L12/403Bus networks with centralised control, e.g. polling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/60Software-defined switches
    • H04L49/608ATM switches adapted to switch variable length packets, e.g. IP packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L7/00Arrangements for synchronising receiver with transmitter
    • H04L7/0016Arrangements for synchronising receiver with transmitter correction of synchronization errors
    • H04L7/002Arrangements for synchronising receiver with transmitter correction of synchronization errors correction by interpolation
    • H04L7/0029Arrangements for synchronising receiver with transmitter correction of synchronization errors correction by interpolation interpolation of received data signal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/2803Home automation networks
    • H04L2012/2847Home automation networks characterised by the type of home appliance used
    • H04L2012/2849Audio/video appliances
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • General Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Systems (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

Un método para controlar la comunicación de transmisiones de audio y/o video en un sistema de bus de serie universal, USB, que comprende: recibir paquetes de tamaño variable que contienen datos de audio y/o video en un controlador USB (314) en un primer procesador; ensamblar paquetes de tamaño uniforme en el primer procesador (304) en base a los paquetes de tamaño variable recibidos, en donde ensamblar paquetes de tamaño uniforme comprende calcular un tamaño de los paquetes de tamaño uniforme usando una frecuencia de bus USB y un número de muestras por paquete de tamaño variable; y pasar los paquetes de tamaño uniforme a un segundo procesador (302), en donde dicho segundo procesador es un procesador de aplicación en donde dichos paquetes de tamaño uniforme son utilizables por aplicaciones en una capa de aplicación en una pila de protocolos del segundo procesador.

Description

DESCRIPCIÓN
Sistemas y métodos para controlar flujos de datos isócronos
ANTECEDENTES I Campo de la invención
La tecnología de la divulgación se refiere generalmente al manejo de flujos de datos arbitrarios en un bus de datos. II. Antecedentes
Los dispositivos informáticos se han vuelto omnipresentes en la vida contemporánea. La popularidad de los dispositivos informáticos se ha disparado, en parte, debido a la funcionalidad cada vez mayor disponible en los dispositivos informáticos. Simultáneamente con el aumento de la funcionalidad, ha habido un aumento en el número y los tipos de dispositivos complementarios que pueden estar asociados con los dispositivos informáticos. En algunos casos, los dispositivos complementarios pueden estar integrados en los dispositivos informáticos, como la integración de una cámara en un teléfono inteligente. En otros casos, los dispositivos complementarios pueden ser periféricos, como auriculares de audio que están acoplados a un dispositivo informático a través de alguna forma de interfaz externa. En ambos casos, han surgido varios protocolos para permitir que las aplicaciones que se ejecutan en el dispositivo informático interactúen con los dispositivos complementarios, según sea necesario.
Un protocolo popular es el protocolo bus de serie universal (USB). El USB existe en diversos tipos, que incluyen velocidad completa (FS), alta velocidad (HS) y supervelocidad (SS). Además, el USB permite varios esquemas de sincronización de reloj entre un anfitrión y un dispositivo periférico. En particular, el USB contempla la sincronización con un reloj desde el dispositivo periférico (denominado asincrónico), la sincronización con un reloj desde el anfitrión (denominado síncrono) y el intercambio de responsabilidades de sincronización de reloj entre el anfitrión y el dispositivo periférico (denominado adaptativo). Si bien los distintos tipos y esquemas de sincronización de reloj permiten la flexibilidad de diseño para aumentar la cantidad de dispositivos que utilizan el protocolo USB, la infinidad de opciones dificultan aún más algunas decisiones de diseño.
Tales decisiones de diseño se complican aún más cuando las transmisiones de audio y/o video se transmiten a través de una interfaz USB. Debido a la naturaleza universal del factor de forma del USB, se espera que un anfitrión USB pueda adaptar tanto la captura de audio/video como la reproducción de audio/video a un periférico. En particular, se espera que el anfitrión USB pueda adaptarse a diferentes velocidades, diferentes esquemas de sincronización de reloj, diferentes velocidades de muestreo y datos de tamaño variable. Los sistemas convencionales colocan la carga sobre dicha adaptación en la capa de aplicación, lo que requiere un almacenamiento intermedio sustancial y algoritmos complicados por parte de las aplicaciones en la capa de aplicación. Además, existen propuestas actuales para aumentar los intervalos de servicio, lo que puede imponer cargas adicionales al procesador de aplicación que maneja la capa de la aplicación. Por consiguiente, se necesita una manera de proporcionar un sistema compatible con USB que permita una mayor flexibilidad en el manejo de flujos de datos variables, tanto los implementados actualmente como los que tienen la flexibilidad para manejar diferentes parámetros de entrada.
RESUMEN DE LA DIVULGACIÓN
Los aspectos divulgados en la descripción detallada incluyen sistemas y métodos para controlar flujos de datos isócronos. La invención se define mediante las reivindicaciones independientes. Las realizaciones ventajosas se definen en las reivindicaciones dependientes. El documento US7215670B1 divulga un módem de bus serie universal (USB) en el que se realizan operaciones de reensamblaje y segmentación fuera del ordenador anfitrión. Un dispositivo de interfaz USB está acoplado a un procesador de señal digital (DSP) en el módem y contiene una memoria compartida en la que se establecen extremos a granel, en donde se pueden almacenar los datos de carga útil recibidos de la celda ATM.
El documento US2010/12202A1 divulga una tarjeta de memoria rápida electrónica que tiene conductos adicionales para comandos y mensajes de estado de modo que los conductos de datos no se obstruyan con comandos y mensajes de estado, lo que permite un mayor rendimiento de datos. Los conductos de comando y estado se activan cuando un detector UAS/BOT detecta que un anfitrión está utilizando un modo SCSI conectado por USB (UAS) en lugar de un modo de transferencia solo a granel (BOT). El anfitrión puede enviar comandos y datos adicionales sin esperar a que se complete un comando anterior cuando opera en modo UAS, pero no mientras opera en modo BOT Una cola de comandos (CQ) en el dispositivo reordena los comandos para acceder a la memoria rápida y fusiona los datos en una memoria intermedia de RAM. Los paquetes USB más pequeños de 1 KB en los conductos de datos se fusionan en cargas útiles de 8 KB más grandes en la memoria intermedia RAM, lo que permite un acceso rápido más eficiente.
BREVE DESCRIPCIÓN DE LAS FIGURAS
La figura 1 es una vista en perspectiva simplificada de un dispositivo de comunicación móvil con un periférico de audio remoto acoplado a través de un cable y conector de bus de serie universal (USB), según un aspecto ejemplar de la presente divulgación;
La figura 2 es un diagrama de bloques de un flujo de audio convencional desde un periférico USB a una capa de aplicación dentro de un procesador;
La figura 3 es un diagrama de bloques de un flujo de audio dentro de un sistema USB según aspectos ejemplares de la presente divulgación;
Las figuras 4A y 4B muestran dos sistemas USB con ubicaciones alternas de un regulador de datos de la presente divulgación;
La figura 5 es un diagrama de bloques de un regulador de datos;
La figura 6 es un diagrama de flujo de señales que muestra cómo se calcula el tamaño del paquete y cómo se pasan los paquetes a una capa de aplicación;
La figura 7 es un diagrama de bloques de un proceso de informe de desviación en banda desde un micrófono a un anfitrión USB; la figura 8 es un diagrama de bloques de un proceso de informe de desviación fuera de banda desde un micrófono a un anfitrión USB;
La figura 9 es un diagrama de bloques de un proceso de informe de desviación en banda desde un micrófono a un anfitrión y cómo el anfitrión lo usa para reproducirlo en un altavoz;
La figura 10 es un diagrama de bloques de un proceso de informe de desviación fuera de banda desde un micrófono a un anfitrión y cómo el anfitrión lo usa para reproducirlo en un altavoz; y
La figura 11 es un diagrama de bloques de un sistema ejemplar basado en un procesador que puede incluir el sistema USB de la figura 3.
DESCRIPCIÓN DETALLADA
Con referencia ahora a las figuras, se describen varios aspectos ejemplares de la presente divulgación. La palabra "ejemplar" se usa en la presente para significar "que sirve como ejemplo, instancia o ilustración". Cualquier aspecto descrito en la presente como "ejemplar" no debe interpretarse necesariamente como preferido o ventajoso sobre otros aspectos.
Los aspectos divulgados en la descripción detallada incluyen sistemas y métodos para controlar flujos de datos isócronos. Los aspectos particulares de la presente divulgación están diseñados para usarse con casi cualquier flujo de datos isócronos, pero son adecuados para su uso con el protocolo bus de serie universal (USB). Además, los aspectos de la presente divulgación son flexibles para adaptarse a las posibilidades de configuración existentes dentro del protocolo USB, así como para adaptarse a los cambios futuros propuestos en el protocolo USB. La flexibilidad de los sistemas y métodos se proporciona calculando: (1) desviación entre la hora del sistema del anfitrión USB y la aplicación y (2) desviación entre el sistema del anfitrión USB y el reloj de un dispositivo USB. En base a estos dos cálculos de desviación, se puede sintetizar una marca de tiempo para programar un próximo calendario de entrega. Mediante el uso de esa marca de tiempo, se puede realizar la corrección de la fluctuación de fase y se pueden ensamblar paquetes de tamaño uniforme para pasar a un procesador de aplicación. El uso de tales paquetes de tamaño uniforme puede eliminar la necesidad de memorias intermedias en una capa de aplicación, lo que puede mejorar la experiencia del usuario cuando un flujo de datos es un flujo de datos de audio.
Antes de abordar aspectos particulares de la presente divulgación, se divulga una breve descripción general de un sistema ejemplar que puede implementar los sistemas y métodos para controlar flujos de datos isócronos. Como se señaló anteriormente, aunque se aplica a varios flujos de datos isócronos, los aspectos ejemplares son particularmente aplicables a los flujos de audio USB. Por lo tanto, el sistema ejemplar es un sistema de audio digital USB.
En este sentido, la figura 1 es una vista en perspectiva simplificada de un dispositivo de comunicación móvil 100 con un receptáculo tipo-C USB 102 configurado para acoplarse a un conector tipo-C USB 104 en un cable USB 106. En un extremo distal del cable USB 106 hay auriculares de audio digital 108 que tienen varios altavoces 110 en los auriculares 112 y un micrófono 114. Las señales de audio digital pueden pasar entre el dispositivo de comunicación móvil 100 y los auriculares de audio digital 108 a través del cable USB 106. El audio desde el micrófono 114 puede estar distribuido de manera desigual en un dominio de tiempo, ya que los patrones de voz rara vez son periódicos. Asimismo, el dispositivo de comunicación móvil 100 no sabe a priori qué velocidad de datos admite el auricular de audio digital 108 ni el dispositivo de comunicación móvil 100 sabe a priori qué formato de sincronización usa el auricular de audio digital 108.
Si bien los aspectos ejemplares de la presente divulgación son muy adecuados para entornos de audio tales como los auriculares de audio digital 108 de la figura 1, la presente divulgación no está tan limitada y puede usarse con una señal de audio/video que pasa entre un dispositivo informático, tal como el dispositivo de comunicación móvil 100, y un casco de realidad virtual que tiene una pantalla, altavoces y un micrófono (o una pantalla que tiene altavoces y un micrófono). Asimismo, aunque anteriormente se describió un cable tipo-C USB, la presente divulgación se puede utilizar fácilmente con otras versiones de USB. De hecho, puede manejar cualquiera de las velocidades USB (por ejemplo, velocidad completa (FS), supervelocidad (SS), alta velocidad (HS)), lo cual es una de las ventajas de la presente divulgación.
La figura 2 proporciona un diagrama de bloques simplificado de cómo se manejan los datos de audio (y quizás video) en un dispositivo de comunicación móvil 200 que no implementa los aspectos de la presente divulgación. El dispositivo de comunicación móvil 200 puede estar acoplado a un periférico USB 202, tal como un auricular de audio digital. El periférico USB 202 puede admitir modos de sincronización de reloj asíncrono, síncrono, adaptativo o mixto y puede incluir uno o más bucles de bloqueo de fase (PLL, dos ilustrados) o bucles de bloqueo de retraso (DLL, no ilustrados). El periférico USB 202 puede recibir datos (denominados ENTRADA de datos), por ejemplo a través de un micrófono (a veces denominado captura), así como datos de salida (denominados SALIDA de datos), por ejemplo a través de un altavoz en un auricular (a veces denominado reproducción). Los datos se pasan hacia y desde el dispositivo de comunicación móvil 200, por ejemplo a través de un cable USB 206, y a través de un receptáculo adecuado (no ilustrado en la figura 2) a un controlador de hardware USB 208 dentro del dispositivo de comunicación móvil 200. El controlador de hardware USB 208 (a veces denominado HW en los dibujos) está conectado comunicativamente a un sistema en chip (SoC) 210. El SoC 210 puede incluir un procesador de señales digitales de audio (ADSP) 212 y un procesador de aplicación (denominado en los dibujos como AP) 214. El ADSP 212 puede incluir un controlador de cliente de audio (UAC) USB 219. Los datos del periférico USB 202 se reciben en el controlador de hardware USB 208 y se pasan al SoC 210. Nótese que los datos del periférico USB 202 tienen fluctuación de fase e incluyen tamaños de trama de datos variables (ilustrados simbólicamente por las cajas de varios tamaños entre el controlador de hardware USB 208 y el controlador UAC 216). Puede producirse una mayor variabilidad si uno o más PLL del periférico USB 202 se ejecutan rápido o lento. Puede producirse una variabilidad aún mayor, porque en el protocolo USB, no existe el requisito de que haya un número fijo de muestras dentro de una trama. Si bien tal variabilidad es parte de lo que contribuye a la flexibilidad y el atractivo del protocolo USB, tal variabilidad es generalmente difícil de manejar en el procesamiento de audio. Cuando el controlador de hardware USB 208 tiene datos en sus memorias intermedias internas (no mostradas), el controlador de hardware USB 208 genera una interrupción para el controlador UAC 216. El controlador de hardware USB 208 no tiene una función de marca de tiempo. El controlador UAC 216 recibe la interrupción, drena la memoria intermedia del controlador de hardware USB 208 e intenta proporcionar una cantidad constante de datos al procesador de aplicación 214. Cuando hay muestreo de audio fraccional, como la frecuencia de muestreo común de 44,1 kilohercios (kHz), que es una fracción en relación con un milisegundo (correspondiente a una velocidad de transferencia de bus USB común de 1000 Hz), el controlador UAC 216 enviará datos con 44 muestras en nueve de diez paquetes y un paquete con 45 muestras. El circuito de procesamiento de datos 218 en el procesador de aplicación 214 usa sus memorias intermedias 220 junto con un temporizador de sistema de alta resolución 222 para suavizar la variabilidad antes de que los datos se proporcionen a los algoritmos de la capa de aplicación 224. Un convertidor de frecuencia de muestreo asíncrono (ASRC) 226 puede ayudar en este proceso de corregir la desviación y un grupo de muestras con fluctuación de fase durante un tiempo. Esta disposición supone una carga para el procesador de aplicación 214 y requiere programación adicional para los algoritmos de la capa de aplicación 224. Nótese que aunque el ADSP 212 y el procesador de aplicación 214 se describen como procesadores separados, ambos dispositivos pueden integrarse en un único circuito integrado (IC). Aunque no se ilustra, un controlador de acceso a la memoria directa (DMA) por hardware puede generar una interrupción de datos, y una marca de tiempo bloqueada por hardware desde el temporizador del sistema de alta resolución 222 se almacena en un registro de hardware. Esta marca de tiempo no se asocia fácilmente con los paquetes USB y, por lo tanto, no está disponible para ayudar en la detección de desviaciones.
Los aspectos ejemplares de la presente divulgación proporcionan una detección de desviaciones sin errores a partir de la cual se puede aplicar la corrección de la fluctuación de fase y a partir de la cual se puede calcular una marca de tiempo sintetizada. Usando este sello de tiempo sintetizado, se puede calcular un próximo esquema de entrega que se usa para drenar las memorias intermedias. Además, al reposicionar el cálculo fuera del procesador de aplicación, se pueden proporcionar tamaños de trama de datos uniformes al procesador de la aplicación, lo que a su vez puede mejorar la calidad del audio y potencialmente proporcionar oportunidades de ahorro de energía. Uno de los beneficios de la presente divulgación es la flexibilidad de la divulgación para adaptarse a cualquier forma de enfoque de sincronización de reloj (asíncrono, sincrónico o adaptativo) entre el anfitrión y el dispositivo, así como varias velocidades de datos, diferentes tasas de muestreo, datos de tamaño variable, diferentes velocidades de USB (HS, FS, SS) y diferentes intervalos de servicio. Si bien la presente divulgación puede implementarse estrictamente en hardware, la flexibilidad de la presente divulgación se mejora mediante el uso de software, donde las variables se ajustan más fácilmente para adaptarse a cualquier configuración. Antes de explorar los detalles del sistema de la presente divulgación y las diversas señales que pueden usarse para implementar aspectos de la presente divulgación, se presenta una descripción general de las ecuaciones utilizadas para crear la flexibilidad.
La siguiente sección es intensiva en matemáticas y se conserva para el lector interesado, pero puede no ser fundamental para comprender aspectos ejemplares de la presente divulgación. Para aquellos lectores que prefieren no dejar que las matemáticas entorpezcan su comprensión de la divulgación, el análisis de aspectos ejemplares comienza nuevamente a continuación con referencia a la figura 3.
El modelo básico de entrega de memoria intermedia de audio con velocidad coincidente compensada con desviación que utiliza el anfitrión puede expresarse de la siguiente manera:
marcadores^ —«.= marcadores^— marcador&SH-,j»»»^* ,+ D t D2...+Dm (Ec.1)
En la ecuación 1, marcadoressiguiente (también denominados "Tsiguiente") es la marca de tiempo sintetizada que se utiliza de forma eficaz para programar el próximo calendario de entrega. Marcadoresreferencia (también denominados "Tref') es la marca de tiempo de la primera marca de tiempo sintetizada. Marcadoresdesplazamiento (también denominado "Tdesplazamiento") es el delta de marcadoresreferencia que se utiliza para la entrega de memorias intermedias y también sirve como sincronización para recoger las memorias intermedias para reproducción y captura. En la ecuación 1, cada Di representa la desviación total entre el reloj de un dispositivo y una referencia de tiempo USB. En la mayoría de las situaciones, solo hay que considerar tres relojes: el reloj del anfitrión USB, el reloj de la aplicación de audio y el reloj del dispositivo USB. El reloj del anfitrión USB sirve como referencia de tiempo del sistema para los otros dos relojes y, por lo tanto, la ecuación 1 normalmente se simplificará a:
marcadoressgiitnte — rnarcadoreS'^^üricj"^- m a rea d o
Figure imgf000005_0001
(Ec. 2)
La ecuación 2 funciona tanto para la captura de audio como para las rutas de reproducción de audio. Dapp-usb es la diferencia de tiempo entre el reloj de la aplicación de audio y el reloj del anfitrión USB. Ddispositivo-usb es qué tan rápido va el reloj del dispositivo USB con referencia al reloj del anfitrión USB. Juntos, estos valores proporcionan la desviación del sistema neto (es decir, si la muestra de audio se mueve más rápido o más lento). Para la ruta de captura de audio, cuando Ddispositivo-usb es positivo, el dispositivo entrega muestras de audio más rápido de lo que el anfitrión USB las borra. Cuando Dapp-usb es positivo, la aplicación de audio recupera muestras de audio más rápido de lo que las entrega el anfitrión USB. En la ruta de reproducción de audio, cuando Dapp-usb es positivo, la aplicación de audio entrega muestras de audio más rápido de lo que el anfitrión USB las borra. Cuando Ddispositivo-usb es positivo, el dispositivo está recuperando muestras de audio más rápido de lo que las entrega el anfitrión USB. Este valor se pasa a un convertidor de frecuencia de muestreo asíncrono (ASRC) para sintetizar y/o interpolar audio, lo que permite al ASRC saber cuánto corregir.
El Ddispositivo-usb de desviación para las rutas de captura y reproducción puede determinarse explícita o implícitamente. La desviación se obtiene en base a la dirección del flujo de datos (es decir, de dispositivo a anfitrión (generalmente captura) o de anfitrión a dispositivo (generalmente reproducción)). La fuente de la información de desviación depende de lo que anuncie el USB y del modo de sincronización isócrono seleccionado para un par de extremos USB por el sistema operativo de alto nivel (HLOS). De hecho, hay veinte combinaciones de modos de sincronización isócronos entre las rutas de captura y reproducción.
La fuente de información sobre la desviación se resume en la siguiente Tabla 1. Ddispositivo-usb se abrevia como Ddispositivo en la Tabla 1
Tabla 1 Fuente de información sobre la desviación
Figure imgf000005_0002
La Tabla 1 supone que el reloj de la aplicación de audio está en fase con el reloj del anfitrión USB (Dapp-usb= 0). Esta suposición hace que todas las rutas de reproducción (salida) sincrónicas y adaptativas tengan salida: Ddispositivo = 0.
Los aspectos ejemplares de la presente divulgación proporcionan técnicas para detectar la desviación de esencialmente cualquier variación de la frecuencia de muestreo, intervalo de muestreo, tamaño de la muestra, velocidad del bus, modo de sincronización de reloj, o similares. Esta flexibilidad se logra mediante ecuaciones genéricas que se adaptan a estas entradas variables y permiten la detección de desviación adecuada.
Debe tenerse en cuenta que la calidad, el entorno y la precisión de fabricación afectan la capacidad de un reloj asíncrono para mantener la hora en comparación con otro reloj asíncrono en el sistema. Existen sistemas en los que hay varios relojes a lo largo de la ruta de captura y varios relojes en la ruta de reproducción. La desviación neta de una ruta es la suma de las diferencias de tiempo entre cada reloj de subsistema a lo largo de la ruta. La presente divulgación ilustra que, al medir la desviación en la frecuencia adecuada, se habilita la detección de desviación sin errores y se evitan mediciones innecesarias, lo que puede permitir ahorros de energía.
La transmisión de audio en un sistema USB agrega dificultad, ya que se espera que dicha transmisión de audio utilice el modo de transferencia isócrona. Es un modo de ancho de banda dedicado en tiempo real sin verificación de errores ni reintentos. Las muestras de audio se agrupan en forma de paquete de audio y se puede enviar un paquete de audio una vez por cada (micro)trama. Cada una de estas tramas tiene una duración de 125 |is o 1 ms, dependiendo de si la capa física ha seleccionado un modo de transferencia USB HS o FS. El protocolo USB admite el envío de tramas de este tipo en ráfagas para ahorrar energía y manejar grandes latencias de red. El número de tramas por intervalo de servicio se describe mediante 2binterval°-1 donde bintervalo es actualmente un valor entre uno y 16. Se han realizado análisis entre el cuerpo directivo sobre el protocolo USB para expandir este número. El número de tramas por intervalo de servicio es fijo, pero el número de muestras de audio enviadas por ráfaga puede ser variable.
Un factor que se ha considerado pertinente para evaluar las desviaciones incluye mantener la desviación acumulada utilizando la unidad fuente de medida. Las conversiones de una unidad a otra generalmente implican una operación de división que puede introducir errores de redondeo o truncamiento. La acumulación de tales errores de truncamiento puede dar lugar a una divergencia en la interpretación del tiempo entre el anfitrión y el dispositivo. Al mantener la acumulación en la unidad de fuente de medida, cualquier error de truncamiento es temporal y el sistema debería considerarlo como una fluctuación de fase insignificante.
Otro factor es la fluctuación de fase máxima tolerable del sistema. Una fluctuación de fase del sistema razonablemente tolerable es inferior a una muestra de audio de precisión para evitar que el sistema de audio la interprete como una desviación real. Por lo tanto, la fluctuación de fase del sistema tolerable puede ser una función de la frecuencia de muestreo de audio. Si la fluctuación de fase tolerable es lo suficientemente pequeña, la asistencia de hardware puede ser necesaria ya que una implementación de software pura puede no ser capaz de reaccionar lo suficientemente rápido para brindar servicio a una interrupción para marcar el tiempo de un evento. Dadas estas consideraciones, la ecuación 6 puede derivarse al considerar las retroalimentaciones de frecuencia instantánea de un dispositivo de audio USB como una fuente de reloj. En tal caso, Ff es el número promedio de muestras de audio por trama que el dispositivo USB informa al anfitrión USB. Se informa una frecuencia instantánea Ff al anfitrión en el modo de transferencia USB FS en cada:
P e r io d o ^ S 10^ * ^ '^ tramas (Ec. 3)
O en el modo de transferencia USB HS en cada:
Fer¡üdons = 2 p rt!JVií" 1 microtramas (Ec.4)
La derivación instantánea es por lo tanto
¿desviación = Ff< - Fn-i (Ec. 5}
y se calcula cuando el anfitrión recibe una retroalimentación
M arcad g re seo itv (D) = (D*1000)/fs * 19,2 MHz (Ec. 6)
Donde fs es la frecuencia de muestreo. Nótese que 19,2 MHz es la velocidad de un temporizador de sistema de alta resolución ejemplar. Si el temporizador del sistema de alta resolución tiene una velocidad diferente, se debe sustituir aquí por un valor diferente, que convierte la ecuación 6 en la siguiente ecuación genérica.
MarcadoreSconv(D) = (D*1IOOO)/fs * ftennporizador (Ec. GA)
La recuperación de un reloj a partir de una señal USB 2.0 se ve dificultada por la equivalencia de definición del paquete virtual como una trama virtual. En consecuencia, se requiere una solución para recuperar un reloj a partir de un flujo de datos no lineal. Tal solución sigue, suponiendo que cada cristal de reloj tiene al menos 500 ppm de precisión. El número de muestras por trama virtual se define de la siguiente manera
Donde fs es la frecuencia de muestreo, ft es la frecuencia del intervalo de servicio y bintervalo posee la definición anterior. Para facilitar la anotación, númMuestrasPorTramaVirtual se puede abreviar como NSPVF
Además, se necesita un multiplicador de alineación, que se define de la siguiente manera:
Figure imgf000007_0001
donde 1000000 se elige arbitrariamente como un valor de base 10 muy grande para aumentar la precisión fraccional. De la ecuación 7 y 8, se puede calcular un número esperado de muestras de la siguiente manera:
númMuestrasEsperado = NSPVF* m ultip licadorAIineaci6 n (Ec. 9)
MultiplicadorAlineación representa el menor número de tramas virtuales que necesita el anfitrión antes de que sea posible una determinación estable de la desviación. El númMuestrasEsperado es el número de muestras que se espera recibir. El NSPVF es una variable intermedia para la claridad visual y no un punto flotante. Para cada MultiplicadorAlineación del número de tramas virtuales recibidas, la desviación se calcula mediante:
¿ de sv iac ió n = númMuestrasRecibido - númMuestrasEsperado (Ec, 10)
Por lo tanto, la desviación neta desde el comienzo de la sesión de audio se calcula mediante:
D — Dneto d&iviaccn ¿desviación (Ec. 11)
La conversión de muestras de audio D al marcador del temporizador del sistema (a veces denominado Qtemporizador) es:
MarcadoreSíonvíDi — D d e s v ¡ a 19r2 fvl Hz (Ec.12y
Nuevamente, nótese que 19,2 MHz es la velocidad del temporizador del sistema de alta resolución. Si el temporizador del sistema de alta resolución tiene un valor diferente, entonces dicho valor diferente debe sustituirse aquí, lo que da como resultado:
Marcadoresconv(D) = D/I^ftemparizador (Ec. 12A)
Con la información de desviación y la información de detección del reloj descritas anteriormente, se puede realizar una coincidencia de frecuencia. Con la coincidencia de frecuencia, se pueden crear tamaños de muestra uniformes y enviarlos al procesador de aplicación como se describe a continuación. Sin embargo, antes de abordar los tamaños de muestra uniformes, se presentan más matemáticas para explicar la coincidencia de frecuencia. En particular, esto ayuda a definir cómo calcular los marcadoresdesplazamiento.
Recuerde, desviación ausente
Marcad O ness ¡guíente - marcadores referencia marcad O ne Sdes plazam ¡euto (Ec. 13)
Donde marcadoresdespiazamiento se define de la siguiente manera
Figure imgf000008_0001
Donde fd es la frecuencia de entrega e i aumenta en cada marcadoressiguiente y se envuelve cuando i = fs para evitar que i se desborde. En el punto de envoltura, marcadoresreferencia = marcadoressiguiente y luego i = 0.
Armados con las matemáticas expuestas anteriormente, ahora se exponen aspectos ejemplares de la presente divulgación. En este sentido, la figura 3 es un diagrama de bloques simplificado de cómo se maneja el audio (y quizás el video) en un dispositivo de comunicación móvil 300 que implementa aspectos ejemplares de la presente divulgación.
El dispositivo de comunicación móvil 300 incluye un procesador de aplicación 302 y un ADSP 304. En un aspecto ejemplar, el procesador de aplicación 302 y el ADSP 304 pueden estar en un único SoC 306. Asimismo, aunque se describen como procesadores conceptualmente distintos, estos procesadores pueden ser parte de un único procesador anfitrión. Incluso, aunque se le atribuyen funciones específicas tales como "procesador de aplicación" o "ADSP", debe apreciarse que otros procesadores, a los que tradicionalmente no se hace referencia por tales denominaciones, aún pueden implementar una funcionalidad comparable sin apartarse del alcance de la presente divulgación. El procesador de aplicación 302 puede comunicarse con un controlador de hardware USB 308, que se comunica con un periférico USB 310, como un auricular, a través de una interfaz USB 312, que puede incluir receptáculos USB, conectores USB y un cable USB.
Al igual que con el periférico USB 202 de la figura 2, el periférico USB 310 puede admitir modos de sincronización de reloj asíncrono, síncrono, adaptativo o mixto y puede incluir uno o más PLL (dos ilustrados) o DLL (no ilustrados). El periférico USB 310 puede recibir datos (denominados Entrada de datos), por ejemplo a través de un micrófono (como se indicó anteriormente, a veces denominado captura), así como datos de salida (Salida de datos), por ejemplo a través de un altavoz en un auriculares (como se indicó anteriormente, a veces denominado reproducción). Los datos se pasan hacia y desde el dispositivo de comunicación móvil 300 a través de la interfaz USB 312.
El ADSP 304 puede incluir un controlador UAC 314. El controlador UAC 314 puede usar una interfaz de controlador del anfitrión (HCI) (no ilustrada) para comunicarse con el controlador de hardware USB 308. En los sistemas convencionales, no hay HCI en el controlador UAC 314, ya que el ADSP 304 no se comunica con el controlador de hardware USB 308. Sin embargo, aspectos ejemplares de la presente divulgación permiten la comunicación entre el controlador de hardware USB 308 y el ADSP 304. Por consiguiente, puede proporcionarse una HCI para efectuar tal comunicación. El controlador UAC 314 recibe tramas de datos inestables y de tamaño variable desde el controlador de hardware USB 308.
Aspectos ejemplares de la presente divulgación añaden una o más memorias intermedias 316 al controlador UAC 314, y acoplan un temporizador del sistema de alta resolución 318 al controlador UAC 314, lo que permite que el controlador UAC 314 pase tamaños de trama de datos estables, precisos y fijos al circuito de procesamiento de datos 320 en el procesador de aplicación 302 (u otro procesador que maneja aplicaciones). Además, el controlador UAC 314 puede proporcionar retrasos de captura y reproducción en red al circuito de procesamiento de datos 320 a través de una señal 322. Al proporcionar tramas de datos uniformes al circuito de procesamiento de datos 320, los algoritmos de la capa de aplicación 324 no tienen que almacenar en memoria intermedia los datos muy pesados o realizar las correcciones asociadas con el circuito de procesamiento de datos 218 de la figura 2. Incluso aunque los algoritmos de la capa de aplicación 324 reciben tramas de datos uniformes, el procesador de aplicación 302 puede incluir un ASRC 326 que puede ayudar a procesar la señal 322 para actuar sobre la información de corrección de desviación y/o problemas de fluctuación de fase. Una vez más, nótese que el procesador de aplicación 302 puede fusionarse con el ADSP 304 como un único microprocesador o puede recibir diferentes nombres de diferentes proveedores.
Si bien la figura 3 contempla posicionar el controlador UAC 314 en el ADSP 304, debe apreciarse que también son posibles otras posiciones como se ilustra en las figuras 4A y 4B.
En este sentido, la figura 4A ilustra un auricular 400 (u otro periférico USB) con un convertidor de audio digital (DAC) 402 que captura datos desde un micrófono o similar y proporciona los datos a un regulador de datos UAC (registro de datos UAC) 404. El reg. UAC 404 hace que el tamaño del paquete sea uniforme y proporciona paquetes a un controlador de hardware 406, que a su vez pasa los paquetes por un cable 408 a un anfitrión USB 410. El anfitrión USB 410 recibe los paquetes con un controlador de hardware del anfitrión 412. Las aplicaciones 414 (etiquetadas como APP en las figuras) en la capa de aplicación (no ilustrada específicamente) reciben los paquetes uniformes y los procesan como ya es sabido. En tal disposición, el anfitrión USB 410 puede funcionar de manera similar al anfitrión USB de la figura 2, pero se beneficia de los paquetes uniformes que el auricular 400 envía al anfitrión USB 410. El aumento de los circuitos en el auricular 400 puede aumentar el costo del auricular 400, pero puede proporcionar beneficios a los anfitriones USB heredados.
En la figura 4B, el anfitrión USB 410 permanece sin cambios, pero en lugar de colocar un regulador de datos en el auricular 400, se proporciona un regulador de datos UAC 418 en un dispositivo intermedio 420, tal como un dispositivo de protección 420. El dispositivo de protección 420 puede estar en un lado del anfitrión 422A o en un lado periférico 422B de un cable 422. Es decir, el cable 422 puede extenderse entre el dispositivo de protección 420 y un auricular 424 con el dispositivo de protección 420 insertado en un receptáculo USB del anfitrión USB 410, o el cable 422 puede extenderse entre el anfitrión USB 410 y el dispositivo de protección 420 con el dispositivo de protección 420 insertado en el receptáculo USB del auricular 424. Como posibilidad adicional (ilustrada), el dispositivo de protección puede estar en el cable 422 y el cable 422 se inserta en los receptáculos respectivos del anfitrión USB 410 y el auricular 424.
La figura 5 es un diagrama de bloques de un regulador de datos que puede implementarse dentro del controlador UAC 314 de la figura 3. La memoria intermedia 316 (también denominada FIFO en la figura 5), recibe un paquete de datos de tamaño variable 500. Un detector de desviación en banda 502 lee el tamaño del paquete de datos 500 en la memoria intermedia 316 cuando esta recibe una señal de interrupción de datos disponibles 504. Alternativamente, un detector de desviación fuera de banda 506 recibe una señal de paquete de retroalimentación asíncrona 508 y la señal de interrupción de datos disponibles 504. Uno de los detectores 502 o 506 es leído por un multiplexor 510. El multiplexor 510 selecciona entre las salidas de los detectores 502 y 506 mediante una señal del tipo de detección establecida 512. El multiplexor 510 envía una señal a un acumulador de desviación del dispositivo 514. Simultáneamente, la señal de interrupción de datos disponibles 504 se proporciona a un detector de desviación de reloj local 516, que proporciona una señal a un acumulador de desviación de reloj local 518. Un sumador 520 resta la salida del acumulador de desviación del dispositivo 514 (Dd¡spos¡t¡vo-usb) desde la salida del acumulador de desviación de reloj local 518 (Dapp-usb) y emite una señal 522. La señal 522 corresponde a Dapp-usb - Ddispositivo-usb
Continuando con la referencia a la figura 5, la señal de interrupción de datos disponibles 504 también se proporciona a un manejador de referencia inicial 524. El manejador de referencia inicial 524 emite un contador de lectura a una función de reloj de alta resolución 526. La función de reloj de alta resolución 526 también recibe un contador de lectura desde el detector de desviación de reloj local 516. La función de reloj de alta resolución 526 también puede recibir un valor establecido Ft del temporizador de alta resolución, que permitiría variar el valor del reloj. Nótese que es poco probable que este valor cambie a mitad de la operación, pero se puede establecer en la inicialización del sistema o similar. La función de reloj de alta resolución 526 interopera con el temporizador del sistema de alta resolución 318. El manejador de referencia inicial 524 también se agrega a un elemento de retraso de fluctuación de fase 528 y se usa para establecer un Tref inicial para iniciar una marca de tiempo más la señal de retardo 530.
La memoria intermedia 316 emite una señal de datos 532 (etiquetada como "datos de lectura") a un manejador de entrega de datos 534, que también recibe una salida 536 del temporizador del sistema de alta resolución 318. El manejador de entrega de datos 534 también puede recibir un comando de tamaño de memoria intermedia de salida establecido (quizás desde el ASRC 326) que indica qué tamaño de memoria intermedia el ASRC espera procesar. La señal 530 se proporciona a un sumador 538 que agrega Tref al mismo y genera una señal intermedia 540, a la que se agrega Tdesplazamiento, para generar una señal 542, que se pasa a un sumador 544 (que esencialmente realiza cualquiera de las ecuaciones 6 o 12, según corresponda). El sumador 544 agrega la señal 542, la señal 522 y la salida 536 para generar una marca de tiempo sintetizada 546 (principalmente la ecuación 2). El manejador de entrega de datos 534 emite un comando de ejecución para el sumador 544 y proporciona un número fijo de muestras al ASRC 326. El ASRC 326 también recibe la marca de tiempo 546 sintetizada y emite datos que se someten a muestreo nuevamente 548. Aunque no se ilustra específicamente, también se puede recibir un comando de frecuencia de muestreo establecido para ayudar en los cálculos, como se indicó anteriormente.
En un aspecto ejemplar, este regulador de datos se implementa como software. En otro aspecto ejemplar, este regulador de datos puede implementarse en hardware.
La figura 6 es un diagrama de flujo de señales que representa señales y procesos que pueden ocurrir cuando una aplicación en un procesador de datos desea utilizar el controlador UAC 314 de la figura 3. Inicialmente, una aplicación proporciona información de configuración en una etapa de configuración de activación. La información de configuración puede incluir frecuencia de muestreo, frecuencia de transferencia de bus, tamaño de la memoria intermedia, modo de recuperación de reloj y similares. Esta información de configuración se proporciona a un regulador de frecuencia de datos (véase la figura 5) del controlador UAC 314. El regulador de frecuencia de datos calcula cómo entregar datos desde el controlador de hardware USB 308 de forma precisa y estable (sin fluctuación de fase) a la frecuencia que se ha solicitado. El proceso para este cálculo se explica arriba. El elemento temporizador/reloj en este diagrama es el temporizador del sistema de alta resolución 318 de la figura 3, pero también podrían usarse otros temporizadores.
La figura 6 es un diagrama de flujo de señales 600 que representa señales y procesos que pueden ocurrir cuando una aplicación en un procesador de datos, tal como el procesador de aplicación 302, desea usar el controlador UAC 314. Inicialmente, la aplicación proporciona la información de configuración en la etapa de configuración de activación (bloque 602). El procesador de aplicación 302 establece la frecuencia de muestreo de entrada y de salida en el ASRC 326 y envía la frecuencia de muestreo de entrada, la frecuencia de transferencia del bus, el intervalo de servicio (que es mayor o igual que la frecuencia de transferencia del bus), el tamaño de la memoria intermedia de salida, el modo de recuperación del reloj (asíncrono, adaptativo o síncrono), cualquier parámetro de configuración específico de la interfaz de hardware, y registra cualquier memoria física para la memoria intermedia 316 en el controlador UAC 314 y particularmente en un regulador de datos en el controlador UAC 314. Por último, se envía un comando de activación (señal 604) al regulador de datos. El regulador de datos pasa los parámetros de configuración específicos de la interfaz de hardware al controlador de hardware USB 308 (señal 606) y programa el siguiente espacio de memoria intermedia libre para escribir (señal 608). El controlador de hardware USB 308 envía una señal de evento de datos listos 610 al regulador de datos. Esta señal 610 hace que el regulador de datos lea el temporizador del sistema de alta resolución 318 (señal 612), lea el tamaño de los datos (señal 614) desde el controlador de hardware USB 308 y realice una serie de acciones que incluyen: almacenar el valor del reloj en Tref, agregar Tfluctuación (derivado del tamaño de la memoria intermedia y, si no está explícitamente impulsado por retroalimentación, el tamaño de los datos recibidos) a Tref, inicializar i = 0; Ddispositivo-usb=0; Dapp-usb=0; y calcular el siguiente Tdesplazamiento; calcular Tsiguiente (ecuación 2) (véase generalmente el bloque 616). Luego, el regulador de datos programa Tsiguiente para el temporizador del sistema de alta resolución 318 (señal 618) y programa el siguiente espacio de memoria intermedia libre para escribir (señal 620).
Continuando con la referencia a la figura 6, el sistema entra en un estado estable y el regulador de datos recibe un próximo evento de datos listos (señal 622) desde el controlador de hardware USB 308, que activa una señal de reloj de lectura 624 y una señal de tamaño de datos de lectura 626 que permite que el regulador de datos actualice la desviación de la red (Ddispositivo-usb y Dapp-usb) (véase generalmente el bloque 628).
En algún momento, el controlador de hardware USB 308 puede enviar un evento de retroalimentación de reloj asíncrono (señal 630) al regulador de datos, lo que hace que el regulador de datos actualice Ddispositivo-usb (véase generalmente el bloque 632).
En algún otro momento, el temporizador del sistema de alta resolución 318 puede enviar una señal de evento expirado del temporizador 634 al regulador de datos. En respuesta a esta señal 634, el regulador de datos puede incrementar i en uno, y si i es igual a la frecuencia de muestreo, establecer Tref en Tsiguiente e i = 0; calcular el próximo Tdesplazamiento; y calcular la ecuación 2 (véase generalmente el bloque 636). El regulador de datos puede enviar una señal de datos disponibles 638 al procesador de aplicación 302 y programar Tsiguiente (señal 640) y programar el siguiente espacio de memoria intermedia libre para escribir (señal 642). El procesador de aplicación 302 lee la derivación neta o la marca de tiempo desde el regulador de datos (señal 644) y lee los datos desde la memoria intermedia 316 en el controlador uAc 314 (señal 646) y/o el controlador de hardware USB 308 (señal 646A).
El procesador de aplicación 302 calcula el número de muestras a corregir a partir de la nueva desviación de la red y la desviación de la red anterior (bloque 648), y escribe los datos en su sistema de archivos, por ejemplo, utilizando un comando de escritura con datos, longitud de datos, muestras para corregir y duración para corregir variables. Nótese que los datos pueden ser paquetes de voz. De ser necesario, la corrección de la desviación puede extenderse durante un período configurable para reducir los fallos perceptibles. Sin embargo, incluso con el período extendido, se espera que dicha corrección tenga lugar en el orden de 25 ms en lugar de 10 segundos como a veces se usa en los sistemas convencionales. Luego, el proceso se desactiva (bloque 660).
Nótese además que los aspectos adicionales de la presente divulgación proporcionan técnicas para brindar una detección de desviación sin errores y admitir las futuras iniciativas de ahorro de energía planificadas. En este sentido, debe apreciarse que las frecuencias de muestreo fraccionales, como las relativamente comunes de 44,1 kHz, se prestan a falsas detecciones de desviación debido al desajuste de fase entre los acumuladores en el dispositivo periférico y los acumuladores en el anfitrión. A diferencia de los protocolos de señalización que incluyen marcas de tiempo para ayudar en la detección de desviaciones, el protocolo USB no incluye marcas de tiempo desde el dispositivo periférico al anfitrión. Por el contrario, el anfitrión solo recibe datos USB empaquetados. Dentro de cada paquete USB, la cantidad de datos es variable. El problema con la frecuencia de muestreo fraccional y el tamaño de paquete desconocido ha sido bien documentado en la industria. La solución habitual es promediar el tiempo de las muestras durante un largo período, por ejemplo diez minutos, y luego realizar la corrección de la desviación. El gran retraso en el montaje del promedio de tiempo de las muestras da como resultado una latencia antes de aplicar la corrección. Hasta que se aplique la corrección, el usuario puede experimentar una experiencia de audio degradada. Asimismo, la granularidad de la corrección puede no ser adecuada para eventos de desviación instantáneos o aleatorios.
Los aspectos ejemplares de la presente divulgación permiten una detección de desviación sin errores. Esto se explica mejor con un ejemplo. Suponiendo que la frecuencia de muestreo (Fs) es 44,1 kHz y que la velocidad de transferencia del bus USB es 1000 Hz (es decir, 1 muestra por milisegundo), y un bintervalo (muestras por paquete) de 11, el anfitrión esperaría recibir 45158,4 muestras por intervalo. La muestra fraccionada no se puede enviar según las reglas del USB. El acumulador del dispositivo periférico comienza cuando las muestras se transmiten al anfitrión, pero el acumulador del host se retrasa hasta después de la recepción, por lo que los acumuladores están fuera de fase. En el segundo intervalo, el acumulador periférico es 90316,8. Nuevamente, es la muestra fraccional la que se muestra como una desviación en relación con el acumulador del anfitrión. Con el tiempo, sin una desviación externa, esta desviación alternará entre 1 y 0, pero en ocasiones puede provocar que se realice una corrección que no es necesaria.
En lugar de promediar el tiempo de la desviación como en las soluciones anteriores, los aspectos ejemplares de la presente divulgación evalúan el resto fraccional y encuentran el número de intervalos requeridos para llegar a un número entero. En el presente ejemplo , si el resto fraccional es 0,4, entonces el número de intervalos necesarios para llegar a un número entero es 5. (0,4 = 2/5, el denominador es 5, entonces cinco intervalos). El controlador UAC 314 puede comprobar el acumulador en un límite determinado por el número de intervalos calculados de este modo. Por lo tanto, en este ejemplo, el controlador UAC 314 comprueba la desviación cada cinco intervalos. La desviación ilusoria causada por la frecuencia de muestreo fraccional no está presente, por lo que si se detecta una desviación, se trata de una desviación real para la que se debe realizar una corrección (es decir, interpolación, decimación o similar). Además, al ignorar la desviación en las muestras intermedias, se pueden omitir los cálculos, lo que puede resultar en ahorros de energía.
El protocolo USB contempla dos formas de informes de desviación. La primera es una detección de desviación implícita en la que las señales entrantes se examinan y se comparan con valores conocidos para determinar una desviación. El segundo es una señalización de desviación fuera de banda explícita enviada por el dispositivo periférico al anfitrión, donde el dispositivo periférico compara las muestras recibidas con un número esperado de muestras e informa cualquier desviación entre estos dos valores. El protocolo USB no dice nada sobre cómo se realiza la detección de desviación implícita, y el protocolo USB tampoco dice nada sobre cómo el anfitrión puede corregir cualquier desviación detectada (ya sea implícita o explícitamente). Anteriormente, la presente divulgación ha establecido varias ecuaciones y un proceso para manejar la detección de desviación y su corrección. Las figuras 7­ 10 ilustran las dos posibles posibilidades de informes de desviación tanto para fuentes de audio (figuras 7 y 8) como para colectores de audio (figuras 9 y 10) y el proceso de corrección. En particular, la figura 7 ilustra un proceso de informe de desviación en banda para una fuente de audio, a saber, un micrófono 700. Los datos son capturados por el micrófono 700 y pasados en paquetes de datos de tamaño variable (bloque 702) a una frecuencia constante a través de un controlador de dispositivo USB 704 a un controlador del anfitrión USB 706 en un anfitrión USB. El controlador del anfitrión USB 706 obtiene la información de desviación implícitamente desde los datos del micrófono 700 y la información de desviación extraída se usa para determinar Tref Tdesplazamiento para sincronizar la entrega al cliente de audio y programar la sincronización (bloque 708) mientras los datos se almacenan en una memoria intermedia 710. La fórmula para determinar Tref Tdesplazamiento se estableció anteriormente. En un disparador del temporizador 712 basado en la salida del bloque 708, se envía un número fijo de paquetes a una frecuencia variable (bloque 714) a un ASRC 716 desde la memoria intermedia 710. Al mismo tiempo, la información de desviación se usa para informar el retraso de reproducción neto (bloque 718) y generar una marca de tiempo sintetizada (bloque 720). El ASRC 716 emite datos sometidos nuevamente a muestreo (bloque 722). Si bien el número fijo de paquetes es fijo, variar la frecuencia permite corregir la desviación. Es decir, la entrega de paquetes puede acelerarse para corregir una desviación o ralentizarse para corregir la desviación en la otra dirección.
De manera similar, la figura 8 es sustancialmente similar, pero refleja un proceso de informe de desviación fuera de banda para un micrófono 800. En particular, la detección de desviación se realiza mediante un controlador de dispositivo USB 802 basado en la salida del micrófono 800. El controlador de dispositivo USB 802 genera un informe de desviación fuera de banda (bloque 804) y también envía paquetes de datos de tamaño variable a una frecuencia constante (bloque 806). Tanto la información de desviación como los datos se proporcionan a un controlador del anfitrión USB 808 en un anfitrión USB. La información de desviación se usa para determinar Tref Tdesplazamiento para sincronizar la entrega a un cliente de audio y programar la sincronización (bloque 810) usando las ecuaciones establecidas anteriormente mientras los datos se almacenan en una memoria intermedia 812. En un disparador del temporizador 814 basado en la salida del bloque 810, la memoria intermedia 812 envía un número fijo de paquetes a una frecuencia variable (bloque 816) a un ASRC 818. Al mismo tiempo, la información de desviación se usa para informar el retraso de reproducción neto (bloque 820) y generar una marca de tiempo sintetizada (bloque 822). El ASRC 818 emite datos sometidos nuevamente a muestreo (bloque 824). Nuevamente, el uso de la frecuencia variable permite corregir la desviación.
Por el contrario, las figuras 9 y 10 exploran el impacto de la desviación en la ruta de reproducción. En este sentido, la figura 9 ilustra un proceso de informe de desviación en banda. Un micrófono 900 puede actuar como el micrófono 700 de la figura 7, pero el altavoz 902 es de mayor interés. El altavoz 902 recibe datos de un controlador del dispositivo USB 904. El controlador del dispositivo USB 904 recibe datos desde un controlador del anfitrión USB 906. El controlador del anfitrión USB 906 compara los datos que entran en el controlador del anfitrión USB 906 con la referencia del USB, como se describió anteriormente para determinar la información de desviación. Esta información de desviación se usa para determinar Tref Tdesplazamiento para sincronizar la entrega a un cliente de audio y programar la sincronización (bloque 908) usando las ecuaciones descritas anteriormente. Esta determinación se usa para ayudar a generar un disparador del temporizador (bloque 910), informar el retraso neto de grabación (bloque 912) y crear una marca de tiempo sintetizada (bloque 914). En el disparador del temporizador (bloque 910), se recupera un número fijo de paquetes a una frecuencia variable (bloque 916) y se proporciona a un módulo de audio 918, que almacena los paquetes en una memoria intermedia 920. La memoria intermedia 920 libera los paquetes de datos de tamaño variable a una frecuencia constante (bloque 922) y los proporciona al controlador del anfitrión USB 906, que los pasa al altavoz 902 a través del controlador del dispositivo uSb 904. El uso de paquetes de datos de tamaño variable permite corregir la desviación. La corrección de la desviación en la dirección del altavoz puede inferirse a partir de la desviación detectada en el controlador del anfitrión USB 906 a través de un detector de desviación en banda, siempre que tanto el micrófono 900 como el altavoz 902 estén sincronizados a través de la misma fuente.
De manera similar, la figura 10 ilustra un proceso de informe de desviación fuera de banda. Un micrófono 1000 puede actuar como el micrófono 800 de la figura 8 descrito anteriormente. Más interesante es el altavoz 1002. El altavoz 1002 pasa información y datos de desviación fuera de banda (bloque 1004) a un controlador del dispositivo USB 1006. El controlador del dispositivo USB 1006 recibe los datos desde un controlador del anfitrión USB 1008 e igualmente pasa la información de desviación fuera de banda al controlador del anfitrión USB 1008. Esta información de desviación se usa para determinar Tref Tdesplazamiento para sincronizar la entrega a un cliente de audio y programar la sincronización (bloque 1010). Esta determinación se usa para ayudar a generar un disparador del temporizador (bloque 1012), informar el retraso neto de grabación (bloque 1014) y crear una marca de tiempo sintetizada (bloque 1016). En el disparador del temporizador (bloque 1012), se recupera un número fijo de paquetes a una frecuencia variable (bloque 1018) y se proporciona a un módulo de audio 1020, que almacena los paquetes en una memoria intermedia 1022. La memoria intermedia 1022 libera los paquetes de datos de tamaño variable a una frecuencia constante (bloque 1024) y los proporciona al controlador del anfitrión USB 1008, que los pasa al altavoz 1002 a través del controlador del dispositivo USB 1006. Nuevamente, el uso de paquetes de datos de tamaño variable permite corregir la desviación.
Como se señaló anteriormente, los aspectos ejemplares también permiten futuros ahorros de energía contemplados. Esta posibilidad está habilitada por los algoritmos genéricos (a veces denominados agnósticos) que se utilizan para manejar los datos variables y las frecuencias de muestreo. Es decir, en las ecuaciones anteriores, las ecuaciones comienzan con el agnóstico fs como la frecuencia de muestreo y ft como la velocidad de transferencia del bus (que ya contempla FS, SS y HS). Mediante el uso de estos valores agnósticos en los algoritmos de la capa de aplicación 324, se adaptan otras frecuencias de muestreo nuevas u otras frecuencias de muestreo no estándar. El enfoque agnóstico permite la estimación adecuada de un DLL. Debe apreciarse que un aumento en bintervalo (el número de muestras por paquete) aumenta el tamaño del paquete y también aumenta el tiempo que se tarda en llenar la memoria intermedia 316. Dado que el procesador de aplicación 302 está inactivo mientras la memoria intermedia 316 se está llenando, el procesador de aplicación 302 puede ponerse en un modo de bajo consumo de energía o en un modo de suspensión. Cuanto más tiempo se tarda en llenar la memoria intermedia 316 (es decir, un mayor número de muestras por paquete), más tiempo puede estar el procesador de aplicación 302 en el modo de suspensión. Cuanto más tiempo esté el procesador de aplicación 302 en el modo de suspensión, más energía se ahorrará. Por lo tanto, existe presión en la industria para aumentar el número de muestras por paquete. Al tener un bintervalo genérico en los algoritmos de la capa de aplicación 324, los aspectos ejemplares de la presente divulgación pueden aceptar valores de bintervalo más grandes en el descriptor del dispositivo de audio y así adaptar cualquier cambio futuro en el número de muestras por paquete y, por lo tanto, permitir futuros ahorros de energía.
Los sistemas y métodos para controlar flujos de datos isócronos según los aspectos divulgados en la presente pueden proporcionarse o integrarse en cualquier dispositivo basado en procesador. Ejemplos, no restrictivos, incluyen un decodificador, una unidad de entretenimiento, un dispositivo de navegación, un dispositivo de comunicaciones, una unidad de datos de ubicación fija, una unidad de datos de ubicación móvil, un dispositivo de sistema de posicionamiento global (GPS), un teléfono móvil, un teléfono celular, un teléfono inteligente, un teléfono con protocolo de inicio de sesión (SIP), una tableta, un tabléfono, un servidor, un ordenador, un ordenador portátil, un dispositivo informático móvil, un dispositivo informático portátil (por ejemplo, un reloj inteligente, un rastreador de saludo o de ejercicios, gafas, etc.), un ordenador de escritorio, un asistente digital personal (PDA), un monitor, un monitor del ordenador, un televisor, un sintonizador, una radio, una radio satelital, un reproductor de música, un reproductor de música digital, un reproductor de música portátil, un reproductor de video digital, un reproductor de video, un reproductor de discos de video digital (DVD), un reproductor de video digital portátil, un automóvil, un componente de vehículo, sistemas de aviónica, un dron y un multicóptero.
En este sentido, la figura 11 ilustra un ejemplo de un sistema basado en procesador 1100 que puede emplear un sistema USB que realiza la detección de desviación, la coincidencia de frecuencia y el ensamblaje uniforme de paquetes descritos en la presente. En este ejemplo, el sistema basado en procesador 1100 incluye una o más unidades de procesamiento central (CPU) 1102, cada una de las cuales incluye uno o más procesadores 1104. Las CPU 1102 pueden tener una memoria caché 1106 acoplada los procesador 1104 para un acceso rápido a los datos almacenados temporalmente. La CPU 1102 está acoplada a un bus del sistema 1108 y puede interconectar dispositivos maestros y esclavos incluidos en el sistema basado en procesador 1100. Como se sabe, la CPU 1102 se comunica con estos otros dispositivos intercambiando información de dirección, control y datos a través del bus del sistema 1108. Por ejemplo, la CPU 1102 puede comunicar solicitudes de transacciones de bus a un controlador de memoria 1110 como un ejemplo de un dispositivo esclavo. Aunque no se ilustra en la figura 11, podrían proporcionarse múltiples buses del sistema 1108, en donde cada bus del sistema 1108 constituye una estructura diferente.
Se pueden conectar otros dispositivos maestros y esclavos al bus del sistema 1108. Como se ilustra en la figura 11, estos dispositivos pueden incluir un sistema de memoria 1112, uno o más dispositivos de entrada 1114, uno o más dispositivos de salida 1116, uno o más dispositivos de interfaz de red 1118 y uno o más controladores de pantalla 1120, como ejemplos. Los dispositivos de entrada 1114 pueden incluir cualquier tipo de dispositivo de entrada, incluidos, entre otros, teclas de entrada, interruptores, procesadores de voz, etc. Los dispositivos de salida 1116 pueden incluir cualquier tipo de dispositivo de salida, incluidos, entre otros, audio, video, otros indicadores visuales, etc. El dispositivo de interfaz de red 1118 puede ser cualquier dispositivo configurado para permitir el intercambio de datos hacia y desde una red 1122. La red 1122 puede ser cualquier tipo de red, incluidas, entre otras, una red cableada o inalámbrica, una red privada o pública, una red de área local (LAN), una red de área local inalámbrica (WLAN), una red de área amplia (WAN), una red BLUETOOTH™ e Internet. Los dispositivo de interfaz de red 1118 se pueden configurar para admitir cualquier tipo de protocolo de comunicaciones deseado. El sistema de memoria 1112 puede incluir una o más unidades de memoria 1124 (0-N).
La CPU 1102 también se puede configurar para acceder a los controladores de pantalla 1120 a través del bus del sistema 1108 para controlar la información enviada a una o más pantallas 1126. El controlador de pantalla 1120 envía información a la pantalla 1126 para que se muestre a través de uno o más procesadores de vídeo 1128, que procesan la información que se va a mostrar en un formato adecuado para la pantalla 1126. La pantalla 1126 puede incluir cualquier tipo de pantalla, incluidos, entre otros, un tubo de rayos catódicos (CRT), una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodos emisores de luz (LED), etc.
Los expertos en la técnica apreciarán además que los diversos bloques, módulos, circuitos y algoritmos lógicos ilustrativos descritos en relación con los aspectos divulgados en la presente pueden implementarse como hardware electrónico, instrucciones almacenadas en la memoria o en otro medio legible por ordenador y ejecutarse por un procesador u otro dispositivo de procesamiento, o combinaciones de ambos. Los dispositivos descritos en la presente pueden emplearse en cualquier circuito, componente de hardware, circuito integrado (IC) o chip IC, como ejemplos. La memoria divulgada en la presente puede ser de cualquier tipo y tamaño y puede configurarse para almacenar cualquier tipo de información deseada. Para ilustrar claramente esta intercambiabilidad, diversos componentes, bloques, módulos, circuitos y etapas ilustrativos se han descrito anteriormente por lo general en términos de su funcionalidad. La forma en que se implementa dicha funcionalidad depende de la aplicación particular, las opciones de diseño y/o las limitaciones de diseño impuestas al sistema en general. Los expertos pueden implementar la funcionalidad descrita de diferentes maneras para cada aplicación en particular, pero dichas decisiones de implementación no deben interpretarse como una desviación del alcance de la presente divulgación.
Los diversos bloques lógicos, módulos y circuitos ilustrativos descritos en relación con los aspectos divulgados en la presente pueden implementarse o realizarse con un procesador, un procesador de señal digital (DSP), un circuito integrado específico de la aplicación (ASIC), arreglos de compuertas lógicas programables en sitio (FPGA) u otro dispositivo lógico programable, compuerta discreta o lógica de transistor, componentes de hardware discretos o cualquier combinación de los mismos diseñada para realizar las funciones descritas en la presente. Un procesador puede ser un microprocesador, pero como alternativa, el procesador puede ser cualquier procesador convencional, controlador, microcontrolador o máquina de estado. Un procesador también puede implementarse como una combinación de dispositivos informáticos (por ejemplo, una combinación de un DSP y un microprocesador, una pluralidad de microprocesadores, uno o más microprocesadores junto con un núcleo DSP o cualquier otra configuración de este tipo).
Los aspectos divulgados en la presente pueden estar incorporados en hardware y en instrucciones que se almacenan en hardware y pueden residir, por ejemplo, en memoria de acceso aleatorio (RAM), memoria rápida, memoria de solo lectura (ROM), ROM eléctricamente programable (EPROM), ROM programable borrable eléctricamente (EEPROM), registros, un disco duro, un disco extraíble, un CD-ROM o cualquier otra forma de medio legible por ordenador conocido en la técnica. Un medio de almacenamiento de ejemplo está acoplado al procesador de tal manera que el procesador puede leer información desde, y escribir información en el medio de almacenamiento. Como alternativa, el medio de almacenamiento de muestra puede formar parte del procesador. El procesador y el medio de almacenamiento pueden residir en un ASIC. El ASIC puede estar en una estación remota. Como alternativa, el procesador y el medio de almacenamiento pueden residir como componentes discretos en una estación remota, estación base o servidor.

Claims (15)

REIVINDICACIONES
1. Un método para controlar la comunicación de transmisiones de audio y/o video en un sistema de bus de serie universal, USB, que comprende:
recibir paquetes de tamaño variable que contienen datos de audio y/o video en un controlador USB (314) en un primer procesador; ensamblar paquetes de tamaño uniforme en el primer procesador (304) en base a los paquetes de tamaño variable recibidos, en donde ensamblar paquetes de tamaño uniforme comprende calcular un tamaño de los paquetes de tamaño uniforme usando una frecuencia de bus USB y un número de muestras por paquete de tamaño variable; y
pasar los paquetes de tamaño uniforme a un segundo procesador (302), en donde dicho segundo procesador es un procesador de aplicación en donde dichos paquetes de tamaño uniforme son utilizables por aplicaciones en una capa de aplicación en una pila de protocolos del segundo procesador.
2. El método de la reivindicación 1, en donde el primer procesador y el segundo procesador están integrados en un único circuito integrado.
3. El método de la reivindicación 1, en donde recibir los paquetes de tamaño variable en el primer procesador comprende recibir los paquetes de tamaño variable en un microprocesador o un procesador de señales digitales de audio, ADSP (304).
4. El método de la reivindicación 1, en donde recibir los paquetes de tamaño variable en el primer procesador comprende recibir los paquetes de tamaño variable en un dispositivo intermedio (420) entre un periférico (422B) y un anfitrión (422A).
5. El método de la reivindicación 1, en donde recibir los paquetes de tamaño variable comprende recibir los paquetes de tamaño variable en un procesador en un periférico.
6. El método de la reivindicación 1, en donde ensamblar los paquetes de tamaño uniforme comprende recibir una marca de tiempo desde un temporizador de alta resolución (318).
7. Un aparato para un anfitrión para controlar la comunicación de flujos de audio y/o video en un sistema de bus de serie universal que comprende
medios para recibir paquetes de tamaño variable que contienen datos de audio y/o video en un controlador USB en un primer procesador;
medios para ensamblar paquetes de tamaño uniforme en el primer procesador basados en los paquetes de tamaño variable recibidos en donde el ensamblaje de paquetes de tamaño uniforme comprende calcular un tamaño de los paquetes de tamaño uniforme usando una frecuencia de bus USB y un número de muestras por paquete de tamaño variable; y medios para pasar los paquetes de tamaño uniforme a un segundo procesador en donde dicho segundo procesador es un procesador de aplicación en donde dichos paquetes de tamaño uniforme son utilizables por aplicaciones en una capa de aplicación en una pila de protocolos del segundo procesador.
8. El aparato según la reivindicación 7, que comprende en donde el segundo procesador es un procesador de aplicación (302) y comprende además un hardware de bus de serie universal, USB, y en donde los medios para recibir, los medios para ensamblar y los medios para pasar comprenden un procesador de señales digitales de audio, ADSP (304) configurados para:
recibir paquetes de tamaño variable en el ADSP a través del hardware USB (308);
ensamblar paquetes de tamaño uniforme en el ADSP; y
pasar los paquetes de tamaño uniforme al procesador de aplicación (302) para que los utilicen las aplicaciones en la capa de aplicación en la pila de protocolos.
9. El aparato de según la reivindicación 7, en donde el segundo procesador es un procesador de aplicación y comprende además bus de serie universal, USB, hardware y en donde los medios para recibir, los medios para ensamblar y los medios para pasar comprenden:
un sistema en un chip, SoC, que comprende una pluralidad de procesadores configurados para:
recibir paquetes de tamaño variable en el primer procesador (304);
ensamblar paquetes de tamaño uniforme en el primer procesador; y
pasar los paquetes de tamaño uniforme al segundo procesador (302) para que los utilicen las aplicaciones en la capa de aplicación en la pila de protocolos.
10. El aparato de la reivindicación 8 o 9, en donde el primer procesador comprende un microprocesador o un procesador de señales digitales de audio, ADSP (304).
11. Un procesador que comprende el aparato según la reivindicación 7 que comprende:
una memoria intermedia de datos de audio; y en donde el aparato comprende un bus de serie universal, USB, cliente de audio, UAC (314) configurados para:
recibir paquetes de tamaño variable;
ensamblar paquetes de tamaño uniforme; y
pasar los paquetes de tamaño uniforme a un segundo procesador para que los utilicen las aplicaciones en una capa de aplicación en una pila de protocolos.
12. El procesador de la reivindicación 11, en donde el procesador está adaptado para posicionarse dentro de un periférico USB.
13. El procesador de la reivindicación 11, en donde el procesador está adaptado para posicionarse en un dispositivo intermedio (420) configurado para ubicarse entre un periférico y un anfitrión.
14. El procesador de la reivindicación 11, en donde el procesador está adaptado para posicionarse en un anfitrión.
15. El procesador de la reivindicación 11, en donde el procesador está adaptado para integrarse en un dispositivo seleccionado del grupo que consiste en: un decodificador; una unidad de entretenimiento; un dispositivo de navegación; un dispositivo de comunicaciones; una unidad de datos de ubicación fija; una unidad de datos de ubicación móvil; un dispositivo de sistema de posicionamiento global, GPS; un teléfono móvil; un teléfono celular; un teléfono inteligente; un teléfono con protocolo de inicio de sesión, SIP; una tableta; un tabléfono; un servidor; un ordenador; un ordenador portátil; un dispositivo informático móvil; un dispositivo informático portátil; un ordenador de escritorio; un asistente digital personal, PDA; un monitor; un monitor del ordenador; un televisor; un sintonizador; una radio; una radio satelital; un reproductor de música; un reproductor de música digital; un reproductor de música portátil; un reproductor de video digital; un reproductor de video; un reproductor de discos de video digital, DVD; un reproductor de video digital portátil; un automóvil; un componente de vehículo; sistemas de aviónica; un dron y un multicóptero.
ES17737134T 2016-06-27 2017-06-26 Sistemas y métodos para controlar flujos de datos isócronos Active ES2882146T3 (es)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662355166P 2016-06-27 2016-06-27
US201762517247P 2017-06-09 2017-06-09
US15/631,807 US20170373881A1 (en) 2016-06-27 2017-06-23 Systems and methods for controlling isochronous data streams
PCT/US2017/039198 WO2018005322A1 (en) 2016-06-27 2017-06-26 Systems and methods for controlling isochronous data streams

Publications (1)

Publication Number Publication Date
ES2882146T3 true ES2882146T3 (es) 2021-12-01

Family

ID=60678003

Family Applications (1)

Application Number Title Priority Date Filing Date
ES17737134T Active ES2882146T3 (es) 2016-06-27 2017-06-26 Sistemas y métodos para controlar flujos de datos isócronos

Country Status (10)

Country Link
US (1) US20170373881A1 (es)
EP (1) EP3476084B1 (es)
JP (1) JP7148413B2 (es)
KR (1) KR102464293B1 (es)
CN (1) CN109417500B (es)
AU (1) AU2017291490B2 (es)
BR (1) BR112018076412A2 (es)
ES (1) ES2882146T3 (es)
TW (1) TW201802700A (es)
WO (1) WO2018005322A1 (es)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10678494B2 (en) * 2016-06-27 2020-06-09 Qualcomm Incorporated Controlling data streams in universal serial bus (USB) systems
US10628172B2 (en) 2016-06-27 2020-04-21 Qualcomm Incorporated Systems and methods for using distributed universal serial bus (USB) host drivers
US10651860B2 (en) * 2017-06-15 2020-05-12 Cirrus Logic, Inc. Asynchronous positional feedback for asynchronous and isochronous communication
CN110168511B (zh) * 2017-09-29 2021-02-09 华为技术有限公司 一种电子设备和降低功耗的方法及装置
KR20200055901A (ko) * 2018-11-14 2020-05-22 삼성전자주식회사 액세서리 장치로부터 수신된 식별 정보에 기반하여 동작을 수행하는 전자 장치, 그의 동작 방법 및 액세서리 장치
CN114915880B (zh) * 2018-12-07 2023-07-07 华为技术有限公司 一种点对多点的数据传输方法及电子设备
FR3100629B1 (fr) * 2019-09-10 2023-04-07 St Microelectronics Grenoble 2 Communication par bus CAN
CN110990323B (zh) * 2019-10-17 2023-09-15 尧芯微半导体(重庆)有限公司 一种优化的xhci调度方法
CN111210612B (zh) * 2019-10-29 2021-01-19 浙江浙大中控信息技术有限公司 基于公交gps数据与站点信息提取公交线路轨迹的方法
US11803498B2 (en) * 2020-10-30 2023-10-31 Icron Technologies Corporation Scheduling techniques for isochronous in traffic in a USB extension environment
TWI809564B (zh) * 2021-11-15 2023-07-21 優達科技股份有限公司 同步校正方法、主控裝置及僕裝置

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7809138B2 (en) * 1999-03-16 2010-10-05 Intertrust Technologies Corporation Methods and apparatus for persistent control and protection of content
JP3387041B2 (ja) * 1999-09-30 2003-03-17 富士通株式会社 プロトコル変換装置、通信装置、通信プログラム記憶媒体、および通信システム
US7215670B1 (en) * 1999-11-22 2007-05-08 Texas Instruments Incorporated Hardware acceleration for reassembly of message packets in a universal serial bus peripheral device
US6839322B1 (en) * 2000-02-09 2005-01-04 Nortel Networks Limited Method and system for optical routing of variable-length packet data
AUPQ896300A0 (en) * 2000-07-24 2000-08-17 Nec Australia Pty Ltd A clock synchronisation method for usb sink devices
US20020110213A1 (en) * 2001-02-13 2002-08-15 Sigma Tel, Inc. Method and apparatus for providing data for sample rate conversion
EP1508235B1 (en) * 2002-05-29 2009-03-11 Panasonic Corporation Data transmitting apparatus, data receiving apparatus, data transmission system and data transmission method
DK200301664A (da) * 2003-11-10 2005-05-11 Gn Netcom As Kommunikationsenhed, der er koblet til en pc's pc-telefon
US8180931B2 (en) * 2004-01-20 2012-05-15 Super Talent Electronics, Inc. USB-attached-SCSI flash-memory system with additional command, status, and control pipes to a smart-storage switch
US7630383B2 (en) * 2005-03-29 2009-12-08 Alcatel-Lucent Usa Inc. Synchronization of time stamps of peer devices in a communication node
CN100458725C (zh) * 2005-12-23 2009-02-04 英业达股份有限公司 利用通用串行总线端口连接测试装置进行测试的方法
US20080126641A1 (en) * 2006-08-31 2008-05-29 Irish John D Methods and Apparatus for Combining Commands Prior to Issuing the Commands on a Bus
US8880696B1 (en) * 2009-01-16 2014-11-04 F5 Networks, Inc. Methods for sharing bandwidth across a packetized bus and systems thereof
US20110103355A1 (en) * 2009-10-30 2011-05-05 Texas Instruments Incorporated Packet grouping for a co-existing wireless network environment
US8223986B2 (en) * 2009-11-19 2012-07-17 Apple Inc. Electronic device and external equipment with digital noise cancellation and digital audio path
US9134909B2 (en) * 2011-08-30 2015-09-15 International Business Machines Corporation Multiple I/O request processing in a storage system
JP2013254479A (ja) * 2012-05-08 2013-12-19 Unitex:Kk インタフェース変換装置及びインタフェース変換方法
TWI486780B (zh) * 2013-08-13 2015-06-01 Phison Electronics Corp 連接介面單元與記憶體儲存裝置
CN104270684B (zh) * 2014-09-24 2018-05-11 北京中科大洋科技发展股份有限公司 一种面向实时应用的视音频数据网络传输系统和方法
KR102278867B1 (ko) * 2014-12-16 2021-07-21 로베르트 보쉬 게엠베하 네트워크 디바이스들의 클록들을 동기화하는 방법

Also Published As

Publication number Publication date
JP7148413B2 (ja) 2022-10-05
AU2017291490A1 (en) 2018-11-29
KR102464293B1 (ko) 2022-11-04
US20170373881A1 (en) 2017-12-28
CN109417500A (zh) 2019-03-01
CN109417500B (zh) 2021-04-20
TW201802700A (zh) 2018-01-16
WO2018005322A1 (en) 2018-01-04
AU2017291490B2 (en) 2021-12-09
EP3476084B1 (en) 2021-07-14
EP3476084A1 (en) 2019-05-01
BR112018076412A2 (pt) 2019-07-16
JP2019526844A (ja) 2019-09-19
KR20190022544A (ko) 2019-03-06

Similar Documents

Publication Publication Date Title
ES2882146T3 (es) Sistemas y métodos para controlar flujos de datos isócronos
US10296285B2 (en) Source coordination of audio playback
US20190082400A1 (en) Methods and apparatus for synchronization of media playback within a wireless network
US10147440B2 (en) Method for playing data and apparatus and system thereof
WO2022094835A1 (zh) 音频同步播放方法、装置、设备及存储介质
US10462269B2 (en) Packetizing encoded audio frames into compressed-over-pulse code modulation (PCM) (COP) packets for transmission over PCM interfaces
JP6290915B2 (ja) 共通イベントベースのマルチデバイスメディア再生
JP2017521027A (ja) ネットワーククロック比較のシステムおよび方法
US9804633B2 (en) Indirect clock measuring and media adjustment
JP6038046B2 (ja) パケット通信ネットワークを介して伝送されるコンテンツをストリーミングするためのクロックリカバリ機構
US20210132899A1 (en) Wireless inter-room coordination of audio playback
US10915490B2 (en) Audio streams over peripheral component interconnect (PCI) express (PCIE) links
TWI622290B (zh) 一種無動態時戳之時脈產生機制,以提供於共享頻道中傳送媒體串流
JP5598001B2 (ja) 受信装置、音声信号伝送方法、および音声信号伝送システム
JP2009124570A (ja) 映像処理装置、映像処理方法、映像処理プログラム及び記憶媒体
JP2007104263A (ja) Ipを介在する転送システム