KR102464293B1 - 동시성 데이터 스트림들을 제어하기 위한 시스템들 및 방법들 - Google Patents
동시성 데이터 스트림들을 제어하기 위한 시스템들 및 방법들 Download PDFInfo
- Publication number
- KR102464293B1 KR102464293B1 KR1020187037030A KR20187037030A KR102464293B1 KR 102464293 B1 KR102464293 B1 KR 102464293B1 KR 1020187037030 A KR1020187037030 A KR 1020187037030A KR 20187037030 A KR20187037030 A KR 20187037030A KR 102464293 B1 KR102464293 B1 KR 102464293B1
- Authority
- KR
- South Korea
- Prior art keywords
- processor
- usb
- packets
- audio
- sized packets
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L12/40052—High-speed IEEE 1394 serial bus
- H04L12/40058—Isochronous transmission
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
- G06F13/4291—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a clocked protocol
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
- G06F13/4295—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using an embedded synchronisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/16—Sound input; Sound output
- G06F3/162—Interface to dedicated audio devices, e.g. audio drivers, interface to CODECs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04J—MULTIPLEX COMMUNICATION
- H04J3/00—Time-division multiplex systems
- H04J3/02—Details
- H04J3/06—Synchronising arrangements
- H04J3/062—Synchronisation of signals having the same nominal but fluctuating bit rates, e.g. using buffers
- H04J3/0632—Synchronisation of packets and cells, e.g. transmission of voice via a packet network, circuit emulation service [CES]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L12/40052—High-speed IEEE 1394 serial bus
- H04L12/40117—Interconnection of audio or video/imaging devices
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L12/403—Bus networks with centralised control, e.g. polling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/60—Software-defined switches
- H04L49/608—ATM switches adapted to switch variable length packets, e.g. IP packets
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L7/00—Arrangements for synchronising receiver with transmitter
- H04L7/0016—Arrangements for synchronising receiver with transmitter correction of synchronization errors
- H04L7/002—Arrangements for synchronising receiver with transmitter correction of synchronization errors correction by interpolation
- H04L7/0029—Arrangements for synchronising receiver with transmitter correction of synchronization errors correction by interpolation interpolation of received data signal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/2803—Home automation networks
- H04L2012/2847—Home automation networks characterised by the type of home appliance used
- H04L2012/2849—Audio/video appliances
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
- Computer And Data Communications (AREA)
Abstract
동시성 데이터 스트림들을 제어하기 위한 시스템들 및 방법들이 개시된다. 본 개시의 특정한 양태들은 거의 모든 동시성 데이터 스트림들에 이용되도록 설계되지만, 범용 시리얼 버스 (USB) 프로토콜에의 이용에 매우 적합하다. 게다가, 본 개시의 양태들은 USB 프로토콜 내의 기존의 구성 가능성들을 수용할 뿐만 아니라 USB 프로토콜에서의 제안된 장래의 변화들을 수용하도록 유연성이 있다. 시스템들 및 방법들의 유연성은: (1) USB 호스트 시스템 시간과 애플리케이션 간의 드리프트 및 (2) USB 호스트 시스템과 USB 디바이스 클록 간의 드리프트를 계산함으로써 제공된다. 이들 2 개의 드리프트 계산들에 기초하여, 타임 스탬프가 다음 전달 스케줄을 프로그래밍하기 위해 합성될 수도 있다. 이 타임 스탬프를 이용하면, 지터 보정이 일어날 수 있고 균일 사이즈의 패킷들이 어셈블링되어 애플리케이션 프로세서에 전달될 수도 있다.
Description
우선권 주장들
본 출원은 "PROGRAMMABLE RATE-MATCHED DATA RATE OUTPUT REGULATOR FOR ISOCHRONOUS DATA STREAMS" 를 발명의 명칭으로 하여 2016년 6월 27일자로 출원된 미국 특허 가출원 제62/355,166호에 대해 우선권을 주장하고, 그 내용들은 전부 참조로 본 명세서에 통합된다.
본 출원은 또한, "ISOCHRONOUS DATA STREAM CONTROL SYSTEMS AND METHODS" 를 발명의 명칭으로 하여 2017년 6월 9일자로 출원된 미국 특허 가출원 제62/517,247호에 대해 우선권을 주장하고, 그 내용들은 전부 참조로 본 명세서에 통합된다.
본 출원은 또한, "SYSTEMS AND METHODS FOR CONTROLLING ISOCHRONOUS DATA STREAMS" 를 발명의 명칭으로 하여 2017년 6월 23일자로 출원된 미국 특허 출원 제15/631,807호에 대해 우선권을 주장하고, 그 내용들은 전부 참조로 본 명세서에 통합된다.
기술분야
본 개시의 기술은 일반적으로 데이터 버스 상의 임의적 데이터 스트림들을 핸들링하는 것에 관한 것이다.
컴퓨팅 디바이스들은 동시대의 생활에 편재해 있다. 부분적으로는 컴퓨팅 디바이스들에서 이용가능한 계속 증가하는 기능성 때문에 컴퓨팅 디바이스들의 인기는 폭발적이었다. 기능성의 증가와 동시에, 컴퓨팅 디바이스들과 연관될 수도 있는 보조 디바이스들의 수들 및 타입들이 증가하였다. 일부 경우들에서, 보조 디바이스들은, 스마트 폰에의 카메라의 통합과 같이, 컴퓨팅 디바이스들에 통합될 수도 있다. 다른 경우들에서, 보조 디바이스들은, 일부 형태의 외부 인터페이스를 통하여 컴퓨팅 디바이스에 커플링되는 오디오 헤드셋들과 같은 주변기기들일 수도 있다. 양자 모두의 경우들에서, 컴퓨팅 디바이스에서 실행되는 애플리케이션들이 필요에 따라 보조 디바이스들과 상호작용하는 것을 허용하기 위해 다양한 프로토콜들이 생겨났다.
하나의 대중적인 프로토콜은 범용 시리얼 버스 (Universal Serial Bus; USB) 프로토콜이다. USB 는 전속력 (full speed; FS), 고속 (high speed; HS), 및 초고속 (super speed; SS) 을 포함하는 다양한 특색들로 존재한다. 추가적으로, USB 는 호스트와 주변 디바이스 간에 다양한 클록 동기화 스킴들을 허용한다. 특히, USB 는, 주변 디바이스로부터의 클록에 동기화하는 것 (비동기 (asynchronous) 로 지칭됨), 호스트로부터의 클록에 동기화하는 것 (동기 (synchronous) 로 지칭됨), 및 호스트와 주변 디바이스 간에 클록 동기화 응답성들을 공유하는 것 (적응 (adaptive) 으로 지칭됨) 을 고려한다. 다양한 특색들 및 클록 동기화 스킴들은 USB 프로토콜을 이용하는 디바이스들의 수를 증가시키는 설계 유연성을 허용하지만, 수많은 옵션들이 일부 설계 결정들을 더 어렵게 만든다.
이러한 설계 결정들은 오디오 및/또는 비디오 스트림들이 USB 인터페이스를 통하여 송신되고 있을 때 더욱 복잡해진다. USB 폼 팩터의 보편적인 성질 때문에, USB 호스트는 주변기기로부터의 오디오/비디오 캡처와 주변기기로의 오디오/비디오 플레이백 양자 모두를 수용 가능한 것으로 예상된다. 특히, USB 호스트는 상이한 속도들, 상이한 클록 동기화 스킴들, 상이한 샘플링 레이트들, 및 가변 사이즈의 (variably-sized) 데이터를 수용 가능한 것으로 예상된다. 종래의 시스템들은 애플리케이션 계층에 이러한 수용 (accommodation) 에 대한 부담을 지우며, 이는 애플리케이션 계층에서의 애플리케이션들의 부분에 상당한 버퍼링 및 복잡한 알고리즘들을 요구한다. 추가적으로, 서비스 간격들을 증가시키기 위한 현재의 제안들이 존재하며, 이는 애플리케이션 계층을 핸들링하는 애플리케이션 프로세서에 추가적인 부담들을 부과할 수도 있다. 이에 따라, 현재 구현된 가변 데이터 스트림들을 핸들링하는데 있어서 더 큰 유연성을 허용하고 상이한 입력 파라미터들을 핸들링하는 유연성을 갖는 USB 호환 시스템을 제공하기 위한 방식이 필요하다.
상세한 설명에서 개시된 양태들은 동시성 데이터 스트림들을 제어하기 위한 시스템들 및 방법들을 포함한다. 본 개시의 특정한 양태들은 거의 모든 동시성 데이터 스트림에 이용되도록 설계되지만, 범용 시리얼 버스 (USB) 프로토콜에의 이용에 매우 적합하다. 게다가, 본 개시의 양태들은 USB 프로토콜 내의 기존의 구성 가능성들을 수용할 뿐만 아니라 USB 프로토콜에서의 제안된 장래의 변화들을 수용하도록 유연성이 있다. 시스템들 및 방법들의 유연성은: (1) USB 호스트 시스템 시간과 애플리케이션 간의 드리프트 (drift) 및 (2) USB 호스트 시스템과 USB 디바이스 클록 간의 드리프트를 계산함으로써 제공된다. 이들 2 개의 드리프트 계산들에 기초하여, 타임 스탬프가 다음 전달 스케줄을 프로그래밍하기 위해 합성될 (synthesized) 수도 있다. 이 타임 스탬프를 이용하면, 지터 보정이 일어날 수 있고 균일 사이즈의 (uniformly-sized) 패킷들이 어셈블링되어 애플리케이션 프로세서에 전달될 수도 있다. 이러한 균일 사이즈의 패킷들의 이용은 애플리케이션 계층에서의 버퍼들에 대한 필요성을 제거할 수도 있으며, 이는 데이터 스트림이 오디오 데이터 스트림일 때 사용자 경험을 향상시킬 수도 있다.
이것과 관련하여, 하나의 양태에서, USB 시스템에서의 통신을 제어하기 위한 방법이 개시된다. 방법은 USB 드라이버를 갖는 제 1 프로세서에서 가변 사이즈의 패킷들을 수신하는 단계를 포함한다. 방법은 또한, 제 1 프로세서에서 균일 사이즈의 패킷들을 어셈블링하는 단계를 포함한다. 방법은 또한, 프로토콜 스택 중에서 애플리케이션 계층에서의 애플리케이션들에 의한 이용을 위해 제 2 프로세서에 균일 사이즈의 패킷들을 전달하는 단계를 포함한다.
다른 양태에서, 호스트가 개시된다. 호스트는 애플리케이션 프로세서를 포함한다. 호스트는 또한 USB 하드웨어를 포함한다. 호스트는 또한 오디오 디지털 신호 프로세서 (ADSP) 를 포함한다. ADSP 는 USB 하드웨어를 통하여 ADSP 에서 가변 사이즈의 패킷들을 수신하도록 구성된다. ADSP 는 또한, ADSP 에서 균일 사이즈의 패킷들을 어셈블링하도록 구성된다. ADSP 는 또한, 프로토콜 스택 중에서 애플리케이션 계층에서의 애플리케이션들에 의한 이용을 위해 애플리케이션 프로세서에 균일 사이즈의 패킷들을 전달하도록 구성된다.
다른 양태에서, 호스트가 개시된다. 호스트는 애플리케이션 계층을 포함한다. 호스트는 또한, USB 하드웨어를 포함한다. 호스트는 또한, 복수의 프로세서들을 포함하는 SoC (system on a chip) 를 포함한다. 복수의 프로세서들은 제 1 프로세서에서 가변 사이즈의 패킷들을 수신하도록 구성된다. 복수의 프로세서들은 또한, 제 1 프로세서에서 균일 사이즈의 패킷들을 어셈블링하도록 구성된다. 복수의 프로세서들은 또한, 프로토콜 스택 중에서 애플리케이션 계층에서의 애플리케이션들에 의한 이용을 위해 제 2 프로세서에 균일 사이즈의 패킷들을 전달하도록 구성된다.
다른 양태에서, USB 시스템에서 드리프트를 검출하기 위한 방법이 개시된다. 방법은 오디오 주변기기와 호스트 간의 USB 버스 상에서 분수 샘플링 레이트 (fractional sampling rate) 가 이용된다고 결정하는 단계를 포함한다. 방법은 또한, 서비스 간격에 걸쳐 분수 샘플링 레이트와 연관된 제 1 분수 나머지 (fractional remainder) 를 결정하는 단계를 포함한다. 제 1 분수 나머지에 기초하여, 방법은 또한, 분수 나머지를 갖지 않도록 요구된 간격들의 수에 대응하는 정수 (whole number) 를 계산하는 단계를 포함한다. 방법은 또한, 각각의 정수의 간격들에서 드리프트를 체크하는 단계를 포함한다.
다른 양태에서, 프로세서가 개시된다. 프로세서는 입력을 포함한다. 프로세서는 또한 제어 시스템을 포함한다. 제어 시스템은 오디오 주변기기와 호스트 간의 USB 버스 상에서 분수 샘플링 레이트가 이용된다고 결정하도록 구성된다. 제어 시스템은 또한, 서비스 간격에 걸쳐 분수 샘플링 레이트와 연관된 제 1 분수 나머지를 결정하도록 구성된다. 제 1 분수 나머지에 기초하여, 제어 시스템은 또한, 분수 나머지를 갖지 않도록 요구된 간격들의 수에 대응하는 정수를 계산하도록 구성된다. 제어 시스템은 또한 각각의 정수의 간격들에서 드리프트를 체크하도록 구성된다.
다른 양태에서, 타임 스탬프를 합성하기 위한 방법이 개시된다. 방법은 데이터 전달 핸들러로부터 실행 커맨드 (run command) 를 수신하는 단계를 포함한다. 방법은 또한, 고 레졸루션 타이머로부터의 출력과 컴퓨팅된 절대 타임 스탬프를 합산하는 단계를 포함한다.
다른 양태에서, 프로세서가 개시된다. 프로세서는 오디오 데이터 버퍼를 포함한다. 프로세서는 또한 USB 오디오 클라이언트 (UAC) 를 포함한다. UAC 는 가변 사이즈의 패킷들을 수신하도록 구성된다. UAC 는 또한, 균일 사이즈의 패킷들을 어셈블링하도록 구성된다. UAC 는 또한, 프로토콜 스택 중에서 애플리케이션 계층에서의 애플리케이션들에 의한 이용을 위해 제 2 프로세서에 균일 사이즈의 패킷들을 전달하도록 구성된다.
도 1 은 본 개시의 예시적인 양태에 따른 범용 시리얼 버스 (USB) 케이블 및 커넥터를 통하여 커플링되는 원격 오디오 주변기기를 가진 모바일 통신 디바이스의 단순화된 사시도이다;
도 2 는 프로세서 내에서의 USB 주변기기로부터 애플리케이션 계층으로의 종래의 오디오 플로우의 블록 다이어그램이다;
도 3 은 본 개시의 예시적인 양태들에 따른 USB 시스템 내에서의 오디오 플로우의 블록 다이어그램이다;
도 4a 및 도 4b 는 본 개시의 데이터 레귤레이터의 대체 배치들을 가진 2 개의 USB 시스템들을 도시한다;
도 5 및 도 5a 는 데이터 레귤레이터의 블록 다이어그램이다;
도 6 및 도 6a 는 패킷 사이즈가 계산되는 방법 및 패킷들이 애플리케이션 계층에 전달되는 방법을 도시하는 신호 플로우 다이어그램이다;
도 7 은 마이크로폰으로부터 USB 호스트로의 대역내 (in-band) 드리프트 레포팅 프로세스의 블록 다이어그램이다;
도 8 은 마이크로폰으로부터 USB 호스트로의 대역외 (out-of-band) 드리프트 레포팅 프로세스의 블록 다이어그램이다;
도 9 는 마이크로폰으로부터 호스트로의 대역내 드리프트 레포팅 프로세스 및 호스트가 스피커로의 플레이백을 위해 동일한 것을 이용하는 방법의 블록 다이어그램이다;
도 10 은 마이크로폰으로부터 호스트로의 대역외 드리프트 레포팅 프로세스 및 호스트가 스피커로의 플레이백을 위해 동일한 것을 이용하는 방법의 블록 다이어그램이다; 그리고
도 11 은 도 3 의 USB 시스템을 포함할 수 있는 예시적인 프로세서-기반 시스템의 블록 다이어그램이다.
도 2 는 프로세서 내에서의 USB 주변기기로부터 애플리케이션 계층으로의 종래의 오디오 플로우의 블록 다이어그램이다;
도 3 은 본 개시의 예시적인 양태들에 따른 USB 시스템 내에서의 오디오 플로우의 블록 다이어그램이다;
도 4a 및 도 4b 는 본 개시의 데이터 레귤레이터의 대체 배치들을 가진 2 개의 USB 시스템들을 도시한다;
도 5 및 도 5a 는 데이터 레귤레이터의 블록 다이어그램이다;
도 6 및 도 6a 는 패킷 사이즈가 계산되는 방법 및 패킷들이 애플리케이션 계층에 전달되는 방법을 도시하는 신호 플로우 다이어그램이다;
도 7 은 마이크로폰으로부터 USB 호스트로의 대역내 (in-band) 드리프트 레포팅 프로세스의 블록 다이어그램이다;
도 8 은 마이크로폰으로부터 USB 호스트로의 대역외 (out-of-band) 드리프트 레포팅 프로세스의 블록 다이어그램이다;
도 9 는 마이크로폰으로부터 호스트로의 대역내 드리프트 레포팅 프로세스 및 호스트가 스피커로의 플레이백을 위해 동일한 것을 이용하는 방법의 블록 다이어그램이다;
도 10 은 마이크로폰으로부터 호스트로의 대역외 드리프트 레포팅 프로세스 및 호스트가 스피커로의 플레이백을 위해 동일한 것을 이용하는 방법의 블록 다이어그램이다; 그리고
도 11 은 도 3 의 USB 시스템을 포함할 수 있는 예시적인 프로세서-기반 시스템의 블록 다이어그램이다.
이제 도면들을 참조하여, 본 개시의 여러 예시적인 양태들이 설명된다. 단어 "예시적인" 은 본 명세서에서 "일 예, 인스턴스, 또는 예시의 역할을 하는 것" 을 의미하는데 사용된다. 본 명세서에서 "예시적인" 으로서 설명된 임의의 양태가 반드시 다른 양태들에 비해 유리하거나 또는 바람직한 것으로 해석되는 것은 아니다.
상세한 설명에서 개시된 양태들은 동시성 데이터 스트림들을 제어하기 위한 시스템들 및 방법들을 포함한다. 본 개시의 특정한 양태들은 거의 모든 동시성 데이터 스트림에 이용되도록 설계되지만, 범용 시리얼 버스 (USB) 프로토콜에의 이용에 매우 적합하다. 게다가, 본 개시의 양태들은 USB 프로토콜 내의 기존의 구성 가능성들을 수용할 뿐만 아니라 USB 프로토콜에서의 제안된 장래의 변화들을 수용하도록 유연성이 있다. 시스템들 및 방법들의 유연성은: (1) USB 호스트 시스템 시간과 애플리케이션 간의 드리프트 및 (2) USB 호스트 시스템과 USB 디바이스 클록 간의 드리프트를 계산함으로써 제공된다. 이들 2 개의 드리프트 계산들에 기초하여, 타임 스탬프가 다음 전달 스케줄을 프로그래밍하기 위해 합성될 수도 있다. 이 타임 스탬프를 이용하면, 지터 보정이 일어날 수 있고 균일 사이즈의 패킷들이 어셈블링되어 애플리케이션 프로세서에 전달될 수도 있다. 이러한 균일 사이즈의 패킷들의 이용은 애플리케이션 계층에서의 버퍼들에 대한 필요성을 제거할 수도 있으며, 이는 데이터 스트림이 오디오 데이터 스트림일 때 사용자 경험을 향상시킬 수도 있다.
본 개시의 특정한 양태들을 다루기 전에, 동시성 데이터 스트림들을 제어하기 위한 시스템들 및 방법들을 구현할 수도 있는 예시적인 시스템의 간단한 개요가 개시된다. 상기 언급한 바와 같이, 다양한 동시성 데이터 스트림들에 적용가능한 동안, 예시적인 양태들은 USB 오디오 스트림들에 특히 적용가능하다. 따라서, 예시적인 시스템은 USB 디지털 오디오 시스템이다.
이것과 관련하여, 도 1 은 USB 케이블 (106) 상의 USB 타입-C 커넥터 (104) 에 커플링하도록 구성된 USB 타입-C 리셉터클 (102) 을 가진 모바일 통신 디바이스 (100) 의 단순화된 사시도이다. USB 케이블 (106) 의 말단부 (distal end) 에는, 헤드폰 (112) 에서의 복수 스피커들 (110) 및 마이크로폰 (114) 을 갖는 디지털 오디오 헤드셋 (108) 이 있다. 디지털 오디오 신호들은 USB 케이블 (106) 을 통하여 모바일 통신 디바이스 (100) 와 디지털 오디오 헤드셋 (108) 사이에서 전달될 수도 있다. 마이크로폰 (114) 으로부터의 오디오는, 스피치 패턴들이 좀처럼 주기적이지 않기 때문에 시간 도메인에서 고르지 않게 분포될 수도 있다. 마찬가지로, 모바일 통신 디바이스 (100) 는 디지털 오디오 헤드셋 (108) 이 어떤 데이터 속도를 지원하는지 선험적으로 알지 못하고 또한 모바일 통신 디바이스 (100) 는 디지털 오디오 헤드셋 (108) 이 어떤 동기화 포맷을 이용하는지를 선험적으로 알지 못한다.
본 개시의 예시적인 양태들은 도 1 의 디지털 오디오 헤드셋 (108) 과 같이 오디오 환경들에 매우 적합하지만, 본 개시는 이렇게 제한되지 않으며, 컴퓨팅 디바이스, 이를 테면 모바일 통신 디바이스 (100) 와, 디스플레이, 스피커들, 및 마이크로폰을 갖는 가상 현실 헤드셋 (또는 스피커들 및 마이크로폰을 갖는 디스플레이) 사이에서 전달되는 오디오/비디오 신호에 이용될 수도 있다. 마찬가지로, USB 타입-C 케이블이 위에서 개시되지만, 본 개시는 다른 버전들의 USB 에 용이하게 이용가능하다. 사실상, USB 속도들 (예를 들어, 전속력 (FS), 초고속 (SS), 고속 (HS)) 중 임의의 것을 핸들링 가능한 것이 본 개시의 이점들 중 하나이다.
도 2 는 본 개시의 양태들을 구현하지 않는 모바일 통신 디바이스 (200) 에서 오디오 (및 어쩌면 비디오) 데이터가 핸들링되는 방법의 단순화된 블록 다이어그램을 제공한다. 모바일 통신 디바이스 (200) 는 USB 주변기기 (202), 이를 테면 디지털 오디오 헤드셋에 커플링될 수도 있다. USB 주변기기 (202) 는 비동기, 동기, 적응, 또는 혼합된 클록 동기화 모드들을 지원할 수도 있고 하나 이상의 위상 고정 루프 (phase locked loop) 들 (PLL들, 2 개가 예시됨) 또는 지연 고정 루프 (delay locked loop) 들 (DLL들, 예시되지 않음) 을 포함할 수도 있다. USB 주변기기 (202) 는, 이를 테면 마이크로폰을 통하여, 데이터를 수신 (데이터 입력 (Data IN) 으로 참조부호 표시됨) (때때로 캡처로 지칭됨), 뿐만 아니라 이를 테면 헤드폰에서의 스피커를 통하여, 데이터를 출력 (데이터 출력 (Data OUT) 으로 참조부호 표시됨) (때때로 플레이백으로 지칭됨) 할 수도 있다. 데이터는, 이를 테면 USB 케이블 (206) 을 통하여 모바일 통신 디바이스 (200) 에 그리고 그로부터 전달되고, 그리고 적절한 리셉터클 (도 2 에는 예시되지 않음) 을 통하여 모바일 통신 디바이스 (200) 내의 USB 하드웨어 제어기 (208) 에 전달된다. USB 하드웨어 (때때로 도면들에 HW 로 참조부호 표시됨) 제어기 (208) 는 SoC (system on a chip) (210) 에 통신가능하게 접속된다. SoC (210) 는 오디오 디지털 신호 프로세서 (ADSP) (212) 및 애플리케이션 프로세서 (도면들에서 AP 로 지칭됨) (214) 를 포함할 수도 있다. ADSP (212) 는 USB 오디오 클라이언트 (UAC) 드라이버 (216) 를 포함할 수도 있다. USB 주변기기 (202) 로부터의 데이터는 USB 하드웨어 제어기 (208) 에서 수신되고 SoC (210) 에 전달된다. USB 주변기기 (202) 로부터의 데이터는 지터리 (jittery) 이고 가변 데이터 프레임 사이즈들 (USB 하드웨어 제어기 (208) 와 UAC 드라이버 (216) 사이에 가변 사이즈의 박스들에 의해 심볼로 예시됨) 을 포함한다는 것에 주목한다. USB 주변기기 (202) 의 하나 이상의 PLL들이 빠르거나 또는 느리게 작동하면 추가의 변동성 (variability) 이 일어날 수도 있다. USB 프로토콜에서는, 프레임 내에 고정된 수의 샘플들이 존재한다는 요건이 없기 때문에 여전히 추가의 변동성이 일어날 수도 있다. 이러한 변동성은 USB 프로토콜의 유연성 및 호소력에 기여하는 것의 부분이지만, 이러한 변동성은 일반적으로 오디오 프로세싱에서 핸들링하기 어렵다. USB 하드웨어 제어기 (208) 가 그 내부 버퍼들 (미도시) 에 데이터를 가지면, USB 하드웨어 제어기 (208) 는 UAC 드라이버 (216) 에 대한 인터럽트를 생성한다. USB 하드웨어 제어기 (208) 는 타임 스탬핑 기능을 갖지 않는다. UAC 드라이버 (216) 는 인터럽트를 수신하고, USB 하드웨어 제어기 (208) 의 버퍼를 소모시키고, 그리고 일정한 양의 데이터를 애플리케이션 프로세서 (214) 에 제공하려고 시도한다. 44.1 킬로헤르츠 (kHz) 의 공통의 샘플링 레이트와 같은, 분수 오디오 샘플링이 존재하면 (이는 (1000 Hz 의 공통의 USB 버스 전송 속도에 대응하는) 1 밀리초에 대하여 분수임), UAC 드라이버 (216) 는 10 개 중 9 개의 패킷들에서 44 개의 샘플들을 갖고 하나의 패킷이 45 개의 샘플들을 가진 데이터를 전송할 것이다. 애플리케이션 프로세서 (214) 에서의 데이터 프로세싱 회로부 (218) 는 그 버퍼들 (220) 을 고 레졸루션 시스템 타이머 (222) 와 함께 이용하여, 데이터가 애플리케이션 계층 알고리즘들 (224) 에 제공되기 전에 변동성을 없앤다. 비동기 샘플 레이트 컨버터 (asynchronous sample rate converter; ASRC) (226) 는 시간 지속기간 (time duration) 에 걸쳐 샘플들의 지터리 클러스터 및 드리프트를 보정하는 이 프로세스를 도울 수도 있다. 이 배열은 애플리케이션 프로세서 (214) 에 부담을 지우고 애플리케이션 계층 알고리즘들 (224) 에 대한 추가적인 프로그래밍을 요구한다. ADSP (212) 및 애플리케이션 프로세서 (214) 는 별도의 프로세서들인 것으로 설명되지만, 양자 모두의 디바이스들은 단일의 집적 회로 (IC) 에 통합될 수도 있다는 것에 주목한다. 예시하지 않았지만, 하드웨어 직접 메모리 액세스 (DMA) 제어기는 데이터 인터럽트를 생성할 수도 있고, 고 레졸루션 시스템 타이머 (222) 로부터의 하드웨어 래치된 타임 스탬프는 하드웨어 레지스터에 저장된다. 이 타임 스탬프는 USB 패킷들과 용이하게 연관되지 않고 따라서 드리프트 검출을 돕는데 용이하게 이용가능하지 않다.
본 개시의 예시적인 양태들은 지터 보정이 적용될 수도 있고 합성된 타임 스탬프가 계산될 수도 있는 에러 프리 드리프트 검출을 제공한다. 이 합성된 타임 스탬프를 이용하면, 다음 전달 스케줄이 계산될 수도 있고, 이는 버퍼들을 소모시키는데 이용된다. 게다가, 애플리케이션 프로세서 외측에서 계산을 리포지셔닝하는 것에 의해, 균일한 데이터 프레임 사이즈들이 애플리케이션 프로세서에 제공될 수도 있고, 이는 결국 오디오 품질을 향상시키고 잠재적으로는 절전 기회들을 제공할 수도 있다. 본 개시의 이익들 중 하나는 본 개시가 호스트와 디바이스 간의 임의의 형태의 클록 동기화 접근법 (비동기, 동기, 또는 적응) 뿐만 아니라 다양한 데이터 속도들, 상이한 샘플링 레이트들, 가변 사이즈의 데이터, 상이한 USB 속도들 (HS, FS, SS), 및 상이한 서비스 간격들을 수용하는 유연성이다. 본 개시는 엄밀히 하드웨어로 구현될 수도 있지만, 본 개시의 유연성은, 임의의 구성을 수용하기 위해 변수들이 더 용이하게 조정되는, 소프트웨어의 이용을 통하여 향상된다. 본 개시의 시스템의 세목들 및 본 개시의 양태들을 구현하는데 이용될 수도 있는 다양한 시그널링을 탐구하기 전에, 유연성을 생성하는데 이용되는 식들의 개요가 제시된다.
다음의 섹션은 계산 집약적 (math intensive) 이고 관심 있어 하는 독자를 위해 유지되지만, 본 개시의 예시적인 양태들을 이해하는데 결정적인 것은 아닐 수도 있다. 계산이 그들의 본 개시의 이해를 복잡하게 만들지 않기를 원하는 독자들을 위해, 예시적인 양태들의 논의가 도 3 을 참조하여 이하에 다시 시작된다.
호스트에 의해 이용되는 기본적인 드리프트 보상된 레이트 매칭된 오디오 버퍼 전달 모델은 다음으로서 표현될 수도 있다:
식 1 에서, (또한 "Tnext" 로도 지칭됨) 는 다음 전달 스케줄을 프로그래밍하는데 효과적으로 이용되는 합성된 타임 스탬프이다. (또한 "Tref" 로도 지칭됨) 는 제 1 합성된 타임스탬프의 타임스탬프이다. (또한 "Toffset" 으로도 지칭됨) 은 버퍼들의 전달에 이용되는 로부터의 델타이고 또한 플레이백 및 캡처를 위한 버퍼들의 픽업의 타이밍의 역할을 한다. 식 1 에서, 각각의 는 디바이스 클록과 USB 타임 레퍼런스 사이의 총 드리프트를 나타낸다. 대부분의 상황들에서, 고려해야 할 단지 3 개의 클록들, USB 호스트 클록, 오디오 애플리케이션 클록, 및 USB 디바이스 클록이 존재한다. USB 호스트 클록은 다른 2 개의 클록들 양자 모두에 대한 시스템 타임 레퍼런스의 역할을 하고, 따라서 식 1 은 통상적으로 다음으로 단순화할 것이다:
식 2 는 오디오 캡처와 오디오 플레이백 경로들 양자 모두에 대해 작용한다. 는 오디오 애플리케이션 클록과 USB 호스트 클록 사이의 시간 차이이다. 는 USB 디바이스 클록이 USB 호스트 클록과 관련하여 얼마나 빨리 가고 있는지이다. 이들 값들은 함께 순 (net) 시스템 드리프트를 제공한다 (즉, 오디오 샘플이 더 빨리 이동하고 있는지 또는 더 느리게 이동하고 있는지임). 오디오 캡처 경로에 대해, 가 양이면, 디바이스는 USB 호스트가 그들을 클리어하고 있는 것보다 더 빨리 오디오 샘플들을 전달하고 있다. 가 양이면, 오디오 애플리케이션은 USB 호스트가 그들을 전달하고 있는 것보다 더 빨리 오디오 샘플들을 취출하고 있다. 오디오 플레이백 경로 상에서, 가 양이면, 오디오 애플리케이션은 USB 호스트가 그들을 클리어하고 있는 것보다 더 빨리 오디오 샘플들을 전달하고 있다. 가 양이면, 디바이스는 USB 호스트가 그들을 전달하고 있는 것보다 더 빨리 오디오 샘플들을 취출하고 있다. 이 값은 비동기 샘플 레이트 컨버터 (ASRC) 에 전달되어 오디오를 합성 및/또는 보간하여 ASRC 가 얼마나 많이 보정하는지를 알게 한다.
캡처 및 플레이백 경로들에 대한 드리프트 는 명시적으로 또는 암시적으로 결정될 수도 있다. 드리프트는 데이터 플로우의 방향 (즉, 디바이스-투-호스트 (보통 캡처) 또는 호스트-투-디바이스 (보통 플레이백)) 에 기초하여 획득된다. 드리프트 정보의 소스는 USB 가 무엇을 광고하는지 그리고 고 레벨 오퍼레이팅 시스템 (high level operating system; HLOS) 에 의한 USB 엔드포인트 쌍에 대해 어느 동시성 동기화 모드가 선택되는지에 의존한다. 사실상, 캡처 경로와 플레이백 경로 사이에 20 개의 조합들의 동시성 동기화 모드들이 존재한다.
표 1 은 오디오 애플리케이션 클록이 USB 호스트 클록과 동위상 (in phase) 임을 가정한다. 이 가정은 모든 동기 및 적응 플레이백 (출력 (Out)) 경로들이 을 갖게 한다.
본 개시의 예시적인 양태들은 샘플링 주파수, 샘플링 간격, 샘플 사이즈, 버스 속도, 클록 동기화 모드 등의 본질적으로 임의의 변동에 대한 드리프트를 검출하기 위한 기법들을 제공한다. 이 유연성은 이들 가변 입력들을 수용하고 적절한 드리프트 검출을 허용하는 일반식들을 통하여 달성된다.
품질, 환경, 및 제조 정밀도 모두는 시스템에서의 다른 비동기 클록과 비교하여 시간을 유지하는 하나의 비동기 클록의 능력에 영향을 미친다는 것이 인식되어야 한다. 캡처 경로를 따라 다중 클록들 및 플레이백 경로 상의 다중 클록들이 있는 시스템들이 존재한다. 경로에 대한 순 드리프트는 경로를 따른 각각의 서브시스템 클록 간의 시간차들의 합이다. 본 개시는 적절한 주파수에서의 드리프트를 측정하는 것에 의해, 에러 프리 드리프트 검출이 가능해지고 불필요한 측정들이 회피되며, 이는 절전들을 허용할 수도 있다는 것을 예시한다.
USB 시스템에서의 오디오 스트리밍은 이러한 오디오 스트리밍이 동시성 전송 모드를 이용할 것으로 예상된다는 점에서 어려움을 증가시킨다. 그것은 에러 체크 또는 재시도들이 없는 실시간 전용 대역폭 모드이다. 오디오 샘플들은 오디오 패킷의 형태로 번들링되고 오디오 패킷은 매 (마이크로)프레임마다 한번 전송될 수도 있다. 각각의 이러한 프레임은 HS 또는 FS USB 전송 모드가 물리 계층에 의해 선택되는지 여부에 의존하여 125 ㎲ 또는 1 ms 중 어느 하나이다. USB 프로토콜은 절전들을 위해 그리고 큰 네트워크 레이턴시들을 핸들링하기 위해 버스트들로 이러한 프레임들을 전송하는 것을 지원한다. 서비스 간격 마다의 프레임들의 수는 로 서술되며 여기서 binterval 은 현재 1 과 16 사이의 값이다. 이 수를 확장하기 위해 USB 프로토콜에 대한 이사회 사이에서는 논의들이 행해졌다. 서비스 간격 마다의 프레임들의 수는 고정되지만, 버스트 마다 전송되는 오디오 샘플들의 수는 가변적일 수 있다.
드리프트를 평가하는 것에 관련되는 것으로 고려된 팩터는 측정의 소스 유닛을 이용하여 누적된 드리프트를 유지하는 것을 포함한다. 하나의 유닛으로부터 다른 유닛으로의 컨버전들은 일반적으로 반올림 오차 또는 잘라버림 오차를 도입할 수도 있는 나눗셈 연산을 수반한다. 이러한 잘라버림 오차들의 누적은 호스트와 디바이스 간의 시간의 해석에 있어서 차이를 야기할 수도 있다. 측정의 소스 유닛에 있어서 누적을 유지하는 것에 의해, 임의의 잘라버림 오차는 일시적이고 시스템에 의해 사소한 지터로 보여야 한다.
추가의 팩터는 최대 허용가능한 시스템 지터이다. 합당한 허용가능한 시스템 지터는 오디오 시스템에 의해 실제 드리프트로서 해석되는 것을 회피하기 위해 1 미만의 오디오 샘플의 정확도이다, 따라서, 허용가능한 시스템 지터는 오디오 샘플링 주파수의 함수일 수도 있다. 허용가능한 지터가 충분히 작으면, 순수 소프트웨어 구현이 이벤트로서 타임스탬프에 인터럽트를 서비스할 정도로 충분히 빨리 반응하는 것이 가능하지 않을 수도 있기 때문에 하드웨어 지원이 필요할 수도 있다.
이들 고려사항들이 주어지면, 식 6 은 클록 소스로서 USB 오디오 디바이스의 순시 주파수 피드백들을 고려할 때 도출될 수도 있다. 이러한 인스턴스에서, 는 USB 디바이스가 USB 호스트에 레포팅하는 프레임 마다의 오디오 샘플들의 평균 수이다. 순시 주파수 는 매번 FS USB 전송 모드에서 호스트에 레포팅된다:
또는 매번 HS USB 전송 모드에서 레포팅된다:
순시 드리프트는 따라서,
이고 호스트가 피드백을 수신할 때 컴퓨팅된다
여기서 는 샘플링 주파수이다. 19.2 MHz 는 하나의 예시적인 고 레졸루션 시스템 타이머의 속도임에 주목한다. 고 레졸루션 시스템 타이머가 상이한 속도를 가지면, 상이한 값이 이 식에 대입되어, 식 6 은 다음의 일반식이 된다.
하나의 가상 프레임인 가상 패킷의 정의 등가물로부터 발생하는 USB 2.0 신호로부터 클록을 복구하는데 있어서 도전과제들이 존재한다. 이에 따라, 비선형 데이터 스트림으로부터 클록을 복구하기 위한 솔루션이 요구된다. 이러한 솔루션은, 각각의 클록 크리스탈이 적어도 500 ppm 의 정확도를 갖는다는 가정 하에, 다음과 같다. 가상 프레임 마다의 샘플들의 수는 다음으로서 정의된다
추가적으로, 얼라인먼트 멀티플라이어 (alignment multiplier) 가 필요하고, 다음과 같이 정의되고:
여기서 1000000 은 분수 정밀도를 증가시키기 위해 매우 큰 베이스 10 값으로서 임의로 선택된다. 식 7 및 식 8 로부터, 예상된 수의 샘플들이 다음과 같이 계산될 수도 있다:
는 안정된 드리프트 결정이 가능하기 전에 호스트에 의해 필요한 최소 수의 가상 프레임들을 나타낸다. 는 수신될 것으로 예상된 샘플들의 수이다. 는 부동 소수점이 아닌, 시각적 명확성을 위한 중간 변수이다. 수신된 가상 프레임들의 각각의 수에 대해, 가 다음으로 컴퓨팅된다:
따라서, 오디오 세션의 시작으로부터의 순 드리프트는 다음으로 컴퓨팅된다:
D 오디오 샘플들의, 시스템 타이머 (때때로 Qtimer 로 지칭됨) 틱 (tick) 들로의 컨버전은 다음이다:
다시, 19.2 MHz 는 고 레졸루션 시스템 타이머의 속도임에 주목한다. 고 레졸루션 시스템 타이머가 상이한 값을 가지면, 이러한 상이한 값이 이 식에 대입되어야 하며, 그 결과 다음이 된다:
위에서 약술된 드리프트 정보 및 클록 검출 정보로, 레이트 매칭이 이루어질 수도 있다. 레이트 매칭으로, 균일한 샘플 사이즈들이 아래에 약술되는 바와 같이 애플리케이션 프로세서로 생성 및 전송될 수도 있다. 그러나, 균일한 샘플 사이즈들을 다루기 전에, 더 많은 계산이 레이트 매칭을 설명하기 위해 제시된다. 특히, 이것은 를 계산하는 방법을 정의하게 돕는다.
드리프트 부재 (absent drift) 에 유념한다
상기 제시된 계산으로, 본 개시의 예시적인 양태들이 이제 제시된다. 이것과 관련하여, 도 3 은 본 개시의 예시적인 양태들을 구현하는 모바일 통신 디바이스 (300) 에서 오디오 (및 어쩌면 비디오) 가 핸들링되는 방법의 단순화된 블록 다이어그램이다.
모바일 통신 디바이스 (300) 는 애플리케이션 프로세서 (302) 및 ADSP (304) 를 포함한다. 예시적인 양태에서, 애플리케이션 프로세서 (302) 및 ADSP (304) 는 단일 SoC (306) 에 있을 수도 있다. 마찬가지로, 개념적으로 별개의 프로세서들로서 설명하였지만, 이들 프로세서들은 단일 호스트 프로세서의 부분일 수도 있다. 여전히 또한, "애플리케이션 프로세서" 또는 "ADSP" 와 같은 특정 기능들에 대해 언급하였지만, 이러한 명칭들로 전통적으로 지칭되지 않은 다른 프로세서들이 본 개시의 범위로부터 벗어남 없이 비슷한 기능성을 여전히 구현할 수도 있다는 것이 인식되어야 한다. 애플리케이션 프로세서 (302) 는, USB 주변기기 (310), 이를 테면 헤드셋과, USB 리셉터클들, USB 커넥터들, 및 USB 케이블을 포함할 수도 있는 USB 인터페이스 (312) 를 통하여 통신하는 USB 하드웨어 제어기 (308) 와 통신할 수도 있다.
도 2 의 USB 주변기기 (202) 와 마찬가지로, USB 주변기기 (310) 는 비동기, 동기, 적응, 또는 혼합된 클록 동기화 모드들을 지원할 수도 있고 하나 이상의 PLL들 (2 개가 예시됨) 또는 DLL들 (예시되지 않음) 을 포함할 수도 있다. USB 주변기기 (310) 는, 이를 테면 마이크로폰을 통하여, 데이터를 수신 (데이터 입력으로 참조부호 표시됨) (상기 언급한 바와 같이, 때때로 캡처로 지칭됨), 뿐만 아니라 이를 테면 헤드폰에서의 스피커를 통하여, 데이터를 출력 (데이터 출력으로 참조부호 표시됨) (상기 언급한 바와 같이, 때때로 플레이백으로 지칭됨) 할 수도 있다. 데이터는 USB 인터페이스 (312) 를 통하여 모바일 통신 디바이스 (300) 에 그리고 그로부터 전달된다.
ADSP (304) 는 UAC 드라이버 (314) 를 포함할 수도 있다. UAC 드라이버 (314) 는 USB 하드웨어 제어기 (308) 와 통신하기 위해 호스트 제어기 인터페이스 (HCI) (예시되지 않음) 를 이용할 수도 있다. 종래의 시스템들에서는, ADSP (304) 가 USB 하드웨어 제어기 (308) 와 통신하지 않기 때문에, UAC 드라이버 (314) 에 HCI 가 없다. 그러나, 본 개시의 예시적인 양태들은 USB 하드웨어 제어기 (308) 와 ADSP (304) 간의 통신을 허용한다. 이에 따라, HCI 가 이러한 통신을 달성하기 위해 제공될 수도 있다. UAC 드라이버 (314) 는 USB 하드웨어 제어기 (308) 로부터 불안정한 및 가변 사이즈의 데이터 프레임들을 수신한다.
본 개시의 예시적인 양태들은 UAC 드라이버 (314) 에 하나 이상의 버퍼들 (316) 을 추가할 뿐만 아니라 고 레졸루션 시스템 타이머 (318) 를 UAC 드라이버 (314) 에 커플링하며, 이는 UAC 드라이버 (314) 가 애플리케이션 프로세서 (302) (또는 애플리케이션들을 핸들링하는 다른 프로세서) 에서의 데이터 프로세싱 회로부 (320) 에 안정되고, 정밀하고, 및 고정된 데이터 프레임 사이즈들을 전달하는 것을 허용한다. 여전히 또한, UAC 드라이버 (314) 는 신호 (322) 를 통하여 데이터 프로세싱 회로부 (320) 에 순 플레이백 및 캡처 지연들을 제공할 수도 있다. 데이터 프로세싱 회로부 (320) 에 균일한 데이터 프레임들을 제공하는 것에 의해, 애플리케이션 계층 알고리즘들 (324) 은 데이터를 심하게 버퍼링하거나 또는 도 2 의 데이터 프로세싱 회로부 (218) 와 연관된 보정들을 수행할 필요가 없다. 애플리케이션 계층 알고리즘들 (324) 이 균일한 데이터 프레임들을 수신하더라도, 애플리케이션 프로세서 (302) 는 드리프트 보정 정보 및/또는 지터 이슈들에 작용하도록 신호 (322) 를 프로세싱하는 것을 도울 수도 있는 ASRC (326) 를 포함할 수도 있다. 다시, 애플리케이션 프로세서 (302) 는 단일 마이크로프로세서로서 ADSP (304) 와 병합될 수도 있거나 또는 상이한 벤더들에 의해 상이한 명칭들을 제공받을 수도 있다는 것에 주목한다.
도 3 은 ADSP (304) 에 UAC 드라이버 (314) 를 포지셔닝하는 것을 고려하지만, 다른 포지션들이 또한 도 4a 및 도 4b 에 예시한 바와 같이 가능하다는 것이 인식되어야 한다.
이것과 관련하여, 도 4a 는 마이크로폰 등으로부터 데이터를 캡처하고 그 데이터를 UAC 데이터 레귤레이터 (UAC data reg) (404) 에 제공하는 디지털 오디오 컨버터 (DAC) (402) 를 가진 헤드셋 (400) (또는 다른 USB 주변기기) 을 예시한다. UAC reg (404) 는 패킷 사이즈를 균일하게 하고 패킷들을 하드웨어 제어기 (406) 에 제공하며, 하드웨어 제어기는 차례로 패킷들을 케이블 (408) 을 통해 USB 호스트 (410) 에 전달한다. USB 호스트 (410) 는 호스트 하드웨어 제어기 (412) 로 패킷들을 수신한다. 애플리케이션 계층 (구체적으로 예시되지 않음) 에서의 애플리케이션들 (414) (도면들에는 APP 로 라벨링됨) 은 균일한 패킷들을 수신하고 그들을 잘 이해되는 바와 같이 프로세싱한다. 이러한 배열에서, USB 호스트 (410) 는 도 2 의 USB 호스트와 유사하게 동작할 수도 있지만, 헤드셋 (400) 이 USB 호스트 (410) 로 전송하는 균일한 패킷들로부터 이익을 얻는다. 헤드셋 (400) 에서의 증가된 회로부는 헤드셋 (400) 의 비용을 증가시킬 수도 있지만, 레거시 USB 호스트들에 이익들을 제공할 수도 있다.
도 4b 에서, USB 호스트 (410) 는 달라지지 않고, 헤드셋 (400) 내에 데이터 레귤레이터를 배치하는 대신, UAC 데이터 레귤레이터 (418) 가 중간 디바이스 (420), 이를 테면 동글 (420) 내에 제공된다. 동글 (420) 은 케이블 (422) 의 호스트 측 (422A) 또는 주변기기 측 (422B) 에 있을 수 있다. 즉, 케이블 (422) 은 USB 호스트 (410) 의 USB 리셉터클에 삽입된 동글 (420) 로 동글 (420) 과 헤스셋 (424) 사이에서 확장할 수도 있거나, 또는 케이블 (422) 은 헤드셋 (424) 의 USB 리셉터클에 삽입된 동글 (420) 로 USB 호스트 (410) 와 동글 (420) 사이에서 확장할 수도 있다. 여전히 다른 가능성 (예시됨) 으로서, 동글은 케이블 (422) 에 있을 수도 있고 케이블 (422) 은 헤드셋 (424) 및 USB 호스트 (410) 의 개별의 리셉터클들에 삽입한다.
도 5 및 도 5a 는 도 3 의 UAC 드라이버 (314) 내측에서 구현될 수도 있는 데이터 레귤레이터의 블록 다이어그램이다. 버퍼 (316) (도 5 및 도 5a 에서 FIFO 로도 또한 지칭됨) 는 가변 사이즈의 데이터 패킷 (500) 을 수신한다. 대역내 드리프트 검출기 (502) 는 데이터 이용가능 인터럽트 신호 (504) 를 수신할 때 버퍼 (316) 내의 데이터 패킷 (500) 의 사이즈를 판독한다. 대안으로, 대역외 드리프트 검출기 (506) 는 비동기 피드백 패킷 신호 (508) 및 데이터 이용가능 인터럽트 신호 (504) 를 수신한다. 검출기들 (502 또는 506) 중 하나가 멀티플렉서 (510) 에 의해 판독된다. 멀티플렉서 (510) 는 검출 타입 설정 신호 (512) 에 의해 검출기들 (502 및 506) 의 출력들 간에 선택한다. 멀티플렉서 (510) 는 디바이스 드리프트 어큐뮬레이터 (514) 로 신호를 출력한다. 동시에, 데이터 이용가능 인터럽트 신호 (504) 는 로컬 클록 드리프트 검출기 (516) 에 제공되고, 로컬 클록 드리프트 검출기는 로컬 클록 드리프트 어큐뮬레이터 (518) 에 신호를 제공한다. 합산기 (520) 는 로컬 클록 드리프트 어큐뮬레이터 (518) 의 출력 (Dapp-usb) 에서 디바이스 드리프트 어큐뮬레이터 (514) 출력 (Ddevice-usb) 을 감산하고 신호 (522) 를 출력한다. 신호 (522) 는 Dapp-usb - Ddevice-usb 에 대응한다.
도 5 및 도 5a 를 계속 참조하면, 데이터 이용가능 인터럽트 신호 (504) 는 또한 초기 레퍼런스 핸들러 (524) 에 제공된다. 초기 레퍼런스 핸들러 (524) 는 고 레졸루션 클록 기능부 (high resolution clock function) (526) 로 카운터 판독 (read counter) 을 출력한다. 고 레졸루션 클록 기능부 (526) 는 또한 로컬 클록 드리프트 검출기 (516) 로부터 카운터 판독을 수신한다. 고 레졸루션 클록 기능부 (526) 는 또한, 클록 값이 가변되는 것을 허용할 Hi-res 타이머 (Ft) 설정 값 (set Hi-res Timer Ft value) 을 수신할 수도 있다. 이 값은 연산 중간에 변할 가능성은 없고, 시스템 초기화 등에서 설정될 수 있다는 것에 주목한다. 고 레졸루션 클록 기능부 (526) 는 고 레졸루션 시스템 타이머 (318) 와 상호동작한다. 초기 레퍼런스 핸들러 (524) 는 또한, 지터 지연 엘리먼트 (528) 에 더해지고 타임 스탬프 플러스 지연을 시작하기 위한 초기 Tref 를 설정 (신호 (530)) 하는데 이용된다.
버퍼 (316) 는 데이터 신호 (532) ("데이터 판독 (read data)" 으로 라벨링됨) 를 데이터 전달 핸들러 (534) 로 출력하고, 데이터 전달 핸들러는 또한 고 레졸루션 시스템 타이머 (318) 의 출력 (536) 을 수신한다. 데이터 전달 핸들러 (534) 는 또한, ASRC 가 어떤 사이즈 버퍼들을 프로세싱할 것으로 예상하는지를 표시하는 (어쩌면 ASRC (326) 로부터의) 출력 버퍼 사이즈 설정 커맨드를 수신할 수도 있다. 신호 (530) 는, Tref 를 더하고, 그리고 (적절하게 식 6 또는 식 12 중 어느 하나를 본질적으로 수행하는) 합산기 (544) 에 전달되는 신호 (542) 를 생성하기 위해 Toffset 이 더해지는 중간 신호 (540) 를 생성하는 합산기 (538) 에 제공된다. 합산기 (544) 는 신호 (542), 신호 (522), 및 출력 (536) 을 더하여 합성된 타임 스탬프 (546) 를 생성한다 (본질적으로 식 2). 데이터 전달 핸들러 (534) 는 합산기 (544) 에 대한 실행 커맨드를 출력하고 고정된 수의 샘플들을 ASRC (326) 에 제공한다. ASRC (326) 는 또한, 합성된 타임 스탬프 (546) 를 수신하고 리샘플링된 데이터 (548) 를 출력한다. 구체적으로 예시하지 않았지만, 샘플링 주파수 설정 커맨드는 또한, 상기 언급한 바와 같이 계산들을 지원하기 위해 수신될 수도 있다.
예시적인 양태에서, 이 데이터 레귤레이터는 소프트웨어로서 구현된다. 다른 예시적인 양태에서, 이 데이터 레귤레이터는 하드웨어로 구현될 수도 있다.
도 6 및 도 6a 는 데이터 프로세서에서의 애플리케이션이 도 3 의 UAC 드라이버 (314) 를 이용하길 원할 때 일어날 수도 있는 프로세스들 및 신호들을 나타내는 신호 플로우 다이어그램이다. 초기에, 애플리케이션은 활성화 셋업 스테이지에서 셋업 정보를 제공한다. 셋업 정보는 샘플링 레이트, 버스 전송 주파수, 버퍼 사이즈, 클록 복구 모드 등을 포함할 수도 있다. 이 셋업 정보는 UAC 드라이버 (314) 의 데이터 레이트 레귤레이터 (도 5 및 도 5a 참조) 에 제공된다. 데이터 레이트 레귤레이터는 요청된 레이트로 정확히 및 안정적으로 (지터 없음) USB 하드웨어 제어기 (308) 로부터 데이터를 전달하는 방법을 계산한다. 이 계산을 위한 프로세스는 위에서 설명된다. 이 다이어그램에서의 타이머/클록 엘리먼트는 도 3 의 고 레졸루션 시스템 타이머 (318) 이지만, 다른 타이머들이 또한 이용될 수 있다.
도 6 및 도 6a 는 애플리케이션 프로세서 (302) 와 같은 데이터 프로세서에서의 애플리케이션이 UAC 드라이버 (314) 를 이용하길 원할 때 일어날 수도 있는 프로세스들 및 신호들을 나타내는 신호 플로우 다이어그램 (600) 이다. 초기에, 애플리케이션은 활성화 셋업 스테이지 (블록 (602)) 에서 셋업 정보를 제공한다. 애플리케이션 프로세서 (302) 는 ASRC (326) 에서 입력 및 출력 샘플링 주파수를 설정하고, 입력 샘플링 레이트 주파수, 버스 전송 주파수, 서비스 간격 (이는 버스 전송 주파수 이상임), 출력 버퍼 사이즈, 클록 복구 모드 (비동기, 적응, 또는 동기), 임의의 하드웨어 인터페이스 특정 셋업 파라미터들을 전송하고, 버퍼(들) (316) 에 대한 임의의 물리 메모리를 UAC 드라이버 (314) 에, 및 특히 UAC 드라이버 (314) 에서의 데이터 레귤레이터에 등록한다. 마지막으로 활성화 커맨드 (신호 (604)) 가 데이터 레귤레이터로 전송된다. 데이터 레귤레이터는 하드웨어 인터페이스 특정 셋업 파라미터들을 USB 하드웨어 제어기 (308) 에 전달하고 (신호 (606)) 기록할 다음 프리 버퍼 공간을 프로그래밍한다 (신호 (608)). USB 하드웨어 제어기 (308) 는 데이터 레디 이벤트 신호 (610) 를 데이터 레귤레이터로 전송한다. 이 신호 (610) 는 데이터 레귤레이터가 고 레졸루션 시스템 타이머 (318) 를 판독하고 (신호 (612)), USB 하드웨어 제어기 (308) 로부터 데이터 사이즈를 판독하고 (신호 (614)), 그리고 다음을 포함하는 일련의 액션들을 수행하게 한다: 클록 값을 Tref 에 저장, (버퍼 사이즈, 및 명시적으로 피드백 구동되지 않으면, 수신된 데이터 사이즈로부터 도출된) Tjitter 를 Tref 에 더함, i = 0; Ddevice-usb = 0; Dapp-sub = 0 을 초기화; 및 다음 Toffset 을 컴퓨팅; Tnext 를 컴퓨팅 (식 2) (일반적으로 블록 (616) 을 참조). 데이터 레귤레이터는 그 후 고 레졸루션 시스템 타이머 (318) 에 대한 Tnext 를 프로그래밍하고 (신호 (618)) 기록할 다음 프리 버퍼 공간을 프로그래밍한다 (신호 (620)).
도 6 및 도 6a 를 계속 참조하면, 시스템은 레디 상태에 들어가고 데이터 레귤레이터는 USB 하드웨어 제어기 (308) 로부터 다음 데이터 레디 이벤트 (신호 (622)) 를 수신하고, USB 하드웨어 제어기는 클록 판독 신호 (624) 및 데이터 레귤레이터가 순 드리프트 (Ddevice-usb 및 Dapp-usb) 를 업데이트 (일반적으로 블록 (628) 참조) 하는 것을 허용하는 데이터 사이즈 판독 신호 (626) 를 트리거한다.
어느 포인트에서, USB 하드웨어 제어기 (308) 는, 데이터 레귤레이터로, 데이터 레귤레이터가 Ddevice-usb 를 업데이트 (일반적으로 블록 (632) 참조) 하게 하는 비동기 클록 피드백 이벤트 (신호 (630)) 를 전송할 수도 있다.
어느 다른 시간에, 고 레졸루션 시스템 타이머 (318) 는 데이터 레귤레이터로 타이머 만료된 이벤트 신호 (634) 를 전송할 수도 있다. 이 신호 (634) 에 응답하여, 데이터 레귤레이터는 1 씩 i 를 증분시킬 수도 있고, i 가 샘플링 주파수와 같으면, Tref 를 Tnext 로 그리고 i = 0 으로 설정하고; 다음 Toffset 을 컴퓨팅하고; 그리고 식 2 를 컴퓨팅한다 (일반적으로 블록 (636) 참조). 데이터 레귤레이터는 데이터 이용가능 신호 (638) 를 애플리케이션 프로세서 (302) 로 전송하고, Tnext 를 프로그래밍하고 (신호 (640)), 그리고 기록할 다음 프리 버퍼 공간을 프로그래밍한다 (신호 (642)). 애플리케이션 프로세서 (302) 는 데이터 레귤레이터로부터 순 드리프트 또는 타임 스탬프를 판독하고 (신호 (644)) UAC 드라이버 (314) 에서의 버퍼(들) (316) (신호 (646)) 및/또는 USB 하드웨어 제어기 (308) (신호 (646A)) 로부터 데이터를 판독한다.
애플리케이션 프로세서 (302) 는 새로운 순 드리프트 및 이전의 순 드리프트로부터 보정할 샘플들의 수를 컴퓨팅하고 (블록 (648)), 이를 테면 데이터, 데이터 길이, 보정할 샘플들 및 변수들을 보정할 지속기간을 가진 기록 커맨드를 이용하는 것에 의해, 데이터를 그 파일 시스템에 기록한다. 데이터는 음성 패킷들일 수도 있다는 것에 주목한다. 필요하다면, 드리프트 보정은 인지가능한 글리치들을 감소시키기 위한 구성가능한 주기에 걸쳐 스트레치 아웃될 수도 있다. 그러나, 스트레치-아웃 주기에도, 이러한 보정은, 종래 시스템들에서 때때로 이용되는 바와 같이 10 초 대신에 25 ms 정도 일어날 것으로 예상된다. 프로세스는 그 후 비활성화된다 (블록 (660)).
본 개시의 추가적인 양태들은 에러 프리 드리프트 검출을 제공하고 장래의 계획된 절전 계획들을 지원하기 위한 기법들을 제공하는 것에 추가로 주목한다. 이것과 관련하여, 분수 샘플링 레이트들, 이를 테면 상대적으로 공통의 44.1 kHz 가 주변 디바이스에서의 어큐뮬레이터들과 호스트에서의 어큐뮬레이터들 간의 위상 불일치 때문에 드리프트의 오 검출들에 적합하다는 것이 인식되어야 한다. 드리프트 검출을 돕기 위해 타임 스탬프들을 포함하는 시그널링 프로토콜과 대조적으로, USB 프로토콜은 주변 디바이스로부터 호스트로의 타임 스탬프들을 포함하지 않는다. 오히려, 호스트는 단지 패킷화된 USB 데이터를 수신한다. 각각의 USB 패킷 내측에서, 데이터의 양은 가변적이다. 분수 샘플링 레이트 및 알려지지 않은 패킷 사이즈에 의한 문제는 업계에서 잘 문서화되어 왔다. 통상의 솔루션은 10 분과 같은 오랜 기간에 걸쳐 샘플들을 시간 평균화한 후, 드리프트의 보정을 수행하는 것이다. 샘플들의 시간 평균을 어셈블링하는데 있어서의 긴 지연은 보정이 적용되기 전에 레이턴시를 초래한다. 보정이 적용될 때까지, 사용자는 저하된 오디오 경험을 경험할 수도 있다. 마찬가지로, 보정의 입도 (granularity) 는 순시 또는 랜덤 드리프트 이벤트들에 대해 적절하지 않을 수도 있다.
본 개시의 예시적인 양태들은 에러 프리 드리프트 검출을 허용한다. 이것은 일 예의 이용을 통하여 가장 잘 설명된다. 샘플링 주파수 (Fs) 가 44.1 kHz 이고 USB 버스 전송 속도가 1000 Hz (즉, 밀리초 당 1 샘플) 이고, binterval (패킷 당 샘플들) 이 11 인 것을 가정하면, 호스트는 간격 당 45158.4 샘플들을 수신할 것으로 예상할 것이다. 분수 샘플은 USB 룰들 하에서 전송될 수 없다. 주변 디바이스 어큐뮬레이터는 샘플들이 호스트에 송신될 때 시작되지만, 호스트 어큐뮬레이터는 수신 후까지 지연되어, 어큐뮬레이터들은 역위상 (out of phase) 이다. 제 2 간격에서, 주변 어큐뮬레이터는 90316.8 이다. 다시, 그것은 호스트 어큐뮬레이터에 상대적인 드리프트로 표시되는 분수 샘플이다. 시간의 경과에 따라, 외부 드리프트 없이, 이 드리프트는 1 과 0 사이에서 토글링할 것이지만, 가끔 필요하지 않은 보정이 이루어질 수도 있다.
이전의 솔루션들에서와 같이 드리프트를 시간 평균화하는 대신에, 본 개시의 예시적인 양태들은 분수 나머지를 평가하고 정수에 도달하도록 요구되는 간격들의 수를 발견한다. 본 예에서, 분수 나머지가 0.4 이면, 정수에 도달하도록 요구되는 간격들의 수는 5 이다 (0.4 = 2/5, 분모가 5 이므로, 5 간격들). UAC 드라이버 (314) 는 그렇게 계산된 간격들의 수에 의해 결정된 경계에서 어큐뮬레이터를 체크할 수도 있다. 따라서, 이 예에서, UAC 드라이버 (314) 는 매 5 간격들마다 드리프트를 체크한다. 분수 샘플링 레이트에 의해 야기된 팬텀 드리프트는 존재하지 않고, 그렇기 때문에 드리프트가 검출되면, 그것은 보정 (즉, 보간 또는 데시메이션 (decimation) 등) 이 이루어져야 하는 실제 드리프트이다. 게다가, 중간 샘플들에서의 드리프트를 무시함으로써, 계산들이 포기될 수도 있으며, 이는 절전들을 초래할 수도 있다.
USB 프로토콜은 2 개의 형태들의 드리프트 레포팅을 고려한다. 첫번째는 범위내 (in-bound) 신호들이 조사되고 알려진 값들과 비교되어 드리프트를 결정하는 암시적 드리프트 검출이다. 두번째는 주변 디바이스에 의해 호스트로 전송된 드리프트의 명시적 대역외 시그널링이며, 여기서 주변 디바이스는 수신된 샘플들을 예상된 수의 샘플들과 비교하고 이들 2 개의 값들 사이의 임의의 드리프트를 다시 레포팅한다. USB 프로토콜은 암시적 드리프트 검출이 수행되는 방법에 관해서는 사일런트이고, USB 프로토콜은 또한, 호스트가 (암시적으로 또는 명시적으로 중 어느 하나로) 검출된 임의의 드리프트에 대해 보정할 수도 있는 방법에 대해 사일런트이다. 본 개시는 상기 여러 식들 및 드리프트 검출 및 그 보정을 핸들링하기 위한 프로세스를 제시하였다. 도 7 내지 도 10 은 오디오 소스들 (도 7 및 도 8) 과 오디오 싱크들 (도 9 및 도 10) 양자 모두에 대한 2 개의 가능한 드리프트 레포팅 가능성들 및 보정 프로세스를 예시한다. 특히, 도 7 은 오디오 소스, 즉, 마이크로폰 (700) 에 대한 대역내 드리프트 레포팅 프로세스를 예시한다. 데이터가 마이크로폰 (700) 에 의해 캡처되고 USB 디바이스 드라이버 (704) 를 통하여 USB 호스트 내의 USB 호스트 드라이버 (706) 에 일정한 레이트로 가변 사이즈의 데이터 패킷들 (블록 (702)) 로 전달된다. USB 호스트 드라이버 (706) 는 마이크로폰 (700) 으로부터의 데이터로부터 드리프트 정보를 암시적으로 도출하고 추출된 드리프트 정보는 데이터가 버퍼 (710) 에 저장되는 동안 오디오 클라이언트로의 전달을 타이밍하기 위한 Tref+Toffset 을 결정하고 타이머를 프로그래밍 (블록 (708)) 하는데 이용된다. Tref+Toffset 을 결정하기 위한 공식은 위에서 제시된다. 블록 (708) 의 출력에 기초한 타이머 트리거 (712) 에서, 버퍼 (710) 로부터 ASRC (716) 로 가변 레이트로 고정된 수의 패킷들이 전송된다 (블록 (714)). 동시에, 드리프트 정보는 순 플레이백 지연을 레포팅하고 (블록 (718)) 합성된 타임스탬프를 생성 (블록 (720)) 하는데 이용된다. ASRC (716) 는 리샘플링된 데이터 (블록 (722)) 를 출력한다. 고정된 수의 패킷들이, 사실상 고정되지만, 레이트를 가변시키는 것은 드리프트가 보정되는 것을 허용한다. 즉, 패킷 전달은 하나의 드리프트를 보정하도록 가속화되거나, 또는 다른 방향의 드리프트를 보정하도록 감속될 수도 있다.
유사하게, 도 8 은 실질적으로 유사하지만 마이크로폰 (800) 에 대한 대역외 드리프트 레포팅 프로세스를 반영한다. 특히, 드리프트 검출은 마이크로폰 (800) 의 출력에 기초하여 USB 디바이스 드라이버 (802) 에 의해 수행된다. USB 디바이스 드라이버 (802) 는 그 후 대역외 드리프트 레포트 (블록 (804)) 를 출력하고 또한 일정한 레이트로 가변 사이즈의 데이터 패킷들 (블록 (806)) 을 전송한다. 드리프트 정보와 데이터 양자 모두는 USB 호스트 내의 USB 호스트 드라이버 (808) 에 제공된다. 드리프트 정보는 데이터가 버퍼 (812) 에 저장되는 동안 상기 제시된 식들을 이용하여 오디오 클라이언트로의 전달을 타이밍하기 위한 Tref+Toffset 을 결정하고 타이머를 프로그래밍 (블록 (810)) 하는데 이용된다. 블록 (810) 의 출력에 기초한 타이머 트리거 (814) 에서, 버퍼 (812) 는 ASRC (818) 로 가변 레이트로 고정된 수의 패킷들을 전송한다 (블록 (816)). 동시에, 드리프트 정보는 순 플레이백 지연을 레포팅하고 (블록 820) 합성된 타임스탬프 (블록 (822)) 를 생성하는데 이용된다. ASRC (818) 는 리샘플링된 데이터 (블록 (824)) 를 출력한다. 다시, 가변 레이트의 이용은 드리프트 보정을 허용한다.
그에 반해서, 도 9 및 도 10 은 플레이백 경로에 대한 드리프트의 영향을 탐구한다. 이것과 관련하여, 도 9 는 대역내 드리프트 레포팅 프로세스를 예시한다. 마이크로폰 (900) 은 도 7 의 마이크로폰 (700) 으로서의 역할을 할 수도 있지만, 스피커 (902) 가 더 큰 관심사이다. 스피커 (902) 는 USB 디바이스 드라이버 (904) 로부터 데이터를 수신한다. USB 디바이스 드라이버 (904) 는 USB 호스트 드라이버 (906) 로부터 데이터를 수신한다. USB 호스트 드라이버 (906) 는 USB 호스트 드라이버 (906) 로 들어오는 데이터를 상기 설명한 바와 같은 USB 레퍼런스와 비교하여 드리프트 정보를 결정한다. 이 드리프트 정보는 상기 설명된 식들을 이용하여 오디오 클라이언트로의 전달을 타이밍하기 위한 Tref+Toffset 을 결정하고 타이머를 프로그래밍 (블록 (908)) 하는데 이용된다. 이 결정은 타이머 트리거 (블록 (910)) 를 생성하고, 순 레코딩 지연을 레포팅하고 (블록 (912)), 그리고 합성된 타임스탬프를 생성 (블록 (914)) 하는데 이용된다. 타이머 트리거 (블록 (910)) 에서, 가변 레이트로 고정된 수의 패킷들이 페치되고 (블록 (916)) 버퍼 (920) 에서 패킷들을 버퍼링하는 오디오 모듈 (918) 에 제공된다. 버퍼 (920) 는 일정한 레이트로 가변 사이즈의 데이터 패킷들 (블록 (922)) 을 릴리즈하고 그들을 USB 호스트 드라이버 (906) 에 제공하고, USB 호스트 드라이버는 그들을 USB 디바이스 드라이버 (904) 를 통하여 스피커 (902) 에 전달한다. 가변 사이즈의 데이터 패킷들의 이용은 드리프트가 보정되는 것을 허용한다. 스피커 방향의 드리프트의 보정은, 마이크로폰 (900) 과 스피커 (902) 양자 모두가 동일한 소스를 통해 클록킹된다고 하면, 대역내 드리프트 검출기를 통해 USB 호스트 드라이버 (906) 에서 검출된 드리프트로부터 추론될 수 있다.
유사하게, 도 10 은 대역외 드리프트 레포팅 프로세스를 예시한다. 마이크로폰 (1000) 은 상기 설명된 도 8 의 마이크로폰 (800) 으로서의 역할을 할 수도 있다. 스피커 (1002) 에 더 관심이 크다. 스피커 (1002) 는 USB 디바이스 드라이버 (1006) 에 대역외 드리프트 정보 및 데이터를 전달한다 (블록 (1004)). USB 디바이스 드라이버 (1006) 는 USB 호스트 드라이버 (1008) 로부터 데이터를 수신하고 마찬가지로 대역외 드리프트 정보를 USB 호스트 드라이버 (1008) 에 전달한다. 이 드리프트 정보는 오디오 클라이언트로의 전달을 타이밍하기 위한 Tref+Toffset 을 결정하고 타이머를 프로그래밍 (블록 (1010)) 하는데 이용된다. 이 결정은 타이머 트리거 (블록 (1012)) 를 생성하고, 순 레코딩 지연을 레포팅하고 (블록 (1014)), 그리고 합성된 타임스탬프 (블록 (1016)) 를 생성하는 것을 돕는데 이용된다. 타이머 트리거 (블록 (1012)) 에서, 가변 레이트로 고정된 수의 패킷들이 페치되고 (블록 (1018)) 버퍼 (1022) 에서 패킷들을 버퍼링하는 오디오 모듈 (1020) 에 제공된다. 버퍼 (1022) 는 일정한 레이트로 가변 사이즈의 데이터 패킷들 (블록 (1024)) 을 릴리즈하고 그들을 USB 호스트 드라이버 (1008) 에 제공하며, USB 호스트 드라이버는 그들을 USB 디바이스 드라이버 (1006) 를 통하여 스피커 (1002) 에 전달한다. 다시, 가변 사이즈의 데이터 패킷들의 이용은 드리프트 보정을 허용한다.
상기 언급한 바와 같이, 예시적인 양태들은 또한, 장래의 고려된 절전들을 허용한다. 이 가능성은 가변 데이터 및 샘플링 레이트들을 핸들링하는데 이용되는 제너릭 (때때로 불가지론적으로 지칭됨) 알고리즘들에 의해 가능해진다. 즉, 상기 식들에서, 그 식들은 샘플링 레이트로서 불가지론적 fs 및 버스 전송 속도 (이미 FS, SS, 및 HS 를 고려함) 로서 ft 로 시작된다. 애플리케이션 계층 알고리즘들 (324) 에서 이들 불가지론적 값들을 이용하는 것에 의해, 다른 새로운 샘플링 레이트들 또는 다른 비-표준 샘플링 레이트들이 수용된다. 불가지론적 접근법은 DLL 의 적절한 추정을 허용한다. binterval (패킷 당 샘플들의 수) 의 증가는 패킷의 사이즈를 증가시키고 또한 버퍼(들) (316) 를 채우는데 걸리는 시간을 증가시킨다는 것이 인식되어야 한다. 버퍼(들) (316) 가 채워지고 있는 동안 애플리케이션 프로세서 (302) 는 아이들이기 때문에, 애플리케이션 프로세서 (302) 는 저전력 모드 또는 슬립 모드에 들어가게 될 수도 있다. 버퍼(들) (316) 를 채우는데 더 오래걸릴수록 (즉, 패킷 당 샘플들의 수가 더 커짐), 애플리케이션 프로세서 (302) 가 슬립 모드에 더 오래 있을 수도 있다. 애플리케이션 프로세서 (302) 가 슬립 모드에 더 오래 있을수록, 더 많이 절전된다. 따라서, 패킷 당 샘플들의 수를 증가시켜야 한다는 압박이 업계에 존재한다. 애플리케이션 계층 알고리즘들 (324) 에서 제너릭 binterval 을 가짐으로써, 본 개시의 예시적인 양태들은 오디오 디바이스 디스크립터에서 더 큰 binterval 값들을 수락하고 따라서 패킷 당 샘플들의 수의 임의의 장래의 변화들을 수용하고 따라서 장래의 절전들을 허용할 수도 있다.
본 명세서에서 개시된 양태들에 따른 동시성 데이터 스트림들을 제어하기 위한 시스템들 및 방법들은 임의의 프로세서-기반 디바이스에 제공되거나 또는 이에 통합될 수도 있다. 제한 없이, 예들은, 셋톱 박스, 엔터테인먼트 유닛, 내비게이션 디바이스, 통신 디바이스, 고정된 로케이션 데이터 유닛, 모바일 로케이션 데이터 유닛, 글로벌 포지셔닝 시스템 (GPS) 디바이스, 모바일 폰, 셀룰러 폰, 스마트 폰, 세션 개시 프로토콜 (SIP) 폰, 태블릿, 패블릿, 서버, 컴퓨터, 휴대용 컴퓨터, 모바일 컴퓨팅 디바이스, 웨어러블 컴퓨팅 디바이스 (예를 들어, 스마트 워치, 헬쓰 또는 피트니스 트랙커, 안경류 등), 데스크톱 컴퓨터, 개인 휴대 정보 단말기 (personal digital assistant; PDA), 모니터, 컴퓨터 모니터, 텔레비전, 튜너, 라디오, 위성 라디오, 뮤직 플레이어, 디지털 뮤직 플레이어, 휴대용 뮤직 플레이어, 디지털 비디오 플레이어, 비디오 플레이어, 디지털 비디오 디스크 (DVD) 플레이어, 휴대용 디지털 비디오 플레이어, 자동차, 차량 컴포넌트, 항공전자기기 시스템들, 드론, 및 멀티콥터를 포함한다.
이것과 관련하여, 도 11 은 본 명세서에서 설명된 드리프트 검출, 레이트 매칭 및 균일한 패킷 어셈블리를 수행하는 USB 시스템을 채용할 수 있는 프로세서-기반 시스템 (1100) 의 예를 예시한다. 이 예에서, 프로세서-기반 시스템 (1100) 은, 각각 하나 이상의 프로세서들 (1104) 을 포함하는 하나 이상의 중앙 프로세싱 유닛들 (CPU들) (1102) 을 포함한다. CPU(들) (1102) 는 일시적으로 저장된 데이터에의 고속 액세스를 위해 프로세서(들) (1104) 에 커플링된 캐시 메모리 (1106) 를 가질 수도 있다. CPU(들) (1102) 는 시스템 버스 (1108) 에 커플링되고 프로세서-기반 시스템 (1100) 에 포함된 마스터 및 슬레이브 디바이스들을 상호커플링할 수 있다. 잘 알려진 바와 같이, CPU(들) (1102) 는 어드레스, 제어, 및 데이터 정보를 시스템 버스 (1108) 를 통해 교환함으로써 이들 다른 디바이스들과 통신한다. 예를 들어, CPU(들) (1102) 는 슬레이브 디바이스의 예로서 메모리 제어기 (1110) 에 버스 트랜잭션 요청들을 통신할 수 있다. 도 11 에 예시하지 않았지만, 다중 시스템 버스들 (1108) 이 제공될 수 있으며, 여기서 각각의 시스템 버스 (1108) 는 상이한 패브릭을 구성한다.
다른 마스터 및 슬레이브 디바이스들이 시스템 버스 (1108) 에 접속될 수 있다. 도 11 에 예시한 바와 같이, 이들 디바이스들은 예들로서, 메모리 시스템 (1112), 하나 이상의 입력 디바이스들 (1114), 하나 이상의 출력 디바이스들 (1116), 하나 이상의 네트워크 인터페이스 디바이스들 (1118), 및 하나 이상의 디스플레이 제어기들 (1120) 을 포함할 수 있다. 입력 디바이스(들) (1114) 는 입력 키들, 스위치들, 보이스 프로세서들 등을 포함하는 (그러나 이들에 제한되지는 않음) 임의의 타입의 입력 디바이스를 포함할 수 있다. 출력 디바이스(들) (1116) 는 오디오, 비디오, 다른 시각적 표시자들 등을 포함하는 (그러나 이들에 제한되지는 않음) 임의의 타입의 출력 디바이스를 포함할 수 있다. 네트워크 인터페이스 디바이스(들) (1118) 는 네트워크 (1122) 로 및 이로부터 데이터의 교환을 허용하도록 구성된 임의의 디바이스들일 수 있다. 네트워크 (1122) 는 유선 또는 무선 네트워크, 사설 또는 공중 네트워크, 로컬 영역 네트워크 (LAN), 무선 로컬 영역 네트워크 (WLAN), 광역 네트워크 (WAN), BLUETOOTHTM 네트워크, 및 인터넷을 포함하는 (그러나 이들에 제한되지는 않음) 임의의 타입의 네트워크일 수 있다. 네트워크 인터페이스 디바이스(들) (1118) 는 원하는 임의의 타입의 통신 프로토콜을 지원하도록 구성될 수 있다. 메모리 시스템 (1112) 은 하나 이상의 메모리 유닛들 (1124)(O-N) 을 포함할 수 있다.
CPU(들) (1102) 는 또한 하나 이상의 디스플레이들 (1126) 로 전송된 정보를 제어하기 위해 시스템 버스 (1108) 를 통해 디스플레이 제어기(들) (1120) 에 액세스하도록 구성될 수도 있다. 디스플레이 제어기(들) (1120) 는, 디스플레이(들) (1126) 에 적합한 포맷으로 디스플레이될 정보를 프로세싱하는 하나 이상의 비디오 프로세서들 (1128) 을 통해 디스플레이되도록 디스플레이(들) (1126) 로 정보를 전송한다. 디스플레이(들) (1126) 는 음극선관 (CRT), 액정 디스플레이 (LCD), 플라즈마 디스플레이, 발광 다이오드 (LED) 디스플레이 등을 포함하는 (그러나 이들에 제한되지는 않음) 임의의 타입의 디스플레이를 포함할 수 있다.
당업자들은 본 명세서에서 개시된 양태들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 회로들, 및 알고리즘들이 전자 하드웨어, 메모리에 또는 다른 컴퓨터 판독가능 매체에 저장되고 프로세서 또는 다른 프로세싱 디바이스에 의해 실행된 명령들, 또는 양자의 조합들로서 구현될 수도 있다는 것을 추가로 인식할 것이다. 본 명세서에서 설명된 디바이스들은 예들로서, 임의의 회로, 하드웨어 컴포넌트, 집적 회로 (IC), 또는 IC 칩에서 채용될 수도 있다. 본 명세서에서 개시된 메모리는 임의의 타입 및 사이즈의 메모리일 수도 있고 원하는 임의의 타입의 정보를 저장하도록 구성될 수도 있다. 이 상호교환가능성을 분명히 예시하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들이 그들의 기능성의 관점에서 일반적으로 상술되었다. 이러한 기능성이 구현되는 방법은 특정한 애플리케이션, 설계 선택들, 및/또는 전체 시스템에 부과된 설계 제약들에 의존한다. 당업자들은 설명된 기능성을 각각의 특정한 애플리케이션에 대해 다양한 방식들로 구현할 수도 있지만, 이러한 구현 결정들은 본 개시의 범위로부터 벗어남을 야기하는 것으로서 해석되어서는 안된다.
본 명세서에서 개시된 양태들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 및 회로들은 프로세서, 디지털 신호 프로세서 (DSP), 주문형 집적 회로 (ASIC), 필드 프로그래밍가능 게이트 어레이 (FPGA) 또는 다른 프로그래밍가능 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 본 명세서에서 설명된 기능들을 수행하도록 설계된 그 임의의 조합으로 구현 또는 수행될 수도 있다. 프로세서는 마이크로프로세서일 수도 있지만, 대안으로, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수도 있다. 프로세서는 또한, 컴퓨팅 디바이스들의 조합 (예를 들어, DSP 와 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 결합된 하나 이상의 마이크로프로세서들, 또는 임의의 다른 이러한 구성) 으로서 구현될 수도 있다.
본 명세서에서 개시된 양태들은 하드웨어로 및 하드웨어에 저장되는 명령들로 구현될 수도 있고, 예를 들어, 랜덤 액세스 메모리 (RAM), 플래시 메모리, 판독 전용 메모리 (ROM), 전기적으로 프로그래밍가능 ROM (EPROM), 전기적으로 소거가능한 프로그래밍가능 ROM (EEPROM), 레지스터들, 하드 디스크, 착탈식 디스크, CD-ROM, 또는 당업계에 알려진 임의의 다른 형태의 컴퓨터 판독가능 매체에 상주할 수도 있다. 예시적인 저장 매체는 프로세서에 커플링되어 프로세서는 저장 매체로부터 정보를 판독하고 저장 매체에 정보를 기록할 수 있다. 대안으로, 저장 매체는 프로세서와 일체형일 수도 있다. 프로세서 및 저장 매체는 ASIC 에 상주할 수도 있다. ASIC 은 원격국에 상주할 수도 있다. 대안으로, 프로세서 및 저장 매체는 원격국, 기지국, 또는 서버에 별개의 컴포넌트들로서 상주할 수도 있다.
또한, 본 명세서의 예시적인 양태들 중 임의의 것에서 설명된 동작 단계들은 예들 및 논의를 제공하기 위해 설명된다는 것에 또한 주목하게 된다. 설명된 동작들은 예시된 시퀀스들 이외의 다수의 상이한 시퀀스들로 수행될 수도 있다. 더욱이, 단일 동작 단계에서 설명된 동작들은 실제로 다수의 상이한 단계들로 수행될 수도 있다. 추가적으로, 예시적인 양태들에서 논의된 하나 이상의 동작 단계들은 결합될 수도 있다. 플로우차트 다이어그램들로 예시된 동작 단계들에는 당업자에게 용이하게 명백할 바와 같이 다수의 상이한 수정들이 행해질 수도 있는 것으로 이해되어야 한다. 당업자들은 또한, 정보 및 신호들이 다양한 상이한 기술들 및 기법들 중 임의의 것을 이용하여 나타내질 수도 있다는 것을 이해할 것이다. 예를 들어, 상기 설명 전반에 걸쳐 참조될 수도 있는 데이터, 명령들, 커맨드들, 정보, 신호들, 비트들, 심볼들, 및 칩들은 전압들, 전류들, 전자기파들, 자기장들 또는 입자들, 광학장들 또는 입자들, 또는 그 임의의 조합으로 나타내질 수도 있다.
본 개시의 이전의 설명은 당업자가 본 개시를 제조 또는 이용하는 것을 가능하게 하기 위해 제공된다. 본 개시에 대한 다양한 수정들은 당업자들에게 용이하게 명백할 것이며, 본 명세서에서 정의된 일반적인 원리들은 본 개시의 사상 또는 범위로부터 벗어남 없이 다른 변동들에 적용될 수도 있다. 따라서, 본 개시는 본 명세서에서 설명된 예들 및 설계들에 제한되도록 의도되지 않고, 본 명세서에서 개시된 원리들 및 신규한 피처들에 부합하는 최광의 범위를 부여받게 하려는 것이다.
Claims (32)
- 범용 시리얼 버스 (Universal Serial Bus; USB) 시스템에서의 오디오 또는 비디오 통신을 제어하기 위한 방법으로서,
제 1 프로세서 내의 USB 드라이버에서 오디오 또는 비디오 데이터를 포함하는 가변 사이즈의 패킷들을 수신하는 단계;
수신된 상기 가변 사이즈의 패킷들에 기초하여 상기 제 1 프로세서에서 균일 사이즈의 패킷들을 어셈블링하는 단계로서, 상기 균일 사이즈의 패킷들을 어셈블링하는 단계는 USB 버스 주파수 및 가변 사이즈의 패킷 당 샘플들의 개수를 이용하여 상기 균일 사이즈의 패킷들의 크기를 계산하는 단계를 포함하는, 상기 균일 사이즈의 패킷들을 어셈블링하는 단계; 및
제 2 프로세서에 상기 균일 사이즈의 패킷들을 전달하는 단계로서, 상기 제 2 프로세서는 상기 제 2 프로세서의 프로토콜 스택 중에서 애플리케이션 계층에서의 애플리케이션들에 의해 상기 균일 사이즈의 패킷들이 이용 가능한 (useable) 애플리케이션 프로세서인, 상기 제 2 프로세서에 상기 균일 사이즈의 패킷들을 전달하는 단계를 포함하는, USB 시스템에서의 통신을 제어하기 위한 방법. - 제 1 항에 있어서,
상기 제 1 프로세서 및 상기 제 2 프로세서는 단일 집적 회로에 통합되는, USB 시스템에서의 통신을 제어하기 위한 방법. - 제 1 항에 있어서,
상기 제 1 프로세서에서 가변 사이즈의 패킷들을 수신하는 단계는 마이크로프로세서에서 상기 가변 사이즈의 패킷들을 수신하는 단계를 포함하는, USB 시스템에서의 통신을 제어하기 위한 방법. - 제 1 항에 있어서,
상기 제 1 프로세서에서 가변 사이즈의 패킷들을 수신하는 단계는 오디오 디지털 신호 프로세서 (ADSP) 에서 상기 가변 사이즈의 패킷들을 수신하는 단계를 포함하는, USB 시스템에서의 통신을 제어하기 위한 방법. - 제 1 항에 있어서,
상기 제 1 프로세서에서 가변 사이즈의 패킷들을 수신하는 단계는 주변기기와 호스트 사이의 중간 디바이스에서 상기 가변 사이즈의 패킷들을 수신하는 단계를 포함하는, USB 시스템에서의 통신을 제어하기 위한 방법. - 제 1 항에 있어서,
상기 가변 사이즈의 패킷들을 수신하는 단계는 주변기기 내의 프로세서에서 상기 가변 사이즈의 패킷들을 수신하는 단계를 포함하는, USB 시스템에서의 통신을 제어하기 위한 방법. - 삭제
- 삭제
- 제 1 항에 있어서,
상기 균일 사이즈의 패킷들을 어셈블링하는 단계는 고 레졸루션 타이머로부터 타임 스탬프를 수신하는 단계를 포함하는, USB 시스템에서의 통신을 제어하기 위한 방법. - 호스트로서,
애플리케이션 프로세서;
범용 시리얼 버스 (USB) 하드웨어; 및
오디오 디지털 신호 프로세서 (ADSP) 를 포함하고, 상기 ADSP 는,
상기 USB 하드웨어를 통하여 상기 ADSP 에서 오디오 또는 비디오 데이터를 포함하는 가변 사이즈의 패킷들을 수신하고;
수신된 상기 가변 사이즈의 패킷들에 기초하여 상기 ADSP 에서 균일 사이즈의 패킷들을 어셈블링하고;
USB 버스 주파수 및 가변 사이즈의 패킷 당 샘플들의 개수를 이용하여 상기 균일 사이즈의 패킷들의 크기를 계산하고; 그리고
프로토콜 스택 중에서 애플리케이션 계층에서의 애플리케이션들에 의한 이용을 위해 상기 애플리케이션 프로세서에 상기 균일 사이즈의 패킷들을 전달하되, 상기 애플리케이션 프로세서는 상기 애플리케이션 프로세서의 프로토콜 스택 중에서 애플리케이션 계층에서의 애플리케이션들에 의해 상기 균일 사이즈의 패킷들이 이용 가능한 (useable) 애플리케이션 프로세서인, 상기 애플리케이션 프로세서에 상기 균일 사이즈의 패킷들을 전달하도록 구성된, 호스트. - 호스트로서,
애플리케이션 프로세서;
범용 시리얼 버스 (USB) 하드웨어; 및
복수의 프로세서들을 포함하는 SoC (system on a chip) 를 포함하고, 상기 복수의 프로세서들은,
상기 USB 하드웨어를 통하여 제 1 프로세서에서 오디오 또는 비디오 데이터를 포함하는 가변 사이즈의 패킷들을 수신하고;
수신된 상기 가변 사이즈의 패킷들에 기초하여 상기 제 1 프로세서에서 균일 사이즈의 패킷들을 어셈블링하고;
USB 버스 주파수 및 가변 사이즈의 패킷 당 샘플들의 개수를 이용하여 상기 균일 사이즈의 패킷들의 크기를 계산하고; 그리고
프로토콜 스택 중에서 애플리케이션 계층에서의 애플리케이션들에 의한 이용을 위해 제 2 프로세서에 상기 균일 사이즈의 패킷들을 전달하되, 상기 제 2 프로세서는 상기 제 2 프로세서의 프로토콜 스택 중에서 애플리케이션 계층에서의 애플리케이션들에 의해 상기 균일 사이즈의 패킷들이 이용 가능한 (useable) 애플리케이션 프로세서인, 상기 제 2 프로세서에 상기 균일 사이즈의 패킷들을 전달하도록 구성된, 호스트. - 제 11 항에 있어서,
상기 제 1 프로세서는 마이크로프로세서를 포함하는, 호스트. - 제 11 항에 있어서,
상기 제 1 프로세서는 오디오 디지털 신호 프로세서 (ADSP) 를 포함하는, 호스트. - 삭제
- 삭제
- 제 11 항에 있어서,
상기 제 1 프로세서는 고 레졸루션 타이머로부터 타임 스탬프를 수신함으로써 상기 균일 사이즈의 패킷들을 어셈블링하도록 구성되는, 호스트. - 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 프로세서로서,
오디오 데이터 버퍼; 및
범용 시리얼 버스 (USB) 오디오 클라이언트 (UAC) 를 포함하고; USB UAC 는,
오디오 또는 비디오 데이터를 포함하는 가변 사이즈의 패킷들을 수신하고;
수신된 상기 가변 사이즈의 패킷들에 기초하여 균일 사이즈의 패킷들을 어셈블링하고;
USB 버스 주파수 및 가변 사이즈의 패킷 당 샘플들의 개수를 이용하여 상기 균일 사이즈의 패킷들의 크기를 계산하고; 그리고
프로토콜 스택 중에서 애플리케이션 계층에서의 애플리케이션들에 의한 이용을 위해 제 2 프로세서에 상기 균일 사이즈의 패킷들을 전달하되, 상기 제 2 프로세서는 상기 제 2 프로세서의 프로토콜 스택 중에서 애플리케이션 계층에서의 애플리케이션들에 의해 상기 균일 사이즈의 패킷들이 이용 가능한 (useable) 애플리케이션 프로세서인, 상기 제 2 프로세서에 상기 균일 사이즈의 패킷들을 전달하도록 구성된, 프로세서. - 제 28 항에 있어서,
상기 프로세서는 USB 주변기기 내에 포지셔닝되는, 프로세서. - 제 28 항에 있어서,
상기 프로세서는 주변기기와 호스트 사이에 위치하도록 구성된 중간 디바이스 내에 포지셔닝되는, 프로세서. - 제 28 항에 있어서,
상기 프로세서는 호스트 내에 포지셔닝되는, 프로세서. - 제 28 항에 있어서,
셋톱 박스; 엔터테인먼트 유닛; 내비게이션 디바이스; 통신 디바이스; 고정된 로케이션 데이터 유닛; 모바일 로케이션 데이터 유닛; 글로벌 포지셔닝 시스템 (GPS) 디바이스; 모바일 폰; 셀룰러 폰; 스마트 폰; 세션 개시 프로토콜 (SIP) 폰; 태블릿; 패블릿; 서버; 컴퓨터; 휴대용 컴퓨터; 모바일 컴퓨팅 디바이스; 웨어러블 컴퓨팅 디바이스; 데스크톱 컴퓨터; 개인 휴대 정보 단말기 (PDA); 모니터; 컴퓨터 모니터; 텔레비전; 튜너; 라디오; 위성 라디오; 뮤직 플레이어; 디지털 뮤직 플레이어; 휴대용 뮤직 플레이어; 디지털 비디오 플레이어; 비디오 플레이어; 디지털 비디오 디스크 (DVD) 플레이어; 휴대용 디지털 비디오 플레이어; 자동차; 차량 컴포넌트; 항공전자기기 시스템들; 드론; 및 멀티콥터로 이루어진 그룹으로부터 선택된 디바이스에 통합된, 프로세서.
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662355166P | 2016-06-27 | 2016-06-27 | |
US62/355,166 | 2016-06-27 | ||
US201762517247P | 2017-06-09 | 2017-06-09 | |
US62/517,247 | 2017-06-09 | ||
US15/631,807 US20170373881A1 (en) | 2016-06-27 | 2017-06-23 | Systems and methods for controlling isochronous data streams |
US15/631,807 | 2017-06-23 | ||
PCT/US2017/039198 WO2018005322A1 (en) | 2016-06-27 | 2017-06-26 | Systems and methods for controlling isochronous data streams |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190022544A KR20190022544A (ko) | 2019-03-06 |
KR102464293B1 true KR102464293B1 (ko) | 2022-11-04 |
Family
ID=60678003
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020187037030A KR102464293B1 (ko) | 2016-06-27 | 2017-06-26 | 동시성 데이터 스트림들을 제어하기 위한 시스템들 및 방법들 |
Country Status (10)
Country | Link |
---|---|
US (1) | US20170373881A1 (ko) |
EP (1) | EP3476084B1 (ko) |
JP (1) | JP7148413B2 (ko) |
KR (1) | KR102464293B1 (ko) |
CN (1) | CN109417500B (ko) |
AU (1) | AU2017291490B2 (ko) |
BR (1) | BR112018076412A2 (ko) |
ES (1) | ES2882146T3 (ko) |
TW (1) | TW201802700A (ko) |
WO (1) | WO2018005322A1 (ko) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10628172B2 (en) | 2016-06-27 | 2020-04-21 | Qualcomm Incorporated | Systems and methods for using distributed universal serial bus (USB) host drivers |
US10678494B2 (en) * | 2016-06-27 | 2020-06-09 | Qualcomm Incorporated | Controlling data streams in universal serial bus (USB) systems |
US10651860B2 (en) * | 2017-06-15 | 2020-05-12 | Cirrus Logic, Inc. | Asynchronous positional feedback for asynchronous and isochronous communication |
WO2019061287A1 (zh) * | 2017-09-29 | 2019-04-04 | 华为技术有限公司 | 一种电子设备和降低功耗的方法及装置 |
KR20200055901A (ko) * | 2018-11-14 | 2020-05-22 | 삼성전자주식회사 | 액세서리 장치로부터 수신된 식별 정보에 기반하여 동작을 수행하는 전자 장치, 그의 동작 방법 및 액세서리 장치 |
US20220039041A1 (en) * | 2018-12-07 | 2022-02-03 | Huawei Technologies Co., Ltd. | Point-to-Multipoint Data Transmission Method and Electronic Device |
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 | 優達科技股份有限公司 | 同步校正方法、主控裝置及僕裝置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020110213A1 (en) * | 2001-02-13 | 2002-08-15 | Sigma Tel, Inc. | Method and apparatus for providing data for sample rate conversion |
US20060222016A1 (en) * | 2005-03-29 | 2006-10-05 | Lucent Technologies Inc. | Synchronization of time stamps of peer devices in a communication node |
US20110116646A1 (en) * | 2009-11-19 | 2011-05-19 | Sander Wendell B | Electronic device and external equipment with digital noise cancellation and digital audio path |
Family Cites Families (17)
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 |
WO2003101071A1 (en) * | 2002-05-29 | 2003-12-04 | Matsushita Electric Industrial Co., Ltd. | 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 |
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 |
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 | 北京中科大洋科技发展股份有限公司 | 一种面向实时应用的视音频数据网络传输系统和方法 |
US10305616B2 (en) * | 2014-12-16 | 2019-05-28 | Robert Bosch Gmbh | Method of synchronising clocks of network devices |
-
2017
- 2017-06-23 US US15/631,807 patent/US20170373881A1/en not_active Abandoned
- 2017-06-26 AU AU2017291490A patent/AU2017291490B2/en active Active
- 2017-06-26 BR BR112018076412A patent/BR112018076412A2/pt unknown
- 2017-06-26 ES ES17737134T patent/ES2882146T3/es active Active
- 2017-06-26 CN CN201780039891.3A patent/CN109417500B/zh active Active
- 2017-06-26 TW TW106121300A patent/TW201802700A/zh unknown
- 2017-06-26 WO PCT/US2017/039198 patent/WO2018005322A1/en active Search and Examination
- 2017-06-26 EP EP17737134.1A patent/EP3476084B1/en active Active
- 2017-06-26 KR KR1020187037030A patent/KR102464293B1/ko active IP Right Grant
- 2017-06-26 JP JP2018565372A patent/JP7148413B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020110213A1 (en) * | 2001-02-13 | 2002-08-15 | Sigma Tel, Inc. | Method and apparatus for providing data for sample rate conversion |
US20060222016A1 (en) * | 2005-03-29 | 2006-10-05 | Lucent Technologies Inc. | Synchronization of time stamps of peer devices in a communication node |
US20110116646A1 (en) * | 2009-11-19 | 2011-05-19 | Sander Wendell B | Electronic device and external equipment with digital noise cancellation and digital audio path |
Also Published As
Publication number | Publication date |
---|---|
ES2882146T3 (es) | 2021-12-01 |
CN109417500B (zh) | 2021-04-20 |
TW201802700A (zh) | 2018-01-16 |
EP3476084B1 (en) | 2021-07-14 |
EP3476084A1 (en) | 2019-05-01 |
JP7148413B2 (ja) | 2022-10-05 |
BR112018076412A2 (pt) | 2019-07-16 |
JP2019526844A (ja) | 2019-09-19 |
KR20190022544A (ko) | 2019-03-06 |
CN109417500A (zh) | 2019-03-01 |
AU2017291490B2 (en) | 2021-12-09 |
US20170373881A1 (en) | 2017-12-28 |
AU2017291490A1 (en) | 2018-11-29 |
WO2018005322A1 (en) | 2018-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102464293B1 (ko) | 동시성 데이터 스트림들을 제어하기 위한 시스템들 및 방법들 | |
US9911433B2 (en) | Wireless audio synchronization | |
US20180165056A1 (en) | Wireless Coordination of Audio Playback | |
US8965942B1 (en) | Systems and methods for sample rate tracking | |
CN111147906B (zh) | 同步播放系统及同步播放方法 | |
US9804633B2 (en) | Indirect clock measuring and media adjustment | |
JP6038046B2 (ja) | パケット通信ネットワークを介して伝送されるコンテンツをストリーミングするためのクロックリカバリ機構 | |
US20240292044A1 (en) | Method, apparatus, electronic device and storage medium for audio and video synchronization monitoring | |
US8913190B2 (en) | Method and apparatus for regenerating a pixel clock signal | |
JP2007502579A (ja) | 異種コンピューティングプラットフォームにおける分散音声・ビデオキャプチャのための汎用適応同期方式 | |
US12032870B2 (en) | Wireless inter-room coordination of audio playback | |
GB2485977A (en) | Audio playback system | |
TWI622290B (zh) | 一種無動態時戳之時脈產生機制,以提供於共享頻道中傳送媒體串流 | |
US8094685B2 (en) | Systems and methods for synchronizing multiple video streams | |
US10651860B2 (en) | Asynchronous positional feedback for asynchronous and isochronous communication | |
US11924266B2 (en) | Latency reduction in remote rendering with adaptive phase shifting | |
JP2009124570A (ja) | 映像処理装置、映像処理方法、映像処理プログラム及び記憶媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |