KR20070068809A - System and method for transmitting a data in a system on a chip system - Google Patents

System and method for transmitting a data in a system on a chip system Download PDF

Info

Publication number
KR20070068809A
KR20070068809A KR1020050130826A KR20050130826A KR20070068809A KR 20070068809 A KR20070068809 A KR 20070068809A KR 1020050130826 A KR1020050130826 A KR 1020050130826A KR 20050130826 A KR20050130826 A KR 20050130826A KR 20070068809 A KR20070068809 A KR 20070068809A
Authority
KR
South Korea
Prior art keywords
data
size
fifo buffer
fifo
unit
Prior art date
Application number
KR1020050130826A
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 KR1020050130826A priority Critical patent/KR20070068809A/en
Publication of KR20070068809A publication Critical patent/KR20070068809A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • 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

Abstract

A system and a method for transferring data in an SoC system are provided to reduce a memory size by reducing the size of a FIFO memory to one slot if throughput of a DMA(Direct Memory Access) processor is bigger than the throughput of an input speed of an input part, and reduce generation of a corner case by completely separating the input part and the DMA processor. The input part(300) divides the data to be transferred to a system memory(110) into sub data, and generates a header defining the sub data and the size of the sub data. The input part determines transfer of the next sub data depending on a CRC(Cyclic Redundancy Check) result of the sub data after pushing the header to a FIFO buffer unit(302). The FIFO buffer unit measures and transfers the FIFO size to the DMA processor(304) when the header and the sub data are received from the input part, and checks cancellation of a push operation depending on the CRC result of the input part. The DMA processor checks the data size by reading the head from the FIFO buffer unit. The DMA processor reads the sub data received in the FIFO buffer unit if the FIFO size is counted as much as the data size.

Description

시스템 온 칩 시스템에서 데이터 전송을 위한 시스템 및 방법{SYSTEM AND METHOD FOR TRANSMITTING A DATA IN A SYSTEM ON A CHIP SYSTEM}SYSTEM AND METHOD FOR TRANSMITTING A DATA IN A SYSTEM ON A CHIP SYSTEM}

도 1은 종래의 주변 장치에서 외부로부터 수신된 데이터를 FIFO 버퍼를 사용하여 DMA 처리기를 통해 시스템 메모리로 전송하는 과정을 설명하기 위한 블록 구성도,1 is a block diagram illustrating a process of transferring data received from the outside to a system memory through a DMA processor using a FIFO buffer in a conventional peripheral device;

도 2는 종래의 주변 장치에서 외부로부터 수신된 데이터를 FIFO 버퍼를 사용하지 않고 DMA 처리부를 통해 시스템 메모리로 전송하는 과정을 설명하기 위한 블록 구성도,FIG. 2 is a block diagram illustrating a process of transferring data received from the outside to a system memory through a DMA processing unit without using a FIFO buffer in a conventional peripheral device; FIG.

도 3은 본 발명의 실시 예에 따른 주변 장치(Peripheral)내의 입력부가 FIFO 버퍼 유닛을 사용하여 DMA 처리부로 데이터를 전송하기 위한 블록구성도3 is a block diagram of an input unit in a peripheral device for transmitting data to a DMA processor using a FIFO buffer unit according to an embodiment of the present invention.

도 4는 본 발명의 실시 예에 따른 DMA 처리부의 상태 천이도,4 is a state transition diagram of a DMA processing unit according to an embodiment of the present invention;

도 5는 본 발명의 실시 예에 따른 주변 장치(Peripheral)내의 입력부가 FIFO 버퍼 유닛를 사용하여 DMA 처리부로 데이터를 전송하기 위한 신호 흐름을 도시한 블록 구성도,FIG. 5 is a block diagram illustrating a signal flow for an input unit in a peripheral device to transmit data to a DMA processor using a FIFO buffer unit according to an embodiment of the present invention; FIG.

도 6은 본 발명의 실시 예에 따른 입력부의 CRC 처리부의 CRC 체크결과 입력부에서 송신되는 데이터가 모두 양호할 때의 입력부, FIFO 버퍼 유닛, DMA 처리부간의 동작 순서 및 데이터의 이동을 나타낸 도면,6 is a diagram illustrating an operation sequence and data movement between an input unit, a FIFO buffer unit, and a DMA processing unit when all data transmitted from the CRC check result input unit of the CRC processing unit of the input unit is satisfactory;

도 7은 본 발명의 실시 예에 따른 입력부의 CRC 처리부의 CRC 체크 결과 디코더로 수신된 신호가 불량(bad)일 때의 입력부, FIFO 버퍼 유닛, DMA 처리부간의 동작 순서 및 데이터의 이동을 나타낸 도면,FIG. 7 is a diagram illustrating an operation sequence and data movement between an input unit, a FIFO buffer unit, and a DMA processing unit when a signal received by a decoder from a CRC processing unit of the CRC processing unit is bad according to an embodiment of the present invention; FIG.

도 8은 본 발명의 실시 예에 따른 입력부의 동작 흐름도,8 is an operation flowchart of an input unit according to an embodiment of the present invention;

도 9는 본 발명의 실시 예에 따른 FIFO 버퍼 유닛의 동작 흐름도,9 is an operation flowchart of a FIFO buffer unit according to an embodiment of the present invention;

도 10은 본 발명의 실시 예에 따른 DMA 처리부의 동작 흐름도.10 is a flowchart illustrating operations of a DMA processing unit according to an exemplary embodiment of the present invention.

본 발명은 시스템 온 칩(SoC) 시스템에서 데이터 전송을 위한 시스템 및 방법에 관한 것으로 특히 피포(FIFO) 버퍼를 구비하여 SoC 외부로부터 수신된 신호를 내부의 시스템 메모리로 전송하기 위한 시스템 및 방법에 관한 것이다.The present invention relates to a system and method for data transmission in a system on chip (SoC) system, and more particularly to a system and method for transmitting a signal received from the outside of the SoC to the internal system memory having a FIFO buffer will be.

일반적으로 시스템 온 칩(System On Chip : Soc)은 중앙 처리 장치(Centural Processing Unit : CPU), 메모리, 주변 장치(Peripheral) 등으로 구성된다. 칩 외부와의 통신은 모뎀(Modem), USB(Universal Serial Bus), UART(Universal Asynchronous Receiver Transmitter) 등과 같은 주변 장치(Peripheral)에 의해 이루어진다. 외부에서 데이터가 입력되었을 때, 상기 데이터를 중앙 처리 장치(CPU)가 처리하도록 하려면, 임시 버퍼를 구비한 주변 장치(Peripheral)에 있는 데이터를 중앙 처리 장치가 읽을 수 있도록 시스템 메모리로 옮겨 놓아야 한다.In general, a System On Chip (Soc) is composed of a Central Processing Unit (CPU), a memory, a peripheral device, and the like. Communication with the outside of the chip is performed by a peripheral device such as a modem, a universal serial bus (USB), or a universal asynchronous receiver transmitter (UART). When data is input from the outside, the CPU needs to move data in a peripheral device having a temporary buffer to the system memory so that the CPU can read the data.

상기 데이터를 시스템 메모리에 옮기는 작업은 중앙 처리 장치가 할 수 도 있으나, 직접 메모리 접근(Direct Memory Access : DMA)을 사용하는 것이 훨씬 효율적이다.Moving the data to system memory may be done by the central processing unit, but using Direct Memory Access (DMA) is much more efficient.

또한 주변 장치에 있는 데이터를 모았다가 한 번에 옮길 때 보다 데이터가 생길 때마다 조금씩 옮기는 것이 시스템 버스를 좀 더 효율적으로 사용할 수 있다. 이를 위해 DMA와 함께 사용되는 것이 선입선출(First Input First Output : FIFO)버퍼이다.Also, gathering data from peripherals and moving them a bit each time there is more efficient use of the system bus than moving them all at once. For this purpose, the first input first output (FIFO) buffer is used with DMA.

주변 장치(Peripheral)에 데이터가 생기면 생길 때마다 바로 선입선출(FIFO)버퍼에 넣고 DMA는 FIFO버퍼에 데이터가 있으면 버스가 비워있는 시간에 조금씩 옮겨 놓는다.Whenever data is created on a peripheral, it is put directly into a first-in, first-out (FIFO) buffer, and DMA is moved slightly during the time the bus is empty if there is data in the FIFO buffer.

FIFO 버퍼를 사용할 때 또 하나의 장점은 FIFO 버퍼를 경계로 푸쉬(Push)하는 부분과 팝(Pop)하는 부분을 완전히 분리시킬 수 있다는 것이다. 주변 장치(Peripheral) 내부를 구성하는 여러 불럭 들이 서로 신호들을 송수신하는 경우가 많을수록 생각지 못했던 에러들 즉, 코너 케이스(coner case)가 발생할 수 있다. FIFO 버퍼를 사용하게 되면 푸쉬하는 부분은 FIFO 버퍼와의 인터액션(Interaction)만 고려하면 되고 팝하는 부분도 FIFO 버퍼와 인터액션만 고려하면 된다. 특별히 푸쉬하는 부분과 팝하는 부분의 같은 클럭(Clock)을 사용하는 블록들의 모임인 클럭 도메인(Clock Domain)이 다를 경우 FIFO 버퍼에 의한 분리 효과가 더 커진다.Another advantage of using FIFO buffers is that you can completely separate the parts that push and pop the FIFO buffers. As blocks in the peripheral device transmit and receive signals to each other, unexpected errors, that is, corner cases may occur. When using a FIFO buffer, the push part only needs to consider interaction with the FIFO buffer and the pop part only needs to consider the interaction with the FIFO buffer. In particular, when the clock domain, which is a collection of blocks using the same clock of the pushing part and the popping part, is different, the separation effect by the FIFO buffer becomes larger.

FIFO 버퍼와 DMA를 사용하면 시스템 버스 사용효율을 높일 수 있고 코너 케이스를 방지할 수 있지만, CRC(Cyclic Redundancy Check)와 같이 데이터의 마지막 부분에 지금까지 수신했던 데이터가 유효한지 여부를 검사하는 경우에는 FIFO 버퍼를 사용하기 어렵다. 이런 경우 데이터를 수신하더라도 FIFO 버퍼와 DMA를 통해 메모리로 전송할 수 없다. 왜냐하면, 데이터를 수신받는 중에는 수신하는 데이터가 유효한지를 알 수 없기 때문이다. 따라서 수신받는 데이터를 일단 임시 버퍼에 저장해 놓고 다 수신한 경우에 데이터가 유효한지 여부가 확인되면 그 때 FIFO 버퍼와 DMA를 통해 시스템 메모리로 전송해야 한다. 또는 FIFO 버퍼를 사용하지 않고 임시 버퍼에서 바로 DMA를 통해 전송하게 할 수도 있다.Using FIFO buffers and DMA can improve system bus utilization and avoid corner cases, but when checking whether the data received so far is valid at the end of the data, such as a cyclic redundancy check (CRC) Difficult to use FIFO buffer In this case, even if data is received, it cannot be transferred to memory through the FIFO buffer and DMA. This is because it is not possible to know whether the received data is valid while receiving the data. Therefore, once the received data is stored in the temporary buffer and the received data is confirmed whether it is valid, it must be transferred to the system memory through the FIFO buffer and DMA at that time. Alternatively, it can be sent via DMA directly from the temporary buffer without using a FIFO buffer.

도 1은 종래의 주변 장치에서 외부로부터 수신된 데이터를 FIFO 버퍼를 사용하여 DMA 처리기를 통해 시스템 메모리로 전송하는 과정을 설명하기 위한 블록 구성도이다.FIG. 1 is a block diagram illustrating a process of transferring data received from an external device to a system memory through a DMA processor using a FIFO buffer in a conventional peripheral device.

입력부(100)는 도시되지 않은 SoC 외부로부터 데이터를 입력받는 장치로, 수신된 데이터의 유효성을 검증하기 위한 디코딩을 수행하며, 입력받은 데이터를 임시 버퍼로 전송한다. 상기 도 1에는 임시 버퍼로서 버퍼 0(102), 버퍼 1(104) 두 개를 사용한다. 왜냐하면, 버퍼 하나에서 데이터를 FIFO 버퍼(106)로 데이터를 옮기는 동안 다음 데이터를 받을 버퍼가 필요하기 때문이다.The input unit 100 is a device that receives data from an external SoC (not shown), performs decoding to verify the validity of the received data, and transmits the received data to a temporary buffer. In FIG. 1, two buffers 0 102 and 1 buffer 104 are used as temporary buffers. This is because a buffer is needed to receive the next data while moving data from one buffer to the FIFO buffer 106.

즉, 버퍼 0(102)에서 FIFO 버퍼(106)로 데이터를 옮기는 동안 버퍼 1(104)에서 다음 데이터를 입력부(100)로부터 수신받는다. 만일 버퍼 1(104)에서 데이터를 모두 수신하면, 버퍼 1(104)에서 FIFO 버퍼(106)로 데이터를 옮기고 버퍼 0(102)으로 새로운 데이터를 수신받는다.(Double Buffering) 상기 도 1은 버퍼 1(104)이 입력부(100)로부터 데이터를 수신받고, 버퍼 0(102)이 FIFO 버퍼(106)로 수신된 데이 터를 송신하는 과정을 도시하였다. 이때, 입력부(100)는 1슬롯 동안 수신된 데이터에 대한 CRC 체크를 수생한 후 오류가 없다면, FIFO 버퍼(106)로 하여금 버퍼 0(102)에 저장된 데이터를 DMA 처리부(108)로 전송하게 제어한다. DMA 처리부(108)는 FIFO 버퍼(106)로부터 수신된 데이터를 시스템 메모리(110)로 전송한다.That is, while transferring data from buffer 0 (102) to FIFO buffer (106), buffer 1 (104) receives the next data from input unit (100). If all data is received in buffer 1 104, data is transferred from buffer 1 104 to FIFO buffer 106 and new data is received in buffer 0 102. (Double Buffering) FIG. A process in which 104 receives data from the input unit 100 and buffer 0 102 transmits the received data to the FIFO buffer 106 is illustrated. At this time, the input unit 100 controls the FIFO buffer 106 to transmit the data stored in the buffer 0 102 to the DMA processing unit 108 if there is no error after performing a CRC check on the data received during one slot. do. The DMA processor 108 transmits the data received from the FIFO buffer 106 to the system memory 110.

시스템 메모리(110)은 상기 DMA 처리부(108)로부터 수신된 데이터를 저장하며, 도시되지 않은 중앙처리 장치가 소정의 동작을 위해 데이터를 리드/라이트하는 동작을 하게된다.The system memory 110 stores data received from the DMA processing unit 108, and a central processing unit (not shown) reads and writes data for a predetermined operation.

도 2는 종래의 주변 장치에서 외부로부터 수신된 데이터를 FIFO 버퍼를 사용하지 않고 DMA 처리부를 통해 시스템 메모리로 전송하는 과정을 설명하기 위한 블록 구성도이다.FIG. 2 is a block diagram illustrating a process of transferring data received from the outside to a system memory through a DMA processor without using a FIFO buffer in a conventional peripheral device.

상기 도 2의 구성은 상기 도 1에 비해서 FIFO 버퍼만 생략되었을 뿐 나머지 구성은 동일함으로 상세한 설명은 생략하기로 한다.2, only the FIFO buffer is omitted in comparison with FIG. 1, and the rest of the configuration is the same.

상기 도 1에서와 같이 입력부(100)가 CRC 체크 결과를 FIFO 버퍼(106)와 DMA 처리부(108)로 동시에 전송하고, 버퍼 0(102) 또는 버퍼 1(104)로 데이터를 전송할 시에는 예기치 못한 코너 케이스가 발생할 수 있다.As shown in FIG. 1, when the input unit 100 simultaneously transmits the CRC check result to the FIFO buffer 106 and the DMA processing unit 108, and transmits data to the buffer 0 102 or the buffer 1 104, the input unit 100 is unexpected. Corner cases may occur.

상기 도 1 내지 상기 도 2의 슬롯(Slot)은 CRC 체크를 하기 위한 데이터의 특정한 크기를 의미하며, 상기 도 1에서는 3슬롯, 도 2에서는 2슬롯만큼의 메모리가 필요하다. 이는 DMA 처리부(108)의 속도와 상관없이 항상 필요한 메모리의 양이다.The slots of FIGS. 1 and 2 refer to a specific size of data for CRC checking. In FIG. 1, 3 slots and 2 slots of memory are required. This is always the amount of memory needed regardless of the speed of the DMA processing section 108.

상기 도 2에서는 FIFO 버퍼를 사용하지 않음으로인하여 데이터 입출력 부분 을 분리하지 못함으로 인해, 입력부(100)와 버퍼(102, 104), 버퍼(102, 104)와 DMA 처리부(108)간의 인터액션이 많아지게 된다.In FIG. 2, since the data input / output part cannot be separated because the FIFO buffer is not used, the interaction between the input unit 100, the buffers 102 and 104, the buffers 102 and 104, and the DMA processing unit 108 is large. You lose.

또한, 상기 도 1 및 2에서와 같이 종래 기술에 따르면, 1슬롯의 데이터를 전송하기 위해 도 1에서는 3슬롯의 메모리가, 도 2에서는 2슬롯의 메모리가 각각 필요하게 되므로 인해 메모리 사이즈가 커지게 된다.In addition, according to the related art, as shown in FIGS. 1 and 2, in order to transmit data of one slot, a memory of 3 slots is required in FIG. 1 and a memory of 2 slots in FIG. 2, respectively. do.

메모리 사이즈가 커지게 되면, SoC 칩 사이즈도 커지게 되며 그에 따라 소비하게 되는 파워가 증가하고, 칩의 양산 율이 나빠지게 되는 단점이 있다.As the memory size increases, the SoC chip size also increases, resulting in increased power consumption and worsening of the chip production rate.

본 발명은 시스템 온 칩 버스 시스템에서 입력부와 DMA 처리부간에 언두 푸쉬 FIFO 버퍼를 사용하여 데이터를 전송하기 위한 시스템 및 방법을 제공한다. The present invention provides a system and method for transferring data using an undo push FIFO buffer between an input and a DMA processor in a system on chip bus system.

본 발명에 따른 시스템 온 칩 시스템에서 데이터를 시스테 메모리로 전송하기 위한 시스템은, 상기 시스템 메모리로 전송할 데이터를 N(N은 자연수)개의 서브 데이터들로 분할하고, 상기 N개의 서브 데이터들과 상기 데이터 크기인 N이 정의된 헤더를 생성하고, 상기 헤더를 먼저 FIFO(First Input First Output) 버퍼 유닛으로 푸쉬한 뒤, 상기 서브 데이터들에 대해 CRC(Cycllic Redundancy Check) 체크 여부에 따라 N번째 서브 데이터를 전송할지 여부를 결정하는 입력부와, 상기 입력부로부터 상기 헤더와 상기 서브 데이터들을 수신할 시 FIFO 크기를 측정하여 DMA(Direct Memory Access) 처리부로 전송하고, 상기 입력부의 CRC 체크 여부에 따라 푸쉬 동작 취소 여부를 검사하는 FIFO 버퍼 유닛과, 상기 FIFO 버퍼 유닛으로부 터 헤더를 팝하여, 상기 데이터의 크기를 검사하고, 상기 데이터의 크기만큼 상기 FIFO 크기가 카운트되면, 상기 FIFO 버퍼 유닛에 수신된 서브 데이터들을 팝하는 DMA 처리부를 포함한다.In a system on a chip system according to an embodiment of the present invention, a system for transmitting data to a cyste memory divides data to be transmitted to the system memory into N sub-data (N is a natural number), and the N sub data and the A header having a data size N defined is generated, and the header is first pushed into a first input first output (FIFO) buffer unit, and then the Nth sub data according to whether a Cyclic Redundancy Check (CRC) is checked for the sub data. An input unit for determining whether to transmit the data, a FIFO size when the header and the sub data are received from the input unit, and transmits the measured FIFO to a direct memory access (DMA) processor, and cancels a push operation according to whether the input unit has a CRC check. Pops a header from the FIFO buffer unit, and checks the size of the data; When the FIFO size of the count by the size of the emitter, and a DMA processor for pop the sub-data received by the FIFO buffer unit.

본 발명에 따른 시스템 온 칩 시스템에서 외부 장치로부터 수신된 신호를 시스템 메모리로 전송하기 위한 방법은 입력부가 상기 신호를 디코딩하여 생성된 데이터를 N(N은 자연수)개의 서브 데이터들로 분할하고, 상기 N개의 서브 데이터와 상기 데이터의 크기 N이 정의된 헤더를 FIFO(First Input First Output) 버퍼 유닛으로 전송하는 과정과, 상기 입력부는 N번째 데이터를 푸쉬하기 전에 상기 N개의 데이터들에 대해 CRC 체크를 수행하여 상기 생성된 데이터들에 대해 오류를 검사하고, 검사 결과에 따라 푸쉬 동작 취소할지 여부를 결정하는 과정과, 상기 FIFO 버퍼 유닛이 상기 입력부로부터 상기 헤더와 상기 서브 데이터들이 푸쉬 될 때 마다 카운터를 증가시키고, 상기 증가된 카운터를 DMA(Direct Memory Access) 처리부로 전송하는 과정과, 상기 DMA 처리부는 상기 헤더를 팝하여 상기 헤더에 정의된 상기 N 개의 서브 데이터가 상기 FIFO 버퍼 유닛에 푸쉬될 때 까지 대기하는 과정과, 상기 DMA 처리부는 상기 FIFO 버퍼 유닛에 상기 N 개의 서브 데이터들이 푸쉬되면, 상기 FIFO 버퍼 유닛으로부터 상기 N개의 서브 데이터들을 팝하는 과정을 포함한다.In a system on a chip system according to the present invention for transmitting a signal received from an external device to the system memory, the input unit decodes the data generated by decoding the signal into N (N is a natural number) sub-data, Transmitting N sub-data and a header having a size N defined therein to a first input first output (FIFO) buffer unit, and the input unit performs a CRC check on the N data before pushing the N-th data. Performing an error check on the generated data, determining whether to cancel a push operation according to a test result, and a counter every time the FIFO buffer unit is pushed from the input by the header and the sub data. Incrementing and transmitting the incremented counter to a direct memory access (DMA) processor; Popping and waiting for the N sub data defined in the header to be pushed to the FIFO buffer unit, and if the N sub data is pushed to the FIFO buffer unit, the FIFO buffer unit Popping the N sub-datas from the.

이하 본 발명의 실시 예를 첨부한 도면을 참조하여 상세히 설명하기로 하겠 다. 도면들 중 동일한 구성들은 가능한 한 어느 곳에서든지 동일한 부호들을 나타내고 있음을 유의해야 한다. 하기에서 구체적인 특정사항들이 나타나고 있는데, 이는 본 발명의 보다 전반적인 이해를 돕기 위해 제공된 것이다. 그리고 본 발명을 설명함에 있어, 관련된 공지 기능 혹은 구성에 대한 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings. It should be noted that the same components in the figures represent the same numerals wherever possible. Specific details are set forth below, which are provided to aid a more general understanding of the present invention. In describing the present invention, when it is determined that description of related known functions or configurations may unnecessarily obscure the gist of the present invention, the detailed description thereof will be omitted.

도 3은 본 발명의 실시 예에 따른 주변 장치(Peripheral)내의 입력부(300)가 FIFO 버퍼 유닛(302)을 사용하여 DMA 처리부(304)로 데이터를 전송하기 위한 블록구성도이다.3 is a block diagram of an input unit 300 in a peripheral device according to an embodiment of the present invention to transmit data to the DMA processing unit 304 using the FIFO buffer unit 302.

본 발명은 입력부(300)가 헤더(Header)(300b)를 사용하여 도시되지 않은 SoC 외부로부터 수신된 1슬롯의 데이터가 유효한지 여부를 FIFO 버퍼 유닛(302)과 DMA 처리부(304)로 알려준다. 다시말하면, 입력부(300)가 소정의 제어 신호(Signal)를 사용하여 상기 수신된 1슬롯의 데이터에 대한 CRC 체크 결과를 FIFO 버퍼 유닛(302)과 DMA 처리부(304)로 알려주는데, CRC 체크 결과가 '양호(Good)'이면, DMA 처리부(304)를 구동시켜 시스템 메모리(110)로 FIFO 버퍼 유닛(302)에 수신된 데이터를 팝(Pop)하여 전송하게 제어한다. 반면, CRC 체크 결과가 '불량(bad)'이면, 입력부(300)는 FIFO 버퍼 유닛(302)로 하여금 푸쉬 동작 취소(Undo Push)를 하도록 제어한다. According to the present invention, the input unit 300 informs the FIFO buffer unit 302 and the DMA processing unit 304 whether the data of one slot received from the outside of the SoC not shown using the header 300b is valid. In other words, the input unit 300 informs the FIFO buffer unit 302 and the DMA processing unit 304 of the CRC check result of the received one slot data by using a predetermined control signal (Signal). If is 'Good', the DMA processing unit 304 is driven to control to pop and transmit the data received to the FIFO buffer unit 302 to the system memory 110. On the other hand, if the CRC check result is 'bad', the input unit 300 controls the FIFO buffer unit 302 to undo the push operation (Undo Push).

FIFO 버퍼 유닛(302)은 입력부(300)로부터 푸쉬 동작 취소(Undo Push)신호를 수신받으면, 입력부(300)로부터 FIFO 버퍼(302a)에 수신된 데이터를 삭제한다. 그리고 DMA 처리부(304)는 FIFO 버퍼 유닛(302)로부터 푸쉬 동작 취소(Undo Push)신 호를 수신하면, 아이들 상태로 천이한다.When the FIFO buffer unit 302 receives the push operation undo signal from the input unit 300, the FIFO buffer unit 302 deletes the data received in the FIFO buffer 302a from the input unit 300. When the DMA processing unit 304 receives the push operation undo signal from the FIFO buffer unit 302, the DMA processing unit 304 transitions to the idle state.

헤더(300b)에는 앞으로 입력부(300)가 전송할 데이터(300d)에 관련된 정보가 정의되어 있으며, 상기 데이터에 관련된 정보 중 대표적으로 전송할 데이터의 크기가 정의되어있다. 예를 들어 앞으로 전송할 데이터가 10바이트(Byte)라면, 입력부(300)는 10을 의미하는 정보를 헤더(300b)에 설정하여 FIFO 버퍼(302a)로 푸쉬한다. 헤더(300b)의 단위는 디코더(300a)의 종류와 FIFO 버퍼(302a)의 크기에 따라 비트, 바이트, 워드 등이 사용될 수 있다. 본 발명의 실시 예에서는 바이트 단위를 사용하기로 한다. DMA 처리부(304)는 FIFO 버퍼(302)로부터 헤더(300b)를 팝(Pop)하면, 헤더(300b)에 저장된 데이터의 크기 만큼의 데이터가 FIFO 버퍼(302a)에 수신될 때 까지 대기한다.In the header 300b, information related to the data 300d to be transmitted by the input unit 300 is defined, and the size of data to be transmitted is typically defined among the information related to the data. For example, if data to be transmitted in the future is 10 bytes, the input unit 300 sets information indicating 10 to the header 300b and pushes the information to the FIFO buffer 302a. The unit of the header 300b may be a bit, a byte, a word, or the like depending on the type of the decoder 300a and the size of the FIFO buffer 302a. In the embodiment of the present invention, a byte unit is used. When the DMA processing unit 304 pops the header 300b from the FIFO buffer 302, the DMA processing unit 304 waits until data corresponding to the size of the data stored in the header 300b is received in the FIFO buffer 302a.

본 발명의 실시 예에서 디코더(300a)가 생성한 한 슬롯의 데이터를 FIFO 버퍼 유닛(302)로 순차적으로 전송하기 위해 바이트 단위로 조각된 각각의 단위들을 서브(Sub) 데이터라 칭하기로 한다.In the embodiment of the present invention, each of the units sliced in byte units to be sequentially transmitted to the FIFO buffer unit 302, the data of one slot generated by the decoder 300a will be referred to as sub data.

예컨대, 전송할 데이터가 10바이트이고, 헤더(300b)의 단위가 바이트(Byte)라면, 디코더(300a)는 10개의 서브 데이터를 FIFO 버퍼(302)로 전송한다.For example, if the data to be transmitted is 10 bytes and the unit of the header 300b is a byte, the decoder 300a transmits 10 sub data to the FIFO buffer 302.

입력부(300)는 도시되지 않은 SoC 외부로부터 수신된 신호를 디코딩하여 생성된 데이터에 대한 CRC 체크결과가 유효하다고 판단되면 마지막 서브 데이터를 FIFO 버퍼(302a)로 푸쉬하여 DMA 처리부(304)를 구동시키기 위한 신호를 발생한다. 그러나 CRC 체크 결과가 유효하지 않다면, 지금까지 푸쉬한 서브 데이터들을 동작 취소(Undo)하기 위한 신호를 FIFO 버퍼 유닛(302)로 전송한다. 이때 FIFO 버퍼 유 닛(302)은 DMA 처리부(304)에도 푸쉬 동작 취소(Undo Push)을 신호로 알려준다.If the input unit 300 determines that the CRC check result of the data generated by decoding a signal received from an external SoC (not shown) is valid, the input unit 300 pushes the last sub data into the FIFO buffer 302a to drive the DMA processing unit 304. To generate a signal. However, if the CRC check result is not valid, a signal for undoing the pushed sub data so far is transmitted to the FIFO buffer unit 302. At this time, the FIFO buffer unit 302 notifies the DMA processing unit 304 of the push operation cancellation (Undo Push) as a signal.

만약 헤더를 사용하지 않을 경우 DMA 처리부가 한 슬롯의 데이터를 완전히 전송시켰다는 가정 하에 다음 슬롯의 데이터를 전송할 수 있다. DMA 처리부(304)가 시스템 메모리(110)로 데이터를 송신하는 동작 중이 아니라면 입력부(300)로부터 전송 신호를 수신하여 동작을 시작하면 되지만 이미 전송 동작이 시작된 상황에서는 입력부(300)로부터 수신된 신호를 별도로 저장해 두지 않으면 안된다. 또한 입력부(300)로부터 DMA 처리부(304)가 직접 신호를 수신하고, 데이터는 FIFO 버퍼 유닛(302)을 통해서 수신하는 경우 예기치 못한 코너 케이스가 발생할 수 있다. 따라서 본 발명의 실시 예에서는 전송할 데이터의 크기가 정의된 헤더를 사용하기로 하며, FIFO 버퍼 유닛(302)을 기준으로 데이터를 푸쉬하는 입력부(300)와 데이터를 팝하는 DMA 처리부(304)의 동작을 구분하여 코너 케이스의 발생을 줄인다.If the header is not used, the DMA processor may transmit data of the next slot under the assumption that the data of one slot is completely transmitted. If the DMA processing unit 304 is not in the process of transmitting data to the system memory 110, the operation may be performed by receiving a transmission signal from the input unit 300, but in a situation where the transmission operation has already begun, the signal received from the input unit 300 is received. You must save it separately. In addition, when the DMA processing unit 304 directly receives a signal from the input unit 300 and receives data through the FIFO buffer unit 302, an unexpected corner case may occur. Therefore, in the embodiment of the present invention, a header having a defined size of data to be transmitted is used, and an operation of the input unit 300 for pushing data on the basis of the FIFO buffer unit 302 and the DMA processing unit 304 for popping data To reduce the occurrence of corner cases.

그럼 이하에서 상기 도 3의 블록 구성에 대해 상세히 설명하기로 한다.Hereinafter, the block configuration of FIG. 3 will be described in detail.

입력부(300)는 디코더(300a), 먹스(300c), CRC 처리부(300e)로 구성되어 있다. 디코더(300a)는 도시되지 않은 SoC 외부로부터 입력된 신호를 디코딩하여 시스템 메모리(110)로 전송할 데이터(300d)와 상기 데이터의 크기가 정의된 헤더(300b)를 생성한다.The input unit 300 is composed of a decoder 300a, a mux 300c, and a CRC processing unit 300e. The decoder 300a decodes a signal input from an external SoC, not shown, to generate data 300d to be transmitted to the system memory 110 and a header 300b in which the size of the data is defined.

상기 도 3에서는 하나의 데이터(300d)만이 도시되어 있지만, 실제로는 N개의 데이터들이 먹스(300c)를 통해 FIFO 버퍼 유닛(302)로 푸쉬된다.Although only one data 300d is shown in FIG. 3, N data are actually pushed to the FIFO buffer unit 302 through the mux 300c.

그리고, 디코더(300a)는 생성한 데이터(300d)를 언두 푸쉬 FIFO 버퍼(302)로 푸쉬하기 전에 먼저 헤더(Header)(300b)를 먹스(300c)로 푸쉬한다. 헤더(300b)에는 앞으로 FIFO 버퍼(302)가 수신하게될 데이터의 크기 즉, N이 정의되어 있다.The decoder 300a first pushes the header 300b to the mux 300c before pushing the generated data 300d to the undo push FIFO buffer 302. The header 300b defines a size of data, ie, N, that the FIFO buffer 302 will receive in the future.

먹스(300c)는 디코더(300a)로부터 소정의 제어 신호를 수신하여 헤더(300b) 또는 서브 데이터(300d)를 FIFO 버퍼 유닛(302)의 FIFO 버퍼(302a)로 전송한다. 서브 데이터(300d)를 전송하기 전에 헤더(300b)를 FIFO 버퍼(302a)로 전송하게 제어하는 제어 신호를 디코더(300a)로부터 수신한다. The mux 300c receives a predetermined control signal from the decoder 300a and transmits the header 300b or the sub data 300d to the FIFO buffer 302a of the FIFO buffer unit 302. Before transmitting the sub data 300d, a control signal for controlling the header 300b to be transmitted to the FIFO buffer 302a is received from the decoder 300a.

CRC 처리부(300e)는 상기 디코더(300a)에 의해 디코딩되어 생성된 서브 데이터들에 대해 CRC 체크를 수행하여 디코딩된 데이터가 유효한지 여부를 판단하는 역할을 수행한다. 이때, CRC 처리부(300e)는 디코더(300a)에서 생성된 서브 데이터에 대해 계속 CRC를 계산한다. CRC 계산은 서브 데이터를 누적하는 방식으로 계산한다. 즉, 서브 데이터가 생길 때마다 이전 CRC 결과와 새로운 서브 데이터를 가지고 CRC 값을 다시 계산한다. 따라서 CRC 계산을 위해 서브 데이터를 보관할 필요는 없으며 CRC 값 자체에 이미 이전 서브 데이터 들의 값이 반영되어 있는 것이다. 그리고 디코더(300a)에서 마지막 서브 데이터 즉, N번째 서브 데이터가 생성되면, CRC 체크 결과를 판단한다.The CRC processor 300e performs a CRC check on the sub data decoded and generated by the decoder 300a to determine whether the decoded data is valid. At this time, the CRC processing unit 300e continues to calculate the CRC for the sub data generated by the decoder 300a. CRC calculation is performed by accumulating sub data. That is, each time the sub data is generated, the CRC value is recalculated using the previous CRC result and the new sub data. Therefore, it is not necessary to store sub data for CRC calculation, and the values of previous sub data are already reflected in the CRC value itself. When the last sub data, that is, the N th sub data, is generated in the decoder 300a, the CRC check result is determined.

그리고, CRC 체크를 수행하여 CRC 체크 결과가 "양호(Good)"이면, 마지막 서브 데이터 즉, N 번째 서브 데이터를 FIFO 버퍼 유닛(302)으로 푸쉬하고, "불량(Bad)"이면, FIFO 버퍼 유닛(302)의 FIFO 버퍼 제어부(302b)로 푸쉬 동작 취소(Undo push)신호를 전송하여 FIFO 버퍼(302a)에 저장된 서브 데이터들을 후술할 언두_카운트(Undo_cnt) 신호로 수신된 서브 데이터의 크기만큼 삭제하게 제어한다. If the CRC check result is "good" and the CRC check result is "good", the last sub data, that is, the N-th sub data, is pushed to the FIFO buffer unit 302, and if it is "bad", the FIFO buffer unit A push operation cancel signal is transmitted to the FIFO buffer control unit 302b of 302 to delete the sub data stored in the FIFO buffer 302a by the size of the sub data received by the undo_cnt signal, which will be described later. Control.

또한, 디코더(300a)는 먹스(300c)로 제어 신호를 전송하여, 먹스(300c)로 하 여금 헤더(300b)와 서브 데이터(300d)중 어느 것을 언두 푸쉬 FIFO 버퍼(302)로 출력할지를 선택하게 한다. CRC 처리부(300e)는 디코더(300a)로부터 먹스(300c)로 마지막 데이터까지 출력되면 CRC를 수행하여 CRC 결과를 알 수 있다. 이때 CRC 결과가 '양호(Good)'하면 마지막 서브 데이터를 FIFO 버퍼 유닛(302)으로 푸쉬(Push)한다. 그전까지 디코더(300a)는 N-1 번째 서브 데이터까지만을 출력한 상태다. CRC 체크가 '불량(Bad)'이면 푸쉬된 데이터의 크기만큼 서브 데이터들을 FIFO 버퍼(302a)에서 삭제시키기 위한 언두 명령을 송신 한다.In addition, the decoder 300a transmits a control signal to the mux 300c so that the mux 300c selects which of the header 300b and the sub data 300d is output to the undo push FIFO buffer 302. do. When the CRC processing unit 300e outputs the last data from the decoder 300a to the mux 300c, the CRC processing unit 300e may perform the CRC to know the CRC result. At this time, if the CRC result is 'good', the last sub data is pushed to the FIFO buffer unit 302. Until then, the decoder 300a has output only up to the N-1 < th > sub data. If the CRC check is 'bad', an undo command for deleting sub data in the FIFO buffer 302a by the size of the pushed data is transmitted.

FIFO 버퍼 유닛(302)은 일반적인 FIFO 버퍼와 같은 푸쉬와 팝 동작을 수행하는 FIFO 버퍼(302a)와 푸쉬 동작 취소(Undo Push)신호를 수신하면 FIFO 버퍼(302a)에서 삭제 요청된 크기 즉, N 만큼 서브 데이터들을 삭제하게 제어하고, DMA 처리부(304)로도 푸쉬 동작 취소 신호를 전송하는 FIFO 버퍼 제어부(302b)로 구성된다.The FIFO buffer unit 302 receives the FIFO buffer 302a which performs the same push and pop operation as the general FIFO buffer and the Undo Push signal. The FIFO buffer control unit 302b controls the deletion of the sub data and also transmits a push operation cancellation signal to the DMA processing unit 304.

FIFO 버퍼 제어부(302b)는 입력부(300)로부터 데이터 크기인 N 보다 FIFO 버퍼(302a)에 저장된 데이터 크기 즉, FIFO 크기가 작으면 헤더를 DMA 처리부(304)가 이미 읽어(Pop)가서 대기 상태로 천이되었음을 의미한다. 따라서, DMA 처리부(304)로 푸쉬 동작을 취소 할 것을 알려준다. 만약 FIFO 버퍼(302a)에 저장된 데이터 크기 즉, FIFO 크기가 상기 헤더에 정의된 데이터 크기보다 많으면 상기 데이터 크기 즉, N-1 만큼 서브 데이터들을 FIFO 버퍼(302a)에서 삭제한다. FIFO 버퍼 유닛(302)에서 푸쉬 동작을 취소 과정은 단지 FIFO 버퍼(302a)의 쓰기 포인터(Write Pointer)의 위치만 변경해 주면 된다.If the data size stored in the FIFO buffer 302a is smaller than the data size N, that is, the FIFO size is smaller than the data size N, the FIFO buffer controller 302b has already read (Pop) the header into a standby state. It means that the transition. Therefore, the DMA processing unit 304 is informed to cancel the push operation. If the data size stored in the FIFO buffer 302a, that is, the FIFO size is larger than the data size defined in the header, the sub data are deleted from the FIFO buffer 302a by the data size, N-1. The cancellation process of the push operation in the FIFO buffer unit 302 only needs to change the position of a write pointer of the FIFO buffer 302a.

또한, FIFO 버퍼 제어부(302b)는 FIFO 버퍼(302a)로 헤더 및 서브 데이터가 수신되면, 그 사실을 DMA 처리부(304)로 알려줌으로써, DMA 처리부(304)의 동작 상태를 변화시킨다. FIFO 버퍼 제어부(302b)는 현재 FIFO 버퍼(302a)에 헤더 및 서브 데이터가 어느정도 수신되었는지에 대한 크기정보를 카운트하여 DMA 처리부(304)로 전송함으로서, DMA 처리부(304)는 본 발명의 실시 예에 따른 동작을 수행할 수 있게 된다.In addition, when the header and sub data are received by the FIFO buffer 302a, the FIFO buffer control unit 302b notifies the DMA processing unit 304 of the fact, thereby changing the operation state of the DMA processing unit 304. The FIFO buffer control unit 302b counts the size information on how much header and sub data are received in the current FIFO buffer 302a, and transmits the size information to the DMA processing unit 304, so that the DMA processing unit 304 according to the embodiment of the present invention. It is possible to perform the operation according to.

FIFO 버퍼 제어부(302b)는 내부의 일종의 레지스터인 카운터에 FIFO 버퍼(302a)에 저장된 헤더 및 서브 데이터 크기를 카운트한 결과를 저장한다. 본 발명에서는 이와 같이 카운터 레지스터에 FIFO 크기를 카운터한 결과를 설정하는 것을 카운터 증가 또는 카운트 감소라는 용어로 사용하기로 하겠다. The FIFO buffer control unit 302b stores the result of counting the header and sub data sizes stored in the FIFO buffer 302a in a counter, which is a kind of internal register. In the present invention, setting the result of counting the FIFO size in the counter register as described above will be used as a term of increasing or decreasing count.

또한, FIFO 버퍼 제어부(302b)는 입력부(300)로부터 수신된 서브 데이터의 양을 계산한다. 입력부(300)로부터 데이터가 수신되면, FIFO 버퍼 제어부(302b)는 상기 레지스터인 카운터를 증가시키고, 증가 여부를 후술할 피포 카운트(fifo_cnt)(506)를 사용하여 DMA 처리부(304)로 전송한다. 그리고 DMA 처리부(304)가 상기 FIFO 버퍼(302a)의 서브 데이터 또는 헤더를 팝해가면, FIFO 버퍼 제어부(302b)는 상기 카운터를 상기 DMA 처리부(304)가 팝한 크기만큼 감소시킨다. 즉, FIFO 버퍼 제어부(302b)는 상기 FIFO 버퍼(302a)에 서브 데이터 또는 헤더가 들어올 때마다 상기 카운터를 증가시키고, DMA 처리부(304)가 상기 FIFO 버퍼(302a)에서 데이터 또는 헤더를 팝할 때마다 상기 카운터를 감소시킨다. 그리고 FIFO 버퍼 제어부(302b)는 상기 카운터가 카운트한 FIFO 크기를 DMA 처리부(304)로 전송한다.In addition, the FIFO buffer control unit 302b calculates the amount of sub data received from the input unit 300. When data is received from the input unit 300, the FIFO buffer control unit 302b increments the counter, which is the register, and transmits the count to the DMA processing unit 304 using the fifo_cnt 506 which will be described later. When the DMA processing unit 304 pops the sub data or header of the FIFO buffer 302a, the FIFO buffer control unit 302b decreases the counter by the size of the popping of the DMA processing unit 304. That is, the FIFO buffer control unit 302b increments the counter each time a sub data or header enters the FIFO buffer 302a, and whenever the DMA processing unit 304 pops data or headers from the FIFO buffer 302a. Decreases the counter. The FIFO buffer control unit 302b transmits the size of the FIFO counted by the counter to the DMA processing unit 304.

DMA 처리부(304)의 동작 상태 변화는 하기의 도 4를 참조하여 설명하기로 한 다.The operation state change of the DMA processing unit 304 will be described with reference to FIG. 4 below.

이하 설명의 편의를 위해 FIFO 버퍼(302a)가 비워있는 상태 즉, FIFO 크기가 "0"인 상태를 가정하여 설명하기로 한다.For convenience of explanation, it will be described on the assumption that the FIFO buffer 302a is empty, that is, the FIFO size is "0".

DMA 처리부(304)는 FIFO 버퍼 유닛(302)의 FIFO 버퍼 제어부(302b)로부터 FIFO 버퍼(302a)의 크기가 "0"보다 크다 즉, "1"이상이라는 신호를 수신받으면, 아이들 상태에서 헤더 상태로 천이가 되어 FIFO 버퍼(302a)로부터 헤더를 팝(Pop)한다. 그리고, FIFO 버퍼 제어부(302b)는 현재 FIFO 버퍼(302a)에 서브 데이터가 수신될 때마다 FIFO 크기를 DMA 처리부(304)로 전송하고, DMA 처리부(304)는 상기 FIFO 버퍼 제어부(304b)로부터 수신한 상기 FIFO 크기와 상기 헤더에 정의된 데이터 크기를 비교한다.When the DMA processing unit 304 receives a signal from the FIFO buffer control unit 302b of the FIFO buffer unit 302 that the size of the FIFO buffer 302a is greater than " 0 " Transitioning to the pops the header from the FIFO buffer 302a. The FIFO buffer control unit 302b transmits the FIFO size to the DMA processing unit 304 whenever the sub data is received in the current FIFO buffer 302a, and the DMA processing unit 304 receives the data from the FIFO buffer control unit 304b. Compare the FIFO size with the data size defined in the header.

DMA 처리부(304)는 상기 데이터 크기보다 상기 FIFO 크기가 같거나 크다면, 전송 상태로 천이하여 FIFO 버퍼(302a)로부터 미리 정해진 소정 크기만큼을 팝하여 시스템 메모리(110)로 전송한다. 이때 DMA 처리부(304)는 예컨대, AHB(Advanced High-Performance Bus)를 이용하여 상기 시스템 메모리(110)로 데이터를 전송한다. 반면, FIFO 버퍼 제어부(302b)로부터 푸쉬 동작 취소(Undo Push)신호를 수신하면, 다시 아이들(Idle) 상태로 천이한다.If the FIFO size is equal to or larger than the data size, the DMA processing unit 304 transitions to a transmission state and pops a predetermined predetermined size from the FIFO buffer 302a to transmit it to the system memory 110. In this case, the DMA processing unit 304 transmits data to the system memory 110 using, for example, an Advanced High-Performance Bus (AHB). On the other hand, upon receiving a push operation cancellation (Undo Push) signal from the FIFO buffer control unit 302b, the state transitions back to the idle state.

도 4는 본 발명의 실시 예에 따른 DMA 처리부(304)의 상태 천이도이다.4 is a state transition diagram of the DMA processing unit 304 according to the embodiment of the present invention.

이하 설명의 편의를 위해 FIFO 버퍼(302a)가 비워있는 상태 즉, FIFO 크기가 "0"인 상태를 가정하여 설명하기로 한다.For convenience of explanation, it will be described on the assumption that the FIFO buffer 302a is empty, that is, the FIFO size is "0".

DMA 처리부(304)의 상태 천이도는 아이들 상태(400)에서 시작한다. DMA 처리 부(304)는 아이들 상태(400)에서 FIFO 버퍼(302a)의 크기가 "0" 보다 크면, 헤더 상태(402)로 천이하여 헤더를 팝하고 대기(Wait)상태(404)로 천이한다. 아이들 상태(400)란, FIFO 버퍼(302a)가 비어있는 상태로서 FIFO 크기가 "0"일 때이다. FIFO 버퍼(302a)의 크기가 헤더에 명시된 크기와 같아지면 DMA 처리부(304)는 전송(Transfer) 상태(406)로 천이하여 데이터를 시스템 메모리(110)로 전송한다. 그러나 대기상태(404)에서 FIFO 버퍼 유닛(302)로부터 푸쉬 동작 취소(Undo-push) 신호가 수신되면, 다시 아이들 상태(400)로 천이한다. 반면, 전송 상태(406)에서 상기 헤더에 정의된 크기만큼 데이터를 전송했다면, 다시 아이들 상태(400)로 천이한다.The state transition diagram of the DMA processing unit 304 begins in the idle state 400. If the size of the FIFO buffer 302a is greater than " 0 " in the idle state 400, the DMA processing unit 304 transitions to the header state 402, pops the header, and transitions to the wait state 404. . The idle state 400 is when the FIFO buffer 302a is empty and the FIFO size is "0". When the size of the FIFO buffer 302a is equal to the size specified in the header, the DMA processing unit 304 transitions to the transfer state 406 to transfer data to the system memory 110. However, if a push operation cancel (Undo-push) signal is received from the FIFO buffer unit 302 in the standby state 404, the transition to the idle state 400 again. On the other hand, if data is transmitted by the size defined in the header in the transmission state 406, the transition to the idle state 400 again.

도 5는 본 발명의 실시 예에 따른 주변 장치(Peripheral)내의 입력부(300)가 FIFO 버퍼 유닛(302)을 사용하여 DMA 처리부(304)로 데이터를 전송하기 위한 신호 흐름을 도시한 블록 구성도이다.5 is a block diagram illustrating a signal flow for the input unit 300 in the peripheral device to transmit data to the DMA processing unit 304 using the FIFO buffer unit 302 according to an embodiment of the present invention. .

상기 도 5에서는 상술한 3가지 블록들간의 동작에 필요한 신호들을 도시하고 있다. 입력부(300)와 FIFO 버퍼 유닛(302) 사이에 필요한 신호들은 푸쉬_데이터(Push_data)(500), 푸쉬_이네이블(Push_en)(502), 푸쉬 동작 취소(Undo_Push)(504), 언두 카운트(Undo_cnt)(506) 이다.5 illustrates signals required for the operation between the three blocks described above. The signals required between the input unit 300 and the FIFO buffer unit 302 include push_data 500, push_en 502, push undo 504, undo count ( Undo_cnt) 506.

푸쉬_데이터(500)신호로는 실제로 FIFO 버퍼(302a)에 저장될 서브 데이터들이 전송된다. 푸쉬_데이터(500)의 비트 폭(Bit width) d는 FIFO 버퍼(302a)가 한번에 처리할 수 있는 데이터 크기를 의미하며 8, 16, 32 등이 사용될 수 있다. 즉, 비트 폭은 FIFO 버퍼(302a)가 한 번에 처리할 수 있는 양이며, 슬롯은 디코더(300a)가 한 번에 처리할 수 있는 양이다. FIFO 버퍼(302a)의 비트 폭은 8, 16, 32 등이 주로 사용되지만 슬롯은 512, 1024, 5120 등이 사용된다. 그래서 디코더(300a)에서는 디코딩한 데이터를 FIFO 버퍼(302a)가 한 번에 처리할 수 있는 양으로 나누어서 여러번에 걸쳐 전송한다.As the push_data 500 signal, sub data to be actually stored in the FIFO buffer 302a is transmitted. The bit width d of the push_data 500 denotes a data size that the FIFO buffer 302a can process at one time, and 8, 16, 32, and the like may be used. That is, the bit width is the amount that the FIFO buffer 302a can process at one time and the slot is the amount that the decoder 300a can process at one time. The bit width of the FIFO buffer 302a is mainly 8, 16, 32, etc., but the slot is 512, 1024, 5120, etc. are used. Therefore, the decoder 300a divides the decoded data into an amount that the FIFO buffer 302a can process at one time and transmits the data several times.

푸쉬_이네이블(502) 신호는 펄스 형태의 신호를 전송하며, 푸쉬_데이터(500)신호로 전송되는 서브 데이터들이 유효한지 FIFO 버퍼 유닛(302)에 알려주는 역할을 한다. FIFO 버퍼 유닛(302)은 상기 푸쉬 이네이블(502) 신호가 활성(active)일 때 푸쉬_데이터(500)신호로 전송되는 서브 데이터들을 FIFO 버퍼(302a)에 저장한다. 예를 들어 "1"이 활성으로 정의되어 있다면, 본 발명의 실시 예에 따른 시스템 온 칩 외부로부터 수신되는 신호를 시스템 메모리로 전송하기 위한 시스템을 positive logic 이라 칭하고, "1"일 때를 active high라 한다. 즉, 상기 active 라는 용어는 미리 활성으로 정의된 신호라는 의미를 내포한다. The push_enable 502 signal transmits a signal in the form of a pulse and informs the FIFO buffer unit 302 whether the sub data transmitted as the push_data 500 signal is valid. The FIFO buffer unit 302 stores sub data transmitted in the push_data 500 signal in the FIFO buffer 302a when the push enable 502 signal is active. For example, if "1" is defined as active, the system for transmitting a signal received from outside the system on chip to the system memory according to an embodiment of the present invention is called positive logic, and when "1" is active high It is called. In other words, the term active implies the signal previously defined as active.

푸쉬 동작 취소(Undo_Push)(504)신호는 펄스 형태의 신호로서 푸쉬 동작을 취소(Undo_push)할지 여부를 FIFO 버퍼 유닛(302)로 알려준다. 푸쉬 동작 취소(504)가 활성(active)일 때 푸쉬를 취소할 서브 데이터 크기는 언두 카운트(Undo_cnt)(506) 신호를 사용하여 FIFO 버퍼 유닛(302)으로 전송한다. 언두 카운트(506)의 비트 폭(Bit width)인 c 는 log(FIFO depth)이다. 언두 카운트(506)는 최대 FIFO depth 만큼을 2진수로 표현할 수 있어야 하기 때문에 log(FIFO depth)만큼의 비트 폭이 필요하다. The push operation undo (Undo_Push) signal 504 is a signal in the form of a pulse and informs the FIFO buffer unit 302 whether to cancel the push operation (Undo_push). When the push operation cancel 504 is active, the sub data size to cancel the push is transmitted to the FIFO buffer unit 302 using an undo count (Undo_cnt) 506 signal. The bit width c of the undo count 506 is log (FIFO depth). The undo count 506 requires a bit width as log (FIFO depth) because it must be able to represent the maximum FIFO depth in binary.

반면, FIFO 버퍼 유닛(302)과 DMA 처리부(304)간에 필요한 신호는 피포 카운트(fifo_cnt)(508), 팝 데이터(Pop_data)(510), 팝 이네이블(Pop_en)(512), 푸쉬 동작 취소(Undo_push)(514)가 있다.On the other hand, the signals required between the FIFO buffer unit 302 and the DMA processing unit 304 include the fifo count (fifo_cnt) 508, the pop data (Pop_data) 510, the pop enable (Pop_en) 512, and the push operation cancellation ( Undo_push) 514.

피포 카운트(508) 신호는 FIFO 버퍼(302a)의 FIFO 크기를 나타내며, 카운터 레지스터에 설정된 크기이다. FIFO 버퍼 제어부(302b)가 FIFO 버퍼(302a)에 저장된 서브 데이터 및 헤더의 양을 DMA 처리부(304)로 전송하는 신호이다. 피포 카운트(508) 신호의 비트 폭인 c 는 log(FIFO depth)이다.The signal count 508 represents the FIFO size of the FIFO buffer 302a and is the size set in the counter register. The FIFO buffer control unit 302b transmits the amount of sub data and headers stored in the FIFO buffer 302a to the DMA processing unit 304. The bit width c of the signal of the count signal 508 is log (FIFO depth).

팝_데이터(510)는 FIFO 버퍼(302a)로부터 데이터를 수신해오는 신호이다. 팝 이네이블(512) 신호가 활성(active)일 때 FIF 버퍼 제어부(302b)는 팝 데이터(510) 신호에 서브 데이터들을 로드(Load)한다. 푸쉬 동작 취소(514)신호는 FIFO 버퍼 제어부(302b)가 DMA 처리부(304)로 푸쉬 동작 취소 신호를 전송하기 위해 사용한다.Pop_data 510 is a signal for receiving data from FIFO buffer 302a. When the pop enable 512 signal is active, the FIF buffer controller 302b loads sub data into the pop data 510 signal. The push operation cancel signal 514 is used by the FIFO buffer control unit 302b to transmit a push operation cancel signal to the DMA processing unit 304.

도 6은 본 발명의 실시 예에 따른 입력부(300)의 CRC 처리부(300e)의 CRC 체크결과 입력부(300)에서 송신되는 데이터가 모두 양호할 때의 입력부(300), FIFO 버퍼 유닛(302), DMA 처리부(304)간의 동작 순서 및 데이터의 이동을 나타낸 도면이다.6 illustrates an input unit 300, a FIFO buffer unit 302 when all of the data transmitted from the CRC check result input unit 300 of the CRC processing unit 300e of the input unit 300 are satisfactory. The operation sequence and data movement between the DMA processing units 304 are shown.

입력부(300)와 FIFO 버퍼 유닛(302), DMA 처리부(304)는 하드웨어로서 동시(concurrent)에 동작하게 된다. 도 6에서 실선은 동작의 순서를 나타내며, 점선은 데이터의 이동을 나타낸다.The input unit 300, the FIFO buffer unit 302, and the DMA processing unit 304 operate concurrently as hardware. In FIG. 6, the solid line indicates the sequence of operations, and the dotted line indicates the movement of data.

입력부(300)는 600단계에서 도시되지 않은 SoC 외부로부터 신호를 수신하면, 상기 수신된 신호에 대해 디코딩을 수행하고, 헤더를 FIFO 버퍼 유닛(302)로 푸쉬한다. 그러면, 602단계에서 FIFO 버퍼 유닛(302)은 카운터를 증가시키고, 카운터가 카운트한 FIFO 크기를 DMA 처리부(304)로 전송한다. 604단계에서 DMA 처리부(304) 는 상기 헤더를 팝(pop)하여 앞으로 수신되어야할 데이터의 크기를 알 수 있다. 이와 동시에 FIFO 버퍼 유닛(302)은 DMA 처리부(304)가 상기 헤더를 팝하였기 때문에 606단계에서 상기 카운터를 감소시킨다.When the input unit 300 receives a signal from an external SoC not shown in step 600, the input unit 300 decodes the received signal, and pushes a header to the FIFO buffer unit 302. Then, in step 602, the FIFO buffer unit 302 increments the counter and transmits the FIFO size counted by the counter to the DMA processing unit 304. In step 604, the DMA processing unit 304 may pop the header to know the size of data to be received in the future. At the same time, the FIFO buffer unit 302 decrements the counter in step 606 because the DMA processing unit 304 has popped the header.

그리고, 608단계에서 입력부(300)는 서브 데이터들을 FIFO 버퍼 유닛(302)으로 순차적으로 푸쉬한다. 610단계에서 FIFO 버퍼 유닛(302)에 데이터가 입력부(302)로부터 푸쉬될 때마다 FIFO 버퍼 제어부(302b)는 상기 카운터를 카운트된 FIFO 크기로 설정하고, 다시 상기 카운터에 설정된 FIFO 크기를 상기 DMA 처리부(304)로 전달하여, 상기 헤더에 정의된 크기만큼의 데이터가 FIFO 버퍼 유닛(302)에 수신되었는지 여부를 알 수 있게 한다. 612단계에서 입력부(300)는 FIFO 버퍼 유닛(302)으로 전송할 데이터가 마지막 데이터라면, 614단계에서 상기 마지막 데이터를 푸쉬하기 전에 CRC 체크를 수행한다. 상기 614단계의 결과 상기 CRC 체크가 "양호"하다면, 616단계에서 상기 마지막 데이터를 FIFO 버퍼 유닛(302)으로 푸쉬한다.In operation 608, the input unit 300 sequentially pushes sub data into the FIFO buffer unit 302. Whenever data is pushed from the input unit 302 to the FIFO buffer unit 302 in step 610, the FIFO buffer control unit 302b sets the counter to the counted FIFO size and again sets the FIFO size set in the counter to the DMA processing unit. Passed to 304, the FIFO buffer unit 302 knows whether or not data of the size defined in the header has been received. If the data to be transmitted to the FIFO buffer unit 302 is the last data in step 612, the input unit 300 performs a CRC check before pushing the last data in step 614. If the CRC check is “good” as a result of step 614, the last data is pushed to the FIFO buffer unit 302 in step 616.

한편, 618단계에서 대기상태에 있던 DMA 처리부(304)는 620단계에서 상기 FIFO 카운터와 상기 헤더에 정의되어있던 데이터 크기가 같거나 큰지를 검사한다. 만일, 같거나 크다면, 622단계로 진행하여 시스템 메모리(110)로 상기 데이터들을 전송한다.In step 618, the DMA processing unit 304 in the standby state checks whether the data size defined in the FIFO counter and the header is the same or larger in step 620. If it is equal to or greater than S, it proceeds to step 622 to transfer the data to the system memory (110).

도 7은 본 발명의 실시 예에 따른 입력부(300)의 CRC 처리부(300e)의 CRC 체크 결과 디코더(300)로 수신된 신호가 불량(bad)일 때의 입력부(300), FIFO 버퍼 유닛(302), DMA 처리부(304)간의 동작 순서 및 데이터의 이동을 나타낸 도면이다.FIG. 7 illustrates an input unit 300 and a FIFO buffer unit 302 when a signal received by the CRC check unit 300e of the input unit 300 according to an embodiment of the present invention is bad. ) Is a diagram showing an operation sequence and data movement between the DMA processing units 304.

상기 도 7에서 설명의 편의를 위해 FIFO 버퍼(302a)가 비워있는 상태 즉, FIFO 크기가 "0"인 상태를 가정하여 설명하기로 한다.In FIG. 7, for convenience of description, it is assumed that the FIFO buffer 302a is empty, that is, a state in which the FIFO size is "0".

입력부(300)는 700단계에서 도시되지 않은 SoC 외부로부터 신호를 수신하면, 상기 수신된 신호에 대해 디코딩을 수행하고, 헤더를 FIFO 버퍼 유닛(302)으로 푸쉬한다. 그러면, 702단계에서 FIFO 버퍼 유닛(302)은 카운터를 증가시키고, 증가된 카운터에 설정된 FIFO 크기를 DMA 처리부(304)로 전송한다. 704단계에서 DMA 처리부(304)는 상기 헤더를 팝(pop)하여 앞으로 수신되어야할 데이터의 크기를 알 수 있다. 이와 동시에 FIFO 버퍼 유닛(302)은 DMA 처리부(304)가 상기 헤더를 팝하였기 때문에 706단계에서 상기 카운터를 감소시킨다.When the input unit 300 receives a signal from an external SoC not shown in step 700, the input unit 300 decodes the received signal and pushes a header to the FIFO buffer unit 302. Then, in step 702, the FIFO buffer unit 302 increments the counter and transmits the FIFO size set to the increased counter to the DMA processing unit 304. In step 704, the DMA processing unit 304 may pop the header to know the size of data to be received in the future. At the same time, the FIFO buffer unit 302 decrements the counter in step 706 because the DMA processing unit 304 has popped the header.

그리고, 708단계에서 입력부(300)는 데이터를 FIFO 버퍼 유닛(302)으로 푸쉬한다. 710단계에서 FIFO 버퍼 유닛(302)에 데이터가 푸쉬될 때마다 상기 카운터는 증가하고, 다시 상기 카운터에 설정된 FIFO 크기는 상기 DMA 처리부(304)로 전달되어, 상기 헤더에 정의된 크기 만큼의 데이터가 FIFO 버퍼 유닛(302)에 수신되었는지 여부를 알 수 있게 한다. 712단계에서 입력부(300)는 FIFO 버퍼 유닛(302)으로 전송할 서브 데이터가 마지막 서브 데이터라면, 714단계에서 상기 마지막 서브 데이터를 푸쉬하기 전에 CRC 체크를 수행한다. 상기 714단계의 결과 상기 CRC 체크가 "불량(bad)"이라면, 상기 마지막 서브 데이터를 푸쉬하지 않고, 716단계에서 FIFO 버퍼 유닛(302)으로 푸쉬 동작 취소(undo_push)(504)신호를 전송한다. 이때, 입력부(300)는 언두_카운트(undo_cnt)(506)신호도 같이 전송한다.In operation 708, the input unit 300 pushes data to the FIFO buffer unit 302. Each time data is pushed to the FIFO buffer unit 302 in step 710, the counter is incremented, and the FIFO size set in the counter is transferred to the DMA processor 304 so that the data corresponding to the size defined in the header is stored. It is possible to know whether the FIFO buffer unit 302 has been received. If the sub data to be transmitted to the FIFO buffer unit 302 is the last sub data in step 712, the input unit 300 performs a CRC check before pushing the last sub data in step 714. If the CRC check is "bad" as a result of step 714, the push operation undo_push 504 signal is transmitted to the FIFO buffer unit 302 without pushing the last sub data. In this case, the input unit 300 also transmits an undo_cnt 506 signal.

718단계에서 상기 푸쉬 동작 취소(undo_push)신호와 언두_카운트(506)신호를 수신한 FIFO 버퍼 유닛(302)은 상기 언두_카운트(506)신호로 전송된 푸쉬를 취소할 데이터 크기와 현재 FIFO 버퍼(302a) 크기가 설정된 카운터를 비교한다. 상기 718단계의 비교결과 상기 카운터에 설정도니 FIFO 크기가 상기 언두_카운트(506)신호로 전송된 푸쉬를 취소할 데이터 크기보다 작다면, DMA 처리부(304)가 이미 헤더를 팝 했다는 의미이므로, 720단계로 진행하여 DMA 처리부(304)로 푸쉬 취소 신호(undo_push)를 전송한다. 그리고, 722단계에서 FIFO 버퍼 유닛(302)의 FIFO 버퍼 제어부(302b)는 FIFO 버퍼(302)에 저장된 데이터를 삭제한다. 즉, FIFO 버퍼 제어부(302b)는 라이트 포인터(write Pointer)를 상기 언두 푸쉬(undo_push)할 데이터 크기만큼 변경시킨다.In operation 718, the FIFO buffer unit 302 receiving the push operation undo_push signal and the undo_count 506 signal may cancel the push signal transmitted by the undo_count 506 signal and the current FIFO buffer. (302a) Compare the counter for which the size is set. As a result of the comparison in step 718, if the size of the FIFO set in the counter is smaller than the data size to cancel the push transmitted by the undo_count 506 signal, it means that the DMA processing unit 304 has already popped a header. In step S1, the DMA processor 304 transmits a push cancel signal undo_push. In operation 722, the FIFO buffer controller 302b of the FIFO buffer unit 302 deletes data stored in the FIFO buffer 302. That is, the FIFO buffer controller 302b changes the write pointer by the size of the data to be undo_push.

반면, 상기 718단계의 비교결과 상기 카운터에 설정된 FIFO 크기가 상기 언두_카운트(506)신호로 전송된 푸쉬를 취소할 데이터 크기보다 크거나 같다면, DMA 처리부(304)는 다른 데이터를 전송하는 전송 상태(406)이므로, 724단계에서 언두_카운트(undo_cnt)(506)만큼 상기 카운터를 감소시키고, 725단계에서 상기 언두_카운트(506)신호 만큼 서브 데이터들을 FIFO 버퍼(302a)에서 삭제한다.On the other hand, if the comparison result of step 718 is greater than or equal to the size of the data to cancel the push transmitted in the undo_count 506 signal, the FIFO set in the counter, the DMA processing unit 304 transmits another data In the state 406, the counter is decremented by the undo_cnt 506 in step 724, and the sub data is deleted from the FIFO buffer 302a by the undo_count 506 signal in step 725.

그리고, DMA 처리부(304)는 상기 FIFO 버퍼 유닛(302)로부터 푸쉬 동작 취소(undo_push)신호를 수신하면, 726단계에서 대기 상태(404)에서 아이들 상태(400)로 천이한다.When the DMA processing unit 304 receives the push operation undo_push signal from the FIFO buffer unit 302, the DMA processor 304 transitions from the standby state 404 to the idle state 400 in step 726.

예를 들어, 입력부(300)가 전송할 데이터가 n 바이트(byte)였다고 가정하면, 입력부(300)는 데이터를 전송하기에 앞서 상기 데이터의 크기인 n 이 정의된 헤더를 FIFO 버퍼 유닛(302)의 FIFO 버퍼(302a)로 푸쉬한다. 그리고 n-1 바이트의 서브 데이터를 푸쉬하고, 마지막 서브 데이터 즉, n 번째 서브 데이터를 FIFO 버퍼 유닛(302)으로 푸쉬하기 전에 CRC 체크를 수행한다. CRC 체크 결과가 "불량"이면, 상기 n번째 서브 데이터를 푸쉬하지 않고, FIFO 버퍼 유닛(302)로 n 바이트만큼을 푸쉬 동작을 취소하라는 언두_푸쉬(undo_push)신호를 전송한다. FIFO 버퍼 유닛(302)의 FIFO 버퍼 제어부(302b)는 상기 언두_푸쉬 신호를 수신하면, FIFO 버퍼(302a)에서 언두_푸쉬할 데이터 크기만큼 서브 데이터들을 삭제한다. 그러나, FIFO 버퍼 제어부(302b)의 카운터에 설정된 FIFO 크기가 상기 n 보다 작으면, DMA 처리부(304)가 이미 FIFO 버퍼(302a)에 저장된 헤더를 팝했다는 의미이기 때문에, DMA 처리부(304)로 푸쉬 동작 취소(undo_push) 신호를 전송한다. 그러면, DMA 처리부(304)는 대기상태(404)에서 아이들 상태(400)로 천이한다.For example, assuming that the data to be transmitted by the input unit 300 was n bytes, the input unit 300 may include a header in which n, the size of the data, is defined before the data is transmitted to the FIFO buffer unit 302. Push to FIFO buffer 302a. The sub data of n-1 bytes is pushed, and the CRC check is performed before pushing the last sub data, that is, the n th sub data, to the FIFO buffer unit 302. If the CRC check result is "bad", the undo_push signal is transmitted to the FIFO buffer unit 302 to cancel the push operation by n bytes without pushing the n-th sub data. When the FIFO buffer control unit 302b of the FIFO buffer unit 302 receives the undo-push signal, the FIFO buffer 302a deletes the sub data by the size of the data to be undo_pushed. However, if the FIFO size set in the counter of the FIFO buffer control unit 302b is smaller than n, it means that the DMA processing unit 304 has already popped the header stored in the FIFO buffer 302a, and therefore pushes it to the DMA processing unit 304. Send the undo_push signal. The DMA processor 304 then transitions from the idle state 404 to the idle state 400.

반대로 카운터가 n 이상이라면, DMA 처리부(304)는 다른 데이터를 전송 중이기 때문에, 아직 헤더를 팝(pop)해가지 않았다는 의미이다. 따라서 이때는 FIFO 버퍼 제어부(302b)는 FIFO 버퍼(302a)에서 n 바이트를 지우면 된다.On the contrary, if the counter is larger than n, it means that the DMA processing unit 304 has not yet popped the header because other data is being transmitted. Therefore, at this time, the FIFO buffer control unit 302b may erase n bytes from the FIFO buffer 302a.

도 8은 본 발명의 실시 예에 따른 입력부(300)의 동작 흐름도이다.8 is a flowchart illustrating an operation of the input unit 300 according to an embodiment of the present invention.

800단계에서 입력부(300)의 디코더(300a)는 도시되지 않은 SoC 외부로부터 신호를 수신하고, 802단계에서 상기 수신된 신호를 디코딩하여 804단계에서 송신할 서브 데이터들과 헤더를 생성한다. 806단계에서는 입력부(300)의 디코더(300a)는 상기 헤더를 먹스(300c)를 통해 FIFO 버퍼 유닛(302)으로 출력하고, 808단계에서 상기 서브 데이터들을 순차적으로 FIFO 버퍼 유닛(302)으로 출력(Push)한다. 810 단계에서 디코더(300a)를 통해 생성된 마지막 서브 데이터인 경우 812단계에서 CRC 체크부(300e)는 CRC 체크를 수행한다. 상기 812단계에서 CRC 체크 결과가 "양호"이면, 814단계로 진행하여, 상기 마지막 서브 데이터를 FIFO 버퍼 유닛(302)로 전송하고, "불량"이면, 816단계로 진행하여 FIFO 버퍼 유닛(302)으로 푸쉬 동작 취소(ubdo_push)신호를 전송한다.In step 800, the decoder 300a of the input unit 300 receives a signal from an external SoC (not shown). In step 802, the decoder 300a decodes the received signal to generate sub data and a header to be transmitted in step 804. In step 806, the decoder 300a of the input unit 300 outputs the header to the FIFO buffer unit 302 through the mux 300c, and sequentially outputs the sub data to the FIFO buffer unit 302 in step 808. Push). In the case of the last sub data generated by the decoder 300a in step 810, the CRC check unit 300e performs a CRC check in step 812. If the CRC check result in step 812 is "good", go to step 814, and transmits the last sub-data to the FIFO buffer unit 302, if it is "bad", go to step 816 to the FIFO buffer unit 302 Push operation cancel signal (ubdo_push).

도 9는 본 발명의 실시 예에 따른 FIFO 버퍼 유닛(302)의 동작 흐름도이다.9 is an operation flowchart of the FIFO buffer unit 302 according to an embodiment of the present invention.

900단계에서 FIFO 버퍼 유닛(302)은 입력부(300)로부터 헤더를 수신하고, 902단계에서 카운터를 증가시킨다. 904단계에서 FIFO 버퍼 유닛(302)은 카운트된 FIFO 크기를 DMA 처리부(304)로 전송한다. 906단계에서 DMA 처리부(304)가 FIFO 버퍼(302a)로부터 헤더를 팝(Pop)했는지 검사하여, 팝 했다면, 908단계로 진행하여 카운터를 감소시킨다. 910단계에서 FIFO 버퍼 유닛(302)은 입력부(300)로부터 서브 데이터를 수신하면, 912단계로 진행하여 카운터를 증가시키고, 914단계에서 입력부(300)로부터 푸쉬 동작 취소(undo_push)신호(504)를 수신했는지 검사한다. 상기 914단계에서 상기 푸쉬 동작 취소 신호(undo_push)를 수신했다면, 916단계에서 상기 카운터에서 카운트된 FIFO 크기와 상기 푸쉬 동작 취소(undo_puch)신호와 같이 수신된 언두_카운트(506)신호로 수신된 삭제할 서브 데이터 크기를 비교한다. 상기 916단계에서 상기 비교결과 상기 카운트된 데이터 크기가 상기 언두_카운트(506)신호로 수신된 삭제할 데이터 크기보다 크거나 같다면, 918단계로 진행하여 언두_카운트(506)만큼 카운터를 감소시키고, 920단계에서 언두_카운트(506)만큼 서브 데이터를 FIFO 버퍼(302a)에서 삭제한다.In step 900, the FIFO buffer unit 302 receives the header from the input unit 300 and increments the counter in step 902. In step 904, the FIFO buffer unit 302 transmits the counted FIFO size to the DMA processing unit 304. In step 906, the DMA processor 304 checks whether the header is popped from the FIFO buffer 302a. If the pop is popped, the process proceeds to step 908 to decrease the counter. When the FIFO buffer unit 302 receives the sub data from the input unit 300 in step 910, the controller 100 proceeds to step 912 and increments the counter. In step 914, the FIFO buffer unit 302 receives a undo_push signal 504 from the input unit 300. Check for receipt. If the push operation undo signal undo_push is received in step 914, the received undo_count 506 signal, such as the FIFO size counted by the counter and the push operation undo_puch signal, is deleted in step 916. Compare sub data size. In step 916, if the counted data size is greater than or equal to the size of the data to be erased received by the undo_count 506 signal, the counter proceeds to step 918 to decrease the counter by undo_count 506, In step 920, the sub data is deleted from the FIFO buffer 302a by the undo count 506.

반면, 상기 916단계의 비교 결과 상기 카운트된 FIFO 크기가 상기 언두_카운 트(506)신호보다 작다면, DMA 처리부(304)로 푸쉬 동작 취소(undo_push)(514)를 전송하고, 924단계에서 FIFO 버퍼(302a)에 저장된 서브 데이터들을 모두 삭제한다.On the other hand, if the counted FIFO size is smaller than the undo-count 506 signal as a result of the comparison in step 916, the push operation undo_push 514 is transmitted to the DMA processing unit 304, and the FIFO in step 924. All sub data stored in the buffer 302a are deleted.

반면, 상기 914단계에서 상기 푸쉬 동작 취소 신호를 수신하지 않았다면, 상기 910단계로 진행하여 입력부(300)로부터 서브 데이터들을 계속 수신한다. In contrast, if the push operation cancel signal is not received in step 914, the controller proceeds to step 910 to continuously receive sub data from the input unit 300.

도 10은 본 발명의 실시 예에 따른 DMA 처리부(304)의 동작 흐름도이다. 10 is a flowchart illustrating an operation of the DMA processing unit 304 according to an embodiment of the present invention.

1000단계에서 아이들 상태로 있던 DMA 처리부(304)는 1002단계에서 FIFO 크기가 "0"보다 커졌는지 검사한다. FIFO 크기가 "0"보다 커져있다는 뜻은 FIFO 버퍼(302a)에 헤더가 저장되었다는 뜻이므로, 1004단계에서 DMA 처리부(304)는 헤더 상태로 천이된 후, 1006단계에서 헤더를 FIFO 버퍼(302a)로부터 팝(Pop)한다.In step 1000, the DMA processing unit 304 in the idle state checks whether the FIFO size is greater than " 0 " Since the FIFO size is larger than "0", it means that the header is stored in the FIFO buffer 302a. Therefore, in step 1004, the DMA processing unit 304 transitions to the header state, and then, in step 1006, the header is changed to the FIFO buffer 302a. Pop from

상기 1006단계에서 상기 헤더를 팝한 DMA 처리부(304)는 1008단계에서 대기 상태로 천이되며, 1010단계에서 푸쉬 동작 취소 신호(undo_push)를 수신했는지 여부를 검사한다. 상기 1010단계에서 상기 푸쉬 동작 취소 신호를 수신했다면, 상기 1000단계로 진행하여, 아이들 상태로 천이된다.In step 1006, the DMA processing unit 304 that popped the header transitions to the standby state in step 1008, and checks whether a push operation undo signal undo_push is received in step 1010. If the push operation cancel signal is received in step 1010, the process proceeds to step 1000 and transitions to an idle state.

반면, 상기 1010단계에서 상기 푸쉬 동작 취소 신호를 수신하지 않았다면, 1012단계에서 FIFO 크기와 상기 헤더에 정의된 크기와 같거나 큰지를 검사한다. 상기 1012단계에서 상기 FIFO 크기와 상기 헤더에 정의된 크기보다 크거나 같다면, 1014단계로 진행하여 전송 상태로 천이하고, 1016단계에서 FIFO 버퍼(302a)로부터 데이터를 팝(Pop)하고, 1018단계에서 데이터를 전송한다.On the other hand, if the push operation cancellation signal is not received in step 1010, in step 1012 it is checked whether the FIFO size and the size defined in the header. If the size of the FIFO is greater than or equal to the size defined in the header in step 1012, the process proceeds to step 1014, and transitions to the transmission state. In step 1016, data is popped from the FIFO buffer 302a, and step 1018. Transmits data.

DMA 처리부의 처리 속도가 입력부의 처리속도(시간당 처리할 수 있는 데이터의 양 : Throughput)보다 크다면 FIFO 버퍼의 사이즈를 1 슬롯으로 할 수 있어 메모리의 크기를 줄 일 수 있으며, 입력부와 DMA 처리부를 완전히 분리시킴으로써 코너 케이스의 발생을 줄 일 수 있다.If the processing speed of the DMA processing unit is greater than the processing speed of the input unit (amount of data that can be processed per hour: Throughput), the size of the FIFO buffer can be reduced to 1 slot, thereby reducing the size of the memory. The complete separation can reduce the occurrence of corner cases.

Claims (16)

시스템 온 칩 시스템에서 외부 장치로부터 수신된 신호를 시스템 메모리로 전송하기 위한 방법에 있어서,A method for transmitting a signal received from an external device to a system memory in a system on chip system, 입력부가 상기 신호를 디코딩하여 생성된 데이터를 N(N은 자연수)개의 서브 데이터들로 분할하고, 상기 N개의 서브 데이터와 상기 데이터의 크기 N이 정의된 헤더를 FIFO(First Input First Output) 버퍼 유닛으로 전송하는 과정과,The input unit decodes the data generated by decoding the signal into N (N is a natural number) sub data, and includes a header in which the N sub data and the size N of the data are defined, a first input first output (FIFO) buffer unit. Transfer to 상기 입력부는 N번째 데이터를 푸쉬하기 전에 상기 N개의 데이터들에 대해 CRC(Cyclic Redundancy Check) 체크를 수행하여 상기 생성된 데이터들에 대해 오류를 검사하고, 검사 결과에 따라 푸쉬 동작 취소할지 여부를 결정하는 과정과,The input unit checks an error on the generated data by performing a cyclic redundancy check (CRC) check on the N data before pushing the N-th data, and determines whether to cancel the push operation according to the test result. Process, 상기 FIFO 버퍼 유닛이 상기 입력부로부터 상기 헤더와 상기 서브 데이터들이 푸쉬 될 때 마다 카운터를 증가시키고, 상기 증가된 카운터를 DMA(Direct Memory Access) 처리부로 전송하는 과정과,Incrementing a counter each time the header and the sub data are pushed from the input unit by the FIFO buffer unit, and transmitting the increased counter to a direct memory access (DMA) processor; 상기 DMA 처리부는 상기 헤더를 팝하여 상기 헤더에 정의된 상기 N 개의 서브 데이터가 상기 FIFO 버퍼 유닛에 푸쉬될 때 까지 대기하는 과정과,Popping the header and waiting for the N sub-data defined in the header to be pushed to the FIFO buffer unit; 상기 DMA 처리부는 상기 FIFO 버퍼 유닛에 상기 N 개의 서브 데이터들이 푸쉬되면, 상기 FIFO 버퍼 유닛으로부터 상기 N개의 서브 데이터들을 팝하는 과정을 포함함을 특징으로 하는 시스템 온 칩 시스템에서 데이터 전송을 위한 방법.And when the N sub-data is pushed into the FIFO buffer unit, popping the N sub-data from the FIFO buffer unit. 제1 항에 있어서, According to claim 1, 상기 입력부는 상기 체크 결과 오류가 있다면, 상기 N 번째 서브 데이터를 전송하지 않고, 푸쉬 동작 취소 신호와 삭제할 서브 데이터 크기를 언두_카운트 신호로 전송하는 과정과,The input unit transmitting a push operation cancel signal and a sub data size to be deleted as an undo count signal without transmitting the N-th sub data if the check result is an error; 상기 푸쉬 동작 취소 신호와 상기 언두 카운트 신호를 수신한 FIFO 버퍼 유닛은 상기 언두 카운트 신호에 정의된 크기만큼 서브 데이터들을 삭제하는 과정을 더 포함함을 특징으로 하는 시스템 온 칩 시스템에서 데이터 전송 방법.The FIFO buffer unit receiving the push operation cancel signal and the undo count signal further includes deleting sub data by a size defined in the undo count signal. 제1 항에 있어서, According to claim 1, 상기 입력부는 상기 체크 결과 오류가 없다면, 상기 N 번째 서브 데이터를 전송하는 과정과,The input unit transmitting the N-th sub data if there is no error as a result of the check; 상기 푸쉬 동작 취소 신호와 상기 언두 카운트 신호를 수신한 FIFO 버퍼 유닛은 상기 언두 카운트 신호에 정의된 크기만큼 서브 데이터들을 삭제하는 과정을 더 포함함을 특징으로 하는 시스템 온 칩 시스템에서 데이터 전송 방법.The FIFO buffer unit receiving the push operation cancel signal and the undo count signal further includes deleting sub data by a size defined in the undo count signal. 제1항에 있어서,The method of claim 1, 상기 FIFO 버퍼 유닛은 상기 언두 카운트 신호에 정의된 데이터 크기와 FIFO 크기를 비교하여 상기 언투 카운트 신호에 정의된 데이터 크기보다 상기 FIFO 크기 가 작다면, 상기 DMA 처리부로 상기 푸쉬 동작 취소 신호를 전송하는 과정을 포함함을 특징으로 하는 시스템 온 칩 시스템에서 데이터 전송 방법.The FIFO buffer unit comparing the data size defined in the undo count signal with the FIFO size and transmitting the push operation cancel signal to the DMA processor if the FIFO size is smaller than the data size defined in the unto count signal. Data transmission method in a system-on-chip system comprising a. 제4 항에 있어서,The method of claim 4, wherein 상기 DMA 처리부는 상기 FIFO 크기가 상기 헤더에 정의된 데이터 크기보다 크거나 같을 경우 상기 FIFO 버퍼 유닛으로부터 상기 서브 데이터들을 팝하는 과정을 포함함을 특징으로 하는 시스템 온 칩 시스템에서 데이터 전송 방법.And the DMA processing unit pops the sub data from the FIFO buffer unit when the size of the FIFO is equal to or larger than the data size defined in the header. 제5 항에 있어서,The method of claim 5, 상기 DMA 처리부는 상기 FIFO 버퍼 유닛으로부터 푸쉬 동작 취소 신호를 수신할 때 대기 상태에서 아이들 상태로 천이하는 과정을 더 포함함을 특징으로 하는 시스템 온 칩 시스템에서 데이터 전송 방법.And the DMA processing unit transitions from a standby state to an idle state when receiving a push operation cancel signal from the FIFO buffer unit. 시스템 온 칩 시스템에서 데이터를 시스테 메모리로 전송하기 위한 시스템에 있어서,A system for transferring data to a cyste memory in a system on chip system, 상기 시스템 메모리로 전송할 데이터를 N(N은 자연수)개의 서브 데이터들로 분할하고, 상기 N개의 서브 데이터들과 상기 데이터 크기인 N이 정의된 헤더를 생 성하고, 상기 헤더를 먼저 FIFO(First Input First Output) 버퍼 유닛으로 푸쉬한 뒤, 상기 서브 데이터들에 대해 CRC(Cycllic Redundancy Check) 체크 여부에 따라 N번째 서브 데이터를 전송할지 여부를 결정하는 입력부와,The data to be transmitted to the system memory is divided into N (N is a natural number) sub data, a header is defined in which the N sub data and the data size N are defined, and the header is first input to FIFO (First Input). First output) an input unit configured to determine whether to transmit the Nth sub data according to whether a CRC (Cycllic Redundancy Check) check is performed on the sub data after pushing the buffer unit; 상기 입력부로부터 상기 헤더와 상기 서브 데이터들을 수신할 시 FIFO 크기를 측정하여 DMA(Direct Memory Access) 처리부로 전송하고, 상기 입력부의 CRC 체크 여부에 따라 푸쉬 동작 취소 여부를 검사하는 FIFO 버퍼 유닛과,A FIFO buffer unit for measuring the size of the FIFO when receiving the header and the sub data from the input unit and transmitting the FIFO to a direct memory access (DMA) processing unit and checking whether the push operation is canceled according to the CRC check of the input unit; 상기 FIFO 버퍼 유닛으로부터 헤더를 팝하여, 상기 데이터의 크기를 검사하고, 상기 데이터의 크기만큼 상기 FIFO 크기가 카운트되면, 상기 FIFO 버퍼 유닛에 수신된 서브 데이터들을 팝하는 DMA 처리부를 포함함을 특징으로 하는 시스템 온 칩 시스템에서 데이터를 전송하기 위한 시스템.Pops a header from the FIFO buffer unit, inspects the size of the data, and if the FIFO size is counted by the size of the data, includes a DMA processing unit for popping the received sub-data into the FIFO buffer unit. A system for transferring data in a system-on-chip system. 제7 항에 있어서,The method of claim 7, wherein 상기 입력부는 N-1개의 서브 데이터를 푸쉬하고, 상기 N개의 데이터를 CRC 체크하여 "양호"이면, N번째 데이터를 상기 FIFO 버퍼로 전송함을 특징으로 하는 시스템 온 칩 시스템에서 데이터를 전송하기 위한 시스템.The input unit pushes N-1 sub data, CRC checks the N data, and if it is "good", the input unit transmits N-th data to the FIFO buffer. system. 제8 항에 있어서,The method of claim 8, 상기 입력부는 상기 CRC 체크결과 "불량"이면, 상기 FIFO 버퍼 유닛으로 상 기 N번째 데이터 대신 푸쉬 동작 취소 신호와, 삭제할 데이터 크기가 정의된 언두_카운트 신호를 전송하도록 더 구비됨을 특징으로 하는 시스템 온 칩 시스템에서 데이터를 전송하기 위한 시스템.And the input unit is further configured to transmit a push operation cancel signal and an undo_count signal having a data size to be deleted instead of the N-th data to the FIFO buffer unit if the CRC check result is “bad”. System for transferring data in a chip system. 제7항에 있어서,The method of claim 7, wherein 상기 입력부는 상기 시스템 온 칩 시스템의 외부로부터 수신된 신호를 디코딩하여 상기 시스템 메모리로 전송할 데이터와 상기 데이터의 크기가 정의된 헤더를 생성하는 디코더와,The input unit decodes a signal received from the outside of the system-on-chip system to generate a header to define the data to be transmitted to the system memory and the size of the data, 상기 디코더에서 생성된 상기 데이터들에 대해 CRC 체크를 수행하는 CRC 처리부를 포함함을 특징으로 하는 시스템 온 칩 시스템에서 데이터를 전송하기 위한 시스템.And a CRC processing unit for performing a CRC check on the data generated by the decoder. 제7 항에 있어서,The method of claim 7, wherein 상기 FIFO 버퍼 유닛은 상기 입력부로부터 상기 푸쉬 동작 취소 신호와 상기 언두 카운트 신호를 수신하면, 상기 언두 카운트 신호에 정의된 데이터 크기와 상기 입력부로부터 수신된 데이터 크기인 FIFO 크기를 비교하고, 상기 비교결과 FIFO 크기가 더 크다면, 상기 정의된 데이터 크기만큼 삭제함을 특징으로 하는 시스템 온 칩 시스템에서 데이터를 전송하기 위한 시스템.When the FIFO buffer unit receives the push operation cancel signal and the undo count signal from the input unit, the FIFO buffer unit compares the data size defined in the undo count signal with a FIFO size that is a data size received from the input unit, and the comparison result FIFO. If the size is larger, delete the data by the defined data size. 제7 항에 있어서,The method of claim 7, wherein 상기 FIFO 버퍼 유닛은 상기 비교결과 상기 FIFO 크기가 더 작다면, 상기 수신된 데이터를 모두 삭제하고, 상기 DMA 처리부로 푸쉬 동작 신호를 전송함을 특징으로 하는 시스템 온 칩 시스템에서 데이터를 전송하기 위한 시스템. The FIFO buffer unit deletes all the received data if the size of the FIFO is smaller as a result of the comparison, and transmits a push operation signal to the DMA processing unit, the system for transmitting data in a system-on-chip system . 제7 항에 있어서,The method of claim 7, wherein 상기 FIFO 버퍼 유닛은 상기 삭제할 데이터 크기가 상기 FIFO 크기보다 크다면, 상기 FIFO 버퍼에 푸쉬된 데이터들 중 상기 삭제할 데이터 크기만큼 삭제하고, 상기 삭제할 데이터 크기가 상기 FIFO 크기보다 작다면, 상기 FIFO 버퍼에 저장된 데이터들을 모두 삭제하고, 상기 DMA 처리부로 푸쉬 동작 취소 신호를 전송함을 특징으로 하는 시스템 온 칩 시스템에서 데이터를 전송하기 위한 시스템.The FIFO buffer unit deletes as much as the data size to delete among data pushed to the FIFO buffer if the data size to be deleted is larger than the FIFO size, and if the data size to be deleted is smaller than the FIFO size, And deletes all stored data and transmits a push operation cancel signal to the DMA processing unit. 제7 항에 있어서,The method of claim 7, wherein 상기 FIFO 버퍼 유닛은 상기 입력부로부터 푸쉬된 서브 데이터 및 헤더를 순차적으로 저장하는 FIFO 버퍼와,The FIFO buffer unit is a FIFO buffer for sequentially storing the sub data and header pushed from the input unit, 상기 입력부로부터 상기 서브 데이터 또는 헤더가 수신될 때마다 상기 FIFO 버퍼 크기를 카운트하여 상기 DMA 처리부로 전송하고, 상기 입력부로부터 상기 푸 쉬 동작 취소 신호를 수신할 때 상기 언두 카운트 신호로 수신된 삭제할 데이터 크기와 상기 FIFO 크기를 비교하여 비교 결과에 따라 상기 DMA 처리부로 푸쉬 동작 취소 신호를 전송할지를 결정하는 FIFO 버퍼 제어부를 포함함을 특징으로 하는 시스템 온 칩 시스템에서 데이터를 전송하기 위한 시스템. Whenever the sub data or header is received from the input unit, the FIFO buffer size is counted and transmitted to the DMA processing unit, and when the push operation cancel signal is received from the input unit, the erase data size received as the undo count signal is received. And a FIFO buffer control unit for comparing a size of the FIFO and determining whether to transmit a push operation cancellation signal to the DMA processing unit according to a comparison result. 제7 항에 있어서,The method of claim 7, wherein 상기 DMA 처리부는 상기 FIFO 버퍼 유닛의 FIFO 크기가 "0" 에서 "1"로 변할 때 아이들 상태에서 헤더 상태로 천이하고, 상기 헤더를 팝(Pop)하여 상기 헤더에 정의된 데이터 크기만큼 상기 FIFO 버퍼 유닛에 데이터가 푸쉬될 때 까지 대기하는 대기 상태로 천이하고, 상기 대기 상태에서 상기 FIO 유닛에 상기 데이터 크기만큼 푸쉬되면, 전송 상태로 천이함을 특징으로 하는 시스템 온 칩 시스템에서 데이터를 전송하기 위한 시스템.The DMA processing unit transitions from an idle state to a header state when the FIFO size of the FIFO buffer unit is changed from "0" to "1", and pops the header to the FIFO buffer by the data size defined in the header. Transition to a standby state waiting for data to be pushed to the unit, and when the data size is pushed to the FIO unit in the standby state, the system transitions to the transfer state, characterized in that system. 제15 항에 있어서,The method of claim 15, 상기 DMA 처리부는 상기 대기 상태에서 상기 입력부로부터 푸쉬 동작 취소 신호가 수신되면, 상기 아이들 상태로 천이함을 특징으로 하는 시스템 온 칩 시스템에서 데이터를 전송하기 위한 시스템.And the DMA processing unit transitions to the idle state when a push operation cancellation signal is received from the input unit in the standby state.
KR1020050130826A 2005-12-27 2005-12-27 System and method for transmitting a data in a system on a chip system KR20070068809A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020050130826A KR20070068809A (en) 2005-12-27 2005-12-27 System and method for transmitting a data in a system on a chip system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050130826A KR20070068809A (en) 2005-12-27 2005-12-27 System and method for transmitting a data in a system on a chip system

Publications (1)

Publication Number Publication Date
KR20070068809A true KR20070068809A (en) 2007-07-02

Family

ID=38504664

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050130826A KR20070068809A (en) 2005-12-27 2005-12-27 System and method for transmitting a data in a system on a chip system

Country Status (1)

Country Link
KR (1) KR20070068809A (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110399321A (en) * 2018-04-25 2019-11-01 爱思开海力士有限公司 Storage system and its operating method
CN117290154A (en) * 2023-10-17 2023-12-26 无锡摩芯半导体有限公司 AXI_DMA redundancy design method based on automobile function safety

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110399321A (en) * 2018-04-25 2019-11-01 爱思开海力士有限公司 Storage system and its operating method
US11645010B2 (en) 2018-04-25 2023-05-09 SK Hynix Inc. Solid state drive (SSD) memory system improving the speed of a read operation using parallel DMA data transfers
CN117290154A (en) * 2023-10-17 2023-12-26 无锡摩芯半导体有限公司 AXI_DMA redundancy design method based on automobile function safety
CN117290154B (en) * 2023-10-17 2024-05-07 无锡摩芯半导体有限公司 AXI_DMA redundancy design method based on automobile function safety

Similar Documents

Publication Publication Date Title
US6192428B1 (en) Method/apparatus for dynamically changing FIFO draining priority through asynchronous or isochronous DMA engines in response to packet type and predetermined high watermark being reached
US7328399B2 (en) Synchronous serial data communication bus
US6389489B1 (en) Data processing system having a fifo buffer with variable threshold value based on input and output data rates and data block size
US5797033A (en) Direct memory access for storing and retrieving data based on packet size
US7725625B2 (en) Latency insensitive FIFO signaling protocol
US8356203B2 (en) Asynchronous interface circuit and data transfer method
EP2097828A2 (en) Dmac to handle transfers of unknown lengths
US9794877B2 (en) Transmitting device, receiving device, communication device, programs, transmission method, and receiving method for wireless communication of continuous data in the form of packets
JP6746791B2 (en) Clock gating enable generation
EP1396786A1 (en) Bridge circuit for use in retiming in a semiconductor integrated circuit
TW201319819A (en) Method, computer readable medium and computing device for performing data transfers for serial ATA connections using data transfer rate throttling
CN114968365A (en) Adapter register unit and host adapter circuit comprising same
KR20070068809A (en) System and method for transmitting a data in a system on a chip system
US20080320178A1 (en) DMA transfer apparatus
US20040128602A1 (en) Direct memory access with error correction
CN112835834B (en) Data transmission system
US7373541B1 (en) Alignment signal control apparatus and method for operating the same
US20090037619A1 (en) Data flush methods
KR100591243B1 (en) On-chip serialized peripheral bus system and operating method thereof
US20210223815A1 (en) First-In First-Out Buffer with Lookahead Performance Booster
US6865654B2 (en) Device for interfacing asynchronous data using first-in-first-out
US20070073927A1 (en) Method and apparatus for high throughput mass storage device interface in a microprocessor for handheld systems
US5701546A (en) Parallel interface circuit having a n-byte buffer and tansmitting the n byte data on a byte-by-byte basis in response to interrupt request signal
KR20070081981A (en) Interface method and apparatus in cpuless system
CN116578516A (en) EMC-based data and command transmission method and device

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination