KR20160067222A - CCIe 버스를 통한 슬레이브 식별자 스캔 및 핫 플러그 능력 - Google Patents

CCIe 버스를 통한 슬레이브 식별자 스캔 및 핫 플러그 능력 Download PDF

Info

Publication number
KR20160067222A
KR20160067222A KR1020167012057A KR20167012057A KR20160067222A KR 20160067222 A KR20160067222 A KR 20160067222A KR 1020167012057 A KR1020167012057 A KR 1020167012057A KR 20167012057 A KR20167012057 A KR 20167012057A KR 20160067222 A KR20160067222 A KR 20160067222A
Authority
KR
South Korea
Prior art keywords
bits
query
configuration
slave
control data
Prior art date
Application number
KR1020167012057A
Other languages
English (en)
Other versions
KR101861453B1 (ko
Inventor
쇼이치로 센고쿠
Original Assignee
퀄컴 인코포레이티드
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 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20160067222A publication Critical patent/KR20160067222A/ko
Application granted granted Critical
Publication of KR101861453B1 publication Critical patent/KR101861453B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • 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/40Bus structure
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Systems (AREA)
  • Small-Scale Networks (AREA)

Abstract

특히 전자 장치 내의 2 개의 디바이스들 간에 데이터의 송신을 용이하게 하는 시스템, 방법들 및 장치가 설명된다. 본원에 개시된 실시형태들은 CCIe 버스 상의 슬레이브 식별자들 (SID들) 에 대한 스캔과 관련된다. 개시된 방법은 제어 데이터 버스에서 제 1 질의를 송신하는 것으로서, 상기 제 1 질의는 비트들의 제 1 구성을 포함하는, 상기 제 1 질의를 송신하는 것, 상기 비트들의 제 1 구성과 매칭하는 비트들의 제 2 구성을 포함하는 슬레이브 식별자를 갖는 슬레이브 디바이스의 존재를 결정하는 것, 및, 슬레이브 식별자의 모든 비트들이 결정될 때까지, 비트들의 상이한 구성들을 갖는 추가의 질의들을 제어 데이터 버스에서 반복적으로 송신하는 것을 포함한다. 슬레이브 디바이스는 슬레이브 식별자에서 비트들의 대응하는 구성과 매칭하는 비트들의 구성을 포함하는, 각각의 질의에 대한 응답을 어써트할 수도 있다.

Description

CCIe 버스를 통한 슬레이브 식별자 스캔 및 핫 플러그 능력{SLAVE IDENTIFIER SCANNING AND HOT-PLUG CAPABILITY OVER CCIe BUS}
관련 출원들에 대한 상호참조
본 출원은 2013 년 10 월 9 일자로 출원된 미국 특허 가출원 제 61/889,028 호를 우선권 주장하고 이점을 청구하며, 그 전체 내용은 참조에 의해 본원에 통합된다.
기술분야
본 개시물은 공유 버스를 통해 효율적인 동작들을 가능하게 하는 것, 및 더 구체적으로, 공유 버스에 커플링된 슬레이브 디바이스들을 효율적으로 식별하고 디바이스들의 공유 버스로의 핫 플러깅을 용이하게 하기 위한 기술들에 관한 것이다.
(I2C 로도 지칭되는) I2C 는 저속 주변장치들을 마더보드, 임베디드 시스템, 셀 폰, 또는 다른 전자 디바이스들에 접속하기 위해 사용되는 멀티-마스터 직렬 싱글-엔디드 버스이다. I2C 버스는 7-비트 어드레싱을 갖는 클록 (SCL) 및 데이터 (SDA) 라인들을 포함한다. 버스는 디바이스들/노드들에 대하여 2 개의 역할들 : 마스터 및 슬레이브를 갖는다. 마스터 디바이스는 클록을 생성하고 슬레이브 디바이스들과 통신을 개시하는 디바이스이다. 슬레이브 디바이스는 마스터에 의해 어드레싱될 경우, 클록을 수신하고 응답하는 디바이스이다. I2C 버스는 임의의 수의 마스터 디바이스들이 존재할 수도 있는 것을 의미하는 멀티-마스터 버스이다. 추가로, 마스터 및 슬레이브 역할들은 (STOP 가 전송된 후에) 메세지들 간에 교환될 수도 있다. I2C 는, 각각 START 로 시작하고 STOP 으로 종료하는 기본 타입들의 메세지들을 정의한다.
카메라 구현의 이러한 맥락에서, 단방향 송신들은 센서로부터 이미지를 캡처하고 그러한 이미지 데이터를 베이스밴드 프로세서의 메모리로 송신하는데 사용되며, 제어 데이터는 베이스밴드 프로세서와 센서뿐만 아니라 다른 주변 디바이스들 간에 교환될 수도 있다. 일 실시예에서, 카메라 제어 인터페이스 (CCI) 프로토콜은 베이스밴드 프로세서와 이미지 센서 (및/또는 하나 이상의 슬레이브 디바이스들) 간의 그러한 제어 데이터를 위해 사용될 수도 있다. 일 예에서, CCI 프로토콜은 이미지 센서와 베이스밴드 프로세서 간에 I2C 직렬 버스를 통해 구현될 수도 있다.
마스터 디바이스가 공유 버스에 커플링된 슬레이브 디바이스들 및/또는 다른 디바이스들을 식별하게 하는 기술들이 요구된다.
본원에 개시된 실시형태들은 데이터 통신들을 위한 시스템들, 방법들 및 장치들을 제공한다. 특히, 본 개시물의 특정 양태들은 CCIe 버스 상의 슬레이브 식별자들 (SID들) 에 대한 스캔과 관련된다.
본 개시물의 특정 양태들에서, SID들에 대하여 스캔하는 방법은 제어 데이터 버스에서 제 1 질의를 송신하는 단계로서, 상기 제 1 질의는 비트들의 제 1 구성을 포함하는, 상기 제 1 질의를 송신하는 단계, 상기 비트들의 제 1 구성과 매칭하는 비트들의 제 2 구성을 포함하는 슬레이브 식별자를 갖는 슬레이브 디바이스의 존재를 결정하는 단계, 및 슬레이브 식별자의 모든 비트들이 결정될 때까지, 비트들의 상이한 구성들을 갖는 추가의 질의들을 제어 데이터 버스에서 반복적으로 송신하는 단계를 포함한다. 슬레이브 디바이스는 슬레이브 식별자에서 비트들의 대응하는 구성과 매칭하는 비트들의 구성을 포함하는, 각각의 질의에 대한 응답을 어써트할 수도 있다.
일 양태에서, 슬레이브 디바이스는 제 1 질의에서 송신된 워드를 제 1 질의에서 송신된 마스크를 적용함으로써 마스킹된 슬레이브 식별자의 카피와 비교함으로써, 비트들의 제 1 구성과 비트들의 제 2 구성 간의 매칭을 식별한다.
다른 양태에서, 추가의 질의들은 제 2 질의를 포함할 수도 있다. 그 방법은 비교를 위해 슬레이브 식별자의 추가 비트를 노출하는 수정된 마스크를 획득하기 위해 마스크를 수정하는 단계, 및 제어 데이터 버스에서 제 2 질의를 송신하는 단계를 더 포함할 수도 있다. 제 2 질의는 비트들의 제 1 구성 및 수정된 마스크를 포함할 수도 있다.
다른 양태에서, 추가의 질의들은 선행하는 질의에 대하여 어떤 응답도 수신되지 않을 경우 송신되는 제 3 질의를 포함할 수도 있다. 그 방법은, 비트들의 제 1 구성의 유효 최상위 비트 (MSB) 의 값을 토글링함으로써 비트들의 제 3 구성을 획득하기 위해 비트들의 제 1 구성을 수정하는 단계로서, 상기 유효 MSB 는 선행하는 질의에서 송신된 마스크의 적용에 의해 슬레이브 식별자에서 억제되지 않는 최고 값 비트에 대응하는 비트로서 정의되는, 상기 비트들의 제 1 구성을 수정하는 단계, 비교를 위해 슬레이브 식별자의 추가 비트를 노출하는 수정된 마스크를 획득하기 위해 마스크를 수정하는 단계, 및 제어 데이터 버스에서 제 3 질의를 송신하는 단계를 더 포함할 수도 있다. 제 3 질의는 비트들의 제 3 구성 및 선행하는 질의에서 송신된 마스크를 포함할 수도 있다.
다른 양태에서, 추가의 질의들은 슬레이브 식별자의 모든 비트들이 결정된 후에 송신되는 제 4 질의를 포함한다. 그 방법은, 적어도 하나의 슬레이브 디바이스가 응답을 어써트하게 했던 이전 질의에서 송신되었던 값을 갖는 복구된 마스크를 획득하기 위해 마스크를 복구하는 단계, 비트들의 제 4 구성을 획득하기 위해 이전 질의에서 송신된 비트들의 구성을 수정하는 단계, 및 제어 데이터 버스에서 제 4 질의를 송신하는 단계를 더 포함할 수도 있다. 제 4 질의는 비트들의 제 4 구성 및 복구된 마스크를 포함한다. 상이한 슬레이브 디바이스는 제 4 질의에 응답할 수도 있다. 슬레이브 디바이스는 슬레이브 식별자에서 비트들의 대응하는 구성과 매칭하는 비트들의 구성을 포함하는, 각각의 질의에 대한 응답을 어써트할 수도 있다.
다른 양태에서, 복수의 슬레이브 디바이스들은 제 1 질의에 응답한다. 복수의 슬레이브 디바이스들은, 비트들의 제 1 구성이 복수의 슬레이브 디바이스들의 개별 슬레이브 식별자들에서 비트들의 대응하는 구성들과 매칭할 경우, 동일한 응답을 어써트할 수도 있다. 응답은 제어 데이터 버스의 제 1 라인을 사용하여 어써트될 수도 있다.
다른 양태에서, 제어 데이터 버스는 2-라인 버스이다. 2-라인 버스의 양자의 라인들은 제 1 질의를 전송하는데 사용될 수도 있다.
다른 양태에서, 및 슬레이브 식별자의 모든 비트들이 결정된 후에, 방법은 제어 데이터 버스에 커플링된 모든 슬레이브 디바이스들에 대한 모든 슬레이브 식별자들이 결정될 때까지, 비트들의 상이한 구성들을 갖는 추가의 질의들을 제어 데이터 버스에서 반복적으로 송신하는 단계를 더 포함한다.
다른 양태에서, 제 1 질의는 제어 데이터 버스에 커플링된 모든 슬레이브 디바이스들로 향한다. 제 1 질의는 이전에 식별되지 않은 제어 데이터 버스에 커플링된 슬레이브 디바이스들로 향할 수도 있다. 제 1 질의는 비트들의 제 2 구성과 비트들의 제 1 구성 간에 매칭이 존재할 경우, 슬레이브 디바이스가 제어 데이터 버스를 통해 응답해야만 하는 응답 주기를 정의할 수도 있다. 응답은 비트들의 제 2 구성과 비트들의 제 1 구성 간에 매칭이 존재할 경우, 슬레이브 디바이스가 제어 데이터 버스의 제 1 라인을 순간적으로 풀 다운하는 것에 의해 어써트될 수도 있다. 제어 데이터 버스에 커플링된 다른 디바이스들은 응답 주기 동안 제어 데이터 버스의 제 1 라인에 그들의 입력을 마스킹한다.
본 개시물의 특정 양태들에서, SID들에 대하여 스캔하도록 구성된 디바이스는 제어 데이터 버스에 커플링된 슬레이브 디바이스, 제어 데이터 버스에 커플링되고 제어 데이터 버스 상의 통신들을 관리하도록 구성된 마스터 디바이스를 포함한다. 마스터 디바이스는 제어 데이터 버스에서 제 1 질의를 송신하는 것으로서, 상기 제 1 질의는 비트들의 제 1 구성을 포함하는, 상기 제 1 질의를 송신하고, 상기 비트들의 제 1 구성과 매칭하는 비트들의 제 2 구성을 포함하는 슬레이브 식별자를 갖는 슬레이브 디바이스의 존재를 결정하고, 그리고 슬레이브 식별자의 모든 비트들이 결정될 때까지, 비트들의 상이한 구성들을 갖는 추가의 질의들을 제어 데이터 버스에서 반복적으로 송신하도록 구성될 수도 있다. 슬레이브 디바이스는 슬레이브 식별자에서 비트들의 대응하는 구성과 매칭하는 비트들의 구성을 포함하는, 각각의 질의에 대한 응답을 어써트할 수도 있다.
본 개시물의 특정 양태들에서, SID들에 대하여 스캔하도록 구성된 디바이스는 제어 데이터 버스에서 제 1 질의를 송신하는 수단으로서, 상기 제 1 질의는 비트들의 제 1 구성을 포함하는, 상기 제 1 질의를 송신하는 수단, 및 상기 비트들의 제 1 구성과 매칭하는 비트들의 제 2 구성을 포함하는 슬레이브 식별자를 갖는 슬레이브 디바이스의 존재를 결정하는 수단을 포함한다. 송신하는 수단은 슬레이브 식별자의 모든 비트들이 결정될 때까지, 비트들의 상이한 구성들을 갖는 추가의 질의들을 제어 데이터 버스에서 반복적으로 송신하도록 구성될 수도 있다. 슬레이브 디바이스는 슬레이브 식별자에서 비트들의 대응하는 구성과 매칭하는 비트들의 구성을 포함하는, 각각의 질의에 대한 응답을 어써트할 수도 있다. 슬레이브 디바이스는 제 1 질의에서 송신된 워드를 제 1 질의에서 송신된 마스크를 적용함으로써 마스킹된 슬레이브 식별자의 카피와 비교함으로써, 비트들의 제 1 구성과 비트들의 제 2 구성 간의 매칭을 식별할 수도 있다.
본 개시물의 특정 양태들에서, 머신 판독가능 저장 매체는 하나 이상의 저장된 명령들을 갖는다. 하나 이상의 명령들은, 적어도 하나의 프로세서에 의해 실행될 경우, 적어도 하나의 프로세서로 하여금, 제어 데이터 버스에서 제 1 질의를 송신하는 것으로서, 상기 제 1 질의는 비트들의 제 1 구성을 포함하는, 상기 제 1 질의를 송신하는 것, 상기 비트들의 제 1 구성과 매칭하는 비트들의 제 2 구성을 포함하는 슬레이브 식별자를 갖는 슬레이브 디바이스의 존재를 결정하는 것, 및 슬레이브 식별자의 모든 비트들이 결정될 때까지, 비트들의 상이한 구성들을 갖는 추가의 질의들을 제어 데이터 버스에서 반복적으로 송신하는 것에 의해, SID들에 대하여 스캔하게 할 수도 있다. 슬레이브 디바이스는 슬레이브 식별자에서 비트들의 대응하는 구성과 매칭하는 비트들의 구성을 포함하는, 각각의 질의에 대한 응답을 어써트할 수도 있다. 슬레이브 디바이스는 제 1 질의에서 송신된 워드를 제 1 질의에서 송신된 마스크를 적용함으로써 마스킹된 슬레이브 식별자의 카피와 비교함으로써, 비트들의 제 1 구성과 비트들의 제 2 구성 간의 매칭을 식별할 수도 있다.
다양한 특징들, 특성, 및 이점들은 도면들과 함께 취해질 경우에 하기에 기재된 상세한 설명으로부터 더 명백하게 될 수도 있으며, 도면들에 있어서 유사한 참조 부호들은 전반에 걸쳐 대응하게 식별한다.
도 1 은 베이스밴드 프로세서 및 이미지 센서를 가지고 이미지 데이터 버스 및 멀티-모드 제어 데이터 버스를 구현하는 디바이스를 도시하는 블록 다이어그램이다.
도 2 는 클록이 CCIe 모드에서 심볼 대 심볼 트랜지션들 내에 임베딩될 수도 있는 방식을 도시하며, 따라서 데이터 송신들을 위해 I2C 버스에서 2 개의 라인들 (즉, SDA 라인 및 SCL 라인) 의 사용을 허용한다.
도 3 은 클록 신호를 트랜스코딩된 심볼들 내에 임베딩하기 위해, 송신기에서 데이터 비트들을 트랜스코딩된 심볼들로 트랜스코딩하는 예시적인 방법을 도시하는 블록 다이어그램이다.
도 4 는 트랜지션 수들 및 순차적인 심볼들 간의 예시적인 컨버전을 도시한다.
도 5 는 트랜지션 수들 및 순차적인 심볼들 간의 컨버전을 도시한다.
도 6 은 최상위 비트로부터 최하위 비트까지 2진 비트들을 3진수들로 컨버팅하는 방법을 도시한다.
도 7 은 최상위 비트로부터 최하위 비트까지 2진 비트들을 3진수들로 컨버팅하기 위한 송신기측 로직 회로를 도시한다.
도 8 은 최상위 비트로부터 최하위 비트까지 3진수들을 2진 비트들로 컨버팅하는 방법을 도시한다.
도 9 는 12 디지트 3진수를 20 개의 비트들로 컨버팅하기 위한 수신기측 로직 회로를 도시한다.
도 10 은 비트 19 (즉, 비트 0 인 제 1 비트에서 비트 카운트가 시작할 때 제 20 비트) 가 CCIe 프로토콜에서 대체로 사용되지 않고, 공유 버스 상의 디바이스들 간의 커맨드들을 위해 사용될 수도 있는 것을 개념적으로 도시한다.
도 11 은 공유 버스가 I2C 모드로부터 CCIe 모드로 동작하도록 스위칭하고 있는 것을 슬레이브 디바이스들에 나타내기 위해, 마스터 디바이스에 의해 공유 버스를 통해 전송될 수도 있는 CCIe 모드 엔트리 표시자에 대한 예시적인 일반적인 호출을 도시한다.
도 12 는 CCIe 모드로부터 I2C 모드로의 트랜지션을 모든 CCIe 가능 디바이스들에 나타내기 위해, CCIe 마스터 디바이스 (예컨대, I2C 모드에 있는 동안 도 1 의 마스터 디바이스) 에 의해 이슈될 수도 있는 예시적인 CCIe 호출을 도시한다.
도 13 은 예시적인 CCIe 슬레이브 식별자 (SID) 워드 포맷을 도시한다. 이 도면은 CCIe SID 워드 포맷의 부분으로서 16-비트 슬레이브 식별자 (SID) 의 사용을 도시한다.
도 14 는 예시적인 CCIe 어드레스 워드 포맷을 도시한다.
도 15 는 예시적인 기록 데이터 워드 포맷을 도시한다.
도 16 은 예시적인 판독 사양 워드 포맷을 도시한다.
도 17 은 예시적인 판독 데이터 워드 포맷을 도시한다.
도 18 은 I2C 일 바이트 기록 데이터 동작의 예시적인 타이밍 다이어그램을 도시한다.
도 19 는 SDA 라인 및 SCL 라인을 통한 송신을 위해 데이터 비트들이 12 개 심볼들로 트랜스코딩되는 예시적인 CCIe 송신을 도시한다.
도 20 은 도 2 내지 도 10 에 도시된 인코딩 방식으로부터 발생하는 제 20 비트 (비트 19) 의 예시적인 맵핑을 도시한다.
도 21 은 도 20 의 제 20 비트 (비트 19) 의 예시적인 맵핑 내의 서브-영역의 세부사항들을 도시한다.
도 22 는 본원에 개시된 특정 양태들에 따라 마스터 디바이스에 의해 이슈될 수도 있는 "SID 전체 스캔" 커맨드의 일 예를 도시한다.
도 23 은 본원에 개시된 특정 양태들에 따라 SID들에 대하여 스캔하는데 사용될 수도 있는 알고리즘의 일 예를 도시한다.
도 24 는 SDA 라인 및 SCL 라인을 포함하는 공유 버스를 통한 SID 스캔에 대한 타이밍 다이어그램을 도시한다.
도 25 는 본원에 개시된 특정 양태들에 따라 수행되는 SID 스캔의 다양한 단계들의 일 예를 도시한다.
도 26 은 본원에 개시된 특정 양태들에 따라 수행되는 SID 스캔의 다양한 단계들의 일 예를 도시한다.
도 27 은 본원에 개시된 특정 양태들에 따라 수행되는 SID 스캔의 다양한 단계들의 일 예를 도시한다.
도 28 은 본원에 개시된 특정 양태들에 따라 수행되는 SID 스캔의 다양한 단계들의 일 예를 도시한다.
도 29 는 본원에 개시된 특정 양태들에 따라 수행되는 SID 스캔의 다양한 단계들의 일 예를 도시한다.
도 30 은 본원에 개시된 특정 양태들에 따라 수행되는 SID 스캔의 다양한 단계들의 일 예를 도시한다.
도 31 은 본원에 개시된 특정 양태들에 따라 수행되는 SID 스캔의 다양한 단계들의 일 예를 도시한다.
도 32 는 본원에 개시된 특정 양태들에 따라 수행되는 SID 스캔의 다양한 단계들의 일 예를 도시한다.
도 33 은 본원에 개시된 특정 양태들에 따라 수행되는 SID 스캔의 다양한 단계들의 일 예를 도시한다.
도 34 는 본원에 개시된 특정 양태들에 따라 수행되는 SID 스캔의 다양한 단계들의 일 예를 도시한다.
도 35 는 본원에 개시된 특정 양태들에 따라 수행되는 SID 스캔의 다양한 단계들의 일 예를 도시한다.
도 36 은 본원에 개시된 특정 양태들에 따라 수행되는 SID 스캔의 다양한 단계들의 일 예를 도시한다.
도 37 은 본원에 개시된 특정 양태들에 따라 수행되는 SID 스캔의 다양한 단계들의 일 예를 도시한다.
도 38 은 본원에 개시된 특정 양태들에 따라 수행되는 SID 스캔의 다양한 단계들의 일 예를 도시한다.
도 39 는 본원에 개시된 특정 양태들에 따라 수행되는 SID 스캔의 다양한 단계들의 일 예를 도시한다.
도 40 은 본원에 개시된 특정 양태들에 따라 수행되는 SID 스캔의 다양한 단계들의 일 예를 도시한다.
도 41 은 본원에 개시된 특정 양태들에 따라 수행되는 SID 스캔의 다양한 단계들의 일 예를 도시한다.
도 42 는 본원에 개시된 특정 양태들에 따라 수행되는 SID 스캔의 다양한 단계들의 일 예를 도시한다.
도 43 은 마스터 디바이스에 의해 이슈될 수도 있는 "SID 스캔 신규" 커맨드의 일 예를 도시한다.
도 44 는 본원에 개시된 특정 양태들에 따라 적응될 수도 있는 프로세싱 회로를 채용하는 장치의 일 예를 도시하는 블록 다이어그램이다.
도 45 는 통신 링크를 통해 슬레이브 식별자 스캔을 수행하는 방법을 도시하는 플로우차트이다.
도 46 은 통신 링크를 통해 슬레이브 식별자 스캔을 수행하도록 구성된 프로세싱 회로를 채용하는 장치에 대한 하드웨어 구현의 일 예를 도시하는 개념 다이어그램이다.
다음의 설명에서, 실시형태들의 완전한 이해를 제공하기 위해 특정 세부사항들이 주어진다. 그러나, 실시형태들은 이러한 특정 세부사항이 없이 실시될 수도 있음이 당업자에 의해 이해될 것이다. 예를 들어, 회로들은, 그 실시형태들을 불필요한 세부사항으로 불명료하게 하는 것을 회피하기 위해 블록 다이어그램들로 도시될 수도 있다. 다른 예시들에 있어서, 잘 알려진 회로들, 구조들 및 기술들은 실시형태들을 불명료하게 하지 않도록 상세히 나타내지 않을 수도 있다.
예시적인 동작 환경
도 1 은 베이스밴드 프로세서 (104) 및 이미지 센서 (106) 를 가지고 이미지 데이터 버스 (116) 및 멀티-모드 제어 데이터 버스 (108) 를 구현하는 디바이스 (102) 를 도시하는 블록 다이어그램이다. 도 1 은 카메라 디바이스 내의 멀티-모드 제어 데이터 버스 (108) 를 도시하지만, 이러한 제어 데이터 버스 (108) 는 다양한 상이한 디바이스들 및/또는 시스템들에서 구현될 수도 있는 것이 명확해야만 한다. 이미지 데이터는 이미지 데이터 버스 (116) (예컨대, 고속 차동 DPHY 링크) 를 통해 이미지 센서 (106) 로부터 베이스밴드 프로세서 (104) 로 전송될 수도 있다.
일 예에서, 제어 데이터 버스 (108) 는 2 개의 와이어들, 즉 클록 라인 (SCL) 및 직렬 데이터 라인 (SDA) 을 포함하는 I2C 버스일 수도 있다. 클록 라인 (SCL) 은 I2C 버스 (제어 데이터 버스 (108)) 를 통해 모든 데이터 전송들을 동기화하는데 사용된 클록을 전송하는데 사용될 수도 있다. 데이터 라인 (SDA) 및 클록 라인 (SCL) 은 I2C 버스 (제어 데이터 버스 (108)) 를 통해 모든 디바이스들 (112, 114, 및 118) 에 커플링된다. 이러한 예에서, 제어 데이터는 제어 데이터 버스 (108) 를 통해 베이스밴드 프로세서 (104) 와 이미지 센서 (106) 뿐만 아니라 다른 주변 디바이스들 (118, 122, 및/또는 124) 간에 교환될 수도 있다. I2C 에 대한 표준 클록 (SCL) 속도는 100 KHz 까지이다. I2C 고속 모드에서 표준 클록 SCL 속도는 400KHz 까지이고, I2C 고속 모드 플러스 (Fm+) 에서 1 MHz 까지이다. I2C 버스를 통한 이들 동작 모드들은 카메라 애플리케이션들을 위해 사용될 경우, 카메라 제어 인터페이스 (CCI) 모드로 지칭될 수도 있다.
일 양태에 따르면, 개선된 동작 모드 (즉, 1 MHz 보다 큰 제어 데이터 버스 송신 주파수들을 가짐) 는 카메라 동작을 지원하기 위해 멀티-모드 제어 데이터 버스 (108) 를 통해 구현될 수도 있다. I2C 버스를 통한 이러한 개선된 동작 모드는 카메라 애플리케이션들을 위해 사용될 경우, 카메라 제어 인터페이스 확장 (CCIe) 모드로 지칭될 수도 있다. CCIe 모드에서, SCL 라인 및 SDA 라인 양자는 클록이 2 개의 라이들을 통해 심볼 대 심볼 트랜지션들에 임베딩되는 동안 데이터를 송신하는데 사용될 수도 있다. 이러한 예에서, 베이스밴드 프로세서 (104) 는 마스터 디바이스 (112) 를 포함하고, 이미지 센서 (106) 는 슬레이브 디바이스 (114) 를 포함하며, 마스터 디바이스 (112) 와 슬레이브 디바이스 (114) 양자는 제어 데이터 버스 (108) 에 커플링된 다른 레거시 I2C 디바이스들의 적절한 동작에 영향을 주지 않고, 제어 데이터 버스 (108) 를 통해 카메라 제어 인터페이스 확장 (CCIe) 모드에 따라 동작할 수도 있다. 일 양태에 따라, 제어 데이터 버스 (108) 를 통한 이러한 개선된 모드는 CCIe 디바이스들과 레거시 I2C 슬레이브 디바이스들 간에 임의의 브리지 디바이스 없이 구현될 수도 있다.
프로토콜이 제공되고, 이는 I2C 호환가능 디바이스들과 CCIe 호환가능 디바이스들이 공유 제어 데이터 버스 (108) 에 동시에 커플링되는 것을 허용한다. 제어 데이터 버스 (108) 는 별개의 통신 프로토콜들 (예컨대, I2C 모드와 CCIe 모드) 에 따라 동작하는 것 사이에서 동적으로 스위칭할 수도 있다. 이전에 언급된 것과 같이, 공유 제어 데이터 버스 (108) 로의 액세스 및/또는 통신들은 멀티-모드 마스터 디바이스 (112) 에 의해 관리된다. 마스터 디바이스는 제어 데이터 버스 (108) 가 통신 프로토콜을 제 1 프로토콜 모드 (예컨대, I2C 모드) 로부터 제 2 프로토콜 모드 (예컨대, CCIe 모드) 로 스위칭할 것임을 표시하기 위해 엔트리 호출을 송신한다. 유사하게, 마스터 디바이스는 제어 데이터 버스 (108) 가 통신 프로토콜을 제 2 프로토콜 모드 (예컨대, CCIe 모드) 로부터 제 1 프로토콜 모드 (예컨대, I2C 모드) 로 스위칭할 것임을 표시하기 위해 종료 호출을 송신한다. 공유 버스 (108) 에 커플링된 슬레이브 디바이스들은 이들 엔트리 및 종료 호출들에 대해 모니터링하여, 그들이 공유 버스 (108) 에서 동작할 수도 있을 때를 확인한다.
예시적인 CCIe 인코딩 기술
도 2 는 클록이 CCIe 모드에서 심볼 대 심볼 트랜지션들 내에 임베딩될 수도 있는 방식을 도시하며, 따라서 데이터 송신들을 위해 I2C 버스에서 2 개의 라인들 (즉, SDA 라인 및 SCL 라인) 의 사용을 허용한다. 일 실시예에서, 클록의 이러한 임베딩은 트랜지션 클록 트랜스코딩에 의해 달성될 수도 있다. 예를 들어, 물리 링크 (와이어들) 를 통해 송신될 데이터 (204) 가 트랜스코딩되어, 송신된 심볼들은 송신된 심볼들 (206) 의 매 심볼 사이클 또는 트랜지션마다 상태를 변경시키도록 보장될 수 있다. 일 예에서, 비트들의 시퀀스들은 3진수로 컨버팅되고, 3진수의 각각의 디지트는 송신을 위한 심볼로 컨버팅된다. 순차적인 심볼들은 3진수의 2 개의 순차적인 디지트들이 동일할 때에도 상이하도록 보장된다. 따라서, 원래의 클록 (202) 은 매 심볼 사이클 마다 심볼 상태들의 변화시 임베딩될 수 있다. 수신기는 각 심볼에서 (송신된 심볼들 (206) 에서) 의 상태 트랜지션으로부터 클록 정보 (208) 를 복원한 후, 원래의 데이터 (210) 를 획득하기 위해 송신된 심볼들 (206) 의 트랜스코딩을 역전시킨다. 일 예에서, 각각의 심볼은 디지트로 컨버팅되고, 복수의 디지트들은 3진수를 형성하며, 여기서 3진수는 그 후, 복수의 비트들로 컨버팅된다. 따라서, 원래의 클록 (202) 은 매 심볼 사이클 마다 심볼 상태들의 변화시 임베딩될 수 있다. 이는 I2C 버스 (도 1 에서 제어 데이터 버스 (108), SDA 라인 및 SCL 라인) 의 양자의 와이어들이 데이터 정보를 전송하는데 사용되게 한다. 추가로, 더 이상 셋업을 가지고 클록 및 데이터 신호들 간에 시간을 유지할 필요가 없기 때문에, 심볼 레이트는 2배가 될 수 있다.
도 3 은 클록 신호를 트랜스코딩된 심볼들 내에 임베딩하기 위해, 송신기에서 데이터 비트들을 트랜스코딩된 심볼들로 트랜스코딩하는 예시적인 방법을 도시하는 블록 다이어그램이다. 송신기 (302) 에서, 데이터 비트들 (304) 의 시퀀스는 3진 (기수 3) 수 (즉, "트랜지션 수") 로 컨버팅되고, 그 후, 3진수들은 클록 라인 SCL (312) 및 데이터 라인 SDA (314) 을 통해 송신되는 (순차적인) 심볼들로 컨버팅된다.
일 예에서, 2진 데이터의 원래의 20 개 비트들은 비트-트랜지션 수 컨버터 블록 (308) 으로 입력되어 12-디지트 3진수로 컨버팅된다. 12-디지트 3진수의 각 디지트는 "트랜지션 수" 를 나타낸다. 2 개의 연속하는 트랜지션 수들은 동일한 수들을 가질 수도 있다 (즉, 3진수의 연속하는 디지트들은 동일할 수도 있다). 각각의 트랜지션 수는 트랜지션-대-심볼 블록 (310) 에서 순차적인 심볼로 컨버팅되어, 어떤 2 개의 연속하는 순차적인 심볼들도 동일한 값들을 가지지 않도록 한다. 트랜지션이 매 순차적인 심볼마다 보장되기 때문에, 그러한 순차적인 심볼 트랜지션은 클록 심볼을 임베딩하도록 기능할 수도 있다. 그 후, 각각의 순차적인 심볼 (316) 은 2 와이어 물리 링크 (예컨대, SCL 라인 (312) 과 SDA 라인 (314) 을 포함하는 I2C 버스) 를 통해 전송된다.
도 4 는 트랜지션 수들 (402) 및 순차적인 심볼들 (404) 간의 예시적인 컨버전을 도시한다. 또한 트랜지션 수로 지칭되는 3진수, 즉 기수-3 수의 개별 디지트는 세 (3) 개의 가능한 디지트들 또는 상태들, 즉 0, 1, 또는 2 중 하나를 가질 수 있다. 동일한 디지트가 3진수의 2 개의 연속하는 디지트들에서 나타날 수도 있지만, 어떤 2 개의 연속하는 순차적인 심볼들도 동일한 값을 가지지 않는다. 트랜지션 수와 순차적인 심볼 간의 컨버전은, 연속하는 트랜지션 수들이 동일할 경우에도, 순차적인 심볼이 (순차적인 심볼로부터 순차적인 심볼로) 항상 변화할 것을 보장한다.
컨버전 함수가 도 5 에 예시적으로 설명된다. 송신기측 (TX: T 대 S) (502) 에서, 트랜지션 수 (T) 는 순차적인 심볼 (S) 로 컨버팅될 수도 있다. 예를 들어, 현재의 순차적인 심볼 (Cs) 이 이전 순차적인 심볼 (Ps) 및 현재 트랜지션 수 (T) 의 함수인 일시적인 트랜지션 수 (Ttmp) 에 기초하여 획득될 수도 있다. 일시적인 트랜지션 수 (Ttmp) 는 현재 트랜지션 수 (T) 를 0 과 비교함으로써 획득될 수도 있고, T = 0 일 경우, 일시적인 트랜지션 수 (Ttmp) 는 3 과 동일하게 되고, 그렇지 않으면 (T 가 0 과 동일하지 않을 경우), Ttmp 는 T 와 동일하게 된다 (즉, Ttmp = T = 0 ? 3: T). 현재의 순차적인 심볼은, 현재 순차적인 심볼 (Cs) 더하기 이전 순차적인 심볼 (Ps) 더하기 일시적인 트랜지션 수 (Ttmp) 의 합으로서 획득될 수도 있다 (즉, Cs = Ps + Ttmp).
수신기측 (RX: S 대 T) (504) 에서, 컨버전 동작이 역전되어, 현재 순차적인 심볼 (Cs) 과 이전 순차적인 심볼 (Ps) 로부터 트랜지션 수를 획득한다. 일시적인 트랜지션 수 (Ttmp) 는 현재 순차적인 심볼 (Cs) 더하기 4 빼기 이전 심볼 (Ps) 로서 획득될 수도 있다 (즉, Ttmp = Cs + 4 - Ps). 현재 트랜지션 수 (T) 는 일시적인 트랜지션 수 (Ttmp) 와 동일하지만, 일시적인 트랜지션 수 (Ttmp) 는 3 과 비교되어 Ttmp = 3 일 때, 일시적인 트랜지션 수 (Ttmp) 는 제로 (0) 와 동일하게 되고, 그렇지 않다면 (Ttmp 가 3 과 동일하지 않을 경우), T 는 Ttmp 와 동일하게 된다 (즉, T = Ttmp = 3 ? 0 : T).
표 (506) 는 트랜지션 수들과 순차적인 심볼들 간의 컨버전을 도시한다.
다시 도 4 를 참조하여, 트랜지션 수들과 순차적인 심볼들 간의 컨버전의 일 예가 본원에 도시된다. 예를 들어, 제 1 사이클 (406) 에서, 현재 트랜지션 수 (Ta) 는 2 이고, 따라서 Ttmp 또한 2 이며, 1 의 이전 순차적인 심볼 Ps 에서, 새로운 현재 순차적인 심볼 (Cs) 은 지금 3 이다.
제 2 사이클 (408) 에서, 트랜지션 수 (Tb) 는 1 이다. 트랜지션 수 (Tb) 가 0 고 동일하지 않기 때문에, 일시적인 트랜지션 수 (Ttmp) 는 1 의 트랜지션 수 (Tb) 값과 동일하다. 현재 순차적인 심볼 (Cs) 은 3 의 이전 순차적인 심볼 (Ps) 값을 1 의 일시적인 트랜지션 수 (Ttmp) 에 가산하여 획득된다. 가산 연산의 결과가 3 초과인 4 와 동일하기 때문에, 롤 오버된 (rolled over) 수 0 이 현재의 순차적인 심볼 (Cs) 이 된다.
제 3 사이클 (410) 에서, 현재 트랜지션 수 (T) 는 1 이다. 트랜지션 수 (T) 가 1 이기 때문에, 일시적인 트랜지션 수 (Ttmp) 또한 1 이다. 현재 순차적인 심볼 (Cs) 은 0 의 이전 순차적인 심볼 (Ps) 값을 1 의 일시적인 트랜지션 수 (Ttmp) 에 가산하여 획득된다. 가산 연산의 결과가 3 미만인 1 와 동일하기 때문에, 현재 심볼 (Cs) 은 1 과 동일하다.
제 4 사이클 (412) 에서, 현재 트랜지션 수 (T) 는 0 이다. 트랜지션 수 (T) 가 0 이기 때문에, 일시적인 트랜지션 수 (Ttmp) 는 3 이다.
현재 순차적인 심볼 (Cs) 은 1 의 이전 순차적인 심볼 (Ps) 값을 3 의 일시적인 트랜지션 수 (Ttmp) 에 가산하여 획득된다. 가산 연산의 결과가 3 초과인 4 이기 때문에, 롤 오버된 수 0 이 현재 순차적인 심볼 (Cs) 이 된다.
2 개의 연속하는 3진 디지트들 Tb 및 Tc 이 동일한 수들을 가지는 경우에도, 이러한 컨버전은 2 개의 연속하는 순차적인 심볼들이 상이한 상태 값들을 가지는 것을 보장한다. 이로 인해, 순차적인 심볼들 (404) 에서의 보장되는 트랜지션은 클록 신호를 임베딩하도록 기능할 수도 있고, 따라서 데이터 송신들을 위해 I2C 버스에서 클록 라인 SCL 을 자유롭게 한다.
도 3 을 다시 참조하여, 수신기 (320) 에서 프로세스는 트랜스코딩된 심볼들을 다시 비트들로 컨버팅하도록 역전되고, 그 프로세스에서, 클록 신호가 심볼 트랜지션으로부터 추출된다. 수신기 (320) 는 2 와이어 물리 링크 (예컨대, SCL 라인 (324) 과 SDA 라인 (326) 을 포함하는 I2C 버스) 를 통해 순차적인 심볼들 (322) 의 시퀀스를 수신한다. 수신된 순차적인 심볼들 (322) 은 클록 데이터 복원 (CDR) 블록 (328) 으로 입력되어, 클록 타이밍을 복원하고 트랜스코딩된 심볼들 (S) 을 샘플링한다. 그 후에, 심볼-대-트랜지션 수 컨버터 블록 (330) 은 트랜스코딩된 (순차) 심볼들을 트랜지션 수, 즉 1 개의 3진 디지트 수로 컨버팅한다. 그 후에, 트랜지션 수-대-비트들 컨버터 (332) 는 12 디지트 3진수로부터 20 비트의 원래 데이터를 복구하기 위해 12 개의 3진수들을 컨버팅한다.
2-와이어 버스 및 12 개의 트랜지션 수들에 대하여 도 3 및 도 4 에 도시된 예는 n-와이어 시스템 및 m 트랜지션 수들로 일반화될 수도 있다. 하나의 T 당 r 개의 가능한 심볼 트랜지션 상태들이 존재한다면, T0 내지 Tm-1, 즉 m 개의 트랜지션들은 rm 개의 상이한 상태들을 전송할 수 있고, 즉 r = 2n-1 이다. 결과적으로, 트랜지션들 T0 ... Tm-1 은 (2n-1)m 의 상이한 상태들을 가질 수 있는 데이터를 포함한다.
본원에 도시된 이러한 기술은 제어 버스 (108; 도 1) 의 링크 레이트를 I2C 표준 버스가 제공하는 링크 레이트 이상으로 증가시키는데 사용되며, 여기서 CCIe 모드로 지칭된다. 일 예에서, 제어 데이터 버스 (108) 에 커플링된 마스터 디바이스 및/또는 슬레이브 디바이스는, 표준 I2C 버스를 사용하여 가능한 것보다 더 높은 비트 레이트들을 동일한 제어 데이터 버스에서 달성하기 위해, 클록 신호를 (도 2, 도 3, 도 4, 및 도 5 에 도시된 것과 같은) 심볼 송신들 내에 임베딩하는 송신기들 및/또는 수신기들을 구현할 수도 있다.
도 6 은 최상위 비트로부터 최하위 비트까지 2진 비트들을 3진수들로 컨버팅하는 방법을 도시한다. 3진수의 각각의 디지트는 수신 디바이스로 송신되는 심볼들로 트랜스코딩 (컨버팅) 될 수도 있다. 3진수를 나타내는 T0, T1 ... T11 를 갖는 12 디지트 3진수 (602) 에 대하여, T0 는 30 디지트를 나타내는 (그리고 최하위 디지트인) 반면, T11 은 311 디지트를 나타낸다 (그리고 최상위 디지트이다). 수신된 비트들 (예컨대, 20 비트 시퀀스) 에서 시작하여, 3진수 (602) 의 최상위 디지트 T11 가 최초로 획득된다. 그 후에, 다음의 최상위 디지트 T10 가 다음으로 획득된다. 이러한 프로세스는, 최하위 디지트 T0 가 획득될 때까지 계속된다. 3진수 (602) 의 디지트 각각은 또한, "트랜지션 수" 로 지칭될 수도 있다.
도 7 은 최상위 비트로부터 최하위 비트까지 2진 비트들을 3진수들로 컨버팅하기 위한 송신기측 로직 회로를 도시한다. 도 6 및 도 7 은 T11, T10, T9, ..., T0 의 순서로 전송되는 12 디지트 3진수 (602) 를 도시한다. 최상위 비트를 우선 획득하고 전송함으로써, 수반되는 로직 및 회로는 복잡도가 간략화된다. 도 6 및 도 7 의 접근방식에서, 최상위 순차적인 심볼이 우선 수신 디바이스로 송신되고, 따라서 MSS 우선 (최상위 심볼 우선) 로 불린다. 본원에서 사용되는 것과 같이, "최하위 심볼" 은 3진수 (602) 의 최하위 디지트에 대응하는 트랜스코딩된 심볼을 지칭한다. 예를 들어, 도 4 및 도 5 의 설명을 참조하여, T0 는 최하위 심볼인 순차적인 심볼로 트랜스코딩되며, 이는 최하위 심볼이 최하위 3진 디지트로부터 발생되기 때문이다. 유사하게, 본원에서 사용되는 것과 같이, "최상위 심볼" 은 3진수 (602) 의 최상위 디지트에 대응하는 트랜스코딩된 심볼을 지칭한다. 예를 들어, 도 4 및 도 5 의 설명을 참조하여, T11 는 최상위 심볼인 순차적인 심볼로 트랜스코딩되며, 이는 최상위 심볼이 최상위 3진 디지트로부터 발생되기 때문이다. 그리고, 심볼-대-트랜지션 수 컨버터 블록 (330; 도 3) 은 그 후, 트랜스코딩된 (순차) 심볼을 수신하여 트랜지션 수, 즉 최초에 최상위 디지트 T11 이고 최종에 최하위 디지트 T0 인 3진수의 디지트로 컨버팅한다.
도 3 을 다시 참조하면, 20 개 비트들의 원래의 데이터는 역 순서로 3 진수로 컨버팅되고 (즉, 최상위 비트가 우선 컨버터에 공급되고), 그 후에 3 진수의 각각의 디지트 (예컨대, 각각의 트랜지션 수) 가 역 순서로 순차적인 심볼로 컨버팅되며 (즉, 트랜스코딩되며), 이들 트랜스코딩된 심볼들은 버스에 역 순서로 (즉, 최상위 비트가 우선) 송신된다.
도 8 은 최상위 비트로부터 최하위 비트까지 3진수들을 2진 비트들로 컨버팅하는 방법을 도시한다. 즉, 이러한 수신기측 컨버전은 도 6 및 도 7 에 도시된 송신기측 컨버전에서 수행되는 동작을 역전시킨다. 수신 디바이스 (예컨대, 슬레이브 디바이스) 는 역 순서의 송신을 수신하고, 클록 복원 및 심볼 샘플링을 수행하여 트랜스코딩된 심볼들을 다시 3진수로 컨버팅하며, 그 후에 3진수는 역 순서로 도 9 의 로직 회로에 공급되어 3진수를 다시 20 비트 2진 원래의 데이터로 컨버팅한다. 도 7 은 로직 디바이스로의 단일 출력에 커플링된 12 개 입력들을 갖는 멀티플렉서를 도시한다.
도 9 는 12 디지트 3진수를 20 개의 비트들로 컨버팅하기 위한 수신기측 로직 회로를 도시한다.
도 10 은 비트 19 (즉, 비트 0 인 제 1 비트에서 비트 카운트가 시작할 때 제 20 비트) 가 CCIe 프로토콜에서 대체로 사용되지 않고, 공유 버스 상의 디바이스들 간의 커맨드들을 위해 사용될 수도 있는 것을 개념적으로 도시한다. 즉, 도 3 내지 도 9 에 도시된 인코딩 방식의 결과로서, 추가 비트 (즉, 비트 19) 가 지금, 송신된 심볼들에서 사용가능하다. 더 구체적으로, 도 10 은 비트 19 (즉, 제 20 비트) 를 도시한다. 다시 말해서, 컴퓨터 과학들에서 통상적인 것과 같이, 비트 카운팅 방향은 0 에서 시작하고, 비트 19 는 제 20 비트이다. 여기서, 비트들 0 - 18 은 0000_0000_00003 내지 2221_2201_20013 의 3진수 범위 내에서 표현된다. 2221_2201_20023 내지 2222_2222_22223 의 범위에 있는 3진수들은 사용되지 않는다. 결과적으로, 3진수 범위 2221_2201_20023 내지 2222_2222_22223 는 비트 19 (즉, 제 20 비트) 를 나타내는데 사용될 수도 있다. 다시 말해서, 3진수 2221,2201,20023 는 2진수 10,000,000,000,000,000,000 (16 진수 0x80000) 이고, 3진수 2222_2222_22223 (0x81BF0) 는 가능한 최대 12 디지트 3진수이다.
CCIe 모드에 대한 예시적인 프로토콜
도 11 은 공유 버스가 I2C 모드로부터 CCIe 모드로 동작하도록 스위칭하고 있는 것을 슬레이브 디바이스들에 나타내기 위해, 마스터 디바이스에 의해 공유 버스를 통해 전송될 수도 있는 CCIe 모드 엔트리 표시자에 대한 예시적인 일반적인 호출을 도시한다. 일반적인 호출 (1102) 은 I2C 모드로부터 CCIe 모드로의 트랜지션을 모든 I2C-호환가능 디바이스들에 나타내기 위해, 공유 버스를 통해 I2C 마스터 디바이스 (예컨대, SDA 라인과 SCL 라인을 통해 I2C 모드에 있는 동안 도 1 의 마스터 디바이스 (112)) 에 의해 이슈될 수도 있다.
I2C 모드에서, CCIe 마스터 디바이스는 "CCIe 모드" 바이트 또는 표시자 (1104) 를 갖는 이러한 I2C 일반적인 호출 (1102) 을 이슈한다. CCIe-호환가능 슬레이브 디바이스들은 일반적인 호출 (1102) 의 수신에 확인응답한다. CCIe-호환 슬레이브 디바이스들은 필요한 경우, 일반적인 호출 동안 (제어 데이터 버스 (108) 의) SCL 라인을 로우로 유지함으로써, 대기 사이클들을 입력할 수 있다.
CCIe 모드에서 한 번, 모든 CCIe-호환가능 디바이스들은 CCIe 마스터 디바이스로부터의 요청들에 응답할 수 있다. CCIe 모드를 지원하지 않는 공유 제어 데이터 버스 상의 레거시 I2C-호환가능 슬레이브 디바이스들의 동작 상태들 또는 임의의 기능들은 임의의 CCIe 트랜잭션들에 의해 영향받지 않는다.
도 12 는 CCIe 모드로부터 I2C 모드로의 트랜지션을 모든 CCIe 가능 디바이스들에 나타내기 위해, CCIe 마스터 디바이스 (예컨대, I2C 모드에 있는 동안 도 1 의 마스터 (112)) 에 의해 이슈될 수도 있는 예시적인 CCIe 호출 (1202) 을 도시한다. CCIe 마스터 디바이스는 CCIe SID 대신 이러한 종료 호출 (1202) 을 이슈할 수도 있다.
CCIe 모드에서, CCIe 모드에서 최종 데이터 다음의 S 이후에, CCIe 마스터는, CCIe 모드의 종료를 (예컨대, CCIe-호환가능 디바이스들에) 표시하고 다시 I2C 모드로 트랜지션하기 위해, 특수 CCIe SID 코드, 즉 "종료" 코드/표시자 (1204) 를 전송한다. 부가적으로, "종료" 코드/표시자 (1204) 이후에, CCIe 마스터 디바이스는 I2C 프로토콜에 따라 S (시작-비트) 다음의 "일반적인 호출" 을, I2C 프로토콜 내의 제 2 바이트에서 "종료" 코드 (1208) 와 함께 전송한다. 모든 CCIe 가능 슬레이브들은 일반적인 호출 (1204) 에 확인응답해야만 한다.
도 13 은 예시적인 CCIe 슬레이브 식별자 (SID) 워드 포맷을 도시한다. 이 도면은 CCIe SID 워드 포맷 (1302) 의 부분으로서 16-비트 슬레이브 식별자 (SID) (1304) 의 사용을 도시한다. 그러한 SID 워드 포맷은 그 워드가 제어 데이터 버스 상에 위치될 경우, 특정 슬레이브 디바이스를 식별하는데 사용될 것이다.
도 14 는 예시적인 CCIe 어드레스 워드 포맷을 도시한다. 이 도면은, 각각의 어드레스 워드 (1406) 가 16-비트 어드레스 (1404) 를 포함하는 것을 도시한다. 어드레스 워드 (1406) 는 또한, 2-비트 제어 코드 (1408) 및 1-비트 에러 검출 상수 (1410) 를 포함한다. 표 (1412) 는 제어 코드에 대한 다양한 가능한 값들을 도시한다.
다수의 어드레스 워드들이 순차적으로 전송될 수도 있다. 현재 제어 워드가 '00' 이면, 이는 어드레스 워드가 뒤따를 것임을 의미한다. 제어 코드가 '01' 이면, 다음 데이터 워드는 기록 데이터 워드이다. 제어 코드가 '01' 이면, 다음 데이터 워드는 1 워드 판독 데이터 워드이다. 제어 코드 '11' 는 금지된다.
도 15 는 예시적인 기록 데이터 워드 포맷 (1502) 을 도시한다. 이 도면은, 각각의 데이터 워드 (1500) 가 16-비트 기록 데이터 부분 (1502) 을 포함하는 것을 도시한다. 기록 데이터 워드 (1500) 는 또한, 2-비트 제어 코드 (1504) 및 1-비트 에러 검출 상수 (1510) 를 포함한다. 표 (1514) 는 제어 코드에 대한 다양한 가능한 값들을 도시한다.
다수의 기록 데이터 워드들이 순차적으로 전송될 수 있다. 현재 기록 워드의 제어 코드가 '00' (심볼 C0) 이면, 그 데이터는 이전 어드레스에 기록되기 위한 것이다. 현재 기록 워드의 제어 코드가 '01' (심볼 C1) 이면, 그 데이터는 이전 어드레스+1 에 기록되기 위한 것이다. 제어 코드가 '10' (심볼 E) 이면, 다음 워드는 SID 또는 종료 코드일 것이다.
도 16 은 예시적인 판독 사양 워드 포맷 (1600) 을 도시한다. 판독 사양 데이터 워드 (1600) 는 16-비트 판독 데이터 값 부분 (1604), 2-비트 제어 코드 (1608), 및 3-비트 에러 검출 상수 (1610) 를 포함할 수도 있다.
최종 데이터 워드 (1607) 이후에, "판독 사양" (RS) 워드 (1612) 가 뒤따른다. 판독 사양 (RS) 워드 (1612) 는 뒤따르는 판독 데이터 워드들의 수를 명시한다. 표 (1616) 에 도시된 것과 같이, 제어 코드 '00' 는 동일한 어드레스로부터 판독 워드를 표시하는데 사용된다. 제어 코드 '01' 는 증분하는 어드레스로부터 판독 워드들을 표시하는데 사용된다. (데이터가 판독되고 있는 위치로부터의) 슬레이브 디바이스는 "판독 사양" (RS) 워드 (1604) 에 의해 명시된 것보다 많은 데이터 워드들 (CHK 워드들을 포함하지 않음) 을 전송하지 않을 것이다. 슬레이브 디바이스는 적어도 하나의 판독 워드 (CHK 워드를 포함하지 않음) 를 전송할 것이다. 슬레이브 디바이스는 "판독 사양" (RS) 워드 (1604) 에 의해 명시된 워드들의 수를 전송하기 전에 판독 전송을 종료할 수도 있다.
도 17 은 예시적인 판독 데이터 워드 포맷 (1702) 을 도시한다. 판독 데이터 워드 (1702) 는 16-비트 판독 데이터 값 부분 (1704), 2-비트 제어 코드 (1706), 및 1-비트 에러 검출 상수 (1708) 를 포함할 수도 있다. SID (1707) 에 의해 어드레싱되는 슬레이브 디바이스는 요청중인 마스터 디바이스로 리턴하기 위한 워드들의 수를 결정한다. 표 (1716) 에 도시된 것과 같이, 제어 코드는 판독 워드가 동일한 어드레스로부터 계속되는 경우, "00" (심볼 R0) 이다. 제어 코드는 판독 워드가 증분하는 어드레스로부터 계속되는 경우, "01" (심볼 R1) 이다. 제어 코드는 그 워드가 최종 판독 워드이고 그 워드 후에 어떤 CHK 도 존재하지 않는 경우, "10" (심볼 E) 이다. 제어 코드 "00" 는 금지된다.
공유 버스를 통한 예시적인 I2C 송신들 대 CCIe 송신들
도 18 은 I2C 일 바이트 기록 데이터 동작의 예시적인 타이밍 다이어그램을 도시한다. 이러한 예에서, 공유 제어 데이터 버스 (108; 도 1) 는 직렬 데이터 라인 SDA (1802) 및 직렬 클록 라인 SCL (1804) 을 포함한다. 도 18 에 도시된 송신 방식은 "I2C 모드" 로 지칭될 수도 있다. SCL 라인 (1804) 은 클록을 마스터 디바이스로부터 모든 슬레이브 디바이스들로 전송하는데 사용되는 반면, SDA 라인 (1802) 은 데이터 비트들을 송신한다. I2C 마스터 디바이스는 마스터 디바이스가 I2C 버스 상의 어떤 슬레이브 디바이스에 액세스하기를 원하는지 표시하기 위해, SDA 라인 (1802) 에서 7-비트 슬레이브 ID (1808), 그 후에 기록 동작을 표시하기 위해 일 비트를 전송한다. 그 ID 가 7-비트 슬레이브 ID (1808) 와 매칭하는 슬레이브 디바이스만이 의도된 액션들을 발생할 수 있다. I2C 슬레이브 디바이스가 그 소유의 ID 를 검출하기 위해, 마스터 디바이스는 SDA 라인에서 적어도 8-비트들 (또는 SCL 라인 (2204) 에서 8 클록 펄스들) 을 전송해야만 한다.
I2C 표준은 모든 I2C 호환가능 슬레이브 디바이스들이 (예컨대, SCL 라인이 하이인 동안 SDA 라인에서 하이-투-로우 트랜지션에 의해 표시되는) 시작 조건 (1806) 의 수신시 그들의 버스 로직을 리셋한다.
CCIe 프로토콜은 데이터 송신들 내에 클록 신호를 임베딩하는 동안 데이터 송신들을 위해 SDA 라인 (1802) 과 SCL 라인 (1804) 양자를 사용한다. 예를 들어, 데이터 비트들은, 그 후 라인들을 통해 송신되는 복수의 심볼들로 트랜스코딩될 수도 있다. 클록 신호 (도 18 에서 I2C 버스에 대한 SCL 라인) 를 심볼 트랜지션들 내에 임베딩함으로써, SDA 라인 (1802) 과 SCL 라인 (1804) 양자는 데이터 송신들을 위해 사용될 수도 있다.
도 19 는 SDA 라인 (1902) 및 SCL 라인 (1904) 을 통한 송신을 위해 데이터 비트들이 12 개 심볼들로 트랜스코딩되는 예시적인 CCIe 송신을 도시한다. 도 19 에 도시된 송신 방식은 "CCIe 모드" 로 지칭될 수도 있다. CCIe 모드는 소스 동기식이고, 푸시-풀 드라이버들에 의해 구동된다. 공유 제어 데이터 버스를 통해 데이터를 전송하는 누구든지 (예컨대, 심볼-대-심볼 트랜지션들 내에서) 데이터에 임베딩된 클록 정보를 전송한다. 결과적으로, 제어 데이터 버스 상의 오직 하나의 디바이스만이 임의의 시간에 공유 제어 데이터 버스를 구동하도록 허용된다.
동일한 버스를 통해 레거시 I2C 디바이스들과 CCIe 디바이스들 양자를 지원하기 위해, CCIe 모드 동작들은 동일한 시작 조건 (1906, 1908, 1910) 을 사용하고, 이 조건은 레거시 I2C 슬레이브 디바이스들이 임의의 CCIe 동작들에 반응하는 것을 방지한다 (예컨대, CCIe 모드 동안의 시작 조건은 레거시 I2C 슬레이브 디바이스들이 리셋하게 한다). 이러한 예에서, (SCL 라인 (1904) 이 하이인 동안 SDA 라인 (1902) 에서 하이 투 로우 트랜지션에 의해 표시되는) 시작 조건 (1906, 1908, 1910) 은 전체 슬레이브 ID (전체 7 개 비트들) 이 송신되기 전에 검출되며, 따라서 이는 불완전한 슬레이브 디바이스 ID (7 개 미만의 비트들) 이다. 마스터 디바이스가 6 개의 SCL 펄스들을 전송한 후 시작 조건 (1906, 1908, 1910) 을 발생한다면, 모든 레거시 I2C 슬레이브 디바이스들은 데이터를 I2C 슬레이브 ID 로서 인식하기 전에 그들의 버스 로직을 리셋한다. (예컨대, 매 2 개의 심볼들에 대응하는) 6-비트 시퀀스들이 2 개의 시작 조건들 (1906, 1908, 1910) 간에 전송되기 때문에, 이들 6-비트 시퀀스들은 임의의 I2C 슬레이브 디바이스에 의해 유효 슬레이브 ID 로서 디코딩되지 않는다. 결과적으로, 레거시 I2C 슬레이브 디바이스들은 불완전한 슬레이브 ID들에 작용하지 않을 것이다.
이러한 시스템에서, 마스터 디바이스는 버스로의 액세스를 제어한다. 그래서, 제어 데이터 버스를 통해 송신하기를 원하는 임의의 디바이스는 통상적으로, 예컨대 인터럽트 요청을 이슈함으로써 마스터 디바이스로부터 그러한 액세스를 요청해야만 한다. 인터럽트들을 이슈하기 위한 종래 기술의 메커니즘들은 전용 인터럽트 라인들 또는 전용 인터럽트 버스에 의존한다. 그러나, 그러한 전용 인터럽트 라인들 또는 버스는, 디바이스들이 그러한 인터럽트 라인 또는 버스를 수용하기 위해 적어도 하나의 추가 핀을 포함해야만 하는 것을 의미한다. 그러한 전용 인터럽트 핀 및 라인들/버스에 대한 요구를 제거하기 위해, CCIe 내의 대역내 인터럽트들을 위한 메커니즘이 요구된다.
대역내 인터럽트들의 사용은 또한, 버스 경합 또는 충돌들을 회피해야만 한다. 예를 들어, 충돌들을 회피하기 위해, 슬레이브 디바이스는 마스터 디바이스가 제어 데이터 버스를 구동중인 동안 IRQ 를 어써트하기 위해 제어 데이터 버스 (예컨대, SDA 라인 (1802) 또는 SCL 라인 (1904)) 를 구동하도록 허용되지 않아야만 한다.
예시적인 비트 19 영역 및 체크합
도 20 은 도 2 내지 도 10 에 도시된 인코딩 방식으로부터 발생하는 제 20 비트 (비트 19) 의 예시적인 맵핑을 도시한다. 인식될 수 있는 것과 같이, 사용가능한 3진수들은 마스터 디바이스들과 슬레이브 디바이스들 간에 특징들 및 성능들을 확장시키는 기능을 할 수도 있다. 예를 들어, 비트 19 내에서 사용가능한 이러한 3진수 공간 (즉, 비트 19 가 '1' 인 데이터 영역) 은: (a) 슬레이브-대-슬레이브 송신들, (b) 송신들에 대한 체크합들, (c) 슬레이브 디바이스들로의 마스터 동작 핸드오버, (d) 하트비트 클록, 등을 유용하게 하거나 표시하는 기능을 할 수도 있다.
도 21 은 도 20 의 제 20 비트 (비트 19) 의 예시적인 맵핑 내의 서브-영역의 세부사항들을 도시한다.
SID 스캔 기능
일 양태에 따르면, 마스터 디바이스가 제어 데이터 버스에 커플링된 모든 디바이스들에 대하여 효율적으로 스캔하는 것이 바람직할 수도 있다. 예를 들어, 마스터 디바이스는 마스터 디바이스가 부트 업할 경우, 제어 버스에 커플링된 모든 슬레이브 디바이스들에 대하여 스캔할 수도 있다.
도 22 는 SID "스캔 전체" 커맨드 (2202) 및 그 대응하는 페이로드 (2204) 를 포함하는 CCIe 송신의 일 예 (2200) 를 도시한다. ("0x4" 코드에 의해 식별된) SID "스캔 전체" 커맨드 (2202) 는 마스터 디바이스에 의해 이슈될 수도 있다. 페이로드 (2204) 는 복수의 단위 스캔 ID들 (2210) 을 포함할 수도 있다. 각각의 단위 스캔 ID (2210) 는 SID 마스크 쌍 (2208) 및 응답 주기 (2206) 를 포함한다. SID 마스크 쌍 (2208) 은 질의하기 위한 SID 내의 단일 비트 위치를 식별하는 마스크를 정의할 수도 있다.
표 (2220) 에 도시된 것과 같이, (2 개의 6-비트 D0 및 D1 에 걸쳐 확산된) 32-비트 SID 마스크 쌍 (2208) 은 16-비트 SID 의 특정 비트 위치가 문의되고 있는지 여부, 및 만약 그렇다면, 어떤 값이 (즉, 0 또는 1) 이 문의되고 있는지를 식별하는 기능을 한다. 예를 들면, SID 마스크 쌍 (2208) 의 비트[1] 는 SID 의 비트[0] 가 체크될 것인지 또는 마스킹될 것인지 (즉, 체크되지 않을 것인지) 여부를 정의할 수도 있다. 비트[1] 가 "체크" 를 표시한다면, SID 마스크 쌍 (2208) 의 비트[0] 는 질의가 "0" 을 위한 것인지 또는 "1" 을 위한 것인지 여부를 정의한다.
응답 (2206) 에 의해 정의된 주기는 슬레이브 디바이스들이 공유 버스를 통해 대역내에서 SID 질의에 응답하게 한다. 각각의 단위 SID 질의 (2210) 에 대하여, 그 마스킹되지 않은 SID 비트가 질의 비트와 매칭하는 각각의 슬레이브 디바이스는 (즉, 슬레이브 디바이스의 SID 는 질의 비트와 매칭하는 질의된 비트 위치에서 비트를 갖는다) 공유 버스의 적어도 하나의 라인에 걸쳐 대역 내에서 질의 응답을 전송한다. 이는 마스터 디바이스가 버스 상의 임의의 슬레이브 디바이스가 부분적으로 매칭하는 SID (즉, 질의 비트와 매칭하는 질의된 비트 위치에서 비트를 갖는 SID) 를 갖는지 여부를 확인하는 것을 허용한다.
다수의 단위 SID 질의들 (2210) 은 공유 버스에 커플링된 모든 디바이스들에 대하여 SID 를 완전히 식별하기 위해 마스터 디바이스에 의해 전송된다.
"스캔 전체" 커맨드 (2202), 또는 그 변형은 마스터의 부트 업과 직접적으로 관련되지 않는 경우에 이슈될 수도 있다. 일 예에서, 마스터 디바이스는 모든 슬레이브 디바이스들이 동기화되는지 여부를 체크하기 위해 제어 버스에 커플링된 모든 슬레이브 디바이스들에 대하여 스캔할 수도 있다. 이러한 예에서, 마스터 디바이스는 반드시 완전한 "블라인드 스캔" 을 실행할 필요가 없으며 (예컨대, 도 26 내지 도 42 에 도시), 마스터는 비교로부터 임의의 SID 비트들을 제외시키지 않는 마스크들을 갖는 및/또는 마스크들을 갖지 않는 질의들을 이슈할 수도 있고, 이는 마스터 디바이스가 어떤 슬레이브 디바이스들이 버스에 커플링되는지를 이미 알고 있을 수도 있기 때문이다. 다른 예에서, 마스터 디바이스는 하나 이상의 특정 디바이스들이 동기화되는지 여부를 체크하기 위해 제어 버스에 커플링된 모든 슬레이브 디바이스들에 대하여 스캔할 수도 있다. 이러한 예에서, 마스터 디바이스는 각각의 슬레이브 디바이스가 스캔되도록 하기 위해 오직 하나의 단위 SID 질의를 전송할 수도 있다.
도 23 은 SID들에 대하여 스캔하는데 사용될 수도 있는 일 알고리즘 (2300) 의 일 예를 도시한다. 알고리즘 (2300) 은 SID 비트들을 반복적으로 마스킹하고 마스킹되지 않은 비트와 매칭하는 비트를 갖는 각각의 슬레이브 디바이스가 응답을 전송할 것을 요청함으로써, 동작할 수도 있다. 일 예에서, SID 비트들은 최하위 비트로부터 최상위 비트로 반복적으로 마스킹될 수도 있지만, 다른 마스킹 시퀀스들이 채택될 수도 있다.
도 24 는 SDA 라인 및 SCL 라인을 포함하는 공유 버스를 통한 SID 스캔 응답 워드, "RESP" (2206) 에 대한 타이밍 다이어그램을 도시한다. 이러한 예에서, SID 스캔 응답 (2430) 은 12-심볼 시퀀스 3131_3130_2323 와 동일한 3진수 2222_2221_21013 또는 6진수 0x81B8F 에 의해 식별된다. 이들 심볼들은 SDA 라인 (2426) 및 SCL 라인 (2427) 을 통해 송신된다. 슬레이브들이 응답 주기 (2406) 동안 SID 스캔 질의에 응답하기 위해 SDA 라인 (2426) 을 사용하게 하기 위해, 마스터 디바이스는 SDA 라인을 릴리즈한다. 각각의 수신기 디바이스는 그 후, 응답 주기 (2406) 동안 그 클록 데이터 복원 회로 (CDR) 로의 SDA 라인 입력을 마스킹한다. 마스터는 각각의 수신기 디바이스가 SDA 라인이 사용 중인 동안 SCL 라인 상의 그러한 토글링으로부터 클록을 복원할 수 있도록, SCL 라인을 토글링한다 (그 상태들을 변화시킨다).
CCIe 프로토콜에 따라, 수신중인 슬레이브 디바이스는, 예컨대 시작 S 표시자 (2412) 이후에 n 번째 RXCLK (2414) 를 검출할 수도 있다. n 번째 RXCLK (2414) 는 SDA 라인 (2426) 을 내부적으로 (예컨대, 수신중인 슬레이브 디바이스 내에서) 마스킹하기 위해, 내부 SDA 마스크 (2424) 를 트리거할 수도 있다.
n+1 RXCLK (2416) 에서, 슬레이브 디바이스는 SDA 라인 (2426) 을 로우로 풀링함으로써, 응답을 어써트/이슈할 수도 있다. SDA 라인 (2426) 은 미약하게 마스터 디바이스에 의해 하이로 풀링되며, 따라서 (슬레이브 디바이스에 의해) 로우로 풀링될 경우, 이는 SID 스캔 질의에 긍정 응답을 표시하는 기능을 한다. SDA 라인 (2426) 을 하이로 약하게 풀링함으로써, 이는 슬레이브 디바이스가 SID 스캔 질의에 대한 응답을 어써트하기 위해 SDA 라인 (2426) 을 로우로 풀링하게 한다.
n+1 RXCLK (2416) 사이에서 그러나 n+2 RXCLK (2418) 이전에, 다음 클록 사이클까지 대기하는 것보다, 마스터 디바이스는 SDA 라인 (2426) 이 로우가 되는지 및/또는 로우가 될 때를 확인하기 위해 SDA 라인 (2426) 을 모니터링할 수도 있고, 이는 응답이 어써트되는/이슈되는 것을 의미한다. 마스터 디바이스에 의한 SDA 라인 (2426) 의 그러한 모니터링은, 슬레이브 디바이스들로부터 임의의 어써트된/이슈된 응답을 비동기로 검출하기 위해 오직 응답 주기 (2406) 동안 수행될 수도 있는 것에 유의한다.
n+2 RXCLK (2418) 에서, 슬레이브 디바이스는 SDA 라인 (2426) 을 릴리즈할 수도 있다.
n+2 RXCLK (2418) 과 n+3 RXCLK (2420) 사이에서, 마스터 디바이스는 그 SDA 라인 드라이버를 다시 인에이블할 수도 있고, SDA 라인 (2426) 을 하이로 구동하는 것을 시작한다. 결과적으로, 수신기 디바이스 (예컨대, 어써트하는 슬레이브 디바이스) 는 n+3 RXCLK (2420) 에서 SDA 마스크 (2424) 를 안전하게 릴리즈할 수 있다.
n+3 RXCLK (2420) 에서, 슬레이브 디바이스는 SDA 마스크 (2424) 를 릴리즈할 수도 있다. 이러한 방식으로, SID 스캔 응답은 SDA 라인 (2426) 에 관해 정의된 응답 주기 (2406) 동안 슬레이브 디바이스에 의해 송신될 수도 있다.
도 25 는 직렬 버스에 커플링된 복수의 디바이스들의 SID들을 발견하도록 반복적으로 수행될 수도 있는 스캔 시퀀스를 도시하는 플로우차트 (2500) 이다. 스캔은 SID 비트들 (2530) 및 마스크 (2532) 를 포함하는 직렬 버스에서 질의를 송신하는 것을 포함한다. 직렬 버스에 커플링된 슬레이브 디바이스는 마스크 (2532) 를 자기 소유의 고유 SID 에 적용하여 예컨대, 마스킹된 비트들이 2진 0 이 되도록 한다. 그 후에, 슬레이브 디바이스는 마스킹된 SID 를 질의에서 송신된 SID 비트들 (2530) 과 비교할 수도 있다. 비교가 매칭을 산출한다면, 슬레이브 디바이스는 응답 주기 (2406) 동안 마스터 디바이스와의 매칭의 발생을 시그널링하기 위해 SDA 라인 (2426) 을 로우로 구동한다. 그 후, 마스터 디바이스는 슬레이브 디바이스에서의 비교로부터 제거되는 비트들의 수를 감소시키기 위해 마스크를 수정한 후에 새로운 질의를 송신할 수도 있다. 마스터 디바이스는 비트 위치 단위로 슬레이브 디바이스의 SID 를 발견할 수 있다. 플로우차트 (2400) 에 도시된 예에서, 마스터는 0 의 값을 갖는 SID 비트 위치들을 검색하고, 어떤 응답도 발생하지 않는다면, 마스터는 SID 비트 위치에서 2진 1 값을 갖는 슬레이브 디바이스에 대하여 스캔한다.
마스크가 적어도 하나의 비트 위치를 마스킹하도록 동작할 경우, 다수의 디바이스들이 질의에 응답할 수도 있는 것이 인식될 것이다. 마스크가 모든 비트들이 SID 에서 테스트되게 할 경우, SID 비트들은 고유한 SID 에 대응하고, 고유한 SID 와 연관된 슬레이브 디바이스만이 질의에 응답하는 것으로 예상될 수 있다.
SDA 라인 (2426) 이 임의의 질의에 응답하여 로우로 구동될 경우, 마스터 디바이스는 적어도 하나의 슬레이브 디바이스가 그 SID 스캔 질의에 응답하고 있는 것에 유의할 수도 있다. 그 후, 마스터 디바이스는 제 1 슬레이브 디바이스의 고유한 SID 가 발견될 때가지 나머지 SID 비트들을 테스트할 수도 있다. 그 후, 마스터 디바이스는 제 1 슬레이브 디바이스와 동일한 질의들에 응답할 수도 있는 다른 슬레이브 디바이스들을 발견하기 위해, "역추적"할 수도 있다. 예를 들어, 제 2 슬레이브 디바이스는 제 1 슬레이브 디바이스의 SID 에서 동일한 수의 비트들과 동일한 특정 수의 최하위 비트들을 갖는 SID 를 가질 수도 잇다. 마스터 디바이스는 SID 비트들에서 마스킹되지 않은 (유효 MSB) 최상위 비트 (MSB) 가 0 으로 세팅된 경우, 각각의 이전 질의로 리턴할 수도 있고, 마스터 디바이스는 유효 MSB 가 1 의 값으로 세팅되는 질의를 송신할 수도 있다. 이러한 접근 방식은 발견된 슬레이브 디바이스와 협력하여 하나 이상의 질의들에 응답하는 하나 이상의 슬레이브 디바이스들을 발견할 수 있다. 다시 말해서, 역추적은 선행하는 스캔 동안 커버되지 않은 경로들을 재방문하고 탐색한다.
마스터 디바이스가 질의에 대하여 어떤 응답도 수신하지 않을 경우, 그 질의에 SID 비트 구성을 포함하는 추가의 질의들을 전송하는 것을 억제할 수도 있다.
플로우차트 (2500) 는 스캔 시퀀스에서의 소정의 포인트 다음의 스캔 프로세스를 예시한다. 초기에, SID 비트들 모두는 0 으로 세팅될 수도 있고, 마스크는 슬레이브 디바이스들에 의한 그들의 고유한 SID들의 거의 최하위 비트 (LSB) 의 블록 비교로 세팅될 수도 있다.
프로세스는 블록 (2502) 에서 시작하고, 여기서 마스터 디바이스는 스캔을 위한 시작 포인트를 결정한다. 시작 포인트는 SID 가 발견된 후에 스캔의 재개 또는 초기 시작 포인트일 수도 있다. 시작 포인트는 현재 마스크 (2532) 와 현재 SID 비트들 (2530) 로서 정의될 수도 있다. 블록 (2504) 에서, 마스터 디바이스는 현재 마스크 (2532) 와 현재 SID 비트들 (2530) 을 갖는 질의를 전송한다. 슬레이브 디바이스들은 질의를 수신하고, 그 질의에서 제공된 마스크 (2532) 를 사용하여 그들의 개별 고유 SID들을 마스킹한다. 일 예에서, 마스킹은 특정 수의 최하위 비트들을 마스킹된 SID 로 방치한다. 슬레이브 디바이스는 마스킹된 SID 가 질의에서 수신된 SID 비트들 (2530) 과 매칭할 경우, SDA 라인 (2426) 을 로우로 구동할 수도 있다.
마스터 디바이스는 SDA 라인 (2426) 의 어써트를, 슬레이브 디바이스가 질의에서 송신된 SID 비트들 (2530) 과 매칭하는 적어도 일부 비트들을 갖는 고유한 SID 를 갖는다는 확인으로서, 고려한다. 따라서, 마스터 디바이스는 SDA 라인 (2426) 이 블록 (2506) 에서 어써트된 것으로 결정할 수도 있고, 블록 (2526) 으로 진행할 수도 있다. 블록 (2516) 에서, 마스터 디바이스는 마스크 (2532) 가 슬레이브 SID 에서 임의의 비트가 비교 동안 무시되게 하였는지 여부를 결정한다. 만약 그렇지 않다면, 블록 (2518) 에서 마스터 디바이스들은 슬레이브 디바이스가 그 질의에서 전송된 SID 비트들과 정확히 매칭하는 SID 를 갖는 것으로 결정한다. 블록 (2516) 에서 마스크 (2532) 가 고려사항에서 슬레이브 SID 의 하나 이상의 비트들을 차단한 것으로 결정된다면, 프로세스는 블록 (2520) 으로 진행한다. 블록 (2520) 에서, 마스터 디바이스는 슬레이브 SID 의 다음의 더 유효한 비트가 다음 질의에서 송신될 SID 비트들 (2530) 과 비교되도록, 마스크를 수정할 수도 있다. 마스터 디바이스는 블록 (2522) 에서 SID 비트들 (2530) 의 현재 MSB 를 소거할 수도 있다. 그 후, 스캔은 업데이트된 마스크 (2532) 및 SID 비트들 (2530) 을 가지고 블록 (2504) 에서 재시작할 수도 있다. 일부 예시들에서, 마스터 디바이스는 단계 (2524) 에서 생성된 비트 구성에 대한 질의를 전송하는 것을 스킵할 수도 있다. 블록 (2526) 에서, 마스터 디바이스는 이전의 포지티브 응답이 수신되었는지 여부를 결정할 수도 있다. 어떤 이전 응답도 수신되지 않은 것으로 결정된다면, 스캔은 블록 (2504) 에서 계속된다. 블록 (2526) 에서 이전 응답이 수신된 것으로 결정된다면, 적어도 하나의 슬레이브 디바이스는 단계 (2524) 에서 생성된 비트 구성을 가지며, 이는 MSB 에 대한 대안적인 값 (=0) 이 적어도 하나의 슬레이브 디바이스로부터 어떤 응답도 유도하지 않았기 때문이다. 따라서, 스캔은 블록 (2512) 에서 계속될 수도 있다.
블록 (2506) 에서 마스터 디바이스가 SDA 라인 (2426) 이 질의에 응답하여 어써트되지 않은 것으로 결정한다면, 프로세스는 블록 (2508) 에서 계속된다. 블록 (2508) 에서, 마스터 디바이스는 현재 SID 비트들 (2530) 을 직렬 버스에 커플링된 임의의 슬레이브 디바이스의 SID 에 발생하지 않은 비트 패턴으로서 옵션으로 태그할 수도 있다. 그 후에, 마스터 디바이스는 마스크 (2532) 에 대응하는 비트 포지션들에서 현재 SID 비트들을 갖는 임의의 디바이스에 대하여 스캔하는 것을 억제할 수도 있다. 그 후, 프로세스는 블록 (2510) 에서 계속되며, 여기서 마스터 디바이스는 SID 비트들 (2530) 의 현재 MSB 가 마스크 (2532) 의 동작에 의해 정의된 것과 같이 0 으로 세팅되는지 여부를 결정한다. 블록 (2510) 에서 SID 비트들 (2530) 의 현재 MSB 가 1 로 세팅되는 것으로 결정된다면, 어떤 디바이스도 1 또는 0 으로 세팅된 현재 MSB 를 갖는 질의에 응답하지 않은 것으로 가정될 수 있고, 스캔은 블록 (2528) 에서 종료될 수도 있다. 어떤 슬레이브 디바이스들도 스캔 시퀀스에서 임의의 질의에 응답하지 않았을 때, 블록 (2528) 이 도달될 수도 있는 것이 인식될 것이다.
SID 비트들 (2530) 의 현재 MSB 가 블록 (2510) 에서 0 으로 세팅되는 것으로 결정된다면, 블록 (2524) 에서 SID 비트들 (530) 의 현재 MSB 는 2진 1 의 값으로 세팅된다. 그 후에 스캔은 블록 (2526) 으로 진행하고, 업데이트된 SID 비트들 (2530) 을 갖는다.
블록 (2526) 에서, 어떤 이전 응답도 현재 스캔에서 수신되지 않은 것으로 결정된다면, 스캔은 블록 (2504) 에서 계속되고, 질의는 1 로 세팅된 현재 MSB 와 함께 전송된다. 블록 (2526) 에서, 이전 응답이 수신되었다면, 0 으로 세팅된 현재 MSB 를 갖는 질의에 응답하지 않은 슬레이브 디바이스는 1 로 세팅된 현재 MSB 를 갖는 질의에 응답할 것으로 가정될 수 있다. 따라서, 1 로 세팅된 현재 MSB 를 갖는 질의는 전송될 필요가 없고, 스캔은 블록 (2512) 으로 진행한다. 블록 (2512) 에서, 마스터 디바이스는 마스크 (2532) 가 슬레이브 SID 에서 임의의 비트가 비교 동안 무시되게 하였는지 여부를 결정한다. 만약 아니라면, SID 가 식별된 것으로 결정되고, 현재 스캔은 블록 (2514) 에서 종료할 수도 있다.
블록 (2512) 에서 마스크 (2532) 가 고려사항에서 슬레이브 SID 의 하나 이상의 비트들을 차단한 것으로 결정된다면, 프로세스는 블록 (2520) 으로 진행한다. 블록 (2520) 에서, 마스터 디바이스는 슬레이브 SID 의 다음의 현재 MSB 가 다음 질의에서 송신될 SID 비트들 (2530) 과 비교되도록, 마스크를 수정할 수도 있다. 마스터 디바이스는 블록 (2522) 에서 SID 비트들 (2530) 의 현재 MSB 를 소거할 수도 있다. 그 후, 스캔은 업데이트된 마스크 (2532) 및 SID 비트들 (2530) 을 가지고 블록 (2504) 에서 재시작할 수도 있다.
마스터 디바이스는 SDA 라인 (2426) 의 어써트에서 발생한 임의의 마스크 (2532) 및 SID 비트들 (2530) 조합을 추적할 수도 있고, 이들 마스크 (2532) 및 SID 비트들 (2530) 조합들 중 하나 이상에 기초하여 새로운 스캔을 개시할 수도 있다. 일 예에서, 마스터 디바이스는 제 1 SID 를 발견한 후에, 또는 어떤 응답도 1 로 세팅된 MSB 를 갖는 질의로부터 수신되지 않는 경우에 어떤 슬레이브 디바이스도 SID 패턴 서브세트를 갖지 않는 것을 인식한 후에 새로운 스캔 (예컨대, 플로우차트 (2500)) 을 개시할 수도 있다. 새로운 스캔은 0 의 MSB 값을 갖는 SID 비트들 (2530) 에 대한 응답으로 최종 SDA 라인 (2426) 어써트에서 시작하며, 여기서 MSB 값은 대응하는 마스크 (2532) 의 액션에 의해 결정된다.
도 26 내지 도 41 은 본원에 개시된 특정 양태들에 따라 반복적인 SID 스캔의 다양한 결과들을 도시한다. SID 스캔은 예컨대, 도 25 에 도시된 프로세스를 사용하여 수행될 수도 있고, 스캔 시퀀스는 SID 비트 인덱스 (2602) 에 대한 스캔 시퀀스의 진행을 예시하는 도 26 내지 도 41 에 도시된다. 이러한 설명의 목적들을 위해, 3 개의 슬레이브 디바이스들이 직렬 버스에 커플링될 때, 스캔이 수행된다. 제 1 슬레이브 디바이스는 16진수 0x402A 또는 2진수 0100_0000_0010_1010 와 동일한 디바이스 식별자 SID0 를 가질 수도 있다. 제 2 슬레이브 디바이스는 16진수 0x113E 또는 2진수 010001_0001_0011_1110 와 동일한 디바이스 식별자 SID1 를 가질 수도 있다. 제 3 슬레이브 디바이스는 16진수 0x0908 또는 2진수 0000_1001_0000_1000 와 동일한 디바이스 식별자 SID2 를 가질 수도 있다.
도 26 에 도시된 것과 같이, 16-비트 SID 의 최하위 비트 (2604) 에서 시작하여, 마스터 디바이스는 그들의 SID들의 최하위 비트 (비트 0) 에서 '0' 을 갖는 모든 슬레이브 디바이스들이 예컨대, SDA 라인 (2426) 을 로우로 홀딩함으로써 응답하는 것을 요청하는 질의를 전송한다. 모든 3 개의 슬레이브 디바이스들은 도 26 에 도시된 3 개의 SID들의 예에서 응답한다.
도 27 에 도시된 것과 같이, 질의 프로세스는 비트 1 (2704), 및 그들의 SID들의 비트 위치에서 '0' 을 갖는 모든 슬레이브 디바이스들이 응답하는 것을 요청하는 질의에 대하여 반복된다. 오직 SID 0x0908 (SID2) 를 갖는 슬레이브 디바이스만이 SDA 라인 (2426) 을 로우로 홀딩함으로써 응답한다.
도 28 에 도시된 것과 같이, 질의 프로세스는 비트 2 (2804), 및 그들의 SID들의 비트 위치에서 '0' 을 갖는 모든 슬레이브 디바이스들이 응답하는 것을 요청하는 질의에 대하여 반복된다. SID 0x0908 (SID2) 를 갖는 슬레이브 디바이스가 응답한다.
도 29 에 도시된 것과 같이, 질의 프로세스는 비트 3 (2904), 및 그들의 SID들의 비트 위치에서 '0' 을 갖는 모든 슬레이브 디바이스들이 응답하는 것을 요청하는 질의에 대하여 반복된다. 어떤 슬레이브 디바이스도 응답하지 않는다.
도 30 에 도시된 것과 같이, 질의 프로세스는 비트 3 (2904) 에 대하여 반복될 수도 있고, 그들의 SID들의 비트 위치에서 '1' 을 갖는 모든 슬레이브 디바이스들을 요청하는 질의가 응답한다. SID 0x0908 (SID2) 를 갖는 슬레이브 디바이스가 응답할 것이다. 그러나, 마스터 디바이스는 포지티브 응답이 여기서 형성될 것임을 인식하기 때문에, 어떤 질의도 마스터 디바이스에 의해 형성되지 않아야 한다. 대신, 마스터 디바이스는 SID 비트 인덱스 (2602) 에서 "1" 값을 간단히 세팅하고, 비트 4 (3104) 로 이동할 수도 있다 (도 31).
도 31 에 도시된 것과 같이, 질의 프로세스는 bit 4 (3104) 부터 비트 7 (3106) 까지에 대하여 되풀이하여 반복되고, 그들의 SID들의 대응하는 비트 위치들에서 '0' 을 갖는 모든 슬레이브 디바이스들을 요청하는 질의들이 응답한다. SID 0x0908 (SID2) 를 갖는 슬레이브 디바이스가 이들 개별 질의들 각각에 응답한다.
도 32 에 도시된 것과 같이, 질의 프로세스는 비트 8 (3204) 에 대하여 반복되고, 그들의 SID들의 비트 위치에서 '0' 을 갖는 모든 슬레이브 디바이스들을 요청하는 질의가 응답한다. 어떤 슬레이브 디바이스도 응답하지 않는다.
도 33 에 도시된 것과 같이, 마스터 디바이스가 포지티브 응답이 비트 8 (3204) 에서 "1" 의 질의에 대하여 형성될 것임을 인식하기 때문에, 어떤 질의도 마스터 디바이스에 의해 형성되지 않아야 한다. 대신, 마스터 디바이스는 SID 비트 인덱스 (2602) 에서 "1" 값을 간단히 세팅하고, 비트 9 (3204) 로 이동할 수도 있다.
일반적으로, 어떤 응답도 수신되지 않을 때까지 '0' 과 동일한 비트에 대하여 사용하여 질의하고 '1' 과 동일한 비트로 스위칭하는 프로세스는 제 1 디바이스에 대한 전체 SID 가 발견될 때까지 반복된다.
도 34 에 도시된 것과 같이, 질의 프로세스는 bit 9 (3404) 부터 비트 15 (3406) 까지에 대하여 되풀이하여 반복된다. SID 0x0908 (SID2) 를 갖는 슬레이브 디바이스가 이들 개별 질의들 각각에 응답한다. SID 의 모든 16 비트들이 체크되었기 때문에, SID2 0x0908 와 연관된 슬레이브 디바이스가 긍정적으로 식별된다.
슬레이브 디바이스 SID2 를 식별하면, 도 35 는 질의 프로세스가 지금부터 이러한 경로를 따라 다른 슬레이브 디바이스를 식별하는 것을 시도하기 위해 역추적되는 것을 도시한다. 이러한 역추적 프로세스는 어떤 슬레이브 디바이스도 응답하지 않을 때까지 반복된다. 역추적된 비트 위치들의 각각에서, 마스터 디바이스는 이전에 테스트되지 않은 값을 갖는 질의를 수행한다. 예를 들어, 비트 15 에서, 질의는 그 역추적된 질의에 대하여 '1' 를 사용한다. 비트 14 에서, 질의는 그 역추적된 질의에 대하여 '1' 를 사용한다.
도 36 은, 모든 가능한 경로들을 비트 1 (2704) 까지 역추적하고 제거하면, 질의 프로세스는 비트 1 (2704) 에 대하여 계속되고, 이는 "역추적" 이 응답을 획득하는 제 1 질의이다. 그들의 SID 들의 비트 위치에서 '1' 을 갖는 모든 슬레이브 디바이스들이 응답할 것을 요청하는 질의가 송신된다. SID 0x402A (SID0) 를 갖는 슬레이브 디바이스와 SID 0x113E (SID1) 를 갖는 슬레이브 디바이스는 SDA 라인 (2426) 을 로우로 홀딩함으로써 응답한다.
도 37 및 도 38 은 SID 의 모든 16 비트들이 체크될 때까지 계속되는 질의 프로세스를 도시하고, SID0 0x402A 와 연관된 슬레이브 디바이스가 긍정적으로 식별된다.
도 39 는 더 많은 매칭하는 SID들의 탐색시 역추적 프로세스를 다시 도시한다.
도 40 은, 비트 2 (2804) 까지 모든 가능한 경로들을 역추적하고 제거할 때, 질의 프로세스는 비트 2 (2804), 및 그들의 SID들의 비트 위치에서 '1' 을 갖는 모든 슬레이브 디바이스들이 응답하는 것을 요청하는 질의에 대하여 반복된다. 오직 SID 0x113E (SID1) 를 갖는 슬레이브 디바이스만이 SDA 라인 (2426) 을 로우로 홀딩함으로써 응답한다.
도 41 은 SID 의 모든 16 비트들이 체크될 때까지 계속되는 질의 프로세스를 도시하고, SID1 0x113E 와 연관된 슬레이브 디바이스가 긍정적으로 식별된다.
도 42 는 모든 대안적인 비트들이 이 경로에 대하여 테스트될 때까지 더 많은 매칭하는 SID들의 탐색시 역추적 프로세스를 다시 도시한다.
마스터 디바이스는 긍정적인 응답을 발생한 질의들에서 사용된 SID 값들을 맵핑하거나, 그렇지 않으면 추적하고, 어떤 응답도 산출하지 않은 질의들에서 사용된 SID 값들을 추적할 수도 있다.
마스터 디바이스는 공유되는 제어 데이터 버스에 커플링된 새롭게 플러깅될 뿐만 아니라 미리 존재하는 디바이스들에 대한 모든 SID들에 대하여 스캔하기 위해 이러한 SID 스캔 전체 커맨드를 채용할 수도 있다. 마스터 디바이스는 SID 비트 인덱스 (2602) 를 트래버싱하는 특정 순서에 제한되지 않는 것이 인식될 것이다. 그 예에서, 본원에 설명된 SID 비트 인덱스 (2602) 는 비트 0 로부터 비트 15 로 트래버싱된다. 다른 예에서, SID 비트 인덱스 (2602) 는 비트 15 로부터 비트 0 으로 트래버싱될 수도 있다. 다른 예들에서, 본원에 설명된 SID 비트 인덱스 (2602) 는 비선형적인 및/또는 랜덤하거나 의사랜덤한 순서로 트래버싱될 수도 있고, 여기서 예컨대 슬레이브 디바이스들은 특정 순서 또는 방식에 따라 할당된 SID들이 제공되는 것으로 예측된다.
SID 스캔을 갖는 핫- 플러깅의 지원
일 양태에 따르면, 공유된 제어 데이터 버스에 디바이스 (예컨대, 슬레이브 디바이스) 를 "핫-플러깅" 하는 것은 공유된 버스 및/또는 마스터 디바이스가 동작한 후에 바람직할 수도 있다. 그러나, 데이터 버스를 제어하는 마스터 디바이스의 초기 부트업 이후에 디바이스가 제어 데이터 버스에 커플링되게 하는 것은 마스터 디바이스가 새롭게 플러깅된 슬레이브 디바이스 (또는 비활성 마스터 디바이스) 를 검출하게 하는 일부 방식을 요구한다. 그러한 "핫-플러그" 기능을 달성하기 위해, 새롭게 플러깅된 슬레이브 디바이스는 (예컨대, 지정된 IRQN 을 통해 및 최장의 가능한 시간 주기를 사용하여) IRQ 신호를 마스터 디바이스로 전송할 수도 있다. 그 후에, 마스터 디바이스는 이전에 스캔되지 않은 공유되는 제어 데이터 버스에 커플링된 모든 슬레이브 디바이스들을 스캔하고 새롭게 부가된 슬레이브 디바이스를 식별하기 위해 "SID 스캔 신규" 커맨드를 이슈할 수도 있다.
일 양태에 따르면, SID 스캔을 지원하는 슬레이브 디바이스는 그 SID 가 파워-업 이후에 스캔되었는지 여부를 표시하는 정보를 저장할 수 있다. 예를 들어, 디바이스가 그 SID 에 대하여 스캔되었다면, 슬레이브 디바이스는 그 디바이스가 이미 스캔된 것을 표시하는 정수 레지스터를 세팅할 수도 있다. 이러한 레지스터는 이전에 스캔된 슬레이브 디바이스가 SID 스캔 신규 커맨드를 무시하게 하고, 따라서 오직 새롭게 플러깅된 디바이스들만이 응답한다.
이전에 스캔되지 않은 SID들을 갖는 디바이스들을 포함하여 공유되는 제어 데이터 버스에 새롭게 커플링되는 디바이스들은 통상적으로 이러한 SID 스캔 신규 커맨드에 응답하는 것으로 요구되고 및/또는 예측된다. 이전에 스캔된 SID들을 갖는 디바이스들은 "SID 스캔 신규" 커맨드에 응답하지 않아야 한다.
도 43 은 SID "스캔 신규" 커맨드 (4302) 및 그 대응하는 페이로드 (4304) 를 포함하는 CCIe 송신의 일 예 (4300) 를 도시한다. (0x5 코드에 의해 식별된) SID "스캔 신규" 커맨드 (4302) 는 마스터 디바이스에 의해 이슈될 수도 있다. 페이로드 (4304) 는 복수의 단위 스캔 ID들 (4310) 을 포함할 수도 있다. 각각의 단위 스캔 ID (4310) 는 SID 마스크 쌍 (4308) 및 응답 주기 (4306) 를 포함한다. SID 마스크 쌍 (4308) 은 질의하기 위한 SID 내의 단일 비트 위치를 식별하는 마스크를 정의할 수도 있다. 이는 SID 스캔 신규 커맨드 (4302) 이기 때문에, 모든 이전에 스캔된 디바이스들은 이를 무시할 수도 있다. 결과적으로, 공유되는 버스로 새롭게 플러깅되는 디바이스들만이 식별된다.
표 (4320) 에 도시된 것과 같이, (2 개의 20-비트 워드들 D0 및 D1 에 걸쳐 확산된) 32-비트 SID 마스크 쌍 (4308) 은 16-비트 SID 의 특정 비트 위치가 문의되고 있는지 여부, 및 만약 그렇다면, 어떤 값이 (즉, 0 또는 1) 이 문의되고 있는지를 식별하는 기능을 한다. 예를 들면, SID 마스크 쌍 (4308) 의 비트[1] 는 SID 의 비트[0] 가 체크될 것인지 또는 마스킹될 것인지 (즉, 체크되지 않을 것인지) 여부를 정의할 수도 있다. 비트[1] 가 "체크" 를 표시한다면, SID 마스크 쌍 (4308) 의 비트[0] 는 질의가 "0" 을 위한 것인지 또는 "1" 을 위한 것인지 여부를 정의한다.
응답 (4306) 에 의해 정의된 주기는 슬레이브 디바이스들이 공유 버스를 통해 대역내에서 SID 질의에 응답하게 한다. 각각의 단위 SID 질의 (4310) 에 대하여, 그 마스킹되지 않은 SID 비트가 질의 비트와 매칭하는 각각의 슬레이브 디바이스는 (즉, 슬레이브 디바이스의 SID 는 질의 비트와 매칭하는 질의된 비트 위치에서 비트를 갖는다) 공유 버스의 적어도 하나의 라인에 걸쳐 대역내에서 질의 응답을 전송한다. 이는 마스터 디바이스가 버스 상의 임의의 슬레이브 디바이스가 부분적으로 매칭하는 SID (즉, 질의 비트와 매칭하는 질의된 비트 위치에서 비트를 갖는 SID) 를 갖는지 여부를 확인하는 것을 허용한다.
다수의 단위 SID 질의들 (4310) 은 공유 버스에 커플링된 모든 디바이스들에 대하여 SID 를 완전히 식별하기 위해 마스터 디바이스에 의해 전송된다.
새롭게 핫-플러깅된 슬레이브 디바이스들에 대한 SID 의 스캔 또는 발견은 도 25 내지 도 42 에 도시된 것과 같이 수행될 수도 있다.
도 44 는 본원에 개시된 하나 이상의 기능들을 수행하도록 구성될 수도 있는 프로세싱 회로 (4402) 를 채용하는 장치에 대한 하드웨어 구현의 간략화된 예를 도시하는 개념 다이어그램 (4400) 이다. 본 개시의 다양한 양태들에 따라, 본원에 개시된 것과 같은 일 엘리먼트, 또는 일 엘리먼트의 임의의 부분, 또는 엘리먼트들의 임의의 조합은 프로세싱 회로 (4402) 를 사용하여 구현될 수도 있다. 프로세싱 회로 (4402) 는 하드웨어 및 소프트웨어 모듈들의 임의의 조합에 의해 제어되는 하나 이상의 프로세서들 (4404) 을 포함할 수도 있다. 프로세서들 (4404) 의 예들은 마이크로프로세서들, 마이크로제어기들, 디지털 신호 프로세서들 (DSP들), 필드 프로그래밍가능 게이트 어레이들 (FPGA들), 프로그래밍가능 로직 디바이스들 (PLD들), 상태 머신들, 게이트 로직, 별개의 하드웨어 회로들, 및 본 개시물 전반에 걸쳐서 설명되는 여러 기능을 수행하도록 구성된 다른 적합한 하드웨어를 포함한다. 하나 이상의 프로세서들 (4404) 은 특정 기능들을 수행하고, 소프트웨어 모듈들 (4416) 중 하나에 의해 구성되거나, 증강되거나, 제어될 수도 있는 특수화된 프로세서들을 포함할 수도 있다. 하나 이상의 프로세서들 (4404) 은 초기화동안 로딩되는 소프트웨어 모듈들 (4416) 의 조합을 통해 구성되고, 동작 동안 하나 이상의 소프트웨어 모듈들 (4416) 을 로딩 또는 언로딩함으로써 추가로 구성될 수도 있다.
도시된 예에서, 프로세싱 회로 (4402) 는 일반적으로 버스 (4410) 로 표현되는 버스 아키텍처로 구현될 수도 있다. 버스 (4410) 는 프로세싱 회로 (4402) 의 특정 애플리케이션 및 전체 설계 제약들에 의존하여 임의의 수의 상호접속 버스들 및 브리지들을 포함할 수도 있다. 버스 (4410) 는 하나 이상의 프로세서들 (4404) 및 스토리지 (4406) 를 포함하는 다양한 회로들을 함께 링크시킨다. 스토리지 (4406) 는 메모리 디바이스들 및 대용량 스토리지 디바이스들을 포함할 수도 있고, 본원에서 컴퓨터 판독가능 매체 및/또는 프로세서 판독가능 매체로서 지칭될 수도 있다. 버스 (4410) 는 또한 타이밍 소스들, 타이머들, 주변장치들, 전압 레귤레이터들 및 전력 관리 회로들과 같은 다양한 다른 회로들을 링크시킬 수도 있다. 버스 인터페이스 (4408) 는 버스 (4410) 와 하나 이상의 트랜시버들 (4412) 간에 인터페이스를 제공할 수도 있다. 트랜시버 (4412) 는 프로세싱 회로에 의해 지원되는 각각의 네트워킹 기술을 위해 제공될 수도 있다. 일부 예시들에서, 다수의 네트워킹 기술들은 트랜시버 (4412) 에서 발견된 회로 또는 프로세싱 모듈들 중 일부 또는 전부를 공유할 수도 있다. 각각의 트랜시버 (4412) 는 송신 매체를 통해서 여러 다른 장치와 통신하는 수단을 제공한다. 장치들의 특성에 의존하여, 사용자 인터페이스 (4418) (예컨대, 키패드, 디스플레이, 스피커, 마이크로폰, 조이스틱) 가 또한 제공될 수도 있고, 직접 또는 버스 인터페이스 (4408) 를 통해 버스 (4410) 에 통신가능하게 커플링될 수도 있다.
프로세서 (4404) 는 버스 (4410) 를 관리하는 것 및 스토리지 (4406) 를 포함할 수도 있는 컴퓨터 판독가능 매체에 저장된 소프트웨어의 실행을 포함할 수도 있는 일반적인 프로세싱을 담당할 수도 있다. 이와 관련하여, 프로세서 (4404) 를 포함하는 프로세싱 회로 (4402) 가 본원에 개시된 방법들, 기능들 및 기술들 중 임의의 것을 구현하는데 사용될 수도 있다. 스토리지 (4406) 는 소프트웨어를 실행중일 경우, 프로세서 (4404) 에 의해 조종되는 데이터를 저장하기 위해 사용될 수도 있고, 소프트웨어는 본원에 개시된 방법들 중 임의의 방법을 구현하도록 구성될 수도 있다.
프로세싱 회로 (4402) 에 있어서의 하나 이상의 프로세서들 (4404) 은 소프트웨어를 실행할 수도 있다. 소프트웨어는 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 하드웨어 디스크립션 언어, 또는 이외로 지칭되든, 명령들, 명령 세트들, 코드, 코드 세그먼트들, 프로그램 코드, 프로그램들, 서브프로그램들, 소프트웨어 모듈들, 애플리케이션들, 소프트웨어 애플리케이션들, 소프트웨어 패키지들, 루틴들, 서브루틴들, 오브젝트들, 실행가능물들 (executables), 실행 쓰레드들, 프로시저들, 함수들, 알고리즘들 등을 의미하는 것으로 넓게 해석되어야 할 것이다. 소프트웨어는 스토리지 (4406) 로부터 컴퓨터 판독가능한 형태로 또는 외부 컴퓨터 판독가능 매체에 상주할 수도 있다. 외부 컴퓨터 판독가능 매체 및/또는 스토리지 (4406) 는 비-일시적인 컴퓨터 판독가능 매체를 포함할 수도 있다. 비-일시적인 컴퓨터 판독가능 매체는, 예로서, 자기 저장 디바이스 (예를 들어, 하드 디스크, 플로피 디스크, 자기 스트립), 광학 디스크 (예를 들어, 컴팩트 디스크 (CD) 또는 디지털 다기능 디스크 (DVD)), 스마트카드, 플래시 메모리 디바이스 (예를 들어, "플래시 드라이버", 카드, 스틱, 또는 키 드라이브), 랜덤 액세스 메모리 (RAM), 판독 전용 메모리 (ROM), 프로그램가능 ROM (PROM), 소거가능 PROM (EPROM), 전기적으로 소거가능 PROM (EEPROM), 레지스터, 착탈가능 디스크, 및 컴퓨터에 의해 액세스 및 판독될 수도 있는 소프트웨어 및/또는 명령들을 저장하기 위한 임의의 다른 적절한 매체를 포함한다. 컴퓨터 판독가능 매체 및/또는 스토리지 (4406) 는 또한, 예를 들어 반송파, 송신선, 및 컴퓨터에 의해 액세스 및 판독될 수도 있는 소프트웨어 및/또는 명령들을 송신하기 위한 임의의 다른 적절한 매체를 포함할 수도 있다. 컴퓨터 판독가능 매체 및/또는 스토리지 (4406) 는 프로세싱 회로 (4402) 에, 프로세서 (4404) 에, 프로세싱 회로 (4402) 외부에 상주할 수도 있거나, 또는 프로세싱 회로 (4402) 를 포함하는 다중의 엔터티들에 걸쳐 분산될 수도 있다. 컴퓨터 판독가능 매체 및/또는 스토리지 (4406) 는 컴퓨터 프로그램 제품에서 구현될 수도 있다. 예로서, 컴퓨터 프로그램 제품은 패키징 재료들에 컴퓨터 판독가능 매체를 포함할 수도 있다. 전체 시스템에 부과된 특정 애플리케이션 및 전체 시스템 제약들에 의존하여 본 개시물 전반에서 제시된 기술된 기능을 최적으로 구현하는 방법을, 당업자는 인식할 것이다.
스토리지 (4406) 는 본원에서 소프트웨어 모듈들 (4416) 로서 지칭될 수도 있는 로딩가능한 코드 세그먼트들, 모듈들, 애플리케이션들, 프로그램들, 등등에서 보유되고 및/또는 조직되는 소프트웨어를 보유할 수도 있다. 소프트웨어 모듈들 (4416) 의 각각은, 프로세싱 회로 (4402) 상에 설치되거나 로딩되고 하나 이상의 프로세서들 (4404) 에 의해 실행될 경우, 하나 이상의 프로세서들 (4404) 의 동작을 제어하는 런타임 이미지 (4414) 에 기여하는 명령들 및 데이터를 포함할 수도 있다. 실행될 경우, 특정 명령들은 프로세싱 회로 (4402) 가 본원에서 설명된 특정 방법들, 알고리즘들 및 프로세스들에 따라 기능들을 수행하게 할 수도 있다.
소프트웨어 모듈들 (4416) 의 일부는 프로세싱 회로 (4402) 의 초기화 동안 로딩될 수도 있고, 이들 소프트웨어 모듈들 (4416) 은 본원에 개시된 다양한 기능들의 수행을 가능하게 하도록 프로세싱 회로 (4402) 를 구성할 수도 있다. 예를 들어, 일부 소프트웨어 모듈들 (4416) 은 프로세서 (4404) 의 내부 디바이스들 및/또는 로직 회로들 (4422) 을 구성할 수도 있고, 트랜시버 (4412), 버스 인터페이스 (4408), 사용자 인터페이스 (4418), 타이머들, 수학적 코프로세서들 (mathematical coprocessors), 등등과 같은 외부 디바이스들로의 액세스를 관리할 수도 있다. 소프트웨어 모듈들 (4416) 은 인터럽트 핸들러들 및 디바이스 드라이버들과 상호작용하고, 프로세싱 회로 (4402) 에 의해 제공된 다양한 리소스들로의 액세스를 제어하는 제어 프로그램 및/또는 오퍼레이팅 시스템을 포함할 수도 있다. 리소스들은 메모리, 프로세싱 시간, 트랜시버 (4412) 로의 액세스, 사용자 인터페이스 (4418), 등등을 포함할 수도 있다.
프로세싱 회로 (4402) 의 하나 이상의 프로세서들 (4404) 은 다기능적일 수도 있고, 따라서 소프트웨어 모듈들 (4416) 의 일부는 상이한 기능들 또는 동일한 기능의 상이한 경우들을 수행하도록 로딩되고 구성된다. 하나 이상의 프로세서들 (4404) 은 추가로, 예컨대 사용자 인터페이스 (4418), 트랜시버 (4412) 및 디바이스 드라이버들로부터의 입력들에 응답하여 개시된 백그라운드 작업들을 관리하도록 구성될 수도 있다. 다수의 기능들의 수행을 지원하기 위해, 하나 이상의 프로세서들 (4404) 은 멀티태스킹 환경을 제공하도록 구성될 수도 있고, 따라서 복수의 기능들의 각각은 필요하거나 요구되는 바에 따라 하나 이상의 프로세서들 (4404) 에 의해 서비스되는 작업들의 세트로서 구현된다. 일 예에서, 멀티태스킹 환경은 상이한 작업들 사이에서 프로세서 (4404) 의 제어를 패스하는 시간 공유 프로그램 (4420) 을 사용하여 구현될 수도 있고, 따라서 각각의 작업은 임의의 중요한 동작들의 완료시 및/또는 인터럽트와 같은 입력에 응답하여, 하나 이상의 프로세서들 (4404) 의 제어를 시간 공유 프로그램 (4420) 으로 리턴시킨다. 작업이 하나 이상의 프로세서들 (4404) 의 제어를 가질 경우, 프로세싱 회로는 제어 작업과 연관된 기능에 의해 어드레싱되는 목적들을 위해 효율적으로 특수화된다. 시간 공유 프로그램 (4420) 은 오퍼레이팅 시스템, 라운드-로빈 기반의 제어를 전송하는 메인 루프, 기능들의 우선순위화에 따라 하나 이상의 프로세서들 (4404) 의 제어를 할당하는 기능, 및/또는 하나 이상의 프로세서들 (4404) 의 제어를 핸들링 기능에 제공함으로써 외부 이벤트들에 응답하는 인터럽트 구동된 메인 루프를 포함할 수도 있다.
도 45 는 통신 링크를 통한 데이터 통신들을 위한 방법을 도시하는 플로우차트 (4500) 이다. 그 방법은 CCIe 버스와 같은 제어 데이터 버스에서 마스터 디바이스에 의해 수행될 수도 있다. 블록 (4502) 에서, 제 1 질의는 제어 데이터 버스에서 송신될 수도 있다. 제 1 질의는 비트들의 제 1 구성을 포함할 수도 있다.
블록 (4504) 에서, 비트들의 제 1 구성과 매칭하는 비트들의 제 2 구성을 포함하는 슬레이브 식별자를 갖는 슬레이브 디바이스의 존재가 결정될 수도 있다.
블록 (4506) 에서, 슬레이브 디바이스의 SID 가 식별되는지 여부가 결정될 수도 있다. SID 가 식별된다면, 그 방법은 종료할 수도 있다. SID 가 식별되지 않는다면, 그 방법은 블록 (4508) 에서 계속된다.
블록 (4508) 에서, 추가의 질의들은 슬레이브 식별자의 모든 비트들이 결정될 때까지, 비트들의 상이한 구성들을 갖는 추가의 질의들이 제어 데이터 버스에서 반복적으로 송신될 수도 있다.
일 예에서, 슬레이브 디바이스는 슬레이브 식별자에서 비트들의 대응하는 구성과 매칭하는 비트들의 구성을 포함하는, 각각의 질의에 대한 응답을 어써트한다.
슬레이브 디바이스는 제 1 질의에서 송신된 워드를 제 1 질의에서 송신된 마스크를 적용함으로써 마스킹된 슬레이브 식별자의 카피와 비교함으로써, 비트들의 제 1 구성과 비트들의 제 2 구성 간의 매칭을 식별할 수도 있다. 추가의 질의들은 제 2 질의를 포함할 수도 있다. 마스크는 비교를 위해 슬레이브 식별자의 추가 비트를 노출하는 수정된 마스크를 획득하도록 수정될 수도 있고, 제 2 질의는 제어 데이터 버스에서 송신될 수도 있으며, 여기서 제 2 질의는 비트들의 제 1 구성 및 수정된 마스크를 포함한다. 추가의 질의들은 선행하는 질의에 대한 어떤 응답도 수신되지 않을 경우 송신되는 제 3 질의를 포함할 수도 있다. 비트들의 제 1 구성은 비트들의 제 3 구성을 획득하도록 수정될 수도 있고, 제 3 질의는 제어 데이터 버스에서 송신될 수도 있으며, 여기서 제 3 질의는 비트들의 제 3 구성 및 선행하는 질의에서 송신된 마스크를 포함한다.
추가의 질의들은 슬레이브 식별자의 모든 비트들이 결정된 후에 송신되는 제 4 질의를 포함할 수도 있다. 마스크는 적어도 하나의 슬레이브 디바이스가 응답을 어써트하게 했던 이전 질의에서 송신되었던 값을 갖는 복구된 마스크로서 복구될 수도 있다. 이전 질의에서 송신된 비트들의 구성은 비트들의 제 4 구성을 획득하도록 수정될 수도 있다. 제 4 질의는 제어 데이터 버스에서 송신될 수도 있고, 여기서 제 4 질의는 비트들의 제 4 구성 및 복구된 마스크를 포함한다.
상이한 슬레이브 디바이스는 제 4 질의에 응답할 수도 있다. 슬레이브 디바이스는 슬레이브 식별자에서 비트들의 대응하는 구성과 매칭하는 비트들의 구성을 포함하는, 각각의 질의에 대한 응답을 어써트할 수도 있다.
일부 예시들에서, 비트들의 제 1 구성을 수정하는 것은 비트들의 제 1 구성의 유효 MSB 의 값을 토글링하는 것을 포함한다. 유효 MSB 는 마스크의 적용에 의해 슬레이브 식별자에서 억제되지 않는 최고값 비트에 대응하는 비트로서 정의될 수도 있다.
일부 예시들에서, 복수의 슬레이브 디바이스들은 질의에 의해 정의된 응답 주기 내에 제 1 질의에 응답할 수도 있다. 복수의 슬레이브 디바이스들은, 비트들의 제 1 구성이 복수의 슬레이브 디바이스들의 개별 슬레이브 식별자들에서 비트들의 대응하는 구성들과 매칭할 경우, 응답을 어써트함으로써 응답할 수도 있다. 응답은 예컨대, 복수의 슬레이브 디바이스들에 의해 공유되는 제어 데이터 버스를 통해, 어써트될 수도 있다.
일 예에서, 제어 데이터 버스는 2-라인 버스이다. 제 1 질의는 슬레이브 디바이스가 먼저 제어 데이터 버스에 커플링될 경우, 슬레이브 디바이스에 의해 생성된 파워 온/리셋 이벤트 또는 인터럽트에 응답하여 송신될 수도 있다. 슬레이브 디바이스는 CCIe 프로토콜에 따라 동작할 수도 있다. 질의는 스캔 커맨드에서 송신될 수도 있다. 스캔 커맨드는 제어 데이터 버스에 커플링된 슬레이브 디바이스들로 향할 수도 있다 (예컨대, "SID 스캔 전체 커맨드"). 스캔 커맨드는 이전에 식별되지 않은 제어 데이터 버스에 커플링된 슬레이브 디바이스들로 향할 수도 있다 (예컨대, "SID 스캔 신규" 커맨드).
도 46 은 프로세싱 시스템 (4602) 을 채용하는 장치 (4600) 에 대한 하드웨어 구현의 일 예를 예시하는 개념 다이어그램이다. 이 실시예에서, 프로세싱 회로 (4602) 은, 일반적으로 버스 (4616) 로 표현되는 버스 아키텍처로 구현될 수도 있다. 버스 (4616) 는 프로세싱 회로 (4602) 의 특정 애플리케이션 및 전체 설계 제약들에 의존하여 임의의 수의 상호접속 버스들 및 브리지들을 포함할 수도 있다. 버스 (4616) 는, 일반적으로 프로세서 (4612) 로 표현되는 하나 이상의 프로세서들, 및 일반적으로 컴퓨터 판독가능 매체 (4614) 로 표현되는 컴퓨터 판독가능 매체들을 포함하는 다양한 회로들을 함께 링크시킨다. 버스 (4616) 는 또한 타이밍 소스들, 타이머들, 주변장치들, 전압 레귤레이터들 및 전력 관리 회로들과 같은 다양한 다른 회로들을 링크시킬 수도 있다. 버스 인터페이스 (4618) 는 버스 (4616) 와 트랜시버 (4620) 사이의 인터페이스를 제공한다. 트랜시버 (4620) 는 송신 매체를 통해서 여러 다른 장치와 통신하는 수단을 제공하는 버스 인터페이스를 포함할 수도 있다. 장치들의 특성에 의존하여, 사용자 인터페이스 (4622) (예컨대, 키패드, 디스플레이, 스피커, 마이크로폰, 조이스틱) 가 또한 제공될 수도 있다. 하나 이상의 클록 생성 회로들 또는 모듈들 (4624) 은 프로세싱 회로 (4602) 내에 제공될 수도 있거나 프로세싱 회로 (4602) 및/또는 하나 이상의 프로세서들 (4612) 에 의해 제어될 수도 있다. 일 예에서, 클록 생성 회로들 또는 모듈들 (4624) 은 하나 이상의 수정 발진기들, 하나 이상의 위상 고정 루프 디바이스들, 및/또는 하나 이상의 구성가능한 클록 트리들을 포함할 수도 있다.
프로세서 (4612) 는 버스 (4616) 의 관리와, 프로세서 판독가능 저장 매체 (4614) 상에 저장된 소프트웨어의 실행을 포함하는 일반적인 프로세싱을 담당한다. 소프트웨어는, 프로세서 (4612) 에 의해 실행될 경우, 프로세싱 회로 (4602) 로 하여금 임의의 특정의 장치에 대해 위에서 설명한 여러 기능들을 수행하게 한다. 프로세서 판독가능 저장 매체 (4614) 는 또한, 소프트웨어를 실행할 경우, 프로세서 (4612) 에 의해 조작되는 데이터를 저장하기 위해 사용될 수도 있다.
일 구성에서, 프로세싱 회로는 CCIe 버스와 같은 제어 데이터 버스 (4620) 에서 정보를 송신하는 모듈들 및/또는 회로들 (4604) 을 포함할 수도 있다. 프로세싱 회로는 질의에서 송신된 마스크 및/또는 SID 비트들을 수정하도록 구성된 하나 이상의 모듈들 및/또는 회로들 (4606) 을 포함할 수도 있다. 프로세싱 회로는 질의들을 구성하고 질의들의 시퀀스를 사용하여 SID 에 대한 스캔을 수행하기 위한 모듈들 및/또는 회로들 (4608) 을 포함할 수도 있다. 프로세싱 회로는 예컨대, IRQ 버스에서 IRQ 의 어써트들을 검출하고 핸들링하는 모듈들 및/또는 회로들 (4610) 을 포함할 수도 있다. 일 예에서, 모듈들 및/또는 회로들 (4604, 4606, 4608, 4610) 및 버스 인터페이스 (4618) 는 제어 데이터 버스에서 제 1 질의를 송신하는 것으로서, 상기 제 1 질의는 비트들의 제 1 구성을 포함하는, 상기 제 1 질의를 송신하고, 상기 비트들의 제 1 구성과 매칭하는 비트들의 제 2 구성을 포함하는 슬레이브 식별자를 갖는 슬레이브 디바이스의 존재를 결정하며, 그리고 슬레이브 식별자의 모든 비트들이 결정될 때까지, 비트들의 상이한 구성들을 갖는 추가의 질의들을 제어 데이터 버스에서 반복적으로 송신하도록 함께 동작할 수도 있다. 슬레이브 디바이스는 슬레이브 식별자에서 비트들의 대응하는 구성과 매칭하는 비트들의 구성을 포함하는, 각각의 질의에 응답하여 인터럽트를 어써트할 수도 있다. 슬레이브 디바이스는 제 1 질의에서 송신된 워드를 제 1 질의에서 송신된 마스크를 적용함으로써 마스킹된 슬레이브 식별자의 카피와 비교함으로써, 비트들의 제 1 구성과 비트들의 제 2 구성 간의 매칭을 식별할 수도 있다.
개시된 프로세스들에서 단계들의 특정의 순서 또는 계위는 예시적인 접근법들의 예시인 것이 이해된다. 설계 선호사항들에 기초하여, 프로세스들에서 단계들의 특정의 순서 또는 계위가 재배열될 수도 있는 것으로 이해된다. 수반하는 방법은 여러 단계들의 현재의 엘리먼트들을 간단한 순서로 청구하며, 제시되는 특정의 순서 또는 계층에 한정시키려고 의도된 것이 아니다.
이전 설명은 임의의 당업자가 여러 본원에서 설명하는 양태들을 실시할 수 있도록 하기 위해서 제공된다. 이들 양태들에 대한 여러 변경들은 당업자들에게 매우 자명할 것이며, 본원에서 정의하는 일반 원리들은 다른 양태들에 적용될 수도 있다. 따라서, 청구항들은 본원에서 나타낸 양태들에 한정시키려고 의도된 것이 아니며, 전문용어 청구항들 (language claims) 에 부합하는 전체 범위를 부여하려는 것이며, 여기서, 엘리먼트에 대한 단수형 참조는 "하나 및 오직 하나" 로 구체적으로 달리 말하지 않는 한, "하나 및 오직 하나" 를 의미하기 보다는, "하나 이상" 을 의미하도록 의도된다. 달리 구체적으로 언급하지 않는 한, 용어 "일부 (some)" 는 하나 이상을 지칭한다. 당업자들에게 알려져 있거나 또는 추후 알려지는, 본 개시물을 통해서 설명한 여러 양태들의 엘리먼트들에 대한 모든 구조적 및 기능적 균등물들이 본원에 참조로 명백히 포함되며, 청구항들에 의해 포괄되도록 의도된다. 더욱이, 본원에서 개시된 어떤 것도 이런 개시물이 청구항들에 명시적으로 인용되는지에 상관없이, 대중에 지정되도록 의도된 것이 아니다. 어떤 청구항 엘리먼트도 그 엘리먼트가 어구 "하는 수단" 을 이용하여 명백히 언급되지 않는 한, 기능식 (means plus function) 청구항으로서 해석되지 않아야 한다.
도면들에 도시된 컴포넌트들, 단계들, 특징들 및/또는 기능들 중 하나 이상은 단일 컴포넌트, 단계, 특징 또는 기능으로 재배열 및/또는 결합되거나, 또는 몇몇 컴포넌트들, 단계들, 또는 기능들로 구현될 수도 있다. 부가적인 엘리먼트들, 컴포넌트들, 단계들, 및/또는 기능들이 또한, 본원에 개시된 신규한 특징들로부터 일탈함없이 부가될 수도 있다. 도면들에 도시된 장치들, 디바이스들, 및/또는 컴포넌트들은 도면들에 설명된 방법들, 특징들, 또는 단계들 중 하나 이상을 수행하도록 구성될 수도 있다. 본 명세서에서 설명된 신규한 알고리즘들은 또한 소프트웨어에서 효율적으로 구현되고/되거나 하드웨어에 임베딩될 수도 있다.
추가로, 실시형태들은 플로우 차트, 플로우 다이어그램, 구조 다이어그램, 또는 블록 다이어그램으로서 도시된 프로세스로서 설명될 수도 있음을 유의한다. 플로우차트가 동작들을 순차적인 프로세스로서 기술할 수도 있지만, 동작들 중 다수는 병렬로 또는 동시에 수행될 수 있다. 부가적으로, 동작들의 순서가 재배열될 수도 있다. 프로세스는 그 동작들이 완료될 경우에 종료된다. 프로세스는 방법, 함수, 절차, 서브루틴, 서브프로그램 등에 대응할 수도 있다. 프로세스가 함수에 대응할 경우, 그 종료는 그 함수의 호출 함수 또는 메인 함수로의 반환에 대응한다.
더욱이, 저장 매체는 판독 전용 메모리 (ROM), 랜덤 액세스 메모리 (RAM), 자기 디스크 저장 매체들, 광학 저장 매체들, 플래시 메모리 디바이스들 및/또는 정보를 저장하기 위한 다른 머신 판독가능 매체들을 포함하여 데이터를 저장하기 위한 하나 이상의 디바이스들을 나타낼 수도 있다. 용어 "머신 판독가능 매체" 는 휴대용 또는 고정식 저장 디바이스들, 광학 저장 디바이스들, 무선 채널들, 및 명령(들) 및/또는 데이터를 저장, 포함, 또는 수록할 수 있는 다양한 다른 매체들을 포함하지만 이에 한정되지 않는다.
추가로, 실시형태들은 하드웨어, 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 또는 이들의 임의의 조합일 수도 있다. 소프트웨어, 펌웨어, 미들웨어 또는 마이크로코드에서 구현되면, 필요한 작업들을 수행하는 프로그램 코드 또는 코드 세그먼트들은 저장 매체 또는 다른 스토리지(들)와 같은 머신 판독가능 매체에 저장될 수도 있다. 프로세서는 필요한 작업들을 수행할 수도 있다. 코드 세그먼트는 절차, 함수, 서브프로그램, 프로그램, 루틴, 서브루틴, 모듈, 소프트웨어 패키지, 클래스, 또는 명령들, 데이터 구조들, 또는 프로그램 상태문들의 임의의 조합을 나타낼 수도 있다. 코드 세그먼트는, 정보, 데이터, 인수들 (arguments), 파라미터들, 또는 메모리 컨텐츠를 전달 및/또는 수신함으로써 다른 코드 세그먼트 또는 하드웨어 회로에 커플링될 수도 있다. 정보, 인수들, 파라미터들, 데이터 등은 메모리 공유, 메시지 전달, 토큰 전달, 네트워크 송신 등을 포함하는 임의의 적절한 수단을 통해 전달되거나, 포워딩되거나, 또는 전송될 수도 있다.
본원에서 개시된 예들과 연계하여 설명된 여러가지 예증적인 논리 블록들, 모듈들, 및 회로들은 본원에서 개시된 기능들을 수행하도록 디자인된 범용 프로세서, 디지털 신호 프로세서(DSP), 주문형 반도체(ASIC), 필드 프로그래머블 게이트 어레이(FPGA) 또는 다른 프로그래머블 로직 컴포넌트, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 이들의 임의의 조합에 의해 구현되거나 수행될 수도 있다. 범용 프로세서는 마이크로프로세서일 수도 있지만, 대안적으로, 그 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로 제어기, 또는 상태 머신일 수도 있다. 프로세서는 또한 컴퓨팅 컴포넌트들의 조합, 예를 들면, DSP와 마이크로프로세서의 조합, 다수의 마이크로프로세서들, DSP 코어와 연계한 하나 이상의 마이크로프로세서들, 또는 임의의 다른 그러한 구성으로 구현될 수도 있다.
본원에서 개시된 실시예들과 연계하여 설명된 방법들 또는 알고리즘들은, 하드웨어에서 직접적으로, 프로세서에 의해 실행가능한 소프트웨어 모듈에서, 또는 이들 양자의 조합에서, 프로세싱 유닛, 프로그래밍 명령들, 또는 다른 지령들의 형태로 구현될 수도 있으며, 단일의 디바이스 또는 복수의 디바이스들에 걸쳐 분산되어 포함될 수도 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터들, 하드 디스크, 착탈가능 디스크, CD-ROM, 또는 당업계에 공지된 임의의 다른 형태의 저장 매체에 상주할 수도 있다. 저장 매체는, 프로세서가 저장 매체로부터 정보를 판독하고, 저장 매체로 정보를 저장할 수 있도록 프로세서에 커플링될 수도 있다. 대안에서, 저장 매체는 프로세서에 통합될 수도 있다.
당업자라면, 본원에서 개시된 실시형태들과 연계하여 설명된 여러 예증적인 논리 블록들, 모듈들, 회로들, 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어 또는 이들 양자의 조합으로서 구현될 수도 있음을 또한 알 수 있을 것이다. 하드웨어 및 소프트웨어의 이러한 상호 교환성을 명확하게 설명하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들이 그들의 기능적 관점에서 일반적으로 상술되었다. 그러한 기능이 하드웨어로 구현되는지 또는 소프트웨어로 구현되는지의 여부는 특정 애플리케이션 및 전체 시스템에 부과되는 설계 제약들에 따라 달라진다.
본 명세서에서 설명되는 발명의 다양한 특징들은 본 발명으로부터 벗어나는 일 없이 상이한 시스템들에서 구현될 수 있다. 앞서의 실시형태들은 단지 예들일 뿐이고 본 발명을 제한하는 것으로 해석되지 않음에 유의해야 한다. 실시형태들의 설명은 예증적인 것으로 의도된 것이며, 특허청구범위의 범위를 제한하는 것으로 의도된 것은 아니다. 이와 같이, 본 교시는 다른 타입들의 장치들에 쉽게 적용될 수 있으며, 많은 대안예들, 수정예들, 변경예들이 당업자에게는 명확할 것이다.

Claims (30)

  1. 제어 데이터 버스에서 제 1 질의를 송신하는 단계로서, 상기 제 1 질의는 비트들의 제 1 구성을 포함하는, 상기 제 1 질의를 송신하는 단계;
    상기 비트들의 제 1 구성과 매칭하는 비트들의 제 2 구성을 포함하는 슬레이브 식별자를 갖는 슬레이브 디바이스의 존재를 결정하는 단계; 및
    상기 슬레이브 식별자의 모든 비트들이 결정될 때까지, 비트들의 상이한 구성들을 갖는 추가의 질의들을 상기 제어 데이터 버스에서 반복적으로 송신하는 단계를 포함하며,
    상기 슬레이브 디바이스는 상기 슬레이브 식별자에서 비트들의 대응하는 구성과 매칭하는 비트들의 구성을 포함하는 각각의 질의에 대한 응답을 어써트 (assert) 하는, 방법.
  2. 제 1 항에 있어서,
    상기 슬레이브 디바이스는 상기 제 1 질의에서 송신된 워드를, 상기 제 1 질의에서 송신된 마스크를 적용함으로써 마스킹된 슬레이브 식별자의 카피와 비교함으로써, 상기 비트들의 제 1 구성과 상기 비트들의 제 2 구성 간의 매칭을 식별하는, 방법.
  3. 제 2 항에 있어서,
    상기 추가의 질의들은 제 2 질의를 포함하고,
    비교를 위해 상기 슬레이브 식별자의 추가 비트를 노출하는 수정된 마스크를 획득하도록 상기 마스크를 수정하는 단계; 및
    상기 제어 데이터 버스에서 상기 제 2 질의를 송신하는 단계를 더 포함하며,
    상기 제 2 질의는 상기 비트들의 제 1 구성 및 상기 수정된 마스크를 포함하는, 방법.
  4. 제 2 항에 있어서,
    상기 추가의 질의들은 선행하는 질의에 대한 어떤 응답도 수신되지 않을 경우 송신되는 제 3 질의를 포함하고,
    상기 비트들의 제 1 구성의 유효 최상위 비트 (MSB) 의 값을 토글링함으로써 비트들의 제 3 구성을 획득하도록 상기 비트들의 제 1 구성을 수정하는 단계로서, 상기 유효 MSB 는 상기 선행하는 질의에서 송신된 상기 마스크의 적용에 의해 상기 슬레이브 식별자에서 억제되지 않는 최고값 비트에 대응하는 비트로서 정의되는, 상기 비트들의 제 1 구성을 수정하는 단계;
    비교를 위해 상기 슬레이브 식별자의 추가 비트를 노출하는 수정된 마스크를 획득하도록 상기 마스크를 수정하는 단계; 및
    상기 제어 데이터 버스에서 상기 제 3 질의를 송신하는 단계를 더 포함하며,
    상기 제 3 질의는 상기 비트들의 제 3 구성 및 상기 선행하는 질의에서 송신된 상기 마스크를 포함하는, 방법.
  5. 제 2 항에 있어서,
    상기 추가의 질의들은 상기 슬레이브 식별자의 모든 비트들이 결정된 후에 송신되는 제 4 질의를 포함하고,
    적어도 하나의 슬레이브 디바이스가 상기 응답을 어써트하게 했던 이전 질의에서 송신되었던 값을 갖는 복구된 마스크를 획득하도록 상기 마스크를 복구하는 단계;
    비트들의 제 4 구성을 획득하도록 상기 이전 질의에서 송신된 비트들의 구성을 수정하는 단계; 및
    상기 제어 데이터 버스에서 상기 제 4 질의를 송신하는 단계를 더 포함하며,
    상기 제 4 질의는 상기 비트들의 제 4 구성 및 상기 복구된 마스크를 포함하는, 방법.
  6. 제 5 항에서,
    상이한 슬레이브 디바이스는 상기 제 4 질의에 응답하고,
    상기 상이한 슬레이브 디바이스는 상기 비트들의 제 4 구성이 상기 상이한 슬레이브 디바이스와 연관되는 상이한 슬레이브 식별자에서 비트들의 대응하는 구성과 매칭할 경우, 상기 응답을 어써트하는, 방법.
  7. 제 1 항에 있어서,
    복수의 슬레이브 디바이스들은 상기 제 1 질의에 응답하고,
    상기 복수의 슬레이브 디바이스들은 상기 비트들의 제 1 구성이 상기 복수의 슬레이브 디바이스들의 개별 슬레이브 식별자들에서 비트들의 대응하는 구성들과 매칭할 경우, 동일한 응답을 어써트하는, 방법.
  8. 제 7 항에 있어서,
    상기 응답은 상기 제어 데이터 버스의 제 1 라인을 사용하여 어써트되는, 방법.
  9. 제 1 항에 있어서,
    상기 제어 데이터 버스는 2-라인 버스이고,
    상기 2-라인 버스의 양자의 라인들은 상기 제 1 질의를 전송하는데 사용되는, 방법.
  10. 제 1 항에 있어서,
    상기 슬레이브 식별자의 모든 비트들이 결정된 후에,
    상기 제어 데이터 버스에 커플링된 모든 슬레이브 디바이스들에 대한 모든 슬레이브 식별자들이 결정될 때까지, 비트들의 상이한 구성들을 갖는 추가의 질의들을 상기 제어 데이터 버스에서 반복적으로 송신하는 단계를 더 포함하는, 방법.
  11. 제 1 항에 있어서,
    상기 제 1 질의는 상기 제어 데이터 버스에 커플링된 모든 슬레이브 디바이스들로 지향되는, 방법.
  12. 제 1 항에 있어서,
    상기 제 1 질의는 이전에 식별되지 않은 상기 제어 데이터 버스에 커플링된 슬레이브 디바이스들로 지향되는, 방법.
  13. 제 1 항에 있어서,
    상기 제 1 질의는 상기 비트들의 제 2 구성과 상기 비트들의 제 1 구성 간에 매칭이 존재할 경우, 상기 슬레이브 디바이스가 상기 제어 데이터 버스를 통해 응답해야만 하는 응답 주기를 정의하는, 방법.
  14. 제 1 항에 있어서,
    상기 응답은 상기 비트들의 제 2 구성과 상기 비트들의 제 1 구성 간에 매칭이 존재할 경우, 상기 슬레이브 디바이스가 상기 제어 데이터 버스의 제 1 라인을 순간적으로 풀 다운하는 것에 의해 어써트되는, 방법.
  15. 제 14 항에 있어서,
    상기 제어 데이터 버스에 커플링된 다른 디바이스들은 응답 주기 동안 상기 제어 데이터 버스의 제 1 라인에 그들의 입력을 마스킹하는, 방법.
  16. 제어 데이터 버스에 커플링된 슬레이브 디바이스; 및
    상기 제어 데이터 버스에 커플링되고 상기 제어 데이터 버스 상의 통신들을 관리하도록 구성된 마스터 디바이스를 포함하며,
    상기 마스터 디바이스는,
    상기 제어 데이터 버스에서 제 1 질의를 송신하는 것으로서, 상기 제 1 질의는 비트들의 제 1 구성을 포함하는, 상기 제 1 질의를 송신하고;
    상기 비트들의 제 1 구성과 매칭하는 비트들의 제 2 구성을 포함하는 슬레이브 식별자를 갖는 슬레이브 디바이스의 존재를 결정하며; 그리고
    상기 슬레이브 식별자의 모든 비트들이 결정될 때까지, 비트들의 상이한 구성들을 갖는 추가의 질의들을 상기 제어 데이터 버스에서 반복적으로 송신하도록
    구성되며,
    상기 슬레이브 디바이스는 상기 슬레이브 식별자에서 비트들의 대응하는 구성과 매칭하는 비트들의 구성을 포함하는 각각의 질의에 대한 응답을 어써트하는, 디바이스.
  17. 제 16 항에 있어서,
    상기 슬레이브 디바이스는 상기 제 1 질의에서 송신된 워드를, 상기 제 1 질의에서 송신된 마스크를 적용함으로써 마스킹된 슬레이브 식별자의 카피와 비교함으로써, 상기 비트들의 제 1 구성과 상기 비트들의 제 2 구성 간의 매칭을 식별하는, 디바이스.
  18. 제 17 항에 있어서,
    상기 추가의 질의들은 제 2 질의를 포함하고,
    상기 마스터 디바이스는 추가로,
    비교를 위해 상기 슬레이브 식별자의 추가 비트를 노출하는 수정된 마스크를 획득하도록 상기 마스크를 수정하고; 그리고
    상기 제어 데이터 버스에서 상기 제 2 질의를 송신하도록
    구성되며,
    상기 제 2 질의는 상기 비트들의 제 1 구성 및 상기 수정된 마스크를 포함하는, 디바이스.
  19. 제 17 항에 있어서,
    상기 추가의 질의들은 선행하는 질의에 대한 어떤 응답도 수신되지 않을 경우 송신되는 제 3 질의를 포함하고,
    상기 마스터 디바이스는 추가로,
    상기 비트들의 제 1 구성의 유효 최상위 비트 (MSB) 의 값을 토글링함으로써 비트들의 제 3 구성을 획득하도록 상기 비트들의 제 1 구성을 수정하는 것으로서, 상기 유효 MSB 는 상기 선행하는 질의에서 송신된 상기 마스크의 적용에 의해 상기 슬레이브 식별자에서 억제되지 않는 최고값 비트에 대응하는 비트로서 정의되는, 상기 비트들의 제 1 구성을 수정하고;
    비교를 위해 상기 슬레이브 식별자의 추가 비트를 노출하는 수정된 마스크를 획득하도록 상기 마스크를 수정하며; 그리고
    상기 제어 데이터 버스에서 상기 제 3 질의를 송신하도록
    구성되며,
    상기 제 3 질의는 상기 비트들의 제 3 구성 및 상기 선행하는 질의에서 송신된 상기 마스크를 포함하는, 디바이스.
  20. 제 17 항에 있어서,
    상기 추가의 질의들은 상기 슬레이브 식별자의 모든 비트들이 결정된 후에 송신되는 제 4 질의를 포함하고,
    상기 마스터 디바이스는 추가로,
    적어도 하나의 슬레이브 디바이스가 상기 응답을 어써트하게 했던 이전 질의에서 송신되었던 값을 갖는 복구된 마스크를 획득하도록 상기 마스크를 복구하고;
    비트들의 제 4 구성을 획득하도록 상기 이전 질의에서 송신된 비트들의 구성을 수정하며; 그리고
    상기 제어 데이터 버스에서 상기 제 4 질의를 송신하도록
    구성되며,
    상기 제 4 질의는 상기 비트들의 제 4 구성 및 상기 복구된 마스크를 포함하고,
    상이한 슬레이브 디바이스는 상기 제 4 질의에 응답하고,
    상기 상이한 슬레이브 디바이스는 상기 비트들의 제 4 구성이 상기 상이한 슬레이브 디바이스와 연관되는 상이한 슬레이브 식별자에서 비트들의 대응하는 구성과 매칭할 경우, 상기 응답을 어써트함으로써 응답하는, 디바이스.
  21. 제 16 항에 있어서,
    복수의 슬레이브 디바이스들은 상기 제 1 질의에 응답하고,
    상기 복수의 슬레이브 디바이스들은 상기 비트들의 제 1 구성이 상기 복수의 슬레이브 디바이스들의 개별 슬레이브 식별자들에서 비트들의 대응하는 구성들과 매칭할 경우, 상기 응답을 어써트함으로써 응답하는, 디바이스.
  22. 제 16 항에 있어서,
    상기 제 1 질의는 상기 비트들의 제 2 구성과 상기 비트들의 제 1 구성 간에 매칭이 존재할 경우, 상기 슬레이브 디바이스가 상기 제어 데이터 버스를 통해 응답해야만 하는 응답 주기를 정의하는, 디바이스.
  23. 제 16 항에 있어서,
    상기 응답은 상기 비트들의 제 2 구성과 상기 비트들의 제 1 구성 간에 매칭이 존재할 경우, 상기 슬레이브 디바이스가 상기 제어 데이터 버스의 제 1 라인을 순간적으로 풀 다운하는 것에 의해 어써트되는, 디바이스.
  24. 제 22 항에 있어서,
    상기 제어 데이터 버스에 커플링된 다른 디바이스들은 응답 주기 동안 상기 제어 데이터 버스의 제 1 라인에 그들의 입력을 마스킹하는, 디바이스.
  25. 제어 데이터 버스에서 제 1 질의를 송신하는 수단으로서, 상기 제 1 질의는 비트들의 제 1 구성을 포함하는, 상기 제 1 질의를 송신하는 수단; 및
    상기 비트들의 제 1 구성과 매칭하는 비트들의 제 2 구성을 포함하는 슬레이브 식별자를 갖는 슬레이브 디바이스의 존재를 결정하는 수단을 포함하며,
    상기 송신하는 수단은 상기 슬레이브 식별자의 모든 비트들이 결정될 때까지, 비트들의 상이한 구성들을 갖는 추가의 질의들을 상기 제어 데이터 버스에서 반복적으로 송신하도록 구성되고,
    상기 슬레이브 디바이스는 상기 슬레이브 식별자에서 비트들의 대응하는 구성과 매칭하는 비트들의 구성을 포함하는 각각의 질의에 대한 응답을 어써트하고,
    상기 슬레이브 디바이스는 상기 제 1 질의에서 송신된 워드를, 상기 제 1 질의에서 송신된 마스크를 적용함으로써 마스킹된 슬레이브 식별자의 카피와 비교함으로써, 상기 비트들의 제 1 구성과 상기 비트들의 제 2 구성 간의 매칭을 식별하는, 디바이스.
  26. 제 25 항에 있어서,
    상기 추가의 질의들은 제 2 질의를 포함하고,
    비교를 위해 상기 슬레이브 식별자의 추가 비트를 노출하는 수정된 마스크를 획득하도록 상기 마스크를 수정하는 수단; 및
    상기 제어 데이터 버스에서 상기 제 2 질의를 송신하는 수단을 더 포함하며,
    상기 제 2 질의는 상기 비트들의 제 1 구성 및 상기 수정된 마스크를 포함하는, 디바이스.
  27. 제 25 항에 있어서,
    상기 추가의 질의들은 선행하는 질의에 대한 어떤 응답도 수신되지 않을 경우 송신되는 제 3 질의를 포함하고,
    상기 비트들의 제 1 구성의 유효 최상위 비트 (MSB) 의 값을 토글링함으로써 비트들의 제 3 구성을 획득하도록 상기 비트들의 제 1 구성을 수정하는 수단으로서, 상기 유효 MSB 는 상기 선행하는 질의에서 송신된 상기 마스크의 적용에 의해 상기 슬레이브 식별자에서 억제되지 않는 최고값 비트에 대응하는 비트로서 정의되는, 상기 비트들의 제 1 구성을 수정하는 수단;
    비교를 위해 상기 슬레이브 식별자의 추가 비트를 노출하는 수정된 마스크를 획득하도록 상기 마스크를 수정하는 수단; 및
    상기 제어 데이터 버스에서 상기 제 3 질의를 송신하는 수단을 더 포함하며,
    상기 제 3 질의는 상기 비트들의 제 3 구성 및 상기 선행하는 질의에서 송신된 상기 마스크를 포함하는, 디바이스.
  28. 제 25 항에 있어서,
    복수의 슬레이브 디바이스들은 상기 제 1 질의에 응답하고,
    상기 복수의 슬레이브 디바이스들은 상기 비트들의 제 1 구성이 상기 복수의 슬레이브 디바이스들의 개별 슬레이브 식별자들에서 비트들의 대응하는 구성들과 매칭할 경우, 상기 응답을 어써트하며, 그리고
    상기 응답은 복수의 슬레이브 디바이스들에 의해 공유되는 상기 제어 데이터 버스를 통해 및 상기 제 1 질의에 의해 정의되는 응답 주기 내에 어써트되는, 디바이스.
  29. 하나 이상의 명령들이 저장되는 머신 판독가능 저장 매체로서,
    상기 명령들은 적어도 하나의 프로세서에 의해 실행될 경우, 상기 적어도 하나의 프로세서로 하여금,
    제어 데이터 버스에서 제 1 질의를 송신하게 하는 것으로서, 상기 제 1 질의는 비트들의 제 1 구성을 포함하는, 상기 제 1 질의를 송신하게 하고;
    상기 비트들의 제 1 구성과 매칭하는 비트들의 제 2 구성을 포함하는 슬레이브 식별자를 갖는 슬레이브 디바이스의 존재를 결정하게 하며; 그리고
    상기 슬레이브 식별자의 모든 비트들이 결정될 때까지, 비트들의 상이한 구성들을 갖는 추가의 질의들을 상기 제어 데이터 버스에서 반복적으로 송신하게 하고,
    상기 슬레이브 디바이스는 상기 슬레이브 식별자에서 비트들의 대응하는 구성과 매칭하는 비트들의 구성을 포함하는 각각의 질의에 대한 응답을 어써트하고,
    상기 슬레이브 디바이스는 상기 제 1 질의에서 송신된 워드를, 상기 제 1 질의에서 송신된 마스크를 적용함으로써 마스킹된 슬레이브 식별자의 카피와 비교함으로써, 상기 비트들의 제 1 구성과 상기 비트들의 제 2 구성 간의 매칭을 식별하는, 머신 판독가능 저장 매체.
  30. 제 29 항에 있어서,
    복수의 슬레이브 디바이스들은 상기 제 1 질의에 응답하고,
    상기 복수의 슬레이브 디바이스들은 상기 비트들의 제 1 구성이 상기 복수의 슬레이브 디바이스들의 개별 슬레이브 식별자들에서 비트들의 대응하는 구성들과 매칭할 경우, 상기 응답을 어써트하며, 그리고
    상기 응답은 복수의 슬레이브 디바이스들에 의해 공유되는 상기 제어 데이터 버스를 통해 및 상기 제 1 질의에 의해 정의되는 응답 주기 내에 어써트되는, 머신 판독가능 저장 매체.
KR1020167012057A 2013-10-09 2014-10-09 CCIe 버스를 통한 슬레이브 식별자 스캔 및 핫 플러그 능력 KR101861453B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361889028P 2013-10-09 2013-10-09
US61/889,028 2013-10-09
PCT/US2014/059982 WO2015054549A1 (en) 2013-10-09 2014-10-09 SLAVE IDENTIFIER SCANNING AND HOT-PLUG CAPABILITY OVER CCIe BUS

Publications (2)

Publication Number Publication Date
KR20160067222A true KR20160067222A (ko) 2016-06-13
KR101861453B1 KR101861453B1 (ko) 2018-05-28

Family

ID=51894189

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167012057A KR101861453B1 (ko) 2013-10-09 2014-10-09 CCIe 버스를 통한 슬레이브 식별자 스캔 및 핫 플러그 능력

Country Status (6)

Country Link
US (1) US9672176B2 (ko)
EP (1) EP3055780A1 (ko)
JP (1) JP6277267B2 (ko)
KR (1) KR101861453B1 (ko)
CN (1) CN105637496B (ko)
WO (1) WO2015054549A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9519603B2 (en) * 2013-09-09 2016-12-13 Qualcomm Incorporated Method and apparatus to enable multiple masters to operate in a single master bus architecture
US10169274B1 (en) 2017-06-08 2019-01-01 Qualcomm Incorporated System and method for changing a slave identification of integrated circuits over a shared bus
CN107332749B (zh) * 2017-07-05 2020-09-22 北京东土科技股份有限公司 基于工业互联网现场层宽带总线架构的同步方法及装置
US11030133B2 (en) * 2018-08-30 2021-06-08 Qualcomm Incorporated Aggregated in-band interrupt based on responses from slave devices on a serial data bus line
CN110532196B (zh) * 2019-08-30 2021-10-01 英业达科技有限公司 多地址响应的复杂可程序逻辑装置及运作方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62125731A (ja) * 1985-11-26 1987-06-08 Nec Corp ポ−リング制御装置
BR9808564A (pt) * 1997-04-15 2000-05-23 Advanced Viral Res Corp Método de tratar um paciente tendo infecções por hiv
US20020159477A1 (en) * 2001-02-28 2002-10-31 Koninklijke Philips Electronics N.V. Enhanced crosspoint bus protocol
US7631110B2 (en) * 2006-05-03 2009-12-08 Standard Microsystems Corporation Address assignment through device ID broadcast
DE102008059204B9 (de) * 2008-11-27 2011-05-05 Infineon Technologies Ag Verfahren zum Suchen eines Slave-Knotens in einem Kommunikationsnetz, Master-Knoten und Slave-Knoten für ein Kommunikationsnetz
US8225021B2 (en) 2009-05-28 2012-07-17 Lexmark International, Inc. Dynamic address change for slave devices on a shared bus
JP2012100222A (ja) * 2010-11-05 2012-05-24 Denki Kogyo Co Ltd 識別id検索方法
US9037766B2 (en) 2011-11-18 2015-05-19 Fairchild Semiconductor Corporation Pin selectable I2C slave addresses
JP5762561B2 (ja) * 2011-11-25 2015-08-12 三菱電機株式会社 通信装置、通信方法、及び通信システム

Also Published As

Publication number Publication date
JP6277267B2 (ja) 2018-02-07
EP3055780A1 (en) 2016-08-17
JP2016539400A (ja) 2016-12-15
US9672176B2 (en) 2017-06-06
CN105637496A (zh) 2016-06-01
US20150100714A1 (en) 2015-04-09
KR101861453B1 (ko) 2018-05-28
WO2015054549A1 (en) 2015-04-16
CN105637496B (zh) 2018-09-07

Similar Documents

Publication Publication Date Title
US10353837B2 (en) Method and apparatus to enable multiple masters to operate in a single master bus architecture
US9690725B2 (en) Camera control interface extension with in-band interrupt
JP6411480B2 (ja) CCIeプロトコルを介したエラー検出能力
US9519603B2 (en) Method and apparatus to enable multiple masters to operate in a single master bus architecture
EP3008609B1 (en) Camera control interface extension bus
KR101861453B1 (ko) CCIe 버스를 통한 슬레이브 식별자 스캔 및 핫 플러그 능력
US20150100713A1 (en) Coexistence of i2c slave devices and camera control interface extension devices on a shared control data bus
JP2017511044A (ja) エラー検出最適化を容易にするための共有バスを介したビット割振り
KR20170110610A (ko) 시리얼 버스를 위한 수신 클록 캘리브레이션
JP2016533608A (ja) カメラ制御インターフェースのスレーブデバイス間通信
WO2022161244A1 (zh) 多主机仲裁方法、装置和可读存储介质
US10733121B2 (en) Latency optimized I3C virtual GPIO with configurable operating mode and device skip
WO2017172269A1 (en) Method and apparatus to enable multiple masters to operate in a single master bus architecture
WO2024112352A1 (en) Flexible bus communication

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant