KR20040059013A - FIFO buffer using dual address pointer and data input/output method in the FIFO buffer - Google Patents

FIFO buffer using dual address pointer and data input/output method in the FIFO buffer Download PDF

Info

Publication number
KR20040059013A
KR20040059013A KR1020020085537A KR20020085537A KR20040059013A KR 20040059013 A KR20040059013 A KR 20040059013A KR 1020020085537 A KR1020020085537 A KR 1020020085537A KR 20020085537 A KR20020085537 A KR 20020085537A KR 20040059013 A KR20040059013 A KR 20040059013A
Authority
KR
South Korea
Prior art keywords
data
write
pointer
read
signal
Prior art date
Application number
KR1020020085537A
Other languages
Korean (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 KR1020020085537A priority Critical patent/KR20040059013A/en
Publication of KR20040059013A publication Critical patent/KR20040059013A/en

Links

Classifications

    • 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/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag

Landscapes

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

Abstract

PURPOSE: A FIFO(First Input First Output) buffer having address pointers and a data I/O(Input/Output) method for the same are provided to access many data transfer paths to one FIFO at the same time by equipping the FIFO with the write/read pointers. CONSTITUTION: A RAM array(10) temporarily stores the transmitted data. A data writer(20) independently writes the data depending on a write signal for each data by equipping with the write pointers(21,23) matched with each data sort. A data reader(30) independently reads the data depending on a read signal for each data by equipping with the read pointers(31,33) matched with each data sort. A flag generator(40) generates a flag informing that an operation for writing/reading the RAM array is available, and the flag discriminating the sort of the write/read data depending on the write/read signal. A pointer adjuster(50) adjusts a pointer value of the write/read pointers depending on the flag signal.

Description

복수개의 어드레스 포인터를 갖는 선입선출형(FIFO) 버퍼 및 그 버퍼에서의 데이터 입출력 방법{FIFO buffer using dual address pointer and data input/output method in the FIFO buffer}First-in-first-out buffer with a plurality of address pointers and data input / output method in the buffer {FIFO buffer using dual address pointer and data input / output method in the FIFO buffer}

본 발명은 선입선출형(FIFO) 버퍼에 관한 것으로, 보다 상세하게는, 복수개의 어드레스 포인터를 이용하여 USB와 같이 동시에 여러 가지 데이터 경로(Path)가 열려 독립적으로 데이터를 주고 받는 경우 데이터의 전송효율을 높일 수 있는 선입선출형 버퍼에 관한 것이다.The present invention relates to a first-in, first-out (FIFO) buffer, and more particularly, a plurality of address pointers open multiple data paths simultaneously, such as USB, to transfer data independently. It relates to a first-in, first-out buffer that can increase.

일반적으로 프로세서들간에 데이터를 전송하는 경우에는 각 프로세서의 데이터 처리 속도에 차이가 있기 때문에 데이터를 전송하는 도중에 대기 상태가 발생하게 되는데, 이러한 사태를 방지하고 데이터 처리 속도를 단축시키기 위해 완충용 기억 장치 역할을 하는 것이 FIFO 버퍼를 프로세서들 사이에 두어 전송 데이터를 입력하고 출력하는 버퍼링을 한다.In general, when data is transferred between processors, there is a difference in data processing speed of each processor, and thus a standby state occurs during data transmission. To prevent such a situation and to reduce data processing speed, a buffer storage device is used. Its role is to place a FIFO buffer between processors to buffer incoming and outgoing data.

이때, FIFO 버퍼에서 전송되는 데이터를 처리하는 방식은 가장 먼저 입력된 데이터가 가장 먼저 출력되는 선입선출 방식으로 이루어진다.At this time, the method of processing data transmitted from the FIFO buffer is a first-in first-out method in which the first input data is output first.

특히, USB(Universal Serial Bus)를 이용한 데이터 전송에 있어서는 USB만의 특성으로 인하여 단위 시간(frame)에 여러 가지 데이터 경로가 동시에 열려 독립적으로 데이터를 주고 받는 일이 발생한다.In particular, in data transmission using a universal serial bus (USB), various data paths are simultaneously opened at a unit time due to the unique characteristics of the USB, and thus data is independently transmitted and received.

USB는 그 속도가 상당히 향상되어 짧은 시간에 많은 데이터가 오고 가게 되는데, USB의 특성상 데이터의 양은 계속 가변된다. 이러한 점에서 단위 시간에 여러 개의 데이터 경로가 열려 각자 전송을 하게 되는 경우, 정해진 방식에 따라서 FIFO에 저장이 가능하게 된다.The speed of USB is significantly improved, and a lot of data comes and goes in a short time. Due to the nature of USB, the amount of data is constantly changing. In this regard, when several data paths are opened at the unit time and transmitted individually, the data can be stored in the FIFO according to a predetermined method.

그러나, 이 FIFO의 사이즈는 최대 패킷 사이즈로 만들게 된다. 최대 패킷 사이즈란 단위 시간 동안 여러 개의 경로 중 어느 한 경로에 대해 최대한 전송할 수 있는 데이터 양으로, 보통 바이트 단위로 표시된다.However, the size of this FIFO will be made the maximum packet size. The maximum packet size is the maximum amount of data that can be transmitted on any one of several paths in a unit time, and is usually expressed in bytes.

그러나, 한 경로에 대해서 최대 패킷 사이즈는 고정되어 있는 경우도 있지만 여러 개의 경로가 존재하는 경우에는 그 조합을 구성하여 인터페이스라는 단위로 묶어 사용되게 된다.However, although the maximum packet size may be fixed for one path, when several paths exist, a combination thereof is formed and used in a unit called an interface.

이러한 경우 가장 핵심이 되는 전송의 종류로는 BULK(bulk transfer)와 ISO(isochronous transfer)가 있다. 보통의 경우 ISO는 단위 시간당 전송량이BULK 보다 월등하게 많기 때문에 FIFO는 ISO의 최대 패킷 사이즈의 크기와 같게 설계되며, 입/출력의 경우 각각 따로 데이터 전송을 행하여야 하기 때문에 두 개의 동일한 사이즈의 FIFO를 각각 입/출력에 할당하여 사용하게 된다.In this case, the most important types of transfer are bulk transfer (BULK) and isochronous transfer (ISO). In general, since ISO has a much larger amount of transmission per unit time than BULK, the FIFO is designed to be the same as the maximum packet size of ISO.In the case of input / output, two FIFOs of the same size are required. Each will be assigned to input / output.

또한, FIFO에는 쓰기 쪽과 읽기 쪽에 각각 포인터를 가지고 있어서 이 둘이 한 쌍으로 사용되어, 각각이 가리키는 어드레스에 따라서 어느 쪽에서 어느 쪽으로 데이터가 전송되어야 하는지와 전송이 진행되고 있는지 또는 전송이 완료되었는지를 나타내는 역할을 한다.In addition, the FIFO has pointers on the write side and the read side, respectively, and they are used in pairs to indicate from which side to which data should be transferred, whether the transfer is in progress or whether the transfer is completed, depending on the address pointed to by each. Play a role.

도 1은 종래 단일 포인터를 이용하는 FIFO 버퍼의 읽기 쓰기 방식을 간단히 설명해 놓은 도면이다.FIG. 1 is a view briefly illustrating a read / write method of a conventional FIFO buffer using a single pointer.

먼저, 처음 초기화된 상태에서 읽기와 쓰기 포인터는 각각 FIFO의 가장 낮은 어드레스를 가리키며, 보통의 경우 이 번지는 0이다.First, in the initial initialized state, the read and write pointers each point to the lowest address of the FIFO, which is usually 0.

이때, FIFO 버퍼는 데이터를 쓰는 쪽(송신 프로세서)에 엠프티 플래그(EF: Empty Flag)를 주어 FIFO 버퍼에 쓰기가 가능함을 알려준다. 다음에, 송신 프로세서에서 쓰기 신호(WS:Write Strobe)와 함께 저장될 데이터를 보내게 된다. 이 때, 시스템 사양에 따라서 한번에 몇 바이트 크기의 데이터를 쓰게 되는지는 시스템마다 다르다. 따라서, 매 쓰기 신호 WS에 대하여 그에 해당하는 크기의 데이터(예컨대, m 바이트)가 해당 번지에 쓰여지게 되며, 이와 함께 쓰기 포인터는 쓰여진 데이터 사이즈 만큼 증가하게 된다.At this time, the FIFO buffer gives an empty flag (EF) to the data writer (transmitter processor) to inform that the FIFO buffer can be written to the FIFO buffer. Next, the transmitting processor sends data to be stored together with the write signal WS (Write Strobe). In this case, depending on the system specification, how many bytes of data are written at a time varies from system to system. Therefore, for each write signal WS, data of a corresponding size (for example, m bytes) is written at the corresponding address, and the write pointer is increased by the size of the written data.

한번이라도 쓰기 신호 WS가 가해져서 쓰기 포인터가 증가하는 순간 엠프티 플래그 EF는 없어지며, 송신 프로세서에서는 풀 플래그(FF: Full Flag)의 발생여부를 참조하게 된다.As soon as the write signal WS is applied and the write pointer increases, the empty flag EF disappears, and the transmitting processor refers to whether a full flag (FF) is generated.

쓰기 동작에서 최대 패킷 사이즈 이상은 쓸수도 없고, USB emumeration 과정에서 이 이상의 데이터를 쓰게 되는것은 정의되지 않은 행동(illegal)이므로 이에 대한 대책은 필요없다. 그래서 쓰기 포인터가 최대 패킷 사이즈까지 증가했을때 풀 플래그 FF를 발생시켜 쓰기가 완료되었음을 나타낸다.You cannot write more than the maximum packet size in the write operation, and writing more data in the USB emumeration process is illegal, so no countermeasures are required. Thus, when the write pointer increases to the maximum packet size, a full flag FF is issued to indicate that writing is complete.

풀 플래그 FF의 발생은 읽기 동작을 수행해도 된다는 것을 나타내게 된다.The generation of the full flag FF indicates that the read operation may be performed.

읽기 포인터는 0번지에서 시작하여 쓰기 포인터가 가리키는 번지까지 증가하면, 모두 읽은 것으로 간주되므로 각각의 포인터를 모두 0으로 리셋시키고 다시 엠프티 플래그 EF를 발생시킨다.If the read pointer starts at address 0 and increases to the address indicated by the write pointer, it is regarded as all read, so reset each pointer to 0 and generate empty flag EF again.

그런데, 이러한 종래의 FIFO에서는 데이터 경로들이 항상 최대 패킷 사이즈로 동작한다는 보장이 없기 때문에 경우에 따라서는 항상 FIFO의 일부만 사용하게 되는 단점이 존재한다. 그리고, BULK의 입/출력 및 ISO의 입/출력이 동시에 발생하는 경우에는 입/출력으로 사용되는 FIFO는 하나씩 존재하기 때문에 BULK의 입/출력은 ISO 입/출력에 밀려 다음 프레임으로 데이터 전송을 미루어야 한다.However, in the conventional FIFO, there is a disadvantage in that in some cases, only part of the FIFO is used since there is no guarantee that the data paths always operate at the maximum packet size. If the input / output of the BULK and the input / output of the ISO occur at the same time, there is one FIFO used as input / output, so the input / output of the BULK is pushed to the ISO input / output and delayed data transmission to the next frame. Should.

이것은 USB에 정의된 대역폭의 할당과는 아무런 상관이 없이 구현된 하드웨어 FIFO의 구조적인 한계로 발생하는 것으로 일종의 병목현상(Bottleneck)이 된다.This is a bottleneck because of the structural limitations of the hardware FIFOs implemented, regardless of the bandwidth allocation defined in USB.

이러한 문제를 해결하기 위해 BULK의 입/출력 용으로 FIFO를 두 개 더 구비하면 되나, 그러한 경우 FIFO가 차지하는 면적이 너무 크게 되는 문제가 발생한다.In order to solve this problem, two additional FIFOs may be provided for input / output of the BULK, but in such a case, the area occupied by the FIFO becomes too large.

따라서, 상술된 문제점을 해결하기 위한 본 발명의 목적은 하나의 FIFO에 복수개의 쓰기 포인터 및 읽기 포인터를 구비하여 여러 개의 데이터 전송 경로가 하나의 FIFO에 동시에 억세스 할 수 있도록 있도록 하는데 있다.Accordingly, an object of the present invention is to provide a plurality of write pointers and read pointers in one FIFO so that multiple data transmission paths can simultaneously access one FIFO.

도 1은 종래 FIFO 버퍼의 내부 블럭도.1 is an internal block diagram of a conventional FIFO buffer.

도 2는 본 발명에 따른 복수개의 쓰기 및 읽기 포인터를 구비한 FIFO 버퍼의 구성을 나타내는 구성도.2 is a block diagram showing a configuration of a FIFO buffer having a plurality of write and read pointers according to the present invention.

도 3은 본 발명에 따른 플래그 발생과 쓰기/읽기 포인터의 관계를 나타내는 도면.3 is a diagram showing a relationship between flag generation and a write / read pointer according to the present invention;

위와 같은 목적을 달성하기 위한 본 발명의 복수개의 어드레스 포인터를 갖는 선입선출형(FIFO) 버퍼는 전송되는 데이터를 임시 저장하는 램 어레이; 데이터의 종류에 따라 각 데이터 종류에 대응되는 복수개의 쓰기 포인터를 구비하여, 각 데이터에 대한 쓰기 신호에 따라 독립적으로 각 데이터에 대한 쓰기 동작을 수행하는 데이터 기록부; 데이터 기록부의 쓰기 포인터에 대응되는 읽기 포인터를 구비하여, 각 데이터에 대한 읽기 신호에 따라 독립적으로 각 데이터에 대한 읽기 동작을 수행하는 데이터 독출부; 램 어레이에 대한 쓰기/읽기 동작이 가능한 상태인지 여부를 알려주는 플래그 및 쓰기 신호와 읽기 신호에 따라 쓰기/읽기되는 데이터의 종류를 구별하는 플래그를 발생하는 플래그 발생부; 및 플래그 신호에 따라 복수개의 쓰기 포인터와 읽기 포인터의 포인터 값을 조절하는 포인터 조절부를 구비한다.A first-in first-out (FIFO) buffer having a plurality of address pointers of the present invention for achieving the above object includes a RAM array for temporarily storing data to be transmitted; A data recording unit having a plurality of write pointers corresponding to each data type according to the type of data, and independently performing a write operation on each data according to a write signal for each data; A data reading unit having a read pointer corresponding to the write pointer of the data recording unit, and independently performing a read operation on each data according to a read signal for each data; A flag generator configured to generate a flag indicating whether a write / read operation to a RAM array is possible and a flag to distinguish a type of data to be written / read according to the write signal and the read signal; And a pointer controller for adjusting pointer values of the plurality of write pointers and the read pointers according to the flag signal.

복수개의 어드레스 포인터를 갖는 선입선출형(FIFO) 버퍼를 이용한 본 발명의 데이터 입출력 방법은 제 1 데이터를 상기 제 1 쓰기 포인터가 지정하는 어드레스에 기록하는 제 1 단계; 제 1 데이터에 대한 쓰기 동작시 제 2 데이터에 대한 쓰기 신호 인가시, 제 2 쓰기 포인터와 제 2 읽기 포인터를 제 1 데이터의 최대 패킷 사이즈에 해당하는 어드레스의 다음 어드레스로 지정하는 제 2 단계; 및 제 2 데이터를 상기 제 2 쓰기 포인터가 지정하는 어드레스에 기록하는 제 3단계를 포함한다.A data input / output method of the present invention using a first-in first-out (FIFO) buffer having a plurality of address pointers includes: a first step of writing first data to an address designated by the first write pointer; A second step of designating a second write pointer and a second read pointer to a next address of an address corresponding to a maximum packet size of the first data when a write signal for the second data is applied during a write operation on the first data; And a third step of writing second data to an address designated by the second write pointer.

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

도 2는 본 발명에 따른 복수개의 쓰기 및 읽기 포인터를 구비한 FIFO 버퍼의 구성을 나타내는 구성도이다.2 is a block diagram illustrating a configuration of a FIFO buffer having a plurality of write and read pointers according to the present invention.

본 발명의 FIFO 버퍼는 BULK용 읽기 및 쓰기 포인터와 ISO용의 읽기 및 쓰기 포인터를 별도로 구비하여 USB와 같이 여러 데이터 전송 경로가 동시에 열려 독립적으로 데이터 전송이 이루어지는 시리얼 방식에 적용된다.The FIFO buffer of the present invention is provided with a separate read and write pointer for BULK and a read and write pointer for ISO, and is applied to a serial method in which multiple data transfer paths are simultaneously opened such as USB to independently transmit data.

본 발명의 FIFO 버퍼는 램 어레이(10), 데이터 기록부(20), 데이터 독출부(30), 플래그 발생부(40) 및 포인터 조절부(50)를 구비한다.The FIFO buffer of the present invention includes a RAM array 10, a data recording unit 20, a data reading unit 30, a flag generating unit 40, and a pointer adjusting unit 50.

램 어레이(10)는 프로세스들 간에 전송되는 데이터를 저장한다.RAM array 10 stores data transferred between processes.

데이터 기록부(20)는 데이터의 종류에 따라 각 데이터 종류에 대응되는 복수개의 쓰기 포인터를 구비하여 각 데이터에 대한 쓰기 신호에 따라 독립적으로 각 데이터에 대한 쓰기 동작을 수행한다.The data recording unit 20 includes a plurality of write pointers corresponding to each data type according to the type of data, and independently performs a write operation on each data according to a write signal for each data.

이러한 데이터 기록부(20)는 ISO 데이터를 램 어레이(10)에 저장시 저장될 위치를 나타내는 포인터 값을 저장하는 제 1 쓰기 포인터(21) 및 미도시된 USB 컨트롤러(송신 프로세서)로부터 ISO 데이터에 대한 쓰기 신호 WR_ISO와 함께 ISO 데이터가 입력되면 제 1 쓰기 포인터(21)에 저장된 포인터 값에 입력되는 ISO 데이터를 저장한 후 저장된 데이터 사이즈 만큼 쓰기 포인터 값을 증가시키는 제 1 쓰기 제어부(22)를 구비한다. 그리고, 데이터 기록부(20)는 BULK 데이터를 램 어레이(10)에 저장시 저장될 위치를 나타내는 포인터 값을 저장하는 제 2 쓰기 포인터(23) 및 미도시된 USB 컨트롤러(송신 프로세서)로부터 BULK 데이터에 대한 쓰기 신호 WR_BULK와 함께 BUKL 데이터가 입력되면 제 2 쓰기 포인터(23)에 저장된 포인터 값에 입력되는 BULK 데이터를 저장한 후 저장된 데이터 만큼 포인터를 증가 시키는 제 2 쓰기 제어부(24)를 구비한다.The data recorder 20 stores a pointer value indicating a location to be stored when the ISO data is stored in the RAM array 10 and a first write pointer 21 for storing the ISO data from the USB controller (transmitter processor) not shown. When the ISO data is input together with the write signal WR_ISO, the first write controller 22 stores the ISO data input to the pointer value stored in the first write pointer 21 and increases the write pointer value by the stored data size. . The data recorder 20 stores the BULK data from a second write pointer 23 and a USB controller (transmitter processor) (not shown) that store a pointer value indicating a location to be stored when the BULK data is stored in the RAM array 10. When the BUKL data is input together with the write signal WR_BULK, the second write controller 24 stores the BULK data input to the pointer value stored in the second write pointer 23 and increases the pointer by the stored data.

데이터 독출부(30)는 데이터 기록부(20)의 쓰기 포인터에 대응되는 읽기 포인터를 구비하여 각 데이터에 대한 읽기 신호에 따라 독립적으로 각 데이터에 대한 읽기 동작을 수행한다.The data reader 30 includes a read pointer corresponding to the write pointer of the data recorder 20 to independently read each data according to a read signal for each data.

이러한 데이터 독출부(30)는 램 어레이(21)에 저장된 ISO 데이터를 읽어올 위치를 나타내는 포인터 값을 저장하는 제 1 읽기 포인터(31) 및 미도시된 호스트(수신 프로세서)로부터 ISO 데이터에 대한 읽기 신호 RD_ISO가 입력되면 제 1 읽기 포인터(31)의 포인터 값이 지정하는 곳의 ISO 데이터를 출력하는 제 1 읽기 제어부(32)를 구비한다. 그리고, 데이터 독출부(30)는 램 어레이(10)에 저장된 BULK 데이터를 읽어올 위치를 나타내는 포인터 값을 저장하는 제 2 읽기 포인터(33) 및 미도시된 호스트(수신 프로세서)로부터 BULK 데이터에 대한 읽기 신호 BULK_RD가 입력되면 제 2 읽기 포인터(33)의 포인터 값이 지정하는 곳의 BULK 데이터를 출력하는 제 2 읽기 제어부(34)를 구비한다.The data reader 30 reads the ISO data from a first read pointer 31 that stores a pointer value indicating a position to read ISO data stored in the RAM array 21 and a host (receive processor) not shown. When the signal RD_ISO is inputted, the first read control unit 32 outputs ISO data where the pointer value of the first read pointer 31 designates. In addition, the data reading unit 30 may read the BULK data from a second read pointer 33 and a host (receiving processor) not shown, which store a pointer value indicating a position of reading the BULK data stored in the RAM array 10. When the read signal BULK_RD is input, the second read control unit 34 outputs the BULK data where the pointer value of the second read pointer 33 is designated.

플래그 발생부(40)는 램 어레이(10)에 대한 쓰기/읽기 동작이 가능한 상태인지 여부를 알려주는 플래그와 데이터 쓰기/읽기 신호에 따라 쓰기/읽기되는 데이터의 종류를 구별하는 플래그를 발생한다.The flag generator 40 generates a flag indicating whether the write / read operation to the RAM array 10 is possible and a flag that distinguishes the type of data to be written / read according to the data write / read signal.

포인터 조절부(50)는 플래그 발생부(40)의 플래그 신호에 따라 데이터 기록부(20) 및 데이터 독출부(30)의 복수개의 쓰기 포인터 및 읽기 포인터의 포인터 값을 조절하여 서로 다른 데이터 종류에 대한 독립적인 데이터 전송이 가능하도록 해준다. 즉, 어느 한 종류의 데이터에 대한 쓰기 동작이 진행 중에 다른 종류의 데이터에 대한 쓰기 명령이 인가되는 경우, 먼저 쓰기 시작한 데이터가 기록되는 마지막 어드레스의 다음 어드레스에 새로 쓰여질 데이터에 대한 쓰기 포인터와 읽기 포인터를 위치시킨다.The pointer controller 50 adjusts the pointer values of the plurality of write pointers and the read pointers of the data recorder 20 and the data reader 30 according to the flag signals of the flag generator 40 to adjust the pointer values of different data types. It enables independent data transfer. That is, when a write command for another type of data is applied while a write operation on one type of data is in progress, a write pointer and a read pointer to the data to be newly written at the next address of the last address at which the data started to be written first is written. Locate it.

도 3은 본 발명에 따른 플래그 발생과 쓰기/읽기 포인터의 관계를 나타내는 도면이다.3 is a diagram illustrating a relationship between flag generation and a write / read pointer according to the present invention.

먼저 FIFO 버퍼가 초기화된 상태에서는 제 1 및 제 2 쓰기 포인터와 제 1 및 제 2 읽기 포인터는 램 어드레스의 최하위 어드레스에 위치한다. 그러면, 플래그 발생부(40)는 송신 프로세서로 ISO 데이터 및 BULK 데이터에 대한 쓰기가 가능하다는 엠프티 플래그 FIFO_empty_flag_for_ISO, FIFO_empty_flag_for_BULK를 출력한다.First, when the FIFO buffer is initialized, the first and second write pointers and the first and second read pointers are located at the lowest address of the RAM address. Then, the flag generator 40 outputs empty flags FIFO_empty_flag_for_ISO and FIFO_empty_flag_for_BULK indicating that ISO data and BULK data can be written to the transmission processor.

엠프티 플래그 FIFO_empty_flag_for_ISO 발생으로, 송신 프로세서로부터 ISO 데이터에 대한 쓰기 신호 WR_ISO와 함께 ISO 데이터가 인가되면, 제 1 쓰기 제어부(22)는 m 바이트 단위로 램 어레이(21)에 ISO 데이터를 기록하며 제 1 쓰기 포인터(21)를 m 바이트 단위에 해당하는 어드레스씩 증가시킨다. 이때, USB 전송방식에서는 USB 특성상 한 프레임에 최대 전송할 수 있는 데이터량(최대 패킷 사이즈)이 정해져 있으므로 제 1 쓰기 포인터는 m 바이트에 해당하는 번지씩 증가하여 최대 패킷 사이즈에 해당하는 어드레스까지만 증가하게 된다.When the empty flag FIFO_empty_flag_for_ISO is generated and the ISO data is applied from the transmitting processor together with the write signal WR_ISO for the ISO data, the first write control unit 22 writes the ISO data to the RAM array 21 in units of m bytes, and the first data. The write pointer 21 is incremented by an address corresponding to m bytes. At this time, in the USB transmission method, since the maximum amount of data (maximum packet size) that can be transmitted in one frame is determined due to the characteristics of USB, the first write pointer increases by an address corresponding to m bytes, and only increases to an address corresponding to the maximum packet size. .

그리고, 플래그 발생부(40)는 ISO 데이터 쓰기 플래그 WR_ISO_flag를 포인터 조절부(50)로 출력해 현재 ISO 데이터에 대한 쓰기 동작이 진행중임을 알려준다.In addition, the flag generator 40 outputs the ISO data write flag WR_ISO_flag to the pointer controller 50 to indicate that a write operation on the current ISO data is in progress.

제 1 쓰기 포인터(21)가 최대 패킷 사이즈 까지 증가하면, 플래그 발생부(40)는 ISO 데이터에 대한 풀 플래그 신호 FIFO_for_ISO_full_flag 를 출력한다.When the first write pointer 21 increases to the maximum packet size, the flag generator 40 outputs the full flag signal FIFO_for_ISO_full_flag for the ISO data.

ISO 데이터에 대한 풀 플래그 신호 FIFO_for_ISO_full_flag 가 발생하면, 수신 프로세서는 읽기 신호 RD_ISO를 제 1 읽기 제어부(32)로 보내 최하위 어드레스 부터 최대 패킷 사이즈에 해당하는 어드레스까지 제 1 읽기 포인터(31)를 증가시켜가며 ISO 데이터를 읽어 온다.When the full flag signal FIFO_for_ISO_full_flag for the ISO data is generated, the receiving processor sends a read signal RD_ISO to the first read control unit 32 to increment the first read pointer 31 from the lowest address to an address corresponding to the maximum packet size. Read the ISO data.

그런데, ISO 데이터가 기록되는 도중에 BULK 데이터에 대한 쓰기 신호 WR_BULK가 제 2 쓰기 제어부(24)에 인가되면, 제 2 쓰기 제어부(24)는 이 사실을 플래그 발생부(40)로 알려준다. 그러면, 플래그 발생부(40)는 BULK 데이터 쓰기 플래그 WR_BULK_flag를 포인터 조절부(50)로 출력한다.By the way, if the write signal WR_BULK for the BULK data is applied to the second write control unit 24 while the ISO data is being written, the second write control unit 24 informs the flag generation unit 40 of this fact. Then, the flag generator 40 outputs the BULK data write flag WR_BULK_flag to the pointer controller 50.

포인터 조절부(50)는 ISO 데이터 쓰기 플래그 WR_ISO_flag와 함께 BULK 데이터 쓰기 플래그 WR_BULK_flag가 인가되면, 제 2 쓰기 포인터(23)와 제 2 읽기 포인터(33)의 포인터 값을 ISO 데이터의 최대 패킷 사이즈 + m 에 해당하는 어드레스로 지정해준다.When the BULK data write flag WR_BULK_flag is applied together with the ISO data write flag WR_ISO_flag, the pointer controller 50 sets the pointer values of the second write pointer 23 and the second read pointer 33 to the maximum packet size of ISO data + m. Specify the address corresponding to.

이때, 포인터를 ISO 데이터의 최대 패킷 사이즈 + m에 두는 이유는, USB에서 한번에 전송되는 데이터 사이즈는 최대 패킷 사이즈를 초과할 수 없으며, 제 1 쓰기 포인터(21)의 포인터 값은 ISO 데이터를 최대 패킷 사이즈까지 기록하는 순간다시 m바이트에 해당하는 번지수 만큼 증가하기 때문이다.The reason why the pointer is placed at the maximum packet size of the ISO data + m is that the data size transmitted at once in the USB cannot exceed the maximum packet size, and the pointer value of the first write pointer 21 indicates the maximum packet size of the ISO data. This is because the number of m bytes is increased by the number of bytes again.

이처럼, 제 2 쓰기 포인터(23) 및 제 2 읽기 포인터(33)의 포인터 값을 제 1 쓰기 제어부(22)에 의해 램 어레이(21)에 기록되는 ISO 데이터의 마지막 어드레스의 다음 어드레스로 지정함으로써 제 2 쓰기 제어부(24) 및 제 2 읽기 제어부(34)는 해당 어드레스를 최하위 어드레스로 인식하게 된다. 따라서, 제 2 쓰기 제어부(24)는 ISO 데이터의 쓰기/읽기 동작과 독립적으로 제 2 쓰기 포인터(23)가 지정하는 어드레스(ISO 데이터의 최대 패킷 사이즈 + m)부터 BULK 데이터를 기록하기 시작한다.In this way, the pointer values of the second write pointer 23 and the second read pointer 33 are assigned to the next address of the last address of the ISO data recorded by the first write control unit 22 in the RAM array 21. The second write control unit 24 and the second read control unit 34 recognize the corresponding address as the lowest address. Therefore, the second write control section 24 starts writing the BULK data from the address (maximum packet size of the ISO data + m) designated by the second write pointer 23 independently of the write / read operation of the ISO data.

읽기 동작시에도, 제 2 읽기 포인터(33)의 포인터 값은 ISO 데이터의 최대 패킷 사이즈 + m에 해당하는 어드레스부터 시작되므로, 제 2 읽기 제어부(34)에 의한 읽기 동작은 제 1 읽기 제어부(32)에 의한 읽기 동작과 독립적으로 수행될 수 있다.Even in the read operation, since the pointer value of the second read pointer 33 starts from an address corresponding to the maximum packet size of the ISO data + m, the read operation by the second read control unit 34 is performed by the first read control unit 32. Can be performed independently of the read operation.

상술한 바와 같이, 하나의 FIFO에 두 쌍의 읽기/쓰기 포인터를 구비함으로써 서로 다른 데이터 전송 경로를 갖는 방식에서 각 데이터 전송을 독립적으로 수행할 수 있게 되며, 이로써 전송 효율을 향상시킬 수 있게 된다.As described above, by providing two pairs of read / write pointers in one FIFO, each data transmission can be independently performed in a manner having different data transmission paths, thereby improving transmission efficiency.

Claims (7)

전송되는 데이터를 임시 저장하는 램 어레이;RAM array for temporarily storing the data to be transmitted; 데이터의 종류에 따라 각 데이터 종류에 대응되는 복수개의 쓰기 포인터를 구비하여, 각 데이터에 대한 쓰기 신호에 따라 독립적으로 각 데이터에 대한 쓰기 동작을 수행하는 데이터 기록부;A data recording unit having a plurality of write pointers corresponding to each data type according to the type of data, and independently performing a write operation on each data according to a write signal for each data; 상기 데이터 기록부의 상기 쓰기 포인터에 대응되는 읽기 포인터를 구비하여, 각 데이터에 대한 읽기 신호에 따라 독립적으로 각 데이터에 대한 읽기 동작을 수행하는 데이터 독출부;A data reading unit having a read pointer corresponding to the write pointer of the data recording unit to independently read each data according to a read signal for each data; 상기 램 어레이에 대한 쓰기/읽기 동작이 가능한 상태인지 여부를 알려주는 플래그 및 상기 쓰기 신호 및 상기 읽기 신호에 따라 쓰기/읽기되는 데이터의 종류를 구별하는 플래그를 발생하는 플래그 발생부; 및A flag generator for generating a flag indicating whether a write / read operation to the RAM array is possible and a flag for distinguishing a type of data to be written / read according to the write signal and the read signal; And 상기 플래그 신호에 따라 상기 복수개의 쓰기 포인터와 읽기 포인터의 포인터 값을 조절하는 포인터 조절부를 구비하는 복수개의 어드레스 포인터를 갖는 선입선출형 버퍼.And a first-in, first-out buffer having a plurality of address pointers including a pointer controller for adjusting pointer values of the plurality of write pointers and read pointers according to the flag signal. 제 1항에 있어서The method of claim 1 상기 데이터 기록부는The data recorder 제 1 데이터가 저장될 상기 램 어레이의 위치를 나타내는 포인터 값을 저장하는 제 1 쓰기 포인터;A first write pointer for storing a pointer value indicating a location of the RAM array in which first data is to be stored; 상기 제 1 데이터에 대한 쓰기 신호에 따라 상기 제 1 쓰기 포인터의 포인터 값에 대응되는 상기 램 어레이에 상기 제 1 데이터를 저장하고, 저장된 데이터만큼 상기 제 1 쓰기 포인터의 포인터 값을 증가시키는 제 1 쓰기 제어부;A first write in which the first data is stored in the RAM array corresponding to the pointer value of the first write pointer according to the write signal for the first data, and the pointer value of the first write pointer is increased by the stored data. Control unit; 제 2 데이터가 저장될 상기 램 어레이의 위치를 나타내는 포인터 값을 저장하는 제 2 쓰기 포인터; 및A second write pointer for storing a pointer value indicating a location of the RAM array in which second data is to be stored; And 상기 제 2 데이터에 대한 쓰기 신호에 따라 상기 제 2 쓰기 포인터의 포인터 값에 대응되는 상기 램 어레이에 상기 제 2 데이터를 저장하고, 저장된 데이터만큼 상기 제 2 쓰기 포인터의 포인터 값을 증가시키는 제 2 쓰기 제어부를 구비하는 것을 특징으로 하는 복수개의 어드레스 포인터를 갖는 선입선출형 버퍼.A second write that stores the second data in the RAM array corresponding to the pointer value of the second write pointer and increases the pointer value of the second write pointer by the stored data according to the write signal for the second data. A first-in first-out buffer having a plurality of address pointers, comprising a control unit. 제 1항에 있어서,The method of claim 1, 상기 데이터 독출부는The data reading unit 상기 램 어레이에 저장된 상기 제 1 데이터를 읽어올 위치를 나타내는 포인터 값을 저장하는 제 1 읽기 포인터;A first read pointer for storing a pointer value indicating a position to read the first data stored in the RAM array; 상기 제 1 데이터에 대한 읽기 신호에 따라 상기 제 1 읽기 포인터의 포인터 값이 지정하는 곳의 데이터를 출력하는 제 1 읽기 제어부;A first read controller configured to output data at a place designated by a pointer value of the first read pointer according to the read signal for the first data; 상기 램 어레이에 저장된 상기 제 2 데이터를 읽어올 위치를 나타내는 포인터 값을 저장하는 제 2 읽기 포인터; 및A second read pointer for storing a pointer value indicating a position to read the second data stored in the RAM array; And 상기 제 2 데이터에 대한 읽기 신호에 따라 상기 제 2 읽기 포인터의 포인터 값이 지정하는 곳의 데이터를 출력하는 제 2 읽기 제어부를 구비하는 복수개의 어드레스 포인터를 갖는 선입선출형 버퍼.A first-in first-out buffer having a plurality of address pointers having a second read control section for outputting data where a pointer value of the second read pointer designates in accordance with a read signal for the second data. 제 1항에 있어서,The method of claim 1, 상기 포인터 조절부는 상기 제 1 데이터에 대한 쓰기 동작 중 상기 제 2 데이터에 대한 쓰기 신호가 인가되면, 상기 제 2 쓰기 포인터 및 상기 제 2 읽기 포인터의 포인터 값을 상기 제 1 데이터의 최대 패킷 사이즈에 해당하는 어드레스의 다음 어드레스로 지정하는 것을 특징으로 하는 복수개의 어드레스 포인터를 갖는 선입선출형 버퍼.When the write signal for the second data is applied during the write operation on the first data, the pointer adjusting unit corresponds to the maximum packet size of the first data when the pointer values of the second write pointer and the second read pointer are applied. A first-in first-out buffer having a plurality of address pointers, the address being designated as the next address. 제 1항에 있어서,The method of claim 1, 상기 제 1 데이터는 ISO 데이터이며, 상기 제 2 데이터는 BULK 데이터인 것을 특징으로 하는 복수개의 어드레스 포인터를 갖는 선입선출형 버퍼.The first-in first-out buffer having a plurality of address pointers, wherein the first data is ISO data and the second data is BULK data. 제 1 데이터에 대한 제 1 읽기/쓰기 포인터 및 제 2 데이터에 대한 제 2 읽기/쓰기 포인터를 구비한 FIFO 버퍼에서의 데이터 입출력 방법에 있어서,A data input / output method in a FIFO buffer having a first read / write pointer for first data and a second read / write pointer for second data, the method comprising: 상기 제 1 데이터를 상기 제 1 쓰기 포인터가 지정하는 어드레스에 기록하는 제 1 단계;A first step of writing the first data to an address designated by the first write pointer; 상기 제 1 데이터에 대한 쓰기 동작시 상기 제 2 데이터에 대한 쓰기 신호 인가시, 상기 제 2 쓰기 포인터 및 상기 제 2 읽기 포인터를 상기 제 1 데이터의 최대 패킷 사이즈에 해당하는 어드레스의 다음 어드레스로 지정하는 제 2 단계; 및When the write signal is applied to the second data during the write operation on the first data, the second write pointer and the second read pointer are designated as the next address of an address corresponding to the maximum packet size of the first data. Second step; And 상기 제 2 데이터를 상기 제 2 쓰기 포인터가 지정하는 어드레스에 기록하는 제 3단계를 포함하는 FIFO 데이터 입출력 방법.And a third step of writing the second data to an address designated by the second write pointer. 제 6항에 있어서,The method of claim 6, 상기 제 1 데이터는 ISO 데이터이며, 상기 제 2 데이터는 BULK 데이터인 것을 특징으로 하는 FIFO 데이터 입출력 방법.And the first data is ISO data, and the second data is BULK data.
KR1020020085537A 2002-12-27 2002-12-27 FIFO buffer using dual address pointer and data input/output method in the FIFO buffer KR20040059013A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020020085537A KR20040059013A (en) 2002-12-27 2002-12-27 FIFO buffer using dual address pointer and data input/output method in the FIFO buffer

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020020085537A KR20040059013A (en) 2002-12-27 2002-12-27 FIFO buffer using dual address pointer and data input/output method in the FIFO buffer

Publications (1)

Publication Number Publication Date
KR20040059013A true KR20040059013A (en) 2004-07-05

Family

ID=37351058

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020020085537A KR20040059013A (en) 2002-12-27 2002-12-27 FIFO buffer using dual address pointer and data input/output method in the FIFO buffer

Country Status (1)

Country Link
KR (1) KR20040059013A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9542152B2 (en) 2012-11-27 2017-01-10 Samsung Electronics Co., Ltd. System-on-chip and application processor including FIFO buffer and mobile device comprising the same

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9542152B2 (en) 2012-11-27 2017-01-10 Samsung Electronics Co., Ltd. System-on-chip and application processor including FIFO buffer and mobile device comprising the same

Similar Documents

Publication Publication Date Title
EP0118446B1 (en) First-in, first-out (fifo) memory configuration for queue storage
US5587953A (en) First-in-first-out buffer memory
KR100420422B1 (en) Queue manager for a buffer
US4692859A (en) Multiple byte serial data transfer protocol
US5592629A (en) Apparatus and method for matching data rates to transfer data between two asynchronous devices
US7299302B2 (en) Direct memory access control apparatus and method
US4603383A (en) Apparatus for direct data transfer among central processing units
US5721833A (en) Push-out of low priority signals from switch buffers
US6584512B1 (en) Communication DMA device for freeing the data bus from the CPU and outputting divided data
US6341313B1 (en) Flow controlling method and apparatus for network between processors
US5343557A (en) Workstation controller with full screen write mode and partial screen write mode
KR20040059013A (en) FIFO buffer using dual address pointer and data input/output method in the FIFO buffer
US20020078267A1 (en) Scheduler for a data memory access having multiple channels
KR19980703197A (en) Apparatus and method for handling digital signals and processing apparatus having same
US5774745A (en) Method and apparatus for writing and reading entries in an event status queue of a host memory
US6486704B1 (en) Programmable burst FIFO
US6831920B1 (en) Memory vacancy management apparatus and line interface unit
JP2000003332A (en) Bi-directional bus size conversion circuit
JP2973941B2 (en) Asynchronous FIFO buffer device
US6865654B2 (en) Device for interfacing asynchronous data using first-in-first-out
KR0181485B1 (en) Data-buffering device for data telecommunication
KR100188940B1 (en) Double stac control apparatus using single memory and data transfer method
EP1104612B1 (en) Data-communications unit suitable for asynchronous serial data transmission
KR100785892B1 (en) Apparatus and method for controlling single port memory of bi-directional data communication
JPH0528082A (en) Input/output data transfer circuit

Legal Events

Date Code Title Description
N231 Notification of change of applicant
WITB Written withdrawal of application