KR100450844B1 - 비디오 코덱 프로세서의 아키텍쳐 - Google Patents

비디오 코덱 프로세서의 아키텍쳐 Download PDF

Info

Publication number
KR100450844B1
KR100450844B1 KR10-2002-0009341A KR20020009341A KR100450844B1 KR 100450844 B1 KR100450844 B1 KR 100450844B1 KR 20020009341 A KR20020009341 A KR 20020009341A KR 100450844 B1 KR100450844 B1 KR 100450844B1
Authority
KR
South Korea
Prior art keywords
cpu
data
memory
video codec
image
Prior art date
Application number
KR10-2002-0009341A
Other languages
English (en)
Other versions
KR20030069527A (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 KR10-2002-0009341A priority Critical patent/KR100450844B1/ko
Publication of KR20030069527A publication Critical patent/KR20030069527A/ko
Application granted granted Critical
Publication of KR100450844B1 publication Critical patent/KR100450844B1/ko

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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • 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/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
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • H04N19/433Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access

Abstract

본 발명은 비디오 코덱 프로세서의 아키텍쳐에 관한 것이다. 특히, 각 코프로세서들의 병렬 동작이 쉽게 이루어질 수 있도록 하여 데이터의 제어 동작이 자유롭게 함과 더불어 고속의 성능을 기대 할 수 있도록 하였다.
본 발명에 따르면, 비디오 코덱(CODEC)의 처리 및 제어를 위한 VP/CPU와, 프로토콜(protocol)의 처리 및 제어를 위한 PP/CPU 간에 코프로세서(coprocessor)로 공유되어 상기 CPU 프로그램의 제어에 의해 외부로부터 입력된 영상 데이터 또는 외부로 전송될 영상 데이터에 대한 인코딩(encoding)을 수행하기 위한 비디오 코덱 프로세서의 아키텍쳐에 있어서, 인코딩할 초기의 이미지를 만드는 전처리기(Pre processor)와; 이전 프레임으로부터 인코딩할 매크로 블록 이미지와 가장 유사한 위치인 움직임 벡터를 추정하는 움직임추정기(ME)와; 상기 VP/CPU의 명령에 따라 움직임추정기(ME)에서 추정된 움직임 벡터를 기준으로 이전 프레임 데이터와 인코딩할 이미지 데이터의 차분치를 구하는 움직임보상기(MC-)와; 상기 VP/CPU의 명령에 따라 이산여현 변환 동작을 수행함과 더불어 양자화를 수행하는 이산여현변환기/양자화기(DCT/Q)와; 상기 인코딩된 이미지를 지그재그 스캔 방식으로 데이터를 읽어 허프만 인코딩을 통해 비트스트림으로 만드는 가변장부호기(VLC)와; 상기 VP CPU로부터 인코딩 백워드 명령을 받은 뒤 인코딩 메모리부터 데이터를 읽어 동작 후 인코딩 메모리에 데이터를 저장하는 역이산여현변환기/역양자화기(IDCT/IQ)와; 상기 VP/CPU의 명령에 따라 움직임추정기(ME)에서 찾은 움직임 벡터를 기준으로 이전 프레임 데이터와 IDCT의 결과값을 더하여 현재의 프레임을 만들어내는 움직임보상기(MC+)와; 상기 움직임보상기(MC+)로부터의 현재 프레임을 저장하는 외부메모리(external memory)를 포함하는 비디오 코덱 프로세서의 아키텍쳐가 제시된다.

Description

비디오 코덱 프로세서의 아키텍쳐{Video CODEC processor architecture}
본 발명은 프로그램이 가능하며 고속의 성능을 내기 위한 비디오 코덱 프로세서의 아키텍쳐에 관한 것이다.
H.263 등의 비디오 코덱 프로세서를 구현하는 방법으로는 고성능의 DSP 코어를 바탕으로 CODEC 알고리즘을 프로그램적으로 적용하는 방법과 전용 하드웨어를구성하는 방법이 있다.
DSP 코어(core)를 이용하는 방법은 모든 동작을 프로그램에 의해 처리하므로 융통성(flexibility)이 뛰어나지만 고속의 성능을 내기 어렵다는 단점이 있다. 전용 하드웨어로 구현하는 방법은 고속으로 코덱을 처리할 수 있으나 하드웨어의 크기가 커지고 융통성이 떨어진다는 단점이 있다.
또한, 이러한 방법은 효율적인 구조로 구성되지 않을 경우 하드웨어의 사용에 비해 고성능을 발휘하기가 어려웠다.
고속의 비디오 코덱을 구현하기 위해서는 코덱 처리를 하드웨어로 해야 하며, 이와 관련된 기존의 비디오 코덱 기술은 미국특허 US 5,982,459와 US 5,781,788에 각각 제시되어 있다.
상기 공지된 미국 특허 US 5,982,459에서는 시퀸스를 처리해 주는 콘트롤러에 의해 각 블럭들의 동작을 처리하도록 되어 있다. 이러한 구조는 효율적인 성능을 얻는데는 효과적인 구조일 수 있으나, 프로세싱 처리 도중에 상위 레벨에서 전달되는 정보들을 반영하기 어렵다거나 시스템 구현시 사용자의 융통성이 떨어지게 되는 단점이 있었다.
상기 공지된 미국 특허 US 5,781,788에서는 각 블럭들의 동작을 CPU가 제어하며 각 동작 블럭들은 동작 결과를 DRAM memory controller를 통하여 외부 메모리에 저장하거나 공통 메모리 버스를 통하여 한 개의 메모리에 저장하도록 되어 있다.
이러한 구조에서는 CPU 프로그램에 의해 처리과정이 결정되므로 융통성은 높아지지만 각 블럭의 출력이 한 개의 공통 메모리 버스에 의해 저장되므로 블럭들의 병렬 동작이 어렵다거나 성능이 저하된다. 따라서 많은 하드웨어를 포함한 구조임에도 불구하고 효과적인 성능을 기대하기 어렵다.
또한, CPU가 인코딩(encoding)/디코딩(decoding)/디스플레이 이미지(display image)를 제어하기 어렵다. 이러한 구조는 에러 은폐를 자유롭게 구현하기 어려우며, 시스템에서 필요로 하는 이미지를 자유롭게 디스플레이 하기에는 어려움이 많다는 단점이 있다.
도 1에 도시된 코프로세서(coprocessor)를 포함한 구조와 같이 여러 블럭에서 메인 데이터 버스(main data bus)를 구동하는 일반적인 구조를 나타내었다.
도 1를 살펴보면, 각각의 제어 데이터를 구비하는 다수개의 코프로세서(10,20...)가 NOT 논리회로(12,22...)에 의해 메인 데이터 버스와 연결되어 있으며, 각 블럭에서 메인 데이터 블럭의 구동 여부를 판단하여 제어신호를 통해 트리 스테이트 버퍼(tri-state buffer)를 열고 닫음으로써 충돌을 방지하는 구조이다.
이 때, 제어신호가 메인 클럭에 의해 만들어지는데 각 블럭에서 만들어지는 제어신호는 도 2에 도시된 바와 같이, 클럭의 스큐(skew)나 line 라우팅(routing) 혹은 게이트 딜레이(gate delay) 등의 이유로 모두 약간의 오차를 지니게 된다. 따라서, 그 오차로 인해 두개의 트리 스테이트 버퍼가 모두 열리는 구간 동안에는 서로 충돌이 일어나게 되어 이로 인해 전력 소비가 커지게 되는 문제점이 발생된다.
이에, 본 발명은 상기한 문제점을 해결하기 위한 것으로서 본 발명의 목적은 각 코프로세서들의 병렬 동작이 쉽게 이루어질 수 있도록 하여 데이터의 제어 동작이 자유롭게 함과 더불어 고속의 성능을 기대 할 수 있도록 하는 비디오 코덱 프로세서의 아키텍쳐를 제공하는데 있다.
상기한 본 발명의 목적을 달성하기 위한 기술적 사상으로써 본 발명은
비디오 코덱(CODEC)의 처리 및 제어를 위한 VP/CPU와, 프로토콜(protocol)의 처리 및 제어를 위한 PP/CPU 간에 코프로세서(coprocessor)로 공유되어 상기 CPU 프로그램의 제어에 의해 외부로부터 입력된 영상 데이터 또는 외부로 전송될 영상 데이터에 대한 인코딩(encoding)을 수행하기 위한 비디오 코덱 프로세서의 아키텍쳐에 있어서,
인코딩할 초기의 이미지를 만드는 전처리기(Pre processor)와; 이전 프레임으로부터 인코딩할 매크로 블록 이미지와 가장 유사한 위치인 움직임 벡터를 추정하는 움직임추정기(ME)와; 상기 VP/CPU의 명령에 따라 움직임추정기(ME)에서 추정된 움직임 벡터를 기준으로 이전 프레임 데이터와 인코딩할 이미지 데이터의 차분치를 구하는 움직임보상기(MC-)와; 상기 VP/CPU의 명령에 따라 이산여현 변환 동작을 수행함과 더불어 양자화를 수행하는 이산여현변환기/양자화기(DCT/Q)와; 상기 인코딩된 이미지를 지그재그 스캔 방식으로 데이터를 읽어 허프만 인코딩을 통해 비트스트림으로 만드는 가변장부호기(VLC)와; 상기 VP CPU로부터 인코딩 백워드 명령을 받은 뒤 인코딩 메모리부터 데이터를 읽어 동작 후 인코딩 메모리에 데이터를 저장하는 역이산여현변환기/역양자화기(IDCT/IQ)와; 상기 VP/CPU의 명령에 따라 움직임추정기(ME)에서 찾은 움직임 벡터를 기준으로 이전 프레임 데이터와 IDCT의 결과값을 더하여 현재의 프레임을 만들어내는 움직임보상기(MC+)와; 상기 움직임보상기(MC+)로부터의 현재 프레임을 저장하는 외부메모리(external memory)를 포함하는 것을 특징으로 하는 비디오 코덱 프로세서의 아키텍쳐가 제공된다.
도 1은 종래 코프로세서(coprocessor)의 개략 구성도이다.
도 2는 코프로세서의 타이밍도이다.
도 3은 본 발명에 따른 비디오 코덱 프로세서의 블럭 구성도이다.
도 4는 본 발명에 따라 비디오 코덱 프로세서의 인코딩(encoding) 흐름을 설명하기 위한 구성도이다.
도 5는 본 발명에 따라 비디오 코덱 프로세서의 디코딩(decoding) 흐름을 설명하기 위한 구성도이다.
도 6은 본 발명에 의한 코프로세서의 개략 구조도이다.
도 7은 코프로세서의 타이밍도이다.
이하, 본 발명의 실시예에 대한 구성 및 그 작용을 첨부한 도면을 참조하면서 상세히 설명하기로 한다.
도 3은 본 발명에 따른 비디오 코덱 프로세서의 블럭 구성도이다. 도 4는 비디오 코덱 프로세서의 인코딩 흐름을 도시하였으며, 도 5는 비디오 코덱 프로세서의 디코딩 흐름을 도시하였다. 도 6은 본 발명에 의한 코프로세서 구조도를 나타내며, 도 7은 본 발명에 의한 코프로세서의 타이밍도이다.
도 3을 살펴보면, 명령 메모리(Instruction Memory; 102), 움직임추정/움직임보상 메모리(ME/MC memory; 104), 이산여현변환 메모리(DCT memory; 106), 디코더 메모리(Decoder memory; 108), 가변장 메모리(VLC memory; 110), 인코더 메모리(Encoder memory; 112), 전처리/후처리 프로세서 메모리(pre/post procesor memory; 114)를 구비하여 비디오 코덱을 처리하는 VP와의 데이터 인터페이싱 상태에서 각 프로세스간의 데이터를 저장하여 주고 받을 수 있도록 하는 메모리수단과;
비디오프로세서 중앙처리장치(VP CPU; 202), 움직임추정기/움직임보상기(ME/MC; 204), 이산여현변환기(DCT; 206), 가변장복호기(VLD; 208), 가변장부호기(VLC; 210), 공통메모리 콘트롤러(Com_memController; 212), 디램 콘트롤러/직접메모리 액세스(DRAM controller/DMA; 214), 전처리/후처리 프로세서(pre/post processor; 216)를 구비하여 상기 메모리수단과 인터페이싱되어 각 프로세서간의 데이터 흐름을 제어하기 위한 VP 제어수단과;
인터페이스 프로세서 블록/듀얼 포트 메모리(IPB/dual port memory; 302), 프로토콜 프로세서 중앙처리장치(PP CPU; 304), 메모리 콘트롤러/직접메모리 액세스(memory controller/DMA; 306), 가변장부호기/가변장복호기 버퍼(VLC/VLD BUF; 308), 주변장치(PERIPHERALS; 310)(IIC,TDM,UART,GPIO,INT_CTRL,HOST I/F)를 구비하여 상기 VP 제어수단과의 어드레스, 데이터 등을 주고 받을 수 있도록 제어하는 PP 제어수단으로 구성되어 있다.
상기에서와 같이 본 발명은 IPB(Interface Processor Block)(302)을 포함하고 있는 코프로세서의 아키텍쳐로서 비디오 코덱(CODEC)을 처리하는 부분(VP)와 프로토콜을 처리하는 부분(PP)으로 구성되어 있으며 서로의 데이터 등 정보 공유를 위해 IPB가 두 프로세서 사이에 연결되어 있다.
이 때, 상기 VP에서는 VLD/VLC, DCT/IDCT, ME, MC 등의 영상 코덱 코프로세서들을 통해 외부로부터 입력된 혹은 전송될 영상 데이터들에 대한 인코딩과 디코딩을 수행한다. 또한, IPB(302)는 VP와 PP간의 정보를 서로 주고 받기 위한 블록으로서 3가지의 기능을 갖게 되는데 첫째, 데이터를 읽고 쓰는(read/write) 기능과, 둘째 시스템 부팅시 VP 프로그램의 다운로드 기능과, 세째 VP의 리셋 신호 제어 기능이 있다.
도 4에 도시된 비디오 코덱 코프로세서의 인코딩 흐름은 인코딩할 초기의 이미지를 만드는 전처리기(Pre processor; 402)와; 이전 프레임으로부터 인코딩할 매크로 블록 이미지와 가장 유사한 위치인 움직임 벡터를 추정하는 움직임추정기(ME; 404)와; 상기 VP/CPU의 명령에 따라 움직임추정기(ME)에서 추정된 움직임 벡터를 기준으로 이전 프레임 데이터와 인코딩할 이미지 데이터의 차분치를 구하는 움직임보상기(MC-; 406)와; 상기 VP/CPU의 명령에 따라 이산여현 변환 동작을 수행함과 더불어 양자화를 수행하는 이산여현변환기/양자화기(DCT/Q; 408)와; 상기 인코딩된 이미지를 지그재그 스캔 방식으로 데이터를 읽어 허프만 인코딩을 통해 비트스트림으로 만드는 가변장부호기(VLC; 410)와; 상기 VP CPU로부터 인코딩 백워드 명령을 받은 뒤 인코딩 메모리부터 데이터를 읽어 동작 후 인코딩 메모리에 데이터를 저장하는 역이산여현변환기/역양자화기(IDCT/IQ; 412)와; 상기 VP/CPU의 명령에 따라 움직임추정기(ME)에서 찾은 움직임 벡터를 기준으로 이전 프레임 데이터와 IDCT의 결과값을 더하여 현재의 프레임을 만들어내는 움직임보상기(MC+; 414)와; 상기 움직임보상기(MC+)로부터의 현재 프레임을 저장하는 외부메모리(external memory; 416)로 구성되어 있다.
도 5에 도시된 비디오 코덱 코프로세서의 디코딩 흐름은 상기 PP의 전송로를 통해 받아들인 비트스트림(bitstream)을 블럭 단위로 디코딩 메모리에 저장하는 가변장복호기(VLD; 502)와; 상기 VP/CPU로부터 디코딩 명령을 받은 뒤 디코딩 메모리부터 데이터를 읽어 동작한 후 데이터를 디코딩 메모리에 저장하는 역이산여현변환기/역양자화기(IDCT/IQ; 504)와; 상기 VP/CPU의 명령에 따라 움직임 벡터를 기준으로 이전 프레임 데이터와 IDCT의 결과값을 더하여 현재의 프레임을 만들어내는 움직임보상기(MC+; 506)와; 상기 움직임보상기(MC+)로부터의 현재 프레임을 저항하는 외부메모리(external memory; 508)로 구성되어 있다.
상기 VLD(502)는 전송받은 비트스트림(bitstream)을 해당 테이블을 이용하여 허프만 디코딩(huffman decoding)하는 코프로세서이며, 비디오 프로토콜에 맞게 지그재그 위치하여 데이터를 저장한다.
VLC(410)에서는 인코딩된 이미지를 지그재그 스캔 방식으로 데이터를 읽어 허프만 인코딩을 통해 비트스트림으로 만들어낸다. DCT/Q(408), IDCT/Q(412) 코프로세서 방식에서는 CPU의 명령에 따라 이산여현변환과 양자화 혹은 역이산여현 변환과 역양자화를 계산한다.
ME(404)는 고속 움직임 추정(motion estimation)을 하는 코프로세서로서 이전 프레임으로부터 인코딩할 매크로 블록 이미지와 가장 유사한 위치인 움직임 벡터(MV)를 찾아내고 두 이미지의 차분치를 구한다.
MC-(406)/MC+(414) 코프로세서는 CPU 명령에 따라 ME(404)에서 찾은 움직임 벡터를 기준으로 MC 메모리의 이전 프레임 데이터와 인코딩할 이미지 데이터의 차분치를 구하거나(MC-) 이전 프레임과 IDCT(412)의 결과값을 더하여(MC+) 현재의 프레임을 만들어 낸다.
이 때, 각 기능 블록들은 CPU를 중심으로 한 코프로세서 구조로 인터페이스 되며, VP CPU는 DRAM 콘트롤러와 함께 영상 압축 및 복원에 대한 전체적인 흐름을 제어한다. CPU에서 코프로세서 인터페이스를 통해 코프로세서 내부의 레지스터를 read/write 하거나 명령을 보낼때에는 코프로세서의 응답을 받고 수행된다.
예들 들어, CPU에서 특정 코프로세서의 레지스터를 read 하고자 할 때 CPU에서 나오는 신호와 데이터 버스의 값을 참조로 해당되는 코프로세서는 먼저 그 명령을 받았음을 나타내는 신호를 보낸다. 다음에 코프로세서가 레지스터의 값을 데이터 버스에 싣게 되면 코프로세서는 요청한 동작을 수행했음을 나타내는 신호를 내보낸다.
따라서, CPU는 코프로세서가 두번째 인식 신호를 보낼 때까지 기다리게 되는데 이러한 방식은 CPU와 독립적으로 계산을 수행하는 코프로세서의 동작 중간에 다른 명령을 내리지 않게 할 수 있도록 해준다. 인코딩과 디코딩을 수행하는 CODEC 코프로세서들이 VP CPU의 명령에 의해 제어되므로 구현시 프로그램 성능을 높였으며 병렬 동작을 가능토록 하여 고성능이 가능하도록 하였다.
이러한 프로그램은 시스템 부팅시 외부로부터 VP SRAM으로 IPB 블록을 통해 다운로드하여 이용하게 되므로 영상 CODEC에 관련된 모든 통제를 프로그램을 통하여 수정 혹은 교체할 수 있으며 따라서 하드웨어에 대한 사용자의 직접적인 접근이 용이하다.
이어서, 도 3,4,5를 바탕으로 본 발명의 비디오 코덱 프로세서의 전반적인 동작에 대하여 살펴보기로 한다.
PP에서 전송로를 통해 받아들인 데이타는 DEMUX 등의 프로그램을 거쳐 비트스트림(bitstream)으로 PP의 외부메모리(external Memory)에 임시 저장된 후 PP의 코프로세서인 VLD_BUF(308)로 옮겨진다. VLD_BUF(308)는 프로그램으로 결정된 양만큼의 비트스트림을 메모리에 저장하고 VP의 코프로세서인 VLD(208)에 1워드씩의 비트스트림을 제공한다. VP의 VLD(208)는 VLD_BUF(308)에 저장된 비트스트림을 블럭단위로 디코더 메모리에 저장한다. 디코더 메모리는 디코더용 공통 메모리로서 각 코프로세서의 결과를 저장하여 다른 코프로세서로 전달하는 역할을 한다.
VP의 VLD(208,502)의 디코딩 결과가 디코더 메모리(108)에 저장되고 나면 DCT/Q(408) 코프로세서에서 IQ를 시작한다. 현재 수행해야 할 동작과 Q정보는 VP CPU에서 VLD로부터 읽어 IQ/IDCT 동작 명령을 주기전 미리 알려준다. IQ 동작을 수행하는 동시에 IDCT(504)가 수행되며 제 1의 IDCT 결과는 DCT 메모리에 저장되고, 제 2의 IDCT는 DCT 메모리(106)로부터 데이터를 읽어와 처리한 후 디코더 메모리에 저장된다.
IDCT(504)가 수행되고 있는 동안에는 움직임 보상(Motion Compensation)을 수행하기 위한 이전 프레임 데이터를 외부 메모리로부터 MC 메모리로 읽어온다. IDCT(504) 동작이 완료된 후 MC+(506) 코프로세서에서 움직임 보상을 수행하도록 VP CPU로부터 명령을 받는다. MC+(506) 코프로세서 역시 명령 전에 동작을 위한 파라메타를 VP CPU로부터 전달 받는다. 이렇게 해서 디코딩이 완료된 이미지는 외부 메모리(508)에 저장된다. 외부 메모리에 저장되는 디코딩 이미지 영역은 두 프레임으로 구성되며, 현재의 프레임과 과거 프레임으로 번갈아 사용된다.
인코딩 과정중에 가장 오래 시간을 요하는 부분이 ME(Motion Estimation; 404) 부분이며 이 동작은 다른 인코딩 과정과 독립된 계산 과정을 수행하므로 별개의 동작할 수 있는 부분이다. 따라서 본 발명에서는 ME 동작과 다른 인코딩 코프로세서 동작을 병렬로 진행하도록 하였다. 즉 현재 N번째 움직임 벡터를 인코딩하고있다면 ME(404) 코프로세서에서는 N+1번째 MB의 움직임 벡터를 찾도록 한다.
MC-/MC+(406,414) 코프로세서는 ME(404)에서 찾은 움직임 벡터를 기준으로 MC 메모리의 이전 프레임 데이터와 인코딩 할 이미지 데이터의 차분치를 구한다. MC-(406) 결과는 인코딩 메모리에 저장되며 이 데이타는 DCT/Q(408) 코프로세서에서 처리하게 된다. 인코더 메모리는 인코더용 공통 메모리로서 디코더 메모리와 마찬가지로 인코딩을 수행하는 각 코프로세서의 결과를 저장하여 다른 코프로세서로 전달하는 역할을 한다.
디코딩에서와 마찬가지로 DCT/Q(408)의 동작 명령 전에 VP CPU는 코프로세서로 수행 정보를 알려주어야 한다. 양자화 값은 VP CPU에서 적합한 레이트(rate) 콘트롤 알고리즘에 따라 계산한 결과이다. DCT(408) 동작을 수행하는 동시에 양지화(Q; 408)가 수행되며 제 1의 DCT 결과는 DCT 메모리에 저장되고, 제 2의 DCT는 DCT 메모리로부터 전방 DCT/Q(408)가 끝난뒤 VP CPU는 VLC(410)와 인코딩 IDCT/IQ(412)를 동작시킨다.
VLC(410) 코프로세서는 VLC 메모리의 데이터를 읽어 허프만 인코딩을 한 후 결과를 VLC_BUF(308)를 통해 상위 프로세서로 전달한다. PP의 코프로세서인 VLC_BUF(308)는 VP의 VLC(210)에서 만들어진 비트스트림을 1워드씩 받아 메모리에 저장해 두었다가 프로그램으로 설정해 놓은 일정 양의 비트스트림이 만들어지면 PP CPU에 인터럽트를 보내어 외부 DRAM에 저장하도록 도어 있다. 따라서 버퍼 크기를 가변함으로서 프로토콜의 특성에 맞게 인터럽트 횟수를 조절 할 수 있도록 하였다.
IDCT/IQ(412) 코프로세서는 VP CPU로부터 인코딩 백워드 명령을 받은 뒤 인코딩 메모리부터 데이터를 읽어 동작 후 인코딩 메모링에 데이터를 저장한다. 이 데이터를 MC 코프로세서에서 MC+(414)를 수행하고 외부메모리(416)의 인코딩 이미지 영역에 저장한다. 외부 메모리(416)에 저장되는 인코딩 메모리 영역도 두 프레임으로 구성되며, 현재 프레임과 과거 프레임으로 번갈아 사용된다.
디코더 메모리와 인코더 메모리는 각각의 코프로세서의 결과를 저장하는 공통 메모리이며, 두 개의 코딩 메모리를 별개로 둠으로서 인코딩과 디코딩 처리를 동시에 수행할 수 있다.
DCT/Q(408)와 IDCT/IQ(412), 인코딩 MC-(406)/MC+(414)와 디코딩 MC+(506) 등과 같이 공통 하드웨어를 이용하는 블럭은 한 개의 코프로세서로 VP CPU의 명령에 따라 다른 동작을 수행함으로서 하드웨어의 크기도 최소로 할 수 있도록 하였다.
각 코프로세서의 동작이 완료된 후 공통 메모리 제어기를 통해 인코더 메모리/디코더 메모리를 액세스 해 볼수 있도록하여 rate 제어나 de-blocking 등을 보다 효과적으로 구현 할 수 있도록 하였다.
pre/post pocessor(216)는 매 프레임에 대한 동작이 항상 일정하므로 VP CPU의 코프로세서로 연결되어 있지 않다. pre pocessor는 인코딩할 초기 이미지를 만들어 낸 이미지를 변경하여 외부메모리에 캡쳐 이미지를 저장한다. pre pocessor에서 지원하는 이미지 크기/캡처 위치 등을 프로그램에 따라 자유로우며, 그외에도 필터, 스케어링 다운 등과 같은 다양한 기능을 포함하고 있다.
캡쳐 이미지 역시 두 프레임으로 사용되며 인코딩 중인 이미지를 담고 있는프레임과 새롭게 캡쳐된 이미지를 저장하는 프레임으로 번갈아 사용된다. post pocessor는 외부 메모리에 저장된 이미지를 LCD로 보내주는 동작을 수행하는 블럭으로서 VP CPU의 레지스터 셋팅에 따라 디스플레이 하고자 하는 이미지를 처리하여 주는데 OSD, mirror, PIP과 같은 다양한 기능을 포함하고 잇다.
IPB(302)에서는 시스템 부팅시 VP 인스트럭션 메모리에 프로그램을 다운로드 하는 역할과 VP CPU와 PP CPU가 명령이나 데이터를 서로 주고 받을 수 있도록 해준다. 양쪽 프로세서의 메인 데이터 버스 모두에 연결되어 있어 데이터 전달이 쉽게 이루어지도록 되어있으며, IPB 내부에 듀얼 메모리를 포함하고 있어 많은 양의 데이터를 쉽게 전달할 수 있다.
한편, 도 6에 도시된 바와 같이 AND 논리회로(612)와 NOT 논리회로(614)에 의해 다수개의 코프로세스(610,620...)가 메인 데이터 버스와 연결되어 있는 상태에서, 코프로세서 등의 DATA 버스를 액세스하는 각 블럭에서는 write시 메인 클럭의 반주기 동안만 write를 하도록 함으로서 미세한 데이터 버스의 충돌을 막았다. 이와 같은 방식을 이용하면 나머지 반주기동안 bus-holder 외에는 어느 셀도 데이터 버스를 구동하고 있지 않으므로 어떤 블럭에서 데이터 버스를 구동을 시작할 순간에 충돌이 일어나지 않게 된다.
이 때, 반드시 메인 크럭의 위상(phase)이 일치할 필요는 없다. 즉, 도 7에 도시된 바와 같이, 트리 스테이트 버스(tri-state buffer)의 제어 신호를 만들어 내는 CLK의 에지 부분을 벗어난 반주기 동안만 write를 하고 나머지 구간 동안은 bus-holder로 데이터를 유지하면 된다.
이상에서와 같이 본 발명에 의한 비디오 코덱 프로세서의 아키텍쳐에 따르면, 각 코프로세서들의 병렬 동작이 쉽게 이루어질 수 있으며, 빠른 비디오 코덱의 성능을 기대할 수 있다.
또한, CPU에 의해 인코딩/디코딩이 시분할방식으로 동시에 처리될 수 있으며, 인코딩이나 디코딩 중 어느 한쪽의 코딩이 더 많이 피우치도록 하는 등의 제어가 자유롭다.
또한, CPU가 코딩 데이터의 중간 값을 자유롭게 액세스 할 수 있으며, CPU와 시스템 레벨에서 디스플레이 할 데이터를 자유롭게 변경할 수 있다. 그리고 프로토콜 프로세서와 비디오 CODEC간의 정보가 쉽게 반영될 수 있다.

Claims (6)

  1. 비디오 코덱(CODEC)의 처리 및 제어를 위한 VP/CPU와, 프로토콜(protocol)의 처리 및 제어를 위한 PP/CPU 간에 코프로세서(coprocessor)로 공유되어 상기 CPU 프로그램의 제어에 의해 외부로부터 입력된 영상 데이터 또는 외부로 전송될 영상 데이터에 대한 인코딩(encoding)을 수행하기 위한 비디오 코덱 프로세서의 아키텍쳐에 있어서,
    인코딩할 초기의 이미지를 만드는 전처리기(Pre processor)와; 이전 프레임으로부터 인코딩할 매크로 블록 이미지와 가장 유사한 위치인 움직임 벡터를 추정하는 움직임추정기(ME)와; 상기 VP/CPU의 명령에 따라 움직임추정기(ME)에서 추정된 움직임 벡터를 기준으로 이전 프레임 데이터와 인코딩할 이미지 데이터의 차분치를 구하는 움직임보상기(MC-)와; 상기 VP/CPU의 명령에 따라 이산여현 변환 동작을 수행함과 더불어 양자화를 수행하는 이산여현변환기/양자화기(DCT/Q)와; 상기 인코딩된 이미지를 지그재그 스캔 방식으로 데이터를 읽어 허프만 인코딩을 통해 비트스트림으로 만드는 가변장부호기(VLC)와; 상기 VP CPU로부터 인코딩 백워드 명령을 받은 뒤 인코딩 메모리부터 데이터를 읽어 동작 후 인코딩 메모리에 데이터를 저장하는 역이산여현변환기/역양자화기(IDCT/IQ)와; 상기 VP/CPU의 명령에 따라 움직임추정기(ME)에서 찾은 움직임 벡터를 기준으로 이전 프레임 데이터와 IDCT의 결과값을 더하여 현재의 프레임을 만들어내는 움직임보상기(MC+)와; 상기 움직임보상기(MC+)로부터의 현재 프레임을 저장하는 외부메모리(external memory)를 포함하는것을 특징으로 하는 비디오 코덱 프로세서의 아키텍쳐.
  2. 청구항 1에 있어서, 상기 CPU가 인코딩 메모리나 외부 메모리를 직접 접근하여 비디오 코덱 결과를 액세스(access)하는 것을 특징으로 하는 비디오 코덱 프로세서의 아키텍쳐.
  3. 삭제
  4. 비디오 코덱(CODEC)의 처리 및 제어를 위한 VP/CPU와, 프로토콜(protocol)의 처리 및 제어를 위한 PP/CPU 간에 코프로세서(coprocessor)로 공유되어 상기 CPU 프로그램의 제어에 의해 외부로부터 입력된 영상 데이터 또는 외부로 전송될 영상 데이터에 대한 디코딩(decoding)을 수행하기 위한 비디오 코덱 프로세서의 아키텍쳐에 있어서,
    상기 PP의 전송로를 통해 받아들인 비트스트림(bitstream)을 블럭 단위로 디코딩 메모리에 저장하는 가변장복호기(VLD)와; 상기 VP/CPU로부터 디코딩 명령을 받은 뒤 디코딩 메모리부터 데이터를 읽어 동작한 후 데이터를 디코딩 메모리에 저장하는 역이산여현변환기/역양자화기(IDCT/IQ)와; 상기 VP/CPU의 명령에 따라 움직임 벡터를 기준으로 이전 프레임 데이터와 IDCT의 결과값을 더하여 현재의 프레임을 만들어내는 움직임보상기(MC+)와; 상기 움직임보상기(MC+)로부터의 현재 프레임을 저항하는 외부메모리(external memory)를 포함하는 것을 특징으로 하는 비디오 코덱 프로세서의 아키텍쳐.
  5. 청구항 4에 있어서, 상기 CPU가 인코딩 메모리나 외부 메모리를 직접 접근하여 비디오 코덱 결과를 액세스(access)하는 것을 특징으로 하는 비디오 코덱 프로세서의 아키텍쳐.
  6. 삭제
KR10-2002-0009341A 2002-02-21 2002-02-21 비디오 코덱 프로세서의 아키텍쳐 KR100450844B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2002-0009341A KR100450844B1 (ko) 2002-02-21 2002-02-21 비디오 코덱 프로세서의 아키텍쳐

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2002-0009341A KR100450844B1 (ko) 2002-02-21 2002-02-21 비디오 코덱 프로세서의 아키텍쳐

Publications (2)

Publication Number Publication Date
KR20030069527A KR20030069527A (ko) 2003-08-27
KR100450844B1 true KR100450844B1 (ko) 2004-10-01

Family

ID=32222150

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0009341A KR100450844B1 (ko) 2002-02-21 2002-02-21 비디오 코덱 프로세서의 아키텍쳐

Country Status (1)

Country Link
KR (1) KR100450844B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101114493B1 (ko) 2008-12-23 2012-02-27 광운대학교 산학협력단 가변길이부호 코덱을 처리하는 비트스트림 프로세서

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101160640B1 (ko) * 2003-12-30 2012-06-28 삼성전자주식회사 데이터 처리 시스템 및 데이터 처리 방법

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05161127A (ja) * 1991-12-04 1993-06-25 Toshiba Corp フィルム画像検出機能付きデジタル画像圧縮装置
JPH08102952A (ja) * 1994-10-03 1996-04-16 Matsushita Electric Ind Co Ltd 実時間画像符号化装置及び方法
JPH08251594A (ja) * 1995-02-06 1996-09-27 Texas Instr Inc <Ti> 動きの推定結果を利用した画質制御方法
JPH09130804A (ja) * 1995-09-22 1997-05-16 Samsung Electron Co Ltd 累積エラー処理を通したビデオ信号符号化方法及び符号化器
KR19980086614A (ko) * 1997-05-20 1998-12-05 포만 제프리 엘 비디오 부호화기에 대한 매크로블럭 비트 조정 방법 및 그 장치
JPH11146403A (ja) * 1997-11-12 1999-05-28 Matsushita Electric Ind Co Ltd 映像信号符号化装置、映像信号符号化方法、および映像信号符号化プログラム記憶媒体
JP2000050277A (ja) * 1998-07-27 2000-02-18 Sony Corp 符号化装置及び符号化方法
KR20010098904A (ko) * 2000-04-26 2001-11-08 윌리엄 비. 켐플러 멀티프로세서 객체 제어

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05161127A (ja) * 1991-12-04 1993-06-25 Toshiba Corp フィルム画像検出機能付きデジタル画像圧縮装置
JPH08102952A (ja) * 1994-10-03 1996-04-16 Matsushita Electric Ind Co Ltd 実時間画像符号化装置及び方法
JPH08251594A (ja) * 1995-02-06 1996-09-27 Texas Instr Inc <Ti> 動きの推定結果を利用した画質制御方法
JPH09130804A (ja) * 1995-09-22 1997-05-16 Samsung Electron Co Ltd 累積エラー処理を通したビデオ信号符号化方法及び符号化器
KR19980086614A (ko) * 1997-05-20 1998-12-05 포만 제프리 엘 비디오 부호화기에 대한 매크로블럭 비트 조정 방법 및 그 장치
JPH11146403A (ja) * 1997-11-12 1999-05-28 Matsushita Electric Ind Co Ltd 映像信号符号化装置、映像信号符号化方法、および映像信号符号化プログラム記憶媒体
JP2000050277A (ja) * 1998-07-27 2000-02-18 Sony Corp 符号化装置及び符号化方法
KR20010098904A (ko) * 2000-04-26 2001-11-08 윌리엄 비. 켐플러 멀티프로세서 객체 제어

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101114493B1 (ko) 2008-12-23 2012-02-27 광운대학교 산학협력단 가변길이부호 코덱을 처리하는 비트스트림 프로세서

Also Published As

Publication number Publication date
KR20030069527A (ko) 2003-08-27

Similar Documents

Publication Publication Date Title
USRE48845E1 (en) Video decoding system supporting multiple standards
US6963613B2 (en) Method of communicating between modules in a decoding system
US8005147B2 (en) Method of operating a video decoding system
JP4426099B2 (ja) 共有メモリを有するマルチプロセッサ装置
KR100418437B1 (ko) 멀티미디어 신호처리를 위한 영상복원 프로세서
US9392292B2 (en) Parallel encoding of bypass binary symbols in CABAC encoder
US6192073B1 (en) Methods and apparatus for processing video data
US20090282172A1 (en) Memory access engine having multi-level command structure
US10313683B2 (en) Video encoder with context switching
JPH08223571A (ja) 画像デコーダ
JP2888288B2 (ja) 画像符号化装置
JPH06189298A (ja) 動画像復号システム
KR100450844B1 (ko) 비디오 코덱 프로세서의 아키텍쳐
US7246220B1 (en) Architecture for hardware-assisted context switching between register groups dedicated to time-critical or non-time critical tasks without saving state
EP1351512A2 (en) Video decoding system supporting multiple standards
EP1351513A2 (en) Method of operating a video decoding system
JP2002182975A (ja) マルチプロセッサシステム
EP1351511A2 (en) Method of communicating between modules in a video decoding system
JP4498848B2 (ja) 画像処理装置
KR20030030403A (ko) 영상복호기의 매크로블럭 레벨 제어회로
KR100585647B1 (ko) 엠펙 비디오 디코더에서의 매크로 블록 애더 제어 방법
KR20020095755A (ko) 비디오 코덱의 메모리 액세스 장치 및 방법
JPH07134642A (ja) データ転送装置
KR100306743B1 (ko) 피씨기반비디오부호화및복호화장치및그방법
JP2000253405A (ja) ビデオ復号化のためのパイプライン回路

Legal Events

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

Payment date: 20120911

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20130822

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20140829

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20150901

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20160901

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20170901

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20180801

Year of fee payment: 15