KR19980045940A - 선입선출(fifo)에서 읽기-쓰기 포인터의 오류검출 및 자동복구장치 - Google Patents

선입선출(fifo)에서 읽기-쓰기 포인터의 오류검출 및 자동복구장치 Download PDF

Info

Publication number
KR19980045940A
KR19980045940A KR1019960064192A KR19960064192A KR19980045940A KR 19980045940 A KR19980045940 A KR 19980045940A KR 1019960064192 A KR1019960064192 A KR 1019960064192A KR 19960064192 A KR19960064192 A KR 19960064192A KR 19980045940 A KR19980045940 A KR 19980045940A
Authority
KR
South Korea
Prior art keywords
write
pointer
read
signal
output
Prior art date
Application number
KR1019960064192A
Other languages
English (en)
Other versions
KR100194634B1 (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 KR1019960064192A priority Critical patent/KR100194634B1/ko
Priority to US08/857,045 priority patent/US5838895A/en
Publication of KR19980045940A publication Critical patent/KR19980045940A/ko
Application granted granted Critical
Publication of KR100194634B1 publication Critical patent/KR100194634B1/ko

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/003Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation in serial memories
    • 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
    • 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

Abstract

본 발명은 FIFO에서 읽기-쓰기포인터의 오류검출 및 자동복구장치에 관한 것이다. 종래 FIFO의 경우에는 읽기-쓰기포인터의 초기화 실패로 인한 비정상적인 읽기-쓰기포인터 상태에서 FIFO가 동작하게 되면 FIFO 고유의 특성인 First-In First-Out 기능을 상실하게 되고 재초기화 없이는 영원히 복구되지 않는 문제점이 있었다. 이를 해결하기 위해 본 발명은 쓰기 동작에서 레지스터로 유효 데이터를 저장하면서 무조건 해당 레지스터에 할당된 FULL-FLAG 신호를 인에이블 시키지 않고 그 때의 읽기-쓰기포인터 관계와 읽기포인터가 위치한 레지스터의 EMPTY_FLAG 신호를 확인하여 그 결과에 따라 선택적으로 인에이블 시킴으로서 초기에 약간의 데이터 손실은 존재하지만 불필요한 재초기화 동작이나 이로 인한 데이터 전송의 단절없이 자동적으로 First-In First-Out 기능을 복구하게 하는 FIFO에서 읽기-쓰기포인터의 오류검출 및 자동복구장치를 제안한 것이다.

Description

선입선출(FIFO)에서 읽기-쓰기 포인터의 오류검출 및 자동복구장치 (Fault Detection and Automatic Recovery appartatus of Read-Write Pointer for First-In-First-Out)
본 발명은 서로 다른 주파수로 동작하는 두 시스템간의 데이터 전송에 있어서 비동기성에 의한 데이터손실을 방지하기 위해 사용되는 FIFO(First-In Firtst Out)에 관한 것으로서, 특히 FIFO에서 읽기-쓰기 포인터의 오류검출 및 자동복구장치에 관한 것이다.
일반적으로 FIFO의 동작은 랜덤 액세스가 가능한 메모리(Memory)소자와 달리 읽기 또는 쓰기의 동작이 미리 정해진 번지(Address)를 따라 순차적으로 (Sequential Access) 이루어진다. 즉, 임의의 레지스터로 유효 데이터를 저장한 후 미리 정해진 다음번지로 쓰기포인터를 이동시키고, 마찬가지로 읽기포인터도 임의 레지스터로부터 유효 데이터를 읽은 후에 미리 정해진 다음번지로 이동시킨다.
따라서, FIFO는 비어있는 공간(레지스터 또는 메모리 셀)으로 유효 데이터를 저장한 후에는 읽기동작이 가능하기 때문에 읽기포인터가 쓰기포인터를 뒤따르는 동작특성을 가진다.
미리 정해진 번지를 순차적으로 액세스(Access)하는 FIFO의 경우, 임의의 레지스터로 유효 데이터를 저장하게 되면 읽기동작에 의해 액세스되기 전에는 다른 데이터로 오버라이트(OVERWRITE)될 수 없기 때문에 읽기/쓰기포인터의 초기화는 매우 중요한 문제이다.
초기화의 실패로 인하여 읽기포인터가 쓰기포인터로부터 앞선 상태이거나 그 반대의 경우와 같이 초기의 읽기/쓰기포인터의 위치가 동일하지 않은 상태에서 FIFO가 동작하게 되면 심각한 데이터의 오류를 가져온다. 즉 FIFO를 통하여 출력되는 데이터는 입력된 데이터 순서를 유지하지 못하게 되므로 선입선출(FIFO)의 기능을 상실하게 되는 것이다.
일 예로, 도 1 에 도시된 바와 같이, 4개의 데이터를 저장할 수 있는 FIFO구조에서, 초기의 모든 레지스터는 빈(Empty) 상태이고, 읽기포인터는 초기화실패로 1번지 레지스터에 위치하고 쓰기포인터는 정상적으로 0번지 레지스터에 위치하게 된 경우에 대하여 그 동작을 살펴보기로 한다. 또한 동작의 이해를 돕기 위하여 전체 레지스터(4개의 레지스터)로 데이터를 완전히 저장한 다음에 읽기동작이 시작되는 것으로 가정한다.
쓰기동작은 레지스터 순서에 따라 0번지 레지스터로 첫번째 데이터를 저장하고나서 0번지 할당된 FULL_FLAG_0신호를 인에이블시키고 다음번지인 1번지 레지스터의 상태를 확인한다. 1번지 레지스터에는 아직 유효한 데이터가 저장되지 않았기 때문에 두번째 데이터를 저장한다. 반복적인 쓰기 동작으로 4 개의 레지스터로 유효 데이터를 저장하게 되면 더 이상의 빈 레지스터가 존재하지 않기 때문에 쓰기동작은 중지된다.
한편, 읽기동작을 하면, 초기의 읽기포인터가 1번지에 위치하고 있었기 때문에 첫번째로 입력된 0번지 레지스터의 데이터를 제일 먼저 액세스할 수 없고 1, 2, 3, 0 번지의 순서로 데이터를 액세스하게 된다.
따라서, 출력되는 데이터는 입력된 데이터의 순서와 다르게 되고 FIFO는 FIFO 기능을 상실하게 된다.
기존의 FIFO 구조만으로는 이런 경우에 자동적으로 정상상태로 복구될 수가 없었다. 특히 프레임 구조의 데이터를 처리하는 FIFO의 응용분야인 ATM의 물리층과 ATM층과의 인터페이스를 담당하는 UTOPIA 인터페이스에서 이런 비정상적인 읽기-쓰기포인터상태가 발생되면 정상적인 데이터 전송을 기대하기 어려울 뿐만 아니라 경우에 따라서는 시스템 전체를 다시 초기화 해야하기 때문에 매우 비효율적이다.
본 발명에서는 이런 문제를 해결하기 위하여 FIFO의 읽기-쓰기포인터 상태를 확인하여 상황에 따라 레지스터의 FULL-FLAG 신호를 제어함으로서 재초기화 적업없이도 정상적인 FIFO 기능을 복구하는 장치를 고안하였다.
쓰기포인터와 읽기포인터의 관계가 정상인가 또는 비정상적인가의 판단은 쓰기포인터와 읽기포인터가 위치한 레지스터 번지와 그 레지스터 FULL-FLAG 신호를 확인함으로서 가능하다.
즉, 일반적인 FIFO에서 쓰기동작은 쓰기포인터가 위치하고 있는 현재의 레지스터로 유효 데이터를 저장하고나서 레지스터에 할당된 FULL-FLAG 신호를 선언한다. 그리고 다음번지(Next Address)의 레지스터로 데이터를 저장할 수 있느지를 확인하기 위하여 다음번지 레지스터의 상태를 확인한다. 이 때 레지스터가 비어 있는 경우에는 새로운 데이터를 저장하지만 아직 읽혀지지 않은 유효 데이터가 들어 있는 경우에는 기존의 데이터를 보호하기 위해 쓰기동작을 중지시킨다.
따라서 이러한 FIFO의 쓰기 동작특성에서 쓰기포인터와 읽기포인터가 동일한 레지스터에 위치하지 않고 읽기포인터의 레지스터에 유효 데이터가 들어 있지 않을 경우에는 FIFO내의 읽기-쓰기포인터 관계가 비정상적인 것으로 판단할 수 있다.
도 1 은 비정상적인 읽기-쓰기포인터 상태에서의 FIFO 동작을 도시한 동작 표시도.
도 2 는 본 발명의 FIFO의 오류검출 및 자동복구장치의 구성도.
도 3 은 도 2 에서 읽기-쓰기포인터 분석기의 내부 상세 구성도.
도 4 는 본 발명의 읽기-쓰기포인터 오류검출과 자동복구장치을 도시한 동작 타이밍도.
*도면의 주요부분에 대한 부호의 설명*
10 : 쓰기 제어기
20, 40 : 제 1 , 제 2 카운터
40 : 쓰기 플래그 생성기
50, 60, 77 : 제 1 내지 제 3 다중화기
70 : 쓰기-읽기 포인터
75, 80, 90 : 제 1 내지 제 3 디코더
76 : 동기장치
79 : 신호 제어기
상기 목적을 달성하기 위한 본 발명의 FIFO에서 읽기-쓰기포인터의 오류검출 및 자동복구장치는 다음과 같다.
쓰기 제어기는 외부로부터 입력된 FIFO의 쓰기 동작 인에이블신호(WRITE_ENABLE)와 제 1 다중화기(W_FULL-FLAG)에서 출력된 쓰기포인터의 현재 레지스터의 유효 상태 신호(W_FULL-FLAG)를 입력 받아 선택적으로 쓰기 제어신호(W_EN_INT)를 출력한다. 제 1 카운터(W_UNIT_PTR COUNTER)는 그 쓰기 제어기로부터 출력된 쓰기 제어신호(W_EN_INT)가 인에이블 상태일 때 쓰기 클럭(W_CLK)에 동기되어, 프레임 구조의 53바이트(하나의 셀 구성)를 순차로 카운팅하여 하나의 셀 발생을 알리는 캐리신호(W_UIT_CARRY)와 쓰기 하위 데이타 포인터(W_UNIT_PTR)를 출력한다. 제 2 카운터(W_CELL_PTR COUNTER)는 제 1 카운터와 직렬로 연결되고, 상기 쓰기 제어기의 쓰기 제어신호(W_EN_INT)가 인에이블 상태일 때에만 상기 쓰기 클럭(W_CLK)에 동기되어 상기 제 1 카운터(W_UNIT_PTR COUNTER)로 부터 출력된 하나의 셀에 해당한 캐리신호(CARRY)를 카운팅하여 쓰기 셀 포인터(W_CELL_PTR)를 출력한다. 그리고 쓰기 플래그(W_FULL-FLAG) 생성기는 외부의 읽기처리기로부터 입력된 각 레지스터군의 레지스터 읽음 여부를 표시하는 읽기 엠프티 플래그신호(R_EMPTY_FLAG)들중에서 인에이블된 번지에 해당되는 쓰기포인터의 현재 레지스터의 유효 상태 신호(W_FULL-FLAG)를 디스에이블시키고, 읽기-쓰기포인터 비교결과 신호(WR_EQ_PTR)를 입력받아 상기 제 2 카운터(W_CELL_PTR COUNTER)로 부터 출력된 쓰기 셀 포인터에 해당하는 레지스터의 상태신호를 상기 제 1 카운터의 캐리신호(CARRY)에 동기시켜 선택적으로 인에블시켜 출력한다. 이와 같은 쓰기 플래그 생성기는 레지스터군으로 한 프레임의 모든 데이타를 저장했더라도 그때의 읽기-쓰기포인터의 관계를 확인하여 정상적인 관계로 판명될 때에만 유효한 데이타가 들어 있음을 나타내는 W_FULL-FLAG신호를 인에이블시키는 것이다. 또한 제 1 다중화기(W_FULL_FLAG 다중화기)는 상기 쓰기 플래그 생성기로 부터 출력된 레지스터의 상태신호(W_FULL_FLAG)를 입력받아 상기 제 2 카운터에서 출력된 쓰기 셀 포인터에 해당하는 레지스터의 상태신호(W_CELL_PTR)만을 선택하여 출력시킨다. 한편, 제 2 다중화기(W_FULL_FLAG_NEXT 다중화기)는 상기 쓰기 플래그 생성기로 부터 출력된 레지스터의 상태신호를 입력받아 상기 제 2 카운터에서 출력된 현재의 쓰기 셀 포인터(W_CELL_PTR)의 다음번지에 해당하는 레지스터의 상태신호(W_FULL-FLAG)만을 선택하여 출력시킨다. 그리고, 쓰기-읽기포인터 분석기는 외부의 읽기처리기로부터 입력된 읽기포인터, 상기 제 2 카운터에서 출력된 쓰기 셀 포인터 및 상기 제 2 다중화기에서 출력된 레지스터의 상태신호를 입력받아 읽기-쓰기포인터의 관계를 분석하여 읽기-쓰기포인터 비교결과 신호를 출력한다. 그리고 제 1 디코더는 상기 제 2 카운터에서 출력된 쓰기 셀 포인터의 신호를 상기 쓰기 제어기의 쓰기 제어신호에 따라 디코딩하고, 제 2 디코더는 상기 제 1 카운터에서 출력된 쓰기 하위 데이타 포인터의 신호를 상기 쓰기 제어기의 쓰기 제어신호에 따라 디코딩하는 것이다.
이상에서와 같이 본 발명은 FIFO의 읽기-쓰기포인터 상태를 확인하여 상황에 따라 레지스터의 FULL-FLAG신호를 제어함으로써 재초기화 작업없이도 정상적인 FIFO기능을 복구할 수 있는 것이다.
이하, 본 발명의 바람직한 실시예를 첨부된 도면에 의거하여 상세히 설명하면 다음과 같다.
도 2 는 비정상적인 쓰기-읽기포인터 관계를 감지하고 자동적으로 Firt-In First-Out 기능을 복구시키는 장치의구성도이다.
그 구성은, 외부로부터 FIFO의 쓰기동작을 제어하기 위한 쓰기_인에이블(WRITE_ENABLE)(111) 신호를 입력으로 하고, 하기 W_FULL-FLAG다중화기(50)의 출력 W_FULL-FLAG(51) 신호를 입력으로 하여 상기 두 입력조건에 따라 선택적으로 출력 W_EN_INT(11)를 인에이블 시키는 쓰기 제어기(10)와, 상기 쓰기 제어기(10)의 출력 W_EN_INT(11)가 ENABLE 상태일 때 W_CLK(222)에 동기되어 구동되고 FIFO로 입력되는 데이터가 프레임구조를 가질때 프레임 크기(예로 SDH 전송시스템의 기본 셀일 ATM 셀의 경우 53 바이트로 구성되어 있으므로 프레임 크기 53이다)를 갖는 W_UNIT_PTR 카운터(20)와, 상기 쓰기 제어기(10)의 출력 W_EN_INT(11)가 인에이블 상태일 때 상기 W_UNIT_PTR 카운터(20)와 직렬로 연결되어 있으며, W_UNIT_PTR 카운터(20)의 CARRY(W_UNIT_CARRY(21))신호가 인에이블될 때마다 W_CLK(222)에 동기되어 계수(Counting)되고 FIFO의 레지스터 깊이(Register Depth)와 관계된 W_CELL_PTR COUNTER (30)와, 도시되지 않은 읽기처리기(Reading Processor)로부터 R_EMPTY_FLAG[2n](333)을 입력하여 그 중에서 인에이블된 번지에 해당되는 W_FULL-FLAG신호를 디스에이블 시키고, 하기 WR_PTR 분석기(70)의 출력 WR_EQ_PTR(71)의 상태에 따라 상기 W_CELL_PTR 카운터(30)의 출력 W_CELL_PTR[n:0](31)에 해당하는 레지스터의 W_FULL_FLAG 신호를 상기 W_UNIT_PTR 카운터(20)의 CARRY 출력 W_UNIT_CARRY(21) 신호에 동기시켜 선택적으로 인에이블 시키는 W_FULL_FLAG생성기(40)와, 상기 W_FULL_FLAG생성기(40)의 출력 W_FULL_FLAG[2n](41)을 입력으로 하고 상기 W_CELL_PTR 카운터(30)의 출력 W_UNIT_PTR[n:0](31)에 해당하는 레지스터의 W_FULL_FLAG 신호만을 선택하여 출력시키는 W_FULL_FLAG다중화기(50)와, 상기 W_FULL_FLAG생성기(40)의 출력 W_FULL_FLAG[2n](41) 신호를 입력으로 하여 현재의 쓰기포인터(W_CELL_PTR[n:0](31))의 다음번지에 해당하는 레지스터의 W_FULL_FLAG 신호만을 선택하여 출력시키는 W_FULL_FLAG_NEXT 다중화기(60)와, 도시되지 않은 읽기처리기로부터 읽기포인터 정보(R_CELL_PTR[n:0](44))를 입력으로 하고 상기 W_CELL_PTR COUNTER (30)의 출력 W_CELL_PTR[n:0](31)를 입력으로 하고 상기 W_FULL_FLAG_NEXT 다중화기(60)의 출력 W_FULL_FLAG_NEXT (61) 신호를 입력으로 하여 읽기-쓰기포인터의 관계를 분석하는 WR_PTR분석기(70)와, 상기 W_CELL_ 카운터(30)의 출력 W_CELL_PTR[n:0](31) 신호를 입력으로 하고 상기 쓰기 제어기(10)의 출력 W_EN_INT(11) 신호가 인에이블 상태일 때에만 디코딩 출력을 제공하는 W_CELL_PTR디코더(80)와, 상기 W_UNIT_PTR 카운터(20)의 출력 W_UNIT_PTR[m:0](22) 신호를 입력으로 하고 상기 쓰기 제어기(10)의 출력 W_EN_INT(11) 신호가 인에이블 상태일때에만 디코딩(Decoding) 출력을 제공하는 W_UNIT_PTR디코더(90) 로 구성되어 있다.
이와 같이 구성된 FIFO에서 읽기-쓰기포인터의 오류검출 및 자동복구장치의 동작 및 효과를 설명한다.
쓰기 제어기(10)는 외부로부터 쓰기동작을 인에이블 시키더라도 FIFO에 들어 있는 기존의 유효 데이터를 보호하기 위해서는 쓰기동작을 제한할 수 있도록 구성되어 있다.
즉, 쓰기포인터가 위치한 레지스터에 아직 읽혀지지 않은 유효 데이터가 들어 있으면 입력 WRITE_ENABLE(11) 신호가 인에이블 되었더라도 쓰기 제어기(10)는 레지스터에 들어 있는 기존의 유효 데이터를 보호하기 위하여 W_EN_INT(11) 신호를 디스에이블 시킨다. 유효 데이터가 들어 있는지의 판단을 쓰기포인터가 우치한 레지스터의 W_FULL_FLAG 신호를 확인함으로서 가능하고, W_FULL_FLAG_NEXT 다중화기(60)는 쓰기포인터가 위치한 레지스터의 W_FULL_FLAG신호를 선택하여 제공한다.
그리고 본 발명의 FIFO는 프레임 구조의 데이터를 처리하기 위하여 두개의 포인터 생성용 카운터를 가진다.
하나는 프레임 구조의 하위 데이터를 처리하기 위한, 프레임 크기를 갖는 카운터이고, 또 하나는 FIFO가 수용할 수 있는 프레임 수를 나타내는 카운터이다.
도 2 에 도시된 바와 같이 W_UNIT_PTR 카운터(20)는 프레임 구조에서 하위 데이터를 처리하기 위한 장치이고, W_CELL_PTR 카운터(30)는 FIFO가 수용할 수 있는 프레임 수를 나타내기 위한 장치이다.
W_CELL_PTR 카운터(30)와 W_UNIT_PTR 카운터(20)는 직렬로 연결되어 동작된다. 즉, FIFO 내의 수용 가능한 프레임 수를 나타내기 위한 W_CELL_PTR 카운터(30)는 W_UNIT_PTR 카운터(20)로부터 CARRY 신호(W_UIT_CARRY(21))를 입력하고 W_EN_INT(11)가 인에이블 되어 있을때에만 동작한다.
FIFO의 상태를 나타내는 W_FULL_FLAG의수는 W_CELL_PTR 카운터(30)에 의존한다. 즉 프레임 내에 속한 하위 데이터마다 W_FULL_FLAG를 할당하지 않고 프레임 단위로 할당한다.
W_FULL_FLAG생성기(40)는 FIFO의 레지스터에 유효 데이터가 들어 있다는 신호를 생성하는 장치이다. W_EN_INT(11) 신호가 인에이블되어 있으면 W_CELL_PTR[n:0]가 가리키는 레지스터군(Register Group)으로 데이터를 쓰기 시작하고 프레임내의 마지막 데이터를 씀과 동시에 WR_PTR 분석기(70)의 출력 WR__EQ_PTR(71)값에 따라 W_CELL_PTR[n:0]가 가리키는 W_FULL_FLAG 신호를 선택적으로 인에이블 시킨다.
즉, 레지스터군으로 한 프레임의 모든 데이터를 저장했다고 하더라도 그 때의 읽기-쓰기포인터의 관계를 확인하여 정상적인 관계로 판명될 때에만 유효한 데이터가 들어 있음을 나타내는 W_FULL_FLAG 신호를 인에이블 시키는 것이다.
그리고 도시되지 않은 읽기처리기로부터 각 레지스터군의 레지스터 읽음여부를 표시하는 R_EMPTRY_FLAG 신호를 입력하여 해당 레지스터군의 W_FULL_FLAG 신호를 W_CLK(222)에 동기시켜 디스에이블 시킨다.
WR_PTR 분석기(70)의 내부 구성은, 도 3 에 도시되어 있는 바와 같이, 현재으 쓰기-읽기 포인터의 관계를 분석하는 장치로써, 도시되지 않은 읽기처리기로부터 읽기포인터 R_CELL_PTR[n:0}(444)를 입력하여 디코딩(Decoding)하는 디코더(75)와, 상기 디코더(75)의 출력을 W_CLK(222)에 동기시키는 동기장치(76)와, W_CELL_PTR 카운터(30)로부터 쓰기포인터 W_CELL_PTR[n:0](31)을 입력하여 쓰기포인터의 다음번지에 해당하는 디코더(75) 출력을 선택하는 NEXT 다중화기(77)와, 상기 NEXT 다중화기(77)의 출력과 W_FULL_FLAG_NEXT 다중화기(61)를 입력하여 WR_EQ_PTR(71)를 제어하는 신호제어기(78)로 구성되어 있다.
이와 같이 WR_PTR 분석기(70)는 도시되지 않은 읽기처리기로부터 읽기포인터 정보(R_CELL_PTR[n:0])를 입력하여 쓰기포인터의 다음번지에 읽기포인터가 위치하고 있는지와, 쓰기포인터의 다음번지의 레지스터의 상태를 나타내는 정보(W_FULL_FLAG_NEXT(61))를 W_FULL_FLAG_NEXT 다중화기(60)로부터 입력하여 쓰기-읽기 포인터의 관계를 판단한다. 즉 읽기포인터가 현재의 쓰기포인터의 다음번지에 위치하고 그 레지스터가 비어 있는 상태일때만 읽기-쓰기포인터의 관계가 비정상적인 것으로 판단하고 출력 WR_EQ_PTR(71)을 인에이블 시킨다.
따라서 W_FULL_FLAG생성기(40)는 WR_EQ_PTR(71) 신호가 인에이블되어 있으면 현재의 레지스터군으로 유효한 데이터를 저장했더라도 상태 신호 W_FULL_FLAG을 디스에이블 시키게 되고 한 프레임의 유효 데이터는 잃어버리지만 궁극적으로 정상적인 FIFO 기능으로 복구된다.
기존의 FIFO에서는 레지스터 또는 레지스터군으로 유효 데이터를 저장하고 나면 읽기포인터의 위치와 해당 레지스터의 상태를 확인하지 않고 무조건 유효 데이터가 들어 있다는 정보인 W_FULL_FLAG을 인에이블시키기 때문에 FIFO의 읽기-쓰기포인터 관계가 비정상적인 상태에서 동작되었다면 앞에서 설명된 바와 같이 First-In First-Out 기능을 상실하게 된다.
그러나 본 발명의 FIFO는 해당 레지스터로 유효 데이터를 저장하면서 읽기포인터의 위치와 해당 레지스터의 상태를 분석하여 상황에 따라 선택적으로 W_FULL_FLAG 신호를 인에이블시키는 구성으로 되어 있다.
즉, 쓰기-읽기 포인터 관계를 확인하고 정상적인 포인터 관계이면 W_FULL_FLAG을 인에이블시키지만, 비정상적인 관계로 확인되면 레지스터로 유효 데이터를 저장했더라도 정상적인 FIFO 기능을 복구하기 위하여 W_FULL_FLAG 신호를 인에이블시키지 않는다.
따라서, 이 레지스터는 다음번의 쓰기동작에 의해 오버라이트(OVERWRITE)되어 데이터는 잃어버리지만, 최종적으로는 정상적인 First-In First-Out 기능을 복구하게 된다.
본 발명의 일 실시예를 4개의 레지스터로 구성된 FIFO를 기준하여 설명한다.
도 1 에서 초기의 읽기-쓰기포인터 상태를 보면 쓰기포인터가 0번지에 위치하고, 읽기포인터는 쓰기포인터의 다음번지(Next Address)에 해당하는 1번지에 위치하고, 초기의 각 레지스터 FULL_FLAG 신호는 디스에이블되어 있기 때문에 WR_PTR 분석기(70)는 현재의 읽기-쓰기포인터 관계는 비정상적인 것으로 판단하고 WR_EQ_PTR(71) 신호를 인에이블 시킨다. 따라서 쓰기동작에 의해 0번지 레지스터로 첫번째 입력 데이터를 저장하지만 FULL-FLAG_0를 디스에이블 시킨다.
그리고 이 때의 읽기-쓰기포인터 관계를 보면 읽기포인터는 다음번지로 이동하여 1번지를 가리키고 읽기포인터는 변함없이 그대로 1번지를 가리키고 있으므로 비정상적인 읽기-쓰기포인터 상태가 아니다. 따라서 WR_PTR 분석기(70)는 WR_EQ_PTR(71) 신호를 디스에이블 시키게 되고 쓰기동작에 의해 1번지 레지스터로 두번째 입력 데이터를 저장하고 FULL-FLAG_1 신호를 인에이블 시킨다.
반복적인 쓰기동작에 의해 2 번지와 3 번지 레지스터로 입력 데이터를 저장하고 FULL-FLAG_2와 FULL-FLAG_3 신호를 인에이블 시킨다.
그리고 3 번지의 레지스터로 입력 데이터를 저장하고나서 0번지 레지스터의 FULL-FLAG_0를 확인하는데 0번지 레지스터에는 첫번째로 입력된 유효 데이터가 실제로는 저장되어 있지만 비정상적인 읽기-쓰기포인터 상태에서 FIFO가 동작되었기 때문에 FULL-FLAG_0 신호는 디스에이블되어 있다. 따라서 0번지 레지스터에는 새로운 입력 데이터로 오버라이트되고 더 이상의 빈 레지스터가 존재하지 않기 때문에 쓰기동작은 중지된다.
한편, 읽기동작에 의해 1번지 레지스터를 시작으로 레지스터에 저장된 데이터를 읽어낸다. 따라서 상기 도 1 에 도시된 바와 같이 4 개의 레지스터를 한 번씩 액세스하고 나면 초기의 비정상적인 읽기-쓰기포인터 상태가 정상적인 읽기-쓰기포인터 상태로 복구된다.
도 4 는 4 개의 레지스터로 구성된 본 발명의 FIFO 동작에 대한 것으로 각 레지스터의 상태신호와 입출력 데이터 관계를 도시한 것이다.
이상과 같은 본 발명의 FIFO는 읽기포인터의 위치와 해당 레지스터의 상태를 분석하여 그 결과에 따라 선택적으로 FULL-FLAG신호를 인에이블 시키는 구조로 되어 있기 때문에 초기화의 실패나 전기적인 충격으로 인한 비정상적인 쓰기-읽기 포인터 상태에서 FIFO가 동작되어도 초기에 약간의 데이터 손실은 존재하지만 궁극적으로 불필요한 재초기화 동작과 이로 인한 데이터 전송의 단절없이 정상적인 FIFO 기능을 복구한다.
본 발명은 전기적인 잡음과 비동기적인 초기화의 원인으로 발생될 수 있는 읽기포인터(Read Pointer)와 쓰기토인터(Write Pointer)간의 비정상적인 동작관계를 검출하고 재초기화없이 자동적으로 기능을 복구시키는데 그 목적이 있다.

Claims (5)

  1. 쓰기클럭에 동기되어 입력되는 데이터를 일시적으로 저장했다가 읽기클럭에 재동기시켜 입력된 순서대로 데이터를 출력시키는 FIFO에 있어서,
    외부로 부터 입력된 FIFO의 쓰기 동작 인에이블신호와 쓰기포인터의 현재 레지스터의 유효 상태 신호를 입력 받아 선택적으로 쓰기 제어신호를 출력하는 쓰기 제어기와;
    상기 쓰기 제어기로 부터 출력된 쓰기 제어신호가 인에이블 상태일 때 쓰기 클럭에 동기되어 프레임 구조의 하위 데이터를 카운팅하여 하나의 셀 발생을 알리는 캐리신호와 쓰기 하위 데이타 포인터를 출력하는 제 1 카운터와;
    상기 제 1 카운터와 직렬로 연결되고, 상기 쓰기 제어기의 쓰기 제어신호가 인에이블 상태일 때에만 상기 쓰기 클럭에 동기되어 상기 제 1 카운터로 부터 출력된 하나의 셀에 해당한 캐리신호를 카운팅하여 쓰기 셀 포인터를 출력하는 제 2 카운터와;
    외부의 읽기처리기로부터 입력된 각 레지스터군의 읽기 엠프티 플래그신호들중에서 인에이블된 번지에 해당되는 쓰기포인터의 현재 레지스터의 유효 상태 신호를 디스에이블시키고, 읽기-쓰기포인터 비교결과 신호를 입력받아 상기 제 2 카운터로 부터 출력된 쓰기 셀 포인터에 해당하는 레지스터의 상태신호를 상기 제 1 카운터의 캐리신호에 동기시켜 선택적으로 인에블시켜 출력하는 쓰기 플래그 생성기와;
    상기 쓰기플래그 생성기로 부터 출력된 레지스터의 상태신호를 입력받아 상기 제 2 카운터에서 출력된 쓰기 셀 포인터에 해당하는 레지스터의 상태신호만을 선택하여 출력시키는 제 1 다중화기와;
    상기 쓰기 플래그 생성기로 부터 출력된 레지스터의 상태신호를 입력받아 상기 제 2 카운터에서 출력된 현재의 쓰기 셀 포인터의 다음번지에 해당하는 레지스터의 상태신호만을 선택하여 출력시키는 제 2 다중화기와;
    외부의 읽기처리기로부터 입력된 읽기포인터, 상기 제 2 카운터에서 출력된 쓰기 셀 포인터 및 상기 제 2 다중화기에서 출력된 레지스터의 상태신호를 입력받아 읽기-쓰기포인터의 관계를 분석하여 쓰기-읽기포인터 비교결과 신호를 출력하는 쓰기-읽기 포인터 분석부와;
    상기 제 2 카운터에서 출력된 쓰기 셀 포인터의 신호를 상기 쓰기 제어기의 쓰기 제어신호에 따라 디코딩하는제 1 디코더와; 그리고
    상기 제 1 카운터에서 출력된 쓰기 하위 데이타 포인터의 신호를 상기 쓰기 제어기의 쓰기 제어신호에 따라 디코딩하는 제 2 디코더로 구성된 것을 특징으로 하는 읽기-쓰기포인터의 오류검출 및 자동복구장치.
  2. 제 1 항에 있어서, 상기 쓰기-읽기 포인터 분석부는
    외부로부터 입력된 현재의 쓰기포인터의 다음번지에 위치하고 그 레지스터가 비어 있는 상태일 때에만 상기 읽기-쓰기포인터의 관계를 비정상으로 판단하는 것을 특징으로 하는 읽기-쓰기포인터의 오류검출 및 자동복구장치.
  3. 제 1 항에 있어서, 상기 쓰기-읽기 포인터 분석부는
    외부로의 읽기처리기로부터 입력된 셀 포인터 정보를 디코딩하는 제 3 디코더와;
    상기 제 3 디코더의 출력을 쓰기 클럭에 동기시키는 동기장치와;
    상기 제 2 카운터로 부터 쓰기 셀 포인터를 입력받아 쓰기포인터의 다음번지에 해당하는 상기 제 3 디코더의 출력을 선택하는 제 3 다중화기와; 및
    상기 제 3 다중화기의 출력과 상기 제 2 다중화기의 출력을 입력받아 상기 쓰기 요구 포인터 신호를 제어하는 신호제어기로 구성된 것을 특징으로 하는 읽기-쓰기포인터의 오류검출 및 자동복구장치.
  4. 제 1 항에 있어서, 상기 쓰기 플래그 생성기는
    상기 쓰기-읽기 포인터 분석기에서 출력된 신호가 정상일 때 상기 쓰기 셀 포인터에 해당하는 레지스터에 유효 데이터가 있음을 나타내는 신호를 인에이블시키는 것을 특징으로 하는 읽기-쓰기포인터의 오류검출 및 자동복구장치.
  5. 제 1 항 또는 제 2 항에 있어서, 상기 쓰기 플래그 생성기는
    상기 쓰기-읽기 포인터 분석기에서 출력된 신호가 비정상일 때 레지스터로 유효데이터를 저장했더라도 정상적인 FIFO 기능을 복구시키기 위해 상기 쓰기 셀 포인터에 해당하는 레지스터에 유효 데이터가 있음을 나타내는 신호를 디스에이블시키는 것을 특징으로 하는 읽기-쓰기포인터의 오류검출 및 자동복구장치.
KR1019960064192A 1996-12-11 1996-12-11 선입선출에서 읽기-쓰기 포인터의 오류검출 및 자동복구장치 KR100194634B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1019960064192A KR100194634B1 (ko) 1996-12-11 1996-12-11 선입선출에서 읽기-쓰기 포인터의 오류검출 및 자동복구장치
US08/857,045 US5838895A (en) 1996-12-11 1997-05-15 Fault detection and automatic recovery apparatus or write-read pointers in First-In First-Out

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019960064192A KR100194634B1 (ko) 1996-12-11 1996-12-11 선입선출에서 읽기-쓰기 포인터의 오류검출 및 자동복구장치

Publications (2)

Publication Number Publication Date
KR19980045940A true KR19980045940A (ko) 1998-09-15
KR100194634B1 KR100194634B1 (ko) 1999-06-15

Family

ID=19487163

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960064192A KR100194634B1 (ko) 1996-12-11 1996-12-11 선입선출에서 읽기-쓰기 포인터의 오류검출 및 자동복구장치

Country Status (2)

Country Link
US (1) US5838895A (ko)
KR (1) KR100194634B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160068571A (ko) * 2014-12-05 2016-06-15 에스케이하이닉스 주식회사 반도체 장치

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7752506B1 (en) * 2003-09-16 2010-07-06 Cypress Semiconductor Corporation FIFO memory error circuit and method
US20070260777A1 (en) * 2003-11-25 2007-11-08 Timpe Barrie R Queues for information processing and methods thereof
US9201599B2 (en) 2004-07-19 2015-12-01 Marvell International Ltd. System and method for transmitting data in storage controllers
US20060015659A1 (en) * 2004-07-19 2006-01-19 Krantz Leon A System and method for transferring data using storage controllers
US8151034B2 (en) * 2007-09-12 2012-04-03 Sandisk Technologies Inc. Write abort and erase abort handling
US8024632B1 (en) * 2008-01-11 2011-09-20 Victor Konrad Method and mechanism for implementation-independent, on-line, end-to-end detection of faults in self-checking queues in digital hardware systems

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4949301A (en) * 1986-03-06 1990-08-14 Advanced Micro Devices, Inc. Improved pointer FIFO controller for converting a standard RAM into a simulated dual FIFO by controlling the RAM's address inputs
US5046000A (en) * 1989-01-27 1991-09-03 International Business Machines Corporation Single-FIFO high speed combining switch
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
JP3283659B2 (ja) * 1993-10-07 2002-05-20 富士通株式会社 Fifoメモリの誤動作検出方法及び装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160068571A (ko) * 2014-12-05 2016-06-15 에스케이하이닉스 주식회사 반도체 장치

Also Published As

Publication number Publication date
KR100194634B1 (ko) 1999-06-15
US5838895A (en) 1998-11-17

Similar Documents

Publication Publication Date Title
US7065749B2 (en) Program development compressed trace support apparatus
US5226153A (en) Bus monitor with time stamp means for independently capturing and correlating events
RU2137182C1 (ru) Выполнение инструкции обработки данных
US4231089A (en) Data processing system with apparatus for correcting microinstruction errors
KR100194634B1 (ko) 선입선출에서 읽기-쓰기 포인터의 오류검출 및 자동복구장치
US5469449A (en) FIFO buffer system having an error detection and resetting unit
US5825204A (en) Apparatus and method for a party check logic circuit in a dynamic random access memory
US6907541B1 (en) System for recovering received data with a reliable gapped clock signal after reading the data from memory using enable and local clock signals
US5959932A (en) Method and apparatus for detecting errors in the writing of data to a memory
CN1326345C (zh) 丢弃错误的逻辑传输单元的方法与装置
US5590279A (en) Memory data copying apparatus
KR100277682B1 (ko) 줄길이 복호 시스템의 오류 검출 장치
JPH096725A (ja) 非同期データ転送受信装置
JPH07321795A (ja) バッファアドレス管理方法
US5091870A (en) Apparatus for measuring the speed of transmission of digital characters
US4771402A (en) Address comparator
JP2979962B2 (ja) 障害検出システム
JPH09274599A (ja) バッファメモリ装置
JP2546183B2 (ja) Atm通信装置のramチェック方法と装置
KR100380601B1 (ko) 아이피씨용 에프아이에프오의 번지 관리 시스템 및 방법
JP3425933B2 (ja) 非同期系間情報転送方法、その装置及びその制御プログラムを記録した記録媒体
JP2001337867A (ja) データ蓄積転送装置
JPH057388A (ja) 時間スイツチ障害監視装置
JPH05274220A (ja) メモリバンクビジー制御方式
JPH02302855A (ja) メモリ制御装置

Legal Events

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

Payment date: 20100129

Year of fee payment: 12

LAPS Lapse due to unpaid annual fee