KR20200093106A - 반도체 집적 회로 및 그것의 동작 방법 - Google Patents
반도체 집적 회로 및 그것의 동작 방법 Download PDFInfo
- Publication number
- KR20200093106A KR20200093106A KR1020190009830A KR20190009830A KR20200093106A KR 20200093106 A KR20200093106 A KR 20200093106A KR 1020190009830 A KR1020190009830 A KR 1020190009830A KR 20190009830 A KR20190009830 A KR 20190009830A KR 20200093106 A KR20200093106 A KR 20200093106A
- Authority
- KR
- South Korea
- Prior art keywords
- vgi
- communication
- clock
- block
- virtual gpio
- Prior art date
Links
- 239000004065 semiconductor Substances 0.000 title claims abstract description 21
- 238000000034 method Methods 0.000 title claims description 28
- 238000004891 communication Methods 0.000 claims abstract description 146
- 238000012545 processing Methods 0.000 claims abstract description 20
- 230000004044 response Effects 0.000 claims description 30
- 230000007958 sleep Effects 0.000 claims description 19
- 230000010354 integration Effects 0.000 claims 1
- 239000000872 buffer Substances 0.000 description 46
- 230000005540 biological transmission Effects 0.000 description 24
- 238000010586 diagram Methods 0.000 description 24
- 230000000873 masking effect Effects 0.000 description 19
- 230000008859 change Effects 0.000 description 8
- 241000269319 Squalius cephalus Species 0.000 description 7
- 238000001514 detection method Methods 0.000 description 6
- 230000004913 activation Effects 0.000 description 3
- 101100191136 Arabidopsis thaliana PCMP-A2 gene Proteins 0.000 description 2
- 101100462378 Danio rerio otpb gene Proteins 0.000 description 2
- 101001122448 Rattus norvegicus Nociceptin receptor Proteins 0.000 description 2
- 101100048260 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) UBX2 gene Proteins 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 235000003642 hunger Nutrition 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000037351 starvation Effects 0.000 description 2
- 101100422768 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SUL2 gene Proteins 0.000 description 1
- 101100534112 Sus scrofa SPMI gene Proteins 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000001404 mediated effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- 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
-
- 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/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4418—Suspend and resume; Hibernate and awake
-
- 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/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0016—Inter-integrated circuit (I2C)
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Information Transfer Systems (AREA)
Abstract
본 발명의 실시 예에 따른 반도체 집적 회로는 중앙 처리 유닛, 외부 장치로 전송될 복수의 하드웨어 신호들을 중앙 처리 유닛과 독립적으로 출력하도록 구성된 하드웨어 기능 블록, 복수의 하드웨어 신호들을 가상 GPIO(General Purpose Input Output) 페이로드로 변환하도록 구성된 가상 GPIO(General Purpose Input Output) 유한 상태 머신, 및 가상 GPIO 페이로드를 직렬 데이터 라인 및 직렬 클럭 라인을 통해 외부 장치로 전송하도록 구성된 I3C 통신 블록을 포함한다.
Description
본 발명은 전자 장치에 관한 것으로 좀 더 상세하게는 반도체 집적 회로 및 시스템-온-칩(SoC; System-on-Chip)에 관한 것이다.
반도체 기술이 발달함에 따라, 반도체 집적 회로는 다양한 기능을 수행하도록 구성된 복수의 기능 블록들 또는 장치들을 포함할 수 있다. 반도체 집적 회로 내의 기능 블록들 및 장치들은 다양한 방식을 통해 서로 통신하도록 구성될 수 있다.
일 예로서, 반도체 집적 회로 내의 복수의 기능들 또는 복수의 장치들은 범용 입출력(GPIO; General Purpose Input Output) 포트들을 통해 서로 통신할 수 있다. 그러나 최근에는 반도체 집적 회로의 크기가 감소함에 따라, 복수의 GPIO 포트들을 구성하기 위한 라우팅의 복잡도가 증가하는 문제점이 있다.
본 발명의 목적은 감소된 비용 및 향상된 성능을 갖는 반도체 집적 회로 및 그것의 동작 방법을 제공하는데 있다.
본 발명의 실시 예에 따른 반도체 집적 회로는 중앙 처리 유닛, 외부 장치로 전송될 복수의 하드웨어 신호들을 상기 중앙 처리 유닛과 독립적으로 출력하도록 구성된 하드웨어 기능 블록, 상기 복수의 하드웨어 신호들을 가상 GPIO(General Purpose Input Output) 페이로드로 변환하도록 구성된 가상 GPIO(General Purpose Input Output) 유한 상태 머신, 및 상기 가상 GPIO 페이로드를 직렬 데이터 라인 및 직렬 클럭 라인을 통해 상기 외부 장치로 전송하도록 구성된 I3C 통신 블록을 포함한다.
본 발명의 실시 예에 따른 반도체 집적 회로는 중앙 처리 유닛, 범용 입출력(GPIO; General Purpose Input Output)에 기반된 복수의 제1 하드웨어 신호들을 상기 중앙 처리 유닛과 독립적으로 출력하도록 구성된 하드웨어 기능 블록, 상기 중앙 처리 유닛에 의해 설정된 마스킹 정보 및 상기 복수의 제1 하드웨어 신호들을 기반으로 제1 가상 GPIO 페이로드를 생성하도록 구성된 가상 GPIO 유한 상태 머신, 상기 제1 가상 GPIO 페이로드를 직렬 데이터 라인 및 직렬 클럭 라인을 통해 외부 장치로 전송하도록 구성된 I3C 통신 블록, 및 상기 중앙 처리 유닛, 상기 하드웨어 기능 블록, 상기 가상 GPIO 유한 상태 머신, 및 상기 I3C 통신 블록으로 메인 클럭 또는 제1 클럭을 제공하도록 구성된 관리 블록을 포함하고, 상기 관리 블록은, 슬립 모드에서, 상기 메인 클럭을 차단하고, 상기 직렬 데이터 라인의 풀-다운된 로우 레벨에 응답하여, 상기 제1 클럭을 상기 I3C 통신 블록 및 상기 가상 GPIO 유한 상태 머신으로 제공하고, 상기 슬립 모드에서, 상기 I3C 통신 블록 및 상기 GPIO 유한 상태 머신은 상기 제1 클럭에 응답하여 웨이크-업되고, 상기 웨이크-업된 I3C 통신 블록은 인-밴드 인터럽트 방식을 기반으로 상기 외부 장치로부터 상기 직렬 데이터 라인 및 상기 직렬 클럭 라인을 통해 제2 가상 GPIO 페이로드를 수신하고, 상기 웨이크-업된 가상 GPIO 유한 상태 머신은 상기 제2 가상 GPIO 페이로드를 복수의 제2 하드웨어 신호들로 변환한다.
본 발명의 실시 예에 따른 직렬 데이터 라인 및 직렬 클럭 라인을 포함하는 I3C 버스를 통해 외부 장치와 통신하도록 구성된 반도체 집적 회로의 동작 방법은 범용 입출력(GPIO; General Purpose Input Output)에 기반된 복수의 하드웨어 신호들을 생성하는 단계, 중앙 처리 유닛에 의해 설정된 마스킹 정보 및 상기 복수의 하드웨어 신호들을 기반으로 제1 가상 GPIO 페이로드를 생성하는 단계, 및 상기 중앙 처리 유닛의 개입 없이, 상기 제1 가상 GPIO 페이로드를 상기 직렬 데이터 라인 및 상기 직렬 클럭 라인을 통해 상기 외부 장치로 전송하는 단계를 포함한다.
본 발명의 실시 예들에 따르면, 범용 입출력(GPIO; General Purpose Input Output)에 기반된 하드웨어 신호들을 가상화하여 직렬 인터페이스(예를 들어, I3C 등)를 통해 외부 장치와 통신함으로써, GPIO를 지원하는데 필요한 물리적 신호 라인들의 개수가 감소될 수 있다. 따라서, 감소된 비용 및 향상된 성능을 갖는 반도체 집적 회로 및 그것의 동작 방법이 제공된다.
도 1a 및 도 1b는 전자 장치를 예시적으로 보여주는 블록도들이다.
도 2는 본 발명의 실시 예에 따른 전자 장치를 예시적으로 보여주는 블록도이다.
도 3은 도 2의 마스터 장치의 구성을 예시적으로 보여주는 블록도이다.
도 4a 및 도 4b는 도 3의 마스터 장치의 동작을 예시적으로 보여주는 순서도들이다.
도 5는 본 발명의 실시 예에 따른 전자 장치를 보여주는 블록도이다.
도 6은 도 5의 마스터 장치를 예시적으로 보여주는 블록도이다.
도 7a 및 도 7b는 도 6의 마스터 장치의 동작을 예시적으로 보여주는 순서도들이다.
도 8a 내지 도 8c는 도 6의 마스터 장치(210)의 가상 GPIO 통신의 전송 경로 및 수신 경로를 설명하기 위한 예시적인 도면들이다.
도 9는 본 발명의 실시 예에 따른 전자 장치를 보여주는 블록도이다.
도 10은 도 9의 마스터 장치의 관리 블록을 예시적으로 보여주는 블록도이다.
도 11은 도 10의 마스터 장치의 동작을 보여주는 순서도이다.
도 12는 본 발명의 실시 예들에 따른 기술적 사상이 적용된 전자 장치를 예시적으로 보여주는 블록도이다.
도 13a 및 도 13b는 본 발명의 실시 예에 따른 전자 장치를 예시적으로 보여주는 블록도들이다.
도 14는 본 발명의 실시 예들에 따른 기술적 사상이 적용된 전자 장치를 예시적으로 보여주는 블록도이다.
도 15는 본 발명의 실시 예에 따른 기술적 사상이 적용된 전자 장치를 예시적으로 보여주는 블록도이다.
도 2는 본 발명의 실시 예에 따른 전자 장치를 예시적으로 보여주는 블록도이다.
도 3은 도 2의 마스터 장치의 구성을 예시적으로 보여주는 블록도이다.
도 4a 및 도 4b는 도 3의 마스터 장치의 동작을 예시적으로 보여주는 순서도들이다.
도 5는 본 발명의 실시 예에 따른 전자 장치를 보여주는 블록도이다.
도 6은 도 5의 마스터 장치를 예시적으로 보여주는 블록도이다.
도 7a 및 도 7b는 도 6의 마스터 장치의 동작을 예시적으로 보여주는 순서도들이다.
도 8a 내지 도 8c는 도 6의 마스터 장치(210)의 가상 GPIO 통신의 전송 경로 및 수신 경로를 설명하기 위한 예시적인 도면들이다.
도 9는 본 발명의 실시 예에 따른 전자 장치를 보여주는 블록도이다.
도 10은 도 9의 마스터 장치의 관리 블록을 예시적으로 보여주는 블록도이다.
도 11은 도 10의 마스터 장치의 동작을 보여주는 순서도이다.
도 12는 본 발명의 실시 예들에 따른 기술적 사상이 적용된 전자 장치를 예시적으로 보여주는 블록도이다.
도 13a 및 도 13b는 본 발명의 실시 예에 따른 전자 장치를 예시적으로 보여주는 블록도들이다.
도 14는 본 발명의 실시 예들에 따른 기술적 사상이 적용된 전자 장치를 예시적으로 보여주는 블록도이다.
도 15는 본 발명의 실시 예에 따른 기술적 사상이 적용된 전자 장치를 예시적으로 보여주는 블록도이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
이하에서 사용되는 "블록(block)", "유닛 또는 부(unit)", "머신(machine)", "로직(logic)", "버퍼(buffer)" 등과 같은 용어들 또는 그것들과 대응되는 구성들은 소프트웨어, 하드웨어, 또는 그것들의 조합의 형태로 구현될 수 있다.
도 1a 및 도 1b는 전자 장치를 예시적으로 보여주는 블록도들이다. 도 1a 및 도 1b를 참조하면, 전자 장치(10)는 제1 장치(11) 및 제2 장치(12)를 포함할 수 있다. 제1 장치(11) 및 제2 장치(12) 각각은 특정 기능을 수행하도록 구성된 하드웨어 기능 블록을 포함하거나 또는 특징 기능을 수행하도록 구성된 반도체 장치 또는 반도체 집적 회로일 수 있다. 예시적인 실시 예에서, 제1 장치(11)는 애플리케이션 프로세서(AP; Application Processor)와 같은 시스템 온 칩(SoC; System on Chip)일 수 있으며, 제2 장치(12)는 가속도계, 광 센서, 근접 센서, 조도 센서, 지문 센서, 디스플레이 장치, 카메라 장치, 통신 장치 등과 같이 다양한 기능을 수행하도록 구성된 전자 장치일 수 있다.
제1 장치(11) 및 제2 장치(12)는 특정 인터페이스 또는 특정 프로토콜을 기반으로 서로 통신하도록 구성될 수 있다. 예를 들어, 도 1a에 도시된 바와 같이, 제1 및 제2 장치들(11-1, 12-1)은 각각 I3C 통신 블록들(11a-1, 12a-1)을 포함할 수 있다. I3C 통신 블록들(11a-1, 12a-1)은 MIPI 연합에 의해 정의된 I3C 인터페이스 규약을 기반으로 서로 직렬-통신을 수행할 수 있다. 즉, 제1 장치(11-1)는 I3C 통신 블록(11a-1)을 통해 연결된 직렬 데이터 라인(SDA) 및 직렬 클럭 라인(SCL)을 통해 데이터 또는 정보를 제2 장치(12-1)와 정보를 송수신할 수 있다.
또는 도 1b에 도시된 바와 같이, 제1 및 제2 장치들(11, 12)은 범용 입출력(GPIO; General-Purpose Input/Output) 통신 블록들(11b, 12b)을 각각 포함할 수 있다. GPIO 통신 블록들(11b, 12b)은 복수의 신호 라인들(SLs)(예를 들어, 물리적 신호 라인들)을 통해 하드웨어 신호들(HWS)을 서로 송수신할 수 있다. 하드웨어 신호들(HWS)은 제1 및 제2 장치들(11, 12)에 포함된 하드웨어 기능 블록들 사이에서 송수신되는 정보를 가리킬 수 있다. 상술된 바와 같이, 제1 및 제2 장치들(11, 12)은 서로 미리 정해진 통신 방식을 기반으로(예를 들어, I3C 통신 또는 GPIO 통신)을 통해 서로 통신할 수 있다.
예시적인 실시 예에서, I3C 통신 블록(예를 들어, 11a, 12a)을 통한 통신 방식의 경우, 상대적으로 적은 개수의 신호 라인들 또는 신호 핀들(예를 들어, I3C의 경우, 2개의 신호 라인들)을 사용하여 장치들 사이의 통신이 가능하나, 별도의 CPU 또는 소프트웨어의 개입을 필요로 한다. 반면에, GPIO 통신 블록(예를 들어, 11b, 12b)을 통한 통신 방식의 경우, 별도의 CPU 또는 소프트웨어의 개입 없이 장치들(또는 장치들 내부에 포함된 하드웨어 블록들) 사이의 통신이 가능하나, 통신을 위해 요구되는 신호 라인들 또는 신호 핀들의 개수가 증가한다.
도 2는 본 발명의 실시 예에 따른 전자 장치를 예시적으로 보여주는 블록도이다. 도 2를 참조하면, 전자 장치(100)는 마스터 장치(110) 및 슬레이브 장치(120)를 포함할 수 있다. 마스터 장치(110)는 전자 장치(100)가 포함된 사용자 장치(예를 들어, 모바일 장치, 스마트 폰, 개인용 PC, 자동차의 전장 시스템 등)의 제반 동작을 제어하도록 구성된 애플리케이션 프로세서와 같은 시스템 온 칩일 수 있다. 슬레이브 장치(120)는 가속도계, 광 센서, 근접 센서, 조도 센서, 지문 센서, 디스플레이 장치, 카메라 장치, 통신 장치 등과 같이 특정 기능을 수행하도록 구성된 전자 장치일 수 있다.
이하에서, 본 발명의 기술적 사상을 용이하게 설명하기 위하여, 마스터 장치(110)의 구성 요소들을 기반으로 본 발명의 실시 예들이 설명된다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니며, 슬레이브 장치(120)에 포함된 구성 요소들은 마스터 장치(110)에 포함된 구성 요소들과 유사하게 동작할 수 있다.
이하에서, 본 발명의 기술적 사상을 용이하게 설명하기 위하여, 마스터 장치(110) 및 슬레이브 장치(120) 사이의 통신은 MIPI 연합에 의해 정의된 I3C 프로토콜을 기반으로 수행되는 것으로 설명되나, 본 발명의 범위가 이에 한정되는 것은 아니다. 예를 들어, 마스터 장치(110) 및 슬레이브 장치(120)는, I3C, I2C, UART, SPMI 등과 같은 다양한 통신 프로토콜을 기반으로, 가상화된 하드웨어 신호들(즉, 가상 GPIO 페이로드 또는 다른 가상화 정보)를 서로 통신할 수 있다.
마스터 장치(110)는 메인 중앙 처리부(111)(Main CPU; Main Central Processing Unit), 하드웨어 기능 블록(112), 가상 GPIO 유한 상태 머신(113)(VGI FSM; virtual General-Purpose Input/Output Finite State Machine), 및 I3C 마스터 블록 (114)을 포함할 수 있다.
메인 CPU(111)는 마스터 장치(111)의 제반 동작을 제어할 수 있고, 마스터 장치(111) 상에서 구동되는 다양한 애플리케이션들을 실행할 수 있다. 메인 CPU(111)는 가상 GPIO 유한 상태 머신(113)에 특정 정보를 마스킹하도록 구성될 수 있다. 예를 들어, 메인 CPU(111)는 하드웨어 기능 블록(112)에 의해 사용되거나 또는 정의된 신호들의 종류를 가리키는 마스킹 정보를 설정할 수 있다. 예시적인 실시 예에서, 마스킹 정보는 마스터 장치(110)의 초기 동작에서 설정되거나 또는 마스터 장치(110)의 구동 중에 설정 또는 변경될 수 있다. 예시적인 실시 예에서, 마스킹 정보는 복수의 슬레이브 장치들 각각에 대한 정보를 포함할 수 있다.
하드웨어 기능 블록(112)은 특정 기능을 수행하도록 구성된 하드웨어 장치일 수 있다. 예를 들어, 하드웨어 기능 블록(112)은 특정 기능을 수행하도록 미리 구성된 재 이용 가능한 기능 블록을 가리키는 IP(intellectual Property) 블록일 수 있다. 즉, 하드웨어 기능 블록(112)은 프로세싱 유닛, SRAM, ROM, 마이크로 컨트롤러 등과 같이 특정 기능을 수행하도록 구성된 하드웨어 구성을 가리킬 수 있다. 예시적인 실시 예에서, 하드웨어 기능 블록(112)은 메인 CPU(111)와 독립적으로 동작할 수 있다.
이하에서, 설명의 편의 및 도면의 간결성을 위하여, 마스터 장치 및 슬레이브 장치는 각각 하나의 하드웨어 기능 블록을 포함하는 것으로 가정한다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니며, 마스터 장치(110)는 하나 또는 그 이상의 하드웨어 기능 블록들을 포함할 수 있고, 하나 또는 그 이상의 하드웨어 기능 블록들 각각은 서로 다른 특정 기능을 수행하거나 또는 서로 다른 슬레이브 장치들과 통신하도록 구성될 수 있다.
가상 GPIO 유한 상태 머신(113)(이하에서, "VGI FSM"이라 칭함.)은 하드웨어 기능 블록(112)에 대응하는 하드웨어 신호들(HWS)을 가상화하여 가상 GPIO 페이로드(VGI-PLD)를 생성하거나 또는 가상 GPIO 페이로드(VGI-PLD)를 하드웨어 신호들(HWS)로 변환하도록 구성될 수 있다. 예를 들어, 하드웨어 기능 블록(112)은 GPIO 통신 방식을 기반으로 슬레이브 장치(120)의 하드웨어 기능 블록(122)과 통신하도록 구성될 수 있다. 즉, 하드웨어 기능 블록(112)은 슬레이브 장치(120)의 하드웨어 기능 블록(122)과 통신하기 위한 GPIO에 기반된 복수의 하드웨어 신호들(HWS)을 출력할 수 있다. 복수의 하드웨어 신호들(HWS)은 VGI FSM(113)으로 제공될 수 있다. VGI FSM(113)은 하드웨어 기능 블록(112)으로부터 제공된 복수의 하드웨어 신호들(HWS)을 가상화하여 가상 GPIO 페이로드(VGI-PLD)를 생성할 수 있다. 생성된 가상 GPIO 페이로드(VGI-PLD)는 I3C 마스터 블록(114)으로 제공될 수 있다.
I3C 마스터 블록(114)은 가상 GPIO FSM(113)으로부터 생성된 가상 GPIO 페이로드(VGI-PLD)를 I3C 버스(I3C-BUS)(예를 들어, 직렬 데이터 라인(SDA) 및 직렬 클럭 라인(SCL))을 통해 슬레이브 장치(120)로 전송할 수 있다.
슬레이브 장치(120)는 I3C 슬레이브 블록(124), 가상 GPIO FSM(123) 및 하드웨어 기능 블록(122)을 포함할 수 있다. I3C 슬레이브 블록(124)은 I3C 버스(예를 들어, SDA 및 SCL)을 통해 가상 GPIO 페이로드(VGI-PLD)를 수신하고, 수신된 가상 GPIO 페이로드(VGI-PLD)를 가상 GPIO FSM(123)으로 전달할 수 있다. 가상 GPIO FSM(123)은 가상 GPIO 페이로드(VGI-PLD)를 하드웨어 기능 블록(122)에서 인식 가능한 하드웨어 신호들(HWS)로 변환하고, 변환된 하드웨어 신호들(HWS)을 하드웨어 기능 블록(122)으로 전달할 수 있다.
상술된 바와 같이, 본 발명의 실시 예에 따르면, 마스터 장치(110) 및 슬레이브 장치(120) 각각의 하드웨어 기능 블록들(112, 122) 사이의 통신에서 하드웨어 신호들(HWS)을 가상화하여 가상 GPIO 페이로드(VGI-PLD)를 생성하고, I3C 버스(예를 들어, SDA 및 SCL)을 통해 가상 GPIO 페이로드(VGI-PLD)를 송수신할 수 있다. 이 경우, 하드웨어 기능 블록들(112, 122)은, 메인 CPU(111) 또는 별도의 소프트웨어의 개입 없이, I3C 버스(I3C-BUS)를 통해 GPIO에 기반된 데이터, 신호, 또는 정보를 서로 통신할 수 있다.
예를 들어, 하드웨어 기능 블록들(112, 122)이 서로 복수의 하드웨어 신호들(HWS)을 송수신하기 위해서는, 도 1b에 도시된 바와 같이 복수의 신호 라인들(SIGs)(즉, 물리적 신호 라인들)을 필요로 한다. 반면에, 도 2에 도시된 바와 같이, 하드웨어 기능 블록(112)로부터 제공된 복수의 하드웨어 신호들(HWS)을 가상화하여 가상 GPIO 페이로드(VGI-PLD)를 생성하고, 생성된 가상 GPIO 페이로드(VGI-PLD)를 I3C 버스(예를 들어, SDA 및 SCL)을 통해 송수신함으로써, 하드웨어 신호들을 송수신하기 위한 물리적 신호 라인들이 가상화될 수 있다. (즉, GPIO 인터페이스가 가상화됨.) 따라서, 메인 CPU(111) 또는 별도의 소프트웨어의 개입 없이, 하드웨어 기능 블록들(112, 122) 사이에서 하드웨어 신호들(HWS)이 I3C 버스(SDA 및 SCL)을 통해 송수신될 수 있다. 따라서, 감소된 비용 및 향상된 성능을 갖는 반도체 집적 회로가 제공된다.
도 3은 도 2의 마스터 장치의 구성을 예시적으로 보여주는 블록도이다. 도 4a 및 도 4b는 도 3의 마스터 장치의 동작을 예시적으로 보여주는 순서도들이다. 예시적인 실시 예에서, 도 3을 참조하여 마스터 장치(110)의 실시 예가 설명되나, 본 발명의 범위가 이에 한정되는 것은 아니며, 슬레이브 장치(120)는 마스터 장치(110)와 유사한 구성을 포함할 수 있다.
도 2 및 도 3을 참조하면, 마스터 장치(110)는 메인 CPU(111), 하드웨어 기능 블록(112), VGI FSM(113), 및 I3C 마스터 블록(114)을 포함할 수 있다. VGI FSM(113)은 VGI 레지스터(vgi-SFR), 수신부(RX), 전송부(TX), 및 가상 GPIO 싱크 로직(113a)(이하에서, "VGI 싱크 로직"이라 칭함.)을 포함할 수 있다. I3C 마스터 블록(114)은 가상 GPIO 수신 버퍼(vgi-rx-buf), 가상 GPIO 전송 버퍼(vgi-tx-buf), 및 시리얼라이저/디시리얼라이저(114a)(이하에서, "SER/DES"라 칭함.)을 포함할 수 있다.
이하에서, 도 2, 도 3, 및 도 4a를 참조하여, 가상 GPIO 페이로드(VGI-PLD)가 I3C 버스(I3C-BUS)를 통해 마스터 장치(110)로부터 슬레이브 장치(120)로 전송되는 실시 예가 설명된다.
도 2, 도 3, 및 도 4a를 참조하면, S111 단계에서, 마스터 장치(110)는 VGI 레지스터(vgi-SRF)를 설정할 수 있다. 예를 들어, 메인 CPU(111)는 VGI FSM(113)에 포함된 가상 GPIO 특정 기능 레지스터(vgi-SFR; virtual General-Purpose Input/Output Specific Function Register)(이하에서, "VGI 레지스터"라 칭함.)를 설정할 수 있다. 메인 CPU(111)는 하드웨어 기능 블록(112)으로부터 제공되는 하드웨어 신호들(HWS)에 대한 마스킹 정보를 VGI 레지스터(vgi-SFR)에 설정할 수 있다. 예시적인 실시 예에서, 마스킹 정보는 마스터 장치(110) 및 슬레이브 장치(120) 사이에 미리 정해진 정보일 수 있다.
S112 단계에서, 마스터 장치(110)는 하드웨어 신호들(HWS)을 수신부(RX)로 전송할 수 있다. 예를 들어, 하드웨어 기능 블록(112)은 하드웨어 신호들(HWS)을 VGI FSM(113)의 수신부(RX)로 전송할 수 있다. 예시적인 실시 예에서, 하드웨어 신호들(HWS)은 GPIO 통신 방식에 기반된 신호들일 수 있다.
S113 단계에서, 마스터 장치(110)는 수신부(RX)를 기반으로 가상 GPIO 페이로드(VGI-PLD)를 생성할 수 있다. 예를 들어, VGI 싱크 로직(113a)은 수신부(RX)에서 수신된 하드웨어 신호들(HWS)을 기반으로 가상 GPIO 페이로드(VGI-PLD)를 생성할 수 있다. VGI 싱크 로직(113a)은 수신부(RX)에서 수신된 하드웨어 신호들(HWS)을 미리 정해진 순서로 변환함으로써, 가상 GPIO 페이로드(VGI-PLD)를 생성할 수 있다. 예시적인 실시 예에서, 미리 정해진 순서는 슬레이브 장치(120)의 VGI FSM(123)과 동기된 순서(즉, 슬레이브 장치(120)의 VGI FSM(123)에 알려진 순서)일 수 있다.
예시적인 실시 예에서, VGI 싱크 로직(113a)은 정해진 시간 간격(predefined interval)으로, 수신부(RX)의 신호 변화를 지속적으로 감시할 수 있다. 신호 변화가 감지된 경우, VGI 싱크 로직(113a)은 신호 변화를 기반으로 가상 GPIO 페이로드(VGI-PLD)를 생성할 수 있다. 예시적인 실시 예에서, 수신부(RX)의 신호 라인들 중 일부가 변경된 경우, VGI 싱크 로직(113a)은 변화한 신호에 대한 정보만 가상 GPIO 전송 버퍼(vgi-tx-buf)로 기입할 수 있다.
S114 단계에서, 마스터 장치(114)는 가상 GPIO 페이로드(VGI-PLD)를 가상 GPIO 전송 버퍼(vgi-tx-buf)로 전송할 수 있다. 예를 들어, VGI FSM(113)은 생성된 가상 GPIO 페이로드(VGI-PLD)를 가상 GPIO 전송 버퍼(vgi-tx-buf)로 전송하고, 가상 GPIO 전송 버퍼(vgi-tx-buf)는 가상 GPIO 페이로드(VGI-PLD)를 임시 저장할 수 있다.
S115 단계에서, 마스터 장치(110)는 가상 GPIO 페이로드(VGI-PLD)를 직렬화하여 I3C 버스(I3C-BUS)(즉, SDA 및 SCL)을 통해 출력할 수 있다. 예를 들어, SER/DES(114a)는 가상 GPIO 전송 버퍼(vgi-tx-buf)에 임시 저장된 가상 GPIO 페이로드(VGI-PLD)를 직렬화하여, I3C 버스(I3C-BUS)(즉, 직렬 데이터 라인(SDA) 및 직렬 클럭 라인(SCL))를 통해 출력할 수 있다.
상술된 바와 같이, 마스터 장치(110)는 하드웨어 기능 블록(112)으로부터의 GPIO 기반의 하드웨어 신호들(HWS)을 가상화하여 가상 GPIO 페이로드(VGI-PLD)를 생성하고, 생성된 가상 GPIO 페이로드(VGI-PLD)를 I3C 버스(I3C-BUS)를 통해 슬레이브 장치(120)로 전송할 수 있다. 즉, 감소된 신호 라인들 또는 감소된 신호 핀들을 사용하여, GPIO 통신 방식에 기반된 하드웨어 신호들이 전송될 수 있다.
다음으로, 도 2, 도 3, 및 도 4b를 참조하여, 가상 GPIO 페이로드(VGI-PLD)가 I3C 버스(I3C-BUS)를 통해 슬레이브 장치(120)로부터 마스터 장치(110)로 수신되는 실시 예가 설명된다.
도 2, 도 3, 및 도 4b를 참조하면, S121 단계에서, 마스터 장치(110)는 I3C 버스(I3C-BUS)를 통해 가상 GPIO 페이로드(VGI-PLD)를 수신할 수 있다. 예를 들어, I3C 마스터 블록(114)의 SER/DES(114a)는 I3C 버스(I3C-BUS)를 통해 가상 GPIO 페이로드(VGI-PLD)를 수신할 수 있다. 예시적인 실시 예에서, 가상 GPIO 페이로드(VGI-PLD)는 I3C 프로토콜에 기반된 인-밴드-인터럽트(IBI; In-Band Interrupt) 방식을 기반으로 수신될 수 있다. 수신된 가상 GPIO 페이로드(VGI-PLD)는 가상 GPIO 수신 버퍼(vgi-rx-buf)에 임시 저장될 수 있다.
S122 단계에서, 마스터 장치(110)는 가상 GPIO 페이로드(VGI-PLD)를 하드웨어 신호들(HWS)로 변환할 수 있다. 예를 들어, VGI FSM(113)의 VGI 싱크 로직(113a)은 가상 GPIO 수신 버퍼(vgi-rx-buf)에 임시 저장된 가상 GPIO 페이로드(VGI-PLD)를 하드웨어 기능 블록(112)에서 인식 가능한 하드웨어 신호들(HWS)로 변환할 수 있다.
S123 단계에서, 마스터 장치(110)는 하드웨어 신호들(HWS)을 하드웨어 기능 블록(112)으로 전송할 수 있다.
상술된 바와 같이, 마스터 장치(110)는 I3C 버스(I3C-BUS)를 통해 가상 GPIO 페이로드(VGI-PLD)를 수신하고, 수신된 가상 GPIO 페이로드(VGI-PLD)를 GPIO 통신 방식에 기반된 하드웨어 신호들(HWS)로 변환할 수 있다. 변환된 하드웨어 신호들(HWS)은 하드웨어 기능 블록들(112)로 제공되고, 하드웨어 기능 블록들(112)은 수신된 하드웨어 신호들(112)에 응답하여 대응하는 동작을 수행할 수 있다.
비록 도면에 도시되지는 않았으나, 슬레이브 장치(120)는 상술된 마스터 장치(110)의 동작과 유사한 방식으로 동작할 수 있다.
도 5는 본 발명의 실시 예에 따른 전자 장치를 보여주는 블록도이다. 도 6은 도 5의 마스터 장치를 예시적으로 보여주는 블록도이다. 도 5 및 도 6을 참조하면, 전자 장치(200)는 마스터 장치(210) 및 슬레이브 장치(220)를 포함할 수 있다. 마스터 장치(210)는 메인 CPU(211), 하드웨어 기능 블록(212), VGI FSM(213), 및 I3C 마스터 블록(214)을 포함할 수 있다. 슬레이브 장치(220)는 하드웨어 기능 블록(222), VGI-FSM(223), 및 I3C 슬레이브 블록(224)을 포함할 수 있다. 도 6에 도시된 바와 같이, VGI FSM(213)은 VGI 레지스터(VGI-SFR), 수신부(RX), 전송부(TX), 및 VGI 싱크 로직(213a)을 포함할 수 있다. 상술된 마스터 장치(210), 슬레이브 장치(220), 및 각각의 구성 요소들은 앞서 설명되었으므로, 이에 대한 상세한 설명은 생략된다.
도 5 및 도 6에 도시된 바와 같이, I3C 마스터 블록(214) 및 I3C 슬레이브 블록(224)은 각각 아비터들(214b, 224b)을 더 포함할 수 있다. 아비터들(214b, 224b) 각각은 I3C 기반의 통신 및 GPIO 기반의 통신을 중재하도록 구성될 수 있다.
예를 들어, 도 6에 도시된 바와 같이, I3C 마스터 블록(214)은 I3C 수신 버퍼(I3C-rx-buf), I3C 전송 버퍼(I3C-tx-buf), 가상 GPIO 수신 버퍼(vgi-rx-buf), 가상 GPIO 전송 버퍼(vgi-tx-buf), I3C 큐(I3C-q), 가상 GPIO 큐(vgi-q), SER/DES(214a), 및 아비터(214b)를 포함할 수 있다.
I3C 수신 버퍼(I3C-rx-buf), I3C 전송 버퍼(I3C-tx-buf), I3C 큐(I3C-q), 가상 GPIO 큐(vgi-q) 및 아비터(214b)를 제외한 나머지 구성 요소들은 앞서 설명되었으므로, 이에 대한 상세한 설명은 생략된다.
I3C 마스터 블록(214)은 메인 CPU(211)의 제어에 따라, 슬레이브 장치(220)와 I3C 기반의 통신을 수행할 수 있다. 또는 I3C 마스터 블록(214)은 메인 CPU(211)의 직접적인 개입 없이, I3C 버스(I3C-BUS)를 통해 슬레이브 장치(220)와 GPIO 기반의 통신(즉, 가상 GPIO 페이로드(VGI-PLD)의 송수신)을 수행할 수 있다. 아비터(214b)는 메인 CPU(211)의 제어에 따른 I3C 기반의 통신(이하에서, I3C 통신이라 칭함.) 및 I3C 버스(I3C-BUS)를 통한 GPIO 기반의 통신(이하에서, "가상 GPIO 통신"이라 칭함.) 사이를 중재함으로써, I3C 통신에 의한 통신 고갈(Starvation)을 방지할 수 있다.
예를 들어, I3C 수신 버퍼(I3C-rx-buf) 및 I3C 전송 버퍼(I3C-tx-buf)는 I3C 통신을 위하여 메인 CPU(211)에 의해 설정될 수 있다. 즉, I3C 통신을 수행하기 위한 정보가 메인 CPU(211)에 의해 I3C 전송 버퍼(I3C-tx-buf)에 기입되거나 또는 I3C 통신을 통해 수신된 정보가 I3C 수신 버퍼(I3C-rx-buf)에 기입될 수 있다. I3C 수신 버퍼(I3C-rx-buf) 및 I3C 전송 버퍼(I3C-tx-buf)를 기반으로 I3C 큐(I3C-q)가 설정될 수 있다.
예시적인 실시 예에서, I3C 수신 버퍼(I3C-rx-buf) 및 I3C 전송 버퍼(I3C-tx-buf)는 데이터 수신 버퍼, 데이터 전송 버퍼, 인터럽트 수신 버퍼, 인터럽트 전송 버퍼 등을 포함할 수 있고, I3C 큐(I3C-q)는 명령 큐, 응답 큐, 인터럽트 큐 등을 포함할 수 있다.
가상 GPIO 큐(vgi-q)는 VGI FSM(213)에 의해 설정될 수 있다. 예를 들어, VGI FSM(213)이 가상 GPIO 페이로드(VGI-PLD)를 생성한 경우, VGI FSM(213)은 생성된 가상 GPIO 페이로드(VGI-PLD)를 가상 GPIO 전송 버퍼(vgi-tx-buf)에 기입하고, 가상 GPIO 큐(vgi-q)를 설정할 수 있다.
아비터(214b)는 I3C 큐(I3C_q) 및 가상 GPIO 큐(vgi-q)를 기반으로 대응하는 통신이 수행되도록 중재 동작을 수행할 수 있다. 예를 들어, I3C 큐(I3C_q)가 설정된 경우(즉, 메인 CPU(211)에 의한 I3C 통신이 요구되는 경우), 아비터(214b)는 I3C 수신 버퍼(I3C-rx-buf) 또는 I3C 전송 버퍼(I3C-tx-buf)를 기반으로, I3C 버스(I3C-BUS)를 통해 슬레이브 장치(220)와 I3C 통신을 수행할 수 있다. I3C 큐(I3C_q)가 설정되지 않고, 가상 GPIO 큐(vgi-q)가 설정된 경우(즉, 하드웨어 기능 블록(212)에 의한 GPIO 통신(또는 가상 GPIO 통신)이 요구되는 경우), 아비터(214b)는 가상 GPIO 수신 버퍼(vgi-rx-buf) 및 가상 GPIO 전송 버퍼(vgi-tx-buf)를 기반으로 I3C 버스(I3C-BUS)를 통해 가상 GPIO 통신을 수행할 수 있다.
예시적인 실시 예에서, I3C 큐(I3C-q) 및 가상 GPIO 큐(vgi-q) 각각에 포함된 동작들 사이의 우선 순위는 다양하게 설정될 수 있다. 예를 들어, 가상 GPIO 큐(vgi-q)에 포함된 가상 GPIO 전송 동작은 I3C 큐(I3C-q)에 포함된 인-밴드-인터럽트(IBI; In-Band Interrupt) 동작보다 높은 우선 순위를 가질 수 있고, I3C 큐(I3C-q)에 포함된 I3C 마스터 전송 동작보다 낮은 우선 순위를 가질 수 있다.
SER/DES(214a)는 아비터(214b)에 의해 중재된 통신 방식에 대응하는 버퍼들을 기반으로 I3C 버스(I3C-BUS)를 통해 대응하는 신호를 송수신할 수 있다.
예시적인 실시 예에서, 메인 CPU(211)에 의해 I3C 통신이 계속적으로 수행되는 경우, 가상 GPIO 통신이 수행되지 않을 수 있다. 이 경우, 마스터 장치(210)의 하드웨어 기능 블록(212)은 슬레이브 장치(210)의 하드웨어 기능 블록(222)과 정상적으로 통신하지 못할 수 있다. 아비터(214b)는 상술된 바와 같이, I3C 통신의 우선 순위 및 가상 GPIO 통신의 우선 순위를 다르게 설정하고, 설정된 우선 순위에 따라 I3C 통신 및 가상 GPIO 통신을 순차적으로 또는 임의로 수행할 수 있다. 예시적인 실시 예에서, 가상 GPIO 큐(vgi-q)에 설정된 가상 GPIO 동작의 개수 또는 크기가 기준치 이상인 경우, 아비터(214b)는 가상 GPIO 통신을 우선적으로 수행하도록 구성될 수 있다.
도 7a 및 도 7b는 도 6의 마스터 장치의 동작을 예시적으로 보여주는 순서도들이다. 도 6 및 도 7a를 참조하면, 마스터 장치(210)는 S210 단계 내지 S230 단계의 동작들을 수행할 수 있다. S210 단계 내지 S230 단계의 동작들은 도 4a의 S111 단계 내지 S113 단계의 동작들과 유사하므로, 이에 대한 상세한 설명은 생략된다.
S240 단계에서, 마스터 장치(210)는 가상 GPIO 페이로드(VGI-PLD)를 가상 GPIO 전송 버퍼(vgi-tx-buf)로 전송하고, 가상 GPIO 페이로드(VGI-PLD)에 대한 큐를 가상 GPIO 큐(vgi-q)에 설정할 수 있다.
S250 단계에서, 마스터 장치(210)는 가상 GPIO 큐(vgi-q) 및 I3C 큐(I3C-q)를 기반으로 가상 GPIO 페이로드(VGI-PLD)의 전송을 처리할 수 있다. 예를 들어, 아비터(214b)는 가상 GPIO 큐(vgi-q) 및 I3C 큐(I3C-q)에 포함된 동작들의 우선 순위를 기반으로 I3C 통신 또는 가상 GPIO 통신을 수행할 수 있다.
상술된 바와 같이, 본 발명의 실시 예에 따르면, I3C 마스터 블록(210)은 메인 CPU(211)의 제어에 따라 I3C 통신을 수행하거나 또는 VGI FSM(213)으로부터 생성된 가상 GPIO 페이로드(VGI-PLD)를 기반으로 가상 GPIO 통신을 수행할 수 있다. 이 때, I3C 마스터 블록(214)의 아비터(214b)는 I3C 통신에 의한 통신 고갈이 발생하지 않도록, I3C 큐(I3C-q) 및 가상 GPIO 큐(vgi-q)를 기반으로 I3C 통신 및 가상 GPIO 통신을 중재하도록 구성될 수 있다.
예시적인 실시 예에서, 가상 GPIO 페이로드(VGI-PLD)가 연속적으로 변경되는 경우, 가상 GPIO 큐(vgi-q)가 가득(full) 찰 수 있다. 이 경우, 가상 GPIO 페이로드(VGI-PLD)가 정상적으로 송수신되지 않을 수 있다. 이를 방지하기 위하여, VGI FSM(213)은 미리 정해진 시간 간격(predefined interval)마다 가상 GPIO 큐(vgi-q)를 설정하도록 구성될 수 있다.
예를 들어, 도 7b에 도시된 바와 같이, 마스터 장치(210)는 S220 단계 이후에, S231 단계 내지 S234 단계의 동작을 수행할 수 있다. S231 단계 내지 S234 단계의 동작들은 도 7a의 S230 단계의 동작에 포함될 수 있다.
S231 단계에서, 마스터 장치(210)는 하드웨어 신호들(HWS) 중 적어도 하나가 변경되었는지 판별할 수 있다. 예를 들어, 도 4a를 참조하여 설명된 바와 같이, VGI 싱크 로직(213a)은 수신부(RX)를 통해 제공되는 하드웨어 신호들(HWS)을 감시(monitoring)할 수 있다. 하드웨어 신호들(HSW)이 변경되지 않은 경우, 마스터 장치(210)는 S210 단계의 동작을 반복할 수 있다.
하드웨어 신호들(HWS) 중 적어도 일부가 변경된 경우, S232 단계에서, 마스터 장치(210)는 변경된 하드웨어 신호들에 대한 정보를 누적할 수 있다. 예를 들어, 복수의 하드웨어 신호들(HWS) 중 제1 GPIO와 대응되는 신호가 변경된 경우, VGI 싱크 로직(213a)은 제1 GPIO에 대응되는 정보를 변경시킬 수 있다.
S233 단계에서, 마스터 장치(210)는 미리 정해진 시간 구간(predefined interval)이 경과했는지 판별할 수 있다. 예를 들어, 미리 정해진 시간 구간은 가상 GPIO 큐(vgi-q)를 설정하는 시간 간격을 가리킬 수 있다. 미리 정해진 시간 구간은 다양하게 설정될 수 있다. 예를 들어, 미리 정해진 시간 구간은 0 내지 160us 범위에서 5us 간격으로 결정될 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다. 예시적인 실시 예에서, 이전에 또는 직전에 가상 GPIO 큐(vgi-q)가 설정된 시점으로부터 미리 정해진 시간 구간이 경과했는지 여부가 판별될 수 있다.
미리 정해진 시간 구간이 경과하지 않은 경우, 마스터 장치(210)는 S231 단계의 동작을 계속할 수 있다.
미리 정해진 시간 구간이 경과한 경우, S234 단계에서, 마스터 장치(210)는 누적된 정보를 기반으로 가상 GPIO 페이로드(VGI-PLD)를 생성할 수 있다. 예를 들어, 앞서 설명된 바와 같이, 누적된 정보는 변경된 신호들에 대한 정보를 포함한다. VGI FSM(213)은 변경된 신호들을 기반으로 가상 GPIO 페이로드(VGI-PLD)를 생성할 수 있다.
이후에, 생성된 가상 GPIO 페이로드(VGI-PLD)는 가상 GPIO 전송 버퍼(vgi-tx-buf)에 저장되고, 가상 GPIO 큐(vgi-q)가 설정될 수 있다.
상술된 바와 같이, 가상 GPIO 큐(vgi-q)가 미리 정해진 시간 구간의 간격으로 설정됨으로써, 연속적으로 하드웨어 신호가 변경되는 상황에서 가상 GPIO 큐(vgi-q)가 정상적으로 유지될 수 있다.
도 8a 내지 도 8c는 도 6의 마스터 장치(210)의 가상 GPIO 통신의 전송 경로 및 수신 경로를 설명하기 위한 예시적인 도면들이다. 이하에서, 도면의 간결성 및 설명의 편의를 위하여 각 실시 예를 설명하는데 불필요한 구성 요소들은 생략된다. 예시적인 실시 예에서, 도 8a 내지 도 8c에 도시된 구성 요소들은 본 발명의 실시 예에 따른 가상 GPIO 통신의 전송 및 수신의 개념을 설명하기 위한 것이다. 즉, 도 8a 내지 도 8c에 도시된 구성 요소들은 앞서 설명된 구성 요소들과 다르게 표현되거나 다른게 설명될 수 있으나, 각각은 실질적으로 유사한 기능을 수행하는 것으로 이해될 것이다.
먼저, 도 6 및 도 8a를 참조하면, 메인 CPU(211)는 시스템 버스(APB)를 통해 I3C 큐(I3C-q)에 커맨드(cmd) 및 슬래이브 장치에 대한 어드레스(addr)를 설정할 수 있고, I3C 전송 버퍼(I3C-tx-buf)에 전송될 정보(즉, 페이로드(PLD))를 설정할 수 있다. 예시적인 실시 예에서, 시스템 버스(APB)는 도 6에서 도시되지 않았으나, 시스템 버스(APB)는 마스터 장치(210)의 각 구성 요소들 사이의 신호 전달 또는 통신을 위해 사용될 수 있다.
VGI 전송 유닛(VGI-TX)은 앞서 설명된 VGI 싱크 로직(213a) 및 가상 GPIO 전송 버퍼(vgi-tx-buf)의 기능을 수행하도록 구성될 수 있다. 예를 들어, VGI 전송 유닛(VGI-TX)은 수신부(RX)로부터의 하드웨어 신호(HWS)의 변화를 감지하여, 가상 GPIO 페이로드(VGI-PLD)를 생성할 수 있다. VGI 전송 유닛(VGI-TX)은 흐름 제어기(FC)의 제어에 따라 가상 GPIO 페이로드(VGI-PLD)를 멀티플렉서(MUX)로 제공할 수 있다. 예를 들어, 수신부(RX)로부터의 수신부(RX)로부터의 하드웨어 신호(HWS)의 변화가 감지된 경우, VGI 싱크 로직(213a)은 흐름 제어기(FC)로 요청 신호(req)를 제공할 수 있다. 흐름 제어기(FC)는 요청 신호(req)에 응답하여 확인 신호(ack)를 VGI 싱크 로직(213a)으로 제공할 수 있다. VGI 싱크 로직(213a)은 확인 신호(ack)에 응답하여 하드웨어 신호들(HWS) 중 변화된 신호에 대응하는 값을 가상 GPIO 페이로드(VGI-PLD)로서 설정하도록 구성될 수 있다(즉, 가상 GPIO 전송 버퍼(vgi-tx-buf)의 기능). 이후에, VGI 전송 유닛(VGI-TX)은 흐름 제어기(FC)의 완료 신호(done)에 응답하여, 가상 GPIO 페이로드(VGI-PLD)를 멀티플렉서(MUX)로 전송할 수 있다.
멀티 플렉서(MUX)는 I3C 큐(I3C-q)로부터 커맨드(cmd) 및 어드레스(addr)를 수신하고, I3C 전송 버퍼(I3C-tx-buf)로부터 페이로드(PLD)를 수신하고, VGI 전송 유닛(VGI-TX)으로부터 가상 GPIO 페이로드(VGI-PLD)를 수신할 수 있다. 멀티 플렉서(MUX)는 흐름 제어기(FC)의 제어에 따라 수신된 신호들을 직렬화하여 직렬 데이터 라인(SDA)으로 출력할 수 있다.
예시적인 실시 예에서, 멀티플렉서(MUX)로부터 가상 GPIO 페이로드(VGI-PLD)가 출력되는 경우, 공통 커맨드 코드(CCC)를 사용할 수 있다. 공통 커맨드 코드(CCC)는 마스터 장치(210)가 연결된 모든 또는 일부 슬레이브 장치들로 통신(또는 방송(broadcasting))하는데 사용될 수 있다. 슬레이브 장치들은 공통 커맨드 코드(CCC)를 인식함으로써, 가상 GPIO 페이로드(VGI-PLD)를 수신할 수 있다. 예시적인 실시 예에서, 공통 커맨드 코드(CCC)는 VGI 레지스터(vgi-SFR)에서 정의될 수 있다.
예시적인 실시 예에서, 요청 신호(req)가 전송된 시점으로부터 확인 신호(ack)가 수신된 시점까지의 하드웨어 신호(HWS)의 변화는 무시될 수 있다.
상술된 바와 같이, 마스터 장치(210)는 하드웨어 신호(HWS)의 변화를 감지하고, 이를 기반으로 가상 GPIO 페이로드(VGI-PLD)를 생성하고, 이를 기반으로 가상 GPIO 통신을 수행하도록 구성될 수 있다.
다음으로, 도 6 및 도 8b를 참조하면, 슬레이드 장치(220)로부터 인-밴드-인터럽트(IBI)가 수신될 수 있다. 인-밴드-인터럽트(IBI)의 정보는 슬레이브 선택 신호(SL_SEL)과 조합되어 I3C 큐(I3C-q)(좀 더 상세하게는 인-밴드-인터럽트 큐)에는 슬레이브 어드레스(addr)가 저장되고, I3C 수신 버퍼(I3C-rx-buf)(좀 더 상세하게는 인-밴드-인터럽트 수신 버퍼)에는 페이로드(PLD)가 저장될 수 있다.
예시적인 실시 에에서, 슬레이브 선택 신호(SL_SEL)는 슬레이브 장치(220)를 구분하기 위한 VGI 레지스터(vgi-SFR)의 값 및 인-밴드-인터럽트(IBI)를 I3C 큐(I3C-q) 및 I3C 수신 버퍼(I3C-rx-buf)에 저장하기 위한 설정 값의 조합으로 결정될 수 있다.
예시적인 실시 예에서, 슬레이브 장치(220)로부터의 인-밴드-인터럽트(IBI)는 가상 GPIO 수신 버퍼(vgi-rx-buf)로 제공되고, 가상 GPIO 수신 버퍼(vgi-rx-buf)은 수신된 정보를 버퍼링하여 가상 GPIO 페이로드(VGI-PLD)를 출력할 수 있다.
예를 들어, 가상 GPIO 수신 버퍼(vgi-rx-buf)에 포함된 디멀티플렉서(DMUX)는 선택 신호(SEL)에 응답하여, 슬레이브 장치(220)로부터 수신된 신호(즉, 인-밴드-인터럽트 신호(IBI)) 및 제2 XOR 게이트(XOR2)의 출력단의 신호 중 어느 하나를 출력하도록 구성될 수 있다.
제1 XOR 게이트(XOR1)는 디멀티플렉서(DMUX)의 출력 값 및 가상 GPIO 초기 값(vgi-int)에 대한 XOR 연산의 결과 값을 출력할 수 있다. 제1 XOR 게이트(XOR1)의 결과 값은 플립-플롭(F/F)에 저장될 수 있다. 제2 XOR 게이트(XOR2)는 플립-플롭(F/F)에 저장된 값 및 가상 GPIO 초기 값(vgi-int)에 대한 XOR 연산의 결과 값을 가상 GPIO 페이로드(VGI-PLD)로서 출력할 수 있다.
상술된 VGI 싱크 로직(213a)의 동작에 따르면, 최초 동작에서, 가상 GPIO 페이로드(VGI-PLD)는 가상 GPIO 초기 값(vgi-int)을 가질 것이다. 이후에, 선택 신호(SEL)에 의해 선택된 신호(즉, 인-밴드-인터럽트 신호(IBI))의 값이 변경된 경우, 가상 GPIO 페이로드(VGI-PLD)는 대응하는 값으로 변경될 것이다.
예시적인 실시 예에서, 선택 신호(SEL)는 VGI 레지스터(vgi-SFR)에 설정된 마스킹 정보, 초기에 설정된 마스킹 정보(예를 들어, OTP(one-time programmable) 데이터로서 설정된 마스킹 정보), 또는 그것들의 조합에 의해 결정될 수 있다.
상술된 바와 같이, VGI 싱크 로직(213a)은 슬레이브 장치(220)로부터의 인-밴드-인터럽트(IBI)를 기반으로 가상 GPIO 페이로드(VGI-PLD)를 수신하고, 수신된 가상 GPIO 페이로드(VGI-PLD)를 기반으로 GPIO에 기반된 하드웨어 신호들(HWS)을 생성할 수 있다.
다음으로, 도 6, 도 8b, 및 도 8c를 참조하여, 하나의 마스터 장치가 복수의 슬레이브 장치들과 가상 GPIO 통신을 수행하는 방법이 설명된다. 예를 들어, 마스킹 정보를 다수의 슬레이브 장치들 각각에 대하여 다르게 설정함으로써, 다수의 슬레이브 장치들 각각으로부터 제공되는 가상 GPIO 페이로드(VGI-PLD)를 다르게 지정할 수 있다.
예를 들어, 하나의 마스터 장치(210)가 3개의 슬레이브 장치들로부터 가상 GPIO 페이로드(VGI-PLD)를 수신하고, 가상 GPIO 페이로드(VGI-PLD)는 32-비트로 구성된 것으로 가정한다. 이 때, 비트[31:23]는 제1 슬레이브 장치를 위해 지정될 수 있고, 비트[23:15]는 제2 슬레이브 장치를 위해 지정될 수 있고, 비트[7:0]는 제3 슬레이브 장치를 위해 지정될 수 있다.
다시 말해서, 제1 슬레이브 장치로부터 수신된 신호들 중 비트[31:23]가 가상 GPIO 페이로드(VGI-PLD)의 비트[31:23]로 맵핑될 수 있고, 제2 슬레이브 장치로부터 수신된 신호들 중 비트[31:23]가 가상 GPIO 페이로드(VGI-PLD)의 비트[31:23]로 맵핑될 수 있고, 제3 슬레이브 장치로부터 수신된 신호들 중 비트[7:0]가 가상 GPIO 페이로드(VGI-PLD)의 비트[31:23]로 맵핑될 수 있다. 각각의 슬레이브 장치로부터 수신된 신호들이 조합됨으로써, 가상 GPIO 페이로드(VGI-PLD)가 생성될 수 있다.
이 경우, 제1 내지 제3 선택 신호들(SEL1~SEL3)이 상술된 비트 맵핑을 구현하도록 결정될 수 있다. 예를 들어, 제1 선택 신호(SEL1)는 제1 마스킹 정보(MS1) 및 제1 OTP 데이터(OTP1)의 조합으로 결정될 수 있고, 제2 선택 신호(SEL2)는 제2 마스킹 정보(MS2) 및 제2 OTP 데이터(OTP2)의 조합으로 결정될 수 있고, 제3 선택 신호(SEL3)는 제3 마스킹 정보(MS3) 및 제3 OTP 데이터(OTP3)의 조합으로 결정될 수 있다. 제1 내지 제3 마스킹 정보(MS1~MS3)는 각각 제1 내지 제3 슬레이브 장치들에 대하여 VGI 레지스터(vgi-SFR)에 설정된 값을 가리킬 수 있고, 제1 내지 제3 OTP 데이터(OTP1~OTP3)는 각각 제1 내지 제3 슬레이브 장치들에 대하여 미리 설정된 값을 가리킬 수 있다.
도 9는 본 발명의 실시 예에 따른 전자 장치를 보여주는 블록도이다. 도 9를 참조하면, 전자 장치(300)는 마스터 장치(310) 및 슬레이브 장치(320)를 포함할 수 있다. 마스터 장치(310)는 메인 CPU(311), 하드웨어 기능 블록(312), VGI FSM(313), I3C 마스터 블록(314), 및 관리 블록(315)을 포함할 수 있다. 슬레이브 장치(320)는 하드웨어 기능 블록(322), VGI FSM(323), I3C 슬레이브 블록(324), 및 관리 블록(325)을 포함할 수 있다.
앞서 설명된 바와 유사하게, 마스터 장치(310) 및 슬레이브 장치(320)는 I3C 버스(I3C-BUS)를 통해 메인 CPU(311)의 제어에 따른 I3C 통신 또는 메인 CPU(311) 또는 별도의 소프트웨어의 개입이 없는 가상 GPIO 통신을 수행할 수 있다. 상술된 동작을 수행하는 실시 예들은 앞서 설명되었으므로, 이에 대한 상세한 설명은 생략된다.
도 9의 마스터 장치(310) 및 슬레이브 장치(320)는 관리 블록들(315, 325)을 각각 포함할 수 있다. 관리 블록들(315, 325)은 각각 마스터 장치(310) 및 슬레이브 장치(320)의 전력 또는 통신을 관리하도록 구성될 수 있다.
예를 들어, 마스터 장치(310)가 슬립 모드(Sleep mode)인 경우, 마스터 장치(310)에 포함된 메인 CPU(311), 하드웨어 기능 블록(312), VGI FSM(313), 및 I3C 마스터 블록(314)으로 제공되는 전원 또는 클럭이 차단될 수 있다. 즉, 마스터 장치(310)가 슬립 모드인 경우, 마스터 장치(310)에 포함된 구성 요소들로 제공되는 전원 또는 클럭을 차단함으로써, 마스터 장치(310)가 저전력 모드로 유지될 수 있다. 예시적인 실시 예에서, 마스터 장치(310)가 슬립 모드인 경우, 관리 블록(315) 전체 또는 일부 구성 요소들은 온-상태를 유지할 수 있다. 즉, 관리 블록(315) 전체 또는 일부 구성 요소들은 상시-온 도메인에 포함될 수 있다.
마스터 장치(310)가 슬립 모드(Sleep mode)인 상태에서, 슬레이브 장치(320)로부터 가상 GPIO 페이로드(VGI-PLD)의 전송이 요청될 수 있다. 예를 들어, 슬레이브 장치(320)(특히, I3C 슬레이브 블록(324))는 마스터 장치(310)로 가상 GPIO 페이로드(VGI-PLD)를 전송하기 위하여, I3C 버스(I3C-BUS)의 직렬 데이터 라인(SDA)의 레벨을 로우로 풀-다운시킬 수 있다. 마스터 장치(310)의 관리 블록(315)은 직렬 데이터 라인(SDA)의 레벨(즉, 풀-다운된 로우 레벨)을 감지하고, 감지된 레벨에 응답하여, I3C 마스터 블록(314)으로 제1 클럭(CL1)을 제공할 수 있다. 예시적인 실시 예에서, 제1 클럭(CL1)은 관리 블록(315)에 포함된 RCO로부터 제공되는 클럭일 수 있다. RCO는 마스터 장치(310)가 슬립 모드이더라도 구동 상태를 유지할 수 있다.
I3C 마스터 블록(314)은 제1 클럭(CL1)을 기반으로 웨이크-업(Wake-up)될 수 있다. 웨이크-업된 I3C 마스터 블록(314)은 직렬 데이터 라인(SDA)의 레벨(즉, 풀-다운된 로우 레벨)을 감지하고, 감지된 레벨에 응답하여 이후의 후속 동작을 수행하여 슬레이브 장치(320)로부터 가상 GPIO 페이로드(VGI-PLD)를 수신할 수 있다.
예시적인 실시 예에서, 비록 도면에 명시적으로 도시되지는 않았으나, 관리 블록(315)은 직렬 데이터 라인(SDA)의 감지된 레벨(즉, 풀-다운된 로우 레벨)에 응답하여, 메인 클럭을 VGI FSM(313)으로 전송할 수 있다. VGI-FSM(313)은 메인 클럭에 응답하여 웨이크-업될 수 있다. 웨이크-업된 VGI-FSM(313)은 수신된 가상 GPIO 페이로드(VGI-PLD)를 하드웨어 신호들(HWS)로 변환할 수 있다.
예시적인 실시 예에서, 슬레이브 장치(320)로부터 수신된 신호가 외부 인터럽트 신호(EINT)를 포함하는 경우, VGI FSM(313)은 외부 인터럽트 신호(EINT)를 관리 블록(315)으로 제공할 수 있다. 관리 블록(315)은 외부 인터럽트 신호(EINT)에 응답하여, 마스터 장치(310) 전체를 웨이크-업시킬 수 있다. 예시적인 실시 예에서, 외부 인터럽트 신호(EINT)는 마스터 장치(310) 및 슬레이브 장치(320) 사이에 미리 정해진 순서의 적어도 하나의 비트와 대응될 수 있다. 외부 인터럽트 신호(EINT)의 순서에 대한 정보는 마스킹 정보로서 VGI 레지스터(vgi-SFR)에 저장 또는 설정될 수 있다.
상술된 바와 같이, 마스터 장치(210)의 슬립 모드에서, 슬레이브 장치(320)로부터의 데이터 수신이 요구되는 경우, 마스터 장치(210) 전체에 대한 웨이크-업 없이 슬레이브 장치(320)로부터 정보를 송수신할 수 있다. 따라서, 전자 장치(300)의 전력이 효율적으로 관리될 수 있다.
예시적인 실시 예에서, 슬레이브 장치(320)의 각 구성 요소들은 앞서 설명된 마스터 장치(310)의 각 구성 요소들과 유사하거나 또는 유사한 방식으로 동작할 수 있으므로, 이에 대한 상세한 설명은 생략된다.
도 10은 도 9의 마스터 장치의 관리 블록을 예시적으로 보여주는 블록도이다. 도면의 간결성을 위하여, 관리 블록(315)의 구성을 설명하는데 불필요한 구성 요소들은 생략된다. 도 9 및 도 10을 참조하면, 마스터 장치(310)는 VGI FSM(313), I3C 마스터 블록(314), 및 관리 블록(315)을 포함할 수 있다. 관리 블록(315)은 직렬 데이터 라인 검출부(SDA-DU; Serial Data Line-Detection Unit), 클럭 관리부(CMU; Clock Management Unit), 및 전원 관리부(PMU; Power Management Unit)를 포함할 수 있다.
마스터 장치(310)가 슬립 모드(Sleep mode)인 경우, 마스터 장치(310)의 구성 요소들 중 관리 블록(315)의 일부 구성 요소들을 제외한 나머지 구성 요소들로 제공되는 전원 및 메인 클럭이 차단될 수 있다. 예를 들어, 관리 블록(315)의 클럭 관리부(CMU)는 마스터 장치(310)의 슬립 모드와 무관하게 동작하는 RCO를 포함할 수 있다. RCO는 제1 클럭(CL1)을 생성할 수 있다. 예시적인 실시 예에서, 마스터 장치(310)가 노멀 모드(normal mode)인 경우, 클럭 관리부(CMU)는 마스터 장치(310)의 각 구성 요소들로 메인 클럭(CLm)을 제공할 수 있다.
클럭 관리부(CMU)에 포함된 RCO로부터 생성된 제1 클럭(CL1)은 직렬 데이터 라인 검출부(SDA-DU)로 제공될 수 있다. 예시적인 실시 예에서, 마스터 장치(310)의 슬립 모드에서, 직렬 데이터 라인 검출부(SDA-DU)로 제공되는 클럭은 제1 클럭(CL1)이 1/n배만큼 분주된 클럭(CL1/n)일 수 있다. 즉, 직렬 데이터 라인 검출부(SDA-DU)는 분주된 클럭(CL1/n)을 사용하여 동작할 수 있다.
직렬 데이터 라인 검출부(SDA-DU)는 직렬 데이터 라인(SDA)의 레벨을 검출하도록 구성될 수 있다. 예를 들어, 슬레이브 장치(320)가 I3C 버스(즉, SDA, SCL)를 통해 데이터 또는 정보(예를 들어, 가상 GPIO 페이로드)를 전송할 경우, 슬레이브 장치(320)는 직렬 데이터 라인(SDA)의 레벨을 로우 레벨로 풀-다운시킬 수 있다.
직렬 데이터 라인 검출부(SDA-DU)는 직렬 데이터 라인(SDA)의 풀-다운된 로우 레벨을 검출할 수 있다. 직렬 데이터 라인 검출부(SDA-DU)는 검출된 로우 레벨에 응답하여, 클럭 활성화 신호(CL-EN)를 전원 관리부(PMU)로 제공할 수 있다.
전원 관리부(PMU)는 클럭 관리부(CMU)가 제1 클럭(CL1)을 I3C 마스터 블록(314) 및 VGI FSM(313)으로 제공하도록 클럭 관리부(CMU)를 제어할 수 있다. 예를 들어, 전원 관리부(PMU)는 외부 장치(예를 들어, 외부의 PMIC 또는 배터리 등)로부터 외부 전원(PWR)을 수신하고, 수신된 외부 전원(PWR)을 기반으로 마스터 장치(310)의 구성 요소들이 동작하는데 필요한 전원을 제공할 수 있다. 전원 관리부(PMU)는 클럭 활성화 신호(CL-EN)에 응답하여, 제1 클럭(CL1)을 공급하는데 필요한 전원을 클럭 관리부(CMU)로 제공할 수 있다.
클럭 관리부(CMU)는 전원 관리부(PMU)의 제어에 따라, 제1 클럭(CL1)을 I3C 마스터 블록(314) 및 VGI FSM(313)으로 제공할 수 있다. 앞서 설명된 바와 같이, 제1 클럭(CL1)은 상시-온 도메인에 속하는 RCO로부터 생성된 클럭일 수 있다. 즉, 제1 클럭(CL1)이 I3C 마스터 블록(314) 및 VGI FSM(313)으로 제공되더라도, 마스터 장치(310)의 슬립 모드는 유지될 것이다.
I3C 마스터 블록(314) 및 VGI FSM(313)은 제1 클럭(CL1)에 응답하여, 웨이크-업될 수 있다. 웨이크-업된 I3C 마스터 블록(314) 및 VGI FSM(313)은 슬레이브 장치(320)로부터 데이터 또는 정보(예를 들어, 가상 GPIO 페이로드(VGI-PLD))를 수신하고, 수신된 데이터 또는 정보를 처리할 수 있다.
예를 들어, 웨이크-업된 I3C 마스터 블록(314) 인-밴드 인터럽트 방식을 기반으로 슬레이브 장치(320)로부터 데이터를 수신할 수 있다. 좀 더 상세한 예로서, 웨이크-업된 I3C 마스터 블록(314)은 직렬 데이터 라인(SDA)의 풀-다운된 로우 레벨에 응답하여, 직렬 클럭 라인(SCL)을 풀-다운시킬 수 있다. 이후에, I3C 마스터 블록(314)은 슬레이브 장치(320)로부터 직렬 데이터 라인(SDA) 및 직렬 클럭 라인(SCL)을 통해 데이터 또는 정보를 수신할 수 있다.
웨이크-업된 VGI FSM(313)은 I3C 마스터 블록(314)에서 수신된 데이터, 특히, 가상 GPIO 페이로드(VGI-PLD)를 하드웨어 신호들(HWS)로 변환하도록 구성될 수 있다.
예시적인 실시 예에서, 슬레이브 장치로부터 외부 인터럽트 신호(EINT)만 수신된 경우, 외부 인터럽트 신호(EINT)는 전원 관리부(PMU)로 제공될 수 있다. 전원 관리부(PMU)는 외부 인터럽트 신호(EINT)에 응답하여, 마스터 장치(310) 전체 구성 요소들을 웨이크-업시킬 수 있다. 예를 들어, 전원 관리부(PMU)는 외부 인터럽트 신호(EINT)에 응답하여, 클럭 관리부(CMU)가 메인 클럭(CLm)을 출력하도록 클럭 관리부(CMU)를 제어하거나, 또는 마스터 장치(310)의 구성 요소들이 동작하는데 필요한 전원을 공급할 수 있다.
클럭 관리부(CMU)는 전원 관리부(PMU)의 제어에 따라 메인 클럭(CLm)을 출력할 수 있다. 메인 클럭(CLm)은 마스터 장치(310)의 다양한 구성 요소들에 제공될 수 있으며, 각 구성 요소들은 메인 클럭(CLm)을 기반으로 동작할 수 있다.
도 11은 도 10의 마스터 장치의 동작을 보여주는 순서도이다. 도 9 내지 도 11을 참조하면, S310 단계에서, 마스터 장치(310)는 슬립 모드로 진입할 수 있다. 예를 들어, 마스터 장치(310)의 일부 구성 요소들(예를 들어, 클럭 관리부(CMU)의 RCO, 또는 직렬 데이터 라인 검출부(SDA-DU))를 제외한 나머지 구성 요소들에 제공되는 클럭 또는 전원이 차단될 수 있다.
S320 단계에서, 마스터 장치(310)는 직렬 데이터 라인(SDA)의 레벨을 검출할 수 있다. 예를 들어, 직렬 데이터 라인 검출부(SDA-DU)는 직렬 데이터 라인(SDA)의 레벨이 로우로 풀-다운되었은지 검출할 수 있다.
직렬 데이터 라인(SDA)의 레벨이 로우 레벨로 풀-다운되지 않은 경우, 마스터 장치(310)(예를 들어, 직렬 데이터 라인 검출부(SDA-DU))는 S320 단계의 동작을 계속할 수 있다.
직렬 데이터 라인(SDA)의 레벨이 로우 레벨로 풀-다운된 경우(즉, 직렬 데이터 라인 검출부(SDA-DU)가 직렬 데이터 라인(SDA)의 레벨이 로우 레벨로 풀-다운된 것으로 검출한 경우), S330 단계에서, 마스터 장치(310)는 클럭 활성화 신호(CL-EN)를 발행할 수 있다. 예를 들어, 직렬 데이터 라인 검출부(SDA-DU)는 직렬 데이터 라인(SDA)이 로우 레벨로 풀-다운된 것에 응답하여, 클럭 활성 신호(CL-EN)를 생성할 수 있다.
S340 단계에서, 마스터 장치(310)는 제1 클럭(CL1)을 I3C 마스터 블록(314) 및 VGI FSM(313)으로 제공할 수 있다. 예를 들어, 전원 관리부(PMU)는 클럭 활성 신호(CL-EN)에 응답하여, 제1 클럭(CL1)이 I3C 마스터 블록(314) 및 VGI FSM(313)으로 제공되도록, 클럭 관리부(CMU)를 제어할 수 있다. 클럭 관리부(CMU)는 전원 관리부(PMU)의 제어에 따라 제1 클럭(CL1)을 I3C 마스터 블록(314) 및 VGI FSM(313)으로 제공할 수 있다.
예시적인 실시 예에서, 제1 클럭(CL1)은 마스터 장치(310)의 상태(즉, 슬립 모드)와 무관하게 동작하는 RCO로부터 생성된 클럭일 수 있다. 즉, 제1 클럭(CL1)이 I3C 마스터 블록(314) 및 VGI FSM(313)으로 제공되어, I3C 마스터 블록(314) 및 VGI FSM(313)이 웨이크-업되더라도, 마스터 장치(310)는 슬립 모드를 유지할 수 있다.
S350 단계에서, 마스터 장치(310)는 I3C 버스(I3C-BUS)(즉, SDA, SCL)를 통해, 데이터를 수신할 수 있다. 예를 들어, 제1 클럭(CL1)에 응답하여 웨이크-업된 I3C 마스터 블록(314)은 인-밴드 인터럽트(IBI; In-Band Interrupt) 방식을 사용하여 슬레이브 장치(320)로부터 데이터(예를 들어, 가상 GPIO 페이로드(VGI-PLD))를 수신할 수 있다.
예시적인 실시 예에서, VGI FSM(313)은 수신된 데이터를 하드웨어 신호들(HWS)로 변환하거나 또는 마스터 장치(310)는 수신된 데이터에 대응하는 동작을 수행할 수 있다.
S360 단계에서, 마스터 장치(310)는 수신된 데이터가 외부 인터럽트 신호(EINT)인지 판별할 수 있다. 예를 들어, 마스터 장치(310)의 VGI 레지스터(vgi-SFR)는 마스킹 정보를 포함할 수 있다. 마스킹 정보는 I3C 버스(I3C-BUS)를 통해 수신된 비트들에 대한 정보를 가리킬 수 있다. 마스터 장치(310)는 마스킹 정보를 기반으로 수신된 데이터에 외부 인터럽트 신호(EINT)가 포함되었는지 판별할 수 있다.
수신된 데이터에 외부 인터럽트 신호(EINT)가 포함된 경우, S370 단계에서, 마스터 장치(310)는 웨이크-업될 수 있다. 예를 들어, VGI FSM(313)은 외부 인터럽트 신호(EINT)를 전원 관리부(PMU)로 제공할 수 있다. 전원 관리부(PMU)는 외부 인터럽트 신호(EINT)에 응답하여, 마스터 장치(310)의 구성 요소들로 필요한 전원을 제공하거나 또는 클럭 관리부(CMU)를 제어할 수 있다. 클럭 관리부(CMU)는 전원 관리부(PMU)의 제어에 따라, 메인 클럭(CLm)을 마스터 장치(310)의 각 구성 요소로 제공할 수 있다.
상술된 바와 같이, 본 발명의 실시 예들에 따르면, 마스터 장치에 포함된 하드웨어 기능 블록은 GPIO 기반의 하드웨어 신호들을 사용하여 슬레이브 장치의 다른 하드웨어 기능 블록들과 통신할 수 있다. 이 때, 마스터 장치는 GPIO 기반의 하드웨어 신호들을 가상화하여 가상 GPIO 페이로드를 생성하고, 생성된 가상 GPIO 페이로드를 I3C 버스를 통해 슬레이브 장치로 제공할 수 있다. 따라서, GPIO 통신을 구현하기 위한 물리적 신호 라인들의 개수가 감소될 수 있다.
또한, 본 발명의 실시 예들에 따르면, 마스터 장치는 메인 CPU의 제어에 따른 I3C 통신; 및 메인 CPU 또는 별도의 소프트웨어의 직접적인 개입없이 수행되는 가상 GPIO 통신을 수행할 수 있다. 이 때, 마스터 장치는 I3C 큐 및 가상 GPIO 큐를 기반으로 I3C 통신 및 가상 GPIO 통신을 중재함으로써, 메인 CPU에 제어에 따른 I3C 통신으로 인한 통신 고갈(starvation)을 방지할 수 있다.
또한, 본 발명의 실시 예들에 따르면, 마스터 장치가 슬립 모드인 경우, 직렬 데이터 라인 검출부(SDA-DU)의 검출 동작에 의해 마스터 장치의 일부 구성 요소들만 웨이크-업시켜 I3C 버스를 통한 통신을 수행함으로써, 마스터 장치의 슬립 모드를 유지한 상태에서, 슬레이브 장치와 통신을 수행할 수 있다.
상술된 본 발명의 실시 예들은 본 발명의 기술적 사상을 용이하게 설명하기 위한 단순 예시들이며, 본 발명의 범위가 이에 한정되는 것은 아니다. 본 발명의 기술적 사상은 상술된 실시 예들 각각 또는 그것들의 조합에 의해 구현될 수 있다.
도 12는 본 발명의 실시 예들에 따른 기술적 사상이 적용된 전자 장치를 예시적으로 보여주는 블록도이다. 도 11을 참조하면, 전자 장치(1000)는 호스트 장치(1100), 복수의 슬레이브 장치들(1210~12n0), 및 2차 마스터 장치(1300)를 포함할 수 있다.
호스트 장치(1100)는 메인 CPU(1110), 하드웨어 기능 블록(1120), VGI FSM(1130), I3C 마스터 블록(1140), 관리 블록(1150)을 포함할 수 있다. 예시적인 실시 예에서, 호스트 장치(1100)는 앞서 설명된 마스터 장치들(110, 210, 310) 중 어느 하나 또는 그것들의 조합일 수 있으며, 호스트 장치(1100)에 포함된 구성 요소들은 앞서 설명된 구성 요소들과 유사한 방식으로 동작할 수 있다. 이에 따라 각 구성 요소들에 대한 상세한 설명은 생략된다.
호스트 장치(1100)는 복수의 슬레이브 장치들(1210~12n0)과 I3C 버스(I3C-BUS)를 통해 서로 통신할 수 있다. 예를 들어, 복수의 슬레이브 장치들(1210~12n0) 각각은 미리 정해진 어드레스로 구분될 수 있다. 호스트 장치(1100)는 I3C 버스(I3C-BUS)를 통해 복수의 슬레이브 장치들(1210~12n0) 중 목표 슬레이브 장치(즉, 통신하고자 하는 슬레이브 장치)와 대응되는 어드레스를 전송할 수 있다. I3C 버스(I3C-BUS)를 통해 제공되는 어드레스에 응답하여, 대응하는 목표 슬레이브 장치는 호스트 장치(1100)와 I3C 버스(I3C-BUS)를 통해 서로 통신할 수 있다.
예시적인 실시 예에서, 목표 슬레이브 장치와 대응되는 어드레스는 가상 GPIO 페이로드에 포함될 수 있다. 예시적인 실시 예에서, 복수의 슬레이브 장치들(1210~12n0) 각각은 본 발명의 실시 예들에 따른 통신 방법을 지원하기 위하여, 도 1 내지 11을 참조하여 설명된 I3C 슬레이브 블록(I3C 슬레이브 블록은 아비터를 포함할 수 있음), VGI FSM, 및 관리 블록을 포함할 수 있다.
예시적인 실시 예에서, 2차 마스터 장치(1300)는 호스트 장치(1100)에 대해서는 슬레이브 장치로서 동작할 수 있고, 복수의 슬레이브 장치들(1210~12n0)에 대해서는 마스터 장치로서 동작할 수 있다.
상술된 바와 같이, 본 발명의 실시 예에 따른 호스트 장치(1100)는 GPIO에 기반된 하드웨어 신호들을 가상화하여 가상 GPIO 페이로드를 생성하고, 생성된 가상 GPIO 페이로드를 I3C 버스(I3C-BUS)를 통해 목표 슬레이브 장치로 제공할 수 있다. 따라서, 호스트 장치(1100)와 복수의 슬레이브 장치들(1210~12n0) 및 2차 마스터 장치(1300) 사이의 GPIO가 가상화될 수 있기 때문에, 물리적 신호 라인들이 감소될 수 있다.
도 13a 및 도 13b는 본 발명의 실시 예에 따른 전자 장치를 예시적으로 보여주는 블록도들이다. 도 13a 및 도 13b를 참조하면, 전자 장치(2000)는 호스트 장치(2100) 및 슬레이브 장치(2200)를 포함할 수 있다. 호스트 장치(2100)는 I3C 블록(2110) 및 통신 블록(2120)을 포함할 수 있고, 슬레이브 장치(2200)는 I3C 블록(2210) 및 통신 블록(2220)을 포함할 수 있다. 예시적인 실시 예에서, 호스트 장치(2100) 및 슬레이브 장치(2200)는 도 1 내지 도 12를 참조하여 설명된 I3C 통신 또는 가상 GPIO 통신을 수행하도록 구성될 수 있다.
예시적인 실시 예에서, 호스트 장치(2100) 및 슬레이브 장치(2200)는 GPIO 또는 전용 IO(DIO; dedicated IO)에 기반된 통신(이하에서, GPIO 통신이라 칭함.)을 수행하도록 구성될 수 있다. 예를 들어, 호스트 장치(2100)에 포함된 하드웨어 기능 블록들은 I3C 블록(2110)을 사용하여 가상 GPIO 통신을 수행할 수 있고, 통신 블록(2120)을 사용하여 GPIO 통신을 수행할 수 있다.
즉, 호스트 장치(2100)에 포함된 하드웨어 기능 블록들은 일부 GPIO에 대하여 가상 GPIO를 수행할 수 있고, 다른 일부 GPIO에서 대하여 일반 GPIO 통신을 수행하도록 구성될 수 있다. 또는 호스트 장치(2100)의 구현 방식에 따라, GPIO를 위해 형성된 신호 패드들(PAD[n])이 슬레이브 장치와 별도의 신호를 주고 받기 위한 용도로 사용될 수 있다.
예를 들어, 도 13b에 도시된 바와 같이, 멀티플렉서(MX)는 통신 블록(21200), I3C 블록(2110), 및 신호 패드들(PAD[n])과 연결되고, 선택 신호(SS)에 응답하여, 각각의 신호 경로를 결정하도록 구성될 수 있다.
예를 들어, 멀티플렉서(MX)는 선택 신호(SS)에 응답하여, I3C 블록(2110)을 통해 수신된 가상 GPIO 통신 기반의 신호들을 통신 블록(2120)으로 제공할 수 있다. 또는 멀티플렉서(MX)는 선택 신호(SS)에 응답하여, 통신 블록(2120)을 통해 수신된 가상 GPIO 통신 기반의 신호들을 I3C 블록(2110)으로 제공할 수 있다. 이 경우, 도 1 내지 도 12를 참조하여 설명된 바와 같이, 호스트 장치(2100)는 가상 GPIO 통신을 수행할 수 있다.
또는 멀티플렉서(MX)는 선택 신호(SS)에 응답하여, 신호 패드들(PAD[n])을 통해 수신된 신호를 통신 블록(2120)으로 제공할 수 있다. 또는 멀티플렉서(MX)는 선택 신호(SS)에 응답하여, 통신 블록(2120)을 통해 수신된 신호들을 신호 패드들(PAD[n])로 제공할 수 있다. 이 경우, 호스트 장치(2100)는 도 1b를 참조하여 설명된 GPIO 통신을 수행할 수 있다.
설명의 편의를 위하여, 호스트 장치(2100)가 가상 GPIO 통신 및 GPIO 통신을 각각 수행하는 것으로 설명되었으나, 본 발명의 범위가 이에 한정되는 것은 아니다. 예를 들어, 호스트 장치(2100)는 선택 신호(SS)를 설정함으로써, 가상 GPIO 통신, GPIO 통신, 또는 그것들의 조합을 수행하도록 구성될 수 있다. 예시적인 실시 예에서, 선택 신호(SS)는 VGI 레지스터(vgi-SFR, 도 2 참조)에 설정된 I/O 선택 값 및 사전에 미리 설정된 OTP 데이터에 의해 결정될 수 있다.
상술된 바와 같이, 호스트 장치(2100)는 I3C 블록(2110)을 사용하여 가상 GPIO 통신을 수행할 수 있을 뿐만 아니라, 신호 패드들(PAD[n])(신호 패드들은 GPIO 통신을 위한 신호 패드들일 수 있음.)을 통해 별도의 통신을 수행하도록 구성될 수 있다. 따라서, 전자 장치의 확장성이 향상될 수 있다.
도 14는 본 발명의 실시 예들에 따른 기술적 사상이 적용된 전자 장치를 예시적으로 보여주는 블록도이다. 도 14를 참조하면, 전자 장치(3000)는 애플리케이션 프로세서(3100) 및 모뎀(3200)을 포함할 수 있다. 예시적인 실시 예에서, 전자 장치(3000)는 스마트폰, 태블릿 PC, 랩탑 등과 같은 휴대용 컴퓨팅 시스템이거나 또는 전기 자동차, 자율 주행 자동차 등과 같은 자동차 전장 시스템 또는 그것들의 일부일 수 있다.
애플리케이션 프로세서(3100)는 전자 장치(3000) 상에서 구동되는 다양한 소프트웨어들을 구동하거나 또는 전자 장치(3000) 내부에 또는 외부에 포함된 다양한 하드웨어들을 제어하도록 구성될 수 있다.
예시적인 실시 예에서, 애플리케이션 프로세서(3100)는 본 발명의 실시 예에 따른 동작 방법을 기반으로 다양한 장치들과 통신할 수 있다. 예를 들어, 애플리케이션 프로세서(3100)는 도 1 내지 도 11을 참조하여 설명된 I3C 버스 기반의 가상 GPIO 통신 방법(이하에서, "I3C 기반의 VGI 통신"이라 칭함.)을 수행할 수 있다.
애플리케이션 프로세서(3100)는 복수의 AP 전원 관리 회로들(3110)(AP PMIC; Application Processor Power Management Integrated Circuit)과 I3C 기반의 VGI 통신(VGI-I3C)을 수행하도록 구성될 수 있다. 애플리케이션 프로세서(3120)는 cHUB/sHUB(3120)(context HUB or sensor HUB)와 I3C 기반의 VGI 통신(VGI-I3C)을 수행하도록 구성될 수 있다. 애플리케이션 프로세서(3100)는 이미지 센서(3130)와 I3C 기반의 VGI 통신(VGI-I3C)을 수행하도록 구성될 수 있다. 예시적인 실시 예에서, 애플리케이션 프로세서(3100)는 카메라 직렬 인터페이스(CSI; camera serial interface)를 통해 이미지 센서(3130)와 대용량의 이미지 데이터를 주고 받을 수 있다. CMOS 이미지 센서(3130)는 CSI를 위한 별도의 제1 물리 계층(PHY1)을 포함할 수 있다.
애플리케이션 프로세서(3100)는 디스플레이 구동 회로(3140)(DDI)와 I3C 기반의 VGI 통신(VGI-I3C)을 수행하도록 구성될 수 있다. 예시적인 실시 예에서, 애플리케이션 프로세서(3100)는 디스플레이 직렬 인터페이스(DSI; display serial interface)를 통해 디스플레이 구동 회로(3140)와 대용량의 디스플레이 데이터를 주고 받을 수 있다. 디스플레이 구동 회로(3140)는 DSI를 위한 별도의 제2 물리 계층(PHY2)을 포함할 수 있다. 예시적인 실시 예에서, 제1 및 제2 물리 계층들(PHY1, PHY2)은 MIPI 연합에 의해 정의된 D-PHY 프로토콜로 구현될 수 있다.
예시적인 실시 예에서, 상술된 바와 같은 I3C 기반의 VGI 통신(VGI-I3C)을 구현하기 위하여, 애플리케이션 프로세서(3100)는 도 1 내지 도 11을 참조하여 설명된 I3C 마스터 블록 및 VGI FSM를 포함할 수 있고, 복수의 AP 전원 관리 회로들(3110), cHUB/sHUB(3120), 이미지 센서(3130), 및 디스플레이 구동 회로(3140) 각각은 도 1 내지 도 11을 참조하여 설명된 I3C 슬레이브 블록 및 VGI FSM을 포함할 수 있다. 비록 도면에 도시되지는 않았으나, 애플리케이션 프로세서(3100), 복수의 AP 전원 관리 회로들(3110), cHUB/sHUB(3120), 이미지 센서(3130), 및 디스플레이 구동 회로(3140) 각각은 도 1 내지 도 11을 참조하여 설명된 아비터 또는 관리 블록을 더 포함할 수 있다.
모뎀(3200)은 전자 장치(3000)의 외부와 무선 또는 유선 통신을 수행하도록 구성될 수 있다. 예시적인 실시 예에서, 모뎀(3200)은 I3C 기반의 VGI 통신(VGI-I3C)을 기반으로 다양한 구성 요소들과 통신할 수 있다. 예를 들어, 모뎀(3200)은 모뎀 전원 관리 회로(3210)와 I3C 기반의 VGI 통신(VGI-I3C)을 수행할 수 있고, RF 집적 회로(3220)와 I3C 기반의 VGI 통신(VGI-I3C)을 수행할 수 있다.
예시적인 실시 예에서, 상술된 바와 같은 I3C 기반의 VGI 통신(VGI-I3C)을 구현하기 위하여, 모뎀(3200)은 도 1 내지 도 11을 참조하여 설명된 I3C 마스터 블록 및 VGI FSM을 포함할 수 있고, 모뎀 전원 관리 회로(3210) 및 RF 집적 회로(3220)는 도 1 내지 도 11을 참조하여 설명된 I3C 슬레이브 블록 및 VGI FSM을 포함할 수 있다. 비록 도면에 도시되지는 않았으나, 모뎀(3200), 모뎀 전원 관리 회로(3210), 및 RF 집적 회로(3220)는 도 1 내지 도 11을 참조하여 설명된 아비터 또는 관리 블록을 더 포함할 수 있다.
예시적인 실시 예에서, 애플리케이션 프로세서(3100) 및 모뎀(3200)은 서로 I3C 기반의 VGI 통신(VGI-I3C)을 수행할 수 있다. 애플리케이션 프로세서(3100) 및 모뎀(3200) 사이의 I3C 기반의 VGI 통신(VGI-I3C)을 구현하기 위하여, 모뎀(3200)의 I3C 마스터 블록은 2차 I3C 마스터 블록으로 구성될 수 있다.
도 15를 본 발명의 실시 예에 따른 기술적 사상이 적용된 전자 장치를 예시적으로 보여주는 블록도이다. 도 15를 참조하면, 전자 장치(4000)는 ModAP(4100), 복수의 PMIC(4110), cHUB/sHUB(4120), 이미지 센서(4130), 디스플레이 구동 회로(4140), 및 RF 집적 회로(4150)를 포함할 수 있다.
ModAP(4100)은 도 14의 애플리케이션 프로세서(3100) 및 모뎀(3200)이 하나의 집적 회로 구현된 장치일 수 있다. 즉, ModAP(4100)은 전자 장치(4000) 상의 다양한 애플리케이션들을 구동하고, 다양한 하드웨어들을 제어하고, 전자 장치(4000) 외부와 무선/유선 통신을 수행하도록 구성될 수 있다.
도 14를 참조하여 설명된 바와 유사하게, ModAP(4100)은 복수의 PMIC들(4110), cHUB/sHUB(4120), 이미지 센서(4130), 디스플레이 구동 회로(4140), 및 RF 집적 회로(4150) 각각과 I3C 기반의 VGI 통신(VGI-I3C)을 수행하도록 구성될 수 있다. 이를 구현하기 위하여, ModAP(4100)은 도 1 내지 도 14를 참조하여 설명된 I3C 마스터 블록 및 VGI FSM을 포함할 수 있고, 복수의 PMIC들(4110), cHUB/sHUB(4120), 이미지 센서(4130), 디스플레이 구동 회로(4140), 및 RF 집적 회로(4150) 각각은 도 1 내지 도 14를 참조하여 설명된 I3C 슬레이브 블록 및 VGI FSM을 포함할 수 있다. 예시적인 실시 예에서, ModAP(4100), 복수의 PMIC들(4110), cHUB/sHUB(4120), 이미지 센서(4130), 디스플레이 구동 회로(4140), 및 RF 집적 회로(4150) 각각은 도 1 내지 도 14를 참조하여 설명된 아비터 또는 관리 블록을 더 포함할 수 있다.
앞서 설명된 바와 유사하게, 이미지 센서(4130)는 CSI를 위한 제1 물리 계층(PHY1)을 더 포함할 수 있고, 디스플레이 구동 회로(4140)는 DSI를 위한 제2 물리 계층(PHY2)을 더 포함할 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
Claims (10)
- 중앙 처리 유닛;
외부 장치로 전송될 복수의 하드웨어 신호들을 상기 중앙 처리 유닛과 독립적으로 출력하도록 구성된 하드웨어 기능 블록;
상기 복수의 하드웨어 신호들을 가상 GPIO(General Purpose Input Output) 페이로드로 변환하도록 구성된 가상 GPIO(General Purpose Input Output) 유한 상태 머신; 및
상기 가상 GPIO 페이로드를 직렬 데이터 라인 및 직렬 클럭 라인을 통해 상기 외부 장치로 전송하도록 구성된 I3C 통신 블록을 포함하는 반도체 집적 회로. - 제 1 항에 있어서,
상기 I3C 통신 블록은 상기 중앙 처리 유닛의 개입 없이 상기 가상 GPIO 페이로드를 상기 외부 장치로 전송하는 반도체 집적 회로. - 제 1 항에 있어서,
상기 GPIO 페이로드는 상기 외부 장치와 대응되는 어드레스 정보를 포함하는 반도체 집적 회로. - 제 1 항에 있어서,
노멀 모드에서, 상기 중앙 처리 유닛, 상기 하드웨어 기능 블록, 상기 가상 GPIO 유한 상태 머신, 및 상기 I3C 통신 블록으로 메인 클럭을 제공하도록 구성된 관리 블록을 더 포함하는 반도체 집적 회로. - 제 4 항에 있어서,
슬립 모드에서, 상기 관리 블록은 상기 메인 클럭을 차단하고, 상기 직렬 데이터 라인의 레벨에 응답하여, 상기 가상 GPIO 유한 상태 머신 및 상기 I3C 통신 블록으로 제1 클럭을 제공하도록 더 구성된 반도체 집적 회로. - 제 6 항에 있어서,
상기 가상 GPIO 유한 상태 머신 및 상기 I3C 통신 블록은 상기 제1 클럭에 응답하여 웨이크-업되고,
상기 웨이크-업된 I3C 통신 블록은 인-밴드 인터럽트 방식을 기반으로 상기 외부 장치로부터 상기 직렬 데이터 라인 및 상기 직렬 클럭 라인을 통해 데이터를 수신하도록 더 구성된 반도체 집적 회로. - 제 4 항에 있어서,
상기 관리 블록은:
상기 노멀 모드에서 상기 메인 클럭을 출력하고, 상기 슬립 모드에서 제1 클럭 및 상기 제1 클럭이 1/n(단, n은 양의 정수)로 분주된 제2 클럭을 출력하도록 구성된 클럭 관리부;
상기 제2 클럭을 기반으로 동작하고, 상기 직렬 데이터 라인이 상기 로우 레벨로 풀-다운된 경우, 클럭 활성 신호를 출력하도록 구성된 직렬 데이터 라인 검출부; 및
상기 클럭 활성 신호에 응답하여, 상기 제1 클럭이 상기 가상 GPIO 유한 상태 머신 및 상기 I3C 통신 블록으로 제공되도록 상기 클럭 관리부를 제어하도록 구성된 전원 관리부를 포함하는 반도체 집적 회로. - 제 7 항에 있어서,
상기 제1 클럭에 응답하여 웨이크-업된 상기 I3C 통신 블록은 인-밴드 인터럽트 방식을 기반으로 상기 외부 장치로부터 데이터를 수신하도록 더 구성되고,
상기 데이터가 외부 인터럽트 신호를 포함하는 경우, 상기 가상 GPIO 유한 상태 머신은 상기 외부 인터럽트 신호를 상기 전원 관리부로 전달하도록 더 구성되고,
상기 전원 관리부는 상기 외부 인터럽트 신호에 응답하여, 상기 메인 클럭이 출력되도록 상기 클럭 관리부를 제어하도록 더 구성된 반도체 집적 회로. - 제 1 항에 있어서,
상기 I3C 통신 블록은 상기 중앙 처리 유닛의 제어에 따라 상기 직렬 데이터 라인 및 상기 직렬 클럭 라인을 통해 수행되는 제1 통신; 및 상기 중앙 처리 유닛의 개입 없이 수행되는 제2 통신을 중재하도록 구성된 아비터(arbiter)를 포함하고,
상기 제1 통신은 상기 중앙 처리 유닛에 의해 수행되는 I3C 통신을 가리키고, 상기 제2 통신 동작은 상기 가상 GPIO 페이로드에 대한 I3C 기반의 가상 GPIO(VGI; virtual general purpose input output) 통신을 가리키는 반도체 집적 회로. - 제 9 항에 있어서,
상기 I3C 통신 블록은:
상기 제1 통신에 대응하는 적어도 하나의 제1 동작들에 대한 정보를 포함하는 I3C 큐; 및
상기 제2 통신에 대응하는 적어도 하나의 제2 동작들에 대한 정보를 포함하는 가상 GPIO 큐를 더 포함하고,
상기 아비터는 상기 I3C 큐에 포함된 상기 적어도 하나의 제1 동작들 및 상기 가상 GPIO 큐에 포함된 상기 적어도 하나의 제2 동작들 각각의 우선 순위를 기반으로, 상기 직렬 데이터 라인 및 상기 직렬 클럭 라인을 통해, 상기 적어도 하나의 제1 동작들 및 상기 적어도 하나의 제2 동작들을 순차적으로 수행하는 반도체 집적 회로.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190009830A KR20200093106A (ko) | 2019-01-25 | 2019-01-25 | 반도체 집적 회로 및 그것의 동작 방법 |
US16/734,844 US11436176B2 (en) | 2019-01-25 | 2020-01-06 | Semiconductor integrated circuit and operation method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190009830A KR20200093106A (ko) | 2019-01-25 | 2019-01-25 | 반도체 집적 회로 및 그것의 동작 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20200093106A true KR20200093106A (ko) | 2020-08-05 |
Family
ID=71732588
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190009830A KR20200093106A (ko) | 2019-01-25 | 2019-01-25 | 반도체 집적 회로 및 그것의 동작 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11436176B2 (ko) |
KR (1) | KR20200093106A (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11556486B2 (en) * | 2020-07-02 | 2023-01-17 | Qualcomm Incorporated | Versatile control messaging scheme for radio coexistence management |
KR20230013732A (ko) | 2021-07-19 | 2023-01-27 | 삼성전자주식회사 | 복수의 전력 관리 집적 회로들을 포함하는 전자 장치 및 그것의 동작 방법 |
KR20240032376A (ko) * | 2022-09-02 | 2024-03-12 | 주식회사 엘엑스세미콘 | 반도체 장치 및 이의 통신 방법 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100454941B1 (ko) * | 2001-03-27 | 2004-11-06 | 삼성전자주식회사 | 이동통신단말기의 퀵 페이징 메시지 수신 장치 및 방법 |
US9092393B2 (en) | 2011-03-11 | 2015-07-28 | Skyworks Solutions, Inc. | Dual mode serial/parallel interface and use thereof in improved wireless devices and switching components |
US9563398B2 (en) | 2015-03-06 | 2017-02-07 | Qualcomm Incorporated | Impedance-based flow control for a two-wire interface system with variable frame length |
US10241953B2 (en) | 2015-08-07 | 2019-03-26 | Qualcomm Incorporated | Dynamic data-link selection over common physical interface |
US10140242B2 (en) * | 2015-09-10 | 2018-11-27 | Qualcomm Incorporated | General purpose input/output (GPIO) signal bridging with I3C bus interfaces and virtualization in a multi-node network |
US20170168966A1 (en) | 2015-12-10 | 2017-06-15 | Qualcomm Incorporated | Optimal latency packetizer finite state machine for messaging and input/output transfer interfaces |
US9934171B2 (en) | 2016-02-10 | 2018-04-03 | Qualcomm Incorporated | Serial communication link with optimal transfer latency |
US10467154B2 (en) | 2017-02-10 | 2019-11-05 | Qualcomm Incorporated | Multi-port multi-sideband-GPIO consolidation technique over a multi-drop serial bus |
US11030102B2 (en) * | 2018-09-07 | 2021-06-08 | Apple Inc. | Reducing memory cache control command hops on a fabric |
US11675715B2 (en) * | 2019-03-27 | 2023-06-13 | Intel Corporation | Low pin-count architecture with prioritized message arbitration and delivery |
-
2019
- 2019-01-25 KR KR1020190009830A patent/KR20200093106A/ko not_active Application Discontinuation
-
2020
- 2020-01-06 US US16/734,844 patent/US11436176B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20200242066A1 (en) | 2020-07-30 |
US11436176B2 (en) | 2022-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10140242B2 (en) | General purpose input/output (GPIO) signal bridging with I3C bus interfaces and virtualization in a multi-node network | |
KR102074018B1 (ko) | 저전력 상태로의 포트 진입을 동기화하기 위한 시스템, 방법 및 장치 | |
KR101565357B1 (ko) | 타임아웃을 처리하기 위한 시스템, 방법 및 장치 | |
CN109478172B (zh) | 用于总线主控的转换功能的方法、装置和系统 | |
CN106209695B (zh) | 给加载/存储通信协议提供低功率物理单元 | |
KR102108831B1 (ko) | 저전력을 위해 피지컬 레이어의 웨이크업 신호를 라우트할 수 있는 장치, 이의 동작 방법, 및 상기 장치를 포함하는 데이터 처리 시스템 | |
JP6080984B2 (ja) | 異なる相互接続プロトコルのための一つの相互接続プロトコルの列挙および/または設定機構の活用 | |
EP3844628B1 (en) | Slave-to-slave direct communication | |
KR101823315B1 (ko) | 가변 프레임 길이를 갖는 2-와이어 인터페이스 시스템에 대한 임피던스-기반 플로우 제어 | |
CN113672539A (zh) | 通过接口的现有辅助引脚的边带信号传输 | |
US11436176B2 (en) | Semiconductor integrated circuit and operation method thereof | |
JP2017528830A (ja) | 修正型uartインターフェースを有する可変フレーム長仮想gpio | |
KR102151178B1 (ko) | 직렬 통신 장치 및 그 방법 | |
JP2010086524A (ja) | 省電力機能を有するブリッジ装置 | |
WO2022103488A1 (en) | Disaggregation of computing devices using enhanced retimers with circuit switching | |
WO2023124940A1 (zh) | 一种直接存储器访问的嵌入式控制电路、芯片和电子设备 | |
CN114281722A (zh) | 一种双总线接口的嵌入式控制电路、芯片和电子设备 | |
CN114297111A (zh) | 一种嵌入式控制电路、芯片、外设访问方法和电子设备 | |
US8832471B2 (en) | Power management system utilizing a transaction terminator | |
KR20190108001A (ko) | 네트워크온칩 및 이를 포함하는 컴퓨팅 장치 | |
KR100602204B1 (ko) | 메인 제어부와 부 제어부로 구성된 제어 시스템 및 버스연결 방법 | |
CN216486413U (zh) | 一种基于共享接口的嵌入式控制电路、芯片和电子设备 | |
KR20230140209A (ko) | PCIe 장치 및 이를 포함하는 컴퓨팅 시스템 | |
JP2004038796A (ja) | 多機能icカード及びその制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal |