KR102226284B1 - System-on-chip and driving method thereof - Google Patents

System-on-chip and driving method thereof Download PDF

Info

Publication number
KR102226284B1
KR102226284B1 KR1020140130493A KR20140130493A KR102226284B1 KR 102226284 B1 KR102226284 B1 KR 102226284B1 KR 1020140130493 A KR1020140130493 A KR 1020140130493A KR 20140130493 A KR20140130493 A KR 20140130493A KR 102226284 B1 KR102226284 B1 KR 102226284B1
Authority
KR
South Korea
Prior art keywords
master
fifo
slave
pointer
write
Prior art date
Application number
KR1020140130493A
Other languages
Korean (ko)
Other versions
KR20160016482A (en
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 삼성전자주식회사
Priority to US14/611,306 priority Critical patent/US10013375B2/en
Publication of KR20160016482A publication Critical patent/KR20160016482A/en
Priority to US15/996,477 priority patent/US10423553B2/en
Application granted granted Critical
Publication of KR102226284B1 publication Critical patent/KR102226284B1/en

Links

Images

Landscapes

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

Abstract

본 발명의 하나의 실시형태에 따른 시스템온칩(system-on-chip)은 마스터(master), 슬레이브(slave) 및 상기 마스터와 상기 슬레이브에 연결된 FIFO(first-in first-out)를 포함하며, 상기 FIFO의 라이트 포인터(write pointer)와 예측된 라이트 포인터(expected write pointer)를 비교하여 상기 FIFO의 라이트 동작을 제어하고, 상기 FIFO의 리드 포인터(read pointer)와 예측된 리드 포인터(expected read pointer)를 비교하여 상기 FIFO의 리드 동작을 제어하는 비동기 인터페이스(asynchronous interface)를 포함한다.A system-on-chip according to an embodiment of the present invention includes a master, a slave, and a first-in first-out (FIFO) connected to the master and the slave, and the The FIFO write operation is controlled by comparing the FIFO write pointer and the predicted write pointer, and the FIFO read pointer and the predicted read pointer are determined. In comparison, it includes an asynchronous interface for controlling the read operation of the FIFO.

Description

시스템온칩 및 이의 구동 방법{SYSTEM-ON-CHIP AND DRIVING METHOD THEREOF}System-on-chip and its driving method {SYSTEM-ON-CHIP AND DRIVING METHOD THEREOF}

본 발명은 시스템온칩(system on chip)에 관한 것으로, 마스터(master)와 슬레이브(slave)가 먼거리에 위치하고 서로 다른 클록 도메인을 가지는 경우, 안정적으로 데이터를 전송하기 위하여 FIFO의 라이트 포인터(write pointer)와 리드 포인터(read pointer)의 간격을 일정하게 유지하도록 상기 FIFO의 리드 및 라이트 동작을 제어하는 시스템온칩 및 이의 구동 방법에 관한 것이다.The present invention relates to a system on chip, and when a master and a slave are located at a distance and have different clock domains, a write pointer of a FIFO for stably transmitting data The present invention relates to a system-on-chip for controlling read and write operations of the FIFO so as to maintain a constant interval between the read pointer and the read pointer, and a driving method thereof.

마스터(master)와 슬레이브(slave) 사이에 클록 도메인(clock domain)이 다른 경우, 비동기 인터페이스(asynchronous interface)가 사용될 수 있다. 비동기 인터페이스는 FIFO(first-in first-out)를 포함할 수 있다. FIFO는 라이트 포인터(write pointer)와 리드 포인터(read pointer)를 포함한다.When the clock domain is different between the master and the slave, an asynchronous interface may be used. The asynchronous interface may include first-in first-out (FIFO). The FIFO contains a write pointer and a read pointer.

상기 라이트 포인터와 상기 리드 포인터가 다양한 uncertainty로 인해 일정한 간격을 유지하지 못하는 경우, FIFO는 풀(full) 또는 엠프티(empty) 상태를 가질 수 있다. 이로 인하여, 마스터와 슬레이브 간의 프로토콜(protocol)이 깨질 수 있다. When the write pointer and the read pointer cannot maintain a constant interval due to various uncertainties, the FIFO may have a full or empty state. Due to this, the protocol between the master and the slave may be broken.

본 발명의 목적은 클록 도메인이 다른 원거리 인터페이스의 경우, FIFO의 라이트 포인터와 리드 포인터 간의 인터벌을 일정하게 유지하기 위하여 라이트 포인터 또는 리드 포인터를 보상할 수 있는 시스템온칩을 제공하는 것이다. An object of the present invention is to provide a system-on-chip capable of compensating for a write pointer or a read pointer in order to maintain a constant interval between a write pointer and a read pointer of a FIFO in the case of a remote interface having a different clock domain.

본 발명의 다른 목적은 상기 시스템온칩의 구동 방법을 제공하는 것이다. Another object of the present invention is to provide a method of driving the system-on-chip.

본 발명의 또 다른 목적은 상기 시스템온칩을 포함하는 모바일 장치를 제공하는 것이다. Another object of the present invention is to provide a mobile device including the system-on-chip.

상기 목적을 달성하기 위하여 본 발명의 하나의 실시형태에 따른 시스템온칩(system-on-chip)은 마스터(master), 슬레이브(slave) 및 상기 마스터와 상기 슬레이브에 연결된 FIFO(first-in first-out)를 포함하며, 상기 FIFO의 라이트 포인터(write pointer)와 예측된 라이트 포인터(expected write pointer)를 비교하여 상기 FIFO의 라이트 동작을 제어하고, 상기 FIFO의 리드 포인터(read pointer)와 예측된 리드 포인터(expected read pointer)를 비교하여 상기 FIFO의 리드 동작을 제어하는 비동기 인터페이스(asynchronous interface)를 포함한다.In order to achieve the above object, a system-on-chip according to an embodiment of the present invention includes a master, a slave, and a first-in first-out (FIFO) connected to the master and the slave. ), and controlling a write operation of the FIFO by comparing a write pointer of the FIFO with an expected write pointer, and a read pointer and a predicted read pointer of the FIFO It includes an asynchronous interface for controlling the read operation of the FIFO by comparing (expected read pointer).

하나의 실시 예에 있어서, 상기 비동기 인터페이스는 슬레이브 인터페이스 및 마스터 인터페이스를 포함하고, 상기 슬레이브 인터페이스는 슬레이브 센더, 슬레이브 CDC(clock domain crossing) 블록, 슬레이브 리시버를 포함하고, 상기 마스터 인터페이스는 마스터 센더, 마스터 CDC 블록, 마스터 리시버를 포함하며, 상기 슬레이브 인터페이스 및 상기 마스터 인터페이스 각각은 동일한 구조를 포함하며, 동일한 동작을 수행하고, 상기 슬레이브 CDC 블록 및 상기 마스터 CDC 블록 각각은 상기 FIFO를 포함한다.In one embodiment, the asynchronous interface includes a slave interface and a master interface, and the slave interface includes a slave sender, a slave clock domain crossing (CDC) block, and a slave receiver, and the master interface includes a master sender and a master interface. It includes a CDC block and a master receiver, each of the slave interface and the master interface has the same structure and performs the same operation, and each of the slave CDC block and the master CDC block includes the FIFO.

하나의 실시 예에 있어서, 상기 비동기 인터페이스는 상기 라이트 포인터와 상기 예측된 라이트 포인터의 비교 결과에 따라 상기 FIFO의 라이트 동작을 제어하기 위한 라이트 활성화 신호(write enable signal)를 생성한다.In one embodiment, the asynchronous interface generates a write enable signal for controlling a write operation of the FIFO according to a comparison result of the write pointer and the predicted write pointer.

하나의 실시 예에 있어서, 상기 FIFO는 상기 라이트 활성화 신호가 활성화되는 동안, 상기 라이트 포인터가 지시하는 어드레스에 데이터를 저장한다.In one embodiment, the FIFO stores data at an address indicated by the write pointer while the write activation signal is activated.

하나의 실시 예에 있어서, 상기 비동기 인터페이스는 상기 리드 포인터와 상기 예측된 리드 포인터의 비교 결과에 따라 상기 FIFO의 리드 동작을 제어하기 위한 리드 활성화 신호(read enable signal)를 생성한다.In one embodiment, the asynchronous interface generates a read enable signal for controlling a read operation of the FIFO according to a result of comparing the read pointer and the predicted read pointer.

하나의 실시 예에 있어서, 상기 FIFO는 상기 리드 활성화 신호가 활성화되는 동안, 상기 리드 포인터가 지시하는 어드레스에 저장된 데이터를 상기 마스터 리시버 또는 상기 슬레이브 리시버로 전송한다.In one embodiment, the FIFO transmits data stored in an address indicated by the read pointer to the master receiver or the slave receiver while the read activation signal is activated.

하나의 실시 예에 있어서, 상기 비동기 인터페이스는 상기 리드 포인터와 상기 라이트 포인터 사이의 인터벌(interval)을 일정하게 유지시킬 수 있다.In one embodiment, the asynchronous interface may maintain a constant interval between the read pointer and the write pointer.

하나의 실시 예에 있어서, 상기 예측된 리드 포인터는 상기 라이트 포인터와 상기 인터벌을 바탕으로 계산되고, 상기 예측된 라이트 포인터는 상기 리드 포인터와 상기 인터벌을 바탕으로 계산된다.In one embodiment, the predicted read pointer is calculated based on the write pointer and the interval, and the predicted write pointer is calculated based on the read pointer and the interval.

하나의 실시 예에 있어서, 상기 비동기 인터페이스는 상기 마스터와 상기 슬레이브의 클록 도메인(clock domain)이 서로 다른 경우, 상기 마스터와 상기 슬레이브를 연결한다.In one embodiment, the asynchronous interface connects the master and the slave when the clock domains of the master and the slave are different from each other.

하나의 실시 예에 있어서, 상기 리드 포인터를 보상하기 위한 주기는 상기 라이트 포인터의 MSB(most significant bit)를 이용하여 결정되고, 상기 라이트 포인터를 보상하기 위한 주기는 상기 리드 포인터의 MSB를 이용하여 결정된다.In one embodiment, a period for compensating the read pointer is determined using a most significant bit (MSB) of the write pointer, and a period for compensating the write pointer is determined using an MSB of the read pointer do.

본 발명의 다른 하나의 실시형태에 따른 시스템온칩의 구동 방법은 마스터(master), 슬레이브(slave) 및 상기 마스터와 상기 슬레이브를 연결하기 위한 FIFO(first-in first-out)를 포함하는 비동기 인터페이스(asynchronous interface)를 포함하는 시스템온칩(system-on-chip)의 구동 방법에 있어서, 상기 FIFO의 라이트 포인터(write pointer)와 예측된 라이트 포인터(expected write pointer)를 비교하는 단계 및 상기 비교된 결과를 바탕으로 상기 FIFO의 라이트 동작을 제어하는 단계를 포함한다.A method of driving a system-on-chip according to another embodiment of the present invention includes an asynchronous interface including a master, a slave, and a first-in first-out (FIFO) for connecting the master and the slave. A method of driving a system-on-chip including an asynchronous interface, comprising: comparing a write pointer of the FIFO with an expected write pointer, and comparing the compared result. And controlling the write operation of the FIFO.

하나의 실시 예에 있어서, 상기 비동기 인터페이스는 슬레이브 인터페이스 및 마스터 인터페이스를 포함하고, 상기 슬레이브 인터페이스는 슬레이브 센더, 슬레이브 CDC(clock domain crossing) 블록, 슬레이브 리시버를 포함하고, 상기 마스터 인터페이스는 마스터 센더, 마스터 CDC 블록, 마스터 리시버를 포함하며, 상기 슬레이브 인터페이스 및 상기 마스터 인터페이스 각각은 동일한 구조를 포함하며, 동일한 동작을 수행하고, 상기 슬레이브 CDC 블록 및 상기 마스터 CDC 블록 각각은 상기 FIFO를 포함한다.In one embodiment, the asynchronous interface includes a slave interface and a master interface, and the slave interface includes a slave sender, a slave clock domain crossing (CDC) block, and a slave receiver, and the master interface includes a master sender and a master interface. It includes a CDC block and a master receiver, each of the slave interface and the master interface has the same structure and performs the same operation, and each of the slave CDC block and the master CDC block includes the FIFO.

하나의 실시 예에 있어서, 상기 FIFO의 리드 포인터(read pointer)와 예측된 리드 포인터(expected read pointer)를 비교하는 단계 및 상기 비교된 결과를 바탕으로 상기 FIFO의 리드 동작을 제어하는 단계를 포함한다.In an embodiment, the method includes comparing a read pointer of the FIFO with an expected read pointer, and controlling a read operation of the FIFO based on the compared result. .

하나의 실시 예에 있어서, 상기 비동기 인터페이스는 상기 라이트 포인터와 상기 예측된 라이트 포인터의 비교 결과에 따라 상기 FIFO의 라이트 동작을 제어하기 위한 라이트 활성화 신호(write enable signal)의 활성화를 제어하며, 상기 FIFO는 상기 라이트 활성화 신호가 활성화되는 동안, 상기 라이트 포인터가 지시하는 어드레스에 데이터를 저장한다.In one embodiment, the asynchronous interface controls activation of a write enable signal for controlling a write operation of the FIFO according to a comparison result of the write pointer and the predicted write pointer, and the FIFO Stores data at an address indicated by the write pointer while the write activation signal is activated.

하나의 실시 예에 있어서, 상기 비동기 인터페이스는 상기 리드 포인터와 상기 예측된 리드 포인터의 비교 결과에 따라 상기 FIFO의 리드 동작을 제어하기 위한 리드 활성화 신호(read enable signal)의 활성화를 제어하며, 상기 FIFO는 상기 리드 활성화 신호가 활성화되는 동안, 상기 리드 포인터가 지시하는 어드레스에 저장된 데이터를 상기 마스터 리시버 또는 상기 슬레이브 리시버로 전송한다.In one embodiment, the asynchronous interface controls activation of a read enable signal for controlling a read operation of the FIFO according to a comparison result of the read pointer and the predicted read pointer, and the FIFO While the read activation signal is activated, data stored at an address indicated by the read pointer is transmitted to the master receiver or the slave receiver.

본 발명의 또 다른 하나의 실시형태에 따른 컴퓨터 시스템(computer system)은 메모리 장치 및 상기 메모리 장치를 제어하는 시스템온칩을 포함하고, 상기 시스템온칩(system-on-chip)은 마스터(master), 슬레이브(slave) 및 상기 마스터와 상기 슬레이브를 연결하기 위한 FIFO(first-in first-out)를 포함하며, 상기 FIFO의 라이트 포인터(write pointer)와 예측된 라이트 포인터(expected write pointer)를 비교하여 상기 FIFO의 라이트 동작을 제어하고, 상기 FIFO의 리드 포인터(read pointer)와 예측된 리드 포인터(expected read pointer)를 비교하여 상기 FIFO의 리드 동작을 제어하는 비동기 인터페이스(asynchronous interface)를 포함한다.A computer system according to another embodiment of the present invention includes a memory device and a system-on-chip for controlling the memory device, and the system-on-chip includes a master and a slave. (slave) and a first-in first-out (FIFO) for connecting the master and the slave, and the FIFO by comparing a write pointer of the FIFO with a predicted write pointer And an asynchronous interface that controls a read operation of the FIFO and controls a read operation of the FIFO by comparing a read pointer of the FIFO with an expected read pointer.

하나의 실시 예에 있어서, 상기 비동기 인터페이스는 슬레이브 인터페이스 및 마스터 인터페이스를 포함하고, 상기 슬레이브 인터페이스는 슬레이브 센더, 슬레이브 CDC(clock domain crossing) 블록, 슬레이브 리시버를 포함하고, 상기 마스터 인터페이스는 마스터 센더, 마스터 CDC 블록, 마스터 리시버를 포함하며, 상기 슬레이브 인터페이스 및 상기 마스터 인터페이스 각각은 동일한 구조를 포함하며, 동일한 동작을 수행하고, 상기 슬레이브 CDC 블록 및 상기 마스터 CDC 블록 각각은 상기 FIFO를 포함한다.In one embodiment, the asynchronous interface includes a slave interface and a master interface, and the slave interface includes a slave sender, a slave clock domain crossing (CDC) block, and a slave receiver, and the master interface includes a master sender and a master interface. It includes a CDC block and a master receiver, each of the slave interface and the master interface has the same structure and performs the same operation, and each of the slave CDC block and the master CDC block includes the FIFO.

하나의 실시 예에 있어서, 상기 비동기 인터페이스는 상기 라이트 포인터와 상기 예측된 라이트 포인터의 비교 결과에 따라 상기 FIFO의 라이트 동작을 제어하기 위한 라이트 활성화 신호(write enable signal)를 생성하고, 상기 FIFO는 상기 라이트 활성화 신호가 활성화되는 동안, 상기 라이트 포인터가 지시하는 어드레스에 데이터를 저장한다.In one embodiment, the asynchronous interface generates a write enable signal for controlling a write operation of the FIFO according to a comparison result of the write pointer and the predicted write pointer, and the FIFO is the While the write activation signal is activated, data is stored at an address indicated by the write pointer.

하나의 실시 예에 있어서, 상기 비동기 인터페이스는 상기 리드 포인터와 상기 예측된 리드 포인터의 비교 결과에 따라 상기 FIFO의 리드 동작을 제어하기 위한 리드 활성화 신호(read enable signal)를 생성하고, 상기 FIFO는 상기 리드 활성화 신호가 활성화되는 동안, 상기 리드 포인터가 지시하는 어드레스에 저장된 데이터를 상기 마스터 리시버 또는 상기 슬레이브 리시버로 전송한다.In one embodiment, the asynchronous interface generates a read enable signal for controlling a read operation of the FIFO according to a comparison result of the read pointer and the predicted read pointer, and the FIFO is the While the read activation signal is activated, data stored at an address indicated by the read pointer is transmitted to the master receiver or the slave receiver.

하나의 실시 예에 있어서, 상기 시스템온칩은 애플리케이션 프로세서(application processor)를 포함한다.In one embodiment, the system-on-chip includes an application processor.

본 발명의 실시 예에 따른 시스템온칩은 클록 도메인이 다른 원거리 인터페이스의 경우, CPU와 메인 버스의 연결시 FIFO의 라이트 포인터와 리드 포인터 간의 인터벌을 일정하게 유지될 수 있도록 FIFO를 제어할 수 있다. In the case of a remote interface having a different clock domain, the system-on-chip according to an embodiment of the present invention may control the FIFO so that the interval between the write pointer and the read pointer of the FIFO can be kept constant when the CPU and the main bus are connected.

또한, 시스템온칩은 상기 FIFO가 풀(full)이 되거나 엠프티(empty)가 되는 것을 방지할 수 있다.In addition, the system-on-chip can prevent the FIFO from becoming full or empty.

도 1은 본 발명의 실시 예에 따른 시스템온칩을 도시한 블록도이다.
도 2은 본 발명의 다른 실시 예에 따른 시스템온칩을 도시한 블록도이다.
도 3는 도 2에 도시된 시스템온칩을 상세히 도시한 블록도이다.
도 4a는 CPU(10)로부터 메인 버스(20)로 데이터를 전송하는 과정을 설명하기 위한 블록도이다.
도 4b는 메인 버스(20)로부터 CPU(10)로 데이터를 전송하는 과정을 설명하기 위한 블록도이다.
도 5는 도 3에 도시된 CPU와 메인 버스의 클록을 도시한 타이밍도(timing diagram), 그리고 CPU와 메인 버스의 클록을 이용하여 게이티드 클록(gated clock)을 생성하는 방법을 도시한다.
도 6는 도 4a에 도시된 마스터 FIFO 또는 도 4b에 도시된 슬레이브 FIFO를 상세히 도시한 블록도이다.
도 7는 도 4a 또는 도 4b에 도시된 라이트 활성화 신호를 도시한 타이밍도이다.
도 8는 도 4a 또는 도 4b에 도시된 리드 활성화 신호를 도시한 타이밍도이다.
도 9는 도 1에 도시된 시스템온칩을 포함하는 컴퓨터 시스템(210)의 일 실시 예를 나타낸다.
도 10은 도 1에 도시된 시스템온칩을 포함하는 컴퓨터 시스템(220)의 다른 실시 예를 나타낸다.
도 11은 도 1에 도시된 시스템온칩을 포함하는 디지털 카메라 장치(300)을 도시한다.
도 12a 및 도 12b는 도 1에 도시된 시스템온칩을 포함하는 웨어러블 장치를 도시한다.
도 13는 도 1에 도시된 시스템온칩을 포함하는 웨어러블 장치(500)을 도시한다.
1 is a block diagram showing a system-on-chip according to an embodiment of the present invention.
2 is a block diagram showing a system-on-chip according to another embodiment of the present invention.
3 is a block diagram showing in detail the system-on-chip shown in FIG. 2.
4A is a block diagram illustrating a process of transmitting data from the CPU 10 to the main bus 20.
4B is a block diagram illustrating a process of transmitting data from the main bus 20 to the CPU 10.
FIG. 5 is a timing diagram showing the clocks of the CPU and the main bus shown in FIG. 3, and a method of generating a gated clock using the clocks of the CPU and the main bus.
6 is a block diagram showing in detail the master FIFO shown in FIG. 4A or the slave FIFO shown in FIG. 4B.
7 is a timing diagram illustrating a write activation signal shown in FIG. 4A or 4B.
8 is a timing diagram illustrating a read activation signal shown in FIG. 4A or 4B.
9 shows an embodiment of a computer system 210 including a system-on-chip shown in FIG. 1.
10 shows another embodiment of a computer system 220 including a system-on-chip shown in FIG. 1.
FIG. 11 shows a digital camera device 300 including a system-on-chip shown in FIG. 1.
12A and 12B illustrate a wearable device including a system-on-chip shown in FIG. 1.
13 shows a wearable device 500 including the system-on-chip shown in FIG. 1.

본문에 개시되어 있는 본 발명의 실시 예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시 예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시 예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시 예들에 한정되는 것으로 해석되어서는 안 된다.With respect to the embodiments of the present invention disclosed in the text, specific structural or functional descriptions are exemplified for the purpose of describing the embodiments of the present invention only, and the embodiments of the present invention may be implemented in various forms. It should not be construed as being limited to the described embodiments.

본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. In the present invention, various modifications may be made and various forms may be applied, and specific embodiments will be illustrated in the drawings and described in detail in the text. However, this is not intended to limit the present invention to a specific form disclosed, it should be understood to include all changes, equivalents, and substitutes included in the spirit and scope of the present invention.

제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. Terms such as first and second may be used to describe various elements, but the elements should not be limited by the terms. The above terms are used only for the purpose of distinguishing one component from another component. For example, without departing from the scope of the present invention, a first element may be referred to as a second element, and similarly, a second element may be referred to as a first element.

어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.When a component is referred to as being "connected" or "connected" to another component, it is understood that it may be directly connected or connected to the other component, but other components may exist in the middle. It should be. On the other hand, when a component is referred to as being "directly connected" or "directly connected" to another component, it should be understood that there is no other component in the middle. Other expressions describing the relationship between components, such as "between" and "directly between" or "adjacent to" and "directly adjacent to" should be interpreted as well.

본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 개시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terms used in the present application are only used to describe specific embodiments, and are not intended to limit the present invention. Singular expressions include plural expressions unless the context clearly indicates otherwise. In the present application, terms such as "comprise" or "have" are intended to designate the existence of disclosed features, numbers, steps, actions, components, parts, or a combination thereof, but one or more other features or numbers, It is to be understood that the presence or addition of steps, actions, components, parts or combinations thereof does not preclude the possibility of preliminary exclusion.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless otherwise defined, all terms used herein including technical or scientific terms have the same meaning as commonly understood by one of ordinary skill in the art to which the present invention belongs. Terms as defined in a commonly used dictionary should be interpreted as having a meaning consistent with the meaning in the context of the related technology, and should not be interpreted as an ideal or excessive formal meaning unless explicitly defined in this application. Does not.

한편, 어떤 실시 예가 달리 구현 가능한 경우에 특정 블록 내에 명기된 기능 또는 동작이 순서도에 명기된 순서와 다르게 일어날 수도 있다. 예를 들어, 연속하는 두 블록이 실제로는 실질적으로 동시에 수행될 수도 있고, 관련된 기능 또는 동작에 따라서는 상기 블록들이 거꾸로 수행될 수도 있다.Meanwhile, when a certain embodiment can be implemented differently, a function or operation specified in a specific block may occur differently from the order specified in the flowchart. For example, two consecutive blocks may actually be executed at the same time, or the blocks may be executed in reverse, depending on a related function or operation.

이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예들을 설명한다.Hereinafter, exemplary embodiments of the present invention will be described with reference to the accompanying drawings.

도 1은 본 발명의 실시 예에 따른 시스템온칩을 도시한 블록도이다.1 is a block diagram showing a system-on-chip according to an embodiment of the present invention.

도 1을 참조하면, 시스템온칩(system-on-chip; 1)은 마스터(master; 2), 슬레이브(slave; 3) 그리고 마스터(2)와 슬레이브(3)를 연결하는 비동기 인터페이스(4)를 포함한다. 하나의 실시 예에 있어서, 마스터(2)는 CPU(Central Processing Unit), DMA(Direct Memory Access), 3차원 그래픽 가속기(3-Dimensional Graphic Accelerator) 중 어느 하나를 포함할 수 있다. 또한, 슬레이브(3)는 메인 버스(main bus; 20)를 포함할 수 있다. Referring to FIG. 1, a system-on-chip (1) includes a master (2), a slave (3), and an asynchronous interface (4) connecting the master (2) and the slave (3). Includes. In one embodiment, the master 2 may include any one of a Central Processing Unit (CPU), Direct Memory Access (DMA), and a 3-Dimensional Graphic Accelerator. Further, the slave 3 may include a main bus 20.

비동기 인터페이스(4)는 슬레이브 인터페이스(slave interface; 5) 및 마스터 인터페이스(master interface; 6)를 포함한다. 슬레이브 인터페이스(5) 및 마스터 인터페이스(6)는 도 2와 도 3에서 상세히 설명될 것이다. The asynchronous interface 4 includes a slave interface 5 and a master interface 6. The slave interface 5 and the master interface 6 will be described in detail in FIGS. 2 and 3.

비동기 인터페이스(4)는 클록 도메인(clock domain)이 서로 다른 경우에 적용될 수 있다. 예를 들면, 마스터(2)는 마스터 클록(master clock)에 동기되어 동작할 수 있다. 또한, 슬레이브(3)는 슬레이브 클록(slave clock)에 동기되어 동작할 수 있다. 비동기 인터페이스(4)는 마스터(2)와 슬레이브(3) 사이를 연결할 수 있다. The asynchronous interface 4 can be applied when the clock domains are different from each other. For example, the master 2 may operate in synchronization with a master clock. In addition, the slave 3 may operate in synchronization with a slave clock. The asynchronous interface 4 can connect between the master 2 and the slave 3.

비동기 인터페이스(4)는 마스터(2)와 슬레이브(3)를 연결하기 위한 FIFO(first-in first-out)를 포함할 수 있다. FIFO는 리드 포인터(read pointer)와 라이트 포인터(write pointer)를 포함한다. 상기 라이트 포인터와 상기 리드 포인터가 일정한 간격을 유지하지 못하는 경우, FIFO는 풀(full) 또는 엠프티(empty) 상태를 가질 수 있다. 이로 인하여, 마스터(2)와 슬레이브(3) 간의 전송이 깨질 수 있다. The asynchronous interface 4 may include a first-in first-out (FIFO) for connecting the master 2 and the slave 3. The FIFO contains a read pointer and a write pointer. When the write pointer and the read pointer do not maintain a constant distance, the FIFO may have a full or empty state. Due to this, transmission between the master 2 and the slave 3 may be broken.

본 발명의 실시 예에 따른 시스템온칩(1)은 FIFO의 라이트 포인터(write pointer)와 리드 포인터(read pointer) 사이의 인터벌(interval)을 유지할 수 있다. 라이트 포인터(write pointer)와 리드 포인터(read pointer) 사이의 인터벌을 유지하는 방법은 도 3에서 상세히 설명될 것이다.The system-on-chip 1 according to an embodiment of the present invention may maintain an interval between a write pointer and a read pointer of a FIFO. A method of maintaining an interval between a write pointer and a read pointer will be described in detail with reference to FIG. 3.

도 2은 본 발명의 다른 실시 예에 따른 시스템온칩을 도시한 블록도이다.2 is a block diagram showing a system-on-chip according to another embodiment of the present invention.

도 2를 참조하면, 시스템온칩(system-on-chip; 1)은 CPU(central processing unit; 10), 메인 버스(main bus; 20), 그리고 제1 내지 제3 블록(block; 31-33)을 포함한다. 하나의 실시 예에 있어서, 시스템온칩(1)은 모바일 장치(mobile device) 또는 웨어러블 장치(wearable device)에 적용될 수 있다. Referring to FIG. 2, a system-on-chip (1) is a central processing unit (CPU) 10, a main bus 20, and first to third blocks 31-33. Includes. In one embodiment, the system-on-chip 1 may be applied to a mobile device or a wearable device.

또한, 시스템온칩(1)은 CPU(10)와 메인 버스(20)를 연결하는 제1 비동기 인터페이스(asynchronous interface; 15) 그리고 메인 버스(20)와 제1 내지 제3 블록(31-33) 각각을 연결하는 제2 비동기 인터페이스(25)를 더 포함할 수 있다. 제1 내지 제 3 블록(31-33)은 기능(function)을 수행하는 기능블록(functional block)을 의미한다.In addition, the system-on-chip 1 includes a first asynchronous interface 15 connecting the CPU 10 and the main bus 20, and the main bus 20 and the first to third blocks 31-33, respectively. It may further include a second asynchronous interface 25 for connecting. The first to third blocks 31-33 refer to functional blocks that perform a function.

제1 비동기 인터페이스(15)는 제1 슬레이브 인터페이스(slave interface; 16)와 제1 마스터 인터페이스(master interface; 17)를 포함할 수 있다. 또한, 제2 비동기 인터페이스(25)는 제2 슬레이브 인터페이스(26)와 제2 내지 제4 마스터 인터페이스(27-29)를 포함할 수 있다. 슬레이브 인터페이스 및 마스터 인터페이스는 도 3, 도 4a 및 도 4b에서 상세히 설명될 것이다.The first asynchronous interface 15 may include a first slave interface 16 and a first master interface 17. In addition, the second asynchronous interface 25 may include a second slave interface 26 and second to fourth master interfaces 27-29. The slave interface and the master interface will be described in detail in FIGS. 3, 4A and 4B.

제1 및 제2 비동기 인터페이스(15, 25) 각각은 클록 도메인(clock domain)이 서로 다른 경우에 적용될 수 있다. 예를 들면, CPU(10)는 CPU 클록(clock)에 동기되어 동작할 것이다. 또한, 메인 버스(20)는 버스 클록(bus clock)에 동기되어 동작할 것이다. 제1 비동기 인터페이스(15)는 CPU(10)와 메인 버스(20) 사이를 연결할 수 있다. Each of the first and second asynchronous interfaces 15 and 25 may be applied when the clock domains are different from each other. For example, the CPU 10 will operate in synchronization with the CPU clock. In addition, the main bus 20 will operate in synchronization with a bus clock. The first asynchronous interface 15 may connect the CPU 10 and the main bus 20.

마찬가지로, 제1 내지 제3 블록(31-33) 각각은 각각의 동작 클록에 동기되어 동작할 것이다. 제2 비동기 인터페이스(25)는 메인 버스(20)와 제1 내지 제3 블록(31-33) 사이를 연결할 수 있다.Similarly, each of the first to third blocks 31-33 will operate in synchronization with their respective operation clocks. The second asynchronous interface 25 may connect the main bus 20 and the first to third blocks 31-33.

CPU(10)는 메인 버스(20)를 통하여 제1 내지 제3 블록(31-33)을 억세스할 수 있다. 예를 들면, CPU(10)는 메인 버스(20)를 통하여 제1 블록(31)으로부터 데이터를 수신할 수 있다. 그리고, CPU(10)는 메인 버스(20)를 통하여 제1 블록(31)으로 데이터를 전송할 수 있다. 또한, CPU(10)는 메인 버스(20)를 통하여 제2 블록(32)으로부터 데이터를 수신할 수 있다. 그리고, CPU(10)는 메인 버스(20)를 통하여 제2 블록(32)으로 데이터를 전송할 수 있다. 마찬가지로, CPU(10)는 메인 버스(20)를 통하여 제3 블록(33)으로부터 데이터를 수신할 수 있다. 그리고, CPU(10)는 메인 버스(20)를 통하여 제3 블록(33)으로 데이터를 전송할 수 있다.The CPU 10 may access the first to third blocks 31-33 through the main bus 20. For example, the CPU 10 may receive data from the first block 31 through the main bus 20. In addition, the CPU 10 may transmit data to the first block 31 through the main bus 20. In addition, the CPU 10 may receive data from the second block 32 through the main bus 20. In addition, the CPU 10 may transmit data to the second block 32 through the main bus 20. Likewise, the CPU 10 may receive data from the third block 33 via the main bus 20. In addition, the CPU 10 may transmit data to the third block 33 through the main bus 20.

하나의 실시 예에 있어서, CPU(10)는 ARM 프로세서(processor)를 포함할 수 있다. 또한, 제1 내지 제3 블록(31-33) 각각은 메모리 장치(memory device)를 포함할 수 있다.In one embodiment, the CPU 10 may include an ARM processor. In addition, each of the first to third blocks 31 to 33 may include a memory device.

한편, CPU(10)는 CPU 클록(clock)에 동기되어 동작할 수 있다. 또한, 메인 버스(20)는 버스 클록(bus clock)에 동기되어 동작할 수 있다. CPU(10)와 메인 버스(20)의 클록 도메인(clock domain)이 서로 다른 경우, 제1 비동기 인터페이스(15)는 데이터를 저장하기 위한 FIFO(first-in first out)를 포함할 수 있다.Meanwhile, the CPU 10 may operate in synchronization with a CPU clock. In addition, the main bus 20 may operate in synchronization with a bus clock. When the clock domains of the CPU 10 and the main bus 20 are different from each other, the first asynchronous interface 15 may include a first-in first out (FIFO) for storing data.

마찬가지로, 메인 버스(20)는 버스 클록(bus clock)에 동기되어 동작할 수 있다. 또한, 제1 블록(31)은 메모리 동작 클록(memory operation clock)에 동기되어 동작할 수 있다. 메인 버스(20)와 제1 블록(31)의 클록 도메인(clock domain)이 서로 다른 경우, 제2 비동기 인터페이스(25)는 데이터를 저장하기 위한 FIFO를 포함할 수 있다.Likewise, the main bus 20 may operate in synchronization with a bus clock. Also, the first block 31 may operate in synchronization with a memory operation clock. When the clock domains of the main bus 20 and the first block 31 are different from each other, the second asynchronous interface 25 may include a FIFO for storing data.

만약 FIFO가 풀/엠프티(full/empty) 상태가 되면, 그 때마다 시스템온칩(1)의 성능은 떨어질 수 있다. 따라서, 시스템온칩(1)은 FIFO가 풀/엠프티(full/empty) 상태가 되지 않도록 제어할 수 있다.If the FIFO is in a full/empty state, the performance of the system-on-chip 1 may deteriorate each time. Accordingly, the system-on-chip 1 can control the FIFO so that it is not in a full/empty state.

본 발명의 실시 예에 따른 시스템온칩(1)은 FIFO의 라이트 포인터(write pointer)와 리드 포인터(read pointer) 사이의 인터벌(interval)을 일정하게 유지하기 위하여 라이트 포인터 또는 리드 포인터를 보상할 수 있다. 라이트 포인터(write pointer)와 리드 포인터(read pointer) 사이의 인터벌을 일정하게 유지하는 방법은 도 4a 또는 도 4b에서 설명될 것이다.The system-on-chip 1 according to an embodiment of the present invention may compensate for a write pointer or a read pointer in order to maintain a constant interval between a write pointer and a read pointer of a FIFO. . A method of maintaining a constant interval between a write pointer and a read pointer will be described in FIG. 4A or 4B.

도 3는 도 2에 도시된 시스템온칩을 상세히 도시한 블록도이다.3 is a block diagram showing in detail the system-on-chip shown in FIG. 2.

도 2 및 도 3를 참조하면, 도 3에서 CPU(10), 제1 비동기 인터페이스(15) 및 메인 버스(20)가 도시된다. 본 발명의 실시 예에 따른 제1 비동기 인터페이스(15)는 슬레이브 인터페이스(16), 마스터 인터페이스(17) 그리고 클록 매니지먼트 유닛(clock management unit; 18)을 포함할 수 있다.2 and 3, a CPU 10, a first asynchronous interface 15, and a main bus 20 are shown in FIG. 3. The first asynchronous interface 15 according to an embodiment of the present invention may include a slave interface 16, a master interface 17, and a clock management unit 18.

슬레이브 인터페이스(16)는 슬레이브 센더(slave sender; 16A), 슬레이브 CDC 블록(slave clock domain crossing block; 16B) 그리고 슬레이브 리시버(slave receiver; 16C)를 포함한다. 마찬가지로, 마스터 인터페이스(17)는 마스터 센더(master sender; 17A), 마스터 CDC 블록(master clock domain crossing block; 17B) 그리고 마스터 리시버(master receiver; 17C)를 포함한다.The slave interface 16 includes a slave sender 16A, a slave clock domain crossing block 16B, and a slave receiver 16C. Similarly, the master interface 17 includes a master sender 17A, a master clock domain crossing block 17B, and a master receiver 17C.

슬레이브 인터페이스(16)와 마스터 인터페이스(17)는 동일한 구조를 포함하며, 동일한 동작을 수행한다.The slave interface 16 and the master interface 17 have the same structure and perform the same operation.

CPU(10)는 슬레이브 인터페이스(16)와 마스터 인터페이스(17)를 통하여 메인 버스(20)로 데이터를 전송할 수 있다. 구체적으로, 슬레이브 센더(16A)는 마스터 CDC 블록(17B)을 통하여 마스터 리시버(17C)로 데이터를 전송할 수 있다. 마스터 CDC 블록(17B)은 슬레이브 센더(16A)로부터 전송된 데이터를 저장하는 FIFO를 포함한다. CPU(10)가 메인 버스(20)로 데이터를 전송하는 라이팅 동작은 도 4a에서 상세히 설명될 것이다.The CPU 10 may transmit data to the main bus 20 through the slave interface 16 and the master interface 17. Specifically, the slave sender 16A may transmit data to the master receiver 17C through the master CDC block 17B. The master CDC block 17B includes a FIFO that stores data transmitted from the slave sender 16A. The writing operation in which the CPU 10 transmits data to the main bus 20 will be described in detail in FIG. 4A.

또한, 메인 버스(20)는 슬레이브 인터페이스(16)와 마스터 인터페이스(17)를 통하여 CPU(10)로 데이터를 전송할 수 있다. 구체적으로, 마스터 센더(17A)는 슬레이브 CDC 블록(16B)을 통하여 슬레이브 리시버(16C)로 데이터를 전송할 수 있다. 슬레이브 CDC 블록(16B)은 마스터 센더(17A)로부터 전송된 데이터를 저장하는 FIFO를 포함한다. CPU(10)가 메인 버스(20)로부터 데이터를 수신하는 리드 동작은 도 4b에서 상세히 설명될 것이다.In addition, the main bus 20 may transmit data to the CPU 10 through the slave interface 16 and the master interface 17. Specifically, the master sender 17A may transmit data to the slave receiver 16C through the slave CDC block 16B. The slave CDC block 16B includes a FIFO that stores data transmitted from the master sender 17A. The read operation in which the CPU 10 receives data from the main bus 20 will be described in detail in FIG. 4B.

클록 매니지먼트 유닛(18)은 CPU(10)와 메인 버스(20) 사이의 클록 정보를 슬레이브 인터페이스(16)와 마스터 인터페이스(17)로 전송할 수 있다. 예를 들면, 클록 매니지먼트 유닛(18)은 CPU(10)의 동작 클록인 CPU 클록에 관한 정보(F_CCLK)와 메인 버스(20)의 동작 클록인 버스 클록에 관한 정보(F_BCLK)를 슬레이브 인터페이스(16)와 마스터 인터페이스(17)로 전송할 수 있다.The clock management unit 18 may transmit clock information between the CPU 10 and the main bus 20 to the slave interface 16 and the master interface 17. For example, the clock management unit 18 transmits information (F_CCLK) about the CPU clock, which is the operation clock of the CPU 10, and information about the bus clock (F_BCLK), which is the operation clock of the main bus 20, to the slave interface 16. ) And the master interface 17.

도 3에서 CPU(10) 및 메인 버스(20)은 각각 제 1 IP(intellectual Property) 및 제 2 IP의 한 실시예일뿐 이에 한정되지 않고 다른 IP들일 수 있다. 따라서, 상기 제 1 IP가 슬레이브로 동작할 경우 슬레이브 인터페이스(16)은 마스터 인터페이스로 동작할 수 있고, 상기 제 2 IP가 마스터로 동작할 경우 마스터 인터페이스(17)은 슬레이브 인터페이스로 동작할 수 있다.In FIG. 3, the CPU 10 and the main bus 20 are only one embodiment of a first IP (intellectual property) and a second IP, respectively, but are not limited thereto and may be different IPs. Accordingly, when the first IP operates as a slave, the slave interface 16 can operate as a master interface, and when the second IP operates as a master, the master interface 17 can operate as a slave interface.

도 4a는 CPU(10)로부터 메인 버스(20)로 데이터를 전송하는 과정을 설명하기 위한 블록도이다. 도 4b는 메인 버스(20)로부터 CPU(10)로 데이터를 전송하는 과정을 설명하기 위한 블록도이다. 즉, 도 4a는 CPU(10)의 라이트 동작을 설명하고, 도 4b는 CPU(10)의 리드 동작을 설명한다. 4A is a block diagram illustrating a process of transmitting data from the CPU 10 to the main bus 20. 4B is a block diagram illustrating a process of transmitting data from the main bus 20 to the CPU 10. That is, FIG. 4A describes the write operation of the CPU 10, and FIG. 4B describes the read operation of the CPU 10.

도 3 및 도 4a를 참조하면, 비동기 인터페이스(15)는 슬레이브 센더(16A), 마스터 CDC 블록(17B), 그리고 마스터 리시버(17C)를 포함할 수 있다.3 and 4A, the asynchronous interface 15 may include a slave sender 16A, a master CDC block 17B, and a master receiver 17C.

슬레이브 센더(16A)와 마스터 CDC 블록(17B)은 동일한 클록 도메인 내에 있다. 또한, 마스터 리시버(17C)는 슬레이브 센터(16A) 및 마스터 CDC 블록(17B)과 다른 클록 도메인에 있다. 즉, 마스터 FIFO(17B_1)의 리드 동작과 라이트 동작은 서로 다른 클록 도메인에서 실행될 수 있다. 예를 들면, CPU(10)는 CPU 클록에 동기되어 동작할 수 있다. 메인 버스(20)는 버스 클록에 동기되어 동작할 수 있다. The slave sender 16A and the master CDC block 17B are in the same clock domain. Further, the master receiver 17C is in a different clock domain from the slave center 16A and the master CDC block 17B. That is, the read operation and the write operation of the master FIFO 17B_1 may be performed in different clock domains. For example, the CPU 10 can operate in synchronization with the CPU clock. The main bus 20 may operate in synchronization with a bus clock.

CPU 클록이 버스 클록보다 더 빠르면, 슬레이브 센더(16A)는 CPU 클록과 버스 클록의 속도 비율(speed ratio)에 따라 생성된 게이티드 클록(gated clock; GCLK)에 동기되어 데이터(D)를 마스터 FIFO(17B_1)로 전송할 것이다. 즉, 서로 다른 클록 도메인의 비동기 클록들의 속도비를 참조하여, 상기 서로 다른 클록 도메인간의 리드되는 데이터 전송량과 라이트되는 데이터의 전송량이 사실상 동일하도록 게이티드 클록을 생성할 수 있다. 게이티드 클록(GCLK)을 생성하는 방법은 도 5에서 설명될 것이다.If the CPU clock is faster than the bus clock, the slave sender 16A synchronizes with the gated clock (GCLK) generated according to the speed ratio of the CPU clock and the bus clock to transfer the data D to the master FIFO. Will be transferred to (17B_1). That is, the gated clock may be generated so that the amount of data to be read and the amount of data to be written between the different clock domains are substantially the same by referring to the speed ratio of asynchronous clocks in different clock domains. A method of generating the gated clock GCLK will be described with reference to FIG. 5.

슬레이브 센더(16A)는 제1 슬레이브 싱크로나이저(slave synchronizer; 16A_1)과 슬레이브 라이트 비활성화 로직(slave write disable logic; 16A_2)을 포함할 수 있다. 제1 슬레이브 싱크로나이저(16A_1)는 데이터를 안정적으로 전송하기 위한 버퍼 기능(buffer function)을 실행할 수 있다. 슬레이브 라이트 비활성화 로직(16A_2)은 슬레이브 라이트 활성화 신호(slave write enable signal; S_WE)를 비활성화시킬 수 있다.The slave sender 16A may include a first slave synchronizer 16A_1 and a slave write disable logic 16A_2. The first slave synchronizer 16A_1 may execute a buffer function for stably transmitting data. The slave write deactivation logic 16A_2 may deactivate a slave write enable signal (S_WE).

마스터 CDC 블록(17B)은 마스터 FIFO(master first-in first-out; 17B_1), 제2 마스터 싱크로나이저(17B_2) 및 마스터 라이트 인터벌 체커(master write interval checker; 17B_3)를 포함할 수 있다. The master CDC block 17B may include a master first-in first-out (FIFO) 17B_1, a second master synchronizer 17B_2, and a master write interval checker 17B_3.

마스터 FIFO(17B_1)는 슬레이브 센더(16A)로부터 전송된 데이터(D)를 게이티드 클록(GCLK)에 동기되어 저장할 수 있다. The master FIFO 17B_1 may store data D transmitted from the slave sender 16A in synchronization with the gated clock GCLK.

예를 들면, 마스터 FIFO(17B_1)는 CPU(10)의 라이트 동작을 위하여 메인 버스(20)를 통하여 메모리 장치에 저장될 데이터를 저장할 수 있다. 마스터 FIFO(17B_1)는 데이터가 저장된 어드레스를 지시하는 라이트 포인터(WPTR)와 데이터를 읽어낼 어드레스를 지시하는 리드 포인터(RPTR)를 포함한다. 즉, 마스터 FIFO(17B_1)는 CPU(10)의 라이트 동작을 위한 데이터를 라이트 포인터(WPTR)에 따라 저장할 수 있다. 또한, 마스터 FIFO(17B_1)는 상기 저장된 데이터를 리드 포인터(RPTR)에 따라 마스터 리시버(17C)를 거쳐 메인 버스(20)로 전송할 수 있다. 마스터 FIFO(17B_1)의 라이트 포인터(WPTR)와 리드 포인터(RPTR)는 도 6에서 상세히 설명될 것이다.For example, the master FIFO 17B_1 may store data to be stored in the memory device through the main bus 20 for a write operation of the CPU 10. The master FIFO 17B_1 includes a write pointer WPTR indicating an address in which data is stored and a read pointer RPTR indicating an address to read data from. That is, the master FIFO 17B_1 may store data for a write operation of the CPU 10 according to the write pointer WPTR. In addition, the master FIFO 17B_1 may transmit the stored data to the main bus 20 through the master receiver 17C according to the read pointer RPTR. The write pointer WPTR and the read pointer RPTR of the master FIFO 17B_1 will be described in detail with reference to FIG. 6.

제2 마스터 싱크로나이저(17B_2)는 마스터 리시버(17C)로부터 현재 리드 포인터(RPTR)를 안정적으로 수신하기 위한 depth를 가질 수 있다. 싱크로나이저의 depth는 수신된 신호를 동기화하여 올바른 값으로 전달하기 위하여 정의된 클록 사이클 수를 의미한다. The second master synchronizer 17B_2 may have a depth for stably receiving the current read pointer RPTR from the master receiver 17C. The depth of the synchronizer means the number of clock cycles defined in order to synchronize the received signal and deliver the correct value.

마스터 라이트 인터벌 체커(17B_3)는 예측된 라이트 포인터(expected write pointer; EWPTR)를 생성할 수 있다. 하나의 실시 예로서, 마스터 라이트 인터벌 체커(17B_3)는 수학식 1에 따라 예측된 라이트 포인터(EWPTR)를 생성할 수 있다. 마스터 라이트 인터벌 체커(17B_3)는 현재 라이트 포인터(WPTR)와 예측된 라이트 포인터(EWPTR)를 비교한다. 마스터 라이트 인터벌 체커(17B_3)는 상기 비교된 결과를 제1 슬레이브 싱크로나이저(16A_1)를 통하여 슬레이브 라이트 비활성화 로직(16A_2)으로 전송한다.The master write interval checker 17B_3 may generate an expected write pointer (EWPTR). As an embodiment, the master write interval checker 17B_3 may generate the predicted write pointer EWPTR according to Equation 1. The master write interval checker 17B_3 compares the current write pointer WPTR and the predicted write pointer EWPTR. The master write interval checker 17B_3 transmits the compared result to the slave write deactivation logic 16A_2 through the first slave synchronizer 16A_1.

슬레이브 라이트 비활성화 로직(16A_2)은 상기 비교된 결과에 응답하여 슬레이브 라이트 활성화 신호(S_WE)를 비활성화시킬 수 있다. 현재 라이트 포인터(WPTR)가 예측된 라이트 포인터(EWPTR)보다 작을 경우 슬레이브 라이트 활성화 신호(S_WE)를 한 클록 사이클 동안 비 활성화시킬 수 있다. 예를 들면, 현재 라이트 포인터(WPTR)가 3'b011이고, 예측된 라이트 포인터가 3'b010이면, 슬레이브 라이트 비활성화 로직(16A_2)은 상기 비교된 결과에 응답하여 슬레이브 라이트 활성화 신호(S_WE)를 한 클록 동안, 비활성화시킬 수 있다. 슬레이브 라이트 활성화 신호(S_WE)는 도 7에서 상세히 설명될 것이다. The slave write deactivation logic 16A_2 may deactivate the slave write activation signal S_WE in response to the compared result. When the current write pointer WPTR is smaller than the predicted write pointer EWPTR, the slave write activation signal S_WE may be deactivated for one clock cycle. For example, if the current write pointer WPTR is 3'b011 and the predicted write pointer is 3'b010, the slave write deactivation logic 16A_2 generates a slave write activation signal S_WE in response to the compared result. During the clock, it can be disabled. The slave write activation signal S_WE will be described in detail with reference to FIG. 7.

리드 포인터(RPTR)는 마스터 FIFO(17B_1)에서 데이터(D)를 리드(read)하는 포인터의 값을 나타낸다. 예측된 리드 포인터(ERPTR)는 리드 포인터(RPTR)를 제2 마스터 싱크로나이저(17B_2)를 통하여 다른 클록 도메인인 마스터 CDC 블럭(17B)에서 인식 될 수 있다. 비동기 클럭 도메인간의 신호를 전달할 때, 신호가 안정적으로 전달되는 시점은 각 클럭 도메인의 PLL의 지터(jitter)에 의한 클럭의 변형 또는 다른 클럭 도메인간의 안정적인 신호 전달을 위해 지연이 발생할 수 있다. 예를 들면, 마스터 FIFO(17B_1)의 리드 시점을 마스터인 CPU(10)에서 정확하게 알 수 없다. 이러한 문제를 해결하기 위하여, 리드 포인터(RPTR) 대신에 예측된 리드 포인터(ERPTR)가 사용될 수 있다.The read pointer RPTR represents a value of a pointer for reading data D from the master FIFO 17B_1. The predicted read pointer ERPTR may be recognized by the master CDC block 17B, which is another clock domain, through the second master synchronizer 17B_2. When a signal is transmitted between asynchronous clock domains, a time point at which the signal is stably transmitted may be delayed for a clock modification due to jitter of the PLL of each clock domain or for stable signal transmission between different clock domains. For example, the read timing of the master FIFO 17B_1 cannot be accurately known from the master CPU 10. In order to solve this problem, the predicted read pointer ERPTR may be used instead of the read pointer RPTR.

또한, 마스터 라이트 인터벌 체커(17B_3)는 예측된 라이트 포인터(EWPTR)를 현재 리드 포인터(RPTR) 그리고 라이트 포인터(WPTR)와 리드 포인터(RPTR) 사이의 인터벌(interval)을 바탕으로 계산할 수 있다. 여기서 인터벌은 데이터 전송전에 미리 셋팅될 수 있는 정해진 값으로 라이트 포인터(WPTR)와 리드 포인터(RPTR)사이에 유지되어야 할 간격을 의미한다. 즉, 예측된 라이트 포인터(EWPTR)는 목표 라이트 포인터를 의미하며 수학식 1로 나타낼 수 있다. 수학식 1을 참조하면, 현재 리드 포인터(RPTR)에 제2 마스터 싱크로나이저(17B_2)의 depth를 합하여 안정적으로 동기화된 리드 포인터를 생성하고, 상기 동기화된 리드 포인터에 정해진 인터벌을 합하여 목표 라이트 포인터인 예측된 라이트 포인터(EWPTR)을 구할 수 있다. 예를 들면, 제2 마스터 싱크로나이저(17B_2)의 depth는 3이고, 상기 인터벌은 3이고, 현재 리드 포인터(RPTR)가 4이면, 예측된 라이트 포인터(EWPTR)는 10이 된다. 또한, 예측된 라이트 포인터(EWPTR)의 크기가 3-비트일 경우 라운드 로빈(round robin)방식으로 포인터가 변경되어 예측된 라이트 포인터(EWPTR)은 2가 된다.
In addition, the master write interval checker 17B_3 may calculate the predicted write pointer EWPTR based on the current read pointer RPTR and an interval between the write pointer WPTR and the read pointer RPTR. Here, the interval is a predetermined value that can be set in advance before data transmission, and means an interval to be maintained between the write pointer WPTR and the read pointer RPTR. That is, the predicted write pointer EWPTR means a target write pointer and can be expressed by Equation 1. Referring to Equation 1, a stably synchronized read pointer is generated by adding the depth of the second master synchronizer 17B_2 to the current read pointer RPTR, and a predetermined interval is added to the synchronized read pointer to be a target write pointer. The predicted light pointer (EWPTR) can be obtained. For example, if the depth of the second master synchronizer 17B_2 is 3, the interval is 3, and the current read pointer RPTR is 4, the predicted write pointer EWPTR is 10. In addition, when the size of the predicted write pointer EWPTR is 3-bit, the pointer is changed in a round robin manner, so that the predicted write pointer EWPTR becomes 2.

[[ 수학식Equation 1] One]

예측된 라이트 포인터(EWPTR) = 현재 리드 포인터 + 제2 마스터 싱크로나이저(17B_2)의 depth + 인터벌
Predicted write pointer (EWPTR) = current read pointer + depth of the second master synchronizer 17B_2 + interval

마스터 리시버(17C)는 제3 마스터 싱크로나이저(17C_1), 마스터 리드 인터벌 체커(master read interval checker; 17C_2)와 마스터 리드 비활성화 로직(master read disable logic; 17C_3)을 포함한다. The master receiver 17C includes a third master synchronizer 17C_1, a master read interval checker 17C_2, and a master read disable logic 17C_3.

제3 마스터 싱크로나이저(17C_1)는 현재 라이트 포인터(WPTR)를 안정적으로 수신하기 위하여 일정 depth를 가질 수 있다. The third master synchronizer 17C_1 may have a predetermined depth in order to stably receive the current write pointer WPTR.

마스터 리드 인터벌 체커(17C_2)는 예측된 리드 포인터(expected read pointer; ERPTR)를 생성할 수 있다. 하나의 실시 예로서, 마스터 리드 인터벌 체커(17C_2)는 수학식 2에 따라 예측된 리드 포인터(ERPTR)를 생성할 수 있다. 예측된 리드 포인터(ERPTR)은 목표 리드 포인터를 의미하며 수학식 2로 나타낼 수 있다. 수학식 2를 참조하면, 현재 라이트 포인터(WPTR)에 제3 마스터 싱크로나이저(17C_1)의 depth를 합하여 안정적으로 동기화된 라이트 포인터를 생성하고, 상기 동기화된 라이트 포인터에 정해진 인터벌을 감하여 목표 리드 포인터인 예측된 리드 포인터(ERPTR)을 구할 수 있다. 마스터 리드 인터벌 체커(17C_2)는 현재 리드 포인터(RPTR)와 예측된 리드 포인터(ERPTR)를 비교할 수 있다. The master read interval checker 17C_2 may generate an expected read pointer (ERPTR). As an embodiment, the master read interval checker 17C_2 may generate the predicted read pointer ERPTR according to Equation (2). The predicted read pointer ERPTR denotes a target read pointer and can be represented by Equation 2 Referring to Equation 2, a stably synchronized write pointer is generated by adding the depth of the third master synchronizer 17C_1 to the current write pointer WPTR, and a predetermined interval is subtracted from the synchronized write pointer to be a target read pointer. The predicted read pointer ERPTR can be obtained. The master read interval checker 17C_2 may compare the current read pointer RPTR and the predicted read pointer ERPTR.

마스터 리드 인터벌 체커(17C_2)는 상기 비교된 결과를 마스터 리드 비활성화 로직(17C_3)으로 전송한다. 마스터 리드 비활성화 로직(17C_3)은 상기 비교된 결과에 응답하여 마스터 리드 활성화 신호(M_RE)를 비활성화시킬 수 있다. 현재 리드 포인터(RPTR)가 예측된 리드 포인터(ERPTR)보다 클 경우 마스터 리드 활성화 신호(M_RE)를 한 클록 사이클 동안 비 활성화시킬 수 있다. 예를 들면, 현재 리드 포인터(RPTR)가 3'b001이고, 예측된 리드 포인터가 3'b000이면, 마스터 리드 비활성화 로직(17C_3)은 상기 비교된 결과에 응답하여 마스터 리드 활성화 신호(M_RE)를 한 클록 동안, 비활성화시킬 수 있다. 마스터 리드 활성화 신호(M_RE)는 도 8에서 상세히 설명될 것이다. The master read interval checker 17C_2 transmits the compared result to the master read deactivation logic 17C_3. The master read deactivation logic 17C_3 may deactivate the master read activation signal M_RE in response to the compared result. When the current read pointer RPTR is larger than the predicted read pointer ERPTR, the master read activation signal M_RE may be deactivated for one clock cycle. For example, if the current read pointer RPTR is 3'b001 and the predicted read pointer is 3'b000, the master read deactivation logic 17C_3 generates a master read activation signal M_RE in response to the compared result. During the clock, it can be disabled. The master read activation signal M_RE will be described in detail in FIG. 8.

또한, 마스터 리드 인터벌 체커(17C_2)는 예측된 리드 포인터(ERPTR)를 현재 라이트 포인터(WPTR)와 상기 인터벌을 바탕으로 계산할 수 있다. 즉, 예측된 리드 포인터(ERPTR)는 수학식 2로 나타낼 수 있다. 예를 들면, 제3 마스터 싱크로나이저(17C_1)의 depth는 3이고, 상기 인터벌은 3이고, 현재 라이트 포인터(WPTR)가 4이면, 예측된 리드 포인터(ERPTR)는 4이 된다.
Also, the master read interval checker 17C_2 may calculate the predicted read pointer ERPTR based on the current write pointer WPTR and the interval. That is, the predicted read pointer ERPTR may be represented by Equation 2. For example, if the depth of the third master synchronizer 17C_1 is 3, the interval is 3, and the current write pointer WPTR is 4, the predicted read pointer ERPTR is 4.

[[ 수학식Equation 2] 2]

예측된 리드 포인터(ERPTR) = 현재 라이트 포인터 + 제3 마스터 싱크로나이저(17C_1)의 depth - 인터벌
Predicted read pointer (ERPTR) = current write pointer + depth of the third master synchronizer 17C_1-interval

도 3 및 도 4b를 참조하면, 비동기 인터페이스(15)는 슬레이브 CDC 블록(16B), 슬레이브 리시버(16C), 그리고 마스터 센더(17A)를 포함할 수 있다.3 and 4B, the asynchronous interface 15 may include a slave CDC block 16B, a slave receiver 16C, and a master sender 17A.

마스터 센더(17A)와 슬레이브 CDC 블록(16B)은 동일한 클록 도메인 내에 있다. 즉, 슬레이브 FIFO(16B_1)의 리드 동작과 라이트 동작은 서로 다른 클록 도메인에서 실행될 수 있다. 예를 들면, CPU(10)는 CPU 클록에 동기되어 동작할 수 있다. 메인 버스(20)는 버스 클록에 동기되어 동작할 수 있다. CPU 클록이 버스 클록보다 더 빠르면, 마스터 센더(17A)는 CPU 클록과 버스 클록의 속도 비율(speed ratio)에 따라 CPU 클록을 조정한 게이티드 클록(GCLK)에 동기되어 데이터(D)를 슬레이브 FIFO(16B_1)로 전송할 수 있다. 즉, 서로 다른 클록 도메인의 비동기 클록들의 속도비를 참조하여, 상기 서로 다른 클록 도메인간의 리드되는 데이터 전송량과 라이트되는 데이터의 전송량이 사실상 동일하도록 게이티드 클록을 생성할 수 있다.The master sender 17A and the slave CDC block 16B are in the same clock domain. That is, the read operation and the write operation of the slave FIFO 16B_1 may be performed in different clock domains. For example, the CPU 10 can operate in synchronization with the CPU clock. The main bus 20 may operate in synchronization with a bus clock. When the CPU clock is faster than the bus clock, the master sender 17A synchronizes with the gated clock (GCLK), which adjusts the CPU clock according to the speed ratio of the CPU clock and the bus clock, and transfers the data D to the slave FIFO It can be transmitted to (16B_1). That is, the gated clock may be generated so that the amount of data to be read and the amount of data to be written between the different clock domains are substantially the same by referring to the speed ratio of asynchronous clocks in different clock domains.

마스터 센더(17A)는 제1 마스터 싱크로나이저(master synchronizer; 17A_1)과 마스터 라이트 비활성화 로직(master write disable logic; 17A_2)을 포함할 수 있다. 제1 마스터 싱크로나이저(17A_1)는 데이터를 안정적으로 전송하기 위한 버퍼 기능을 실행할 수 있다. The master sender 17A may include a first master synchronizer 17A_1 and a master write disable logic 17A_2. The first master synchronizer 17A_1 may perform a buffer function for stably transmitting data.

마스터 라이트 비활성화 로직(17A_2)은 마스터 라이트 활성화 신호(master write enable signal; M_WE)를 비활성화시킬 수 있다.The master write deactivation logic 17A_2 may deactivate a master write enable signal (M_WE).

슬레이브 CDC 블록(16B)은 슬레이브 FIFO(slave first-in first-out; 16B_1), 제2 슬레이브 싱크로나이저(16B_2) 및 슬레이브 라이트 인터벌 체커(slave write interval checker; 16B_3)를 포함할 수 있다.The slave CDC block 16B may include a slave first-in first-out (FIFO) 16B_1, a second slave synchronizer 16B_2, and a slave write interval checker 16B_3.

슬레이브 FIFO(16B_1)는 마스터 센더(17A)로부터 전송된 데이터(D)를 게이티드 클록(GCLK)에 동기되어 저장할 수 있다. The slave FIFO 16B_1 may store data D transmitted from the master sender 17A in synchronization with the gated clock GCLK.

예를 들면, 슬레이브 FIFO(16B_1)는 CPU(10)의 리드 동작을 위하여 메인 버스(20)를 통하여 메모리 장치로부터 리드된 데이터를 저장할 수 있다. 슬레이브 FIFO(16B_1)는 데이터가 저장된 어드레스를 지시하는 라이트 포인터(WPTR)와 데이터를 읽어낼 어드레스를 지시하는 리드 포인터(RPTR)를 포함한다. 즉, 슬레이브 FIFO(16B_1)는 CPU(10)의 리드 동작을 위한 데이터를 라이트 포인터(WPTR)에 따라 저장할 수 있다. 또한, 슬레이브 FIFO(16B_1)는 상기 저장된 데이터를 리드 포인터(RPTR)에 따라 슬레이브 리시버(16C)를 거쳐 CPU(10)로 전송할 수 있다. 슬레이브 FIFO(16B_1)의 라이트 포인터(WPTR)와 리드 포인터(RPTR)는 도 6에서 상세히 설명될 것이다.For example, the slave FIFO 16B_1 may store data read from the memory device through the main bus 20 for a read operation of the CPU 10. The slave FIFO 16B_1 includes a write pointer WPTR indicating an address in which data is stored and a read pointer RPTR indicating an address to read data from. That is, the slave FIFO 16B_1 may store data for a read operation of the CPU 10 according to the write pointer WPTR. In addition, the slave FIFO 16B_1 may transmit the stored data to the CPU 10 through the slave receiver 16C according to the read pointer RPTR. The write pointer WPTR and the read pointer RPTR of the slave FIFO 16B_1 will be described in detail with reference to FIG. 6.

제2 슬레이브 싱크로나이저(16B_2)는 현재 리드 포인터(RPTR)를 안정적으로 수신하기 위해 depth를 가질 수 있다.The second slave synchronizer 16B_2 may have a depth in order to stably receive the current read pointer RPTR.

슬레이브 라이트 인터벌 체커(16B_3)는 예측된 라이트 포인터(EWPTR)를 생성할 수 있다. 하나의 실시 예로서, 슬레이브 라이트 인터벌 체커(16B_3)는 수학식 1에 따라 예측된 라이트 포인터(EWPTR)를 생성할 수 있다. 슬레이브 라이트 인터벌 체커(16B_3)는 현재 라이트 포인터(WPTR)와 예측된 라이트 포인터(EWPTR)를 비교한다. 슬레이브 라이트 인터벌 체커(16B_3)는 상기 비교된 결과를 제1 마스트 싱크로나이저(17A_1)를 통하여 마스터 라이트 비활성화 로직(17A_2)으로 전송한다.The slave write interval checker 16B_3 may generate the predicted write pointer EWPTR. As an embodiment, the slave write interval checker 16B_3 may generate the predicted write pointer EWPTR according to Equation (1). The slave write interval checker 16B_3 compares the current write pointer WPTR and the predicted write pointer EWPTR. The slave write interval checker 16B_3 transmits the compared result to the master write deactivation logic 17A_2 through the first mast synchronizer 17A_1.

마스터 라이트 비활성화 로직(17A_2)은 상기 비교된 결과에 응답하여 마스터 라이트 활성화 신호(M_WE)를 비활성화시킬 수 있다. 예를 들면, 현재 라이트 포인터(WPTR)가 3'b011이고, 예측된 라이트 포인터가 3'b010이면, 마스터 라이트 비활성화 로직(17A_2)은 상기 비교된 결과에 응답하여 라이트 활성화 신호(WE)를 한 클록 동안, 비활성화시킬 수 있다. 라이트 활성화 신호(WE)는 도 7에서 상세히 설명될 것이다. The master write deactivation logic 17A_2 may deactivate the master write activation signal M_WE in response to the compared result. For example, if the current write pointer WPTR is 3'b011 and the predicted write pointer is 3'b010, the master write deactivation logic 17A_2 generates a write activation signal WE in response to the compared result. While, it can be deactivated. The write activation signal WE will be described in detail in FIG. 7.

또한, 슬레이브 라이트 인터벌 체커(16B_3)는 예측된 라이트 포인터(EWPTR)를 현재 리드 포인터(RPTR) 그리고 라이트 포인터(WPTR)와 리드 포인터(RPTR) 사이의 인터벌(interval)을 바탕으로 계산할 수 있다. 즉, 예측된 라이트 포인터(EWPTR)는 수학식 1로 나타낼 수 있다. In addition, the slave write interval checker 16B_3 may calculate the predicted write pointer EWPTR based on the current read pointer RPTR and an interval between the write pointer WPTR and the read pointer RPTR. That is, the predicted write pointer EWPTR can be represented by Equation 1.

슬레이브 리시버(16C)는 제3 슬레이브 싱크로나이저(16C_1), 슬레이브 리드 인터벌 체커(slave read interval checker; 16C_2)와 슬레이브 리드 비활성화 로직(slave read disable logic; 16C_3)을 포함한다. The slave receiver 16C includes a third slave synchronizer 16C_1, a slave read interval checker 16C_2, and a slave read disable logic 16C_3.

제3 슬레이브 싱크로나이저(16C_1)는 현재 라이트 포인터(WPTR)를 안정적으로 수신할 수 있다. The third slave synchronizer 16C_1 may stably receive the current write pointer WPTR.

슬레이브 리드 인터벌 체커(16C_2)는 예측된 리드 포인터(ERPTR)를 생성할 수 있다. 하나의 실시 예로서, 슬레이브 리드 인터벌 체커(16C_2)는 수학식 2에 따라 예측된 리드 포인터(ERPTR)를 생성할 수 있다. 슬레이브 리드 인터벌 체커(16C_2)는 현재 리드 포인터(RPTR)와 예측된 리드 포인터(ERPTR)를 비교할 수 있다. The slave read interval checker 16C_2 may generate the predicted read pointer ERPTR. As an embodiment, the slave read interval checker 16C_2 may generate the predicted read pointer ERPTR according to Equation (2). The slave read interval checker 16C_2 may compare the current read pointer RPTR and the predicted read pointer ERPTR.

슬레이브 리드 인터벌 체커(16C_2)는 상기 비교된 결과를 슬레이브 리드 비활성화 로직(16C_3)으로 전송한다. 슬레이브 리드 비활성화 로직(16C_3)은 상기 비교된 결과에 응답하여 슬레이브 리드 활성화 신호(S_RE)를 비활성화시킬 수 있다. 예를 들면, 현재 리드 포인터(RPTR)가 3'b001이고, 예측된 리드 포인터가 3'b000이면, 슬레이브 리드 비활성화 로직(16C_3)은 상기 비교된 결과에 응답하여 슬레이브 리드 활성화 신호(S_RE)를 한 클록 동안, 비활성화시킬 수 있다. 슬레이브 리드 활성화 신호(S_RE)는 도 8에서 상세히 설명될 것이다.The slave read interval checker 16C_2 transmits the compared result to the slave read deactivation logic 16C_3. The slave read deactivation logic 16C_3 may deactivate the slave read activation signal S_RE in response to the compared result. For example, if the current read pointer RPTR is 3'b001 and the predicted read pointer is 3'b000, the slave read deactivation logic 16C_3 generates a slave read activation signal S_RE in response to the compared result. During the clock, it can be disabled. The slave read activation signal S_RE will be described in detail with reference to FIG. 8.

또한, 슬레이브 리드 인터벌 체커(17C_2)는 예측된 리드 포인터(ERPTR)를 현재 라이트 포인터(WPTR)와 상기 인터벌을 바탕으로 계산할 수 있다. 즉, 예측된 리드 포인터(ERPTR)는 수학식 2로 나타낼 수 있다. In addition, the slave read interval checker 17C_2 may calculate the predicted read pointer ERPTR based on the current write pointer WPTR and the interval. That is, the predicted read pointer ERPTR may be represented by Equation 2.

도 1 내지 도 4b를 참조하면, 시스템온칩(1)에서 데이터의 입력과 출력의 양을 동일하게 유지시키는 것이 중요하다. 하지만, 서로 다른 클록 도메인 간에 먼 거리로 데이터를 전송하는 경우, 다양한 uncertainty가 존재할 수 있다.Referring to FIGS. 1 to 4B, it is important to maintain the same amount of data input and output in the system-on-chip 1. However, when data is transmitted over a long distance between different clock domains, various uncertainties may exist.

Uncertainty는 CPU 클록과 버스 클록 간의 비동기에 의하여 발생될 수 있다. 또한, Uncertainty는 버퍼 기능을 수행하는 싱크로나이저들(16A_1, 17B_2, 17C_1)에 의하여 발생될 수 있다. 마지막으로, Uncertainty는 서로 다른 PLL(phase locked loop)을 사용하는 경우 jitter의 누적에 의하여 발생될 수 있다. 따라서, uncertainty로 인한 영향을 보상하지 못하면, 라이트 포인터(WPTR)와 리드 포인터(RPTR) 간의 인터벌이 변할 수 있다. 즉, 마스터 FIFO(17B_1) 또는 슬레이브 FIFO(16B_1)는 풀/엠프티 상태나 오버런/언더런(Overrun/underrun) 상태를 유발할 수 있다.Uncertainty can be caused by asynchronously between the CPU clock and the bus clock. In addition, the uncertainty may be generated by the synchronizers 16A_1, 17B_2, and 17C_1 performing a buffer function. Finally, uncertainty may be generated by accumulation of jitter when different phase locked loops (PLLs) are used. Therefore, if the influence due to uncertainty is not compensated for, the interval between the write pointer WPTR and the read pointer RPTR may change. That is, the master FIFO 17B_1 or the slave FIFO 16B_1 may cause a full/empty state or an overrun/underrun state.

이러한 문제를 해결하기 위하여, 본 발명의 실시 예에 따른 시스템온칩(1)은 일정한 주기로 마스터 FIFO(17B_1) 또는 슬레이브 FIFO(16B_1)의 라이트 포인터(WPTR)와 리드 포인터(RPTR)의 인터벌을 체크해서 보상 할 것인지를 판단한다. 예를 들면, 마스터 FIFO(17B_1) 또는 슬레이브 FIFO(16B_1)의 depth가 8인 경우, 체크 주기는 8, 16, 24, 32 싸이클(cycle)로 설정할 수 있다. 또한, 보상 방법은 초기에 설정된 인터벌을 계속 유지하기 위하여 라이트 활성화 신호(WE) 또는 리드 활성화 신호(RE)를 비활성화시킬 수 있다. In order to solve this problem, the system-on-chip 1 according to the embodiment of the present invention checks the interval between the write pointer (WPTR) and the read pointer (RPTR) of the master FIFO (17B_1) or slave FIFO (16B_1) at regular intervals. Determine whether to compensate. For example, when the depth of the master FIFO 17B_1 or the slave FIFO 16B_1 is 8, the check period may be set to 8, 16, 24, or 32 cycles. In addition, the compensation method may deactivate the write activation signal WE or the read activation signal RE in order to continue maintaining the initially set interval.

라이트 포인터(WPTR)를 보상하기 위한 주기는 라이트 포인터(WPTR) 또는 리드 포인터(RPTR)의 MSB(most significant bit)를 이용하여 결정될 수 있다. 예를 들면, 라이트 포인터(WPTR) 또는 리드 포인터(RPTR)가 3비트로 구성되면, 라이트 포인터(WPTR) 또는 리드 포인터(RPTR)의 MSB의 라이징 에지의 주기는 8 싸이클(cycle)이다. 라이트 포인터(WPTR) 또는 리드 포인터(RPTR)의 MSB를 이용하면, 라이트 포인터(WPTR)의 보상 주기는 8 싸이클이 될 수 있다. 마찬가지로, 리드 포인터(RPTR)를 보상하기 위한 주기는 라이트 포인터(WPTR) 또는 리드 포인터(RPTR)의 MSB를 이용하여 결정될 수 있다.The period for compensating the write pointer WPTR may be determined using the most significant bit (MSB) of the write pointer WPTR or the read pointer RPTR. For example, when the write pointer WPTR or the read pointer RPTR is composed of 3 bits, the period of the rising edge of the MSB of the write pointer WPTR or the read pointer RPTR is 8 cycles. When the MSB of the write pointer WPTR or the read pointer RPTR is used, the compensation period of the write pointer WPTR may be 8 cycles. Likewise, a period for compensating the read pointer RPTR may be determined using the write pointer WPTR or the MSB of the read pointer RPTR.

만약 보상이 필요하면, 시스템온칩(1)은 서로 다른 클록들 간의 클록 비율을 이용하여 생성된 마스터 라이트 활성화 신호(M_WE), 슬레이브 리드 활성화 신호(S_RE), 슬레이브 라이트 활성화 신호(S_WE) 및 마스터 리드 활성화 신호(M_RE) 들 중 적어도 하나를 비활성화시킬 수 있다.If compensation is required, the system-on-chip 1 generates a master write activation signal (M_WE), a slave read activation signal (S_RE), a slave write activation signal (S_WE), and a master read generated using the clock ratio between different clocks. At least one of the activation signals M_RE may be deactivated.

슬레이브 인터페이스(5)와 마스터 인터페이스(6)사이의 데이터의 전송 거리가 멀어질수록 보상하는데 많은 시간이 소요된다. 따라서, 데이터 전송 거리를 고려하여 보상 체크 주기 및 보상 방법은 결정될 수 있다. 예를 들면, 제1 정책(policy)은 예측된 포인터와 현재 포인터의 차이가 1이면, 보상 방법을 실행하는 것이다. 제2 정책은 예측된 포인터와 현재 포인터의 차이가 2이면, 보상 방법을 실행하는 것이다. 제3 정책은 예측된 포인터와 현재 포인터의 차이가 1인 상태가 연속으로 두 번 나타나거나 예측된 포인터와 현재 포인터의 차이가 3이면, 보상 방법을 실행하는 것이다. As the data transmission distance between the slave interface 5 and the master interface 6 increases, it takes a lot of time to compensate. Accordingly, a compensation check period and a compensation method may be determined in consideration of the data transmission distance. For example, if the difference between the predicted pointer and the current pointer is 1, the first policy is to execute the compensation method. The second policy is to execute the compensation method if the difference between the predicted pointer and the current pointer is 2. The third policy is to execute the compensation method when the state in which the difference between the predicted pointer and the current pointer is 1 appears twice in succession, or when the difference between the predicted pointer and the current pointer is 3.

도 5는 도 3에 도시된 CPU와 메인 버스의 클록을 도시한 타이밍도(timing diagram), 그리고 CPU와 메인 버스의 클록을 이용하여 게이티드 클록(gated clock)을 생성하는 방법을 도시한다.FIG. 5 is a timing diagram showing the clocks of the CPU and the main bus shown in FIG. 3, and a method of generating a gated clock using the clocks of the CPU and the main bus.

도 3 내지 도 5를 참조하면, 슬레이브 센더(16A)와 마스터 CDC 블록(17B)은 동일한 클록 도메인 내에 있다. 이에 반하여, 마스터 CDC 블록(17B)과 마스터 리시버(17C)는 서로 다른 클록 도메인에 있다. 3 to 5, the slave sender 16A and the master CDC block 17B are in the same clock domain. In contrast, the master CDC block 17B and the master receiver 17C are in different clock domains.

슬레이브 센더(16A) 및 마스터 CDC 블록(17B)은 CPU 클록(CCLK)에 동기되어 동작할 수 있다. 예를 들면, 슬레이브 센더(16A)는 마스터 CDC 블록(17B)으로 데이터를 전송하는 경우, 데이터와 CPU 클록(CCLK)을 함께 마스터 CDC 블록(17B)으로 전송한다. 또한, 마스터 센더(17A)는 슬레이브 CDC 블록(16B)로 버스 클록(BCLK)를 전송한다.The slave sender 16A and the master CDC block 17B may operate in synchronization with the CPU clock CCLK. For example, when the slave sender 16A transmits data to the master CDC block 17B, it transmits the data and the CPU clock CCLK to the master CDC block 17B together. In addition, the master sender 17A transmits the bus clock BCLK to the slave CDC block 16B.

그러나, CPU(10)는 CPU 클록(CCLK)에 동기되어 동작하고, 메인 버스(20)는 BUS 클록(BCLK)에 동기되어 동작하는 경우, 마스터 CDC 블록(17B)은 게이티드 클록(gated clock; GCLK)에 동기되어 동작할 수 있다. However, when the CPU 10 operates in synchronization with the CPU clock CCLK, and the main bus 20 operates in synchronization with the BUS clock BCLK, the master CDC block 17B is a gated clock; It can operate in synchronization with GCLK).

이때, CPU 클록(CCLK)이 BUS 클록(BCLK)보다 더 빠르다. 예를 들면, CPU 클록(CCLK)이 7번 토글링(toggling)될 때, BUS 클록(BCLK)은 5번 토글링될 수 있다. At this time, the CPU clock CCLK is faster than the BUS clock BCLK. For example, when the CPU clock CCLK is toggled 7 times, the BUS clock BCLK may be toggled 5 times.

CPU(10)와 메인 버스(20)의 클록이 서로 다르기 때문에, CPU(10)는 데이터를 메인 버스(20)로 전송하기 위하여 메인 버스(20)의 클록과 유사한 게이티드 클록(GCLK)을 사용한다. Since the clocks of the CPU 10 and the main bus 20 are different from each other, the CPU 10 uses a gated clock (GCLK) similar to the clock of the main bus 20 to transfer data to the main bus 20. do.

게이티드 클록(GCLK)은 CPU 클록(CCLK)과 BUS 클록(BCLK)의 비율을 이용하여 생성된다. 본 발명의 따른 게이티드 클럭 생성 방법은 느린 클럭비(slow clock gear ratio;예를 들면 5)의 계속 누적시켜서 빠른 클럭비(fast clock ratio;예를 들면 7)만큼 누적되면 한번씩 clock을 발생시키는 방법이다. 처음 시작은 항상 느린 클럭비를 기어 썸으로 정하여 시작한다.The gated clock GCLK is generated using the ratio of the CPU clock CCLK and the BUS clock BCLK. The gated clock generation method according to the present invention continuously accumulates a slow clock gear ratio (e.g. 5) to generate a clock once when it is accumulated by a fast clock ratio (e.g. 7). to be. The first start always starts with the slow clock ratio set to the gear thumb.

예를 들면, 기어 비율(gear ratio)은 7:5이다. 기어 썸(gear sum; GS)은 기어 썸(GS)을 CPU 클록(CCLK)의 비율(즉, 7)로 나눈 나머지에 BUS 클록(BCLK)의 비율(즉, 5)을 더한 값이다. 게이티드 클록(GCLK)은 기어 썸(GS)을 CPU 클록(CCLK)으로 나눈 결과를 바탕으로 생성될 수 있다.For example, the gear ratio is 7:5. The gear sum (GS) is a value obtained by dividing the gear sum (GS) by the ratio of the CPU clock (CCLK) (i.e., 7) and adding the ratio (i.e., 5) of the BUS clock (BCLK) to the remainder. The gated clock GCLK may be generated based on a result of dividing the gear thumb GS by the CPU clock CCLK.

게이티드 클록(GCLK)를 만드는 방법은 다음과 같다. 첫 번째 기어 썸은 BUS 클록(BCLK)의 비율인 5이다. 5를 CPU 클록(CCLK)의 비율인 7로 나눈다. 몫은 0이고, 나머지는 5이다.The method of making a gated clock (GCLK) is as follows. The first gear thumb is 5, which is the ratio of the BUS clock (BCLK). Divide 5 by 7, which is the ratio of the CPU clock (CCLK). The quotient is 0, and the remainder is 5.

두 번째 기어 썸은 나머지인 5에 BUS 클록(BCLK)의 비율인 5를 더하여 생성된다. 즉, 두 번째 기어 썸은 10이다. 10를 CPU 클록(CCLK)의 비율인 7로 나눈다. 몫은 1이고, 나머지는 3이다.The second gear thumb is generated by adding 5, which is the ratio of the BUS clock (BCLK), to the remaining 5. That is, the second gear thumb is 10. Divide 10 by 7, which is the ratio of the CPU clock (CCLK). The quotient is 1, and the remainder is 3.

세 번째 기어 썸은 나머지인 3에 BUS 클록(BCLK)의 비율인 5를 더하여 생성된다. 즉, 세 번째 기어 썸은 8이다. 8를 CPU 클록(CCLK)의 비율인 7로 나눈다. 몫은 1이고, 나머지는 1이다.The third gear thumb is generated by adding 5, which is the ratio of the BUS clock (BCLK), to the remaining 3. That is, the third gear thumb is 8. Divide 8 by 7, which is the ratio of the CPU clock (CCLK). The quotient is 1, and the remainder is 1.

네 번째 기어 썸은 나머지인 1에 BUS 클록(BCLK)의 비율인 5를 더하여 생성된다. 즉, 네 번째 기어 썸은 6이다. 6를 CPU 클록(CCLK)의 비율인 7로 나눈다. 몫은 0이고, 나머지는 6이다.The fourth gear thumb is generated by adding 5, which is the ratio of the BUS clock (BCLK), to the remainder of 1. That is, the fourth gear thumb is 6. Divide 6 by 7, which is the ratio of the CPU clock (CCLK). The quotient is 0, and the remainder is 6.

다섯 번째 기어 썸은 나머지인 6에 BUS 클록(BCLK)의 비율인 5를 더하여 생성된다. 즉, 다섯 번째 기어 썸은 11이다. 11를 CPU 클록(CCLK)의 비율인 7로 나눈다. 몫은 1이고, 나머지는 4이다.The fifth gear thumb is generated by adding 5, which is the ratio of the BUS clock (BCLK), to the remaining 6. That is, the fifth gear thumb is 11. Divide 11 by 7, which is the ratio of the CPU clock (CCLK). The quotient is 1, and the remainder is 4.

여섯 번째 기어 썸은 나머지인 4에 BUS 클록(BCLK)의 비율인 5를 더하여 생성된다. 즉, 여섯 번째 기어 썸은 9이다. 9를 CPU 클록(CCLK)의 비율인 7로 나눈다. 몫은 1이고, 나머지는 2이다.The sixth gear thumb is generated by adding 5, which is the ratio of the BUS clock (BCLK), to the remaining 4. That is, the sixth gear thumb is 9. Divide 9 by 7, which is the ratio of the CPU clock (CCLK). The quotient is 1, and the remainder is 2.

일곱 번째 기어 썸은 나머지인 2에 BUS 클록(BCLK)의 비율인 5를 더하여 생성된다. 즉, 세 번째 기어 썸은 7이다. 7를 CPU 클록(CCLK)의 비율인 7로 나눈다. 몫은 1이고, 나머지는 0이다. 나머지가 0이 되면, 게이티드 클록(GCLK)를 만드는 한 주기가 종료된다. The seventh gear thumb is generated by adding 5, which is the ratio of the BUS clock (BCLK), to the remaining 2. That is, the third gear thumb is 7. Divide 7 by 7, which is the ratio of the CPU clock (CCLK). The quotient is 1, and the remainder is 0. When the remainder becomes 0, one cycle of making the gated clock GCLK ends.

몫이 1인 경우, 게이티드 클록(GCLK)은 토글링될 수 있다. 도 5에서는 FIFO에 저장시 게이티드 클록(GCLK)를 사용하는 실시예를 설명하였으나, 본 발명은 이에 제한되지 않고 FIFO에 데이터를 입력하는 센더의 클록을 그대로 사용하는 구조를 포함할 수 있다.When the quotient is 1, the gated clock GCLK may be toggled. In FIG. 5, an embodiment in which the gated clock (GCLK) is used when stored in the FIFO is described, but the present invention is not limited thereto, and a structure in which the clock of a sender that inputs data into the FIFO is used as it is.

도 6는 도 4a에 도시된 마스터 FIFO 또는 도 4b에 도시된 슬레이브 FIFO를 상세히 도시한 블록도이다.6 is a block diagram showing in detail the master FIFO shown in FIG. 4A or the slave FIFO shown in FIG. 4B.

도 4a, 도 4b 및 도 6을 참조하면, 슬레이브 FIFO(16B_1) 또는 마스터 FIFO(17B_1)는 리드 포인터(RPTR)와 라이트 포인터(WPTR)를 포함한다. 라이트 포인터(WPTR)는 CPU(10)로부터 전송된 데이터를 저장할 위치를 가리킨다. 리드 포인터(RPTR)는 슬레이브 FIFO(16B_1) 또는 마스터 FIFO(17B_1)에 저장된 데이터를 리드하기 위한 위치를 가리킨다.4A, 4B, and 6, the slave FIFO 16B_1 or the master FIFO 17B_1 includes a read pointer RPTR and a write pointer WPTR. The write pointer WPTR indicates a location to store the data transmitted from the CPU 10. The read pointer RPTR indicates a position for reading data stored in the slave FIFO 16B_1 or the master FIFO 17B_1.

데이터가 입력되면, 라이트 포인터(WPTR)는 증가된다. 즉, 라이트 포인터(WPTR)는 다음 라이트 동작을 할 어드레스를 가리킨다. 데이터가 출력되면, 리드 포인터(RPTR)는 증가된다. 즉, 리드 포인터(RPTR)는 다음 리드 동작을 할 어드레스를 가리킨다. 슬레이브 FIFO(16B_1) 또는 마스터 FIFO(17B_1)는 풀 상태가 될 때까지 데이터를 입력할 수 있다. 또한, 슬레이브 FIFO(16B_1) 또는 마스터 FIFO(17B_1)는 엠프티 상태가 될 때가지 데이터를 출력할 수 있다. 예를 들면, 리드 포인터(RPTR) 및 라이트 포인터(WPTR)은 라운드로빈(round robin)방식으로 계속해서 FIFO를 사용할 수 있다.When data is input, the write pointer WPTR is increased. That is, the write pointer WPTR points to an address for the next write operation. When data is output, the read pointer RPTR is increased. In other words, the read pointer RPTR indicates an address to perform the next read operation. The slave FIFO (16B_1) or the master FIFO (17B_1) can input data until the full state is reached. In addition, the slave FIFO (16B_1) or the master FIFO (17B_1) can output data until the empty state. For example, the read pointer RPTR and the write pointer WPTR may continue to use the FIFO in a round robin manner.

슬레이브 FIFO(16B_1) 또는 마스터 FIFO(17B_1)는 슬레이브 센더(16A)로부터 수신된 데이터를 저장할 수 있다. 예를 들면, 메인 버스(20)가 ARM의 AXI(Advanced eXtensible Interface)를 포함한다고 하면, AXI는 라이트 어드레스 채널(Write address channel), 라이트 데이터 채널(Write data channel), 라이트 리스폰스 채널(Write response channel), 리드 어드레스 채널(Read address channel) 및 리드 데이터 채널(Read data channel)를 포함한다. 각각의 채널들을 통하여 데이터는 전송되거나 수신될 수 있다. 각 채널들의 데이터를 묶어서 전송하는 것을 페이로드(payload)라고 한다. 슬레이브 FIFO(16B_1) 또는 마스터 FIFO(17B_1)에 저장된 데이터는 모든 채널의 정보를 하나로 묶은 페이로드를 포함할 수 있다. 예를 들면, CPU(10)는 메인 버스(20)로 페이로드를 전송할 수 있고, CPU(10)는 메인 버스(20)로부터 페이로드를 수신할 수 있다. 마찬가지로 메인 버스(20)는 CPU(10) 로 페이로드를 전송할 수 있고, 메인 버스(20)는 CPU(10) 로부터 페이로드를 수신할 수 있다. The slave FIFO 16B_1 or the master FIFO 17B_1 may store data received from the slave sender 16A. For example, if the main bus 20 includes an ARM Advanced eXtensible Interface (AXI), AXI is a write address channel, a write data channel, and a write response channel. ), a read address channel, and a read data channel. Data may be transmitted or received through each of the channels. Bundling and transmitting data of each channel is called a payload. Data stored in the slave FIFO 16B_1 or the master FIFO 17B_1 may include a payload that combines information of all channels into one. For example, the CPU 10 may transmit a payload to the main bus 20, and the CPU 10 may receive the payload from the main bus 20. Likewise, the main bus 20 may transmit a payload to the CPU 10, and the main bus 20 may receive the payload from the CPU 10.

슬레이브 FIFO(16B_1) 또는 마스터 FIFO(17B_1)는 000 번지에 제1 데이터(D1)을 저장할 수 있다. 슬레이브 FIFO(16B_1) 또는 마스터 FIFO(17B_1)는 001 번지에 제2 데이터(D2)을 저장할 수 있다. 슬레이브 FIFO(16B_1) 또는 마스터 FIFO(17B_1)는 010 번지에 제3 데이터(D3)을 저장할 수 있다. 슬레이브 FIFO(16B_1) 또는 마스터 FIFO(17B_1)는 011 번지에 제4 데이터(D4)을 저장할 수 있다. 현재 리드 포인터(RPTR)는 000 번지를 지시한다. 현재 라이트 포인터(WPTR)는 100 번지를 지시한다. 리드 포인터(RPTR)와 라이트 포인터(WPTR) 간의 인터벌은 4이다. The slave FIFO 16B_1 or the master FIFO 17B_1 may store the first data D1 at address 000. The slave FIFO 16B_1 or the master FIFO 17B_1 may store the second data D2 at address 001. The slave FIFO 16B_1 or the master FIFO 17B_1 may store the third data D3 at address 010. The slave FIFO 16B_1 or the master FIFO 17B_1 may store the fourth data D4 at address 011. The current read pointer (RPTR) indicates address 000. The current write pointer WPTR indicates address 100. The interval between the read pointer RPTR and the write pointer WPTR is 4.

도 7는 도 4a 또는 도 4b에 도시된 라이트 활성화 신호를 도시한 타이밍도이다. 7 is a timing diagram illustrating a write activation signal shown in FIG. 4A or 4B.

도 4a, 도 4b 및 도 7을 참조하면, 제1 라이트 활성화 신호(WE1)는 도 4a에 도시된 슬레이브 라이트 활성화 신호(S_WE), 도 4b에 도시된 마스터 라이트 활성화 신호(M_WE) 중 어느 하나를 포함할 수 있다. 4A, 4B, and 7, the first write activation signal WE1 is one of the slave write activation signal S_WE shown in FIG. 4A and the master write activation signal M_WE shown in FIG. 4B. Can include.

라이트 포인터(WPTR)에 대한 보상 정책이 실행되면, 도 4a에 도시된 슬레이브 라이트 활성화 신호(S_WE) 또는 도 4b에 도시된 마스터 라이트 활성화 신호(M_WE)를 1싸이클(cycle) 만큼 비활성화시킬 수 있다. When the compensation policy for the write pointer WPTR is executed, the slave write activation signal S_WE shown in FIG. 4A or the master write activation signal M_WE shown in FIG. 4B may be deactivated by one cycle.

예를 들면, 제1 라이트 활성화 신호(WE1)는 보상 정책이 실행되기 전 상태이다. 제2 라이트 활성화 신호(WE2)는 보상 정책이 실행되기 후 결과이다. 즉, t1 시간부터 t2 시간까지, 제2 라이트 활성화 신호(WE2)는 비활성화된다.For example, the first write activation signal WE1 is in a state before the compensation policy is executed. The second write activation signal WE2 is a result after the compensation policy is executed. That is, from time t1 to time t2, the second write activation signal WE2 is deactivated.

도 8는 도 4a 또는 도 4b에 도시된 리드 활성화 신호를 도시한 타이밍도이다. 8 is a timing diagram illustrating a read activation signal shown in FIG. 4A or 4B.

도 4a, 도 4b 및 도 8을 참조하면, 제1 리드 활성화 신호(RE1)는 도 4a에 도시된 슬레이브 리드 활성화 신호(S_RE), 도 4b에 도시된 마스터 리드 활성화 신호(M_RE) 중 어느 하나를 포함할 수 있다. 4A, 4B, and 8, the first read activation signal RE1 is one of the slave read activation signal S_RE shown in FIG. 4A and the master read activation signal M_RE shown in FIG. 4B. Can include.

리드 포인터(RPTR)에 대한 보상 정책이 실행되면, 도 4a에 도시된 슬레이브 리드 활성화 신호(S_RE) 또는 도 4b에 도시된 마스터 리드 활성화 신호(M_RE)를 1싸이클 만큼 비활성화시킬 수 있다. 예를 들면, 제1 리드 활성화 신호(RE1)는 보상 정책이 실행되기 전 상태이다. 제2 리드 활성화 신호(RE2)는 보상 정책이 실행된 후 결과이다. 즉, t1 시간부터 t2 시간까지, 제2 리드 활성화 신호(RE2)는 비활성화된다.When the compensation policy for the read pointer RPTR is executed, the slave read activation signal S_RE shown in FIG. 4A or the master read activation signal M_RE shown in FIG. 4B may be deactivated by one cycle. For example, the first read activation signal RE1 is in a state before the compensation policy is executed. The second read activation signal RE2 is a result after the compensation policy is executed. That is, from time t1 to time t2, the second read activation signal RE2 is deactivated.

도 9는 도 1에 도시된 시스템온칩을 포함하는 컴퓨터 시스템(210)의 일 실시 예를 나타낸다. 9 shows an embodiment of a computer system 210 including a system-on-chip shown in FIG. 1.

도 9를 참조하면, 컴퓨터 시스템(210)은 메모리 장치(211), 애플리케이션 프로세서(212), 무선 송수신기(213), 안테나(214), 입력 장치(215) 및 디스플레이 장치(216)를 포함한다. 애플리케이션 프로세서(212)는 메모리 장치와 메모리 장치를 제어하는 메모리 컨트롤러를 포함할 수 있다. Referring to FIG. 9, the computer system 210 includes a memory device 211, an application processor 212, a wireless transceiver 213, an antenna 214, an input device 215, and a display device 216. The application processor 212 may include a memory device and a memory controller that controls the memory device.

무선 송수신기(213)는 안테나(214)를 통하여 무선 신호를 주거나 받을 수 있다. 무선 송수신기(213)는 안테나(214)를 통하여 수신된 무선 신호를 애플리케이션 프로세서(212)에서 처리될 수 있는 신호로 변경할 수 있다.The wireless transceiver 213 may transmit or receive a wireless signal through the antenna 214. The wireless transceiver 213 may convert a wireless signal received through the antenna 214 into a signal that can be processed by the application processor 212.

따라서, 애플리케이션 프로세서(212)는 무선 송수신기(213)로부터 출력된 신호를 처리하고 처리된 신호를 디스플레이 장치(216)로 전송할 수 있다. 또한, 무선 송수신기(213)는 애플리케이션 프로세서(212)으로부터 출력된 신호를 무선 신호로 변경하고 변경된 무선 신호를 안테나(214)를 통하여 외부 장치로 출력할 수 있다.Accordingly, the application processor 212 may process the signal output from the wireless transceiver 213 and transmit the processed signal to the display device 216. In addition, the wireless transceiver 213 may convert a signal output from the application processor 212 into a wireless signal and output the changed wireless signal to an external device through the antenna 214.

입력 장치(215)는 애플리케이션 프로세서(212)의 동작을 제어하기 위한 제어 신호 또는 애플리케이션 프로세서(212)에 의하여 처리될 데이터를 입력할 수 있는 장치로서, 터치 패드 (touch pad)와 컴퓨터 마우스(computer mouse)와 같은 포인팅 장치(pointing device), 키패드(keypad), 또는 키보드로 구현될 수 있다.The input device 215 is a device capable of inputting a control signal for controlling the operation of the application processor 212 or data to be processed by the application processor 212, and includes a touch pad and a computer mouse. ), such as a pointing device, a keypad, or a keyboard.

하나의 실시 예에 있어서, 애플리케이션 프로세서(212)는 도 1에 도시된 시스템온칩(1)을 포함할 수 있다.In one embodiment, the application processor 212 may include the system-on-chip 1 shown in FIG. 1.

도 10은 도 1에 도시된 시스템온칩을 포함하는 컴퓨터 시스템(220)의 다른 실시 예를 나타낸다. 10 shows another embodiment of a computer system 220 including a system-on-chip shown in FIG. 1.

도 10를 참조하면, 컴퓨터 시스템(220)은 PC(personal computer), 네트워크 서버(Network Server), 태블릿(tablet) PC(personal computer), 넷-북(net-book), e-리더(e-reader), PDA (personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 또는 MP4 플레이어로 구현될 수 있다.Referring to FIG. 10, the computer system 220 includes a personal computer (PC), a network server, a tablet PC (personal computer), a net-book, and an e-reader (e- reader), a personal digital assistant (PDA), a portable multimedia player (PMP), an MP3 player, or an MP4 player.

컴퓨터 시스템(220)은 메모리 장치(221), 애플리케이션 프로세서(222), 입력 장치(223) 및 디스플레이 장치(224)를 포함한다. 애플리케이션 프로세서(222)는 메모리 장치와 메모리 장치를 제어하는 메모리 컨트롤러를 포함할 수 있다.The computer system 220 includes a memory device 221, an application processor 222, an input device 223, and a display device 224. The application processor 222 may include a memory device and a memory controller that controls the memory device.

애플리케이션 프로세서(222)는 입력 장치(223)를 통하여 입력된 데이터에 따라 메모리 장치(221)에 저장된 데이터를 디스플레이 장치(224)에 전달할 수 있다. 입력 장치(223)는 터치 패드 또는 컴퓨터 마우스와 같은 포인팅 장치, 키패드, 또는 키보드로 구현될 수 있다. 애플리케이션 프로세서(222)는 컴퓨터 시스템(220)의 전반적인 동작을 제어할 수 있고 메모리 장치(221)의 동작을 제어할 수 있다.The application processor 222 may transmit data stored in the memory device 221 to the display device 224 according to data input through the input device 223. The input device 223 may be implemented as a pointing device such as a touch pad or a computer mouse, a keypad, or a keyboard. The application processor 222 may control the overall operation of the computer system 220 and may control the operation of the memory device 221.

하나의 실시 예에 있어서, 애플리케이션 프로세서(222)는 도 1에 도시된 시스템온칩(1)을 포함할 수 있다.In one embodiment, the application processor 222 may include the system-on-chip 1 shown in FIG. 1.

도 11은 도 1에 도시된 시스템온칩을 포함하는 디지털 카메라 장치(300)을 도시한다.FIG. 11 shows a digital camera device 300 including a system-on-chip shown in FIG. 1.

도 11을 참조하면, 디지털 카메라 장치(300)는 안드로이드 운영체제(Android Operating System)로 동작하는 디지털 카메라이다. 하나의 실시 예에 있어서, 디지털 카메라 장치(300)는 갤럭시 카메라TM 또는 갤럭시 카메라2TM 를 포함할 수 있다. Referring to FIG. 11, the digital camera device 300 is a digital camera operating with an Android operating system. In one embodiment, the digital camera device 300 may include a Galaxy Camera TM or a Galaxy Camera 2 TM .

디지털 카메라 장치(300)는 영상 또는 동영상을 캡쳐하기 위한 이미지 센서(image sensor) 및 디지털 카메라 장치(300)를 제어하기 위한 애플리케이션 프로세서(미도시)를 포함할 수 있다. 하나의 실시 예에 있어서, 애플리케이션 프로세서는 도 1에 도시된 시스템온칩(1)을 포함할 수 있다.The digital camera device 300 may include an image sensor for capturing an image or video and an application processor (not shown) for controlling the digital camera device 300. In one embodiment, the application processor may include the system-on-chip 1 shown in FIG. 1.

도 12a 및 도 12b는 도 1에 도시된 시스템온칩을 포함하는 웨어러블 장치를 도시한다.12A and 12B illustrate a wearable device including a system-on-chip shown in FIG. 1.

도 12a 및 도 12b을 참조하면, 제1 및 제2 웨어러블 장치(410-420)는 안드로이드 운영체제(Android Operating System) 또는 타이젠 운영체제(TIZEN Operating System)로 동작하는 웨어러블 장치이다. 12A and 12B, the first and second wearable devices 410 to 420 are wearable devices that operate with an Android operating system or a Tizen operating system.

하나의 실시 예에 있어서, 제1 웨어러블 장치(410)는 갤럭시 기어2를 포함할 수 있다. 그리고 제2 웨어러블 장치(420)는 갤럭시기어 핏(Galaxy Gear fit)을 포함할 수 있다. In one embodiment, the first wearable device 410 may include a Galaxy Gear 2. In addition, the second wearable device 420 may include a Galaxy Gear fit.

제1 및 제2 웨어러블 장치(410-420) 각각은 안드로이드 운영체제(Android Operating System) 또는 타이젠 운영체제(TIZEN Operating System)를 구동하기 위한 애플리케이션 프로세서, 영상 또는 동영상을 캡쳐하기 위한 이미지 센서(image sensor) 및 촬영될 영상 또는 동영상을 디스플레이하기 위한 디스플레이 장치(display device)를 포함할 수 있다. Each of the first and second wearable devices 410-420 is an application processor for driving an Android operating system or a Tizen operating system, and an image sensor for capturing an image or a video. And a display device for displaying an image or moving picture to be photographed.

하나의 실시 예에 있어서, 제1 및 제2 웨어러블 장치(410-420)는 도 1에 도시된 시스템온칩(1)을 포함할 수 있다.In one embodiment, the first and second wearable devices 410 to 420 may include the system-on-chip 1 shown in FIG. 1.

도 13는 도 1에 도시된 시스템온칩을 포함하는 웨어러블 장치(500)을 도시한다.13 shows a wearable device 500 including the system-on-chip shown in FIG. 1.

도 13를 참조하면, 웨어러블 장치(500)는 안드로이드 운영체제 또는 타이젠 운영체제로 동작할 수 있다. 하나의 실시 예에 있어서, 웨어러블 장치(500)는 갤럭시 기어블링크TM를 포함할 수 있다. Referring to FIG. 13, the wearable device 500 may operate as an Android operating system or a Tizen operating system. In one embodiment, the wearable device 500 may include a Galaxy Gearblink TM .

웨어러블 장치(500)는 영상 또는 동영상을 캡쳐하기 위한 이미지 센서(image sensor; 510), 영상을 디스플레이하기 위한 디스플레이 장치(display device; 520), 소리를 듣기 위한 이어폰(ear phone; 530) 그리고 웨어러블 장치(500)를 제어하기 위한 애플리케이션 프로세서(미도시)를 포함할 수 있다. 하나의 실시 예에 있어서, 웨어러블 장치(500)는 도 1에 도시된 시스템온칩(1)를 포함할 수 있다.The wearable device 500 includes an image sensor 510 for capturing an image or video, a display device 520 for displaying an image, an earphone 530 for listening to a sound, and a wearable device. It may include an application processor (not shown) for controlling 500. In one embodiment, the wearable device 500 may include the system-on-chip 1 shown in FIG. 1.

본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.Although the present invention has been described with reference to an embodiment illustrated in the drawings, this is only exemplary, and those of ordinary skill in the art will understand that various modifications and other equivalent embodiments are possible therefrom. Therefore, the true technical protection scope of the present invention should be determined by the technical idea of the attached registration claims.

본 발명은 시스템온칩을 포함하는 모바일 장치(mobile device) 또는 웨어러블 장치(wearable device)에 적용할 수 있다.The present invention can be applied to a mobile device or a wearable device including a system-on-chip.

상기에서는 본 발명의 바람직한 실시 예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.Although described above with reference to preferred embodiments of the present invention, those skilled in the art will variously modify and change the present invention within the scope not departing from the spirit and scope of the present invention described in the following claims. You will understand that you can do it

1 : SYSTEM-ON-CHIP
2 : MASTER
3 : SLAVE
4 : SLAVE INTERFACE
5 : MASTER INTERFACE
10 : CPU
15 : ASYNCHRONOUS INTERFACE1
16 : SLAVE INTERFACE1
17 : MASTER INTERFACE1
18 : CLOCK MANAGEMENT UNIT
20 : BUS DEVICE
25 : ASYNCHRONOUS INTERFACE2
26 : SLAVE INTERFACE2
27 : MASTER INTERFACE2
28 : MASTER INTERFACE3
29 : MASTER INTERFACE4
31 : BLOCK1
32 : BLOCK2
33 : BLOCK3
210 : 컴퓨터 시스템의 제1 실시 예
220 : 컴퓨터 시스템의 제2 실시 예
300 : 디지털 카메라 장치
410: 웨어러블 장치의 제1 실시 예
420 : 웨어러블 장치의 제2 실시 예
500 : 웨어러블 장치의 제3 실시 예
510 : IMAGE SENSOR
520 : DISPLAY DEVICE
530 : EAR PHONE
1: SYSTEM-ON-CHIP
2: MASTER
3: SLAVE
4: SLAVE INTERFACE
5: MASTER INTERFACE
10: CPU
15: ASYNCHRONOUS INTERFACE1
16: SLAVE INTERFACE1
17: MASTER INTERFACE1
18: CLOCK MANAGEMENT UNIT
20: BUS DEVICE
25: ASYNCHRONOUS INTERFACE2
26: SLAVE INTERFACE2
27: MASTER INTERFACE2
28: MASTER INTERFACE3
29: MASTER INTERFACE4
31: BLOCK1
32: BLOCK2
33: BLOCK3
210: First embodiment of the computer system
220: computer system second embodiment
300: digital camera device
410: Wearable device 1st embodiment
420: Second embodiment of the wearable device
500: third embodiment of the wearable device
510: IMAGE SENSOR
520: DISPLAY DEVICE
530: EAR PHONE

Claims (10)

마스터(master);
슬레이브(slave); 및
상기 마스터와 상기 슬레이브에 연결된 FIFO(first-in first-out)를 포함하며, 상기 FIFO의 라이트 포인터(write pointer)와 예측된 라이트 포인터(expected write pointer)를 비교하여 상기 FIFO의 라이트 동작을 제어하고, 상기 FIFO의 리드 포인터(read pointer)와 예측된 리드 포인터(expected read pointer)를 비교하여 상기 FIFO의 리드 동작을 제어하는 비동기 인터페이스(asynchronous interface)를 포함하는 시스템온칩(system-on-chip).
Master;
Slave; And
It includes a first-in first-out (FIFO) connected to the master and the slave, and controls the write operation of the FIFO by comparing a write pointer of the FIFO with an expected write pointer, and And a system-on-chip including an asynchronous interface for controlling a read operation of the FIFO by comparing a read pointer of the FIFO with an expected read pointer.
제 1 항에 있어서,
상기 FIFO는 제 1 FIFO 및 제 2 FIFO를 포함하고
상기 비동기 인터페이스는 슬레이브 인터페이스 및 마스터 인터페이스를 포함하고,
상기 슬레이브 인터페이스는 슬레이브 센더, 상기 제 1 FIFO를 포함하는 슬레이브 CDC(clock domain crossing) 블록 및 슬레이브 리시버를 포함하고, 상기 마스터 인터페이스는 마스터 센더, 상기 제 2 FIFO를 포함하는 마스터 CDC 블록 및 마스터 리시버를 포함하는 시스템온칩.
The method of claim 1,
The FIFO includes a first FIFO and a second FIFO,
The asynchronous interface includes a slave interface and a master interface,
The slave interface includes a slave sender, a slave clock domain crossing (CDC) block including the first FIFO, and a slave receiver, and the master interface includes a master sender, a master CDC block including the second FIFO, and a master receiver. System-on-chip containing.
제 2 항에 있어서,
상기 비동기 인터페이스는 상기 라이트 포인터와 상기 예측된 라이트 포인터의 비교 결과에 따라 상기 FIFO의 라이트 동작을 제어하기 위한 라이트 활성화 신호(write enable signal)를 생성하는 시스템온칩.
The method of claim 2,
The asynchronous interface generates a write enable signal for controlling a write operation of the FIFO according to a comparison result of the write pointer and the predicted write pointer.
제 3 항에 있어서,
상기 FIFO는 상기 라이트 활성화 신호가 활성화되는 동안, 상기 라이트 포인터가 지시하는 어드레스에 데이터를 저장하는 시스템온칩.
The method of claim 3,
The FIFO stores data at an address indicated by the write pointer while the write activation signal is activated.
제 2 항에 있어서,
상기 비동기 인터페이스는 상기 리드 포인터와 상기 예측된 리드 포인터의 비교 결과에 따라 상기 FIFO의 리드 동작을 제어하기 위한 리드 활성화 신호(read enable signal)를 생성하는 시스템온칩.
The method of claim 2,
The asynchronous interface generates a read enable signal for controlling a read operation of the FIFO according to a result of comparing the read pointer and the predicted read pointer.
제 5 항에 있어서,
상기 FIFO는 상기 리드 활성화 신호가 활성화되는 동안, 상기 리드 포인터가 지시하는 어드레스에 저장된 데이터를 상기 마스터 리시버 또는 상기 슬레이브 리시버로 전송하는 시스템온칩.
The method of claim 5,
The FIFO transmits data stored at an address indicated by the read pointer to the master receiver or the slave receiver while the read activation signal is activated.
제 1 항에 있어서,
상기 비동기 인터페이스는 상기 리드 포인터와 상기 라이트 포인터 사이의 인터벌(interval)을 일정하게 유지되도록 보상하는 시스템온칩.
The method of claim 1,
The asynchronous interface compensates for maintaining a constant interval between the read pointer and the write pointer.
제 7 항에 있어서,
상기 예측된 리드 포인터는 상기 라이트 포인터와 상기 인터벌을 바탕으로 계산되고,
상기 예측된 라이트 포인터는 상기 리드 포인터와 상기 인터벌을 바탕으로 계산되는 시스템온칩.
The method of claim 7,
The predicted read pointer is calculated based on the write pointer and the interval,
The predicted write pointer is calculated based on the read pointer and the interval.
마스터(master), 슬레이브(slave) 및 상기 마스터와 상기 슬레이브를 연결하기 위한 FIFO(first-in first-out)를 포함하는 비동기 인터페이스(asynchronous interface)를 포함하는 시스템온칩(system-on-chip)의 구동 방법에 있어서,
상기 FIFO의 라이트 포인터(write pointer)와 예측된 라이트 포인터(expected write pointer)를 비교하는 단계; 및
상기 비교된 결과를 바탕으로 상기 FIFO의 라이트 동작을 제어하는 단계를 포함하는 시스템온칩의 구동 방법.
Of a system-on-chip including a master, a slave, and an asynchronous interface including a first-in first-out (FIFO) for connecting the master and the slave In the driving method,
Comparing a write pointer of the FIFO with an expected write pointer; And
And controlling the write operation of the FIFO based on the compared result.
제 9 항에 있어서,
상기 FIFO는 제 1 FIFO 및 제 2 FIFO를 포함하고
상기 비동기 인터페이스는 슬레이브 인터페이스 및 마스터 인터페이스를 포함하고,
상기 슬레이브 인터페이스는 슬레이브 센더, 상기 제 1 FIFO를 포함하는 슬레이브 CDC(clock domain crossing) 블록 및 슬레이브 리시버를 포함하고, 상기 마스터 인터페이스는 마스터 센더, 상기 제 2 FIFO를 포함하는 마스터 CDC 블록 및 마스터 리시버를 포함하는 시스템온칩의 구동 방법.
The method of claim 9,
The FIFO includes a first FIFO and a second FIFO,
The asynchronous interface includes a slave interface and a master interface,
The slave interface includes a slave sender, a slave clock domain crossing (CDC) block including the first FIFO, and a slave receiver, and the master interface includes a master sender, a master CDC block including the second FIFO, and a master receiver. System-on-chip driving method including.
KR1020140130493A 2014-08-04 2014-09-29 System-on-chip and driving method thereof KR102226284B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US14/611,306 US10013375B2 (en) 2014-08-04 2015-02-02 System-on-chip including asynchronous interface and driving method thereof
US15/996,477 US10423553B2 (en) 2014-08-04 2018-06-03 System-on-chip including asynchronous interface and driving method thereof

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020140099804 2014-08-04
KR20140099804 2014-08-04

Publications (2)

Publication Number Publication Date
KR20160016482A KR20160016482A (en) 2016-02-15
KR102226284B1 true KR102226284B1 (en) 2021-03-09

Family

ID=55357199

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140130493A KR102226284B1 (en) 2014-08-04 2014-09-29 System-on-chip and driving method thereof

Country Status (1)

Country Link
KR (1) KR102226284B1 (en)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR960032207A (en) * 1995-02-21 1996-09-17 구자홍 Interface device and method between heterogeneous buses
KR101861769B1 (en) * 2011-11-24 2018-05-29 삼성전자주식회사 Asynchronous bridge, method of operating the same, and system on chip having the same

Also Published As

Publication number Publication date
KR20160016482A (en) 2016-02-15

Similar Documents

Publication Publication Date Title
US10423553B2 (en) System-on-chip including asynchronous interface and driving method thereof
US9489009B2 (en) System on chip, bus interface and method of operating the same
US10969821B2 (en) Latency synchronization across clock domains
US10554865B2 (en) Display controller for generating video sync signal using external clock, an application processor including the controller, and an electronic system including the controller
US10372156B2 (en) System-on-chip to support full handshake and mobile device having the same
US8958517B2 (en) Clock phase adjustment for a low-latency FIFO
US10025732B2 (en) Preserving deterministic early valid across a clock domain crossing
US20170041086A1 (en) Data transmission apparatus for changing clock signal at runtime and data interface system including the same
US20090086874A1 (en) Apparatus and method of elastic buffer control
US20090323728A1 (en) Asynchronous data fifo that provides uninterrupted data flow
US10038450B1 (en) Circuits for and methods of transmitting data in an integrated circuit
US9367286B2 (en) Crossing pipelined data between circuitry in different clock domains
US10146251B2 (en) Semiconductor device
KR102427775B1 (en) asynchronous buffer with pointer offset
EP3200089B1 (en) Method, apparatus, communication equipment and storage media for determining link delay
EP2742419B1 (en) Data storage for voltage domain crossings
GB2513529A (en) System and method of low latency data tranfer between clock domains operated in various synchronization modes
WO2017112341A1 (en) Reliable out-of-order end-to-end protocol with robust window state overflow management and a multi-node system using same
JP2008227397A (en) Semiconductor integrated circuit
KR102226284B1 (en) System-on-chip and driving method thereof
US10509760B2 (en) Buffer controller, memory device, and integrated circuit device
US9880961B2 (en) Asynchronous bridge circuitry and a method of transferring data using asynchronous bridge circuitry
US20240039652A1 (en) Synchronizing communication channels between digital front-end processors
US20210193202A1 (en) Asynchronous fifo circuit
GB2519414A (en) Crossing pipelined data between circuitry in different clock domains

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant