KR100397920B1 - 판독/기록 취소 가능 가변 용량 선입 선출 통신 시스템 - Google Patents

판독/기록 취소 가능 가변 용량 선입 선출 통신 시스템 Download PDF

Info

Publication number
KR100397920B1
KR100397920B1 KR10-1999-0035256A KR19990035256A KR100397920B1 KR 100397920 B1 KR100397920 B1 KR 100397920B1 KR 19990035256 A KR19990035256 A KR 19990035256A KR 100397920 B1 KR100397920 B1 KR 100397920B1
Authority
KR
South Korea
Prior art keywords
signal
read
write
data
block
Prior art date
Application number
KR10-1999-0035256A
Other languages
English (en)
Other versions
KR20010019050A (ko
Inventor
이하성
Original Assignee
엘지전자 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엘지전자 주식회사 filed Critical 엘지전자 주식회사
Priority to KR10-1999-0035256A priority Critical patent/KR100397920B1/ko
Publication of KR20010019050A publication Critical patent/KR20010019050A/ko
Application granted granted Critical
Publication of KR100397920B1 publication Critical patent/KR100397920B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/15Interconnection of switching modules
    • H04L49/1553Interconnection of ATM switching modules, e.g. ATM switching fabrics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/6245Modifications to standard FIFO or LIFO
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/104Asynchronous transfer mode [ATM] switching fabrics
    • H04L49/105ATM switching elements
    • H04L49/108ATM switching elements using shared central buffer

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Communication Control (AREA)

Abstract

본 발명은 판독/기록 취소 가능 가변 용량 선입 선출 통신 시스템에 관한 것으로, 특히 프로세서(Processor)를 사용하고 서로 다른 프로토콜 속도를 가지는 두 디바이스 간에 FIFO(First In First Out)를 사용하여 통신할 때에 DPRAM(Dual Port Random Access Memory)을 이용하고 판독 또는 기록된 FIFO의 내용을 삭제, 변경 및 용량 가변할 수 있도록 한 판독/기록 취소 가능 가변 용량 선입 선출 통신 시스템에 관한 것이다.
본 발명은 각종 제어 신호를 생성시키고 데이터를 기록하는 프로토콜 기록 블록과, 해당 프로토콜 기록 블록의 제어 신호에 따라 데이터를 저장했다가 출력하는 입력 레지스터와, 판독 측의 제어에 따라 데이터를 판독하는 출력 레지스터와, 판독 측의 제어에 따라 해당 출력 레지스터로부터 데이터를 인가받아 최종 FIFO 출력을 수행하는 출력 버퍼를 구비하는 선입 선출 통신 시스템에 있어서, 엠프티 플래그 신호 또는 풀 플래그 신호에 따라 데이터를 선입 선출하는 메모리 블록과; 상기 프로토콜 기록 블록으로부터 뎁스 데이터를 인가받아 상기 메모리 블록의 용량을 결정하며, 상기 메모리 블록의 메모리 어드레스를 생성하며, 상기 메모리 블록의 메모리 상태에 따라 상기 엠프티 플래그 신호 또는 풀 플래그 신호를 생성시키는 메모리 제어 블록을 포함하여 이루어진 것을 특징으로 한다.

Description

판독/기록 취소 가능 가변 용량 선입 선출 통신 시스템 {Read/Write Cancelable and Variable Depth First In First Out Communication System}
본 발명은 판독/기록 취소 가능 가변 용량 선입 선출 통신 시스템에 관한 것으로, 특히 프로세서(Processor)를 사용하고 서로 다른 프로토콜 속도를 가지는 두 디바이스 간에 FIFO(First In First Out)를 사용하여 통신할 때에 DPRAM(Dual Port Random Access Memory)을 이용하고 판독 또는 기록된 FIFO의 내용을 삭제, 변경 및 용량 가변할 수 있도록 한 판독/기록 취소 가능 가변 용량 선입 선출 통신 시스템에 관한 것이다.
종래 교환 시스템(Exchange System)의 프로세서 통신을 사용하는 시스템에서 서로 다른 전송 속도를 가지는 두 개의 프로토콜 디바이스(Protocol Device) 간에 통신을 수행할 경우 FIFO를 사용할 시에 이미 구현된 상용 FIFO를 사용하였는데, 주어진 용량 내에서 사용해야 하고 한 번 기록(Write)한 데이터(Data)를 동일한 포인터(Pointer)에서 다시 기록하거나 판독(Read)할 수 없는 구조로 되어 있다.
이러한 종래의 프로토콜 디바이스 간 선입 선출 통신 시스템은 도 1에 도시된 바와 같이, 프로토콜 기록 블록(10)과, 입력 레지스터(21)와, FIFO 디바이스(22)와, 출력 레지스터(23)와, 출력 버퍼(24)를 구비하여 이루어져 있다.
상기 프로토콜 기록 블록(10)은 CPU 블록인데, 각종 제어 신호를 생성시켜 상기 입력 레지스터(21)와 FIFO 디바이스(22)에 인가하고 데이터를 상기 입력 레지스터(21)에 기록해 준다. 그리고, 상기 프로토콜 기록 블록(10)은 각종 제어 신호 및 데이터를 출력하는 프로세서(11)와, 해당 프로세서(11)의 제어에 따라 데이터를 기록했다가 상기 입력 레지스터(21)에 인가하는 입력 버퍼(12)와, 해당 프로세서(11)의 제어에 따라 각종 제어 신호를 기록했다가 상기 입력 레지스터(21)와 FIFO 디바이스(22)에 인가하는 제어 버퍼(13)를 구비하여 이루어져 있다.
상기 입력 레지스터(21)는 상기 프로토콜 기록 블록(10)으로부터 인가되는 제어 신호에 따라 데이터를 데이터 입력 라인을 통해 상기 FIFO 디바이스(22)로 출력한다.
상기 FIFO 디바이스(22)는 상기 프로토콜 기록 블록(10)의 제어에 따라 상기 데이터 입력 라인을 통해 인가되는 데이터를 저장했다가 상기 출력 레지스터(23)로 출력해 준다.
상기 출력 레지스터(23)는 판독하는 측으로부터 판독 클럭(Read Clock; RCLK)과 판독 인에이블 신호(Read Enable Signal; RDEN*)를 인가받아 상기 FIFO 디바이스(22)에 저장되어 있는 데이터를 판독하여 상기 출력 버퍼(24)로 인가한다.
상기 출력 버퍼(24)는 판독하는 측으로부터 인가되는 출력 인에이블 신호(Out Enable Signal; OE*)에 따라 상기 출력 레지스터(23)로부터 데이터를 인가받아 최종 FIFO 출력을 수행한다.
상술한 바와 같이 구성된 프로토콜 디바이스 간 선입 선출 통신 시스템은 두 개의 프로토콜 디바이스 간의 통신이 일반적인 FIFO인 FIFO 디바이스(22)를 사용하여 동작을 수행하는데, 만약 한 측에서 기록한 데이터를 판독하는 다른 측이 해당 데이터를 판독하는 속도가 느린 경우에 상기 FIFO 디바이스(22)에 FIFO의 용량만큼 데이터가 쌓이게 되며, 해당 데이터가 해당 FIFO의 용량 이상으로 쌓일 경우에 풀 플래그(Full Flag)를 출력시켜 해당 입력되는 데이터가 더 이상 상기 FIFO 디바이스(22)로 입력되지 않도록 해 준다.
또한, 일반적인 FIFO의 기능으로 데이터를 판독하는 프로토콜 측에서 기록하는 데이터 측의 기록 데이터 용량 이상을 판독하는 경우, 엠프티 플래그(Empty Flag)를 출력시켜 해당 기록 데이터 측에서 데이터 메모리가 다시 존재할 때까지 기다리거나 다른 동작을 수행하도록 한다.
상술한 용도의 FIFO는 서로 다른 데이터 프로토콜 속도를 가지는 두 개의 프로토콜 디바이스 간의 통신을 수행하는 경우에 주로 사용되어지는데, 내부 기록 포인터와 판독 포인터는 증가할 수 있지만 감소할 수 없는 구조로 이루어져 있으므로, 한 측에서 한 번 기록한 데이터를 FIFO 메모리에 저장하면 한 번 기록된 데이터의 내용은 다시 수정할 수 없으며, 또한 한 번 판독한 데이터의 내용은 다시 판독할 수 없다.
또한, 종래 교환 시스템에서 프로토콜 디바이스 간 선입 선출 통신 시스템은 FIFO의 주어진 용량만큼만 사용할 수 있으며, 용량의 증대를 위해서는 여러 개의 FIFO를 연결하고 확장된 FIFO를 사용할 수 있도록 외부 로직(Logic)을 하드웨어적으로 추가해야 하는 단점이 있으며, 일단 한 번 기록 또는 판독한 FIFO에서 해당 FIFO의 내용을 다시 수정하여 기록하거나 다시 동일한 어드레스(Address)의 FIFO 내용을 기록할 수 없는 문제점이 있었다.
그리고, 종래 교환 시스템에서 프로토콜 디바이스 간 선입 선출 통신 시스템은 한 번의 기록 동작으로 동일한 이전 FIFO 메모리 어드레스에 기록할 수 없으므로 프로세서가 어떤 조건으로 리트라이(Retry) 동작이 발생한 경우에 이전 기록 데이터를 수정하여 FIFO에 기록해야 하는데 이미 FIFO의 기록 포인터가 증가하여 다른 어드레스 포인터의 FIFO에 기록하게 되며, 또한 판독하는 측에서도 리트라이 동작이 발생한 경우에 이전 어드레스 포인터를 판독할 수 없는 문제점이 있었다.
전술한 바와 같은 단점 내지는 문제점을 해결하기 위한 것으로, 본 발명은 프로세서 통신을 사용하는 시스템에서 서로 다른 전송 속도를 가지는 두 개의 프로토콜 간의 통신 시에 FIFO를 사용할 때 DPRAM을 사용하여 FIFO의 기능을 구현할 수 있고 사용자가 FIFO의 용량을 임의대로 가변하여 FIFO 레지스터(Register)에 기록할 수 있고 한 번 기록 또는 판독한 FIFO의 내용을 오류 없이 변경할 수 있게 함으로써, 정확한 FIFO의 동작을 수행할 수 있도록 한 판독/기록 취소 가능 가변 용량 선입 선출 통신 시스템을 제공하는데, 그 목적이 있다.
도 1은 종래 프로토콜 디바이스(Protocol Device) 간 선입 선출 통신 시스템을 나타낸 구성 블록도.
도 2는 본 발명의 실시예에 따른 판독/기록 취소 가능 가변 용량 선입 선출 통신 시스템을 나타낸 구성 블록도.
도 3은 도 2에 있어 메모리 제어 블록의 구성을 나타낸 도면.
도 4는 도 2에 있어 메모리 블록의 구성을 나타낸 도면.
* 도면의 주요 부분에 대한 부호의 설명 *
10 : 프로토콜 기록 블록(Protocol Write Block)
20 : 입력 레지스터 30 : 메모리 제어 블록
40 : 메모리 블록 50 : 출력 레지스터
60 : 출력 버퍼 AND1 ~ AND3 : 앤드 게이트
B1, B2 : 삼상태 버퍼 31 : 판독 카운터
32 : 기록 카운터 33 : FIFO 뎁스 레지스터
34 : 비교기(Comparator) XOR : 배타적 오아 게이트
NOT : 낫 게이트 NAND1, NAND2 : 난드 게이트
41-1 ~ 41-n : 플래그 매니저(Flag Manager)
42-1 ~ 42-n : DPRAM(Dual Port Random Access Memory)
상술한 바와 같은 목적을 달성하기 위한 본 발명은, 각종 제어 신호를 생성시키고 데이터를 기록하는 프로토콜 기록 블록과, 해당 프로토콜 기록 블록의 제어 신호에 따라 데이터를 저장했다가 출력하는 입력 레지스터와, 판독 측의 제어에 따라 데이터를 판독하는 출력 레지스터와, 판독 측의 제어에 따라 해당 출력 레지스터로부터 데이터를 인가받아 최종 FIFO 출력을 수행하는 출력 버퍼를 구비하는 선입 선출 통신 시스템에 있어서, 엠프티 플래그 신호 또는 풀 플래그 신호에 따라 데이터를 선입 선출하는 메모리 블록과; 상기 프로토콜 기록 블록으로부터 뎁스 데이터를 인가받아 상기 메모리 블록의 용량을 결정하며, 상기 메모리 블록의 메모리 어드레스를 생성하며, 상기 메모리 블록의 메모리 상태에 따라 상기 엠프티 플래그 신호 또는 풀 플래그 신호를 생성시키는 메모리 제어 블록을 포함하여 이루어진 것을 특징으로 한다.
여기서, 상기 메모리 블록은 인에이블 제어 신호를 생성하는 다수 개의 플래그 매니저와; 상기 각 플래그 매니저로부터 인가되는 인에이블 제어 신호에 따라 데이터를 저장하거나 출력하는 다수 개의 DPRAM을 포함하여 이루어진 것을 특징으로 한다. 또한, 상기 플래그 매니저는 하나의 DPRAM 용량이 풀 상태인 경우에 풀 플래그 신호를 생성시켜 다음의 엠프티 플래그 신호와 논리곱하여 다음의 인에이블 제어 신호를 생성해 다음의 DPRAM에 인가하여 인에이블시키고 최종의 DPRAM까지 풀상태인 경우에 최종 풀 플래그 신호를 발생시켜 주며, 하나의 DPRAM 용량이 엠프티 상태인 경우에 엠프티 플래그 신호를 생성시켜 이전의 풀 플래그 신호와 논리곱하여 이전의 인에이블 제어 신호를 생성해 이전의 DPRAM에 인가하여 인에이블시키고 첫 번째 DPRAM까지 엠프티 상태인 경우에 최종 엠프티 플래그 신호를 발생시켜 주는 것을 특징으로 한다.
그리고, 상기 메모리 제어 블록은 판독 클럭과 엠프티 플래그 신호를 논리곱하는 제1앤드 게이트와; 판독 인에이블 신호에 따라 상기 제1앤드 게이트의 출력 신호를 스위칭하는 제1삼상태 버퍼와; 기록 클럭과 풀 플래그 신호를 논리곱하는 제2앤드 게이트와; 기록 인에이블 신호에 따라 상기 제2앤드 게이트의 출력 신호를 스위칭하는 제2삼상태 버퍼와; 리셋 신호와 프리셋 신호를 논리곱하는 제3앤드 게이트와; 상기 제1삼상태 버퍼의 출력 신호에 따라 '1'씩 판독 카운터 값을 증가시키며, 상기 제3앤드 게이트의 출력 신호에 따라 해당 판독 카운터 값을 초기화시키며, 판독 포인터 값을 상기 메모리 블록의 메모리 어드레스로 출력하며, 판독 취소 신호에 따라 이전의 판독 카운터 값을 로딩시켜 주는 판독 카운터와; 상기 제2삼상태 버퍼의 출력 신호에 따라 '1'씩 기록 카운터 값을 증가시키며, 상기 제3앤드 게이트의 출력 신호에 따라 해당 기록 카운터 값을 초기화시키며, 기록 포인터 값을 상기 메모리 블록의 메모리 어드레스로 출력하며, 기록 취소 신호에 따라 이전의 기록 카운터 값을 로딩시켜 주는 기록 카운터와; 뎁스 클럭에 동기를 맞추어 뎁스 데이터를 래치하는 FIFO 뎁스 레지스터와; 상기 기록 카운터의 기록 카운터 값, 상기 판독 카운터의 판독 카운터 값 및 상기 FIFO 뎁스 레지스터의 래치 값에 대한크기 및 동일한 값을 비교하는 비교기와; 상기 기록 카운터의 기록 포인터 값과 상기 판독 카운터의 판독 포인터 값을 배타적 논리합하는 배타적 오아 게이트와; 상기 배타적 오아 게이트의 출력 신호를 반전하는 낫 게이트와; 상기 비교기의 출력 신호와 상기 낫 게이트의 출력 신호를 논리곱하고 반전시켜 풀 플래그 신호를 생성하는 제1난드 게이트와; 상기 비교기의 출력 신호와 상기 배타적 오아 게이트의 출력 신호를 논리곱하고 반전시켜 엠프티 플래그 신호를 생성시키는 제2난드 게이트를 포함하여 이루어진 것을 특징으로 한다. 또한, 상기 비교기는 상기 기록 카운터의 기록 카운터 값과 상기 판독 카운터의 판독 카운터 값이 동일한 경우에 '로직 하이'의 신호를 상기 제2난드 게이트에 출력하며, 상기 기록 카운터의 기록 카운터 값과 상기 판독 카운터의 판독 카운터 값의 차이 값이 상기 FIFO 뎁스 레지스터의 래치 값보다 큰 경우에 '로직 하이'의 신호를 상기 제1난드 게이트에 출력하는 것을 특징으로 한다.
본 발명은 FIFO의 기능을 DPRAM을 사용하여 구현하며, FIFO의 뎁스(Depth)를 레지스터를 통해 세팅(Setting)하도록 하며, 리트라이로 인한 FIFO의 판독 및 기록 포인터를 이전 포인터로 옮겨 내용을 수정하거나 다시 이전 데이터를 FIFO를 통해 판독하도록 하며, 다수 개의 플래그 매니저(Flag Manager)를 사용하여 DPRAM을 데이지 체인(Daisy Chain)으로 제어하도록 하며, 다수 개의 FIFO DPRAM을 사용할 수 있도록 해 준다. 이하, 본 발명의 실시예를 첨부한 도면을 참조하여 상세하게 설명하면 다음과 같다.
본 발명의 실시예에 따른 판독/기록 취소 가능 가변 용량 선입 선출 통신 시스템은 도 2에 도시한 바와 같이, 프로토콜 기록 블록(Protocol Write Block; 10)과, 입력 레지스터(20)와, 메모리 제어 블록(30)과, 메모리 블록(40)과, 출력 레지스터(50)와, 출력 버퍼(60)를 구비하여 이루어진다. 여기서, 어드레스 포인터 라인은 해당 메모리 블록(40)으로 기록하기 위한 것이다. 그리고, 상기 출력 레지스터(50)와 출력 버퍼(60)은 종래의 구성과 동일하므로 그 설명을 생략한다.
상기 프로토콜 기록 블록(10)은 각종 제어 신호를 생성시켜 상기 입력 레지스터(20)와 메모리 제어 블록(30)에 인가하고 데이터를 상기 입력 레지스터(20)에 기록해 준다. 그리고, 상기 프로토콜 기록 블록(10)은 각종 제어 신호 및 데이터를 출력하는 프로세서(11)와, 해당 프로세서(11)의 제어에 따라 데이터를 기록했다가 상기 입력 레지스터(20)에 인가하는 입력 버퍼(12)와, 해당 프로세서(11)의 제어에 따라 각종 제어 신호를 기록했다가 상기 입력 레지스터(20)와 메모리 제어 블록(30)에 인가하는 제어 버퍼(13)를 구비하여 이루어진다. 여기서, 해당 각종 제어 신호는 설명상의 편의를 위해 도 2에서는 서로 연관된 신호의 도식적인 구성 연결도만 표시하였으며, 하기할 도 3와 도 4에서 자세히 설명하기로 한다.
상기 입력 레지스터(20)는 상기 프로토콜 기록 블록(10)으로부터 인가되는 제어 신호에 따라 뎁스 데이터(DEPTH_DATA)를 데이터 입력 라인을 통해 상기 메모리 제어 블록(30)으로 출력하고 그 외 데이터를 데이터 입력 라인을 통해 상기 메모리 블록(40)으로 출력한다.
상기 메모리 제어 블록(30)은 상기 데이터 입력 라인을 통해 뎁스 데이터(DEPTH_DATA)를 인가받아 상기 메모리 블록(40)의 FIFO 용량을 결정하며, 상기 메모리 블록(40)의 메모리 어드레스를 생성하며, 상기 메모리 블록(40)의 FIFO 상태에 따라 엠프티 플래그 신호(EF*) 또는 풀 플래그 신호(FF*)를 생성시켜 데이터의 기록 또는 판독을 제어해 준다.
그리고, 상기 메모리 제어 블록(30)은 도 3에 도시된 바와 같이, 제1앤드 게이트(AND1)와, 제1삼상태 버퍼(B1)와, 제2앤드 게이트(AND2)와, 제2삼상태 버퍼(B2)와, 제3앤드 게이트(AND3)와, 판독 카운터(31)와, 기록 카운터(32)와, FIFO 뎁스 레지스터(33)와, 비교기(Comparator; 34)와, 배타적 오아 게이트(XOR)와, 낫 게이트(NOT)와, 제1난드 게이트(NAND1)와, 제2난드 게이트(NAND2)를 구비하여 이루어진다. 여기서, 해당 제1앤드 게이트(AND1)는 판독 클럭(RD_CLK)과 엠프티 플래그 신호(EF*)를 논리곱시키고 해당 논리곱된 신호를 해당 제1삼상태 버퍼(B1)에 인가한다. 해당 제1삼상태 버퍼(B1)는 판독 인에이블 신호(RD_EN)에 따라 해당 제1앤드 게이트(AND1)로부터 출력되는 신호를 해당 판독 카운터(31)에 인가한다. 해당 제2앤드 게이트(AND2)는 기록 클럭(WR_CLK)과 풀 플래그 신호(FF*)를 논리곱시키고 해당 논리곱된 신호를 해당 제2삼상태 버퍼(B2)에 인가한다. 해당 제2삼상태 버퍼(B2)는 기록 인에이블 신호(WR_EN)에 따라 해당 제2앤드 게이트(AND2)로부터 출력되는 신호를 해당 기록 카운터(32)에 인가한다. 해당 제3앤드 게이트(AND3)는 리셋 신호(RESET*)와 프리셋 신호(PRESET)를 논리곱시키고 해당 논리곱된 신호를 해당 기록 카운터(32)와 판독 카운터(31)의 각 리셋 단자에인가한다. 해당 판독 카운터(31)는 해당 제1삼상태 버퍼(B1)를 통해 인가되는 신호에 따라 판독 카운터 값을 '1'씩 증가시켜 해당 비교기(34)에 인가하며, 해당 제3앤드 게이트(AND3)로부터 인가되는 신호에 따라 판독 카운터 값을 초기화시키며, 판독 포인터 값을 상기 메모리 블록(40)의 FIFO 입력 어드레스로 출력하며, 이전의 판독 데이터를 취소할 경우에 판독 취소 신호(RD_CANCEL*)를 인가받아 이전의 판독 카운터 값을 로딩(Loading)시켜 이전의 판독 카운터 값과 이전의 판독 포인터 값을 출력시켜 준다. 해당 기록 카운터(32)는 해당 제2삼상태 버퍼(B2)를 통해 인가되는 신호에 따라 기록 카운터 값을 '1'씩 증가시켜 해당 비교기(34)에 인가하며, 해당 제3앤드 게이트(AND3)로부터 인가되는 신호에 따라 기록 카운터 값을 초기화시키며, 기록 포인터 값을 상기 메모리 블록(40)의 FIFO 입력 어드레스로 출력하며, 이전의 기록 데이터를 취소할 경우에 기록 취소 신호(WR_CANCEL*)를 인가받아 이전의 기록 카운터 값을 로딩시켜 이전 기록 카운터 값과 이전 기록 포인터 값을 출력시켜 준다. 해당 FIFO 뎁스 레지스터(33)는 뎁스 클럭(WR_F_DEPTH*)에 동기를 맞추어 뎁스 데이터(DEPTH_DATA)를 래치(Latch)했다가 해당 비교기(34)에 인가한다. 해당 비교기(34)는 해당 기록 카운터(32)의 기록 카운터 값(B)과 해당 판독 카운터(31)의 판독 카운터 값(A)이 동일한 경우에 '로직 하이'의 신호를 해당 제2난드 게이트(NAND2)에 출력하며, 해당 기록 카운터(32)의 기록 카운터 값(B)과 해당 판독 카운터(31)의 판독 카운터 값(A)의 차이 값이 해당 FIFO 뎁스 레지스터(33)의 래치 값(C)보다 큰 경우에 '로직 하이'의 신호를 해당 제1난드 게이트(NAND1)에 출력한다. 해당 배타적 오아 게이트(XOR)는 해당 기록 카운터(32)의 기록 포인터 값과 해당 판독 카운터(31)의 판독 포인터 값을 배타적 논리합시키고 해당 배타적 논리합된 신호를 해당 낫 게이트(NOT)와 제2난드 게이트(NAND2)에 각각 인가한다. 해당 낫 게이트(NOT)는 해당 배타적 오아 게이트(XOR)의 출력 신호를 반전시키고 해당 반전된 신호를 해당 제1난드 게이트(NAND1)에 인가한다. 해당 제1난드 게이트(NAND1)는 해당 비교기(34)의 출력 신호와 해당 낫 게이트(NOT)의 출력 신호를 논리곱하고 해당 논리곱된 신호를 반전시켜 풀 플래그 신호(FF*)를 생성시킨다. 해당 제2난드 게이트(NAND2)는 해당 비교기(34)의 출력 신호와 해당 배타적 오아 게이트(XOR)의 출력 신호를 논리곱하고 해당 논리곱된 신호를 반전시켜 엠프티 플래그 신호(EF*)를 생성시킨다.
상기 메모리 블록(40)은 상기 메모리 제어 블록(30)의 제어에 따라 상기 데이터 입력 라인을 통해 데이터를 저장한다. 그리고, 상기 메모리 블록(40)은 도 4에 도시된 바와 같이, 다수 개의 플래그 매니저(Flag Manager; 41-1 ~ 41-n)와, 다수 개의 DPRAM(42-1 ~ 42-n)을 구비하여 이루어진다. 또한, 도 3는 하나의 플래그 매니저(41-1 ~ 41-n)에 포함되어 있다. 해당 플래그 매니저(41-1 ~ 41-n)는 다음의 DPRAM(42-1 ~ 42-n)을 포인팅(Pointing)할 수 있도록 하기 위하여 각 DPRAM(42-1 ~ 42-n)을 인에이블시키기 위한 제어 신호(En1* ~ Enn*)를 생성시켜 각 DPRAM(42-1 ~ 42-n)의 CSA 단자와 CSB 단자에 인가해 주는데, 하나의 DPRAM(42-1 ~ 42-n)에 데이터를 모두 기록한 경우에 풀 플래그 신호(FF1* ~ FFn*)를 발생시켜 다음의 DPRAM(42-1 ~ 42-n)가 인에이블될 수 있도록 하고 최종 DPRAM(42-n)까지 기록된 경우에 최종 풀 플래그 신호(FF*)를 발생시켜 주며, 하나의 DPRAM(42-1 ~ 42-n)에 데이터를 모두 판독한 경우에 엠프티 플래그 신호(EF1* ~ EFn*)를 생성시켜 이전의 DPRAM(42-1 ~ 42-n)가 인에이블될 수 있도록 하고 최종 DPRAM(42-n)까지 판독된 경우에 최종 엠프티 플래그 신호(EF*)를 발생시켜 준다. 해당 DPRAM(42-1 ~ 42-n)은 해당 플래그 매니저(41-1 ~ 41-n)로부터 인가되는 제어 신호(En1* ~ Enn*)에 따라 인에이블되어 데이터를 기록 또는 판독하도록 한다.
상술한 바와 같이 구성된 본 발명의 실시예에 따른 판독/기록 취소 가능 가변 용량 선입 선출 통신 시스템의 동작을 설명하면 다음과 같다.
본 발명은 DPRAM을 사용하여 FIFO를 구현하였으며, 사용자가 임의로 FIFO의 용량을 가변할 수 있으며, FIFO의 기록 동작 및 판독 동작에 대해 프로토콜 디바이스가 CPU 또는 다른 이유로 인하여 리트라이 동작이 발생한 경우에 FIFO의 내용에 대해 다시 기록하거나 판독하는 동작이 가능하도록 구현하였다.
먼저, CPU 역할을 수행하는 프로토콜 기록 블록(10)에서는 각종 제어 신호를 생성시켜 입력 레지스터(20)와 메모리 제어 블록(30)에 인가하고 메모리 블록(40)에 데이터를 기록하기 위해서 데이터를 입력 레지스터(20)에 기록해 준다. 즉, 해당 프로토콜 기록 블록(10) 내에 구비되어 있는 프로세서(11)는 해당 각종 제어 신호를 해당 프로토콜 기록 블록(10) 내에 구비되어 있는 제어 버퍼(13)에 기록했다가 해당 입력 레지스터(20)와 메모리 제어 블록(30)에 인가하며, 해당 데이터를 해당 프로토콜 기록 블록(10) 내에 구비되어 있는 입력 버퍼(12)에 기록했다가 해당 입력 레지스터(20)에 인가한다.
이에, 상기 입력 레지스터(20)는 상기 프로토콜 기록 블록(10)의 제어에 따라 기록된 데이터를 상기 메모리 제어 블록(30)과 메모리 블록(40)으로 출력해 준다.
그런데, 상기 프로토콜 기록 블록(10)은 FIFO 데이터의 기록 동작을 수행하기 전에 상기 메모리 제어 블록(30)에서 어드레스 및 데이터를 이용하여 FIFO의 용량을 결정하도록 하기 위해서 뎁스 데이터(DEPTH_DATA)를 뎁스 클럭(WR_F_DEPTH*)에 동기를 맞추어 상기 메모리 제어 블록(30) 내에 구비되어 있는 FIFO 뎁스 레지스터(33)에 기록시켜 준다.
그러면, 상기 메모리 제어 블록(30)은 상기 프로토콜 기록 블록(10)으로부터 뎁스 데이터(DEPTH_DATA)를 인가받아 FIFO의 용량을 결정하며, 초기 상태에서 FIFO 상태가 엠프티 플래그(EF*), 즉 상기 메모리 블록(40)의 DPRAM(42-1 ~ 42-n)이 비어 있는 상태임을 나타내도록 전환하며, 이 후에 데이터의 기록 동작을 수행하여 상기 입력 레지스터(20)를 거쳐 데이터가 해당 DPRAM(42-1 ~ 42-n)에 기록되도록 한다.
한편, 판독하는 측에서는 상기 메모리 제어 블록(30)의 엠프티 플래그(EF*)가 '로직 하이(Logic High)'로 변환되는 것을 감시하며, 판독 클럭(RCLK)과 판독 인에이블 신호(RDEN*)를 출력 레지스터(50)로 인가하고 출력 인에이블 신호(OE*)를 출력 버퍼(60)로 인가해 준다.
이에, 상기 출력 레지스터(50)는 판독 측으로부터 인가되는 판독 클럭(RCLK)과 판독 인에이블 신호(RDEN*)에 따라 상기 메모리 블록(40)에 저장되어 있는 데이터를 판독해 상기 출력 버퍼(60)로 인가하며, 상기 출력 버퍼(60)는 판독 측으로부터 인가되는 출력 인에이블 신호(OE*)에 따라 상기 출력 레지스터(50)로부터 데이터를 인가받아 최종 FIFO 출력을 수행한다.
그런데, 만약 기록하는 측의 속도, 즉 상기 프로토콜 기록 블록(10)에서 상기 메모리 블록(40)으로 데이터를 기록하는 속도가 빨라 상기 메모리 블록(40)의 FIFO 용량만큼 기록되어 메모리 풀 상태가 된 경우, 상기 메모리 제어 블록(30)은 FIFO 상태가 풀 플래그(FF*), 즉 상기 메모리 블록(40)의 DPRAM(42-1 ~ 42-n)이 가득한 상태임을 나타내도록 전환해 줌으로써 데이터의 기록을 중지하도록 한다.
반면에, 판독하는 측에서 상기 메모리 블록(40)의 FIFO 용량 전체를 모두 판독하여 상기 메모리 블록(40)의 FIFO 상태가 엠프티이면, 상기 메모리 제어 블록(30)에서는 엠프티 플래그 신호(EF*)를 생성시켜 판독하는 측으로 송출하여 더 이상 판독하지 않도록 한다.
다음으로, 도 3를 참고하여 상기 메모리 제어 블록(30)의 동작을 조금 더 상세히 살펴보면, 상기 입력 레지스터(20)를 통해 뎁스 데이터(DEPTH_DATA)를 인가받아 상기 메모리 블록(40)의 용량을 결정하며, 상기 메모리 블록(40)의 FIFO 상태가 엠프티 상태인지 아니면 풀 상태인지를 체크하며, 상기 메모리 블록(40)의 메모리 어드레스를 생성하며, 데이터의 기록 및 판독의 동작에 오류가 발생하여 재 시도하는 경우에 이전의 메모리 어드레스를 생성시켜 준다.
먼저, 기록하는 측의 프로토콜 기록 블록(10)에서는 뎁스 데이터(DEPTH_DATA)를 뎁스 클럭(WR_F_DEPTH*)에 동기를 맞추어 상기 메모리 제어블록(30) 내에 구비되어 있는 FIFO 뎁스 레지스터(33)에 래치하여 둔다.
그런 후, 상기 프로토콜 기록 블록(10)에서 데이터를 상기 메모리 블록(40)에 기록하게 되면, 기록 클럭(WR_CLK)에 동기를 맞추어 해당 데이터가 상기 메모리 블록(40)에 기록됨과 동시에 한 번 데이터가 기록될 때마다 상기 메모리 제어 블록(30) 내에 구비되어 있는 기록 카운터(32)는 '1'씩 기록 카운터 값을 증가시켜 준다. 이때, 상기 기록 클럭(WR_CLK)은 기록 인에이블 신호(WR_EN)가 활성화(Active)인 경우, 즉 '로직 하이'인 경우에만 유효하다.
다시 말해서, 상기 메모리 제어 블록(30) 내에 구비되어 있는 제2앤드 게이트(AND2)는 기록 클럭(WR_CLK)과 풀 플래그 신호(FF*)를 논리곱시키고 해당 논리곱된 신호를 상기 메모리 제어 블록(30) 내에 구비되어 있는 제2삼상태 버퍼(B2)에 인가하며, 해당 제2삼상태 버퍼(B2)는 기록 인에이블 신호(WR_EN)에 따라 해당 제2앤드 게이트(AND2)로부터 출력되는 신호를 상기 기록 카운터(32)에 인가해 줌으로써, 상기 기록 카운터(32)는 해당 제2삼상태 버퍼(B2)를 통해 인가되는 신호에 따라 기록 카운터 값을 '1'씩 증가시켜 준다.
또한, 판독 동작 시에는 한 번 데이터가 판독될 때마다 상기 메모리 제어 블록(30) 내에 구비되어 있는 판독 카운터(31)가 '1'씩 판독 카운터 값을 증가시켜 준다. 이때, 판독 인에이블 신호(RD_EN)가 활성화인 경우에만 판독 클럭(RD_CLK)에 동기를 맞추어 판독 카운터 값을 '1'씩 증가하게 된다.
다시 말해서, 상기 메모리 제어 블록(30) 내에 구비되어 있는 제1앤드 게이트(AND1)는 판독 클럭(RD_CLK)과 엠프티 플래그 신호(EF*)를 논리곱시키고 해당 논리곱된 신호를 상기 메모리 제어 블록(30) 내에 구비되어 있는 제1삼상태 버퍼(B1)에 인가하며, 해당 제1삼상태 버퍼(B1)는 판독 인에이블 신호(RD_EN)에 따라 해당 제1앤드 게이트(AND1)로부터 출력되는 신호를 상기 판독 카운터(31)에 인가해 줌으로써, 상기 판독 카운터(31)는 해당 제1삼상태 버퍼(B1)를 통해 인가되는 신호에 따라 판독 카운터 값을 '1'씩 증가시켜 준다.
그리고, 상기 기록 카운터(32)에서의 기록 카운터 값과 상기 판독 카운터(31)에서의 판독 카운터 값은 초기 리셋(Reset) 시 또는 상기 기록 카운터(32)와 판독 카운터(31)를 '0'으로 클리어(Clear)하기 위해서 프리셋 신호(PRESET)를 '로직 로우'로 할 수 있다. 즉, 상기 메모리 제어 블록(30) 내에 구비되어 있는 제3앤드 게이트(AND3)는 리셋 시호(RESET*)와 프리셋 신호(PRESET)를 논리곱시키고 해당 논리곱된 신호를 상기 기록 카운터(32)와 판독 카운터(31)의 각 리셋 단자에 인가시켜 줌으로써, 상기 기록 카운터(32)와 판독 카운터(31)의 각 카운터 값을 초기화시켜 줄 수 있다.
더구나, 상기 기록 카운터(32)와 판독 카운터(31)의 각 출력 값인 기록 포인터 및 판독 포인터가 상기 메모리 블록(40)의 FIFO 입력 어드레스로 출력되어진다.
한편, 상기 메모리 블록(40)에 현재 기록한 데이터의 내용이 잘못된 경우, 즉 CPU가 리트라이 동작이나 메모리 동작을 재 시도해야 하는 경우에 기록 취소 신호(WR_CANCEL*)를 출력시켜 이전의 기록 카운터 값을 상기 기록 카운터(32)에 로드(Load)하여 이후에 기록하는 카운터 값이 하나 감소되고 FIFO 어드레스 포인터(기록 포인터)도 하나 감소됨으로써 FIFO 기록 데이터를 수정할 수 있도록해 준다. 다시 말해서, 상기 기록 카운터(32)는 기록 취소 신호(WR_CANCEL*)를 인가받는 경우에 이전의 기록 카운터 값을 로딩시켜 이전의 기록 카운터 값과 이전의 기록 포인터 값을 다시 출력시켜 준다.
반면에, 판독 동작 시에도 판독 측에서 재 시도가 필요한 경우에 판독 취소 신호(RD_CANCEL*)를 출력시켜 이전의 판독 카운터 값을 상기 판독 카운터(31)에 로드하여 이후에 판독하는 카운터 값이 하나 감소됨으로써 이전의 판독 포인터를 다시 판독할 수 있도록 해 준다. 다시 말해서, 상기 판독 카운터(31)는 판독 취소 신호(RD_CANCEL*)를 인가받는 경우에 이전의 판독 카운터 값을 로딩시켜 이전의 판독 카운터 값과 이전의 판독 포인터 값을 다시 출력시켜 준다.
이에 따라, 상기 메모리 제어 블록(30) 내에 구비되어 있는 비교기(34)에서는 상기 기록 카운터(32)의 기록 카운터 값(B), 상기 판독 카운터(31)의 판독 카운터 값(A) 및 상기 FIFO 뎁스 레지스터(33)에 래치된 값(C)에 대한 크기 및 동일 값을 비교하는데, 상기 기록 카운터(32)의 기록 카운터 값(B)과 상기 판독 카운터(31)의 판독 카운터 값(A)이 동일한 경우, 즉 판독할 데이터가 기록한 데이터의 용량만큼 모두 판독한 경우에 엠프티 플래그 신호(EF*)를 발생시키도록 하며, 상기 기록 카운터(32)의 기록 카운터 값(B)에서 상기 판독 카운터(31)의 판독 카운터 값(A)을 감한 값이 상기 FIFO 뎁스 레지스터(33)에 래치된 값(C)보다 큰 경우, 즉 기록하는 데이터가 상기 메모리 블록(40)의 FIFO 용량을 초과하는 경우에 풀 플래그 신호(FF*)를 발생시키도록 한다.
다시 자세히 설명하면, 상기 비교기(34)에서는 상기 기록 카운터(32)로부터인가되는 기록 카운터 값(B)과 상기 판독 카운터(31)로부터 인가되는 판독 카운터 값(A)을 비교하며, 해당 비교 결과로 기록 카운터 값(B)과 판독 카운터 값(A)이 동일한 경우에 '로직 하이'로 상기 메모리 제어 블록(30) 내에 구비되어 있는 제2난드 게이트(NAND2)에 출력한다. 그리고, 상기 비교기(34)에서는 상기 기록 카운터(32)로부터 인가되는 기록 카운터 값(B)과 상기 판독 카운터(31)로부터 인가되는 판독 카운터 값(A)의 차이를 구하며, 해당 차이 값과 미리 정한 FIFO 뎁스, 즉 상기 FIFO 뎁스 레지스터(33)에 래치된 값(C)을 비교하며, 해당 비교 결과로 해당 차이 값이 상기 FIFO 뎁스 레지스터(33)에 래치된 값(C)보다 큰 경우에 '로직 하이'로 상기 메모리 제어 블록(30) 내에 구비되어 있는 제1난드 게이트(NAND1)에 출력한다. 그리고, 이 조건들 이외의 값에서는 모두 '로직 로우'로 해당 제1난드 게이트(NAND1)와 제2난드 게이트(NAND2)에 각각 출력되어진다.
이와 동시에, 상기 메모리 제어 블록(30) 내에 구비되어 있는 배타적 오아 게이트(XOR)는 상기 기록 카운터(32)로부터 출력되는 기록 포인터의 값과 상기 판독 카운터(31)로부터 출력되는 판독 포인터의 값을 배타적 논리합시키며, 해당 배타적 논리합된 신호를 상기 메모리 제어 블록(30) 내에 구비되어 있는 낫 게이트(NOT)와 제2난드 게이트(NAND2)에 각각 인가한다. 그리고, 해당 낫 게이트(NOT)는 해당 배타적 오아 게이트(XOR)로부터 출력되는 신호를 반전시키며, 해당 반전된 신호를 상기 제1난드 게이트(NAND1)에 인가한다.
그러면, 상기 제1난드 게이트(NAND1)는 상기 비교기(34)로부터 출력되는 신호와 상기 낫 게이트(NOT)로부터 출력되는 신호를 논리곱하고 해당 논리곱된 신호를 반전시켜 상기 풀 플래그 신호(FF*)를 생성시켜 주며, 상기 제2난드 게이트(NAND2)는 상기 비교기(34)로부터 출력되는 신호와 상기 배타적 오아 게이트(XOR)로부터 출력되는 신호를 논리곱하고 해당 논리곱된 신호를 반전시켜 상기 엠프티 플래그 신호(EF*)를 생성시켜 준다.
상술한 바와 같은 메모리 제어 블록(30)은 도 3에 도시된 바와 같이 하나로 구성되어 있는데, 상기 메모리 블록(40)의 FIFO 용량을 증대하기 위하여 상기 메모리 블록(40)의 DPRAM(42-1 ~ 42-n)을 여러 개 사용한 경우와 동일한 로직을 여러 개 둘 수 있다.
즉, 도 2에 도시된 메모리 블록(40)을 다수 개로 구성하여 FIFO 용량을 증대할 수 있는데, 도 4에 도시된 바와 같이, 다수 개의 플래그 매니저(41-1 ~ 41-n)에서 다수 개의 DPRAM(42-1 ~ 42-n)을 데이지 체인으로 사용하여 제어하도록 함으로써, 다수 개의 DPRAM(42-1 ~ 42-n)을 사용할 수 있어 FIFO 용량을 증대할 수 있다.
그리고, 도 4에 도시된 바와 같이, 데이지 체인으로 사용하여 제어 블록을 사용할 수 있도록 구현하기 위하여 다음의 DPRAM(42-1 ~ 42-n)을 포인팅할 수 있도록 하는데, 각 DPRAM(42-1 ~ 42-n)을 인에이블시키기 위한 각각의 제어 신호(En1* ~ Enn*)는 해당 각 DPRAM(42-1 ~ 42-n)의 CSB 단자와 CSA 단자로 각각 입력되어 해당 각 DPRAM(42-1 ~ 42-n)을 인에이블하도록 하며, 하나의 DPRAM(42-1 ~ 42-n) 용량을 모두 기록한 경우에 각 풀 플래그 신호(FF1* ~ FFn*)를 발생시켜 다음의 DPRAM(42-1 ~ 42-n)을 인에이블할 수 있도록 하며, 최종 DPRAM(42-n)의 뎁스까지 기록된 경우에 최종 풀 플래그 신호(FF*)를 발생시켜 더 이상 기록되지 않게 해 준다.
다시 말해서, 각 플래그 매니저(41-1 ~ 41-n)에서 각 제어 신호(En1* ~ Enn*)를 생성시키는데, 제1플래그 매니저(41-1)에서는 제1엠프티 플래그 신호(EF1*)와 제1풀 플래그 신호(FF1*)를 논리곱하고 해당 논리곱된 신호를 반전하고 해당 반전된 신호와 제2엠프티 플래그 신호(EF2*)를 논리곱하여 제1제어 신호(En1*)를 발생시키며, 제2플래그 매니저(41-2)에서는 제3엠프티 플래그 신호(EF3*)와 제1풀 플래그 신호(FF1*)를 논리곱하여 제2제어 신호(En2*)를 발생시키며, 이와 같이 각 플래그 매니저(41-3 ~ 41-n-1)에서 각 제어 신호(En3* ~ Enn-1*)를 발생시키며, 최종 플래그 매니저(41-n)에서는 제n-1풀 플래그 신호(FFn-1*)를 제n제어 신호(Enn*)로 발생시켜 준다. 그리고, 해당 각 제어 신호(En1* ~ Enn*)는 CSB 제어 신호(CSB*)와 CSA 제어 신호(CSA*)에 각각 논리합되고 해당 논리합된 신호들은 해당 각 DPRAM(42-1 ~ 42-n)의 CSB 단자와 CSA 단자에 인가됨으로써, 해당 각 DPRAM(42-1 ~ 42-n)을 인에이블하게 되어 해당 각 DPRAM(42-1 ~ 42-n)에 데이터를 기록하게 된다.
예를 들어, 제1DPRAM(42-1) 용량을 모두 기록한 경우에는 제1플래그 매니저(41-1)에서 제1풀 플래그 신호(FF1*)를 발생시켜 제1DPRAM(42-1)에 더 이상 데이터가 기록되지 않도록 하고 다음의 제2DPRAM(42-2)을 인에이블시켜 해당 데이터가 기록되도록 해 준다. 이와 같은 방식으로 최종 DPRAM(42-n)의 뎁스까지 데이터가 모두 기록된 경우에는 최종 플래그 매니저(41-n)에서 최종 풀 플래그 신호(FF*)를 발생시켜 더 이상 데이터가 기록되지 않게 해 준다.
반대로, 하나의 DPRAM(42-1 ~ 42-n)에서 데이터를 모두 판독한 경우에는 해당 플래그 매니저(41-1 ~ 41-n)에서 엠프티 플래그 신호(EF1 ~ EFn*)를 발생시켜 상위의 DPRAM(42-1 ~ 42-n)을 인에이블시켜 주는데, 예를 들어 제nDPRAM(42-n)의 데이터를 모두 판독한 경우에 제n플래그 매니저(41-n)에서 제n엠프티 플래그 신호(EFn*)를 발생시켜 줌으로써, 제n-1플래그 매니저(41-n-1)에서 제n엠프티 플래그 신호(EFn*)와 제n-2풀 플래그 신호(FFn-2*)를 논리곱하여 제n-1제어 신호(Enn-1)를 생성시켜 제n-1DPRAM(42-n-1)에 인가하여 인에이블시켜 준다. 이와 같은 방식으로 첫 번째 DPRAM(42-1)까지 데이터를 모두 판독한 경우에는 첫 번째 플래그 매니저(41-1)에서 최종 엠프티 신호(EF*)를 발생시켜 데이터가 다시 기록될 수 있도록 해 준다.
이상과 같이, 본 발명에 의해 교환 시스템에서 프로세서를 사용하면서 서로 다른 프로토콜 속도를 가지는 두 개의 디바이스 간에 FIFO를 사용할 경우에 DPRAM을 사용하여 FIFO의 기능을 구현할 수 있고 사용자가 FIFO의 용량을 임의대로 가변하여 FIFO 레지스터에 기록할 수 있다.
또한, 본 발명에 의해 기록 측 CPU 또는 다른 이유로 인하여 리트라이 동작이 발생한 경우에도 잘못된 데이터가 FIFO에 기록되지 않도록 기록 취소를 수행할 수 있으므로 상대방의 판독하는 측으로 잘못된 데이터가 전달되지 않도록 하며, 반대로 판독 측에서도 잘못 판독하는 경우에 리트라이 동작으로 인한 데이터 판독의오류를 판독 취소를 수행하여 재 판독할 수 있다.
더구나, 본 발명을 서로 다른 속도를 가지는 데이터 프로토콜 시스템에 적용할 수 있는데, 특히 CPU 동작 중 리트라이 동작 등으로 인한 기록 동작 및 판독 동작의 정확성을 요구하는 시스템에 적용할 수 있다.

Claims (5)

  1. 각종 제어 신호를 생성시키고 데이터를 기록하는 프로토콜 기록 블록과, 해당 프로토콜 기록 블록의 제어 신호에 따라 데이터를 저장했다가 출력하는 입력 레지스터와, 판독 측의 제어에 따라 데이터를 판독하는 출력 레지스터와, 판독 측의 제어에 따라 해당 출력 레지스터로부터 데이터를 인가받아 최종 FIFO 출력을 수행하는 출력 버퍼를 구비하는 선입 선출 통신 시스템에 있어서,
    엠프티 플래그 신호 또는 풀 플래그 신호에 따라 데이터를 선입 선출하는 메모리 블록과;
    상기 프로토콜 기록 블록으로부터 뎁스 데이터를 인가받아 상기 메모리 블록의 용량을 결정하며, 상기 메모리 블록의 메모리 어드레스를 생성하며, 상기 메모리 블록의 메모리 상태에 따라 상기 엠프티 플래그 신호 또는 풀 플래그 신호를 생성시키는 메모리 제어 블록을 포함하여 이루어진 것을 특징으로 하는 판독/기록 취소 가능 가변 용량 선입 선출 통신 시스템.
  2. 제1항에 있어서,
    상기 메모리 블록은 인에이블 제어 신호를 생성하는 다수 개의 플래그 매니저와;
    상기 각 플래그 매니저로부터 인가되는 인에이블 제어 신호에 따라 데이터를저장하거나 출력하는 다수 개의 DPRAM을 포함하여 이루어진 것을 특징으로 하는 판독/기록 취소 가능 가변 용량 선입 선출 통신 시스템.
  3. 제2항에 있어서,
    상기 플래그 매니저는 하나의 DPRAM 용량이 풀 상태인 경우에 풀 플래그 신호를 생성시켜 다음의 엠프티 플래그 신호와 논리곱하여 다음의 인에이블 제어 신호를 생성해 다음의 DPRAM에 인가하여 인에이블시키고 최종의 DPRAM까지 풀 상태인 경우에 최종 풀 플래그 신호를 발생시켜 주며, 하나의 DPRAM 용량이 엠프티 상태인 경우에 엠프티 플래그 신호를 생성시켜 이전의 풀 플래그 신호와 논리곱하여 이전의 인에이블 제어 신호를 생성해 이전의 DPRAM에 인가하여 인에이블시키고 첫 번째 DPRAM까지 엠프티 상태인 경우에 최종 엠프티 플래그 신호를 발생시켜 주는 것을 특징으로 하는 판독/기록 취소 가능 가변 용량 선입 선출 통신 시스템.
  4. 제1항에 있어서,
    상기 메모리 제어 블록은 판독 클럭과 엠프티 플래그 신호를 논리곱하는 제1앤드 게이트와;
    판독 인에이블 신호에 따라 상기 제1앤드 게이트의 출력 신호를 스위칭하는 제1삼상태 버퍼와;
    기록 클럭과 풀 플래그 신호를 논리곱하는 제2앤드 게이트와;
    기록 인에이블 신호에 따라 상기 제2앤드 게이트의 출력 신호를 스위칭하는 제2삼상태 버퍼와;
    리셋 신호와 프리셋 신호를 논리곱하는 제3앤드 게이트와;
    상기 제1삼상태 버퍼의 출력 신호에 따라 '1'씩 판독 카운터 값을 증가시키며, 상기 제3앤드 게이트의 출력 신호에 따라 해당 판독 카운터 값을 초기화시키며, 판독 포인터 값을 상기 메모리 블록의 메모리 어드레스로 출력하며, 판독 취소 신호에 따라 이전의 판독 카운터 값을 로딩시켜 주는 판독 카운터와;
    상기 제2삼상태 버퍼의 출력 신호에 따라 '1'씩 기록 카운터 값을 증가시키며, 상기 제3앤드 게이트의 출력 신호에 따라 해당 기록 카운터 값을 초기화시키며, 기록 포인터 값을 상기 메모리 블록의 메모리 어드레스로 출력하며, 기록 취소 신호에 따라 이전의 기록 카운터 값을 로딩시켜 주는 기록 카운터와;
    뎁스 클럭에 동기를 맞추어 뎁스 데이터를 래치하는 FIFO 뎁스 레지스터와;
    상기 기록 카운터의 기록 카운터 값, 상기 판독 카운터의 판독 카운터 값 및 상기 FIFO 뎁스 레지스터의 래치 값에 대한 크기 및 동일한 값을 비교하는 비교기와;
    상기 기록 카운터의 기록 포인터 값과 상기 판독 카운터의 판독 포인터 값을 배타적 논리합하는 배타적 오아 게이트와;
    상기 배타적 오아 게이트의 출력 신호를 반전하는 낫 게이트와;
    상기 비교기의 출력 신호와 상기 낫 게이트의 출력 신호를 논리곱하고 반전시켜 풀 플래그 신호를 생성하는 제1난드 게이트와;
    상기 비교기의 출력 신호와 상기 배타적 오아 게이트의 출력 신호를 논리곱하고 반전시켜 엠프티 플래그 신호를 생성시키는 제2난드 게이트를 포함하여 이루어진 것을 특징으로 하는 판독/기록 취소 가능 가변 용량 선입 선출 통신 시스템.
  5. 제4항에 있어서,
    상기 비교기는 상기 기록 카운터의 기록 카운터 값과 상기 판독 카운터의 판독 카운터 값이 동일한 경우에 '로직 하이'의 신호를 상기 제2난드 게이트에 출력하며, 상기 기록 카운터의 기록 카운터 값과 상기 판독 카운터의 판독 카운터 값의 차이 값이 상기 FIFO 뎁스 레지스터의 래치 값보다 큰 경우에 '로직 하이'의 신호를 상기 제1난드 게이트에 출력하는 것을 특징으로 하는 판독/기록 취소 가능 가변 용량 선입 선출 통신 시스템.
KR10-1999-0035256A 1999-08-24 1999-08-24 판독/기록 취소 가능 가변 용량 선입 선출 통신 시스템 KR100397920B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-1999-0035256A KR100397920B1 (ko) 1999-08-24 1999-08-24 판독/기록 취소 가능 가변 용량 선입 선출 통신 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-1999-0035256A KR100397920B1 (ko) 1999-08-24 1999-08-24 판독/기록 취소 가능 가변 용량 선입 선출 통신 시스템

Publications (2)

Publication Number Publication Date
KR20010019050A KR20010019050A (ko) 2001-03-15
KR100397920B1 true KR100397920B1 (ko) 2003-09-19

Family

ID=19608526

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-1999-0035256A KR100397920B1 (ko) 1999-08-24 1999-08-24 판독/기록 취소 가능 가변 용량 선입 선출 통신 시스템

Country Status (1)

Country Link
KR (1) KR100397920B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111124317A (zh) * 2020-01-07 2020-05-08 华南理工大学 一种数据流写入的异步交替收发方法、收发系统及设备
CN113590520B (zh) * 2021-06-15 2024-05-03 珠海一微半导体股份有限公司 Spi系统自动写入数据的控制方法及spi系统
CN113419985A (zh) * 2021-06-15 2021-09-21 珠海市一微半导体有限公司 Spi系统自动读取数据的控制方法及spi系统

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5097442A (en) * 1985-06-20 1992-03-17 Texas Instruments Incorporated Programmable depth first-in, first-out memory
JPH08235850A (ja) * 1994-12-16 1996-09-13 Motorola Inc 可変幅データ転送用深度/幅調節可能fifoバッファ
US5572148A (en) * 1995-03-22 1996-11-05 Altera Corporation Programmable logic array integrated circuit with general-purpose memory configurable as a random access or FIFO memory
US5572147A (en) * 1995-09-08 1996-11-05 United Microelectronics Corporation Power supply voltage detector
KR0123239B1 (ko) * 1994-07-06 1997-11-26 김주용 선입선출방식(fifo) 메모리
EP0910091A2 (en) * 1997-10-14 1999-04-21 Altera Corporation Dual-port programmable logic device variable depth and width memory array
KR19990034371A (ko) * 1997-10-29 1999-05-15 유기범 카운터를 이용한 데이터 전송 장치

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5097442A (en) * 1985-06-20 1992-03-17 Texas Instruments Incorporated Programmable depth first-in, first-out memory
KR0123239B1 (ko) * 1994-07-06 1997-11-26 김주용 선입선출방식(fifo) 메모리
JPH08235850A (ja) * 1994-12-16 1996-09-13 Motorola Inc 可変幅データ転送用深度/幅調節可能fifoバッファ
US5572148A (en) * 1995-03-22 1996-11-05 Altera Corporation Programmable logic array integrated circuit with general-purpose memory configurable as a random access or FIFO memory
US5572147A (en) * 1995-09-08 1996-11-05 United Microelectronics Corporation Power supply voltage detector
EP0910091A2 (en) * 1997-10-14 1999-04-21 Altera Corporation Dual-port programmable logic device variable depth and width memory array
KR19990034371A (ko) * 1997-10-29 1999-05-15 유기범 카운터를 이용한 데이터 전송 장치

Also Published As

Publication number Publication date
KR20010019050A (ko) 2001-03-15

Similar Documents

Publication Publication Date Title
US5963979A (en) System for updating inactive system memory using dual port memory
US4419728A (en) Channel interface circuit providing virtual channel number translation and direct memory access
US6101329A (en) System for comparing counter blocks and flag registers to determine whether FIFO buffer can send or receive data
US4980852A (en) Non-locking queueing mechanism for enabling a receiver device to read from a queue without access synchronization with a sending device
US4282572A (en) Multiprocessor memory access system
US6304936B1 (en) One-to-many bus bridge using independently and simultaneously selectable logical FIFOS
US6480942B1 (en) Synchronized FIFO memory circuit
US6618354B1 (en) Credit initialization in systems with proactive flow control
KR100397920B1 (ko) 판독/기록 취소 가능 가변 용량 선입 선출 통신 시스템
US20070033306A1 (en) FIFO-type one-way interfacing device between a master unit and a slave unit, and corresponding master unit and slave unit
US6862646B2 (en) Method and apparatus for eliminating the software generated ready-signal to hardware devices that are not part of the memory coherency domain
US5721871A (en) Memory system ensuring coherency for memory buffers in a data communication system
EP0267974B1 (en) Control interface for transferring data between a data processing unit and input/output devices
EP0437712B1 (en) Tandem cache memory
US6486704B1 (en) Programmable burst FIFO
US7836222B2 (en) System and method for tracking messages between a processing unit and an external device
JP2604482B2 (ja) Fifoレジスタ
KR0150068B1 (ko) 데이터 큐 모듈 및 그 제어방법
KR940005777B1 (ko) Fifo를 사용한 캐쉬디렉터리 변경회로
JP2002050172A (ja) Fifo制御回路
JPH04165529A (ja) Fifoメモリ制御回路
KR20050059413A (ko) 데이터 전송회로
JPH0214744B2 (ko)
JPH0350300B2 (ko)
JPWO2004051492A1 (ja) 同一の入力値を圧縮する記憶装置

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee