KR20070082817A - Asynchronous fifo using valid bit - Google Patents
Asynchronous fifo using valid bit Download PDFInfo
- Publication number
- KR20070082817A KR20070082817A KR1020060015911A KR20060015911A KR20070082817A KR 20070082817 A KR20070082817 A KR 20070082817A KR 1020060015911 A KR1020060015911 A KR 1020060015911A KR 20060015911 A KR20060015911 A KR 20060015911A KR 20070082817 A KR20070082817 A KR 20070082817A
- Authority
- KR
- South Korea
- Prior art keywords
- write
- read
- valid bit
- bit
- point
- Prior art date
Links
Images
Classifications
-
- E—FIXED CONSTRUCTIONS
- E04—BUILDING
- E04G—SCAFFOLDING; FORMS; SHUTTERING; BUILDING IMPLEMENTS OR AIDS, OR THEIR USE; HANDLING BUILDING MATERIALS ON THE SITE; REPAIRING, BREAKING-UP OR OTHER WORK ON EXISTING BUILDINGS
- E04G17/00—Connecting or other auxiliary members for forms, falsework structures, or shutterings
- E04G17/14—Bracing or strutting arrangements for formwalls; Devices for aligning forms
Landscapes
- Engineering & Computer Science (AREA)
- Architecture (AREA)
- Mechanical Engineering (AREA)
- Civil Engineering (AREA)
- Structural Engineering (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
Abstract
Description
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다. BRIEF DESCRIPTION OF THE DRAWINGS In order to better understand the drawings cited in the detailed description of the invention, a brief description of each drawing is provided.
도 1은 SoC에서 서로 다른 주파수로 동작하는 버스와 엘씨디 컨트롤러 간의 데이터 전송을 담당하는 FIFO를 개략적으로 나타내는 도면이다.FIG. 1 is a diagram schematically illustrating a FIFO that is responsible for data transmission between a bus and an LCD controller operating at different frequencies in an SoC.
도 2는 비동기식 FIFO의 동작을 개략적으로 나타내는 도면이다.2 is a diagram schematically illustrating the operation of an asynchronous FIFO.
도 3은 종래 기술에 따른 비동기식 FIFO를 나타내는 블럭도이다.3 is a block diagram illustrating an asynchronous FIFO according to the prior art.
도 4는 도 3의 FIFO의 동작에 따른 오류를 나타내는 도면이다.4 is a diagram illustrating an error according to the operation of the FIFO of FIG. 3.
도 5는 본 발명의 실시예에 따른 비동기식 FIFO를 나타내는 도면이다.5 illustrates an asynchronous FIFO according to an embodiment of the present invention.
도 6은 도 4의 오류를 해결하는 도 5의 FIFO의 동작을 나타내는 도면이다.6 is a diagram illustrating an operation of the FIFO of FIG. 5 to solve the error of FIG. 4.
도 7a 및 도 7b는 각각 도 5의 풀 디텍터 및 엠티 디텍터를 보다 자세히 나타내는 도면이다.7A and 7B illustrate the full detector and empty detector of FIG. 5 in more detail.
본 발명은 비동기식 FIFO(First-In First-Out)에 관한 것으로서, 특히 유효 비트를 사용하는 비동기식 FIFO에 관한 것이다. The present invention relates to an asynchronous FIFO (First-In First-Out), and more particularly to an asynchronous FIFO using valid bits.
최근의 SoC(System on Chip)에는 매우 많은 수의 기능 블럭(IP: Intellectual Property)들이 집적된다. 하나의 SOC에 장착되는 각각의 기능 블럭(IP)들은 공통 버스(common bus)에 연결되어 동작하게 된다. 버스는 각 기능 블럭(IP)의 데이터 요청을 중재하여 순서에 따라 버스의 사용 권한을 부여하기 때문에 각 기능 블럭(IP)은 필요한 시점에 바로 데이터를 확보할 수가 없다. In recent years, a very large number of functional blocks (IPs) are integrated in a System on Chip (SoC). Each functional block (IP) mounted on one SOC is connected to a common bus to operate. Since the bus arbitrates the data requests of each functional block (IP) and authorizes the use of the bus in the order, each functional block (IP) cannot immediately obtain data at the required time.
따라서 필요한 데이터를 미리 확보하기 위해서 FIFO(First In First Out)가 필요하며 이러한 FIFO가 완충작용을 하여 기능 블럭(IP)이 당장 버스를 액세스할 수 없다 하더라도 일단 FIFO에 저장되어 있는 데이터를 사용하고 나중에 버스의 사용권이 주어질 때 FIFO에 데이터를 보충하는 방식을 사용할 수 있다.Therefore, you need a First In First Out (FIFO) to get the data you need ahead of time, even if the FIFO is buffered so that the function block (IP) cannot access the bus right now, it uses the data stored in the FIFO and later When the bus is licensed, it is possible to supplement the data with the FIFO.
이때 일반적으로 기능 블럭(IP)들은 서로 다른 주파수에서 동작한다. Generally, functional blocks (IPs) operate at different frequencies.
도 1은 SoC에서 서로 다른 주파수로 동작하는 버스와 엘씨디 컨트롤러 간의 데이터 전송을 담당하는 FIFO를 개략적으로 나타내는 도면이다.FIG. 1 is a diagram schematically illustrating a FIFO that is responsible for data transmission between a bus and an LCD controller operating at different frequencies in an SoC.
도 1을 참조하면, 엘씨디 컨트롤러(LCD controller)는 메모리(memory)로부터 LCD에 표시할 데이터(data)를 가져오는데 있어서 FIFO는 사용하고 있다. 이때 LCD 화면에 표시하는 주파수, 즉 엘씨디 컨트롤러가 동작하는 주파수와 메모리로부터 데이터를 전송하는 버스의 동작 주파수는 서로 다르다. Referring to FIG. 1, an LCD controller uses a FIFO to obtain data to be displayed on an LCD from a memory. At this time, the frequency displayed on the LCD screen, that is, the frequency at which the LCD controller operates and the operating frequency of the bus transferring data from the memory are different.
이러한 경우 FIFO에 쓰는 주파수와 읽는 주파수가 서로 다르므로 SoC에는 비동기 FIFO가 필수적으로 구비되어야 한다. 그러나 현재까지 제작된 많은 수의 비동기 FIFO들은 불안정성(metastablity)의 문제와 카운터(counter) 동기화 문제를 제 대로 고려하지 않고 설계되었기 때문에 많은 문제가 야기되고 있다. 특히 불안정성(metastablity) 및 카운터(counter) 동기화 문제를 고려하지 않고 설계된 비동기 FIFO들은 시뮬레이션(simulation) 또는 제품의 출시 후에도 오류의 발견이나 원인분석이 어려워 더욱 문제된다. In this case, the write and read frequencies of the FIFO are different, so the SoC must be equipped with an asynchronous FIFO. However, a large number of asynchronous FIFOs manufactured to date have caused many problems because they are designed without proper consideration of problems of metastablity and counter synchronization. In particular, asynchronous FIFOs that are designed without accounting for metastablity and counter synchronization issues are more problematic because of the difficulty in finding or calibrating errors even after simulation or product release.
도 2는 비동기식 FIFO의 동작을 개략적으로 나타내는 도면이다.2 is a diagram schematically illustrating the operation of an asynchronous FIFO.
도 2는 설명의 편의를 위해 4개의 엔트리(ENTRY0~ENTRY3)를 구비하고 3 비트의 라이트 카운트(wptr) 및 리드 카운트(rptr)를 사용하는 FIFO를 도시한다. FIFO는 라이트 카운트(wptr) 또는 리드 카운트(rptr)가 지시하는 엔트리에 값을 쓰거나 또는 그 값을 읽게 된다. FIG. 2 shows a FIFO having four entries ENTRY0 to ENTRY3 for convenience of explanation and using a 3-bit write count wptr and read count rptr. The FIFO writes or reads a value into the entry indicated by the write count (wptr) or read count (rptr).
라이트 카운트(wptr) 및 리드 카운트(rptr)는 4개의 엔트리를 표현함에 있어 2비트이면 족하지만, 풀(full) 신호 및 엠티(empty) 신호를 생성하기 위해 3비트를 갖는다. 풀 신호는 FIFO가 꽉 차게 되면 데이터를 저장하지 않기 위해 요구되고, 엠티 신호는 FIFO가 완전히 빈것이 아니면 읽어야 하므로 요구된다.The write count (wptr) and read count (rptr) may be two bits in representing four entries, but have three bits to generate a full signal and an empty signal. A full signal is required not to store data when the FIFO is full, and an empty signal is required because it must be read unless the FIFO is completely empty.
라이트 카운트(wptr) 및 리드 카운트(rptr)는 각각 라이트 동작 및 리드 동작이 수행될 때마다 다음 엔트리를 나타내며 로테이션(rotation)된다. 각 클럭(clock)마다 라이트 카운트(wptr)와 리드 카운트(rptr)는 비교되는데 라이트 카운트(wptr)와 리드 카운트(rptr)의 최상위 비트쌍을 제외한 나머지 비트쌍들이 동일한 경우, 즉 최상위 비트쌍만 다른 경우 FIFO가 풀인 것을 알 수 있다. 반면, 라이트 카운트(wptr)와 리드 카운트(rptr)의 비트쌍들이 모두 동일한 경우, 즉 라이트 카운트(wptr)와 리드 카운트(rptr)가 같은 경우에는 FIFO가 엠티인 것을 알수 있 다.The write count wptr and the read count rptr indicate the next entry and rotate each time a write operation and a read operation are performed, respectively. For each clock, the write count (wptr) and read count (rptr) are compared, except for the most significant bit pair except for the most significant bit pair of write count (wptr) and read count (rptr), that is, only the most significant bit pair is different. We can see that the FIFO is full. On the other hand, when the bit pairs of the write count wptr and the read count rptr are the same, that is, when the write count wptr and the read count rptr are the same, it can be seen that the FIFO is empty.
도 3은 종래 기술에 따른 비동기식 FIFO를 나타내는 블럭도이다.3 is a block diagram illustrating an asynchronous FIFO according to the prior art.
도 3을 참조하면, 종래 기술에 따른 비동기식 FIFO(10)는 듀얼 포트 메모리(dual port memory)(11), 라이트 카운터(write counter)(12), 리드 카운터(read counter)(13), 비교부들(14,15) 및 동기부들(16,17)을 구비한다. 듀얼 포트 메모리(11)는 도 2의 엔트리들의 집합이다. 라이트 카운터(12) 및 리드 카운터(13)는 각각 도 2의 라이트 포인트(wptr) 및 리드 포인트(rptr)를 생성한다. 비교부들(14,15)은 라이트 카운트(wptr)와 리드 카운트(rptr)를 대응되는 비트별로(비트쌍을) 비교하여, 비교 결과에 응답하여 풀 신호(FULL) 또는 엠티 신호(EMPTY)를 출력한다. Referring to FIG. 3, the
이때 라이트 카운터(12) 및 리드 카운터(13)는 동기부들(16,17)에 의하여 동기된다. 그런데 종래 기술에 따른 비동기식 FIFO(10)에서는 카운터의 동기화 문제가 발생한다. At this time, the
도 4는 도 3의 FIFO의 동작에 따른 오류를 나타내는 도면이다.4 is a diagram illustrating an error according to the operation of the FIFO of FIG. 3.
도 3 및 도 4를 참조하면, 도 3의 종래 기술에 따른 비동기식 FIFO(10)에서 카운터의 동기화 문제는 두 개의 비동기 클럭(WCLK,RCLK)이 서로 비슷한 시간에 토토글(toggle)될 때 발생한다. 3개의 F/F(Flip-Flop)으로 구성되어 있는 동기부(17)의 wptr sync1에서 아주 조금이라도 3개의 F/F에 도달하는 리드 클럭(RCLK)의 차이가 발생한다면, 리드 포인트(rptr)는 000 또는 111 이외의 값을 갖게 되는 오류가 발생한다. 즉, 현재 또는 다음 포인트 값을 갖지 못하고 잘못된 엔트리에 대한 포 인트 값을 갖는바(도 2의 포인트 값 참조) 잘못된 풀 또는 엠티 신호를 생성할 수 있다. 따라서, FIFO의 불안정성이 문제된다.3 and 4, the synchronization problem of the counter in the
본 발명이 이루고자하는 기술적 과제는 안정적인 리드/라이트 동작을 수행할 수 있는 비동기식 FIFO를 제공하는데 있다. An object of the present invention is to provide an asynchronous FIFO capable of performing a stable read / write operation.
상기 기술적 과제를 달성하기 위한 본 발명의 실시예에 따른 비동기식 FIFO(First-In First-Out)는 라이트(write) 유효 비트 생성부, 리드(read) 유효 비트 생성부, 풀 디텍터(full detector) 및 엠티 디텍터(empty detector)를 구비한다.In order to achieve the above technical problem, an asynchronous first-in first-out (FIFO) according to an embodiment of the present invention includes a write valid bit generator, a read valid bit generator, a full detector, and a full detector. It has an empty detector.
라이트 유효 비트 생성부는 상기 FIFO의 라이트 포인트(write point)에 대응되는 라이트 유효 비트를 생성한다. 리드 유효 비트 생성부는 상기 FIFO의 리드 포인트(read point)에 대응되는 리드 유효 비트를 생성한다. 풀 디텍터는 상기 라이트 포인트에 동기되는 리드 유효 비트 및 상기 라이트 유효 비트를 비교하여 상기 FIFO가 풀(full)인 경우 풀(full) 신호를 생성한다. 엠티 디텍터는 상기 리드 포인트에 동기되는 라이트 유효 비트 및 상기 리드 유효 비트의 비교하여 상기 FIFO가 엠티(empty)인 경우 엠티(empty) 신호를 생성한다.The write valid bit generator generates a write valid bit corresponding to a write point of the FIFO. The read valid bit generator generates a read valid bit corresponding to a read point of the FIFO. The full detector compares the read valid bit synchronized with the write point and the write valid bit to generate a full signal when the FIFO is full. An empty detector generates an empty signal when the FIFO is empty by comparing the write valid bit synchronized with the read point and the read valid bit.
상기 비동기식 FIFO는 라이트 포인트 카운터(write point counter) 및 리드 포인트 카운터(read point counter)를 더 구비한다. 라이트 포인트 카운터는 라이트 클럭(write clock)에 응답하여 상기 FIFO의 엔트리(entry)로의 기입 동작마다 상기 라이트 포인트를 하나씩 로테이션(rotation)시킨다. 리드 포인트 카운터는 리드 클럭(read clock)에 응답하여 상기 FIFO의 엔트리로부터의 독출 동작마다 상기 리드 포인트를 하나씩 로테이션시킨다.The asynchronous FIFO further includes a write point counter and a read point counter. The write point counter rotates the write point one by one for each write operation of the FIFO in response to a write clock. A read point counter rotates the read point by one for each read operation from the entry of the FIFO in response to a read clock.
상기 라이트 유효 비트와 상기 리드 유효 비트는 각각 상기 FIFO가 n(n은 자연수, 이하 동일)개의 엔트리(entry)를 구비할 때, 2n비트이다. 상기 라이트 유효 비트는 현재 라이트 클럭의 한 클럭 이전의 라이트 포인트에 대한 라이트 유효 비트와 한 비트만 다르다. The write valid bit and the read valid bit are 2 n bits, respectively, when the FIFO has n (n is a natural number, equal to or less) entries. The write valid bit is only one bit different from the write valid bit for a write point one clock before the current write clock.
상기 라이트 유효 비트 생성부는 디코더(decoder) 및 플립 플랍(Flip-Flop)들을 구비한다. 디코더는 상기 라이트 포인트를 입력으로 하여 상기 라이트 유효 비트를 디코딩(decoding)한다. 플립 플랍들은 상기 라이트 유효 비트를 토글(toggle)하기 위한 상기 라이트 유효 비트에 대응되는 개수로 구비된다. The write valid bit generator includes a decoder and flip-flops. The decoder decodes the write valid bit by using the write point as an input. Flip flops are provided in a number corresponding to the write valid bit for toggling the write valid bit.
상기 리드 유효 비트는 현재 리드 클럭의 한 클럭 이전의 리드 포인트에 대한 리드 유효 비트와 한 비트만 다르다. 상기 리드 유효 비트 생성부는 디코더(decoder) 및 플립 플랍(Flip-Flop)들을 구비한다. 디코더는 상기 리드 포인트를 입력으로 하여 상기 리드 유효 비트를 디코딩(decoding)한다. 플립 플랍들은 상기 리드 유효 비트를 토글(toggle)하기 위한 상기 리드 유효 비트에 대응되는 개수로 구비된다.The read valid bit is only one bit different from the read valid bit for a read point one clock before the current read clock. The read valid bit generator includes a decoder and flip-flops. The decoder decodes the read valid bit by using the read point as an input. Flip flops are provided in a number corresponding to the read valid bit for toggling the read valid bit.
상기 풀 디텍터는 상기 라이트 포인트에 동기되는 리드 유효 비트 및 상기 라이트 유효 비트의 최상위 비트쌍을 제외한 모든 비트쌍들이 같은 경우 상기 풀 신호를 생성한다. 상기 풀 디텍터는 배타적 논리합 수단, 배타적 반전 논리합 수단들 및 논리곱 수단을 구비한다. 배타적 논리합 수단은 상기 동기된 리드 유효 비트와 상기 라이트 유효 비트의 최상위 비트쌍을 입력으로 한다. 배타적 반전 논리합 수단들은 상기 동기된 리드 유효 비트와 상기 라이트 유효 비트의 최상위 비트쌍을 제외한 비트쌍들을 각각의 입력으로 한다. 논리곱 수단은 상기 배타적 반전 논리합 수단의 출력 및 상기 배타적 논리합 수단들의 출력을 입력으로 하여 상기 풀 신호를 출력한다. The full detector generates the full signal when all bit pairs except the most significant bit pair of the write valid bit and the write valid bit synchronized with the write point are the same. The full detector has exclusive OR means, exclusive inversion AND means, and AND means. An exclusive OR means takes as input the most significant bit pair of the synchronized read valid bit and the write valid bit. Exclusive inverted OR means take as input each bit pairs except the most significant bit pair of the synchronized read valid bit and the write valid bit. The AND product outputs the full signal by inputting the output of the exclusive inverted AND and the output of the exclusive OR.
상기 엠티 디텍터는 상기 리드 포인트에 동기되는 라이트 유효 비트 및 상기 리드 유효 비트의 모든 비트쌍들이 같은 경우 상기 엠티 신호를 생성한다. 상기 엠티 디텍터는 배타적 논리합 수단들 및 반전 논리합 수단을 구비한다. 배타적 논리합 수단들은 상기 동기된 라이트 유효 비트와 상기 리드 유효 비트의 비트쌍들을 각각의 입력으로 한다. 반전 논리합 수단은 상기 배타적 논리합 수단들의 출력을 입력으로 하여 상기 엠티 신호를 출력한다.The empty detector generates the empty signal when the write valid bit synchronized with the read point and all the bit pairs of the read valid bit are the same. The empty detector has exclusive OR means and inverted OR means. Exclusive-OR means take the pair of bits of the synchronized write valid bit and the read valid bit as inputs, respectively. Inverted-OR means outputs the empty signal with the output of the exclusive-OR means as an input.
상기 비동기식 FIFO는 제 1 동기부 및 제 2 동기부를 더 구비할 수 있다. 제 1 동기부는 상기 라이트 포인트와 상기 리드 유효 비트를 동기시킨다. 제 2 동기부는 상기 리드 포인트와 상기 라이트 유효 비트를 동기시킨다. 상기 제 1 동기부는 상기 라이트 클럭에 동작하는 플립 플랍(flip flop)들을 구비하고, 상기 제 2 동기부는 상기 리드 클럭에 동작하는 플립 플랍(flip flop)들을 구비한다. The asynchronous FIFO may further include a first synchronizer and a second synchronizer. The first synchronizer synchronizes the write point and the read valid bit. The second synchronizer synchronizes the read point and the write valid bit. The first synchronizer includes flip flops that operate on the write clock, and the second synchronizer includes flip flops that operate on the read clock.
상기 풀 디텍터는 상기 제 1 동기부에 의하여 상기 라이트 포인트에 동기된 리드 유효 비트와 상기 라이트 유효 비트를 비교한다. 상기 엠티 디텍터는 상기 제 2 동기부에 의하여 상기 리드 포인트에 동기된 라이트 유효 비트와 상기 리드 유효 비트를 비교한다.The full detector compares the read valid bit and the write valid bit synchronized with the write point by the first synchronizer. The empty detector compares the write valid bit and the read valid bit synchronized with the read point by the second synchronizer.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 도면에 기재된 내용을 참조하여야 한다. DETAILED DESCRIPTION In order to fully understand the present invention, the operational advantages of the present invention, and the objects achieved by the practice of the present invention, reference should be made to the accompanying drawings which illustrate preferred embodiments of the present invention and the contents described in the drawings.
이하, 첨부한 도면을 참조하여 본 발명이 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings. Like reference numerals in the drawings denote like elements.
도 5는 본 발명의 실시예에 따른 비동기식 FIFO를 나타내는 도면이다.5 illustrates an asynchronous FIFO according to an embodiment of the present invention.
도 5를 참조하면, 본 발명의 실시예에 따른 비동기식 FIFO(First-In First-Out)(100)는 라이트(write) 유효 비트 생성부(120), 리드(read) 유효 비트 생성부(130), 풀 디텍터(full detector)(160) 및 엠티 디텍터(empty detector)(170)를 구비한다.Referring to FIG. 5, an asynchronous first-in first-out (FIFO) 100 according to an embodiment of the present invention may include a write
라이트 유효 비트 생성부(120)는 FIFO(100)의 라이트 포인트(write point)(wptr)에 대응되는 라이트 유효 비트(wvalid)를 생성한다. 라이트 유효 비트(wvalid)는 FIFO(100)가 n(n은 자연수, 이하 동일)개의 엔트리(entry)들은 구비할 때, 2n비트이다. 엔트리들의 집합이 듀얼 포트 메모리(110)이다. The write valid
라이트 유효 비트(wvalid)는 현재 라이트 클럭(wclk)의 한 클럭 이전의 라이트 포인트에 대한 라이트 유효 비트와 한 비트만 다르다. 예를 들어, 현재 라이트 클럭(wclk)의 한 클럭 이전의 라이트 포인트에 대한 라이트 유효 비트가 0001이라 하면, 현재 라이트 클럭(wclk)에서의 라이트 포인트(wptr)에 대한 라이트 유효 비트(wvalid)는 0000, 1001, 0101 및 0011 중 하나의 값을 갖는다. The write valid bit wvalid is only one bit different from the write valid bit for a write point one clock before the current write clock wclk. For example, if the write valid bit for a write point one clock before the current write clock wclk is 0001, the write valid bit wvalid for the write point wptr at the current write clock wclk is 0000. , 1001, 0101 and 0011.
라이트 유효 비트 생성부(120)는 디코더(decoder) 및 플립 플랍(Flip-Flop)들을 구비한다. 상기 디코더는 라이트 포인트(wptr)를 입력으로 하여 라이트 유효 비트(wvalid)를 디코딩(decoding)한다. 상기 플립 플랍들은 라이트 유효 비트(wvalid)를 제 2 동기부(190)로 토글(toggle)하기 위한 상기 라이트 유효 비트에 대응되는 개수로 구비된다. The write
리드 유효 비트 생성부(130)는 FIFO(100)의 리드 포인트(read point)(rptr)에 대응되는 리드 유효 비트(rvalid)를 생성한다. 리드 유효 비트(rvalid) 또한 FIFO(100)가 n개의 엔트리들은 구비할 때, 2n비트이다. 그리고 리드 유효 비트(rvalid)도 현재 리드 클럭(rclk)의 한 클럭 이전의 리드 포인트에 대한 리드 유효 비트와 한 비트만 다르다. The read
리드 유효 비트 생성부(130)는 디코더(decoder) 및 플립 플랍(Flip-Flop)들을 구비한다. 디코더는 상기 리드 포인트를 입력으로 하여 리드 유효 비트(rvalid)를 디코딩(decoding)한다. 플립 플랍들은 상기 리드 유효 비트를 제 1 동기부(180)로 토글(toggle)하기 위한 상기 리드 유효 비트에 대응되는 개수로 구비된다.The read
라이트 유효 비트(wvalid)는 제 2 동기부(190)에 의하여 리드 포인트(rptr)에 동기되고, 리드 유효 비트(rvalid)는 제 1 동기부(180)에 의하여 라이트 포인트 (wptr)에 동기된다. 제 1 동기부(180) 및 제 2 동기부(190) 각각은 라이트 클럭(wclk) 및 리드 클럭(rclk)에 동작하는 동기화 플립 플랍(flip flop)들을 구비한다. The write valid bit wvalid is synchronized to the read point rptr by the
계속해서 도 5를 참조하면, 풀 디텍터(160)는 라이트 포인트(wptr)에 동기되는 리드 유효 비트(rvalid) 및 라이트 유효 비트(wvalid)를 비교한다. 비교 결과 FIFO(100)가 풀(full)이면 풀 신호(FULL)를 생성한다. 엠티 디텍터(170)는 상기 리드 포인트에 동기되는 라이트 유효 비트 및 상기 리드 유효 비트의 비교하여 상기 FIFO가 엠티(empty)인 경우 엠티(empty) 신호를 생성한다. 풀 디텍터(160)와 엠티 디텍터(170)에 대한 보다 자세한 설명은 후술한다.5, the
비동기식 FIFO(100)는 라이트 포인트 카운터(write point counter)(120) 및 리드 포인트 카운터(read point counter)(130)를 더 구비한다. 라이트 포인트 카운터(120)는 라이트 클럭(write clock)(WCLK)에 응답하여, FIFO(100)의 엔트리(entry)로의 기입 동작마다 라이트 포인트(wptr)를 하나씩 로테이션(rotation)시킨다. 리드 포인트 카운터(130)는 리드 클럭(read clock)(RCLK)에 응답하여 FIFO(100)의 엔트리로부터의 독출 동작마다 리드 포인트(rptr)를 하나씩 로테이션시킨다.The
라이트 포인트 카운터(120) 및 리드 포인트 카운터(130)의 동작은 도 2 및 도 3에서 설명한 카운터들(12,13)과 동기부들(16,17)의 동작과 유사한바 그에 대한 구체적인 설명은 생략한다. Operations of the
도 6은 도 4의 오류를 해결하는 도 5의 FIFO의 동작을 나타내는 도면이다.6 is a diagram illustrating an operation of the FIFO of FIG. 5 to solve the error of FIG. 4.
도 5 및 도 6을 참조하면, 라이트 포인트(wptr)가 "01"에서 "10"으로 바뀌고, 이에 따라 라이트 유효 비트(wvalid)가 "1101"에서 "1111"로 변경된다. 이때 리드 클럭(rclk)이 발생하므로 제 2 동기부(190)는 라이트 유효 비트(wvalid)를 동기시켜 엠티 디텍터(170)로 전송한다. 5 and 6, the write point wptr is changed from "01" to "10" and thus the write valid bit wvalid is changed from "1101" to "1111". In this case, since the read clock rclk is generated, the
그런데 전술한 바와 같이 라이트 유효 비트(wvalid)는 하나의 비트만이 변경된다. 따라서 비록 도 4에서 문제된 바와 같이 제 2 동기부(180)의 WVALID SYNC1의 각 플립 플랍들에 도달하는 리드 클럭(RCLK)의 차이가 발생하더라도 FIFO(100)의 라이트 유효 비트(wvalid)는 "1101" 또는 "1111" 중 하나의 값을 가지므로 오류는 발생하지 아니한다. As described above, only one bit is changed in the write valid bit (wvalid). Therefore, even though the difference in the read clock RCLK reaching each flip flop of the WVALID SYNC1 of the
도 7a 및 도 7b는 각각 도 5의 풀 디텍터 및 엠티 디텍터를 보다 자세히 나타내는 도면이다.7A and 7B illustrate the full detector and empty detector of FIG. 5 in more detail.
도 7a를 참조하면, 풀 디텍터(160)는 동기된 리드 유효 비트(rvalid_sync2) 및 라이트 유효 비트(wvaild)의 최상위 비트쌍(동기된 리드 유효 비트(rvalid_sync2) 및 라이트 유효 비트(wvalid)가 각각 4 비트라면, 최상위 비트쌍은 (rvalid_sync2[3],wvaild[3]))을 제외한 모든 비트쌍들이 같은 경우 상기 풀 신호(FULL)를 생성한다. 즉, 라이트 포인트(wptr)가 모든 엔트리를 로테이션한 후 처음으로 포인팅한 엔트리를 포인팅하는데 리드 포인트(rptr)가 동일한 엔트리를 포인팅하고 있는 경우 FIFO는 풀이다. Referring to FIG. 7A, the
풀 디텍터(160)는 동기된 리드 유효 비트(rvalid_sync2) 및 라이트 유효 비트(wvaild)의 각 비트쌍들을 비교하기 위해 배타적 논리합 수단, 배타적 반전 논리 합 수단들 및 논리곱 수단을 구비한다. The
배타적 논리합 수단은 동기된 리드 유효 비트(rvalid_sync2) 및 라이트 유효 비트(wvaild)의 최상위 비트쌍(rvalid_sync2[3],wvaild[3])을 배타적 논리합한다. 배타적 반전 논리합 수단들은 동기된 리드 유효 비트(rvalid_sync2) 및 라이트 유효 비트(wvaild)의 최상위 비트쌍(rvalid_sync2[3],wvaild[3])을 제외한 비트쌍들((rvalid_sync2[2],wvaild[2]),(rvalid_sync2[1],wvaild[1]),(rvalid_sync2[0],wvaild[0]))을 각각 배타적 반전 논리합한다. 논리곱 수단은 배타적 반전 논리합 수단의 출력 및 배타적 논리합 수단들의 출력을 논리곱한다. 이때 논리곱 수단은 배타적 논리합 수단의 출력 및 배타적 반전 논리합 수단들의 출력이 모두 논리 하이("H")인 경우 논리 하이("H") 풀 신호(FULL)를 출력한다. The exclusive OR means exclusive ORs the most significant bit pairs rvalid_sync2 [3] and wvaild [3] of the synchronized read valid bit rvalid_sync2 and write valid bit wvaild. Exclusive inverted OR means includes the pairs of bits ((rvalid_sync2 [2], wvaild [2) except for the most significant bit pair (rvalid_sync2 [3], wvaild [3]) of the synchronized read valid bit (rvalid_sync2) and write valid bit (wvaild). ]), (rvalid_sync2 [1], wvaild [1]), (rvalid_sync2 [0], wvaild [0])), respectively. The AND means AND AND the output of the exclusive inverted AND means and the output of the exclusive AND means. At this time, the AND means outputs a logical high (“H”) pull signal FULL when both the output of the exclusive AND means and the output of the exclusive inverted OR means are logical high (“H”).
엠티 디텍터(170)는 동기된 라이트 유효 비트(wvalid_sync2) 및 리드 유효 비트(rvalid)의 모든 비트쌍들(동기된 라이트 유효 비트(wvalid_sync2) 및 리드 유효 비트(rvalid)가 각각 4 비트라면, 각 비트쌍들은 (wvalid_sync2[3],rvaild[3]), (wvalid_sync2[2],rvaild[2]),(wvalid_sync2[1],rvaild[1]),(wvalid_sync2[0],rvaild[0]))이 같은 경우 엠티 신호(EMPTY)를 생성한다. The
엠티 디텍터(170)는 동기된 라이트 유효 비트(wvalid_sync2) 및 리드 유효 비트(rvalid)의 각 비트쌍들을 비교하기 위해 배타적 논리합 수단들 및 반전 논리합 수단을 구비한다. 배타적 논리합 수단들은 동기된 라이트 유효 비트(wvalid_sync2) 및 리드 유효 비트(rvalid)의 각 비트쌍들을 각각 배타적 논리합 한다. 반전 논리합 수단은 배타적 논리합 수단들의 출력을 반전 논리합하다. 이때 반전 논리합 수단은 배타적 논리합 수단들의 출력이 모두 논리 하이("L")인 경우 논리 하이("H") 엠티 신호(EMPTY)를 출력한다. The
다시 도 5를 참조하면, 본 발명의 실시예에 따른 비동기식 FIFO는 도 3과 같이 카운터 자체가 동기화 플립 플랍에 연결되지 않는다. 대신 카운터가 가리키는 FIFO 엔트리에 해당되는 유효 비트를 쓰기 또는 읽기가 실행될 때마다 토글(toggle)하는 방식을 사용한다. 이 방식을 사용하면 쓰기 또는 읽기를 할 때마다 오직 하나의 비트만이 바뀌게 되며 바뀌는 비트의 값을 동기화 플립 플랍에 저장할 때 바뀌기 전의 값을 저장하거나 또는 바뀐 값을 저장하거나에 상관없이 정상동작이 이루어진다. 즉, 오직 하나의 비트만 바뀌게 되는바 정상적인 풀/엠티 디텍션이 수행된다.Referring back to FIG. 5, in the asynchronous FIFO according to the embodiment of the present invention, the counter itself is not connected to the synchronous flip flop as shown in FIG. 3. Instead, it toggles each time a write or read is performed, which is a valid bit corresponding to the FIFO entry pointed to by the counter. With this method, only one bit is changed each time you write or read, and when you store the value of the changed bit on the synchronous flip flop, the normal operation is performed regardless of whether you save the changed value or the changed value. . That is, only one bit is changed so that normal full / empty detection is performed.
Grey code를 사용하여 라이트 포인트 및 리드 포인트를 나타냄으로써 FIFO의 쓰기 또는 읽기 시 포인트 값이 한 비트씩만 변하도록 하여 카운터의 동기화 문제를 해결할 수 있는 방법이 있다. 그러나 이 Grey code 방식은 속도가 느리다는 단점이 있다. 풀 또는 신호를 만들기 위해서는 Grey code에서 일반 카운터의 값으로의 변환이 필요하며 이를 위해서는 가산기를 거쳐야 하기 때문이다. 이에 비해 본 발명의 실시예에 따른 유효 비트를 사용하는 비동기 FIFO는 이러한 연산할 필요가 없고 단지 두 단계의 게이트만 거치면 풀 또는 엠티 신호를 만들 수 있기 때문에 매우 빠르다. 또한 본 발명의 실시예에 따른 유효 비트를 사용하는 비동기 FIFO는 가산기 등의 복잡한 회로를 거치지 않고 신호를 만들 수 있기 때문에 전력 면에서도 매우 유리하다.There is a way to solve the counter synchronization problem by using the gray code to indicate the write point and read point so that the point value changes only one bit when writing or reading the FIFO. However, this gray code method has the disadvantage of being slow. This is because the gray code needs to be converted from the normal counter value to make a pull or a signal. In contrast, an asynchronous FIFO using valid bits according to an embodiment of the present invention is very fast because it does not need to perform this operation and can create a full or empty signal only through two gates. In addition, the asynchronous FIFO using the valid bit according to the embodiment of the present invention is very advantageous in terms of power since it can generate a signal without going through a complicated circuit such as an adder.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다. As described above, optimal embodiments have been disclosed in the drawings and the specification. Although specific terms have been used herein, these terms are only used for the purpose of describing the present invention and are not intended to limit the scope of the present invention as defined in the claims or the claims. Therefore, those skilled in the art will understand that various modifications and equivalent other embodiments are possible therefrom. Therefore, the true technical protection scope of the present invention will be defined by the technical spirit of the appended claims.
상술한 바와 같이 본 발명에 따른 유효 비트를 사용하는 비동기식 FIFO는 불안정성(metastability) 및 카운터의 동기화 문제를 해결하여 안정된 FIFO 동작을 수행할 수 있는 장점이 있다. 최근의 SoC는 반도체 공정의 발달로 인하여 적은 수의 게이트의 추가 보다는 동작 속도나 저전력 소모가 주된 관점인 점에서 볼 때, 본 발명에 따른 유효 비트를 사용하는 비동기식 FIFO는 고속 또는 저전력 IP 제작시 유용하게 사용될 수 있다. As described above, an asynchronous FIFO using valid bits according to the present invention has an advantage of performing stable FIFO operation by solving problems of instability and counter synchronization. In recent years, the SoC is a major aspect of the operation speed or low power consumption rather than the addition of a small number of gates due to the development of the semiconductor process, asynchronous FIFO using the effective bit according to the present invention is useful for high-speed or low-power IP fabrication Can be used.
Claims (15)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020060015911A KR20070082817A (en) | 2006-02-18 | 2006-02-18 | Asynchronous fifo using valid bit |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020060015911A KR20070082817A (en) | 2006-02-18 | 2006-02-18 | Asynchronous fifo using valid bit |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20070082817A true KR20070082817A (en) | 2007-08-22 |
Family
ID=38612356
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020060015911A KR20070082817A (en) | 2006-02-18 | 2006-02-18 | Asynchronous fifo using valid bit |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20070082817A (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8806118B2 (en) | 2012-11-05 | 2014-08-12 | Sandisk Technologies Inc. | Adaptive FIFO |
CN107133192A (en) * | 2017-05-11 | 2017-09-05 | 北方电子研究院安徽有限公司 | High speed loader and pulse counter circuit in a kind of SoC systems |
-
2006
- 2006-02-18 KR KR1020060015911A patent/KR20070082817A/en not_active Application Discontinuation
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8806118B2 (en) | 2012-11-05 | 2014-08-12 | Sandisk Technologies Inc. | Adaptive FIFO |
CN107133192A (en) * | 2017-05-11 | 2017-09-05 | 北方电子研究院安徽有限公司 | High speed loader and pulse counter circuit in a kind of SoC systems |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5796995A (en) | Circuit and method for translating signals between clock domains in a microprocessor | |
US6963220B2 (en) | Methods and circuitry for implementing first-in first-out structure | |
JP3712471B2 (en) | Computer system and interface circuit for transferring data between first circuit and second circuit | |
WO2017016178A1 (en) | Interface signal remapping method based on fpga | |
US7583106B2 (en) | Clock circuitry | |
US8930664B2 (en) | Method and apparatus for transferring data from a first domain to a second domain | |
US9106235B2 (en) | Mesochronous synchronizer with delay-line phase detector | |
Chun-Zhi et al. | A universal asynchronous receiver transmitter design | |
US8879681B2 (en) | System and method for determining a time for safely sampling a signal of a clock domain | |
US8001409B2 (en) | Synchronization device and methods thereof | |
US6226698B1 (en) | Method and apparatus for dynamically calculating degrees of fullness of a synchronous FIFO | |
US8964919B2 (en) | System and method for determining a time for safely sampling a signal of a clock domain | |
KR20070082817A (en) | Asynchronous fifo using valid bit | |
US6952791B2 (en) | Method and circuit for initializing a de-skewing buffer in a clock forwarded system | |
US20090304134A1 (en) | Device and method of synchronizing signals | |
Huemer et al. | Timing domain crossing using Muller pipelines | |
KR20060013191A (en) | Clock divider, system including clock divider, and method for dividing clock and for reading and writing using the clock dividing | |
Rahimian et al. | A high-throughput, metastability-free GALS channel based on pausible clock method | |
JP3562416B2 (en) | Inter-LSI data transfer system and source synchronous data transfer method used therefor | |
Ramesh et al. | Asynchronous FIFO design with gray code pointer for high speed AMBA AHB compliant memory controller | |
Rahmani et al. | An efficient VFI-based NoC architecture using Johnson-encoded Reconfigurable FIFOs | |
Arora et al. | Handling multiple clocks | |
Chen | FIFO design based on verilog HDL | |
Zhang | Optimizing Data Transfer Across Asynchronous Clock Domains: A Comprehensive Approach to Asynchronous FIFO Circuit Design | |
US20050091470A1 (en) | Calculation of gray codes using exhaustive combinations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Withdrawal due to no request for examination |