KR20030030403A - macro block level control circuit of video decoding - Google Patents

macro block level control circuit of video decoding Download PDF

Info

Publication number
KR20030030403A
KR20030030403A KR1020010062531A KR20010062531A KR20030030403A KR 20030030403 A KR20030030403 A KR 20030030403A KR 1020010062531 A KR1020010062531 A KR 1020010062531A KR 20010062531 A KR20010062531 A KR 20010062531A KR 20030030403 A KR20030030403 A KR 20030030403A
Authority
KR
South Korea
Prior art keywords
decoding
block
interface
cpu
decoder
Prior art date
Application number
KR1020010062531A
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 KR1020010062531A priority Critical patent/KR20030030403A/en
Publication of KR20030030403A publication Critical patent/KR20030030403A/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

PURPOSE: A circuit for controlling a macro block level of a video decoder is provided to increase utility of a CPU, simply design a program or a whole integrated circuit, and reduce power consumption. CONSTITUTION: A CI(Co-processor Interface)(602) interfaces with a CPU for co-processing video decoding. A CR(Control Register)(604) interfaces with the CI for setting up a control value for controlling a decoding controller, or reading the state of the decoding controller and each decoding block. A DI(Debugging Interface)(606) interfaces with the CR for generating interrupt in operating each decoding block or after terminating operation. An SM(State Machine)(608) interfaces with the DI for managing a macro block state of the decoding controller and commanding operation of the next decoding block after terminating the operation of the currently operating decoding block. A DBI(Decoding Block Interface)(610) interfaces with the DI for commanding a start of the operation or receiving a terminating signal, and outputting the interrupt to the CPU. A plurality of DB(Decoding Block)s(612a,612b,...,612n) interface with the DBI for constructing the video decoder.

Description

영상복호기의 매크로블럭 레벨 제어회로{macro block level control circuit of video decoding}Macro block level control circuit of video decoder

본 발명은 영상복호기의 매크로블럭 수준 제어회로에 관한 것이다. 보다 상세하게는 영상복호기를 구성하는 복호장치 블럭들의 제어를 담당하는 제어 회로를 별도로 두어 소프트웨어에서 제어하기 위한 복잡성을 줄이고, CPU의 가용성을 증대시키는 기술에 관한 것이다.The present invention relates to a macroblock level control circuit of an image decoder. More specifically, the present invention relates to a technology for reducing the complexity of controlling in software and increasing the availability of a CPU by separately setting a control circuit for controlling the decoder blocks constituting the image decoder.

동영상 압축 및 복원에 관련된 국제 표준으로는 ITU-T에서 제정한 H.261, H.263 또는 ISO에서 제정한 MPEG(Moving Picture Experts Group)-1,2,4 등이 있다. 동영상 압축은 표준에 따라 약간의 차이는 있으나 일반적으로 원영상의 크기를 특정 크기(일반적으로 8화소 * 8화소 크기의 블록)로 나누어 이산여현변환(Discrete Cosine Transform; DCT), 양자화(Quantization), 가변장부호화(Variable length encoding) 등의 과정을 거치며 수행되며, 움직임 정보 추출을 위한 움직임추정(Motion Estimation)도 함께 수행된다.International standards related to video compression and decompression include H.261, H.263, or ISO (Moving Picture Experts Group) -1,2,4, which were established by ITU-T. Video compression differs slightly depending on the standard, but in general, the size of the original image is divided into specific sizes (typically 8 pixels by 8 pixels in size), and discrete cosine transform (DCT), quantization, It is performed through a process such as variable length encoding, and a motion estimation for extracting motion information is also performed.

동영상 복호기는 표준에 따라 약간의 차이는 있으나, 대부분 역이산변환기(Inverse Discrete Cosine Transformer 이하; IDCT), 역양자화기(Inverse Quantizer 이하; IQ), 가변장복호기(Variable Length Decoder 이하; VLD) 그리고 움직임보상기(Motion Compensator 이하; MC)등으로 구성되며 순차적으로 진행되어 진다.Video decoders vary slightly from standard to standard, but are mostly inverse discrete cosine transformers (IDCT), inverse quantizers (IQ), variable length decoders (VLD), and motion. Compensator (Motion Compensator: MC) and the like is progressed sequentially.

동영상 복호시 고속의 복호를 위해 각 복호장치블럭 예컨대 IDCT,IQ,VLD,MC 등을 하드웨어에 구현함에 있어 각 장치의 동작 개시 및 종료를 하드웨어를 구동하는 프로그램에서 제어함으로써 중앙처리장치(CPU)의 부하를 크게 하거나 프로그램작성시 복잡해진다는 문제점이 있었으며, 하드웨어로 제어하는 경우에도 동작 순서가 고정되어 있었다. 또한, 멀티미디어용 집적회로에서 음성과 영상처리를 위한 장치블럭이 하나의 버스를 공유함으로써 전체적인 구조가 복잡해져 설계상의 어려움이 많았다.In the implementation of each decoder device such as IDCT, IQ, VLD, MC, etc. in hardware for high speed decoding in video decoding, the program that drives the hardware is controlled by the program that drives the hardware. There was a problem in that the load was increased or complicated in programming, and the operation order was fixed even when controlled by hardware. In addition, since the device block for audio and image processing in a multimedia integrated circuit shares a single bus, the overall structure is complicated, which causes many design difficulties.

한편, 영상부호의 단위는 8화소 * 8화소의 영상블록이며, 동영상의 경우 움직임 추정은 16화소 * 16화소의 매크로 블럭단위나 표준에 따라 영상블록에 대해 수행되어진다.On the other hand, the unit of the image code is an image block of 8 pixels x 8 pixels, and in the case of a video, motion estimation is performed on the image block according to a macroblock unit or standard of 16 pixels * 16 pixels.

부호화는 블록단위로 이산여현변환(Discrete Cosine Transfrom), 양자화(Quantization), 가변장부호화 등이 이루어지고, 동영상의 경우 표준에 따라 블록단위 혹은 매크로 블럭단위로 움직임 추정(Motion Estimation)이 수행되며, 이러한 압축정보는 전송을 위해 일련의 비트열(bitstream)으로 변환되어 전송하게 된다.Coding is performed by Discrete Cosine Transfrom, Quantization, Variable Length Coding, etc. on a block basis.Motion Estimation is performed on a block basis or a macro block basis according to a standard. Such compressed information is converted into a series of bitstreams for transmission and transmitted.

비트열에는 원영상의 압축상태를 나타내는 압축정보도 함께 포함되는데, 그 정보의 내용으로는 MB 유형(INTRA 또는 INTER), 각 블록의 부호화 패턴(Coded Block Pattern), 움직임 벡터(Motion Vector), 양자화값과 같은것으로 매크로블럭 헤더정보라 부른다. 복호화 과정은 부호화의 역과정을 통해 이루어 진다.The bit string also includes compressed information indicating the compressed state of the original image. The content of the information includes the MB type (INTRA or INTER), the coded block pattern of each block, the motion vector, and the quantization. The same value as the macroblock header information. The decoding process is performed through the inverse process of encoding.

도 1은 일반적인 영상 복호기의 블록 다이어그램를 간략하게 나타낸 것으로서 수신된 비트열로부터 블록단위로 원영상을 재구성하는 과정을 나타낸것이다.FIG. 1 is a block diagram of a general video decoder, and shows a process of reconstructing an original image in units of blocks from a received bit string.

도 1을 살펴보면, 하드웨어에는 VLD(102), IQ(104), IDCT(106), 뎃셈기(108), MC(110), 비디오메모리(Video Memory; 112)로 구성되며, 소프트웨어로는 구동프로그램이 구비되어 있다.Referring to FIG. 1, the hardware includes a VLD 102, an IQ 104, an IDCT 106, a multiplier 108, an MC 110, and a video memory 112. It is provided.

이 때, 원영상의 압축정보(상태)에 따라 복호장치 블럭(복호기를 구성하는 VLD, IQ, IDCT, MC 등)의 동작이 결정되며, 종래의 기술에서는 그 정보에 따른 각 복호블럭의 동작제어를 블록단위 마다 구동프로그램에서 제어하여, 구동프로그램을 수행하는 CPU의 부하를 가중시킬 뿐 아니라, 프로그램의 복잡성을 증가시켰다.At this time, the operation of the decoding device block (VLD, IQ, IDCT, MC, etc. constituting the decoder) is determined according to the compressed information (state) of the original image, and in the related art, operation control of each decoding block according to the information is performed. Is controlled by the drive program on a block-by-block basis, which not only increases the load on the CPU executing the drive program but also increases the complexity of the program.

도 2는 일반적인 멀티미디어 집적회로의 블록 다이어그램를 간략하게 나타낸 것이다.2 is a simplified block diagram of a general multimedia integrated circuit.

도 2를 살펴보면, CPU(202), VLD(204), IDCT(206), MC(208), DMA(Direct Memory Access; 210), 주변장치(212), 주변장치 버스콘트롤러(Peri.Bus Controller; 214), 멀티미디어 집적회로를 구성하는 다른 장치블럭으로 구성되어 있다.2, a CPU 202, a VLD 204, an IDCT 206, an MC 208, a direct memory access (DMA) 210, a peripheral device 212, and a peripheral bus controller (Peri.Bus Controller); 214), and other device blocks constituting the multimedia integrated circuit.

도 2에서와 같이, 멀티디어어용 집적회로를 구성하는 많은 장치블럭이 동일한 버스를 사용함으로써 구조설계 및 자원할당 등 설계시 고려해야할 사항들이 많았다.As shown in FIG. 2, many device blocks constituting the integrated circuit for the multimedia use the same bus, and there are many considerations in design such as structural design and resource allocation.

도 3a 및 도 3b는 종래의 실시예로서 매크로 블럭에 대한 복호 제어방식의 흐름도 및 시간대별 동작 과정을 나타낸 모식도이다.3A and 3B are schematic diagrams illustrating a flowchart of a decoding control method for a macroblock and an operation process according to time zones according to a conventional embodiment.

도 3a를 살펴보면, 블럭에 대한 복호를 시작하여 VLD 동작을 설정하고 동작 개시를 지시한 다음(S301) VLD 동작의 종료 여부를 판단하게 된다(S302). 상기 S302에서 VLD 동작이 종료되었다고 판단되면 IQ/IDCT 동작을 설정하고 동작개시를 지시한 다음(S303) IQ/IDCT 동작의 종료 여부를 판단하게 된다(S304).Referring to FIG. 3A, decoding of a block is started to set a VLD operation, instructing operation start (S301), and then determining whether to terminate the VLD operation (S302). If it is determined in step S302 that the VLD operation is terminated, an IQ / IDCT operation is set, an operation start is indicated (S303), and whether the IQ / IDCT operation is terminated is determined (S304).

상기 S304에서 IQ/IDCT 동작이 종료되었다고 판단되면 MC 동작을 설정하고 동작 개시를 지시한 다음(S305) MC 동작의 종료 여부를 판단함으로서(S304) 블럭에 대한 복호를 종료한다.If it is determined in step S304 that the IQ / IDCT operation is completed, the MC operation is set, the operation start is instructed (S305), and the determination of whether or not the MC operation is terminated (S304) ends the decoding of the block.

이 때, 도 3b에서와 같이 하나의 매크로 블럭을 복호하기 위해서는 6번의 동작설정 및 대기를 반복하게 된다.At this time, as shown in FIG. 3B, six operation settings and waits are repeated to decode one macroblock.

도 4a 및 도 4b는 종래의 다른 실시예로서 매크로 블럭에 대한 복호 제어방식의 흐름도 및 시간대별 동작 과정을 나타낸 모식도이다.4A and 4B are schematic diagrams illustrating a flowchart of a decoding control method for a macroblock and an operation process according to time zones, according to another exemplary embodiment.

도 4a를 살펴보면, 블럭에 대한 복호를 시작하여 VLD 동작을 설정하고 동작 개시를 지시한 다음(S401) 구동 프로그램의 영상복호외의 다른 작업을 진행한 후 VLD의 동작 상태를 점검하고 종료한다.(S402)Referring to FIG. 4A, decoding of a block is started to set a VLD operation, instructing operation start (S401), and other operations other than video decoding of a driving program are performed, and then the operation state of the VLD is checked and finished. )

이어서, IQ/IDCT 동작을 설정하고 동작개시를 지시한 다음(S403) 구동 프로그램의 영상복호외의 다른 작업을 진행한 후 IQ/IDCT의 동작 상태를 점검하고 종료한다.(S404)Subsequently, the IQ / IDCT operation is set, the operation start is instructed (S403), and other operations other than image decoding of the driving program are performed, and then the operation state of the IQ / IDCT is checked and finished (S404).

그 후, MC 동작을 설정하고 동작 개시를 지시한 다음(S405) 구동 프로그램의 영상복호외의 다른 작업을 진행한 후 MC 동작 상태를 점검함으로서(S406) 블럭에 대한 복호를 종료한다.After that, the MC operation is set, the operation start is instructed (S405), and other operations other than video decoding of the driving program are performed, and then the decoding of the block is terminated by checking the MC operation state (S406).

이 때, 도 4b에서와 같이 하나의 매크로 블럭을 복호하기 위해서는 6번의 동작설정, 다른 작업 수행 및 대기를 반복하게 된다.At this time, in order to decode one macroblock as shown in FIG. 4B, six operation settings, another operation execution, and waiting are repeated.

상기에서와 같이 종래의 각 장치블럭의 제어방식에 따른 종래 기술의 문제점을 살펴보기로 한다.As described above, the problems of the prior art according to the control method of each conventional device block will be described.

도 3a 및 도 3b에서와 같이 첫번째 블록에 대한 복호를 수행할 때, 압축정보에 따라 구동프로그램은 현재 동작할 복호장치블럭의 동작을 설정하고 동작개시를 지시한다. 복호장치 블럭의 동작이 완료를 기다린 후 동작이 완료되면 다음 복호장치 블럭의 동작을 설정하고 개시시키는 제어방식이다.When decoding the first block as shown in FIGS. 3A and 3B, the driving program sets the operation of the decoding device block to be operated currently and instructs the operation start according to the compression information. After the operation of the decoder block waits for the completion of the operation, the control method of setting and starting the operation of the next decoder block.

그러나, 이러한 방식에서는 기다리는 " 대기 상태 " 에서 CPU는 다른 작업을 수행할 수 없어 CPU의 가용성이 저하되는 문제점이 있다. 근래에는 이런 방식의 제어를 거의 사용하지 않는다. 하나의 매크로 블록를 복호하기 위해서는 이런 과정을 6번 반복해야 하며, 각 복호장치 블럭의 동작 사이 마다 대기상태가 존재하므로 CPU의 가용성이 상당히 감소된다.However, in this method, there is a problem in that the CPU is unable to perform other tasks in the waiting "waiting state", which degrades the CPU availability. Nowadays, this type of control is rarely used. To decode one macro block, this process must be repeated six times. Since there is a waiting state between operations of each decoder block, CPU availability is considerably reduced.

도 4a 및 도 4b는 도 3a에 제시된 방식에서 CPU의 가용도을 높이기 위해 프로그램은 다른 작업을 수행한 후 현재 복호장치블럭의 동작이 완료되었는지 다시 점검한다.4A and 4B show that in order to increase the usability of the CPU in the method shown in FIG. 3A, the program checks again whether the operation of the current decoder block is completed after performing other tasks.

이러한 경우에는 다른 작업을(하나 또는 그 이상의) 수행하고 현 복호장치 블럭의 동작을 점검했을 때, 완료되었다면 다음 복호장치 블럭을 개시시키지만, 그렇지 않은 경우는 역시 대기상태가 존재한다. 하지만 이러한 제어방식은 복호블럭장치의 동작시간과 그 사이에 수행할 다른 작업에 걸리는 소요시간 등을 정확하게 계산하여야하고 프로그램이 복잡해진다는 문제점이 있다.In this case, when another task (one or more) is performed and the operation of the current decoder block is checked, the next decoder block is started if it is completed, but there is also a waiting state. However, this control method has a problem in that the operation time of the decoding block device and the time required for other tasks to be performed in between must be accurately calculated and the program is complicated.

그 외의 방법으로 각 복호블럭의 동작완료를 인터럽트로 알려줄 수 있는데 이것 또한 빈번한 인터럽트의 발생으로 CPU의 부하를 증가시킨다는 문제점을 안고 있다.In other ways, the operation completion of each decoding block can be notified to the interrupt, which also causes a problem that the CPU load is increased due to frequent interrupts.

이러한 문제점을 해결하기 위해 하드웨어적으로 하나의 복호블럭이 완료된 후 바로 다음 복호블럭이 동작되도록 설계된 경우도 있으나 제어흐름이 고정되어 있다는 점에서 유연성이 부족하고 대부분 하나의 버스를 여러 장치 블록에서 공유하므로 버스의 할당 뿐 아니라 버스가 집적회로내에 널리 분포하는 형태가 되므로 전력소모면에서도 문제가 야기될 수 있다.In order to solve this problem, in some cases, the next decoding block is designed to be operated immediately after one decoding block is completed in hardware. However, since the control flow is fixed, it is inflexible and most buses are shared by multiple device blocks. In addition to the assignment of the bus, the bus becomes widely distributed in the integrated circuit, which may cause problems in terms of power consumption.

또한, 부가적으로 특정 용도(특정 표준에 부합되어 모든 장치블럭의 동작이 고정)의 멀티미디어 집적회로를 설계한 경우, 제품생산 완료 후 특정장치 블럭에 새로운 기능이 추가되거나 오류나 상태점검을 위해 특정장치의 동작개시 시점이나 종료시점에서 인터럽트를 발생시켜 CPU에서 소프트웨어적으로 처리해야 할 필요가 있을 때 대처가 용이하지 않다는 문제점이 있다.In addition, in case of designing a multimedia integrated circuit for a specific purpose (measurement of all device blocks is fixed according to a specific standard), a new device can be added to a specific device block after completion of production, or a specific device can be used for error or status check. There is a problem in that it is not easy to cope when it is necessary to process the software in the CPU by generating an interrupt at the start or end of the operation.

이에, 본 발명은 상기한 문제점을 해결하기 위한 것으로서 본 발명은 영상복호기를 구성하는 복호장치 블럭들의 제어를 담당하는 제어회로를 별도로 두어 소프트웨어에서 제어하기 위한 복잡성을 줄이고, CPU의 가용성은 증가시키는 한편 그 제어부(DCU; Decode Control Unit)가 보조처리기(coprocessor) 인터페이스부를 가짐으로써 영상복호기를 최대한 독립적인 설계가 가능하도록 하여 설계상의 용이성을 달성하고자 하는데 그 목적이 있다.In order to solve the above problems, the present invention provides a separate control circuit for controlling the decoder blocks constituting the image decoder, thereby reducing the complexity for controlling in software and increasing the availability of the CPU. The control unit (DCU; Decode Control Unit) has a coprocessor interface to enable the design of the image decoder as independent as possible to achieve the ease of design.

상기한 본 발명의 목적을 달성하기 위한 기술적 사상으로써 본 발명에 따르면, 중앙처리장치(CPU)가 내장된 멀티미디어 집적회로의 보조처리기로 연결되는 영상 복호제어기(DCU)에 있어서, 상기 중앙처리장치(CPU)와 인터페이싱되어 영상 복호를 위한 보조 처리 역할을 하는 보조처리기 인터페이스(CI)와; 상기 보조처리기 인터페이스(CI)와 인터페이싱되어 복호제어기를 제어하기 위한 제어값을 설정하거나 복호제어기 및 각 복호블럭의 상태를 읽기 위한 제어레지스터(CR)와; 상기 제어레지스터(CR)와 인터페이싱되어 각 복호블럭의 동작시 인터럽트를 발생시키거나 동작 종료 후에 인터럽트를 발생시키기 위한 디버깅 인터페이스(DI)와; 상기 디버깅 인터페이스(DI)와 인터페이싱되어 복호제어기의 매크로블럭 상태를 관리하며, 현재 동작 중인 복호블럭의 동작 완료 이후에 다음 복호블럭의 동작을 지시하는 상태머신(SM)과; 상기 디버깅 인터페이스(DI)와 인터페이싱되어 각 복호블럭과 통신하여 동작의 시작을 지시하거나 종료신호를 수신하며, 중앙처리장치(CPU)로 인터럽트를 출력시키는 디코딩블럭 인터페이스(DBI)와; 상기 디코딩블럭 인터페이스(DBI)와 인터페이싱되어 영상복호기를 구성하기 위한 다수개의 디코딩블럭(DB)을 포함하여 이루어진 것을 특징으로 하는 영상복호기의 매크로블럭 레벨 제어회로가 제시된다.According to the present invention as a technical concept for achieving the object of the present invention, in the image decoding controller (DCU) connected to the auxiliary processor of the multimedia integrated circuit having a central processing unit (CPU), the central processing unit ( A coprocessor interface (CI) interfaced with the CPU to serve as a coprocessor for video decoding; A control register (CR) for interfacing with the coprocessor interface (CI) to set a control value for controlling a decoding controller or to read a state of a decoding controller and each decoding block; A debugging interface (DI) for interfacing with the control register (CR) to generate an interrupt during the operation of each decoding block or to generate an interrupt after the operation ends; A state machine (SM) interfaced with the debugging interface (DI) to manage the macroblock state of the decoding controller, and instructing the operation of the next decoding block after the operation of the decoding block currently in operation; A decoding block interface (DBI) interfaced with the debugging interface (DI) to communicate with each decoding block to indicate the start of an operation or to receive an end signal, and to output an interrupt to a central processing unit (CPU); A macroblock level control circuit of an image decoder, which includes a plurality of decoding blocks DB for interfacing with the decoding block interface DBI to configure an image decoder, is provided.

도 1 은 종래 영상 복호기의 블록 구성도이다.1 is a block diagram of a conventional video decoder.

도 2 는 종래 멀티미디어 집적회로의 블록 구성도이다.2 is a block diagram of a conventional multimedia integrated circuit.

도 3a 및 도 3b 는 종래의 실시예로서 매크로 블럭에 대한 복호 제어방식의 흐름도 및 시간대별 동작 과정을 나타낸 도면이다.3A and 3B illustrate a flowchart of a decoding control method for a macroblock and an operation process according to time zones according to a conventional embodiment.

도 4a 및 도 4b 는 종래의 다른 실시예로서 매크로 블럭에 대한 복호 제어방식의 흐름도 및 시간대별 동작 과정을 나타낸 도면이다.4A and 4B are flowcharts illustrating a decoding control method for a macroblock and an operation process according to time zones, according to another exemplary embodiment.

도 5 는 본 발명에 따라 멀티미디어 집적회로의 블록 구성도이다.5 is a block diagram of a multimedia integrated circuit in accordance with the present invention.

도 6 은 본 발명에 따른 영상 복호제어기의 블록 구성도이다.6 is a block diagram of a video decoding controller according to the present invention.

도 7 은 도 6에 도시된 보조처리기 인터페이스의 상세도이다.FIG. 7 is a detailed view of the coprocessor interface shown in FIG. 6.

도 8 은 도 6에 도시된 상태 머신의 상세 흐름도이다.8 is a detailed flowchart of the state machine shown in FIG.

도 9 는 도 6에 도시된 디버깅 인터페이스의 상세도이다.9 is a detailed view of the debugging interface shown in FIG. 6.

도 10a 및 도 10b 는 본 발명에 따라 MPEG-4 영상복호기에 적용한 실시 예 및 매크로 블록의 복호 과정을 개략적으로 나타낸 도면이다.10A and 10B schematically illustrate an embodiment applied to an MPEG-4 video decoder and a decoding process of a macroblock according to the present invention.

이하, 본 발명의 실시예에 대한 구성 및 그 작용을 첨부한 도면을 참조하면서 상세히 설명하기로 한다.Hereinafter, with reference to the accompanying drawings, the configuration and operation of the embodiment of the present invention will be described in detail.

도 5는 본 발명에 따라 멀티미디어 집적회로의 구성도이다.5 is a block diagram of a multimedia integrated circuit according to the present invention.

도 5를 살펴보면, CPU(502), DCU(504), VLD(506), IDCT(508), MC(510), DMA(Direct Memory Access; 512), 주변장치(514), 주변장치 버스콘트롤러(516), 멀티미디어 집적회로를 구성하는 다른 장치블럭으로 구성되어 있다.Referring to FIG. 5, a CPU 502, a DCU 504, a VLD 506, an IDCT 508, an MC 510, a direct memory access 512, a peripheral 514, a peripheral bus controller 516), and other device blocks constituting the multimedia integrated circuit.

이 때, 중앙처리장치(CPU; 502)와 영상복호기 장치블럭들과는 보조처리기로인터페이싱되어 있다.At this time, the central processing unit (CPU) 502 and the image decoder device blocks are interfaced to the subprocessor.

도 6은 본 발명에 따른 복호제어기의 블럭 구성도로서 CPU가 내장된 멀티미디어용 집적회로의 보조처리기로 연결되도록 설계되었다.6 is a block diagram of a decoding controller according to the present invention, and is designed to be connected to an auxiliary processor of a multimedia integrated circuit having a CPU.

도 6를 살펴보면, 보조처리기 인터페이스(coprocessor interface(CI); 602), 제어레지스터(control registers(CR); 604), 디버깅 인터페이스(debugging interface(DI); 606), 상태머신(state machine(SM); 608), 디코딩블럭 인터페이스(decoding block interface(DBI); 610), 디코딩블럭(decoding block(DB); 612a,612b,612n)으로 구성되어 있다.6, a coprocessor interface (CI) 602, control registers (CR) 604, a debugging interface (DI) 606, and a state machine (SM) are shown. 608, a decoding block interface (DBI) 610, and a decoding block (DB) 612a, 612b, and 612n.

상기 CI(602)는 CPU의 보조처리기(coprocessor) 인터페이스에 해당하며, 어떠한 CPU를 사용하는지에 따라 상세 설계가 틀려질 수 있다. CI를 통해 CPU(또는 구동 프로그램)은 CR(604)에 어떤 값을 쓰거(write)나 읽기(read)를 할 수 있다.The CI 602 corresponds to a coprocessor interface of a CPU, and a detailed design may vary depending on which CPU is used. Through the CI, the CPU (or a driving program) may write or read a value in the CR 604.

상기 CR(604)은 복호제어기를 제어하기 위한 값을 설정하거나 복호제어기 및 각 복호블럭의 상태를 읽을 때 사용된다. 이 레지스터를 읽고 쓰는 과정은 프로그램이 수행한다. CR에는 압축정보(매크로 블록 유형 및 부호화 블록 패턴, 움직임 벡터)등의 정보를 저장하는 레지스터와 복호제어기의 동작을 설정 및 모니터링하는 레지스터로 구분될 수 있다.The CR 604 is used to set a value for controlling the decoding controller or to read the state of the decoding controller and each decoding block. The program reads and writes these registers. The CR may be classified into a register for storing information such as compressed information (macro block type, encoded block pattern, and motion vector), and a register for setting and monitoring the operation of the decoding controller.

상기 DI(606)는 각 복호블럭의 동작시 인터럽트를 발생시키거나 동작종료 후에 인터럽트를 발생시킬 수 있다. 기본적으로 인터럽트는 하나의 매크로블록에 대한 복호가 완료되었거나 복호도중 오류가 발생한 경우에만 발생하며, 이 후 특정 복호블럭을 하드웨어가 아닌 소프트웨어로 그 기능을 대치하고자 할 때 해당 복호블록의 동작시점에서 인터럽트를 발생시킬 수 있도록 하였다.The DI 606 may generate an interrupt during the operation of each decoding block or generate an interrupt after the operation ends. Basically, interrupt occurs only when decoding of one macro block is completed or error occurs during decoding. Then, when you want to replace the function with software rather than hardware, interrupt at the operation of the corresponding decoding block. It can be generated.

상기 SM(608)은 복호제어기의 상태를 관리하는 블록으로 현재 동작중인 복호블럭의 동작 완료 이후에 다음 복호블럭의 동작을 지시하는 역할을 한다. CR(604)의 설정에 따라 특정 복호블럭의 동작을 생략할 수 있게 할 수도 있다.The SM 608 is a block that manages the state of the decoding controller and serves to instruct the operation of the next decoding block after the operation of the decoding block that is currently operating. Depending on the setting of the CR 604, the operation of a specific decoding block may be omitted.

상기 DBI(610)는 각 복호블럭과 통신하는 블록으로 동작의 시작을 지시하거나 종료신호를 수신한다. 연결된 CPU에 인터럽트를 출력한다.The DBI 610 is a block communicating with each decoding block to indicate the start of an operation or to receive an end signal. Outputs an interrupt to the connected CPU.

상기 DB(612a,612b,612n)는 VLD, IQ/IDCT, MC와 같이 복호기를 구성하는 hardware 블록을 나타낸다.The DBs 612a, 612b, and 612n represent hardware blocks constituting a decoder such as VLD, IQ / IDCT, and MC.

도 7은 본 발명에 따른 보조처리기의 인터페이스를 나타낸 것이다.7 shows an interface of a coprocessor according to the present invention.

도 7를 살펴보면, CI(702)의 CPI[N:0], CPD[N:0], CPWAIT, HAND_SH 신호들은 CPU(704)와 연결되어 있으며, CI(704)의 NCS[M:0], NWR, NRD, ADD[K:0], DD[N:0], CMD[S:0] 신호들은 복호블럭 레지스터(706)와 연결되어 있다.Referring to FIG. 7, the CPI [N: 0], CPD [N: 0], CPWAIT, and HAND_SH signals of the CI 702 are connected to the CPU 704, and the NCS [M: 0], The NWR, NRD, ADD [K: 0], DD [N: 0], and CMD [S: 0] signals are coupled to the decoding block register 706.

이 때, 보조처리기 인터페이스는 보초처리기에게 명령을 내리는 CPU의 사양이 어떻게 구성되는 지의 여부에 따라 상세한 구조가 달라질 수 있으나 일반적으로 상기와 같은 신호 구조를 갖는다.At this time, the sub-processor interface may have a detailed structure depending on how the specification of the CPU that commands the sentry processor is configured, but generally has the signal structure as described above.

상기 CPU(704)와 연결되어 있는 CPI[N:0]는 보조처리기 명령어 입력, N은 CPU가 N-비트 명령어를 사용함을 나타낸다. CPD[N:0]는 보조처리기 입.출력 데이터로 압축정보와 제어에 필요한 정보가 입력되어 레지스터에 쓰여지거나, 제어기의 상태를 CPU의 요구에 따라 출력하여 준다. CPWAIT는 보조처리기 대기 입력으로 보조처리기의 진행을 대기시킨다. HAND_SH는 CPU와 보조처리기간의 통신을 위한 신호들이다.CPI [N: 0], which is connected to the CPU 704, inputs a coprocessor instruction, and N indicates that the CPU uses N-bit instructions. CPD [N: 0] is the coprocessor input / output data. Compression information and information necessary for control are input and written to the register, or the controller status is output as requested by the CPU. CPWAIT waits for the processing of the coprocessor with the coprocessor wait input. HAND_SH are signals for communication between the CPU and the subprocessing period.

상기 복호블럭 레지스터(706)와 연결되어 있는 NCS[M:0]는 복호블럭의 chip select 신호를 나타내며 M개의 복호블럭이 존재하는 것을 나타낸다. NWR는 레지스터의 쓰기 strobe 신호를 나타낸다. NRD는 레지스터의 읽기 strobe 신호를 나타낸다. ADD[K:0]는 복호기내의 K-bit 주소버스를 나타낸다. DD[N:0]는 복호기내의 데이터 버스를 나타낸다. CMD[S:0]는 복호기의 특정동작을 지시하는 값을 나탄내다.The NCS [M: 0] connected to the decoding block register 706 represents a chip select signal of the decoding block and indicates that there are M decoding blocks. NWR represents the write strobe signal of the register. NRD represents the read strobe signal of the register. ADD [K: 0] represents the K-bit address bus in the decoder. DD [N: 0] represents the data bus in the decoder. CMD [S: 0] indicates a value indicating a specific operation of the decoder.

상술한 바와 같이, 복호제어기내의 보조처리기 인터페이스부를 둠으로써 전체구조 설계 및 버스의 활용도를 더욱 향상 시킬 수 있다.As described above, by providing an auxiliary processor interface unit in the decoding controller, the overall structure design and the utilization of the bus can be further improved.

도 8은 본 발명에 따른 복호제어기의 상태 머신 흐름도이다.8 is a state machine flowchart of a decoding controller according to the present invention.

복호제어기는 하나의 매크로블럭(6개의 8화소 * 8화소의 영상블럭으로 구성)에 대해 CPU의 개입없이 제어를 수행하며, 단 특정 복호장치블럭의 시작과 끝에서 소프트웨어로 처리하고자 한다면(레지스터 설정에 의해 가능) 인터럽트를 CPU에 요청함으로써 그 처리가 가능해진다.The decoding controller controls one macroblock (composed of six 8-pixel * 8-pixel video blocks) without CPU intervention, but only if you want to process the software at the beginning and end of a specific decoder block (register setting). Processing is possible by requesting an interrupt to the CPU.

도 8를 살펴보면, CPN은 각 복호장치블럭에 할당된 정수값을 나타낸다. 예를 들어 VLD에 0, IQ/IDCT에 1, MC에 2가 할당된 것이다. 어떤 표준에 적용되는 영상복호기를 만드냐에 따라 장치블럭들이 더 추가될 수 있다.Referring to FIG. 8, the CPN represents an integer value assigned to each decoder block. For example, 0 is assigned to VLD, 1 to IQ / IDCT, and 2 to MC. Device blocks may be added depending on which standard the video decoder is applied to.

아래는 위에서 제시한 흐름도에 대한 설명이나 여기서 언급되는 레지스터값들은 매크로블럭 시작전에 설정되거나 영상복호전에 한번만 설정되면 된다.(단, 압축상태정보는 매크로블럭마다 설정되어야 하나, 그 작업은 극히 간단하고 소요시간이 짧다.) 여기서, 점선내의 부분이 하드웨어로 구현되는 부분이다.Below is a description of the above flow chart, but the register values mentioned here need to be set before macroblock start or only once before image decoding (except that the compression status information must be set for each macroblock, but the operation is extremely simple. The time required is short.) Here, the part in the dotted line is the part implemented by hardware.

A단계에서 OP_EN은 레지스터 값으로서 OP_EN[OPN]은 OPN에 할당된 장치블럭의 OP_EN값을 나타낸다. OP_EN[OPN]=1일 때는 OPN 장치블럭이 동작하여야 하며, 0인 경우는 동작을 생략할 수 있다는 것을 나타낸다.In step A, OP_EN is a register value and OP_EN [OPN] represents an OP_EN value of the device block allocated to the OPN. When OP_EN [OPN] = 1, the OPN device block should operate, and when 0 indicates that the operation can be omitted.

B단계에서 OP_SIRQ는 레지스터를 나타내는 것으로서 OP_SIRQ[OPN]은 OPN에 할당된 장치블럭의 OP_SIRQ값을 나타낸다. OP_SIRQ[OPN]이 1일 때는 OPN 장치블럭이 동작개시할 때 인터럽트를 요청(L단계)하는것이다. 이때는 발생된 인터럽트를 처리하는 루틴에서 해당동작을 수행한 후 인터럽트를 해제함(M단계)으로써 다음 OPN에 대한 동작을 시작할 수 있도록 한다.In step B, OP_SIRQ represents a register, and OP_SIRQ [OPN] represents the OP_SIRQ value of the device block allocated to the OPN. When OP_SIRQ [OPN] is 1, an interrupt is requested (L stage) when the OPN device block starts to operate. In this case, after performing the corresponding operation in the routine that handles the generated interrupt, the interrupt is released (step M) to start the operation for the next OPN.

C단계는 OPN 장치블럭을 동작하기 위한 신호를 보내는 것으로 동작개시시점에 출력값을 " 1 "로 천이시키고 OPN으로부터 동작이 완료되었다는 신호를 입력받았을 때 " 0" 으로 다시 천이(F단계)시킨다. OPN은 출력값이 " 1 " 인 동안만 동작하고, 그 외의 경우에는 장치블럭내의 동작을 저전력모드나 유휴상태로 유지한다.Step C sends a signal for operating the OPN device block. At the start of operation, the output value is shifted to "1", and when the signal from the OPN is input to the operation completed, the transition to "0" is performed again (step F). The OPN operates only while the output value is "1", otherwise it keeps the operation in the device block in the low power mode or idle state.

D단계는 위의 C단계에서 설명한 바와 같이 OPN 장치블럭으로부터 종료신호를 받을때까지 대기하는 상태이다. 소프트웨어 처리하는 경우 이부분을 CPU가 담당함으로써 CPU이 가용성을 저하시키거나 프로그램의 복잡성을 증가시켰다.Step D is a state waiting for receiving the end signal from the OPN device block as described in step C above. In the case of software processing, this is the responsibility of the CPU, which reduces the availability of the CPU or increases the complexity of the program.

E단계에서 OP_EIRQ는 레지스터 값으로 OP_EIRQ[OPN]=1일때 OPN장치블럭의 동작이 완료된 시점에서 인터럽트를 요청한다.In step E, OP_EIRQ requests an interrupt when the operation of the OPN device block is completed when OP_EIRQ [OPN] = 1 as a register value.

G,H단계는 다음 수행할 장치블럭을 결정하거나, 하나의 영상블럭에 대한 복호가 끝났을 때, 6개의 모든 영상블럭이 복호될때까지 반복하도록 흐름을 제어하는 단계이다.Steps G and H determine a device block to be performed next or control the flow to repeat until all six image blocks are decoded when decoding of one image block is completed.

상술한 바와 같이, 하나의 매크로 블록에 대한 복호가 완료되면 복호가 완료되었다는 입터럽트를 발생시키거나 상태레지스터의 해당 비트값을 특정값으로 설정한다.As described above, when decoding of one macro block is completed, an interrupt is generated that decoding is completed or the corresponding bit value of the state register is set to a specific value.

도 9는 본 발명에 따른 디버깅 인터페이스의 구성도로서 디버깅 인터페이스부는 인터럽트 및 복호장치블럭들간의 신호를 주고받기 위한 장치블럭이다.9 is a block diagram of a debugging interface according to the present invention. The debugging interface unit is an apparatus block for transmitting and receiving signals between interrupt and decoding device blocks.

도 9를 살펴보면, DI(902)는 제어 레지스터, INT_MODE[M:0] 신호들이 입력되고, 상태 레지스터 신호가 출력되도록 연결되어 있는 레지스터(904)와; NIRQ 신호가 출력되도록 연결되어 있는 중앙처리장치(CPU; 906)와; SM_EN[M:0] 신호가 입력되고, SM_DONE[M:0] 신호가 출력되도록 연결되어 있는 상태머신(SM; 908)과; DONE[M:0] 신호가 입력되고, EN[M:0] 신호가 출력되도록 연결되어 있는 복호블럭(910)과 각각 인터페이싱되어 있다.9, the DI 902 includes a register 904 which is connected such that a control register, INT_MODE [M: 0] signals are input, and a status register signal is output; A central processing unit (CPU) 906 connected to output an NIRQ signal; A state machine (SM) 908 to which an SM_EN [M: 0] signal is input and connected so that an SM_DONE [M: 0] signal is output; A DONE [M: 0] signal is input and is interfaced with a decoding block 910 which is connected to output an EN [M: 0] signal.

이 때, 제어레지스터는 도 8에서 설명한 OP_SIRQ 및 OP_EIRQ 등과 같은 것이고, 상태레지스터는 CPU에서 어떤 복호장치블럭에서 인터럽트가 발생했는지를 알기 위한 것이다.At this time, the control register is the same as OP_SIRQ and OP_EIRQ described in FIG. 8, and the state register is for knowing which decoder block an interrupt has occurred in the CPU.

또한, SM_EN과 SM_DONE은 도 8에서 설명한 OP_EN과 OP_DONE에 해당하는 것이며 이것들이 실제 복호장치블럭에 연결될 때는 디버깅 인터페이스를 통한다.In addition, SM_EN and SM_DONE correspond to OP_EN and OP_DONE described in FIG. 8 and when they are actually connected to the decoder block, they are passed through a debugging interface.

예를 들어 VLD 장치블럭이 OPN=1 이라고 할 때, OP_SIRQ[1]=1이면 SM_EN[1]이 1로 (SM으로부터)입력되는 경우 동작개시시점에서 인터럽트(NIRQ)가 발생하고, 인터럽트 처리 후에 DONE[1](장치블럭의 출력)에 상관없이 SM_DONE[1]=1이 SM으로 입력된다.For example, if the VLD device block is OPN = 1, if OP_SIRQ [1] = 1, if SM_EN [1] is input as 1 (from SM), an interrupt (NIRQ) occurs at the start of operation. SM_DONE [1] = 1 is input to SM regardless of DONE [1] (output of device block).

반대로 OP_EIRQ[1]=1이면 장치블럭으로부터 DONE[1]=1인 입력된 후 인터럽트가 발생하고, 인터럽트 처리 후 SM_DONE[1]=1이 SM으로 입력된다.On the contrary, if OP_EIRQ [1] = 1, interrupt occurs after DONE [1] = 1 is input from the device block, and SM_DONE [1] = 1 is input to SM after interrupt processing.

특정블럭에 대한 인터럽트가 필요없는 경우는 OP_SIRQ나 OP_EIRQ를 0으로 설정하면 SM_EN은 EN에 SM_DONE은 DONE에 바로 연결된다.If no interrupt is required for a particular block, set OP_SIRQ or OP_EIRQ to 0 so that SM_EN is connected directly to EN and SM_DONE is directly connected to DONE.

도 10a 및 도 10b는 본 발명에 따라 MPEG-4 영상복호기에 적용한 예와 매크로 블록의 복호를 나타낸 것으로서 앞서 설명한 영상복호기를 ISO/IEC 14496-2 MPEG-4 영상복호기에 적용한 예이다.10A and 10B illustrate an example of applying an MPEG-4 image decoder and a decoding of a macroblock according to the present invention, and an example of applying the image decoder described above to an ISO / IEC 14496-2 MPEG-4 image decoder.

도 10a를 살펴보면, VLD, ADR, IQ/IDCT, MC(1), MC(2), MC(3)를 구비하는 1 블럭 복호(A)와 HEADER(B)로 구성된다.Referring to FIG. 10A, one block decoding A having a VLD, an ADR, an IQ / IDCT, an MC (1), an MC (2), and an MC (3) is composed of a HEADER (B).

여기서, VLD는 가변장부호 복호, ADR는 AC/DC 재구성기, IQ/IDCT는 역양자화기/역DCT기를 나타낸다. MC(1)는 이전 참조 영상로딩, MC(2)는 움직임 벡터 재구성기, MC(3)는 움직임 보상기를 나타내며, HEADER(B)는 프로그램에 의한 헤더정보 복호 및 제어기의 레지스터 설정을 나타낸다.Here, VLD denotes variable length code decoding, ADR denotes an AC / DC reconstructor, and IQ / IDCT denotes an inverse quantizer / inverse DCT group. MC 1 denotes a previous reference image loading, MC 2 denotes a motion vector reconstructor, MC 3 denotes a motion compensator, and HEADER (B) denotes header information decoding by a program and register setting of a controller.

기본적인 제어흐름은 도 8에서 제시한 것과 동일하며, 단지 복호에 소요되는 시간을 좀 더 단축하기 위해서 순차적으로 진행하지 않아도 되는 복호장치블럭의 동작을 다른 장치블럭의 동작을 시간적으로 중첩시켰으며, 아래 설명과 같이 제어기의 SM(상태머신)을 수정하면 된다.The basic control flow is the same as that shown in FIG. 8, and the operation of the decoding device block, which does not need to be performed sequentially in order to further shorten the decoding time, is superimposed on the operation of other device blocks. Just modify the SM (state machine) of the controller as described.

상기 1 블럭 복호(A)에 해당하는 처리는 각 복호장치블럭에 의해 수행되며, HEADER(B)는 CPU(프로그램)에 의해 1 매크로블럭 복원시 1회만 수행하면 된다.The processing corresponding to the one block decoding A is performed by each decoder block, and the HEADER (B) only needs to be performed once when restoring one macroblock by the CPU (program).

도 10a에서 MC(1)과 MC(2)의 동작은 VLD, ADR 또는 IQ/IDCT와 병렬로(시간적으로 동시에) 수행될 수 있으며, 단 MC(3)을 수행하기 위해서는 MC(1)과 (2)가 모두 수행되어진 이후어야 한다.In FIG. 10A, operations of the MC 1 and the MC 2 may be performed in parallel with the VLD, the ADR, or the IQ / IDCT (at the same time in time), except that the MC 1 and ( After 2) has been performed.

제어기의 SM(상태머신)에서는 IQ/IDCT로부터 종료 신호를 받은 시점에서 MC(2)의 동작완료상태를 보고 이미 동작 완료되었다면 MC(3)을 수행하고, 그렇지 않다면 MC(2)의 동작완료를 기다린다. 도 10에서 1개의 영상블럭을 복호하기 위해 소요되는 과정을 1 블럭 복호(A)라고 했을 때, 하나의 매크로블럭을 복호하는데는 도 10b와 같이 진행된다.In the SM (state machine) of the controller, when the end signal is received from the IQ / IDCT, the operation completion state of the MC 2 is reported. If the operation is already completed, the MC 3 is performed. Otherwise, the operation completion of the MC 2 is completed. waiting. When a process required to decode one image block in FIG. 10 is 1 block decoding (A), decoding of one macro block proceeds as shown in FIG. 10B.

이상에서와 같이 본 발명에 따르면, 종래 기술에서는 소프트웨어 제어방식을 사용하여 CPU의 활용도를 감소시키거나 프로그램의 복잡성이 증가하는 문제점이 있거나, 하드웨어에 의한 제어 방식에서도 전체 집적회로내에서의 구조적인 복잡성이나 제어흐름의 고정이란 문제점이 있었으나, 본 발명에서 제시한 복호기제어회로부를 따로 두어 제어하게 되면 CPU의 활용도를 증가시킬 수 있으며, 프로그램이나 전체 집적회로 설계시 더욱 간단하게 할 수 있다는 장점이 있다.As described above, according to the present invention, in the prior art, there is a problem of reducing the utilization of the CPU or increasing the complexity of the program using a software control method, or structural complexity in the entire integrated circuit even in a hardware control method. However, there is a problem in that the control flow is fixed, but the control of the decoder control circuit unit presented in the present invention can increase the utilization of the CPU, and there is an advantage that it can be more simplified when designing a program or an integrated circuit.

또한, 특정 복호블럭이 동작중이지 않을 때는 저전력 모드로 자동으로 설정해 줌으로써 전력소모가 크게 문제가 되는 멀티미디어용 집적회로에 적합한 구조이다.In addition, when a specific decoding block is not in operation, it is automatically set to a low power mode, which is suitable for an integrated circuit for multimedia where power consumption is a problem.

본 발명에서 제시한 제어기회로는 단지 영상복호기뿐 아니라 영상부호화기 등에도 그대로 적용시킬 수 있어 그 활용 범위가 매우 넓다는 장점이 있다.The controller circuit proposed in the present invention has the advantage that it can be applied to the image encoder as well as the image decoder as it is, the use range is very wide.

Claims (4)

중앙처리장치(CPU)가 내장된 멀티미디어 집적회로의 보조처리기로 연결되는 영상 복호제어기에 있어서,In the image decoding controller connected to the auxiliary processor of the multimedia integrated circuit having a central processing unit (CPU), 상기 중앙처리장치(CPU)와 인터페이싱되어 영상 복호를 위한 보조 처리 역할을 하는 보조처리기 인터페이스(CI)와;An auxiliary processor interface (CI) interfaced with the central processing unit (CPU) to serve as an auxiliary processing for image decoding; 상기 보조처리기 인터페이스(CI)와 인터페이싱되어 복호제어기를 제어하기 위한 제어값을 설정하거나 복호제어기 및 각 복호블럭의 상태를 읽기 위한 제어레지스터(CR)와;A control register (CR) for interfacing with the coprocessor interface (CI) to set a control value for controlling a decoding controller or to read a state of a decoding controller and each decoding block; 상기 제어레지스터(CR)와 인터페이싱되어 각 복호블럭의 동작시 인터럽트를 발생시키거나 동작 종료 후에 인터럽트를 발생시키기 위한 디버깅 인터페이스(DI)와;A debugging interface (DI) for interfacing with the control register (CR) to generate an interrupt during the operation of each decoding block or to generate an interrupt after the operation ends; 상기 디버깅 인터페이스(DI)와 인터페이싱되어 복호제어기의 매크로블럭 상태를 관리하며, 현재 동작 중인 복호블럭의 동작 완료 이후에 다음 복호블럭의 동작을 지시하는 상태머신(SM)과;A state machine (SM) interfaced with the debugging interface (DI) to manage the macroblock state of the decoding controller, and instructing the operation of the next decoding block after the operation of the decoding block currently in operation; 상기 디버깅 인터페이스(DI)와 인터페이싱되어 각 복호블럭과 통신하여 동작의 시작을 지시하거나 종료신호를 수신하며, 중앙처리장치(CPU)로 인터럽트를 출력시키는 디코딩블럭 인터페이스(DBI)와;A decoding block interface (DBI) interfaced with the debugging interface (DI) to communicate with each decoding block to indicate the start of an operation or to receive an end signal, and to output an interrupt to a central processing unit (CPU); 상기 디코딩블럭 인터페이스(DBI)와 인터페이싱되어 영상복호기를 구성하기 위한 다수개의 디코딩블럭(DB)을 포함하여 이루어진 것을 특징으로 하는 영상복호기의 매크로블럭 레벨 제어회로.And a plurality of decoding blocks (DB) for interfacing with the decoding block interface (DBI) to form an image decoder. 청구항 1에 있어서, 상기 디버깅 인터페이스(DI)에는The method of claim 1, wherein the debugging interface (DI) 제어 레지스터, INT_MODE[M:0] 신호들이 입력되고, 상태 레지스터 신호가 출력되도록 연결되어 있는 레지스터와; NIRQ 신호가 출력되도록 연결되어 있는 중앙처리장치(CPU)와; SM_EN[M:0] 신호가 입력되고, SM_DONE[M:0] 신호가 출력되도록 연결되어 있는 상태머신(SM)과; DONE[M:0] 신호가 입력되고, EN[M:0] 신호가 출력되도록 연결되어 있는 복호블럭과 각각 인터페이싱되는 것을 특징으로 하는 영상복호기의 매크로블럭 레벨 제어회로.A register to which a control register, INT_MODE [M: 0] signals are input, and connected so that a status register signal is output; A central processing unit (CPU) connected to output an NIRQ signal; A state machine SM to which an SM_EN [M: 0] signal is input and connected so that an SM_DONE [M: 0] signal is output; A DONE [M: 0] signal is input, and an macroblock level control circuit of an image decoder, characterized in that each interface is interfaced with a decoded block connected to output an EN [M: 0] signal. 청구항 1에 있어서, 상기 상태머신(SM)에서는 하나의 매크로블록에 대한 복호가 완료되면 복호가 완료되었다는 인터럽트를 발생시키거나 상태 레지스터의 해당 비트값을 특정값으로 설정하는 것을 특징으로 하는 영상복호기의 매크로블럭 레벨 제어회로.The image decoder of claim 1, wherein, when decoding of one macroblock is completed, the state machine SM generates an interrupt indicating that decoding is completed or sets a corresponding bit value of a status register to a specific value. Macro block level control circuit. 청구항 1에 있어서, 상기 영상복호기는 각각의 복호장치블럭에 의해 수행되는 1 블록복호와, 프로그램에 의한 헤더정보 복호 및 제어기의 레지스터를 설정하는 헤더(HEADER)로 구성되어 MPEG-4의 영상복호기에 적용되는 것을 특징으로 하는 영상복호기의 매크로블럭 레벨 제어회로.The video decoder of claim 1, wherein the video decoder comprises one block decoding performed by each decoder block, header information decoding by a program, and a header for setting a register of a controller. Macroblock level control circuit of the image decoder, characterized in that applied.
KR1020010062531A 2001-10-11 2001-10-11 macro block level control circuit of video decoding KR20030030403A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020010062531A KR20030030403A (en) 2001-10-11 2001-10-11 macro block level control circuit of video decoding

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020010062531A KR20030030403A (en) 2001-10-11 2001-10-11 macro block level control circuit of video decoding

Publications (1)

Publication Number Publication Date
KR20030030403A true KR20030030403A (en) 2003-04-18

Family

ID=29564098

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020010062531A KR20030030403A (en) 2001-10-11 2001-10-11 macro block level control circuit of video decoding

Country Status (1)

Country Link
KR (1) KR20030030403A (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8125033B2 (en) 2005-12-13 2012-02-28 Samsung Mobile Display Co., Ltd. Polycrystalline silicon layer, flat panel display using the same, and method of fabricating the same
CN117560501A (en) * 2024-01-11 2024-02-13 杭州国芯科技股份有限公司 Multi-standard video decoder architecture

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5598483A (en) * 1993-04-13 1997-01-28 C-Cube Microsystems, Inc. MPEG video decompression processor
KR19980018215A (en) * 1996-08-19 1998-06-05 윤종용 Video data processing method and device
US5870497A (en) * 1991-03-15 1999-02-09 C-Cube Microsystems Decoder for compressed video signals
KR19990043773A (en) * 1997-11-29 1999-06-15 정선종 Direct memory access controller
KR100333745B1 (en) * 1998-12-29 2002-06-20 이계철 Interface apparatus and method of coding image data

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870497A (en) * 1991-03-15 1999-02-09 C-Cube Microsystems Decoder for compressed video signals
US5598483A (en) * 1993-04-13 1997-01-28 C-Cube Microsystems, Inc. MPEG video decompression processor
KR19980018215A (en) * 1996-08-19 1998-06-05 윤종용 Video data processing method and device
KR19990043773A (en) * 1997-11-29 1999-06-15 정선종 Direct memory access controller
KR100333745B1 (en) * 1998-12-29 2002-06-20 이계철 Interface apparatus and method of coding image data

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8125033B2 (en) 2005-12-13 2012-02-28 Samsung Mobile Display Co., Ltd. Polycrystalline silicon layer, flat panel display using the same, and method of fabricating the same
CN117560501A (en) * 2024-01-11 2024-02-13 杭州国芯科技股份有限公司 Multi-standard video decoder architecture
CN117560501B (en) * 2024-01-11 2024-04-12 杭州国芯科技股份有限公司 Multi-standard video decoder

Similar Documents

Publication Publication Date Title
USRE48845E1 (en) Video decoding system supporting multiple standards
KR100418437B1 (en) A moving picture decoding processor for multimedia signal processing
US8005147B2 (en) Method of operating a video decoding system
US5289577A (en) Process-pipeline architecture for image/video processing
US6507293B2 (en) Processing circuit and method for variable-length coding and decoding
EP1347391A2 (en) System on chip
US20060143615A1 (en) Multimedia processing system and multimedia processing method
EP1689187A1 (en) Method and system for video compression and decompression (CODEC) in a microprocessor
JPH10108199A (en) Image coder
US7760198B2 (en) Display controller
KR20090020460A (en) Method and apparatus for video decoding
KR20030030403A (en) macro block level control circuit of video decoding
EP1351512A2 (en) Video decoding system supporting multiple standards
US20050080784A1 (en) Data processing system
US7590295B2 (en) Semiconductor device and an image processor
US20030165277A1 (en) Data processing system,and data processing method
EP1351513A2 (en) Method of operating a video decoding system
KR100450844B1 (en) Video CODEC processor architecture
JP2004326228A (en) Parallel arithmetic processor
US20090006664A1 (en) Linked DMA Transfers in Video CODECS
JP2006040054A (en) Image processor
JP2005056311A (en) Information processor and electronic device using it
JP2000253405A (en) Pipeline circuit for video decoding
JP2006191545A (en) Dual layer bus architecture for system-on-a-chip
JPH07325912A (en) Data processor and its method

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application