KR101114493B1 - Bitstream processor operating variable length code codec - Google Patents

Bitstream processor operating variable length code codec Download PDF

Info

Publication number
KR101114493B1
KR101114493B1 KR1020080131861A KR20080131861A KR101114493B1 KR 101114493 B1 KR101114493 B1 KR 101114493B1 KR 1020080131861 A KR1020080131861 A KR 1020080131861A KR 20080131861 A KR20080131861 A KR 20080131861A KR 101114493 B1 KR101114493 B1 KR 101114493B1
Authority
KR
South Korea
Prior art keywords
processor
run
bitstream
zigzag
level
Prior art date
Application number
KR1020080131861A
Other languages
Korean (ko)
Other versions
KR20100073242A (en
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 KR1020080131861A priority Critical patent/KR101114493B1/en
Publication of KR20100073242A publication Critical patent/KR20100073242A/en
Application granted granted Critical
Publication of KR101114493B1 publication Critical patent/KR101114493B1/en

Links

Images

Classifications

    • 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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/42Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

본 발명은 프로세서에 관한 것으로, 더욱 상세하게는 다중표준 가변길이부호 코덱을 처리하는 비트스트림 프로세서에 관한 것이다.

본 발명에 따른 비트스트림 프로세서는 비트스트림을 구문처리하여 런 값과 레벨 값을 출력하는 신택스 프로세서; 복수의 지그재그 스캔 순서들을 저장하는 지그재그 테이블; 및 상기 런 값과 레벨 값을 입력받아 런레벨 디코딩을 실행하고, 상기 복수의 지그재그 스캔 순서들 중 상기 비트스트림의 코덱에 해당하는 지그재그 순서에 따라 상기 실행 결과를 저장하는 런레벨 프로세서를 포함하고, 상기 신택스 프로세서는 새로운 지그재그 스캔 순서를 상기 지그재그 테이블에 저장한다. 따라서, 본 발명에 따른 비트스트림 프로세서는 하드와이어드 로직으로 구현된 런레벨 프로세서를 포함하여 성능을 향상시키고, 복수의 지그재그 스캔 순서를 저장하는 테이블을 제어하는 신택스 프로세서를 포함하여 다중 표준 코덱을 지원할 수 있다.

The present invention relates to a processor, and more particularly, to a bitstream processor for processing a multi-standard variable length codec.

A bitstream processor according to the present invention includes a syntax processor that parses a bitstream and outputs a run value and a level value; A zigzag table for storing a plurality of zigzag scan orders; And a run level processor that receives the run value and the level value, executes run level decoding, and stores the execution result according to a zigzag sequence corresponding to the codec of the bitstream among the plurality of zigzag scan sequences. The processor stores the new zigzag scan order in the zigzag table. Accordingly, the bitstream processor according to the present invention may include a runlevel processor implemented in hardwired logic to improve performance and include a syntax processor that controls a table storing a plurality of zigzag scan sequences, and may support multiple standard codecs. .

Description

가변길이부호 코덱을 처리하는 비트스트림 프로세서{BITSTREAM PROCESSOR OPERATING VARIABLE LENGTH CODE CODEC}BITSTREAM PROCESSOR OPERATING VARIABLE LENGTH CODE CODEC

본 발명은 프로세서에 관한 것으로, 더욱 상세하게는 다중표준 가변길이부호 코덱을 처리하는 비트스트림 프로세서에 관한 것이다.The present invention relates to a processor, and more particularly, to a bitstream processor for processing a multi-standard variable length codec.

본 발명은 지식경제부 및 정보통신연구진흥원의 IT원천기술개발사업의 일환으로 수행한 연구로부터 도출된 것이다[과제관리번호 : 2006-S-006-03, 과제명 : 유비쿼터스 단말용 부품 모듈].The present invention is derived from a study conducted as part of the IT source technology development project of the Ministry of Knowledge Economy and the Ministry of Information and Telecommunications Research and Development [Task management number: 2006-S-006-03, task name: ubiquitous terminal component module].

다양한 압축표준에서 사용되는 가변길이부호의 인코딩과 디코딩을 위한 코덱의 구현에는 마이크로프로세서를 사용한 프로그래밍 방법과 하드와이어드 로직(hardwired logic)으로 구현하는 방법이 있다. 마이크로프로세서를 사용한 프로그래밍 방식은 프로그램의 구현에 따라 다양한 표준의 가변길이부호를 처리할 수 있다. 그러나 프로그래밍 방법은 하드와이어드 로직으로 구현하는 방법에 비하여 하나의 부호를 처리하는데 다수의 클럭 사이클이 필요하므로 효율이 떨어진다. Codec implementations for encoding and decoding variable length codes used in various compression standards include a programming method using a microprocessor and a hardwired logic. Programming using a microprocessor can handle variable length codes of various standards, depending on the implementation of the program. However, programming is less efficient than hardwired logic because it requires multiple clock cycles to process a single code.

또한 가변길이 부호 중 런레벨 코딩(Run Level Coding)은 전체 화소 개수의 고정크기의 정보를 처리하는 부분과 보다 적은 수의 가변개수의 정보를 처리한다. 런레벨 코딩과 엔트로피 코딩(entropy coding)을 같이 처리하는 비트스트림 프로세서(bitstream processor)의 경우 런레벨 코딩이 화소 처리 속도에 맞추어 동작한다. 따라서, 보다 빠른 클럭과 성능을 가진 프로세서가 사용되어야 한다. In addition, run level coding among variable length codes processes a part of processing fixed size information of the total number of pixels and a smaller number of variable information. In the case of a bitstream processor that processes runlevel coding and entropy coding together, runlevel coding operates at a pixel processing speed. Therefore, processors with faster clocks and performance should be used.

한편 하드와이어드 로직은 유상 상태 머신(FSM:Finite State Machine)과 같은 고정된 설계를 통해 한가지 기능에 최적화 되도록 설계된다. 하드와이어드 로직은 소비전력이나 부호처리성능 면에서 유리하지만 한 가지 표준에 맞추어 설계되므로 다양한 표준을 처리하기에는 적합하지가 않다.Hardwired logic, on the other hand, is designed to be optimized for one function through a fixed design such as the Finite State Machine (FSM). Hardwired logic is advantageous in terms of power consumption and code processing performance, but it is not designed to handle a variety of standards because it is designed to one standard.

본 발명의 목적은 향상된 성능을 가지는 비트스트림 프로세서를 제공하는 데 있다. It is an object of the present invention to provide a bitstream processor with improved performance.

본 발명의 실시예에 따른 비트스트림 프로세서는 비트스트림을 구문처리하여 런 값과 레벨 값을 출력하는 신택스 프로세서; 복수의 지그재그 스캔 순서들을 저장하는 지그재그 테이블; 및 상기 런 값과 레벨 값을 입력받아 런레벨 디코딩을 실행하고, 상기 복수의 지그재그 스캔 순서들 중 상기 비트스트림의 코덱에 해당하는 지그재그 순서에 따라 상기 실행 결과를 저장하는 런레벨 프로세서를 포함한다. A bitstream processor according to an embodiment of the present invention includes a syntax processor that parses a bitstream and outputs a run value and a level value; A zigzag table for storing a plurality of zigzag scan orders; And a run level processor that receives the run value and the level value, executes run level decoding, and stores the execution result in a zigzag sequence corresponding to the codec of the bitstream among the plurality of zigzag scan sequences.

실시 예로서, 상기 신택스 프로세서는 새로운 지그재그 스캔 순서를 상기 지그재그 테이블에 저장한다. In an embodiment, the syntax processor stores a new zigzag scan order in the zigzag table.

실시 예로서, 상기 런레벨 프로세서는 하드와이어드 로직으로 구현된다. In an embodiment, the runlevel processor is implemented with hardwired logic.

실시 예로서, 상기 신택스 프로세서는 범용의 마이크로프로세서를 포함한다.In an embodiment, the syntax processor includes a general purpose microprocessor.

실시 예로서, 상기 구문처리는, 상기 비트스트림으로부터 0의 개수를 카운트하여 상기 런 값을 생성하고, 0을 제외한 수를 레벨 값으로 출력한다. In an embodiment, the syntax processing generates the run value by counting the number of zeros from the bitstream, and outputs a number except zero as a level value.

실시 예로서, 상기 런 값과 레벨 값을 저장하는 메모리를 더 포함하되, H.264 및 MPEG 4의 경우 상기 런과 레벨은 서로 다른 어드레스 맵을 가진다.The memory device may further include a memory configured to store the run value and the level value. In the case of H.264 and MPEG 4, the run and level may have different address maps.

실시 예로서, MPEG 1-2의 경우 상기 런 값과 레벨 값은 동일한 어드레스 맵을 가진다.In an embodiment, in the case of MPEG 1-2, the run value and the level value have the same address map.

본 발명에 따른 비트스트림 프로세서는 하드와이어드 로직으로 구현된 런레벨 프로세서를 포함하여 성능을 향상시키고, 복수의 지그재그 스캔 순서를 저장하는 테이블을 제어하는 신택스 프로세서를 포함하여 다중 표준 코덱을 지원할 수 있다.The bitstream processor according to the present invention may include a runlevel processor implemented in hardwired logic to improve performance and include a syntax processor that controls a table that stores a plurality of zigzag scan sequences to support multiple standard codecs.

이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 본 발명의 실시예를 첨부된 도면을 참조하여 설명한다.DETAILED DESCRIPTION Hereinafter, exemplary embodiments of the present invention will be described with reference to the accompanying drawings so that those skilled in the art may easily implement the technical idea of the present invention.

도 1은 본 발명의 실시예에 따른 비트스트림 프로세서를 도시한 블록도이다.1 is a block diagram illustrating a bitstream processor according to an embodiment of the present invention.

도 1을 참조하면, 비트스트림 프로세서(100)는 인터럽트 컨트롤러(110), 명령어 디코더(120), pBuf(130), iBuf(140), 런레벨 프로세서(RLP:Run Level Processor ; 150), oBuf(160), 신택스 프로세서(STP:Syntax Processor ; 170), sBuf(180), 지그재그 테이블(Zigzag Table ; 190), 명령어 메모리(Instruction Memory ; 200) 및 데이터 메모리(Data Memory ; 210)을 포함한다. Referring to FIG. 1, the bitstream processor 100 may include an interrupt controller 110, an instruction decoder 120, a pBuf 130, an iBuf 140, a run level processor 150, and an oBuf 160. ), A Syntax Processor (STP) 170, an sBuf 180, a Zigzag Table 190, an Instruction Memory 200, and a Data Memory 210.

인터럽트 컨트롤러(110)는 제1 AMBA(Advanced Microcontroller Bus Architecture)을 통해서 ARM(300)에 의하여 제어된다. 인터럽트 컨트롤러(110)는 인터럽트를 제어하여 ARM(300)과 동기를 이룬다. 명령어 디코더(120)는 ARM(300)의 제어에 응답하여 신택스 프로세서(170)를 제어하기 위한 명령어를 디코딩한다. The interrupt controller 110 is controlled by the ARM 300 through the first Advanced Microcontroller Bus Architecture (AMBA). The interrupt controller 110 controls the interrupt to synchronize with the ARM 300. The instruction decoder 120 decodes an instruction for controlling the syntax processor 170 in response to the control of the ARM 300.

pBuf(130)는 매크로 블록 파라미터(Macro Block parameter)를 저장한다. The pBuf 130 stores macro block parameters.

iBuf(140)는 디코딩(decoding)된 비트스트림을 저장한다. iBuf 140 stores the decoded bitstream.

런레벨 프로세서(150)은 런/레벨(Run/Level) 코딩(Coding) 및 디코딩(Decoding) 그리고 지그재그 스캐닝(zigzag scanning)을 처리한다. 본 발명의 실시예에 따른 런레벨 프로세서(150)는 하드와이어드 로직으로 구현된다. 그리고, 신택스 프로세서(170)는 마이크로 프로세서로 대체될 수 있다. The runlevel processor 150 processes run / level coding and decoding and zigzag scanning. The runlevel processor 150 according to the embodiment of the present invention is implemented by hardwired logic. The syntax processor 170 may be replaced with a microprocessor.

런레벨 프로세서(150)는 하드와이어드 로직으로 구현되므로, 다중 표준 코덱의 지원이 어렵다. 따라서, 신택스 프로세서(170)는 런레벨 프로세서(150)의 지그재그 테이블 메모리를 프로그래밍하여 다중 표준 코덱(Multi-Standard CODEC)을 지원한다. 런레벨 프로세서(150)에 관해서는 도 2 및 도 3을 통하여 상세히 설명된다.Since the runlevel processor 150 is implemented with hardwired logic, it is difficult to support multiple standard codecs. Accordingly, the syntax processor 170 may program a zigzag table memory of the runlevel processor 150 to support a multi-standard codec. The runlevel processor 150 will be described in detail with reference to FIGS. 2 and 3.

oBuf(160)는 신택스 프로세서(170)에서 디코딩된 런/레벨(run/level) 데이터를 저장한다.oBuf 160 stores run / level data decoded by syntax processor 170.

신택스 프로세서(170)는 sBuf(180)을 통해서 비트스트림을 입력받고, 입력받 은 비트스트림을 구문처리(Syntax Processing) 한다. 그 결과로, 신택스 프로세서(170)는 런(run)과 레벨(Level) 값을 oBuf(160)에 차례대로 저장한다. 신택스 프로세서(170)는 비트스트림의 부호화 및 복호화 수행한다. 구문처리는 비트스트림으로부터 0의 개수를 카운트하여 런 값을 생성하고, 0을 제외한 수를 레벨 값으로 출력하는 것이다. The syntax processor 170 receives the bitstream through the sBuf 180, and processes the received bitstream. As a result, the syntax processor 170 sequentially stores the run and level values in the oBuf 160. The syntax processor 170 encodes and decodes the bitstream. Syntax processing generates a run value by counting the number of zeros from the bitstream, and outputs a number except zero as a level value.

sBuf(180)는 디코딩(decoding)할 비트스트림을 저장한다. The sBuf 180 stores a bitstream to be decoded.

지그재그 테이블(190)는 지그재그 스캔 순서(Zigzag scan ordering)를 저장한다. 명령어 메모리(200)는 비트스트림을 처리하기 위한 명령어(Instruction)을 저장하고, 데이터 메모리(210)는 비트스트림을 저장한다. The zigzag table 190 stores a zigzag scan ordering. The instruction memory 200 stores instructions for processing the bitstream, and the data memory 210 stores the bitstream.

ARM(300)는 인터럽트 컨트롤러(110)을 제어를 통하여 런레벨 프로세서(150) 및 신택스 프로세서(170)를 제어한다. DMA(400)는 제2 AMBA를 통해서 pBuf(130), iBuf(140) 및 sBuf(180)를 억세스한다.The ARM 300 controls the run level processor 150 and the syntax processor 170 through controlling the interrupt controller 110. DMA 400 accesses pBuf 130, iBuf 140, and sBuf 180 via a second AMBA.

바람직한 실시예에 있어서, iBuf(140), pBuf(130), oBuf(160) 및 sBuf(180)는 듀얼 메모리(Dual Memory) 구조를 가진다. iBuf(140), pBuf(130) 및 sBuf(180)는 DMA(400)를 통해서만 억세스할 수 있다.In a preferred embodiment, iBuf 140, pBuf 130, oBuf 160 and sBuf 180 have a dual memory structure. iBuf 140, pBuf 130, and sBuf 180 may only be accessed via DMA 400.

구문 처리와 런레벨 코딩(Run Level Coding) 간의 정보 처리 속도가 다르기 때문에, 하나의 프로세서에서 런레벨 코딩과 구문 처리를 같이 할 경우, 신택스 프로세서의 구문 처리 성능에 부담이 될 수 있다.Because the processing speed of information between syntax processing and run level coding is different, it may be a burden on the syntax processing performance of the syntax processor when run level coding and syntax processing are performed in one processor.

따라서, 본 발명의 실시예에 따른 비트스트림 프로세서(100)는 프로그램가능 (programmable)한 신택스 프로세서와 런레벨 코딩과 지그재그 스캐닝(Zigzag Scanning)에 최적화된 하드와이어드 로직으로 구현된 런레벨 프로세서를 포함한다. 신택스 프로세서와 런레벨 프로세서는 버퍼를 통하여 연결되고, 파이프라인 방식으로 메인 시스템(즉, ARM)과 통신한다. Accordingly, the bitstream processor 100 according to an embodiment of the present invention includes a programmable syntax processor and a runlevel processor implemented with hardwired logic optimized for runlevel coding and zigzag scanning. The syntax processor and runlevel processor are connected via a buffer and communicate with the main system (ie ARM) in a pipelined manner.

도 2는 도 1에 도시된 런레벨 프로세서를 상세히 도시한 블록도이다. FIG. 2 is a detailed block diagram illustrating the runlevel processor illustrated in FIG. 1.

도 2를 참조하면, 본 발명의 실시예에 따른 런레벨 프로세서(115)는 어드레스 카운터(Address Counter ; 151), 컨트롤러(Controller ; 152) 및 제로 카운터(Zero Counter ; 153)를 포함한다. Referring to FIG. 2, the run level processor 115 according to an embodiment of the present invention includes an address counter 151, a controller 152, and a zero counter 153.

어드레스 카운터(151)는 지그재그 테이블(190)을 억세스하기 위한 어드레스를 생성한다. 제로 카운터(153)는 지그재그 스캔 순서로 재배열된 데이터의 제로(zero)값을 읽어 런레벨 코드(run-level code)로 변환하여 oBuf(160)에 쓰거나 읽어낸다. The address counter 151 generates an address for accessing the zigzag table 190. The zero counter 153 reads zero values of the rearranged data in a zigzag scan order, converts them into run-level codes, and writes or reads them to the oBuf 160.

컨트롤러(152)는 유한 상태 머신(FSM)에 따라 어드레스 카운터(151), 제로 카운터(153), iBuf(140) 및 oBuf(160)을 제어한다. The controller 152 controls the address counter 151, the zero counter 153, the iBuf 140, and the oBuf 160 in accordance with the finite state machine FSM.

iBuf(140)는 외부에서 접근하는 경우 일반 메모리처럼 직접 접근이 가능하다. 그러나, 런레벨 프로세서(150)가 iBuf(140)를 억세스하는 경우 지그재그 테이블(190)에서 출력된 어드레스와 제로 카운터(153)에서 전달된 데이터를 사용하여 억세스한다. iBuf 140 can be accessed directly like a normal memory when accessed from the outside. However, when the run level processor 150 accesses the iBuf 140, the run level processor 150 accesses the address output from the zigzag table 190 and the data transferred from the zero counter 153.

제2 AMBA를 통하여 16비트씩 전달된 두 개의 데이터는 결합하여 32비트가 된다. iBuf(140)는 32비트 데이터를 저장한다. oBuf(160)는 32비트로 컨캐터네이트(concatenate)된 16비트 제로 런과 16비트 레벨을 저장한다. oBuf(160)의 상위 16비트는 레벨 값을 저장하는 데이터로 사용되고, 하위 16비트는 런 값을 저장한다. oBuf(160)의 어드레스 맵에 관해서는 도 5 및 도 6에서 상세히 설명된다. Two pieces of data transmitted by 16 bits through the second AMBA are combined into 32 bits. iBuf 140 stores 32-bit data. oBuf 160 stores 16-bit zero runs and 16-bit levels concatenated into 32 bits. The upper 16 bits of oBuf 160 are used to store the level value, and the lower 16 bits store the run value. The address map of the oBuf 160 is described in detail in FIGS. 5 and 6.

런레벨 프로세서(150)에서 런(Run)은 0의 개수를 의미하고, 레벨(Level)은 0이 아닌 수(즉, 0를 제외한 수)를 의미한다. 예를 들면, 가변 길이 코드가 00004이면, 런은 4이고, 레벨은 4이다. 지그재그 테이블(190)은 화소 순으로 정렬된 iBuf(140)의 값을 지그재그 스캐닝(zigzag scanning) 순서로 읽어내기 위한 어드레스가 저장된다.In the run level processor 150, Run means a number of zeros, and Level means a non-zero number (ie, a number except zero). For example, if the variable length code is 00004, the run is four and the level is four. The zigzag table 190 stores an address for reading the iBuf 140 arranged in pixel order in a zigzag scanning order.

또한, 데이터 처리 방향은 인코딩(encoding)의 경우 iBuf(140)에서 oBuf(160)이고, 디코딩(decoding)의 경우 oBuf(160)에서 iBuf(140)이다. Also, the data processing direction is iBuf 140 in iBuf 140 for encoding, and iBuf 140 in oBuf 160 in decoding.

MPEG 1과 MPEG 2 경우 런(run)과 레벨(level)은 함께 묶여 하나의 가변 길이 코드로 변환된다(도 6에 도시). 신택스 프로세서(170)는 하나의 가변 길이 코드를 32 비트 단위로 처리한다. H.264와 MPEG4의 경우 런(run)과 레벨(level)은 다른 가변 길이 코드로 변환된다(도 5에 도시). 이 경우 상위 16 비트는 하위 16 비트로 옮겨지며 상위 16 비트는 모두 0이 된다. In the case of MPEG 1 and MPEG 2, the run and level are grouped together and converted into one variable length code (shown in FIG. 6). The syntax processor 170 processes one variable length code in 32 bit units. In the case of H.264 and MPEG4, the run and level are converted to different variable length codes (shown in FIG. 5). In this case, the upper 16 bits are shifted to the lower 16 bits and all upper 16 bits are zero.

H.264 경우 이웃 블록들간의 효율적인 예측(prediction)을 하기 위해 4x4 인트라 예측(intra prediction), 8x8 인트라 예측, 16x16 인트라 예측 중에 한 가지 예측 방법이 선택된다. 런레벨 프로세서(150)는 각 예측 방법을 처리 할 수 있도록 적응적인(Adaptive) 지그재그 스캐닝 순서를 제공한다. 즉, 본 발명의 실시예에 따른 런레벨 프로세서(150)는 하드와이어드 로직으로 구현되지만, H.264, MPEG1, MPEG2, MPEG4 등과 같은 멀티 압축 코덱을 지원할 수 있다. 런레벨 프로세서(150) 가 멀티 압축 코덱을 지원하는 방법은 도 3을 통하여 상세히 설명된다. In the case of H.264, one prediction method is selected among 4x4 intra prediction, 8x8 intra prediction, and 16x16 intra prediction in order to perform efficient prediction between neighboring blocks. The runlevel processor 150 provides an adaptive zigzag scanning sequence to process each prediction method. That is, the runlevel processor 150 according to the embodiment of the present invention is implemented in hardwired logic, but may support multiple compression codecs such as H.264, MPEG1, MPEG2, MPEG4, and the like. How the runlevel processor 150 supports the multi-compression codec is described in detail with reference to FIG. 3.

도 3은 도 1에 도시된 비트스트림 프로세서를 상세히 도시한 블록도이다.3 is a block diagram illustrating in detail the bitstream processor illustrated in FIG. 1.

도 3에 도시된 런레벨 프로세서(150)은 도 2에 도시된 런레벨 프로세서(150)를 상세히 도시한 것이다. 따라서, 중복되는 설명은 생략한다. The runlevel processor 150 shown in FIG. 3 illustrates the runlevel processor 150 shown in FIG. 2 in detail. Therefore, redundant description is omitted.

도 3을 참조하면, 지그재그 테이블(190)은 입력된 비트스트림의 코덱에 따라 적용될 수 있도록 복수의 지그재그 스캐닝 순서들을 저장한다. 지그재그 테이블(190)은 복수의 지그재그 스캐닝 순서를 저장하기 위하여 제1 내지 제4 지그재그 테이블을 포함한다. iBuf(140)와 oBuf(160)는 각각 두 개의 SRAM을 포함한다. Referring to FIG. 3, the zigzag table 190 stores a plurality of zigzag scanning orders so that they can be applied according to the codec of the input bitstream. The zigzag table 190 includes first to fourth zigzag tables to store a plurality of zigzag scanning orders. iBuf 140 and oBuf 160 each include two SRAMs.

DMA(400)는 AMBA 슬레이브 인터페이스(Slave Interface)를 통하여 iBuf(140)를 억세스한다. 또한, DMA(400)는 제로 카운터(153)을 통하여 oBuf(160)의 어드레스를 억세스한다.The DMA 400 accesses the iBuf 140 via an AMBA slave interface. The DMA 400 also accesses the address of the oBuf 160 via the zero counter 153.

런레벨 프로세서(150)는 유한 상태 머신(FSM)에 따라 동작하므로, 유연성(Flexibility)을 가지지 못한다. 그러나, 신택스 프로세서(170)은 oBuf(160)에 저장된 데이터의 값과 순서 그리고 지그재그 테이블의 데이터를 제어할 수 있다. 따라서, 본 발명의 실시예에 따른 비트스트림 프로세서(100)는 다중 표준 코덱에 대하여 유연성을 가진다. The runlevel processor 150 operates according to a finite state machine (FSM) and thus has no flexibility. However, the syntax processor 170 may control the value and order of the data stored in the oBuf 160 and the data of the zigzag table. Accordingly, the bitstream processor 100 according to the embodiment of the present invention has flexibility with respect to multiple standard codecs.

도 4는 도 1에 도시된 oBuf를 도시한 블록도이다.FIG. 4 is a block diagram illustrating the oBuf shown in FIG. 1.

도 4를 참조하면, 본 발명의 실시예에 따른 oBuf(160)는 2개의 16비트 메모리(SRAM)을 포함한다. 신택스 프로세서(170)는 런 값과 레벨 값을 디코딩하여 oBuf(160)에 저장할때, H.264, MPEG4 경우 런 값을 먼저 디코딩하여 obuf(160)에 저장하고, 그 다음 레벨 값을 디코딩하여 obuf(160)에 저장한다. 반면 MPEG1,2 경우 신택스 프로세서(170)는 런 값과 레벨 값을 동시에 디코딩한다. Referring to FIG. 4, an oBuf 160 according to an embodiment of the present invention includes two 16-bit memories (SRAMs). When the syntax processor 170 decodes the run value and the level value and stores the value in the oBuf 160, the H.264 and MPEG4 first decodes the run value and stores the value in the obuf 160, and then decodes the level value. Save to 160. In the case of MPEG1 and 2, the syntax processor 170 decodes the run value and the level value simultaneously.

따라서, 본 발명의 실시예에 따른 oBuf(160)는 H.264, MPEG1, MPEG2 및 MPEG4 모두 적용할 수 있도록 16비트로 이루어진 2개의 메모리로 구성된다. 본 발명의 실시예에 따른 메모리는 SRAM을 예시하였으나, DRAM 또는 불휘발성 메모리로도 구현될 수 있다. Accordingly, the oBuf 160 according to the embodiment of the present invention is composed of two memories composed of 16 bits so that all of H.264, MPEG1, MPEG2, and MPEG4 can be applied. The memory according to the embodiment of the present invention illustrates the SRAM, but may also be implemented as a DRAM or a nonvolatile memory.

도 5는 본 발명의 실시예에 따른 oBuf의 어드레스 맵(Address Map)이고, 도 6은 본 발명의 또 다른 실시예에 따른 oBuf의 어드레스 맵이다. 5 is an address map of an oBuf according to an embodiment of the present invention, and FIG. 6 is an address map of an oBuf according to another embodiment of the present invention.

도 5에 도시된 바와 같이, H.264와 MPEG4 경우 런과 레벨은 서로 다른 어드레스를 가지고 있어야 한다. 도 6에 도시된 바와 같이, MPEG 1,2 경우 런과 레벨은 같은 어드레스를 가지고 있어야 한다.As shown in Fig. 5, in H.264 and MPEG4, the run and level should have different addresses. As shown in FIG. 6, in case of MPEG 1,2, runs and levels should have the same address.

도 7은 도 1에 도시된 지그재그 테이블과 런레벨 프로세서의 연결을 도시한 블록도이다. FIG. 7 is a block diagram illustrating a connection between a zigzag table and a run level processor illustrated in FIG. 1.

도 7을 참조하면, 신택스 프로세서(170)는 제1 멀티플렉서(MUX1)와 디멀티플렉서(DEMUX)를 통하여 지그재그 테이블(190)을 프로그램할 수 있다. 런레벨 프로세서(150)는 비트스트림의 코덱에 따라 제2 멀티플렉서(MUX2)를 통하여 지그재그 테이블(190)에 저장된 지그재그 스캔 순서들 중 하나를 참조한다. Referring to FIG. 7, the syntax processor 170 may program the zigzag table 190 through the first multiplexer MUX1 and the demultiplexer DEMUX. The runlevel processor 150 refers to one of zigzag scan sequences stored in the zigzag table 190 through the second multiplexer MUX2 according to the codec of the bitstream.

H.264 경우 화면 구성에 맞는 최적화된 예측으로 비트스트림을 최소한으로 줄이기 위해 4x4 인트라 예측, 16x16 인트라 예측 등이 사용된다. In the case of H.264, 4x4 intra prediction and 16x16 intra prediction are used to reduce the bitstream to the minimum with optimized prediction for the screen configuration.

런레벨 프로세서(150)은 유한 상태 머신(FSM)으로 이루어진다. 또한, 런레벨 프로세서(150)은 하드와이어드 타입으로 이루어져 여러가지 예측(prediction) 타입에 대한 적응성이 떨어진다. 지그재그 테이블(190)은 제1 내지 제4 지그재그 테이블을 포함한다. 따라서, 제1 내지 제4 지그재그 테이블 각각은 여러 가지 예측 타입에 적용될 수 있다. The runlevel processor 150 consists of a finite state machine (FSM). In addition, the run-level processor 150 is made of a hard-wired type, which is inadequate for various prediction types. The zigzag table 190 includes first to fourth zigzag tables. Accordingly, each of the first to fourth zigzag tables may be applied to various prediction types.

본 발명의 실시예에 따른 비트스트림 프로세서는 구문(syntax) 처리를 수행하는 마이크로프로세서(microprocessor) 형식의 신택스 프로세서와 런레벨 코딩을 담당하는 하드와이어드 타입의 런레벨 프로세서를 포함한다. 즉, 본 발명은 신택스 프로세서와 런레벨 프로세서를 독립적으로 동작되므로, 신택스 프로세서의 동작 주파수를 낮춰 전력 소모를 감소시킨다. 또한, 본 발명은 하드와이어드 타입의 런레벨 프로세서를 사용하여 칩사이즈를 감소시키고, 생산 단가를 낮출 수 있다. A bitstream processor according to an embodiment of the present invention includes a microprocessor-type syntax processor that performs syntax processing and a hard-wired runlevel processor that is responsible for run level coding. That is, the present invention operates the syntax processor and the run-level processor independently, thereby lowering the operating frequency of the syntax processor to reduce power consumption. In addition, the present invention can reduce the chip size and lower the production cost by using a hard-wired run level processor.

또한 런레벨 프로세서는 복수의 지그재그 테이블들을 포함하고, 신택스 프로세서는 레지스터를 통하여 상기 지그재그 테이블을 제어함으로써, 다중 압축 표준을 지원할 수 있다. The runlevel processor also includes a plurality of zigzag tables, and the syntax processor can support multiple compression standards by controlling the zigzag table through registers.

이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.As described above, optimal embodiments have been disclosed in the drawings and the specification. Although specific terms have been used herein, they are used only for the purpose of describing the present invention and are not intended to limit the scope of the invention as defined in the claims or the claims. Therefore, those skilled in the art will understand that various modifications and equivalent other embodiments are possible from this. Therefore, the true technical protection scope of the present invention will be defined by the technical spirit of the appended claims.

도 1은 본 발명의 실시예에 따른 비트스트림 프로세서를 도시한 블록도이다.1 is a block diagram illustrating a bitstream processor according to an embodiment of the present invention.

도 2는 도 1에 도시된 런레벨 프로세서를 상세히 도시한 블록도이다. FIG. 2 is a detailed block diagram illustrating the runlevel processor illustrated in FIG. 1.

도 3은 도 1에 도시된 비트스트림 프로세서를 상세히 도시한 블록도이다.3 is a block diagram illustrating in detail the bitstream processor illustrated in FIG. 1.

도 4는 도 1에 도시되 oBuf를 도시한 블록도이다.4 is a block diagram illustrating oBuf shown in FIG. 1.

도 5는 H.264와 MPEG 4의 경우 본 발명의 실시예에 따른 oBuf의 어드레스 맵이다. 5 is an address map of oBuf according to an embodiment of the present invention in the case of H.264 and MPEG 4.

도 6은 MPEG 1 및 MPEG 2의 경우 본 발명의 또 다른 실시예에 따른 oBuf의 어드레스 맵이다. 6 is an address map of oBuf according to another embodiment of the present invention in the case of MPEG 1 and MPEG 2.

도 7은 도 1에 도시된 지그재그 테이블과 런레벨 프로세서의 연결을 도시한 블록도이다. FIG. 7 is a block diagram illustrating a connection between a zigzag table and a run level processor illustrated in FIG. 1.

* 도면의 주요 부분에 대한 부호 설명 *Description of the Related Art [0002]

110; 인터럽트 컨트롤러 120; 명령어 디코더110; Interrupt controller 120; Instruction decoder

130; pBuf 140; iBuf130; pBuf 140; iBuf

150; 런레벨 프로세서 160; oBuf150; Runlevel processor 160; oBuf

170; 신택스 프로세서 180; sBuf170; Syntax processor 180; sBuf

190; 지그재그 테이블 200; 명령어 메모리190; Zigzag table 200; Instruction memory

Claims (7)

비트스트림을 구문처리하여 런 값과 레벨 값을 출력하는 신택스 프로세서;A syntax processor for parsing the bitstream and outputting a run value and a level value; 복수의 지그재그 스캔 순서들을 저장하는 지그재그 테이블; 및A zigzag table for storing a plurality of zigzag scan orders; And 상기 런 값과 레벨 값을 입력받아 런레벨 디코딩을 실행하고, 상기 복수의 지그재그 스캔 순서들 중 상기 비트스트림의 코덱에 해당하는 지그재그 순서에 따라 상기 실행 결과를 저장하는 런레벨 프로세서를 포함하는 비트스트림 프로세서.And a run level processor configured to receive the run value and the level value, execute run level decoding, and store the execution result in a zigzag order corresponding to a codec of the bitstream among the plurality of zigzag scan orders. 제 1 항에 있어서,The method of claim 1, 상기 신택스 프로세서는 새로운 지그재그 스캔 순서를 상기 지그재그 테이블에 저장하는 비트스트림 프로세서.And the syntax processor stores a new zigzag scan order in the zigzag table. 제 1 항에 있어서,The method of claim 1, 상기 런레벨 프로세서는 하드와이어드 로직으로 구현되는 비트스트림 프로세서.The runlevel processor is a bitstream processor implemented by hardwired logic. 제 1 항에 있어서,The method of claim 1, 상기 신택스 프로세서는 범용의 마이크로프로세서를 포함하는 비트스트림 프로세서.And the syntax processor comprises a general purpose microprocessor. 제 1 항에 있어서,The method of claim 1, 상기 구문처리는, The syntax processing is 상기 비트스트림으로부터 0의 개수를 카운트하여 상기 런 값을 생성하고, 0을 제외한 수를 레벨 값으로 출력하는 비트스트림 프로세서.And counting the number of zeros from the bitstream to generate the run value, and outputting a number other than zero as a level value. 제 1 항에 있어서,The method of claim 1, 상기 런 값과 레벨 값을 저장하는 메모리를 더 포함하되, Further comprising a memory for storing the run value and the level value, H.264 및 MPEG 4의 경우 상기 런과 레벨은 서로 다른 어드레스 맵을 가지는 비트스트림 프로세서.For H.264 and MPEG 4, the run and level have different address maps. 제 6 항에 있어서,The method of claim 6, MPEG1 및 MPEG2의 경우 상기 런 값과 레벨 값은 동일한 어드레스 맵을 가지는 비트스트림 프로세서.In the case of MPEG1 and MPEG2, the run value and the level value have the same address map.
KR1020080131861A 2008-12-23 2008-12-23 Bitstream processor operating variable length code codec KR101114493B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080131861A KR101114493B1 (en) 2008-12-23 2008-12-23 Bitstream processor operating variable length code codec

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080131861A KR101114493B1 (en) 2008-12-23 2008-12-23 Bitstream processor operating variable length code codec

Publications (2)

Publication Number Publication Date
KR20100073242A KR20100073242A (en) 2010-07-01
KR101114493B1 true KR101114493B1 (en) 2012-02-27

Family

ID=42636226

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080131861A KR101114493B1 (en) 2008-12-23 2008-12-23 Bitstream processor operating variable length code codec

Country Status (1)

Country Link
KR (1) KR101114493B1 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100450844B1 (en) 2002-02-21 2004-10-01 (주)씨앤에스 테크놀로지 Video CODEC processor architecture

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100450844B1 (en) 2002-02-21 2004-10-01 (주)씨앤에스 테크놀로지 Video CODEC processor architecture

Also Published As

Publication number Publication date
KR20100073242A (en) 2010-07-01

Similar Documents

Publication Publication Date Title
US9351003B2 (en) Context re-mapping in CABAC encoder
US9392292B2 (en) Parallel encoding of bypass binary symbols in CABAC encoder
US7443318B2 (en) High speed context memory implementation for H.264
Zhou et al. A 530 Mpixels/s 4096x2160@ 60fps H. 264/AVC high profile video decoder chip
US20080267293A1 (en) Video Encoder Software Architecture for VLIW Cores
JP3558840B2 (en) Apparatus and method for detecting bit stream signal format in signal processing system
CN104253992B (en) Picture decoding apparatus
CN101179720B (en) Video decoding method
Kammoun et al. Design exploration of efficient implementation on SoC heterogeneous platform: HEVC intra prediction application
US8625677B2 (en) Apparatus processing video stream
CN107844321B (en) MCU processing system
JP2005209108A (en) Microcomputer with external memory
KR101114493B1 (en) Bitstream processor operating variable length code codec
KR102035759B1 (en) Multi-threaded texture decoding
Zhou et al. A hardware decoder architecture for general string matching technique
US7590295B2 (en) Semiconductor device and an image processor
JP4563300B2 (en) Table device, variable length encoding / decoding device, variable length encoding device, and variable length decoding device
JP2004246889A (en) Computer system for incorporating sequential buffer and improving dsp data access performance, and access method therefor
KR100824174B1 (en) Encoding/decoding device
JP2004326228A (en) Parallel arithmetic processor
Chang et al. An efficient embedded bitstream parsing processor for MPEG-4 video decoding system
US7801224B1 (en) Optimizing decoders on a hardware platform that supports video acceleration
KR100450844B1 (en) Video CODEC processor architecture
US7733122B2 (en) Semiconductor device
AU728882B2 (en) Compression

Legal Events

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

Payment date: 20150126

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee