KR20000022699A - 동기화된 독출 포인터 및 기록 포인터를 갖는 2중 포트fifo - Google Patents

동기화된 독출 포인터 및 기록 포인터를 갖는 2중 포트fifo Download PDF

Info

Publication number
KR20000022699A
KR20000022699A KR1019990032932A KR19990032932A KR20000022699A KR 20000022699 A KR20000022699 A KR 20000022699A KR 1019990032932 A KR1019990032932 A KR 1019990032932A KR 19990032932 A KR19990032932 A KR 19990032932A KR 20000022699 A KR20000022699 A KR 20000022699A
Authority
KR
South Korea
Prior art keywords
signal
flop
read
flip
clock domain
Prior art date
Application number
KR1019990032932A
Other languages
English (en)
Other versions
KR100337052B1 (ko
Inventor
웬슝-판
Original Assignee
클라크 3세 존 엠.
내셔널 세미콘덕터 코포레이션
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 클라크 3세 존 엠., 내셔널 세미콘덕터 코포레이션 filed Critical 클라크 3세 존 엠.
Publication of KR20000022699A publication Critical patent/KR20000022699A/ko
Application granted granted Critical
Publication of KR100337052B1 publication Critical patent/KR100337052B1/ko

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/10Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
    • G06F5/12Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1075Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for multiport memories each having random access ports and serial ports, e.g. video RAM
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2205/00Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F2205/12Indexing scheme relating to groups G06F5/12 - G06F5/14
    • G06F2205/123Contention resolution, i.e. resolving conflicts between simultaneous read and write operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)
  • Communication Control (AREA)

Abstract

DPRAM 을 이용하여, FIFO 스택을 구현한다. DPRAM 포트들 중의 한 포트는 FIFO 스택에 엘리먼트를 추가하는데 사용되고, 다른 포트는 FIFO 스택으로부터 엘리먼트를 제거하는데 사용된다. 이 포트들은 서로 다른 클록 도메인에서 동작한다. 동기회로는 전체 클록 도메인에서의 독출 동작과 기록 동작을 조정한다.

Description

동기화된 독출 포인터 및 기록 포인터를 갖는 2중 포트 FIFO {DUAL PORT FIFO WITH SYNCHRONIZED READ AND WRITE POINTERS}
본 발명은, 일반적으로, 다수의 클록 도메인들에 걸쳐서 수행되는 주소 포인터의 동기화에 관한 것으로, 특히, 클록 도메인들에 걸쳐서 기록 포인터와 독출 포인터를 동기시키는 2중 포트 선입선출 (First-In-First-Out; FIFO) 메모리에 관한 것이다.
FIFO 메모리는 전자 회로 및 시스템에서 많이 응용되는 널리 알려진 메모리의 일종이다. FIFO 메모리는 가장 오래된 엘리먼트 (element) 가 제일 먼저 제거되도록 스택상에 엘리먼트를 저장한다. 많은 애플리케이션에서, 어떤 프로세스에 의해서는 스택에 엘리먼트들을 추가할 수도 있다. 이러한 프로세스를 기록 프로세스라고 한다. 또다른 프로세스에 의해서는 스택으로부터 엘리먼트들을 제거할 수도 있다. 이러한 프로세스를 독출 프로세스라고 한다. 기록 프로세스는, 엘리먼트들을 스택에 추가할 수 있도록 하기 위하여, 주소 포인터를 유지해야 한다. 이와 유사하게, 독출 프로세스는, 스택으로부터 엘리먼트들을 제거할 수 있도록 하기 위하여, 주소 포인터를 유지해야 한다.
많은 애플리케이션에서는, 2중 포트 RAM (DPRAM) 을 사용하여 FIFO 메모리를 구현한다. 한 포트는 기록 프로세스용으로 사용되고, 다른 포트는 독출 프로세스용으로 사용된다. 기록 프로세스는 하나의 엘리먼트를 최하위의 사용가능 (lowest available) 메모리 위치에 저장함으로써 시작된다. 그 후, 기록 프로세스는 기록 포인터를 증분함으로써 엘리먼트들을 순차적인 메모리 위치에 추가한다. 기록 프로세스가 최상위의 사용가능 메모리 위치에 도달하면, 기록 포인터가 증분되어 최하위의 사용가능 메모리 위치로 복귀된다. 이와 같이, FIFO 메모리는 순환 방식으로 동작한다.
독출 프로세스는 최하위의 사용가능 메모리 위치로부터 엘리먼트를 제거함으로써 시작된다. 그 후, 독출 프로세스는 독출 포인터를 증분함으로써 순차적인 메모리 위치의 엘리먼트들을 계속적으로 제거한다. 독출 포인터가 기록 포인터에까지 도달하면, 메모리가 비게 되어, 독출 프로세스가 FIFO 스택으로부터 엘리먼트를 제거하는 것을 중단한다. 기록 포인터가 독출 포인터에까지 도달하면, 메모리가 가득 차게 되어, 기록 프로세스가 엘리먼트를 추가하는 것을 중단한다.
많은 애플리케이션에서, 기록 프로세스와 독출 프로세스는 서로 다른 클록 도메인에서 동작한다. 따라서, 한 클록 도메인에서는 기록 포인터를 발생시키고 다른 클록 도메인에서는 독출 포인터를 발생시키는 회로를 제공하여야 한다. 또한, 이 회로는, 기록 프로세스가 빈 메모리 위치에 엘리먼트를 추가하고 독출 프로세스가 유효 메모리 위치로부터 엘리먼트를 제거하도록 하기 위하여, 클록 도메인들에 걸쳐서 기록 포인터와 독출 포인터를 동기시켜야 한다. 이러한 동기화는 독출 프로세스와 기록 프로세스간의 상당한 지연을 초래할 수 있다. 또한, 이 동기화에는, 일반적으로 CMOS 표준 셀 라이브러리로부터는 입수가능하지 않은 복잡한 주문제작형 회로가 종종 포함된다. 이와 같은 주문제작형 회로를 개발하는 데에는 추가적인 비용과 시간이 필요하다.
본 발명의 일 양태에 따르면, FIFO 는, 메모리, 기록포트, 독출포트, 제 1 동기회로 및 제 2 동기회로를 구비한다. 상기 메모리는 FIFO 스택을 저장하도록 구성된다. 상기 기록포트는 기록 주소 포인터에 기초하여 상기 FIFO 스택에 엘리먼트를 추가하도록 구성된다. 상기 기록포트는 제 1 클록 도메인에서 동작한다. 상기 독출포트는 독출 주소 포인터에 기초하여 상기 FIFO 스택으로부터 엘리먼트를 독출하도록 구성된다. 상기 독출포트는 상기 제 1 클록 도메인과는 다른 제 2 클록 도메인에서 동작한다. 상기 제 1 동기회로는 상기 기록포트와 기능적으로 결합되며, 상기 기록 주소 포인터를 수신하고 상기 기록 주소 포인터를 상기 제 2 클록 도메인에 동기시키도록 구성된다. 상기 제 2 동기회로는 상기 독출포트와 기능적으로 결합되며, 상기 독출 주소 포인터를 수신하고 상기 독출 주소 포인터를 상기 제 1 클록 도메인에 동기시키도록 구성된다.
본 발명의 또다른 양태에 따르면, 전체 클록 도메인 상에서 주소 포인터들을 조정하는 데 적합한 동기회로는 제 1 타이밍 플립플롭, 제 2 타이밍 플립플롭 및 반전회로를 구비한다. 상기 제 1 타이밍 플립플롭은 제 1 타이밍 신호를 발생시키도록 구성된다. 상기 제 1 타이밍 플립플롭은 제 1 클록 도메인에서 동작한다. 상기 반전회로는 상기 제 1 타이밍 플립플롭과 기능적으로 결합되며, 상기 제 1 타이밍 신호에 기초하여 반전된 타이밍 신호를 발생시키도록 구성된다. 상기 제 2 타이밍 플립플롭은 반전회로와 기능적으로 결합되며, 상기 반전 타이밍 신호에 기초하여 제 2 타이밍 신호를 발생시키도록 구성된다. 상기 제 2 타이밍 플립플롭은 상기 제 1 클록 도메인과는 다른 제 2 클록 도메인에서 동작한다.
도 1 은 FIFO 메모리에 대한 일 바람직한 실시예의 블록도.
도 2 는 도 1 의 FIFO 메모리에서 동작하는 일 바람직한 기록 프로세스를 나타낸 흐름도.
도 3 은 도 1 의 FIFO 메모리에서 동작하는 일 바람직한 독출 프로세스를 나타낸 흐름도.
도 4 는 주소 동기회로에 대한 일 바람직한 실시예의 회로도.
도 5 는 주소 동기회로에 대한 또다른 바람직한 실시예의 회로도.
도 6 은 도 5 의 회로로부터의 신호를 나타낸 타이밍도.
* 도면의 주요 부분에 대한 부호의 설명 *
100 : FIFO 메모리 110 : DPRAM
112 : wr_data 선 113 : 기록포트
114 : wr_addr 선 115 : 독출포트
116 : rd_data 선 118 : rd_addr 선
120, 124 : 동기장치 122 : 기록 논리회로
126 : 독출 논리회로 130 : fifo_empty 신호
136 : fifo_full 신호 410, 510 : 주소 동기회로
416, 516 : AND 게이트
418, 434, 420, 430, 518, 519, 520, 530 : 타이밍 플립플롭
422, 522 : XOR 게이트 424, 438, 524 : 멀티플렉서
426, 526 : 홀딩 플립플롭 432, 532 : 인버터
436, 536 : XNOR 게이트 440, 540 : 샘플링 플립플롭
이하, 도 1 을 참조하여, 하나의 바람직한 FIFO 메모리 (100) 를 설명한다.
FIFO 메모리 (100) 는 DPRAM (110) 을 구비한다. 포트 (113) 는 DPRAM (110) 에 데이터를 기록하는데 사용되고, 포트 (115) 는 DPRAM (110) 으로부터 데이터를 독출하는데 사용된다. 포트 (113) 및 포트 (115) 각각은 주소 포트와 데이터 포트를 포함한다. wr_addr 선 (114) 은 포트 (113) 에 접속되며, DPRAM (110) 내에서 메모리 위치를 선택하는데 사용된다. 또한, wr_data 선 (112) 도 포트 (113) 에 접속된다. 이 선들은 기록 동작동안 선택된 주소 위치에 데이터 신호를 공급하는데 사용된다. wr_addr 선 (114) 과 wr_data 선 (112) 은 모두 DPRAM (110) 내에서 FIFO 스택에 엘리먼트를 추가하는데 사용된다.
rd_addr 선 (118) 은 포트 (115) 에 접속되며, DPRAM (110) 내에서 메모리 위치를 선택하는데 사용된다. 또한, rd_data 선 (116) 도 포트 (115) 에 접속된다. 이 선들은 독출 동작동안 선택된 주소 위치로부터 데이터 신호를 수신하는데 사용된다. rd_addr 선 (118) 과 rd_data (116) 은 모두 FIFO 스택으로부터 엘리먼트를 제거하는데 사용된다.
일 바람직한 실시예에서, DPRAM (110) 은 기록포트 (113) 에는 기록 기능만을 제공하고, 독출포트 (115) 에는 독출기능만을 제공한다. 그러나, 많은 상업용 DPRAM 들이 두 포트에 독출 기능과 기록 기능을 모두 제공하므로, 이와 같은 DPRAM 도 본 발명을 구현하기에 적합한 대안으로서의 역할을 할 것이다.
FIFO 메모리 (100) 는, 기록포트 (113) 를 통하여 스택에 엘리먼트를 추가하고, 독출포트 (115) 를 통하여 스택으로부터 동일한 엘리먼트를 제거할 수 있도록 구성된다. 엘리먼트들은 기록포트 (113) 를 통하여 순차적인 메모리 위치의 스택에 추가된다. 제 1 엘리먼트가 메모리 위치 "000h" 에 기록되고, 그 다음 엘리먼트가 메모리 위치 "001h" 에 기록되는 식이다. 마지막으로, 기록포트 (113) 가 최상위 메모리 위치 (예를 들면, 4K 메모리에서 "FFFh") 에 엘리먼트를 추가한다. 이 기록 후에, 기록 포인터는 증분되어 제 1 메모리 위치, "000h" 로 복귀된다. 독출 포인터도 동일한 방식으로 동작한다.
기록포트 (113) 가 독출되지 않은 데이터 (예를 들면, 독출포트 (115) 를 통하여 아직 제거되지 않은 엘리먼트) 를 포함하는 메모리 위치에 엘리먼트를 추가하지 않도록 하기 위하여, fifo_full 신호가 발생된다. 이와 유사하게, 독출포트 (115) 가 기록되지 않은 데이터를 포함하는 메모리 위치 (예를 들면, 기록포트 (113) 를 통하여 기록되지 않은 메모리 위치) 로부터 엘리먼트를 독출하지 않도록 하기 위하여, fifo_empty 신호가 발생된다.
기록포트 (113) 와 독출포트 (115) 는 서로 다른 클록 도메인에서 동작할 수도 있다. 따라서, 독출 주소 포인터와 기록 주소 포인터는 전체 클록 도메인들에 걸쳐서 동기화된다. 독출 주소 포인터와 기록 주소 포인터는 fifo_full 신호 및 fifo_empty 신호를 발생시키는데 사용된다.
더 상세하게 설명하면, wr_addr 선 (114) 은 동기장치 (120) 및 기록 논리회로 (122) 에 접속되며, rd_addr 선 (118) 은 동기장치 (124) 및 독출 논리회로 (126) 에 접속된다. 동기장치 (120) 는 wr_addr 선 (114) 을 통하여 현재의 기록 포인터를 수신한다. 클록 도메인들을 조정하기 위한 충분한 지연후에, 동기장치 (120) 는 선 (128) 을 통하여 기록 포인터를 독출 논리회로 (126) 에 제공한다. 이와 유사하게, 동기장치 (124) 는 rd_addr 선 (118) 을 통하여 현재의 독출 포인터를 수신한다. 클록 도메인들을 조정하기 위한 충분한 지연후에, 동기장치 (124) 는 선 (132) 을 통하여 독출 포인터를 기록 논리회로 (122) 에 제공한다. 독출 논리회로 (126) 및 기록 논리회로 (122) 는 fifo_empty 신호 (130) 및 fifo_full 신호 (136) 를 각각 발생시킨다.
fifo_empty 신호 (130) 및 fifo_full 신호 (136) 를 발생시키는 하나의 바람직한 방법은, wr_addr 신호와 rd_addr 신호의 MSB 쪽에 별도의 비트를 추가하고, 증분시에 이 비트를 wr_addr 과 rd_addr 의 일부분으로서 취급하는 것이다. 예를 들어, wr_addr 및 rd_addr 의 비트폭이 12 비트라고 가정할 경우, MSB 쪽에 13 번째 비트를 추가하면, wr_addr 및 rd_addr 의 비트폭은 13 비트가 된다. 리세트 동안에는, wr_addr[12:0] 및 rd_addr[12:0] 가 모두 제로로 클리어된다. wr_addr 는 fifo_full 이 선언될 때까지 증분되고, rd_addr 는 fifo_empty 가 선언될 때까지 증분된다. wr_addr[12:12] (wr_addr 신호의 13 번째 비트) 및 rd_addr[12:12] (rd_addr 신호의 13 번째 비트) 는 fifo 메모리의 홀수 패스 (pass) 동안에는 값 0 을 가지고, 짝수 패스 동안에는 값 1 을 갖는다. 이와 같이, fifo_full 은 논리식 (wr_addr[12:12] XOR rd_addr_sync[12:12]) AND (wr_addr[11:0] XNOR rd_addr_sync[11:0]) 으로부터 얻어지며, fifo_empty 는 논리식 rd_addr[12:0] XNOR wr_addr_sync[12:0] 으로부터 얻어진다. 기록 논리회로 (122) 및 독출 논리회로 (126) 는 이러한 논리 기능을 구현함으로써, fifo_full 신호 및 fifo_empty 신호를 각각 발생시킨다.
초기화시에, 독출 주소 포인터와 기록 주소 포인터는 둘다 "000h" 로 설정된다. 엘리먼트들이 추가됨에 따라, 기록 포인터는 증분된다. 이에 따라, 독출 논리회로 (126) 가 fifo_empty 신호를 선언해제한다. 이에 응답하여, FIFO 로부터 엘리먼트들이 독출되고, 독출 포인터가 증분된다. 독출 포인터가 기록 포인터에까지 도달하면, 또다른 엘리먼트가 FIFO 스택에 추가될 때까지 fifo_empty 신호가 선언된다.
상술한 바와 같이, 기록 포인터가 최상위 메모리 위치에 도달하면, 기록 포인터는 증분되어 제 1 메모리 위치로 복귀된다. 또다른 엘리먼트들이 추가됨에 따라, 기록 주소 포인터가 결국에 독출 주소 포인터에까지 도달하게 될 수도 있다. 또다른 엘리먼트들이 추가될 경우에는, 아직 스택으로부터 독출되지 않은 엘리먼트들이 이 엘리먼트들에 의해 오버라이트될 것이다. 이러한 문제를 방지하기 위하여, fifo_full 신호가 선언된다. 이 FIFO 스택으로부터 또다른 엘리먼트가 제거될 때까지는, 어떠한 추가적인 기록도 발생되지 않는다.
상술한 바와 같이, FIFO 스택은 DPRAM (110) 에서 구현된다. 이러한 구성은 어떠한 통상적인 크기 및 폭을 갖는 DPRAM 과도 사용하기에 적합하다.
이하, 도 2 를 참조하여, FIFO 스택에 엘리먼트를 추가하는 프로세스를 상세하게 설명한다.
단계 210 에서, FIFO 는 fifo_full 신호가 선언되어 있는지 아닌지를 판단한다. fifo_full 신호가 선언되어 있을 경우, FIFO 는 단계 210 에 그대로 있다. 그렇지 않을 경우, FIFO 는 단계 212 로 진행한다. 여기서, FIFO 는 다음 메모리 위치에 엘리먼트가 추가되도록 하기 위하여 기록 포인터를 증분시킨다. 단계 214 에서, FIFO 는 기록 포인터에 의해 선택된 주소 위치의 스택에 엘리먼트를 추가한다. 단계 216 에서는, 이 새로운 기록 포인터가 반대편 클록 도메인으로 패스된다. 이는 독출 프로세스로 하여금 다음 엘리먼트를 제거하도록 한다. 그 후, FIFO 는 단계 210 으로 복귀한다.
이하, 도 3 을 참조하여, FIFO 로부터 엘리먼트를 제거하는 프로세스를 상세하게 설명한다.
블록 310 에서, FIFO 는 fifo_empty 신호가 선언되어 있는지 아닌지를 판단한다. fifo_empty 신호가 선언되어 있을 경우, FIFO 는 블록 310 에 그대로 있다. 그렇지 않을 경우, FIFO 는 블록 312 로 진행한다. 여기서, FIFO 는 독출 포인터에 의해 선택된 메모리 위치로부터 데이터를 독출한다. 블록 314 에서, FIFO 는 독출 포인터를 증분시킨다. 블록 316 에서는, 이 새로운 기록 포인터가 반대편 클록 도메인으로 패스된다. 이는 기록 프로세스로 하여금 빈 메모리 위치에 엘리먼트를 추가하도록 한다. 그 후, FIFO 는 블록 310 으로 복귀한다.
이하, 도 4 를 참조하여, 주소 동기회로 (410) (이하, 주소 동기장치 (410) 라고 함) 의 일 바람직한 실시예를 설명한다.
이 주소 동기장치 (410) 는 도 1 의 동기장치 (120) 및 동기장치 (124) 를 구현하는데 사용될 수도 있다. 주소 동기장치 (410) 는 2개의 클록 도메인으로 구분된다. 구체적으로 설명하면, 블록 (412) 은 클록 (411; clock_src) 에 기초하여 동작하는 반면, 블록 (414) 은 클록 (413; clock_dest) 에 기초하여 동작한다. 클록 (411) 과 클록 (413) 은 서로 비동기적이며, 서로 다른 주파수에서 동작할 수도 있다. 이와 같이, 블록 (412) 은 클록 (411) 에 기초한 클록 도메인을 정의하고, 블록 (414) 은 클록 (413) 에 기초한 클록 도메인을 정의한다.
주소 동기장치 (410) 는 블록 (412) 의 클록 도메인으로부터의 주소 포인터 (423; addr_ptr) 를 블록 (414) 의 클록 도메인내의 동기화된 주소 포인터 (439; addr_ptr_sync) 로 이동시키는 것을 조정하도록 동작한다.
이 회로는 AND 게이트 (416) 가 reset_z 신호를 수신하면 동작을 시작한다. 이 reset_z 신호는 정상적인 회로 동작을 초기화하는데 사용된다. 이 동기회로 (410) 의 동작동안, reset_z 신호는 하이 상태에 있어야 한다. 또한, AND 게이트 (416) 는 타이밍 플립플롭 (434) 으로부터 desk_out 신호를 수신한다. reset_z 신호와 desk_out 신호가 모두 하이 상태에 있을 때, AND 게이트 (416) 는 타이밍 플립플롭 (418) 에 하이레벨 신호를 공급한다. 타이밍 플립플롭 (418) 은 클록 (411) 에 의해 트리거된다. 새로운 클록 사이클이 시작되면, 타이밍 플립플롭 (418) 은 AND 게이트 (416) 로부터의 하이레벨 신호를 src_sync1 신호로서 패스한다. 이 신호는 타이밍 플립플롭 (420) 및 XOR 게이트 (422) 에 교대로 공급된다. 타이밍 플립플롭 (420) 은 타이밍 플립플롭 (418) 과 동일한 방식으로 기능한다. 새로운 클록 사이클이 시작되면, 타이밍 플립플롭 (420) 은 src_sync1 신호값을 src_out 신호로서 패스한다. 따라서, src_sync1 신호가 천이할 경우, src_out 신호값은 한 클록 주기동안 매칭되지 않는다. 이들 신호 모두가 XOR 게이트 (422) 에 공급되므로, 이들 신호는 동일 클록 주기동안 하이레벨 신호를 발생시킨다.
XOR 게이트 (422) 의 출력은 멀티플렉서 (424) 의 제어 입력부에 공급된다. 또한, 멀티플렉서 (424) 는 홀딩 (holding) 플립플롭 (426) 이 유지하고 있는 포인터값 및 현재의 포인터값을 나타내는 addr_ptr (423) 을 수신한다. 멀티플렉서 (424) 는, XOR 게이트 (422) 로부터 하이레벨 신호를 수신받으면, 홀딩 플립플롭 (426) 에 addr_ptr (423) 값을 공급한다. 그 이외의 경우, 멀티플렉서 (424) 는 홀딩 플립플롭 (426) 의 출력부로부터의 포인터값을 홀딩 플립플롭 (426) 의 입력부에 공급한다. 홀딩 플립플롭 (426) 의 출력부로부터의 포인터값은 클록 경계를 넘어 멀티플렉서 (438) 에 공급된다.
또한, 타이밍 플립플롭 (430) 은 타이밍 플립플롭 (420) 으로부터 src_out 신호를 수신한다. 블록 (414) 의 클록 도메인 내에서 새로운 클록 사이클이 시작되면, 타이밍 플립플롭 (430) 은 src_out 신호값을 dest_sync1 신호로서 패스한다. 이 dest_sync1 신호는 인버터 (432) 에 공급된다. 반전된 dest_sync1 신호는 타이밍 플립플롭 (434) 및 XNOR 게이트 (436) 에 공급된다. 타이밍 플립플롭 (434) 은 타이밍 플립플롭 (430) 과 동일한 방식으로 기능한다. 새로운 클록 사이클이 시작되면, 타이밍 플립플롭 (434) 은 반전된 dest_sync1 신호값을 dest_out 신호로서 패스한다. 따라서, 반전된 dest_sync1 신호가 천이할 경우, dest_out 신호값은 한 클록 주기동안 매칭되지 않는다. 이들 신호 모두가 XNOR 게이트 (436) 에 공급되므로, 이들 신호는 동일 클록 주기동안 하이레벨 신호를 발생시킨다.
XNOR 게이트 (436) 의 출력은 멀티플렉서 (438) 의 제어 입력부에 공급된다. 또한, 멀티플렉서 (438) 는 샘플링 플립플롭 (440) 이 현재 유지하고 있는 포인터값 및 홀딩 플립플롭 (426) 의 출력을 수신한다. 멀티플렉서 (438) 는, XNOR 게이트 (436) 로부터 하이레벨 신호를 수신받으면, 홀딩 플립플롭 (426) 으로부터의 포인터값을 공급한다. 그 이외의 경우, 멀티플렉서 (438) 는 샘플링 플립플롭 (440) 의 출력으로부터의 포인터값을 샘플링 플립플롭 (440) 의 입력부에 공급한다. 샘플링 플립플롭 (440) 의 출력부로부터의 포인터값은 addr_ptr_sync 신호이다. 따라서, 이 신호는 addr_ptr 신호를 따르게 된다. 그러나, addr_ptr_sync 신호는 블록 (414) 의 클록 도메인에서 유효하다.
동기회로 (410) 는 상업용 CMOS 표준 셀 라이브러리로부터의 회로 소자를 사용하여 구현될 수 있다. 게이트, 플립플롭 및 멀티플렉서는 모두 일반적으로 입수가능하다.
정상적인 동작하에서라면, 주소 동기장치 (410) 는 addr_ptr (423) 을 클록 도메인들을 거쳐 addr_ptr_sync (439) 로 효율적으로 변환할 것이다. 그러나, 타이밍 플립플롭 (418) 이 준안정 (meta-stable) 상태로 될 수도 있다. 준안정 상태로 인한 데이터의 파손을 방지하기 위하여, 데이터가 플립플롭 (420) 으로 전달되기 전에 플립플롭 (418) 이 준안정 상태로부터 복귀되는데 충분한 시간을 가질수 있도록, 플립플롭 (420) 은 플립플롭 (418) 과 백투백 (back-to-back) 으로 배치된다. 이러한 배치를 이중 동기 (double-synchronization) 라고도 하며, 타이밍 플립플롭 (418) 에서 홀딩 플립플롭 (426) 까지의 신호지연이 clk_src 의 클록주기보다 더 작고, 타이밍 플립플롭 (430) 에서 샘플링 플립플롭 (440) 까지의 신호지연이 clk_dest 의 클록주기보다 더 작을 경우에 안정적인 동작을 제공한다. 타이밍 플립플롭 (418) 에서 홀딩 플립플롭 (426) 까지의 신호지연은, t (Q 까지의 플립플롭 (418) 클록) + t (준안정 상태로부터의 플립플롭 (418) 복귀) + t (XOR 게이트 (422)) + t (멀티플렉서 (424)) + t (플립플롭 (426) 셋업) + t (배선지연) 을 포함한다. 타이밍 플립플롭 (430) 에서 샘플링 플립플롭 (440) 까지의 신호지연은, t (Q 까지의 플립플롭 (430) 클록) + t (준안정 상태로부터의 플립플롭 (430) 복귀) + t (인버터 (432)) + t (XNOR 게이트 (436)) + t (멀티플렉서 (438)) + t (플립플롭 (440) 셋업) + t (배선지연) 을 포함한다. 이러한 조건들이 충족되지 않으면, 준안정한 상태로 되어, 부정 (undefined) 천이를 유발하게 된다. 이러한 전위 준안정 상태는 주소 동기장치 (410) 에 별도의 타이밍 플립플롭을 추가함으로써 방지할 수 있다.
이하, 도 5 를 참조하여, 주소 동기회로 (510) (이하, 주소 동기장치 (510) 라고 함) 의 또다른 바람직한 실시예를 설명한다.
이 주소 동기장치 (510) 는 도 1 의 동기장치 (120) 및 동기장치 (124) 를 구현하는데 사용될 수도 있다. 주소 동기장치 (510) 는 도 4 의 주소 동기장치 (410) 와 매우 동일한 방식으로 동작한다. 그러나, 주소 동기장치 (510) 는 2개의 타이밍 플립플롭을 추가로 사용한다. 이 타이밍 플립플롭은 상술한 준안정 상태에 대한 가능성을 감소시켜 추가적인 동기지연을 최소한으로 한다.
주소 동기장치 (510) 는 2개의 클록 도메인으로 구분된다. 구체적으로 설명하면, 블록 (512) 은 클록 (511; clock_src) 에 기초하여 동작하는 반면, 블록 (514) 은 클록 (513; clock_dest) 에 기초하여 동작한다. 클록 (511) 과 클록 (513) 은 서로 비동기적이며, 서로 다른 주파수에서 동작할 수도 있다. 이와 같이, 블록 (512) 은 클록 (511) 에 기초한 클록 도메인을 정의하고, 블록 (514) 은 클록 (513) 에 기초한 클록 도메인을 정의한다.
주소 동기장치 (510) 는 블록 (512) 의 클록 도메인으로부터의 주소 포인터 (523; addr_ptr) 를 블록 (514) 의 클록 도메인내의 동기화된 주소 포인터 (539; addr_ptr_sync) 로 이동시키는 것을 조정하도록 동작한다.
이 회로는 AND 게이트 (516) 가 reset_z 신호를 수신하면 동작을 시작한다. 이 reset_z 신호는 정상적인 회로 동작을 초기화하는데 사용된다. 이 동기회로 (510) 의 동작동안, reset_z 신호는 하이 상태에 있어야 한다. 또한, AND 게이트 (516) 는 타이밍 플립플롭 (534) 으로부터 desk_out 신호를 수신한다. reset_z 신호와 desk_out 신호가 모두 하이 상태에 있을 때, AND 게이트 (516) 는 타이밍 플립플롭 (518) 에 하이레벨 신호를 공급한다. 타이밍 플립플롭 (518) 은 클록 (511) 에 의해 트리거된다. 새로운 클록 사이클이 시작되면, 타이밍 플립플롭 (518) 은 AND 게이트 (516) 로부터의 하이레벨 신호를 src_sync1 신호로서 패스한다. 이 신호는 타이밍 플립플롭 (519) 에 공급된다. 타이밍 플립플롭 (519) 은 타이밍 플립플롭 (518) 과 동일한 방식으로 기능한다. 새로운 클록 사이클이 시작되면, 타이밍 플립플롭 (519) 은 src_sync1 신호값을 src_sync2 신호로서 패스한다. 이 신호는 타이밍 플립플롭 (520) 및 XOR 게이트 (522) 에 교대로 공급된다. 타이밍 플립플롭 (520) 은 타이밍 플립플롭 (518) 과 동일한 방식으로 기능한다. 새로운 클록 사이클이 시작되면, 타이밍 플립플롭 (520) 은 src_sync2 신호값을 src_out 신호로서 패스한다. 따라서, src_sync2 신호가 천이할 경우, src_out 신호값은 한 클록 주기동안 매칭되지 않는다. 이들 신호 모두가 XOR 게이트 (522) 에 공급되므로, 이들 신호는 동일 클록 주기동안 하이레벨 신호를 발생시킨다.
XOR 게이트 (522) 의 출력은 멀티플렉서 (524) 의 제어 입력부에 공급된다. 또한, 멀티플렉서 (524) 는 홀딩 플립플롭 (526) 이 유지하고 있는 포인터값 (addr_held) 및 현재의 포인터값을 나타내는 addr_ptr 신호 (523) 를 수신한다. 멀티플렉서 (524) 는, XOR 게이트 (522) 로부터 하이레벨 신호를 수신받으면, 홀딩 플립플롭 (526) 에 addr_ptr 신호값을 공급한다. 그 이외의 경우, 멀티플렉서 (524) 는 홀딩 플립플롭 (526) 의 출력부로부터의 포인터값을 홀딩 플립플롭 (526) 의 입력부에 공급한다. 홀딩 플립플롭 (526) 의 출력부로부터의 포인터값은 클록 경계를 넘어 멀티플렉서 (538) 에 공급된다.
또한, 타이밍 플립플롭 (530) 은 타이밍 플립플롭 (520) 으로부터 src_out 신호를 수신한다. 블록 (514) 의 클록 도메인 내에서 새로운 클록 사이클이 시작되면, 타이밍 플립플롭 (530) 은 src_out 신호값을 dest_sync1 신호로서 패스한다. 이 신호는 타이밍 플립플롭 (530) 과 동일한 방식으로 동작하는 타이밍 플립플롭 (531) 에 공급된다. 새로운 클록 사이클이 시작되면, 타이밍 플립플롭 (531) 은 dest_sync1 신호값을 dest_sync2 신호로서 패스한다. 이 dest_sync2 신호는 인버터 (532) 및 XNOR (536) 에 공급된다. 반전된 dest_sync2 신호는 타이밍 플립플롭 (534) 에 공급된다. 타이밍 플립플롭 (534) 은 타이밍 플립플롭 (530) 과 동일한 방식으로 기능한다. 새로운 클록 사이클이 시작되면, 타이밍 플립플롭 (534) 은 반전된 dest_sync2 신호값을 dest_out 신호로서 패스한다. 따라서, 반전된 dest_sync1 신호가 천이할 경우, dest_out 신호값은 한 클록 주기동안 dest_sync2 와 동일한 레벨에 있게 될 것이다. 이들 신호 모두가 XNOR 게이트 (536) 에 공급되므로, 이들 신호는 동일 클록 주기동안 하이레벨 신호를 발생시킨다.
XNOR 게이트 (536) 의 출력은 멀티플렉서 (538) 의 제어 입력부에 공급된다. 또한, 멀티플렉서 (538) 는 샘플링 플립플롭 (540) 이 현재 유지하고 있는 포인터값 및 홀딩 플립플롭 (526) 의 출력을 수신한다. 멀티플렉서 (538) 는, XNOR 게이트 (536) 로부터 하이레벨 신호를 수신받으면, 홀딩 플립플롭 (526) 으로부터의 포인터값을 공급한다. 그 이외의 경우, 멀티플렉서 (538) 는 샘플링 플립플롭 (540) 의 출력부로부터의 포인터값을 샘플링 플립플롭 (540) 의 입력부에 공급한다. 샘플링 플립플롭 (540) 의 출력부로부터의 포인터값은 addr_ptr_sync 신호 (539) 이다. 따라서, 이 신호는 addr_ptr 신호 (523) 를 따르게 된다. 그러나, addr_ptr_sync 신호 (539) 는 블록 (514) 의 클록 도메인에서 유효하다.
동기회로 (510) 는 상업용 CMOS 표준 셀 라이브러리로부터의 회로 소자를 사용하여 구현될 수 있다. 게이트, 플립플롭 및 멀티플렉서는 모두 일반적으로 입수가능하다.
이하, 도 6 을 참조하여, 도 5 에서의 신호의 타이밍도를 설명한다.
이 타이밍도는 clock_src 신호 및 clock_dest 신호를 포함한다. 이 신호들은 비동기적으로 및 서로 다른 주파수에서 동작한다. src_sync1, src_sync2, src_out, sel_src 및 addr_held 신호들은 clock_src 신호에 기초하여 동작한다. dest_sync1, dest_sync2, dest_out, sel_dest 및 addr_prt_sync 신호들은 clock_dest 신호에 기초하여 동작한다.
reset_z 신호는 로우 상태에서 시작하여 하이 상태로 천이한다. 이러한 천이는 동기회로의 정상적인 동작을 개시하는데 사용된다. reset_z 신호가 clock_src 신호의 한 클록 주기동안 하이 상태로 있은 후에, src_sync1 신호가 하이상태로 천이한다. 그 다음, clock_src 신호의 한 클록 주기후에, src_sync2 신호가 하이 상태로 천이한다. src_sync2 신호가 src_out 신호와 매칭되지 않으므로, sel_src 신호는 하이상태로 된다. clock_src 신호의 한 클록 주기후에, sel_src 신호는 addr_held 로 하여금 다음 주소 포인터 신호를 독출하도록 한다. 제 1 주소 포인터 신호는 A1 으로 표시된다. 후속하는 주소 포인터 주소들은 A2 및 A3 으로 표시된다.
src_sync2 신호가 한 클록 주기동안 하이 상태에 있은 후에, src_out 신호가 하이 상태로 천이한다. src_out 신호가 src_sync2 신호와 매칭되지 않으므로, sel_src 신호는 선언해제된다. 따라서, 주소 포인터 (A1) 가 addr_held 신호에 의해 유지되게 된다.
src_out 신호의 천이는 dest_sync1 신호로 패스된다. 더 상세하게 설명하면, clock_dest 신호의 다음 상승에지에서, dest_sync1 신호가 동일한 천이를 한다. clock_dest 신호의 한 주기 후에, dest_sync2 신호는 dest_sync1 신호를 따르며, 하이 상태로 천이한다.
dest_sync2 신호가 dest_out 신호와 매칭되지 않으므로, sel_dest 신호는 하이상태로 된다. clock_dest 신호의 한 클록 주기후에, sel_dest 신호는 addr_prt_sync 로 하여금 다음 주소 포인터 신호를 독출하도록 한다. 제 1 주소 포인터 신호는 A1_sync 으로 표시된다. 이 신호는 addr_held 신호 A1 과 매칭되지만, clock_dest 신호의 클록 도메인에서 유효하다. clock_dest 신호의 클록 도메인에서의 그 다음 주소 포인터 신호들은 A2_sync 및 A3_sync 으로 표시된다. 이들 신호는, A2 와 A3 를 각각 따른다.
dest_sync2 신호가 천이하고 나서 한 클록 주기후에, dest_out 신호가 반대 방향으로 천이한다. dest_out 신호가 dest_sync2 신호와 더 이상 매칭되지 않으므로, sel_dest 신호가 선언해제되고, addr_ptr_sync 신호에 의해 A1_sync 주소 포인터가 유지된다.
이 타이밍도에 도시된 바와 같이, 타이밍 신호들의 계속되는 천이로 인해, 주소 포인터 신호 (A2 및 A3) 가 클록 도메인 경계를 넘어 동기화된 주소 신호 (A2_sync 및 A3_sync) 로 패스된다.
src_out 신호의 천이에 의해 새로운 주소 포인터의 독출이 개시된다. 이들 천이는 clock_src 도메인으로부터 clock_dest 도메인으로 패스된다. 이 src_out 신호에 기초하여, dest_out 신호가 지연된 천이를 한다. 이 지연된 천이는 새로운 주소 포인터를 반대편 클록 도메인으로의 전달을 개시하는데 사용된다. 또한, 이 지연된 천이는 src_sync1 신호의 또다른 천이를 개시하기 위하여 클록 도메인 경계를 넘어 원래 위치로 패스된다. 이에 의해 새로운 주소 포인터의 독출이 교대로 개시된다.
다르게 설명하면, src_out 신호와 dest_out 신호의 천이는 토큰 (token) 역할을 한다. 이 토큰은 원시 클록 도메인 (512) 에서 목적지 클록 도메인 (514) 으로 및 이와 반대로, 계속하여 패스된다. 이 토큰은 reset_z 신호의 선언에 의해 개시되며, dest_out 신호의 천이로서 시작된다. 그 후, 이 토큰은 src_sync1, src_sync2, src_out, dest_sync1 및 dest_sync2 신호로서 패스된다. 이 토큰은 dest_sync2 신호의 천이에 의해 dest_out 으로 다시 복귀된다.
src_out 토큰 (즉, src_out 신호의 천이) 은 새로운 주소 포인터가 홀딩 플립플롭에 기록되었음을 나타낸다. 이 토큰이 클록 도메인 경계를 넘어 패스되면, 이 토큰은 새로운 주소 포인터의 동기화를 개시한다.
이와 유사하게, dest_out 토큰은 이 새로운 주소 포인터가 클록 도메인 경계를 넘어 동기화되어, 샘플링 플립플롭에 유지되어 있음을 나타낸다. 이 토큰이 클록 도메인 경계를 넘어 복귀될 때, 이 토큰은 새로운 주소 포인터의 독출을 개시한다. 이러한 식으로, 주소 포인터들이 클록 도메인들을 넘나들며 패스된다.
(도 5 에 도시되어 있는) 동기회로 (510) 는, 이 토큰 트랜스퍼의 시작과 끝을 제어하기 위한 별도의 논리게이트를 도입함으로써 더 최적화될 수 있다. 예를 들면, 이를 위해 AND 게이트 (516) 에 별도의 입력부를 사용할 수 있다.
비록, 여기서 설명한 실시예들은 FIFO 메모리에 관해서이지만, 전체 클록 도메인 상에서 데이터의 동기를 필요로 하는 다른 회로에도 본 발명을 적용할 수 있다. 또한, 특정 회로 및 블록도를 참조하여 이 실시예들을 설명하였지만, 다른 구성으로도 상술한 기능을 구현할 수 있다. 당업자들은, 상술한 실시예들로부터, 본 발명의 교시를 일탈하지 않고 다양한 변경이 가능하다는 것을 이해할 것이다. 이러한 모든 변경을 다음의 청구범위 내에 포함시키고자 한다.
본 발명에 의하면, 기록 프로세스와 독출 프로세스가 서로 다른 클록 도메인에서 동작하도록 하기 위하여, 한 클록 도메인에서는 기록 포인터를 발생시키고 다른 클록 도메인에서는 독출 포인터를 발생시키되, 기록 포인터와 독출 포인터를 동기시키는 회로를 제공한다.

Claims (5)

  1. FIFO 스택을 저장하도록 구성된 메모리;
    기록 주소 포인터에 기초하여 상기 FIFO 스택에 엘리먼트를 추가하도록 구성되며, 제 1 클록 도메인에서 동작하는 기록포트;
    독출 주소 포인터에 기초하여 상기 FIFO 스택으로부터 엘리먼트를 독출하도록 구성되며, 상기 제 1 클록 도메인과는 다른 제 2 클록 도메인에서 동작하는 독출포트;
    상기 기록포트와 기능적으로 결합되며, 상기 기록 주소 포인터를 수신하고 상기 기록 주소 포인터를 상기 제 2 클록 도메인에 동기시키도록 구성된 제 1 동기회로;
    상기 독출포트와 기능적으로 결합되며, 상기 독출 주소 포인터를 수신하고 상기 독출 주소 포인터를 상기 제 1 클록 도메인에 동기시키도록 구성된 제 2 동기회로를 구비하는 것을 특징으로 하는 FIFO.
  2. 제 1 항에 있어서,
    상기 메모리는 DPRAM 을 구비하는 것을 특징으로 하는 FIFO.
  3. 제 1 항에 있어서,
    상기 제 1 동기장치 및 상기 제 2 동기장치 각각은,
    주소 포인터를 수신하도록 구성되며, 상기 제 1 클록 도메인에서 동작하는 홀딩회로; 및
    상기 홀딩회로와 기능적으로 결합되고, 상기 주소 포인터를 수신하도록 구성되며, 상기 제 2 클록 도메인에서 동작하는 샘플링회로를 구비하는 것을 특징으로 하는 FIFO.
  4. 제 1 타이밍 신호를 발생시키도록 구성되며, 제 1 클록 도메인에서 동작하는 제 1 타이밍 플립플롭;
    상기 제 1 타이밍 플립플롭과 기능적으로 결합되며, 상기 제 1 타이밍 신호에 기초하여 반전된 타이밍 신호를 발생시키도록 구성된 반전회로; 및
    상기 인버터와 기능적으로 결합되고, 상기 반전 타이밍 신호에 기초하여 제 2 타이밍 신호를 발생시키도록 구성되며, 상기 제 1 클록 도메인과는 다른 제 2 클록 도메인에서 동작하는 제 2 타이밍 플립플롭을 구비하는 것을 특징으로 하는, 전체 클록 도메인 상에서 주소 포인터들을 조정하는 데 적합한 동기회로.
  5. 제 4 항에 있어서,
    상기 제 1 타이밍 플립플롭과 기능적으로 결합되며, 상기 제 1 타이밍 신호가 천이할 때 제 1 제어신호를 발생시키도록 구성된 제 1 게이트;
    상기 제 1 게이트와 기능적으로 결합되고, 주소 포인터들에 대한 복수의 입력부 및 하나의 출력부를 가지며, 상기 제 1 제어신호에 기초하여 상기 복수의 입력부들 중의 한 입력부를 선택하는 제 1 멀티플렉서; 및
    상기 제 1 멀티플렉서의 상기 출력부와 기능적으로 결합되며, 상기 주소 포인터들을 유지하도록 구성된 홀딩 플립플롭을 더 구비하는 것을 특징으로 하는 동기회로.
KR1019990032932A 1998-09-17 1999-08-11 동기화된 독출 포인터 및 기록 포인터를 갖는 2 중 포트 fifo KR100337052B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/156,516 US6166963A (en) 1998-09-17 1998-09-17 Dual port memory with synchronized read and write pointers
US09/156516 1998-09-17
US9/156516 1998-09-17

Publications (2)

Publication Number Publication Date
KR20000022699A true KR20000022699A (ko) 2000-04-25
KR100337052B1 KR100337052B1 (ko) 2002-05-16

Family

ID=22559893

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990032932A KR100337052B1 (ko) 1998-09-17 1999-08-11 동기화된 독출 포인터 및 기록 포인터를 갖는 2 중 포트 fifo

Country Status (3)

Country Link
US (4) US6166963A (ko)
KR (1) KR100337052B1 (ko)
DE (1) DE19941196B4 (ko)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6166963A (en) * 1998-09-17 2000-12-26 National Semiconductor Corporation Dual port memory with synchronized read and write pointers
US6367027B1 (en) * 1999-03-22 2002-04-02 Infineon Technologies Ag Skew pointer generation
US6604179B2 (en) * 2000-03-23 2003-08-05 Intel Corporation Reading a FIFO in dual clock domains
US6686920B1 (en) * 2000-05-10 2004-02-03 Advanced Micro Devices, Inc. Optimizing the translation of virtual addresses into physical addresses using a pipeline implementation for least recently used pointer
DE10050980A1 (de) * 2000-10-13 2002-05-02 Systemonic Ag Speicherkonfiguration mit I/O-Unterstützung
US6816979B1 (en) 2001-02-01 2004-11-09 Cypress Semiconductor Corp. Configurable fast clock detection logic with programmable resolution
US6826110B2 (en) * 2002-10-17 2004-11-30 International Business Machines Corporation Cell circuit for multiport memory using decoder
EP1432160B1 (en) * 2002-12-18 2006-06-21 Alcatel Method and system for handling data between a clock and data recovery circuit and a data processing unit in asynchronous networks
US6813215B2 (en) * 2002-12-23 2004-11-02 Hewlett-Packard Development Company, L.P. Memory having multiple write ports and method of operation
US6654308B1 (en) 2002-12-23 2003-11-25 Hewlett-Packard Development Company, Lp. Memory having multiple write ports and multiple control memory units, and method of operation
US6754130B1 (en) 2002-12-23 2004-06-22 Hewlett-Packard Development Company, Lp. Memory having multiple write ports and write insert unit, and method of operation
US7149916B1 (en) * 2003-03-17 2006-12-12 Network Equipment Technologies, Inc. Method for time-domain synchronization across a bit-sliced data path design
US6809983B2 (en) * 2003-03-25 2004-10-26 Lsi Logic Corporation Clock generator for pseudo dual port memory
US6864722B2 (en) * 2003-05-09 2005-03-08 Hewlett-Packard Development Company, L.P. Phase detector for a programmable clock synchronizer
US7219251B2 (en) * 2003-05-09 2007-05-15 Hewlett-Packard Development Company, L.P. Programmable clock synchronizer
US7100065B2 (en) * 2003-05-09 2006-08-29 Hewlett-Packard Development Company, L.P. Controller arrangement for synchronizer data transfer between a core clock domain and bus clock domain each having its own individual synchronizing controller
US7194650B2 (en) * 2003-05-09 2007-03-20 Hewlett-Packard Development Company, L.P. System and method for synchronizing multiple synchronizer controllers
US7480357B2 (en) * 2003-05-10 2009-01-20 Hewlett-Packard Development Company, L.P. System and method for effectuating the transfer of data blocks across a clock boundary
US7623482B2 (en) * 2003-05-10 2009-11-24 Hewlett-Packard Development Company, L.P. System and method for effectuating the transfer of data blocks including a header block across a clock boundary
US6829196B1 (en) * 2003-07-30 2004-12-07 Sun Microsystems, Inc. Method and apparatus for prevention of read corruption in rotated-read register files and content addressable memory arrays
US7454537B1 (en) * 2004-04-22 2008-11-18 Altera Corporation Synchronization and channel deskewing circuitry for multi-channel serial links
US7382847B2 (en) * 2004-07-23 2008-06-03 Hewlett-Packard Development Company, L.P. Programmable sync pulse generator
US7119582B2 (en) * 2004-07-23 2006-10-10 Hewlett-Packard Development Company, Lp. Phase detection in a sync pulse generator
US7340631B2 (en) * 2004-07-23 2008-03-04 Hewlett-Packard Development Company, L.P. Drift-tolerant sync pulse circuit in a sync pulse generator
US7436917B2 (en) * 2004-07-29 2008-10-14 Hewlett-Packard Development Company, L.P. Controller for clock synchronizer
US20060023819A1 (en) * 2004-07-29 2006-02-02 Adkisson Richard W Clock synchronizer
US8260982B2 (en) * 2005-06-07 2012-09-04 Lsi Corporation Method for reducing latency
TW200717246A (en) * 2005-06-24 2007-05-01 Koninkl Philips Electronics Nv Self-synchronizing data streaming between address-based producer and consumer circuits
US7568118B2 (en) * 2005-09-20 2009-07-28 Intel Corporation Deterministic operation of an input/output interface
JP5016880B2 (ja) * 2006-09-21 2012-09-05 富士通株式会社 優先クラスに応じたメモリ管理方法及び装置
US8001409B2 (en) * 2007-05-18 2011-08-16 Globalfoundries Inc. Synchronization device and methods thereof
US7958285B1 (en) * 2007-07-12 2011-06-07 Oracle America, Inc. System and method to facilitate deterministic testing of data transfers between independent clock domains on a chip
DE102007051839B4 (de) * 2007-10-30 2015-12-10 Polaris Innovations Ltd. Kontrollschaltung, Speichervorrichtung mit einer Kontrollschaltung und Verfahren zum Durchführen eines Schreibkommandos bzw. zum Betrieb einer Speichervorrichtung mit einer Kontrollschaltung
US8209470B2 (en) * 2009-04-10 2012-06-26 Honeywell International Inc. CPU data bus PLD/FPGA interface using dual port RAM structure built in PLD
IT1399916B1 (it) * 2010-04-30 2013-05-09 Balluchi Dispositivo di memoria ad accesso di registro indicizzato
US20120250877A1 (en) * 2011-03-31 2012-10-04 Taiyi Cheng Method and system for processing audio signals in a central audio hub
US8832393B2 (en) 2012-04-18 2014-09-09 Lsi Corporation Alignment for multiple FIFO pointers
FR2990283A1 (fr) * 2012-05-04 2013-11-08 Commissariat Energie Atomique Bibliotheque de cellules et procede de conception d'un circuit integre asynchrone
CN113259271B (zh) * 2021-07-15 2021-09-24 武汉绿色网络信息服务有限责任公司 报文交换方法和报文交换系统

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4873703A (en) * 1985-09-27 1989-10-10 Hewlett-Packard Company Synchronizing system
US4891788A (en) * 1988-05-09 1990-01-02 Kreifels Gerard A FIFO with almost full/almost empty flag
US5294983A (en) * 1990-06-01 1994-03-15 Thomson Consumer Electronics, Inc. Field synchronization system with write/read pointer control
US5426756A (en) * 1992-08-11 1995-06-20 S3, Incorporated Memory controller and method determining empty/full status of a FIFO memory using gray code counters
FR2717591B1 (fr) * 1994-03-15 1996-06-21 Texas Instruments France Mémoire virtuelle d'interconnexion notamment pour la mise en communication de terminaux de télécommunication fonctionnant à des fréquences différentes.
US5644604A (en) * 1994-11-14 1997-07-01 Hal Computer Systems, Inc. Digital phase selector system and method
US5555524A (en) * 1995-02-13 1996-09-10 Standard Microsystems Corporation Semi-synchronous dual port FIFO
US5630096A (en) * 1995-05-10 1997-05-13 Microunity Systems Engineering, Inc. Controller for a synchronous DRAM that maximizes throughput by allowing memory requests and commands to be issued out of order
DE69615471T2 (de) * 1995-07-07 2002-05-08 Sun Microsystems Inc Verfahren und Vorrichtung zur dynamischen Berechnung von Füllungsgraden eines synchronen Fifo-Puffer
US5857005A (en) * 1995-07-10 1999-01-05 Vlsi Technology, Inc. Method and apparatus for synchronizing transfer of data between memory cells
US5748551A (en) * 1995-12-29 1998-05-05 Micron Technology, Inc. Memory device with multiple internal banks and staggered command execution
US5905766A (en) * 1996-03-29 1999-05-18 Fore Systems, Inc. Synchronizer, method and system for transferring data
US5852608A (en) * 1996-06-06 1998-12-22 Sun Microsystems, Inc. Structure and method for bi-directional data transfer between asynchronous clock domains
US5884100A (en) * 1996-06-06 1999-03-16 Sun Microsystems, Inc. Low-latency, high-throughput, integrated cache coherent I/O system for a single-chip processor
US5811995A (en) * 1996-08-02 1998-09-22 Advanced Micro Devices, Inc. Circuit for switching between different frequency clock domains that are out of phase
US5787457A (en) * 1996-10-18 1998-07-28 International Business Machines Corporation Cached synchronous DRAM architecture allowing concurrent DRAM operations
US5835752A (en) * 1996-10-18 1998-11-10 Samsung Electronics Co. Ltd. PCI interface synchronization
US5784582A (en) * 1996-10-28 1998-07-21 3Com Corporation Data processing system having memory controller for supplying current request and next request for access to the shared memory pipeline
US5850556A (en) * 1996-12-26 1998-12-15 Cypress Semiconductor Corp. Interruptible state machine
US6000037A (en) * 1997-12-23 1999-12-07 Lsi Logic Corporation Method and apparatus for synchronizing data transfer
US6006340A (en) * 1998-03-27 1999-12-21 Phoenix Technologies Ltd. Communication interface between two finite state machines operating at different clock domains
US6166963A (en) * 1998-09-17 2000-12-26 National Semiconductor Corporation Dual port memory with synchronized read and write pointers

Also Published As

Publication number Publication date
US6166963A (en) 2000-12-26
US6134155A (en) 2000-10-17
DE19941196B4 (de) 2006-09-28
DE19941196A1 (de) 2000-03-23
US6212122B1 (en) 2001-04-03
KR100337052B1 (ko) 2002-05-16
US6259650B1 (en) 2001-07-10

Similar Documents

Publication Publication Date Title
KR100337052B1 (ko) 동기화된 독출 포인터 및 기록 포인터를 갖는 2 중 포트 fifo
KR100813424B1 (ko) 지연 라인 동기화 장치 및 방법
US5365485A (en) Fifo with fast retransmit mode
US7975162B2 (en) Apparatus for aligning input data in semiconductor memory device
US7394721B1 (en) Method and apparatus for data synchronization to local clock on memory reads
US5274600A (en) First-in first-out memory
KR20010048248A (ko) 디디알 동기식 메모리 장치의 데이타 출력 장치
JP2001307476A (ja) Fifoメモリ制御回路
US7069406B2 (en) Double data rate synchronous SRAM with 100% bus utilization
US5781802A (en) First-in-first-out (FIFO) controller for buffering data between systems which are asynchronous and free of false flags and internal metastability
JP2004062630A (ja) Fifoメモリ及び半導体装置
KR20040063283A (ko) 제어신호 발생회로 및 상기 제어신호 발생회로를 구비하는데이터 전송회로
US5488712A (en) Memory circuit with pipeline processing
JP2004206832A (ja) 半導体記憶装置、および半導体記憶装置の制御方法
US6900665B2 (en) Transfer of digital data across asynchronous clock domains
US5426772A (en) Single PAL circuit generating system clock and control signals to minimize skew
JP3562416B2 (ja) Lsi間データ転送システム及びそれに用いるソースシンクロナスデータ転送方式
US7262833B2 (en) Circuit for addressing a memory
KR100233843B1 (ko) 영상 데이터 저장 장치
EP0988603B1 (en) Method and arrangement for connecting processor to asic
JPH07182849A (ja) Fifoメモリ
KR200256519Y1 (ko) 비동기 입출력 버퍼 구동 장치
KR100211754B1 (ko) 비동기 메모리 제어회로
JP4825065B2 (ja) クロック乗せ換え回路
KR20100076737A (ko) 플립플롭 및 그를 포함하는 반도체 메모리 장치

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130429

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20140430

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20160330

Year of fee payment: 15

LAPS Lapse due to unpaid annual fee