KR100418437B1 - 멀티미디어 신호처리를 위한 영상복원 프로세서 - Google Patents

멀티미디어 신호처리를 위한 영상복원 프로세서 Download PDF

Info

Publication number
KR100418437B1
KR100418437B1 KR10-2001-0083951A KR20010083951A KR100418437B1 KR 100418437 B1 KR100418437 B1 KR 100418437B1 KR 20010083951 A KR20010083951 A KR 20010083951A KR 100418437 B1 KR100418437 B1 KR 100418437B1
Authority
KR
South Korea
Prior art keywords
processor
bus
image restoration
video
data
Prior art date
Application number
KR10-2001-0083951A
Other languages
English (en)
Other versions
KR20030053920A (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-2001-0083951A priority Critical patent/KR100418437B1/ko
Priority to US10/195,575 priority patent/US6842219B2/en
Priority to JP2002366636A priority patent/JP2003204556A/ja
Publication of KR20030053920A publication Critical patent/KR20030053920A/ko
Application granted granted Critical
Publication of KR100418437B1 publication Critical patent/KR100418437B1/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/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
    • 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
    • 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/40Bus structure
    • 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
    • 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
    • H04N19/45Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder performing compensation of the inverse transform mismatch, e.g. Inverse Discrete Cosine Transform [IDCT] mismatch
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Discrete Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

본 발명은 멀티미디어 신호처리를 위한 영상복원 프로세서에 관한 것으로서, 더 상세하게는, RISC 프로세서를 기반으로 메모리 억세스를 최소화하기 위해 분리된 버스 구조를 가짐으로써 다양한 응용분야에 최적화된 시스템을 구현할 수 있는 영상복원 프로세서에 관한 것이다.
외부로부터 입력되는 압축된 동영상의 복원을 수행하기 위한 전반적인 제어를 담당하는 RISC 프로세서와, 동영상 복원을 수행하는 디코더(VDEC)와, 복원된 동영상 신호에 대하여 외부에 연결되는 출력 장치에 적합한 후처리를 수행하는 포스트 프로세서와, 상기 VDEC와 외부 메모리를 인터페이스 시켜주는 DSCU DMA와, 상기 포스트 프로세서와 외부 메모리를 인터페이스 시켜주는 포스트 DMA와, 상기 시스템 응용시에 필요한 주변장치와, 상기 주변장치와 외부 메모리를 인터페이스 시켜주는 주변장치 DMA와, 상기 외부 메모리를 제어하는 외부 메모리 컨트롤러와, 상기 주변장치가 연결된 국부 버스와 주 버스를 인터페이스 해주는 주변장치 브릿지와, 상기의 각 구성부를 연결해 주는 3개의 독립적인 메인 버스, 코프로세서 버스, 주변장치 제어 버스로 구성된다.

Description

멀티미디어 신호처리를 위한 영상복원 프로세서 {A moving picture decoding processor for multimedia signal processing}
본 발명은 멀티미디어 신호처리를 위한 영상복원 프로세서에 관한 것으로서, 더 상세하게는, RISC 프로세서를 기반으로 메모리 억세스를 최소화하기 위해 분리된 버스 구조를 가짐으로써 다양한 응용분야에 최적화된 시스템을 구현할 수 있는 영상복원 프로세서에 관한 것이다.
멀티미디어 및 네트워크 관련 기술의 발전과 함께 이제 통신이라는 개념은 음성, 혹은 데이터 전송등에 국한되지 않고 영상 신호와 인터넷 등의 복합적인 미디어를 포함하는 다 차원적인 구조로 발전하고 있다.
특히 영상 신호 전송에 대한 요구는 ITU(International Telecommunication Union), ISO(International organization for standardization)와 같은 기구들을 통한 규약의 제정으로 인해 그 도약의 발판이 마련된 셈이다.
현재까지 제정된 영상 신호 처리를 위한 규약으로는 ISO의 JPEG(Joint Photographic Experts Group)과 ITU의 H.261/H.263, 그리고 ISO의 MPEG(Moving Pictures Expert Group) 시리즈 표준이 있다.
이들 각각은 그 응용 분야에 따라 다른 특성을 보이는 데, JPEG은 주로 포토(photo)-CD에, H.261/H.263은 비디오 폰(video phone)과 비디오 컨퍼런스(video conference)에, MPEG-1은 CD-ROM과 CD-I 및 컴퓨터 응용 분야에, 그리고 MPEG-2는 디지털 방송 및 비디오 디스트리뷰션(video distribution)에 주로 응용되고 있다.
특히 1998년에 제정된 MPEG-4는 기존의 영상, 오디오 신호의 압축 및 부호화 과정은 물론이고 정지 영상, 컴퓨터 그래픽스, 분석 합성계의 음성 부호화, MIDI(Musical Instrument Data Interface)등에 의한 합성 오디오와 텍스트를 포함하는 종합 멀티미디어 부호화 규격을 목적으로 제정되었는데, 이 규격이 포함하는 범위는 64Kbps의 저 전송율 환경의 단순 프로파일(simple profile)에서 38.4Mbps에 이르는 메인 프로파일(main profile)에 이르기까지 광범위한 영역을 포함하여 그 응용분야는 멀티미디어가 추구하는 모든 영역을 처리할 수 있다.
더욱이 IMT-2000이라는 4세대 이동 통신의 기술이 차츰 보편화 되면서 이제는 음성과 영상을 통합하는 멀티미디어 이동 통신이 현재 이미 대중화 되어있는 음성 및 데이터 이동 통신을 대체하는 기술로 가시화되고 있다.
MPEG-4는 이러한 차세대 기술의 핵심으로 이용되고 있으므로 그 중요성이 증가되고 있다.
MPEG-4는 다른 영상 신호 처리 기술들과는 구별되어 무선 통신 환경에서 운용되는 기술이며 특히 simple profile의 응용 분야는 휴대용 단말기라는 점을 감안 하면 다른 영상 신호처리 기술에 비하여 에러에 대한 내성(error resilience)와 저 전력 소모, 그리고 소규모 회로에 의한 구현이라는 점이 강조되어야 한다.
도 1은 영상처리를 위해 사용되는 일반적인 미디어 프로세서의 구조를 나타낸다.
메인 프로세서(101)는 CPU 역할을 수행하는 컨트롤러로써 미디어 프로세서(109)의 모든 입출력과 내부 동작들을 제어한다.
메인 프로세서는 그 응용 분야가 제한되어 있지만 특정한 기능을 수행하는 방법도 다양한 알고리즘에 의해 수정 및 변경될 수 있고 그로 인해 성능 향상을 도모할 수 있는 특성을 가지고 있으므로 고정된 기능을 수행하도록 최적화된 구성 보다는 프로그램이 가능한 구조를 갖도록 설계되는 것이 보통이다.
이런 측면에서 메인 프로세서(101)는 내장된 프로그램 메모리로부터 혹은 외부에 별도로 추가되는 메모리를 이용하여 특정한 용도에 적합하도록 부호화된 프로그램을 수행할 수 있다.
이 프로그램은 기본적인 동영상 신호의 압축과 복원은 물론이고 음성 신호의 압축과 복원, 각종 주변장치들로부터 발생되는 인터럽트 신호의 처리, 비디오 디스플레이 및 비디오 캡처(video capture)를 위한 제어, 외부의 호스트 역할을 수행하는 프로세서와의 통신, 그리고 입력되는 음성/영상 신호의 분리 등 다양한 기능을 수행하도록 설계된다.
상기 메인 프로세서(101)는 다른 블록들과 메인 버스(108)를 통해 인터페이스되며 메인 프로세서(101)와 다른 블록들과의 연결은 버스트 중재(bust arbitration)에 의해 조절 및 할당된다.
비디오 캡처부(102)는 영상 신호의 압축을 위해 디지털 카메라와 같은 외부 영상입력장치를 통하여 동영상을 받아들이고 이를 프레임 메모리에 저장한다.
비디오 표시부(103)는 복원된 영상신호를 LCD와 같은 외부 출력 장치로 보내준다.
모든 영상 신호의 복원은 내부 CODEC에서 수행되지만 복원된 영상 신호의 화질 개선, 출력 영상의 크기 및 위치 조절, 출력 장치의 종류에 따른 형태 변경(format conversion) 등 다양한 후 처리 과정(post processing)이 비디오 표시부(103)에서 수행될 수 있다.
호스트 인터페이스(104)는 도 1의 미디어 프로세서(109)를 슬레이브(slave)로 관장하고 있는 외부 호스트 프로세서와의 통신을 위해 사용된다.
일반적으로 무선 통신 환경에서 호스트 프로세서는 기저 대역(base band) MODEM 프로세서가 되고. 이 프로세서는 RF 모듈과의 인터페이스와 외부로부터 입력되는 음성/영상 복합 신호를 미디어 프로세서(109)로 전달하는 역할만을 수행한다.
외부 메모리 인터페이스(105)는 외부에 장착되는 메모리들과의 인터페이스를 위해 사용되고, 주로 메모리 컨트롤러가 포함된다.
비디오/오디오 CODEC(106)은 음성 및 영상 신호의 압축과 복원을 수행한다.
상기 비디오/오디오 CODEC(106)은 미디어 프로세서(109)가 사용되는 응용 분야에 따라서 최적화된 압축 및 복원 알고리즘을 하드웨어 혹은 소프트웨어로 구현한 것이다.
주변장치(107)는 미디어 프로세서(109)가 사용되는 시스템의 각종 인터페이스를 지원하기 위해 추가되는 장치(Peripheral)들로, 주로 IIC(Inter IC Controller), 타이머, 범용 비동기화 송수신기(UART), 클록 컨트롤러, 인터럽트 컨트롤러 등이 포함된다.
그런데 상술한 미디어 프로세서(109)는 다음과 같은 문제점을 가지고 있다.
첫째 메인 프로세서(101)와 다른 블록들간의 연결이 단일 버스인 메인 버스(108)를 이용하여 구성되므로 메인 버스(108)의 부하(loading)가 매우 커지고따라서 동작 주파수의 향상이 어렵다.
둘째 메인 버스(108)의 부하 증가는 바로 전체적인 전력 소모의 증가로 나타나므로 휴대용 단말기 등의 응용 분야에서 적용이 어렵다.
세째 모든 블록들이 메인 버스(108)로 연결되므로 각 블록의 자원 할당이 비효율적이 된다.
본 발명은 상술한 문제점을 해결하기 위하여 안출된 것으로서, RISC 프로세서를 기반으로 메모리 억세스를 최소화하기 위해 분리된 버스 구조를 갖는 동영상 복원 프로세서를 구현하여 비디오 폰, PDA, 무선 VOD 단말기 등에 응용할 수 있고, 특히 프로그램이 가능한 구조를 이용하여 다양한 응용분야에서 최적화된 시스템을 구현할 수 있는 멀티미디어 신호처리를 위한 영상복원 프로세서를 제공하는데 그 목적이 있는 것이다.
상술한 목적을 달성하기 위하여 본 발명은, 외부로부터 입력되는 압축된 동영상의 복원을 수행하기 위한 전반적인 제어를 담당하는 RISC 프로세서와, 동영상 복원을 수행하는 디코더(VDEC)와, 복원된 동영상 신호에 대하여 외부에 연결되는 출력 장치에 적합한 후처리를 수행하는 포스트 프로세서와, 상기 VDEC와 외부 메모리를 인터페이스 시켜주는 DSCU DMA와, 상기 포스트 프로세서와 외부 메모리를 인터페이스 시켜주는 포스트 DMA와, 상기 시스템 응용시에 필요한 주변장치와, 상기 주변장치와 외부 메모리를 인터페이스 시켜주는 주변장치 DMA와, 상기 외부 메모리를 제어하는 외부 메모리 컨트롤러와, 상기 주변장치가 연결된 주변장치 제어 버스와 메인 버스를 인터페이스 해주는 주변장치 브릿지와, 상기의 각 구성부를 연결해 주는 3개의 독립적인 메인 버스, 코프로세서 버스, 주변장치 제어 버스를 포함하는 멀티미디어 신호처리를 위한 영상복원 프로세서를 제공하고자 한다.
본 발명은 또한, 상기 VDEC는 허프만(Huffman) 코딩에 의해 압축된 데이터를 복원하는 VLD 및 RVLD, 움직임 보상을 수행하는 MC, 압축된 동영상 계수를 시간 영역의 계수로 복원하고 역양자화를 수행하는 IDCT/IQ, AC/DC 계수 예측에 의해 압축된 데이터를 복원하는 ADR, 상기 각 구성부가 공통으로 사용하는 DEC 메모리, 상기 각 구성부의 시퀀스를 제어하는 DSCU로 구성된다.
본 발명은 또한, 상기 포스트 프로세서는 동영상 외에 추가적으로 문자를 동시에 표시할 수 있는 OSD 기능, 복원된 동영상에 대하여 디블록킹(deblocking)을 수행하는 디블록킹 필터 기능, 외부 출력 장치의 종류에 따라 적합한 제어 신호를 발생시키는 표시 제어 기능, 외부 디지털 출력 장치의 인터페이스를 수행하는 기능, 복원된 동영상에 대하여 보간(interpolation)을 수행하는 보간 필터 기능을 수행함을 특징으로 한다.
본 발명은 또한, 상기 주변장치는 외부 호스트 프로세서와의 인터페이스를 제공하는 호스트 인터페이스, 소프트웨어 리셋을 제어하는 WDT, 카운트 업/다운을 지원하는 타이머, 외부로부터 입력되는 각종 인터럽트를 처리하는 ICU, 내부에 클럭을 공급하는 PLL, 시스템 응용 시 범용 입출력 단자로 사용되는 GPIO, 외부 비디오 인코더 및 디코더로의 인터페이스를 제공하는 IIC, 오디오 인터페이스를 위해 사용되는 IIS, 범용 직렬 통신 포트인 UART, 다채널 직렬통신을 지원하고 마스터나슬레이브 모드로 동작하는 SPI로 구성됨을 특징으로 한다.
도 1은 종래 일반적인 미디어 프로세서의 구조를 나타내는 블록도이다.
도 2는 본 발명에 따른 영상복원 프로세서의 전체적인 구성도이다.
도 3은 본 발명에 따른 호스트 인터페이스의 블록도이다.
도 4는 본 발명에 따른 DSCU(Decoding Sequence Control Unit)의 블록도이다.
도 5는 도 4에서 나타낸 DSCU 내부의 CODEC 블록을 제어하는 코프로세서 동작제어 명령어 구조도이다.
도 6은 도 4에서 나타낸 DSCU 내부의 CODEC 블록들이 외부 메모리를 억세스하기 위해 사용하는 코프로세서 명령어 구조도이다.
도 7은 도 4에서 나타낸 DSCU 내부의 CODEC 블록들이 RISC 프로세서와 통신하기 위해 사용하는 코프로세서 인터페이스 블록의 구조도이다.
도 8은 도 4에서 나타낸 DSCU 내부의 각 CODEC 블록들을 제어하는 타이밍도이다.
도 9는 도 4에서 나타낸 DSCU가 각 CODEC 블록들을 제어하기 위해 사용하는 상태 천이도이다.
도 10은 도 4에서 나타낸 DSCU가 CODEC 블록들을 제어하는 파이프라인 구조도이다.
도 11은 본 발명에 따른 VLD의 구조도이다.
도 12는 본 발명에서 따른 RVLD 구조도이다.
도 13은 도 12에서 나타낸 RVLD에서 입력 데이터를 받아서 복호화하는 회로도이다.
도 14는 일반적으로 사용되는 동영상의 복원과정을 나타내는 순서도이다.
도 15는 본 발명에 따른 에러 은닉의 처리과정을 나타내는 순서도이다.
도 16은 본 발명에 따른 IDCT와 IQ의 구성도이다.
도 17은 본 발명에 따른 미스매칭 처리과정의 한 예시도이다.
도 18은 본 발명에 따른 IDCT의 블록 구성도이다.
도 19는 본 발명에 따른 IDCT와 IQ를 이용한 데이터 흐름도이다.
도 20은 본 발명에 따른 움직임보상을 수행하는 블록의 구성도이다.
<도면의 주요부분에 대한 부호의 설명>
201 : 복원 프로세서 202 : 코프로세서 버스
203 : VDEC(Video DECoder) 203a : DSCU(Decoding Sequence Control Unit)
203ba : VLD(Variable Length Decoder)
203bb : RVLD(Reversible Variable Length Decoder)
203ca : IDCT(Inverse Discrete Cosine Transform)
203cb : IQ(Inverse Quantization)
203d : MC(Motion Compensation)
203e : ADR 203f : DEC 메모리
204 : DSCU DMA(Direct Memory Access)
205 : 포스트 프로세서 206 : 디스플레이 제어 인터페이스
207 : RISC(Reduced Instruction Set Computer) 프로세서
207a : 명령어/데이터 캐시(cache)
208 : CPU 제어 인터페이스 209 : 포스트 DMA
210 : 주변장치 DMA 211 : 메인 버스
212 : 주변장치 브릿지 213 : 외부 메모리 컨트롤러
214 : 주변장치 제어 인터페이스
215 : 외부 메모리 제어 인터페이스 216 : 주변장치
216a : GPIO(General Port Input Output)
216b : IIC(Inter IC Controller)
216c : SPI(Serial Port Interface)
216d : ICU(Interrupt Control Unit)
216e : 타이머 216f : PPL(Phase Locked Loop)
216g : WDT(Watch Dog Timer) 216h : IIS(Inter IC Sound Interface)
216i : UART 301 : 호스트 인터페이스
이하 본 발명을 첨부된 도면 도 2 내지 도 20을 참고로하여 설명하면 다음과 같다.
도 2는 본 발명에서 따른 동영상 복원 프로세서(201)의 전체 구조를 나타낸다.
상기 복원 프로세서(201)에서는 최적의 하드웨어를 이용하는 동시에 다양한 응용 분야로의 적용이 용이하도록 내부에 RISC 프로세서(207)가 탑재된다.
상기 RISC(reduced instruction set computer) 프로세서(207)는 기본적으로 외부로부터 입력되는 압축된 동영상의 복원을 수행하기 위한 전반적인 제어를 담당한다.
상기 RISC 프로세서(207)는 내부에 명령어/데이터 캐시(cache)(207a)를 두어서 별도의 메모리 없이 시스템 제어에 필요한 프로그램을 저장할 수 있으며 이 프로그램을 이용하여 복원 프로세서(201)의 응용 시스템 적용 시에 다양한 응용 툴들을 효과적으로 지원할 수 있다.
상기 프로그램은 복원 프로세서(201) 부팅(booting) 시에 주변장치(216) 혹은 외부 메모리 제어 인터페이스(215)를 통해 외부 메모리나 외부 호스트로부터 입력될 수 있는데, 상기 명령어/데이터 캐시(207a) 특성을 이용하므로 응용 프로그램의 크기와 관계없이 사용자가 필요한 툴들을 쉽게 적용할 수 있는 환경을 제공한다.
상기 RISC 프로세서(207)는 기본적인 CODEC의 제어 외에도 각종주변장치(216)와 포스트 프로세서(205,post processor)로부터 발생되는 인터럽트 들을 조합하여 해당되는 처리 루틴들을 수행한다.
CPU 제어 인터페이스(208)는 RISC 프로세서(207)를 통제하기 위해 사용되는 각종 외부 입력들로서, 엔디안(Endian) 설정, 외부 입출력(external Input/output) 제어, 테스트 모드 설정 등에 관계된 제어 신호들이 연결된다.
동영상 복원을 위해서는 일정량의 프레임 메모리(frame memory)가 필요하다.
이것은 동영상 복원 과정에서 이전 프레임이 필요한 경우가 빈번히 발생하므로 이를 위한 것이다.
일반적으로 동영상의 복원 과정에서는 현재 혹은 이전 프레임 메모리의 억세스가 매우 빈번하므로 종래에서처럼 단일 시스템 버스를 이용한다면 이로 인한 시스템 버스의 이용도 측면에서 매우 비효율이다.
즉, 프레임 메모리를 사용하기 위해 주변장치(207), DSCU DMA(204)나 포스트 DMA(209)와 같은 블록들이 버스를 빈번하게 사용한다면 주변장치 브릿지(212)나 혹은 주변장치 DMA(210)과 같은 나머지 블록들이 이 버스를 점유할 수 있는 기회가 적어지므로 전체적인 성능이 저하될 수 있다.
따라서 내부 CODEC의 제어를 위한 코프로세서 버스(202)와 외부 메모리의 제어 및 억세스를 위한 메인 버스(211)를 분리함으로써 버스에 대한 각 블록의 부하(loading)가 최소화가 되도록 하였다.
상기 코프로세서 버스(202)는 RISC 프로세서(207), VDEC(203,Video decoder), 포스트 프로세서(205)사이에서만 사용되는 공통 버스이다.
그리고 이들을 제외한 다른 블록들과는 독립적이다.
상기 코프로세서 버스(202)는 주로 VDEC(203)와 포스트 프로세서(205)를 제어하기 위한 전용 코프로세서 명령어의 전달과 핸드쉐이킹(handshaking)을 위해 사용되는 것으로 메인 버스(211)와는 별도로 동작된다.
상기 VDEC(203)와 포스트 프로세서(205)는 각각 코프로세서 인터페이스에 의해 RISC 프로세서(207)에 연결되므로 별도의 버스 중재(bus arbitration)을 위한 기능이 필요하지 않으며, 상기 VDEC(203) 내부의 각 블록은 명령어 해석기( instruction interpreter)를 내장하고 있어서 각 블록에 해당되는 특정 명령어가 코프로세서 버스(202)상에 존재할 때만 동작을 시작하도록 설계된다.
메인 버스(211)는 외부 메모리와의 인터페이스를 제공하는 버스로 4개의 마스터(master)와 2개의 슬레이브(slave)가 연결되어 있다.
여기서 4개의 마스터는 각각 RISC 프로세서(207), DSCU(Decoding Sequence Control Unit) DMA(204,Direct Memory Access), 포스트 DMA(209), 주변장치 DMA(210)이고, 2개의 슬레이브는 외부 메모리 컨트롤러(213)와 주변장치 브릿지(212)이다.
4개의 마스터와 2개의 슬레이브 사이의 버스 사용은 메인 버스(211)에 포함된 버스 중재기에 의해 제어된다.
이때 상기 버스 중재는 버스 리퀘스트 신호를 발생시킨 버스 마스터의 선택과 주소 할당(address decoding)에 의한 슬레이브의 선택으로 구성된다.
슬레이브의 선택은 RISC 프로세서(207)에서 생성되는 주소의 상위 2비트를 이용하게 되는데, 만일 버스 마스터가 RISC 프로세서(207) 이외의 다른 블록인 경우에 슬레이브는 자동적으로 외부 메모리 컨트롤러(213)으로 고정된다.
물리적으로 메인 버스(211)에는 4개의 마스터가 연결되지만 실제로는 외부에 DRAM과 같은 형태의 메모리가 연결될 경우, 그 재생(refresh)를 위한 처리 기능이 추가적으로 존재하므로 이를 고려한다면 모두 5개의 마스터가 존재하는 것이 된다.
이 5개의 마스터들에 대하여 각각의 특성에 따라 버스 사용에 대한 우선권을 부여하는데 외부에 DRAM을 사용할 경우, 그 재생을 위한 처리과정이 가장 높은 우선 순위를 갖고, 주변장치 DMA(210) -> 포스트 DMA(209) -> DSCU DMA(204) -> RISC 프로세서(207) 순서로 우선권이 부여된다.
외부의 DRAM 재생을 위한 처리과정에는 메인 클록(main clock)을 기준으로 7사이클이 소요되므로 버스 사이클을 기준으로는 2사이클이 필요하다(메인 클록을 기준으로 외부 메모리로부터 1워드(word)를 억세스하기 위해서는 4사이클이 필요하므로 이 4사이클을 1버스사이클로 정의한다).
상기 주변장치 DMA(210)의 경우에는 버퍼가 최대한 20워드를 저장할 수 있으므로 이를 최대로 사용한다고 가정하면 최대 20버스사이클이 필요하다.
포스트 DMA(209)의 경우에는 OSD 기능을 구현하기 위한 라인 읽기(line read) 동작이 메모리 억세스가 가장 크므로 최대 360픽셀 데이터를 억세스 한다고 보면(QCIF 크기를 기준으로 할 때) 45버스 사이클이 요구된다.
DSCU DMA(204)의 경우에는 움직임 보상(Motion Compensation)을 수행하기 위해 영상 데이터의 1블록, 즉 8 x 8픽셀 데이터를 일련의 메모리 억세스로 처리해야하므로 1라인을 최대 9바이트로 하고 최대 9라인을 억세스 한다면 최대 27버스사이클이 사용된다.
RISC 프로세서(207)가 메모리 억세스를 요구하는 경우는 내부의 명령어/데이터 캐시(207a) 미스(miss)가 발생하여 캐시 필(cache fill)을 수행하기 위해서 인데 이때에는 캐시의 1라인을 차지하는 4워드 단위의 억세스가 이루어지므로 최대 4버스사이클이 사용된다.
상기 메인 버스(211)의 사용 효율을 높이기 위하여 VDEC(203)와 포스트 프로세서(205)는 각각 DSCU DMA(204)와 포스트 DMA(209)를 통해서만 버스 억세스가 가능한데 이 것은 버스의 사용을 제한하는 동시에 사용 권한이 주어질 경우 버스트 억세스(burst access)를 이용하여 그 시간을 최소로 할 수 있다는 장점이 있다.
상기 VDEC(203)은 H.263/MPEG-4 표준에 의해 압축된 동영상 복원을 수행한다.
상기 VDEC(203)의 내부에는 복원 과정을 통괄하여 제어하는 DSCU(203a,Decoding Sequence Control Unit)와 입력되는 압축 데이터 비트 스트림 파싱(bit stream parsing)을 담당하는 VLD(203ba,Variable Length Decoder), 오류 내성(error resilience) 기능을 지원하기 위한 RVLD(203bb,Reversible Variable Length Decoder), 픽셀 단위의 주파수-시간 영역 변환을 수행하는 IDCT(203ca,Inverse Discrete Cosine Transform), 양자화 되어 입력되는 픽셀 데이터에 대한 역 양자화를 수행하는 IQ(203cb,Inverse Quantization), 이전 프레임 데이터와의 상관 관계를 이용하여 현재 프레임을 복원하는 MC(203d,Motion Compensation), MPEG-4에서 인트라 매크로블록이 입력될 경우 주변 매크로블록의DC 혹은 AC값을 이용하여 현재의 DC 혹은 AC값을 추정하는 ADR(203e), 그리고 각각의 블록들이 입력된 데이터를 동영상으로 복원하는 중간 과정에서 공통으로 사용하는 DEC 메모리(203f)로 구성된다.
각각의 블록들은 서로 독립적으로 해당되는 기능을 수행하며 DSCU(203a)가 제어하는 파이프 라인에 의해 동작 타이밍이 결정된다.
포스트 프로세서(205)는 상기 VDEC(203)를 통해 복원된 동영상을 실제 외부 표시 장치(display device)로 출력하기 위한 후처리(post processing)를 담당한다.
상기 포스트 프로세서(205)에 포함된 기능들은 실제로 응용되는 시스템의 사양 및 사용자의 요구 조건에 따라서 다양한 조합이 발생할 수 있으므로 독립적인 기능들을 하드웨어로 구현하고 그 기능들의 조합은 프로그램이 가능하도록 함으로써 특정 용도에 최적화될 수 있다.
상기 포스트 프로세서(205) 에 포함된 기능으로는 외부 표시 장치를 구동하기 위한 디스플레이 제어 인터페이스(206), GUI(Graphic User Interface)등의 기능을 지원하기 위해 동영상 외에 추가적으로 문자를 동시에 표시할 수 있는 OSD(On Screen Display)기능, 동영상의 복원 시에 발생될 수 있는 매크로블록들간의 블록킹 현상을 줄일 수 있도록 설계된 디블록킹 필터(deblocking filter) 기능, 외부 표시 장치 등을 통해서 나타나는 동영상 화면의 크기를 조절할 때 사용되는 보간 필터(interpolation flter) 기능이 있다.
상기 포스트 프로세서(205)와 인터페이스 되는 각종 입출력 디스플레이 제어 인터페이스(206)에는 외부의 표시 장치들과의 데이터 전송을 위해 필요한 주소 및 데이터 라인은 물론이고, 부가적으로 표시 장치의 동기화에 사용되는 HSYNC/YSYNC 신호들과 포스트 프로세서(205) 전용 클럭 등이 포함된다.
외부 메모리 컨트롤러(213)는 외부에 장착될 프레임 메모리를 제어하기 위한 것으로, 코프로세서 버스(202)와 메인 버스(211)는 데이터의 경우 모두 32비트의 크기를 갖지만 외부 메모리의 인터페이스는 8비트에서 32비트로 가변적이 될 수 있다.
외부 메모리 컨트롤러(213) 내부에서는 외부 프레임 메모리 제어 뿐만 아니라 ROM 형태의 메모리 제어를 수행하는 데, 이것은 프레임 메모리 뿐만 아니라 초기 시스템 부팅 시에 프로그램 다운로드를 위해 ROM 형태의 메로리가 사용될 수 있기 때문이다.
외부 메모리 컨트롤러(213)의 외부 인터페이스의 형식과 비트수에 따라 데이터의 동기를 맞추기 위한 형식 변환(format conversion : byte 단위의 데이터를 모아서 word 단위의 데이터를 생성하는 과정)을 수행하고 각 마스터 프로세서(RISC 프로세서(207), DSCU DMA(204), 포스트 DMA(209), 주변장치 DMA(210)중의 어느 하나)의 데이터 전송 크기에 맞추어서 버스트 모드 억세스(burst mode access)를 지원한다.
또한 DRAM과 같은 형태의 메모리가 사용될 경우, 그 재생을 위해서 자동 재생(auto refresh) 방식이 채택되고 매 (9.5 + A)usec 마다 이를 수행한다(여기서 A는 버스 사용을 위한 지연 시간이고 최대 3.3usec이다).
외부 메모리 제어 인터페이스(215)는 외부 메모리 즉, DRAM 혹은 ROM 형태의 메모리 제어를 위해 사용되는 입출력인데, DRAM과 같은 메모리가 사용될 경우, CAS(Column Address Strobe), RAS(Row Address Strobe), 클록, 라이트 이네이블(Write enable), 어드레스 버스, 데이터 버스, 칩 이네이블(chip enable), DQM 등의 신호와 ROM 제어와 관련된 메모리 실렉트(select), 라이트 이네이블 신호들이 포함된다.
주변장치 브릿지(212)는 각종 주변장치(216)들과 메인 버스(211)를 연결해 주기 위한 브릿지이다.
상기 주변장치 브릿지(212)는 메인 버스(211)를 기준으로 볼 때에는 슬레이브 이지만 주변장치(216)의 국부적 버스를 기준으로 볼 때에는 유일한 마스터의 역할을 수행한다.
또한 상기 주변장치 브릿지(212)는 메인 버스(211)의 버스 관련 동작(transaction)을 주변장치(216)의 버스 동작으로 변환해 주며 동시에 메인 버스(211)의 주소를 디코딩하여 주변장치(216)의 선택에 필요한 신호와 데이터 전송에 필요한 스트로브(strobe) 신호들을 생성한다.
주변장치 DMA(210)는 주변장치(216)에 포함된 장치들 가운데서 외부 메모리 억세스가 요구될 때 사용되는 DMA 블록이다.
주변장치(216)는 시스템 응용 시에 필요한 각종 기능들을 포함하는 장치들이며 별도의 국부적 버스를 통하여 데이터 전송을 수행한다.
GPIO(216a,General Port Input Output)은 시스템 응용 시에 다양한 목적으로 사용될 수 있는 범용의 입출력 단자이다.
사용자는 프로그램에 의한 레지스터 설정에 의해서 입출력을 설정할 수 있으며 필요에 따라서는 오픈-드레인(open-drain)으로 구동할 수 있다.
따라서 상기 GPIO(216a)를 사용하기 위해서는 미리 입출력의 방향, 오픈-드레인 혹은 푸쉬풀(push-pull)의 설정, 인터럽트 마스크(interrupt mask)의 설정에 의한 마스킹, 그리고 인터럽트 컨트롤러의 이네이블 비트(enable bit) 설정 등 그 GPIO(216a) 사용하기 위한 환경이 미리 준비되어야 한다.
IIC(216b,Inter IC Controller)는 최소한의 핀을 이용하여 LCD 드라이버, EEPROM, 리모드 I/O 포트 등을 효과적으로 연결할 수 있도록 지원하는 일종의 직렬 버스(serial bus) 컨트롤러이다.
상기 IIC(216b)는 자체적으로 발생되는 직렬 클럭 SCL을 이용하고 SDA 핀을 통해 데이터를 전송한다.
SPI(216c,Serial Port Interface)는 다채널 직렬 통신을 지원하는 주변 장치로 마스터 혹은 슬레이브 모드로 동작하면서 64Kbps의 전송 속도를 지원한다.
ICU(216d,Interrupt Control Unit)는 본 발명에 따른 복원 프로세서(201)의 외부로부터 발생되는 각종 인터럽트들과 주변장치(216) 내부에서 발생되는 인터럽트들을 정리하여 RISC 프로세서(207)로 전달한다.
각 인터럽트 소스에는 이네이블 마스크(enable mask)와 플래그 비트(flag bit)가 있어서 해당되는 소스를 제한하거나 동작시킬 수 있다.
타이머(216e)에는 특정 비트 단위로 카운트 업/다운을 수행하는 타이머가 포함되어 있으며 시스템 응용 시에 각종 타이밍 기준(timing reference)으로 사용된다.
PLL(216f,Phase Locked Loop)은 외부의 저주파수 클럭을 입력 받아서 내부에 보다 안정적인 고주파수의 클럭을 공급하는 기능을 수행한다.
WDT(216g,Watch Dog Timer)는 시스템 오동작 시에 자체적인 타이머 기능을 이용하여 일정 시간이 지난 후에는 소프트웨어 리셋(software reset)을 발생한다.
IIS(216h,Inter IC Sound Interface)는 16 비트 혹은 18 비트의 오디오 데이터 통신을 지원하는 직렬 인터페이스이다.
범용의 IIS 방식을 지원할 뿐만 아니라 대부분의 스테레오 오디오 CODEC에서 지원하는 좌측정돈 모드(left-justified mode)와 우측정돈 모드(right-justified mode)를 모두 지원한다.
UART(216i)는 범용 직렬 통신 포트이다.
도 3은 도 2에 나타낸 주변장치(216)중 호스트 인터페이스(Host Interface)의 구조를 나타내는 도면이다.
상기 호스트 인터페이스(301)는 외부의 호스트 프로세서로부터 압축된 비트 스트림을 받아들이거나 운용 프로그램을 다운로드 받을 수 있는 경로를 제공한다.
외부의 호스트 프로세서(311)로부터 호스트 인터페이스(301)로 혹은 호스트 인터페이스로(301)부터 외부의 호스트 프로세서(311)로 양방향 데이터 전송이 가능하도록 하기 위해 각각 20 x 32 비트의 데이터 레지스터를 가지고 있으며 호스트 프로세서(311)와의 형식 변환을 지원하기 위한 엔디안 컨버전(Endian conversion)이 가능하다.
또한 호스트 인터페이스(301) 내부에 HDMAC(307)와 같은 전용의 DMA 컨트롤러를 내장하고 있어서 입력된 데이터를 시스템 버스로 전달하거나 호스트 프로세서(311)로 전송하는데 효과적으로 이용된다.
그리고 내부 디버깅 및 호스트 프로세서(311)와의 메시지 송신 혹은 수신 등을 지원하기 위해 명령어 레지스터(command register)를 제공한다.
호스트 인터페이스(301)는 신호(310)를 통하여 외부와 연결되는데 어드레스 버스는 5비트이고 데이터 버스는 16비트이며, 호스트 프로세서(311)와의 통신을 간소화 시키기 위해 핸드쉐이킹 신호는 주고 받지 않는다.
이러한 구조의 호스트 인터페이스(301)는 다음과 같은 기능을 수행한다.
첫째, 호스트 프로세서(311)로부터 프로그램을 다운로드 받는다.
둘째, 호스트 프로세서(311)로부터 압축 비트 스트림을 전송 받는다.
세째, 호스트 프로세서(311)로 필요한 데이터를 전송한다.
네째, 호스트 프로세서(311)와 복원 프로세서(201)와의 데이터 교환 시에 데이터의 형식 변환을 수행한다.
다섯째, 데이터 송/수신 시에 내장된 버퍼가 완전히 차거나 비었을 때에 인터럽트를 발생시킨다.
여섯째, 호스트 프로세서(311)와의 데이터 전송과는 별도로 명령어(command)나 메시지(message) 교환을 위한 레지스터를 제공하며 특히 명령어의 송/수신 시에는 인터럽트를 발생하여 디버깅이 용이하도록 한다.
일곱째, 호스트 프로세서(311)와의 데이터 교환 시에 DMA를 이용한다.
HDMAC(307)은 호스트 프로세서(311)로부터 수신한 데이터, 혹은 복원 프로세서(201)가 호스트 프로세서(311)로 전송할 데이터를 RISC 프로세서(207)의 개입없이 처리할 수 있도록 지원한다.
상기 HDMAC(307)은 호스트 인터페이스(301)에 내장된 20개의 버퍼가 완전히 차거나 혹은 비었을 때 동작 개시 이벤트를 발생하여 DMA 동작을 시작한다.
특히 호스트 프로세서(311)와의 데이터 교환 뿐만 아니라 복원 프로세서(201)의 부팅 프로세스에도 관여하는데, 만일 신호(310) 중 BOOT_Sel 신호가 1인 상태에서 호스트 프로세서(311)가 특정 용량의 데이터를 쓰기 위한 요청을 시작한 경우에 HPI 컨트롤러(309)는 호스트 부트 프로세스를 시작하여 호스트 프로세서(311)로부터 입력되는 데이터를 외부 메모리에 저장하고 시스템 부팅을 시도하게 된다.
만일 BOOT_Sel 신호가 0인 상태에서 DMA 사용 요청이 입력된다면 HDMAC(307)은 외부 영역(주로 FLASH 메모리가 연결된 외부 입출력 단자이며 시스템 버스(306)을 통해 연결된다)으로부터 특정 용량의 데이터를 읽어 외부 메모리에 전송하며 이후 부터는 ROM 부트 프로세스를 시작하게 된다.
상기 시스템 버스(306)는 HDMAC(307)와 도 2의 메인 버스(211)에 연결되는 데이터 및 어드레스 라인을 나타낸다.
주변장치 버스(304)는 도 2의 주변장치(214) 내부에 연결된 각종 장치들이 공통으로 사용하는 국부 버스이다.
주변장치 버스 인터페이스(303)는 호스트 인터페이스(301)가 주변장치 버스(304)를 통하여 통신하기 위해 필요한 버스 제어 인터페이스 신호를 발생시킨다.
HPI 컨트롤러(309)는 호스트 인터페이스(301)을 제어하기 위한 각종 신호들과 외부 인터럽트를 발생하며 레지스터(302)는 호스트 프로세서(311)와의 데이터 교환 시에 사용되는 버퍼용 레지스터를 나타낸다.
도 4는 도 2에서 나타낸 VDEC(203) 중 동영상 복원시 매크로블록 수준으로 각 블록들의 동작 순서를 제어하고, 또한 각 블록에서 발생되는 인터럽트를 통괄하며 RISC 프로세서(207)와의 인터페이스를 제공하는 DSCU(203a)의 블록도이다.
코프로세서 인터페이스(402)는 RISC 프로세서(203)와 VDEC(203) 혹은 포스트 프로세서(205)의 각 블록들이 연결되기 위한 인터페이스를 제어한다.
상기 코프로세서 인터페이스(402)는 RISC 인터페이스(401)를 통해 입출력 되는 데이터, 어드레스 및 제어 신호들을 이용하여 RISC 프로세서(207)로부터 발생되는 코프로세서(coprocessor) 명령어 데이터를 분석한다.
이어서 어느 블록의 레지스터 읽기/쓰기(Read/Write) 혹은 DEC 메모리(203f)의 억세스에 필요한 것인가를 결정하여 각 블록에 대해 적절한 제어신호를 생성 및 분배한다.
DSCU 레지스터(403)는 레지스터 및 메모리 읽기/쓰기(406)을 통해 생성되는 각종 제어 신호에 관련된 데이터를 저장하기 위한 것으로, 국부 메모리인 DEC 메모리(203f)의 읽기 혹은 쓰기시에는 사용할 메모리의 시작 주소와 종료 주소를 지정하기 위한 데이터를 저장한다.
스테이트 머신(404)은 DSCU(203a)의 동작을 제어하기 위한 FSM(Finite StateMachine)이며, INTCON DBG_IF(407)와 SIG_GEN(408)은 VDEC(203)의 각 블록들로부터 발생되는 인터럽트 요청 신호를 받아들이는 동시에 스테이트 머신(404)에서 발생되는 각종 제어 신호들을 블록별로 생성한다.
이때 각 블록들로부터 발생된 인터럽트 요청은 INTCON DBG_IF(407)을 통하여 RISC 프로세서(207)로 입력된다.
도 5와 도 6은 코프로세서 인터페이스(402)에서 사용되는 코프로세서 명령어 세트에 대한 설명이다.
도 5는 도 2의 VDEC(203)에 포함된 각 블록들의 레지스터를 읽거나 쓰기 위해 사용되는 명령어(501) 형식이다.
Cond(502)는 이 명령어를 수행할 것인가를 판단하기 위해 사용되는 조건 영역이고 CP Opc(503)는 각 블록들을 구별하기 위한 인식 영역이다.
상기 인식자(503)는 3비트로 구성되는데 그 값이 000일 때는 DSCU(203a), 001일 때는 VLD(203ba), 010일 때는 RVLD(203bb), 011일 때는 ADR(203e), 100일 때는 IDCT(203ca), 110일 때는 MC(203d), 그리고 111일 때는 포스트 프로세서(205)를 나타낸다.
L(504)는 레지스터 읽기 혹은 쓰기를 구분하기 위해 사용되는 것이고, CRn(505)는 사용하려는 레지스터 주소의 상위 4비트를 나타낸다.
Rd(506)은 RISC 프로세서(207)의 내부 레지스터 가운데 현재 사용하려는 레지스터의 번호를 나타내며, CRm(608)은 사용하려는 레지스터 주소의 하위 4비트를 나타낸다.
CP#(507)과 CP(509)는 차후의 확장된 기능을 사용할 수 있도록 남겨진 영역이다.
도 6은 VDEC(203)에 포함된 각 블록들이 외부 메모리를 읽거나 쓰기 위해 사용하는 명령어 형식이다.
VDEC(203) 내부의 각 블록들은 메인 버스(211)와 직접적으로 연결되지 못하므로 만일 이 블록들이 외부 메모리를 사용하고자 한다면 명령어(601)를 이용해서 RISC 프로세서(207)에 알려주고 다시 상기 RISC 프로세서(207)는 메인 버스(211)를 통하여 데이터를 억세스할 수 있게 된다.
도 5에서와 마찬가지로 Cond(602)는 이 명령어를 수행할 것인가를 판단하기 위해 사용되는 조건 영역이고, P/U/N/W/L(604)은 메모리 읽기 혹은 쓰기를 결정한다.
Rn(604)은 각 블록들의 내부 레지스터를 나타내며 CRd(605)는 어느 메모리를 사용할 것 인가를 결정해 준다.
상기 CRd(605)는 4비트로 구성되는데, 0000이면 외부 메모리를, 0001이면 VDEC(203) 내부의 DEC 메모리(203f)를, 0010이면 VDEC(203) 내부의 ADR(203e)에 사용되는 국부 메모리를, 0011이면 VDEC(203) 내부에 사용되는 IQ(203cb)의 국부 버퍼를, 0100부터 0101까지는 VDEC(203) 내부의 MC(203d)에 사용되는 국부 메모리를, 그리고 0101부터 1101까지는 포스트 프로세서(205) 내부 블록의 국부 메모리를 각각 나타낸다.
오프셋(607)은 메모리 억세스 시에 사용하기 위한 immediate offset값이고,CP#(606)은 차후의 확장된 기능을 적용하기 위해 남겨진 부분이다.
도 7은 도 4에 나타낸 코프로세서 인터페이스(402)의 구성도이다.
파이프라인 폴러어(702,pipeline follower)는 RISC 프로세서(207)의 파이프라인 각 단계에 맞추어서 다음 동작을 결정한다.
레지스터 읽기/쓰기 컨트롤러(704)와 외부 메모리 읽기/쓰기 컨트롤러(705)는 각각 VDEC(203)의 각 블록 레지스터를 제어하거나 메모리 읽기/쓰기를 위해 사용되는 제어신호들을 생성한다.
이때 RISC 프로세서(207)는 코프로세서 인터페이스(402)를 위해서 각 코프로세서로부터 발생되는 파이프라인 스테이지 관련 신호를 참조하게 되는데, 스테이트머신(703)은 이 신호들을 VDEC(203)에 포함된 각각의 블록에 맞도록 생성하는 기능을 수행한다.
RISC 프로세서(207)와의 핸드쉐이킹을 위한 상태는 아래와 같은 4가지이며 코프로세서의 상황에 따라서 적절한 상태 천이를 수행한다.
4가지는 코프로세서가 없음, 코프로세서가 존재하나 즉시 명령어를 수행할 수 없음, 코프로세서 명령어를 즉시 수행할 수 있는 상태지만 동작의 종료를 위해서는 실행 사이클이 더 필요함, 코프로세서 명령이 동작이 종료됨이다.
도 8은 도 2에 나타낸 VDEC(203)의 DSCU(203a)와 각 블록들 사이의 입출력 신호 관계를 나타내는 타이밍도이다.
상기 DSCU(203a)는 기본적으로 순차적인 순서 제어를 수행하며, 각 블록들의 동작 개시 신호(801) 및 이네이블 구간 신호(802)를 출력하며, 또한 각 블록의 동작 종료를 알리는 지시 신호(803)를 입력 받는다.
정상적인 동작에서는 하나의 매크로블록에 대한 복호가 완료되면 인터럽트를 발생시키며, 상태 모니터링이나 특정 블록의 동작을 소프트웨어로 대체하고자 하는 경우에는 클럭(804)의 동작 시작 시점이나 종료 시점에서 인터럽트를 발행하도록 설정할 수 있다.
또한 각 블록들의 동작 중에 오류가 발생하면 진행하던 동작을 모두 중지하고 인터럽트를 발생시킨다.
각 블록들은 이네이블 구간 신호(802) 동안에만 클럭이 공급되어 동작하므로, 선택되지 않은 블록들은 모두 디스에이블(disable) 상태가 되고 따라서 전체적인 전력 소모를 줄일 수 있다.
또한 상기 DSCU(203a)는 지시 신호(803)를 받은 후에 다음 블록의 동작을 지시하는 리퀘시트 신호를 생성한다.
도 9는 이러한 DSCU(203a)의 상태 천이도이다.
ST_INIT(901)은 매크로블록 단위의 복호를 시작하는 상태이며 VLD(203ba)를 이용하는 순방향 복호인 경우에 처리할 블록 번호는 O 되고, RVLD(203bb)를 이용하는 역방향 복호인 경우에 처리할 블록 번호는 5가 된다.
도 9에 나타난 상태 천이를 위해 사용되는 OP_OFF[N] 변수는 0일 때 정상 동작을 의미하며 1이면 해당되는 동작이 수행되지 않음을 나타낸다.
이때 N은 각각의 블록들을 나타내는데 0이면 VLD(203ba), 1이면 RVLD(203bb), 3이면 ADR(203e), 4이면 IDCT(203ca), 그리고 5이면 MC(203d)를 각각나타낸다.
따라서 ST_VLD(902), ST_RVLD(903), ST_ADR(904), ST_IDCT(905), ST_MC(907)들은 각각 VLD(203ba), RVLD(203bb), ADR(203e), IDCT(203ca), MC(203d)가 이네이블 되고 특정 기능이 수행되고 있는 상태를 표시한다.
ST-WAIT(909)는 상기 MC(203d)를 수행하기 위해서 필요한 이전 프레임 및 현재 프레임의 픽셀 데이터 읽어오기 과정이 완료되지 않았을 경우에 이 동작이 완료될 때까지의 대기 상태를 나타낸다.
dscu_done(908)은 하나의 매크로블록에 대한 복호 과정이 완료되었음을 나타내는 상태로 인터럽트를 발생하여 모든 복호 과정의 완료를 표시한다.
update_bn(906)은 하나의 매크로블록에 포함되는 6개의 블록중 하나의 블록이 완료되었을 경우에 블록 번호를 증가시키면서 다음 블록의 복호 과정으로 천이하는 단계의 상태이다.
idle(900)은 DSCU(203a)가 대기 상태에 있음을 나타내는 부분으로 레지스터의 설정에 의해 DSCU(203a)의 시작을 알리면 ST_INIT(901) 상태로 천이하여 복호 과정을 시작한다.
상기 DSCU(203a) 내부의 인터럽트 콘트롤러는 각 블록의 시작 및 종료 시점에서 인터럽트가 발생할 수 있도록 설정하며, 하나의 매크로블록에 대한 복호가 완료되거나 혹은 오류로 인해 동작이 중지된 경우에도 인터럽트 발생이 가능하다.
이외에도 비트 스트림이 저장된 VLD(203ba)의 입력 버퍼가 빈 상태이기 때문에 발생된 인터럽트나 포스트 프로세서(205)의 인터럽트 요청 등을 받아 들여 RISC프로세서(207)의 인터럽트 관련 핀에 입력한다.
도 10은 DSCU(203a)에 의한 복호 파이프 라인의 구성을 나타낸다.
H.263/H.261 혹은 MPEG-4와 같은 동영상 관련 표준의 복호 과정에 따라서 DSCU(203a)는 VLD(203ba) 또는 RVLD(203bb) -> ADR(203e) -> IDCT(203ca) -> MC(203d)의 과정으로 파이프라인 단계를 구분하고, 전술한 DSCU(203a)의 제어 신호에 따라 해당되는 블록이 이네이블 됨으로써 동영상 신호의 복호가 순차적으로 이루어 진다.
이때 로드 레퍼런스(1002)와 같이 VLD(203ba) 또는 RVLD(203bb)와 ADR(203e)이 수행되는 동안에는 외부 프레임 메모리에 대한 억세스가 필요 없으므로 MC(203d) 단계에서 사용될 이전 프레임 및 현재 프레임 데이터를 미리 억세스 함으로써 전체적인 복호 시간을 최소화 할 수 있다.
상기 VDEC(203) 내부의 VLD(203ba)는 허프만(Huffman) 방식으로 코딩된 비트스트림을 복호하기 위해 사용되는 하드웨어이다.
상기 VLD(203ba)는 압축된 비트스트림을 1비트 단위가 아닌 1코드 단위로 처리한다.
그러기 위해서는 상기 VLD(203ba)의 버퍼에 미리 저장되어 있는 각 계수값을 복호하기 전에 버퍼에서 이전에 복호된 코드의 비트수 만큼씩 배럴 시프터(barrel shifter)를 이용하여 비트스트림을 입력시켜 주어야 한다.
그리고 상기 VDEC(203)의 VLD(203ba)는 텍스처(texture) 정보만 복호하기 때문에(실제로 픽쳐 헤드(picture header), 매크로블록 헤더 등의 상위 정보들은RISC 프로세서(207)에서 소프트웨어적으로 처리되므로 VLD(203ba)에서는 이에 대한 처리를 수행할 필요가 없음), 현재 처리하려고 하는 매크로블록이 어떤 모드인가에 따라서 AC 계수 혹은 DC 계수에 해당되는 테이블을 사용하여 복호를 수행하면 된다.
도 11은 상기 VLD(203ba)의 블록 구성도를 나타낸다.
VLD 입력버퍼(1112)에 32비트씩 저장되어 있는 데이터를 효과적으로 사용하기 위해서 배럴 시프터(1104,barrel shifter)에 64비트 버퍼를 사용하여 복호된 데이터의 비트 수가 32를 초과할 때마다 배럴 시프터(1104)의 하위 32비트 데이터를 상위 32비트 위치로 채우고, 동시에 입력버퍼(1112)에 비트스트림을 요청하여 하위 32비트를 새로운 데이터로 채운 다음 입력버퍼(1112)의 주소를 1만큼 증가시킨다.
이때 만일 증가된 값이 미리 저장된 버퍼의 크기(버퍼의 하한선을 나타내는 크기)와 같으면 버퍼가 비었다는 정보를 DSCU(203a)에 알리고 DSCU(203a)는 어떤 상황에서 발생된 신호인가를 판단하여 RISC 프로세서(207)에 인터럽트를 발생하게 된다.
동시에 VLD(203ba)는 입력버퍼(1112)의 주소를 0으로 초기화하면서 DSCU(203ba)에서 다시 복호를 시작하라는 명령을 받을 때까지 기다린다.
입력버퍼 컨트롤러(1113)는 입력버퍼(1112)에 저장되어 있는 비트스트림을 32비트 단위로 가져오기 위해 메모리 억세스에 관련된 제어 신호들을 생성하고 텍스처 정보를 복호하기 위해 비트스트림의 처음 시작 위치 정보를 RISC 프로세서(207)로부터 받아 복호가 완료되었을 때 비트스트림의 어느 위치까지 복호되었는 가를 RISC 프로세서(207)에 알린다.
또한 미리 저장된 비트스트림을 검사하여 1코드를 처리하기에 부족한 경우 입력버퍼(1112)가 비었다는 인터럽트를 발생한다.
배럴 시프터(1104)는 1코드를 처리하기 위해 입력버퍼 컨트롤러(1113)에서 출력된 32비트 데이터를 다시 정렬시켜서 복호 블록으로 보내주는 역할을 수행하는데 32비트 레지스터 2개와 64 MUX로 구성된다.
DC 계수 디코더(1110), AC 계수 디코더(1109), AC 테이블(1108)은 32비트 단위의 데이터를 그 모드에 따라 테이블에 저장된 코드와 비교하여 상응하는 엔트리를 찾아낸다.
이 비교 과정에서 만일 입력된 데이터에 대한 엔트리가 테이블에 없다면 오류가 발생했음을 RISC 프로세서(207)에 알리고 VLD(203ba)는 대기 상태로 들어간다.
비교 과정은 우선 입력 데이터의 상위 7비트를 이용하여 이것이 에스케이프 코드(escape code)인 가를 판별한 후 다시 상위12 비트를 4비트로 구성된 3개의 영역으로 구분하고 이 데이터를 이용하여 테이블을 8개의 그룹으로 분리한다.
이때 동일한 그룹 내에서는 입력 데이터 자체가 선택 인자가 되어 자신에 해당되는 코드를 빠르게 찾을 수 있다.
DC 계수 디코더(1110)는 MPEG-4에서 지정된 바에 의해 인트라(intra) DC 테이블을 사용하는 경우에만 동작하는 블록이다.
디스캐너 테이블(1103)과 디스캐너(1102)는 VLD(203ba) 나 RVLD(203bb)의 디스캐닝(descanning) 및 VLD(203ba)의 전체 동작 제어를 위한 각 서브 블록의 스케쥴링을 수행한다.
DSCU(203a)로부터 복호 시작 신호가 입력되면 DEC 메모리(203f)에 복호된 데이터를 쓰기 위해 DC 계수 디코더(1110), AC 계수 디코더(1109), AC 테이블(1108)에 각각 복호 요청 신호를 출력하고 복호를 시작한다.
그리고 각 복호 과정이 완료될 때 마다 DEC 메모리(203f)의 포인터를 1씩 증가 시키면서 DC 계수 디코더(1110), AC 계수 디코더(1109), AC 테이블(1108)에서 찾은 코드를 입력버퍼(1112)에 저장한다.
이 과정에서 8 x 8 블록에 대한 처리가 완료되면 AC 테이블(1108)과 AC 계수 디코더(1109)의 복호 결과인 최종 라스트 신호를 확인하고 1인 경우 정상적으로 VLD(203ba) 동작이 완료되었음을 DSCU(203a)에 알린다.
만일 이 값이 0라면 정상적인 복호가 진행되지 못한 것이므로 오류가 발생했음을 DSCU(203a)에 알리고 VLD(203ba) 동작을 종료한다.
MPEG-4의 경우에 VLD(203ba)는 다음과 같은 5가지 모드가 사용되여, 각각의 모드에 따라 복호하는 과정은 조금씩 다르다.
첫째 resync marker enable with data partitioned and VLD used mode, 둘째 resync marker enable with data partitioned and RVLD used, 셋째 resync marker enable with data combined and VLD used, 네째 resync marker disable with VLD used, 다섯째 short video header(H.263 mode)이다.
상기 VDEC(203)의 RVLD(203bb)는 오류 내성(error resilience) 향상을 위해서 역방향으로 복호가 가능한 기능을 지원한다.
입력되는 동영상 스트림 내에 오류가 존재하는 경우 순방향 복호를 진행하다 오류가 발견되면 RVLD(203bb)는 해당되는 비디오 패킷의 끝 지점에서 역방향으로 복호를 진행하여 복호 가능한 비트열을 최대한으로 증가시키는 것이 목적이다.
VLD(203ba)와 함께 상기 RVLD(203bb)를 이용하면 에러가 발생한 경우 그 발생 위치를 어느 정도 국소화 시킬 수 있으므로 비디어 패킷 중 에러가 아니라고 판단되는 구간이 있으면 그 구간에서는 정상적인 복호를 수행할 수 있다.
이때 에러의 발생 범위를 어느 정도로 국소화 시킬 수 있는가 하는 것은 실제로 에러가 발생한 위치로부터 RVLD(203bb)가 이 에러를 검출하는 위치까지의 거리 분포로 결정된다.
이렇게 RVLD(203bb)를 사용하면 에러 발생 위치로부터 에러 검출 위치까지의 길이가 비교적 작고 일정한 값 이내로 대부분 들어오므로 에러가 아닌 캐시(cache)로 블록을 효과적으로 분리해낼 수 있다.
미설명 부호 1105는 AC/DC 실렉터, 1106은 클록 발생기, 1107은 멀티플렉서이다.
도 12는 상술한 기능의 RVLD(203bb) 구성도를 나타낸다.
입력버퍼부(1203)는 32비트의 레지스터(1302,1303) 2개, 64 x 32 MUX(1301) 그리고 메모리의 주소 및 제어 신호를 생성하는 제어부(1306)로 구성된다.
도 13은 상기 입력버퍼부(1203)의 상세도를 나타낸다.
도 13에서 레지스터인 U32(1302)와 L32(1303)은 각각 상위, 하위 32 비트 입력 데이터를 나타내고 MUX(1301)은 ACC_LEN 값에 따라 도 12의 CLUST-DEC(1202)에 입력되는 데이터를 만들어 낸다.
제어부에 입력되는 신호인 SA[4:0]은 복호할 비트스트림이 시작되는 주소를 나타내며, DIR은 복호할 방향, 그리고 LEN은 이전에 복호된 코드 워드의 길이를 각각 나타낸다.
특히 LEN 값은 지속적으로 누적되므로 그 누적 값은 ACC_LEN에 나타난다.
이 ACC_LEN 신호는 32비트의 데이터 가운데서 U32(1302)혹은 L32(1303)중 어느 것을 사용할 지를 선택하는 신호가 된다.
만일 ACC_LEN이 34비트 이상인 경우에 L32(1303)은 U32(1302)로 이동되고 메모리에서 다음에 오는 주소의 값이 입력되며 ACC_LEN = ACC_LEN -32로 갱신된다.
CLUST_DEC(1202)와 탐색표(1201)로 구성되는 클러스터 복호기는 코드 워드의 특성에 따라 분류하여 저장된 LUT(Look Up Table)의 인덱스와 복호된 코드 워드의 길이를 생성한다.
클러스터는 크게 3개로 나눌 수 있는데 코드 워드를 16비트로 확장할 때에 상위 N비트의 값이 제1클러스터의 값(C1V)이 된다.
제2클러스터가 A(예를 들어)와 같은 유형의 패턴을 가지도록 정렬되는데, 제2클러스터의 복호값(C2V)이란 제1클러스터에 해당하는 상위 N비트를 제외하고 연속된 1이나 0의 갯수가 된다.
제3클러스터도 A의 유형을 가지며 제1,2클러스터에 해당하는 비트열을 제외한 연속된 1이나 0의 갯수가 제3클러스터의 값(C3V)이 된다.
이와 같이 생성된 C1V, C2V, C3V를 가지고 탐색표(1201)를 참조하여 인덱스 및 길이를 생성해 낸다.
FSM(1206)은 RVLD(203bb)의 동작 시이퀀스를 제어한다.
상기 FSM(1206)의 제어신호를 이용하여 RVLD(203bb)는 스캔 및 복호 동작을 수행하며 역방향 복호 시에는 되감기(rewind) 동작 등을 수행한다.
만일 입력버퍼(1112)가 비게 되는 경우는 입력버퍼(1112)에 비트스트림이 다시 채워질 때까지 동작을 중지하게 되며 복호 도중에 오류가 발생하면 해당되는 플래그를 1로 설정하고 동작을 종료한다.
MPEG-4 동영상 부호화 알고리즘에서는 부호화의 효율을 높이기 위하여 DCT 계수를 바로 가변장 부호화 하는 것이 아니라 인접한 상측 블록 또는 좌측 블록의 DCT 계수를 사용하여 연산된 차분값만을 가변장 부호화 한다.
이것을 AC/DC 계수 예측이라 하는 데, VDEC(203)의 ADR(203e)는 그것의 반대 과정을 수행한다.
미설명 부호 1304는 반전부이고 1305는 VLD 비트스트림 버퍼이다.
상기 VDEC(203)에서는 RVLD(203bb)와 MC(203d) 그리고 RISC 프로세서(207)에서 수행되는 소프트웨어를 이용하여 에러 검출 및 은닉(concealment) 기능을 수행한다.
에러의 검출은 상술한 RVLD(203bb)를 이용하고 각 매크로블록은 에러가 발생된 형태에 따라 다음과 같은 제어 모드에 의해 은닉이 이루어 진다.
현재 처리 중인 매크로블록에서 발생할 수 있는 에러의 형태는 매크로블록의형태가 인트라(intra)인 가 혹은 인터(inter)인 가에 의해서, 입력된 데이터 패킷의 헤더 부분에 DC 성분이 있는 가의 여부에 의해서, 그리고 현재 매크로블록의 인접한 상측에 위치하는 블록으로부터 DC 계수를 사용할 수 있는 가의 여부에 따라 서 13가지 모드로 나누어 진다.
현재 발생된 에러에 대하여 이와 같이 각 모드별로 소프트웨어 적으로 매크로블록 헤더 및 기타 제어 변수를 설정한다.
기타 제어 변수에는 특정 하드웨어를 에러 은닉 모드로 동작시킬 것인 가를 나타내는 것과 현재 매크로 블록의 DC 계수를 인접한 아래 행에 위치하는 매크로 블록에서 사용할 수 있는 가를 나타내기 위한 변수가 포함된다.
이것은 현재 복구된 에러가 인접한 다음 행에 지속적으로 전파되지 못하도록 하기 위함이다.
발생되는 에러의 형태와 은닉 방법은 다음과 같다.
첫째, 현재 입력된 데이터 패킷에 대하여 에러가 전혀 검출되지 않은 경우와, 둘째 제2파트 텍스처(second part texture)에서 에러가 검출되었지만 데이터 패킷 내의 에러 국소화 과정에 의해 정상 복호가 가능한 경우와, 셋째 텍스처 에러가 발생했고 현재 프레임이 인트라이며 복호된 DC 계수가 없고 인접한 상측에 위치하는 블록의 DC 계수를 사용할 수 있는 경우에는, 인접한 상측 블록의 DC 계수를 가져오는 방법으로 에러 은닉을 수행하되 이렇게 복구된 일부 매크로블록의 헤더 및 제어 변수는 인접한 하측에 위치하는 매크로블록에서 현 매크로블록의 DC 계수를 참조하지 않도록 처리한다.
네째, 텍스처 에러가 발생했고 현재 프레임이 인트라이며 복호된 DC 계수가 없고 인접한 위쪽에 위치하는 매크로블록의 DC 계수를 사용할 수 없는 경우에는 이전 프레임과 같은 위치의 매크로블록으로 대체되도록 한다.
다섯째, 텍스처 에러가 발생했고 현재 프레임이 인트라이며 DC 계수가 있는 경우에는 DC 계수의 복원만 수행한다.
여섯째 텍스처 에러가 발생했고 현재 프레임이 인트라인 경우에는 움직임 벡터가 항상 있으므로 이를 이용하여 이전 프레임으로부터 해당되는 픽셀 데이터를 가져온다.
일곱째, 제2파트 헤더(second part header)에 에러가 발생했고 현재 프레임이 인트라이면서 복호된 DC 계수가 없으며 인접한 상측에 위치하는 매크로블록의 DC 계수가 있는 경우에는 상측 블록의 DC 계수를 사용한다.
여덟째, 제2파트 헤더에 에러가 발생했고 복호된 DC가 없으며 인접한 상측에 위치하는 매크로블록의 DC계수를 사용할 수 없는 경우에는 이전 프레임의 동일한 위치로부터 픽셀 데이터를 가져온다.
아홉째, 제2파트 헤더에 에러가 발생했고 현재의 매크로블록이 인트라이며 복호된 DC 계수가 있는 경우에는 DC 계수만을 이용하여 복호한다.
열째, 제2파트 헤더에 에러가 발생했고 현재 프레임이 인터인 경우에는 움직임 벡터가 존재하므로 이를 이용하여 이전 프레임으로부터 해당되는 위치로부터 픽셀 데이터를 가져온다.
열한째, 제1파트(first part)에서 에러가 발생했고 현재 프레임이 인트라이며 인접한 상측에 존재하는 블록의 DC 계수를 사용할 수 있는 경우와, 열두째 제1파트에서 에러가 발생했고 현재 프레임이 인트라이며 인접한 상측에 위치하는 블록의 DC 계수를 사용할 수 없는 경우에는, 이전 프레임의 동일한 위치로부터 픽셀 데이터를 가져온다.
열세째, 제1파트에서 에러가 발생했고 현재 프레임이 인터인 경우에는 현재 처리 중인 매크로블록이 인트라인 경우에 이전 프레임과 동일한 위치의 픽셀 데이터를 이용하여 복호하고 만일 현재 처리하려는 매크로 블록이 인터이면 매크로블록의 에러 은닉 기능을 이용하여 움직임 벡터를 추출하고 이전 프레임의 해당되는 위치의 픽셀 데이터를 이용하여 복호한다.
도 14는 MPEG-4의 영상 텍스처 복호 순서를 나타낸다.
가변장부호 복호화(variable length code decoding) 과정(S1401)은 가변장부호화된 비트스트림을 복호하여 AC/DC 예측된 이산여현변환계수를 출력하는 과정이다.
역스캔(inverse scan) 과정(S1402)은 상기 S1401과정의 AC/DC 예측된 이산여현변환계수의 출력을 8x8 픽셀의 블록 단위로 AC/DC 계수 예측 방향과 AC 예측 여부에 따라 지그재그 스캔, 가로 방향 스캔, 또는 세로 방향 스캔을 하는 과정이다.
AC/DC 계수 복원 과정(S143)은 복호화기에서 행했던 AC/DC 계수 예측의 반대 과정을 수행하는(inverse AC/DC prediction) 과정이다.
역양자화(inverse quantization) 과정(S1404)에서 역양자화를 하고 역이산여현변환 과정(S1405)에서 역이산여현변환(inverse DCT)을 하여 주파수 영역의 영상데이터를 공간 영역으로 바꾸어준다.
움직임 보상(motion compensation) 과정(S1406)은 S1405과정의 출력과 움직임 벡터 및 이전 프레임 복호 결과에 의한 예측 영상데이터를 더하여 최종적으로 복호된 영상을 출력한다.
상술한 제 과정은 적어도 8 X 8 픽셀로 구성되는 블록 단위로 이루어지고, ADR(203e)은 S1403과정을 수행한다.
상기 ADR(203e)은 DSCU(203a)를 거쳐 코프로세서 버스(202)에 연결되며 필요시에 RISC 프로세서(207)에서 ADR 메모리 또는 레지스터를 읽고 쓸 수 있다.
또한 상기 ADR(203e)은 한 블록의 동작이 완료되면 DSCU(203a)에게 그 상황을 알려주고 VLD(203ba) 혹은 RVLD(203bb)는 ADR(203e)이 동작할 때 필요한 최대 행의 숫자(8 x 8 블록에서 몇 번째 행까지 0이 아닌 계수가 있는 지를 나타내는 인자)를 알려주는 동시에 VLD 혹은 RVLD 에게 다음 블록의 예측방향을 넘겨준다.
도 15는 ADR(203e)의 동작 흐름도를 나타낸다.
S1500단계에서는 한 블록에 대한 AC/DC 계수의 복원을 하기 위해 필요한 변수들을 초기화 한다.
S1501단계에서 현재 처리하려는 매크로블록의 ADR(203e)이 에러 은닉 모드로 동작하는 가를 판단하여, 만일 그렇다면 S1509단계를 수행하고, 만일 그렇지 않으면 S1502단계를 수행한다.
상기 S1501단계는 프로그램에 의해 사용자가 선택한다.
S1509단계에서는 DC 계수를 은닉하는데, 상측으로 인접하는 블록의 DC 계수를 현재 블록의 DC 계수로 복사하는 기능을 수행한다.
S1502단계에서는 현재 처리하려는 블록이 속한 매크로블록의 형태를 판단하여, 인트라인 경우에는 S1503단계를 수행하고, 인트라가 아닌 경우 즉, 인터인 경우에는 S1504단계를 수행한다.
S1503단계에서는 DC 계수를 복원하고, S1508단계와 S1505단계는 다음 블록의 예측 방향을 결정한다.
다음 블록의 예측 방향을 결정하는 것은 다음 블록의 AC/DC 계수 복원 전에 수행되는 역스캔 과정에서(도 14의 S1402과정) 그 블록의 예측 방향에 대한 정보가 필요하기 때문이다.
S1506단계에서는 AC 계수를 복원하고 S1507단계에서는 다음 블록의 AC/DC 계수 복원에 필요한 변수들을 미리 갱신한다.
S1502단계에서 현재 블록이 속한 매크로블록의 형태가 인터이면 S1504단계를 수행하는데 그 다음에 다음 블록의 예측 방향을 결정한다(S1505).
이것은 INTER 매크로 블록 다음에 INTRA 매크로 블록, 즉, 예측 방향 정보가 필요한 매크로 블록이 올 수 도 있기 때문이다.
VDEC(203)의 IQ(203cb)는 IDCT(203ca)가 DEC 메모리(203f)로부터 DCT로 변환된 계수를 읽어갈 때마다 역양자화 과정을 수행한다.
특히 H.263에서와는 달리 MPEG-4 방식에 의해 양자화된 데이터가 입력될 때에는 미스매치 제어(mismatch control)를 수행하는 데, 그 결과로 하나의 블록에 대해 64번째 계수의 값이 초기에 입력된 값과는 틀릴 수 있으므로 이 변화를 IDCT(203ca) 및 MC(203d)에 알려준다.
도 16은 이러한 IQ와 IDCT의 인터페이스에 관한 구성을 나타낸다.
IQ(203cb)는 IDCT(203ca)로부터 처리된 데이터를 입력받아서 역양자화를 수행한 결과를 바로 다음 클럭에 출력한다.
특히 미스매치 제어를 수행하는 경우에 MAX_ROW 번째 행의 마지막 계수가 출력될 때 DO_MISMATCH_CTRL 값이 1로 변하여 IDCT(203ca)에 전달되는 MAX_ROW_NEW의 값이 7로 바뀌게 된다.
상기 IDCT(203ca)는 매 행의 1차원 역이산여현변환 및 역양자화가 완료될 때 마다 MAX_ROW_NEW의 값을 확인하여 현재 행의 번호가 MAX_ROW와 같아질 때까지 1차원 역이산여현변환을 수행한다.
또한 DO_MISMATCH_CTRL의 값이 1이면 CBP_NEW는 무조건 1이 되는데, 이 값은 MC(203d)의 움직임 보상에 필요한 CBP(Coded Block Pattern) 값으로 제공된다.
미설명 부호 1605는 레지스터 파일이다.
도 17은 IQ(203cb)에서 수행하는 동작의 한 예를 보여준다.
CLK(1700)은 IQ(203cb) 내부에서 사용되는 동작 클럭이고, IQ_EN(1701)은 IQ(203cb)의 동작을 제어하는 이네이블 신호이다.
ADDR(1702)는 한 블록의 계수 위치를 나타내는 주소이며 IQ_IN(1703)은 IQ(203cb)로 입력되는 데이터이다.
weight(1704)는 역양자화를 수행하기 위해 사용되는 가중치(weight) 값이며 IQ_OUT(1705)는 계산결과 출력되는 데이터이다.
MAX_ROW_NEW(1706)은 64개의 계수를 계산한 후에 미스매치 제어를 수행하지 않고 VLD(203ba)로부터 출력되는 MAX_ROW 값(이 값은 현재 처리하려는 블록에서 0 이 아닌 계수가 포함된 행의 수를 나타냄)에 의해 갱신되는 새로운 행의 값이다.
정상 모드에서 IDCT(203ca)는 한 블록의 계수에 대하여 무조건 첫번째 행에 대한 역양자화 및 1차원 역이산여현변환을 수행한다.
그리고 현재의 행의 숫자가 MAX_ROW_NEW(1706) 보다 작으면 다음 행에 대해 역양자화 및 1차원 역이산여현변환을 수행한다.
이와 같이 MAX_ROW_NEW(1706) 만큼만 1차원 역이산여현변환을 수행하면 IDCT(203ca)의 전력 소비를 줄일 수 있다는 장점이 있다.
도 17에서 초기에 MAX_ROW_NEW(1706)의 값은 0이었는데, IQ(203cb)가 첫번째 행에 대한 역양자화를 계산한 결과와 VLD로부터 입력된 MAX_ROW의 결과를 조합하여 do_mismatch_ctrl(1707) 신호를 갱신한다.
미스매치 제어는 기본적으로 64개의 계수가 완성되어야 수행할 수 있는 것인데 VLD(203ba)에서는 현재 처리하려는 블록의 0이 아닌 계수가 포함된 행의 번호를 출력해 주므로 이 값을 이용하여 미스매치 연산을 미리 수행할 수 있다.
그런데 이 연산결과가 짝수 혹은 홀수 인가에 따라서 그 블록의 64 번째 계수의 값이 변할 수 있으므로 만일 계산 결과가 짝수이면 나머지 모든 행에 대한 역양자화를 수행하고, 반대로 홀수이면 현재 상태에서 그대로 연산을 완료한다.
도 18에서는 IQ_OUT(1705) 신호에서 연산된 값의 결과를 짝수라고 할 때에 상술한 조건에 따라 나머지 모든 행들도 역양자화 연산을 수행하는 과정을 나타낸다.
VDEC(203)의 IDCT(203ca)는 휘도와 색차로 표현되는 주파수 영역의 영상 신호를 시간영역으로 변환시킨다.
도 18은 1차원 IDCT를 구성하는 블록도를 나타낸다.
실제로 동영상 데이터의 역이산여현변환을 위해서는 도 18의 1차원 역이산여현변환을 이어서 두 번을 수행함으로써 2차원 역이산여현변환을 실현한다.
데이터 랫치(1800,data latch)는 IDCT(203ca)로 입력되는 데이터를 저장하는 데이터 랫치로서, RAC(1805,1806,ROM Accumulator)에 입력되는 경우에는 ROM 테이블을 억세스 하기 위한 어드레스로 사용된다.
버터플라이3(1801)은 ROM 테이블이 필요 없이 y0 와 y4에 대하여 버터플라이 연산을 수행한다.
상기 RAC(1805)는 y2 와 y6 입력에 대하여 2개의 ROM 테이블을 이용하여 분산 연산(distributed arithmetic)을 수행하고, RAC(1806)은 y1, y3, y5, y7에 대하여 4개의 ROM 테이블을 이용하여 분산 연산을 수행한다.
버터플라이2(1802)는 버터플라이3(1801)과 RAC(1805)로 부터 출력되는 데이터 값을 이용하여 2차 버터플라이 연산을 수행한다.
연산부(1803)는 RAC(1805)의 출력과 버터플라이2(1802)의 출력을 모두 동일한 정밀도를 갖도록 보정하고 버터플라이3(1801), 버터플라이2(1802), RAC(1805)의연산을 거치면서 발생할 수 있는 오차에 대한 보상(compensation)을 수행한다.
또한 1차원 역이산여현변환을 수행한 결과를 다음에 이어지는 두 번째 1차원 역이산여현변환의 입력으로 사용하기 위해 올림 연산(rounding / clipping)을 수행한다.
또한 상기 연산부(1803)는 이어지는 두 번째 1차원 역이산여현변환 연산 시에도 동일한 목적으로 사용된다.
자릿수(1804)는 각각의 연산 블록에서 출력되는 데이터의 정수 자릿수와 소수점이하의 자릿수를 나타낸다.
도 19는 IQ(203cb)와 IDCT(203ca) 전체의 블록도를 나타낸다.
XIND 발생부(1903)는 2차원 역이산여현변환이 완료되었을 경우에 XIND 신호를 발생시키는 회로이고, 조건 판단부(1904)는 역이산여현변환 수행 조건을 판단하는 블록으로, 현재 처리하려는 매크로블록이 인터이고 CBP=0인 경우에 역이산여현변환 동작 자체를 생략할 수 있도록 제어한다.
또한 현재 처리하려는 매크로블록이 인트라이고 CBP= 0인 경우, 혹은 H.263 양자화 모드인 경우에 입력되는 데이터에 대해 좌측 시프트(right shift)만 수행할 수 있도록 제어한다.
IQ(203cb)는 앞서 설명된 역양자화 기능을 수행하고 CBP 값을 갱신하며, 신호 발생부(1906)는 첫번째로 수행되는 1차원 역이산여현변환의 연산이 종료되었음을 나타내는 신호를 생성하고 추가적으로 역양자화의 동작 구간 제어를 위한 신호를 발생시킨다.
카운터(1907)는 IDCT(203ca) 전체 동작을 제어하는 데 사용되는 카운터이며 기본적인 IDCT(203ca)의 파이프 라인을 제어한다.
제어신호 발생부(1909)는 IDCT(203ca)의 연산 결과를 저장하기 위해 DEC 메모리(203f)를 억세스하기 위해 필요한 제어 신호들을 생성한다.
IDCT 흐름 제어부(1911)는 두번째 1차원 역이산여현변환의 흐름을 제어하는 블록으로 첫번째 1차원 역이산여현변환을 수행할 때에는 DEC 메모리(203f)에 저장된 데이터(VLD에서 출력된 결과)가 입력되고 이것을 역양자화를 수행한 결과가 Qout에 저장된다,
두번째 1차원 역이산여현변환을 수행할 때에는 y0 -y7, Bin0 -Bin7에 저장된 데이터를 이용하게 되며 동시에 load_step1, load_step2를 거치면서 최종 결과를 DEC 메모리(203f)에 저장할 수 있도록 한다.
RAC(1912)는 분산 연산에 사용되는 블록이며 전술한 도 18의 버터플라이(1801,1802)가 포함된다.
역이산여현변환 연산에서 데이터 로드(data load) -> 역이산여현변환 -> 데이터 저장(data store)의 일련의 과정을 처리하는 데 각 단계가 각각 16사이클씩이 소요된다고 할 때 1블록 데이터에 해당되는 64개의 픽셀을 처리하기 위해 요구되는 2차원 역이산여현변환의 총 소요 사이클은 320이 된다.
QCIF 크기의 영상 데이터를 처리한다고 할 때 15frame/sec의 속도로 동영상이 처리되려면 역이산여현변환의 연산량은 2,851,200사이클에 이른다.
종래에는 이렇게 많은 연산량을 줄이기 위해서 인터 매크로블록의 경우에는이산여현변환을 수행했을 때 생기는 모든 계수가 0이거나 혹은 인트라 매크로블록의 경우 DC 계수를 제외한 나머지 값이 0일 때 CBP = 0 이라는 정보를 이용하여 역이산여현변환을 생략하는 방법을 사용했었다.
그러나 실제로 영상 압축단으로부터 입력되는 계수 값들이 전체 64개의 픽셀 데이터에 고르게 분포하지 않고 이산여현변환의 특성상 낮은 주파수 영역인 좌측 상단에 집중적으로 분포하는 특성을 이용하면 연산량을 더욱 줄일 수 있다.
종래에는 이러한 특징을 이용하여 이산여현변환을 일부 픽셀만 수행하여 연산량과 전력 소모를 최소화 하는 방법들이 영상 압축 장치에서 제안되었지만 0이 아닌 계수를 0으로 코딩함으로써 화질의 열화가 발생할 수 있고 이산여현변환의 연산 범위를 결정하는 제어부 회로가 복잡해지는 단점이 있었다.
도 19의 IDCT(203ca)는 DCT를 통과한 데이터들이 낮은 주파수 영역에 집중되는 특징을 이용하여 화질의 열화없이 IDCT(203ca)의 계산량을 줄이기 위해 IDCT(203ca)는 역스캔, DC/AC 계수 예측, IQ(203cb) 내부의 미스매치 제어 회로를 이용하는 국부적 역이산여현변환(regional IDCT) 기능을 제공한다.
도 20은 VDEC(203) 내부의 MC(203d)의 구성을 나타낸다.
상기 MC(203d)는 IDCT(203ca)로부터 출력되는 데이터와 움직임 벡터를 이용한 움직임 보상을 수행한다.
MVP_PRED(2001)은 48 x 9의 국부 메모리(LM)를 내장하고 있으며 현재 처리중인 블록 혹은 매크로블록과 인접한 3개의 블록 혹은 매크로블록의 움직임 벡터 값들 중에서 중간 값을 예측 움직임 벡터 값으로 추출하고 이를 입력된 움직임 벡터의 차분값과 합하여 최종적인 움직임 벡터를 계산한다.
이때 국부 메모리(LM)는 인접한 블록의 움직임 벡터 값을 저장하고 있다.
또 다른 국부 메모리(2004)는 참고하려는 블록이나 현재 처리중인 블록의 계산 결과를 저장하기 위해 사용하며 크기는 72 x 8 비트이다.
REG-FILE(2005)는 RISC 프로세서(207)로부터 제어 및 동작 모드에 관련된 데이터를 입력받고 상태 레지스터의 값을 RISC 프로세서(207)가 읽을 수 있도록 제어한다.
MC_CTRL(2006)은 움직임 보상을 위한 모든 동작을 제어하는데 크게 4가지의 동작 모드로 구분된다.
첫번째 모드에서는 현재의 움직임 벡터를 구하기 위해 바로 위쪽에 위치하는 매크로 블록의 움직임 벡터 값을 이용하거나 혹은 움직임 벡터 값을 0으로 하여 이전 프레임으로부터 참조하려는 블록의 데이터를 읽어 들이고 이를 현재의 블록 연산 결과로 저장한다.
두번째 모드에서는 움직임 벡터의 값을 0으로 하여 참조하려는 블록의 데이터를 이전 프레임으로부터 입력 받고 이를 현재의 블록 데이터로 저장한다.
세번째 모드에서는 참조하려는 블록의 데이터에 대한 입력 없이 현재의 IDCT 결과를 현재의 블록 데이터 값으로 저장한다.
네번째 모드에서는 동작 모드에 따라 4MV, UMV(unrestricted Motion Vector)로 구분되며 현재 처리하려는 블록의 예측 움직임 벡터를 계산하고 이를 입력된 움직임 벡터의 차분 값과 합하여 최종적인 움직임 벡터를 구한다.
그리고 이를 기반으로 참조하려는 블록을 찾아내고 역이산여현변환 결과와 합하여 최종적인 현재의 블록 데이터 값으로 저장한다.
MC_PLUS(2002)는 참조하려는 블록의 데이터와 현재 처리중인 블록의 역이산여현변환의 결과를 합하고 추가적으로 반 화소 단위의 보간(interpolation)을 수행한다.
DMA(2003)은 외부 메모리로부터 참조하려는 블록의 데이터를 입력받고 현재 계산된 블록의 데이터를 저장한다.
이때 읽기 혹은 쓰기의 기본 단위는 8 픽셀 혹은 9 픽셀이고 이 단위의 읽기 혹은 쓰기를 8 회 혹은 9회 반복한다.
이상에서와 같이 본 발명은 RISC 프로세서를 기반으로 하는 프로그램이 가능한 동영상 복원 프로세서 구조와, 동영상 처리시 문제가 되는 외부 메모리 억세스를 최소화하기 위해 3개로 분리된 버수 구조와, 동영상 처리 블록을 코프로세서 구조로 만들어 독립적인 동작이 가능하게 함으러써 시스템효율(throughput)을 향상시킬 수 있는 구조로, H.263/MPEG-4 등 유무선 동영상 복원을 위한 단말기의 메인 프로세서로 사용될 수 있고, 프로그램이 가능한 다양한 적용 분야에 최적화될 수 있으며, 각 블록들이 메인 프로세서와 독립적인 모듈로 구성되는 추후의 기능 확장 작업이 용이해 질 수 있다.
이상에서 살펴본 바와 같이 본 발명에 의하면, RISC 프로세서를 기반으로 하고 메모리 억세스를 최소화 하기 위해 분리된 버스 구조를 갖는 복원 프로세서를 이용하여, 비디오 폰, 원격 감시 시스템, 무선 VOD 단말기, PDA, V2oIP 단말기, IMT-2000 단말기의 동영상 처리기능으로 응용할 수 있으며 특히 프로그램이 가능한 구조를 이용하여 다양한 응용분야에 최적화된 시스템을 구현할 수 있다.

Claims (21)

  1. 외부로부터 입력되는 압축된 동영상의 복원을 수행하기 위한 전반적인 제어를 담당하는 RISC 프로세서와,
    동영상 복원을 수행하는 디코더(VDEC)와,
    복원된 동영상 신호에 대하여 외부에 연결되는 출력 장치에 적합한 후처리를 수행하는 포스트 프로세서와,
    상기 VDEC와 외부 메모리를 인터페이스 시켜주는 DSCU DMA와,
    상기 포스트 프로세서와 외부 메모리를 인터페이스 시켜주는 포스트 DMA와,
    상기 시스템 응용시에 필요한 주변장치와,
    상기 주변장치와 외부 메모리를 인터페이스 시켜주는 주변장치 DMA와,
    상기 외부 메모리를 제어하는 외부 메모리 컨트롤러와,
    상기 주변장치가 연결된 국부 버스와 주 버스를 인터페이스 해주는 주변장치 브릿지와,
    상기의 각 구성부를 연결해 주는 3개의 독립적인 메인 버스, 코프로세서 버스, 주변장치 제어 버스를,
    포함하는 멀티미디어 신호처리를 위한 영상복원 프로세서.
  2. 청구항 1에 있어서, 상기 VDEC, 포스트 프로세서는 RISC 프로세서와 별도로 동작하는 코프로세서(coprocessor)로 구성됨을 특징으로 하는 멀티미디어 신호처리를 위한 영상복원 프로세서.
  3. 청구항 1에 있어서, 상기 RISC 프로세서와 VDEC나 포스트 프로세서 사이의 명령어 전달 및 제어 기능은 독립적인 코프로세서 버스를 통해 인터페이스됨을 특징으로 하는 멀티미디어 신호처리를 위한 영상복원 프로세서.
  4. 청구항 1에 있어서, 상기 RISC 프로세서에는 명령어/데이터 캐시가 구비되어 별도의 메모리없이 시스템 제어에 필요한 프로그램을 저장할 수 있음을 특징으로 하는 멀티미디어 신호처리를 위한 영상복원 프로세서.
  5. 청구항 1에 있어서, 상기 VDEC는,
    허프만(Huffman) 코딩에 의해 압축된 데이터를 복원하는 VLD 및 RVLD,
    움직임 보상을 수행하는 MC,
    압축된 동영상 계수를 시간 영역의 계수로 복원하고 역양자화를 수행하는 IDCT/IQ,
    AC/DC 계수 예측에 의해 압축된 데이터를 복원하는 ADR,
    상기 각 구성부가 공통으로 사용하는 DEC 메모리,
    상기 각 구성부의 시퀀스를 제어하는 DSCU로,
    구성됨을 특징으로 하는 멀티미디어 신호처리를 위한 영상복원 프로세서.
  6. 청구항 5에 있어서, 상기 DSCU는 프레임 단위로 RISC 프로세서를 통해 해석된 정보를 이용하여 블록 단위의 픽셀 데이터 복원을 위한 전체 시이퀀스를 제어하고, VLD, IDCT, MC로 이어지는 일련의 파이프 라인을 유기적으로 제어함을 특징으로 하는 멀티미디어 신호처리를 위한 영상복원 프로세서.
  7. 청구항 5에 있어서, 상기 VLD와 RVLD는 허프만 코딩된 입력 데이터에 대하여 순방향과 역방향으로 복원하며 1코드 단위로 진행함을 특징으로 하는 멀티미디어 신호처리를 위한 영상복원 프로세서.
  8. 청구항 5에 있어서, 상기 IDCT/IQ는 주파수 영역으로 코딩되어 입력된 데이터들에 대하여 시간 영역으로 역변환하고 역양자화를 수행하며, 동영상 처리 시에 많은 연산량을 최소화 하기 위해 VLD로부터 받은 계수들의 특성에 관한 정보를 이용하여 국부적 역이산여현변환을 수행함을 특징으로 하는 멀티미디어 신호처리를 위한 영상복원 프로세서.
  9. 청구항 5에 있어서, 상기 MC는 입력된 움직임 벡터의 차분 값과 주변 매크로블록의 움직임 벡터를 이용하여 예측된 값으로 최종적인 움직임 벡터를 생성하고, 계산된 움직임 벡터를 이용하여 이전 프레임의 상대적 위치를 찾은 후 해당되는 영역의 픽셀 데이터를 읽어서 현재 블록의 복원에 이용하며, 상기 RISC 프로세서로부터 발생된 오류의 모드와 조건을 입력받아서 필요한 오류 은닉 기능을 수행함을 특징으로 하는 멀티미디어 신호처리를 위한 영상복원 프로세서.
  10. 청구항 9에 있어서, 상기 이전 프레임 혹은 현재 처리하려는 프레임을 외부 메모리로부터 읽어오는 과정은 VDEC의 타 구성부 동작과는 독립적으로 수행됨을 특징으로 하는 멀티미디어 신호처리를 위한 영상복원 프로세서.
  11. 청구항 5에 있어서, 상기 DEC 메모리는 동영상 데이터의 복원 시에 필요한 중간 결과를 저장하고, 이전 프레임의 데이터를 임시로 저장함을 특징으로 하는 멀티미디어 신호처리를 위한 영상복원 프로세서.
  12. 청구항 1에 있어서, 상기 포스트 프로세서는,
    동영상 외에 추가적으로 문자를 동시에 표시할 수 있는 OSD 기능,
    복원된 동영상에 대하여 디블록킹(deblocking)을 수행하는 디블록킹 필터 기능,
    외부 출력 장치의 종류에 따라 적합한 제어 신호를 발생시키는 표시 제어 기능,
    외부 디지털 출력 장치의 인터페이스를 수행하는 기능,
    복원된 동영상에 대하여 보간(interpolation)을 수행하는 보간 필터 기능을,
    수행함을 특징으로 하는 멀티미디어 신호처리를 위한 영상복원 프로세서.
  13. 청구항 1에 있어서, 상기 RISC 프로세서, VDEC, 포스트 프로세서, 주변장치 브릿지, 주변장치 DMA, 외부 메모리 컨트롤러는 독립적인 메인 버스를 통해 인터페이스됨을 특징으로 하는 멀티미디어 신호처리를 위한 영상복원 프로세서.
  14. 청구항 1에 있어서, 상기 주변장치는,
    외부 호스트 프로세서와의 인터페이스를 제공하는 호스트 인터페이스,
    소프트웨어 리셋을 제어하는 WDT,
    카운트 업/다운을 지원하는 타이머,
    외부로부터 입력되는 각종 인터럽트를 처리하는 ICU,
    내부에 클럭을 공급하는 PLL,
    시스템 응용 시 범용 입출력 단자로 사용되는 GPIO,
    외부 비디오 인코더 및 디코더로의 인터페이스를 제공하는 IIC,
    오디오 인터페이스를 위해 사용되는 IIS,
    범용 직렬 통신 포트인 UART,
    다채널 직렬통신을 지원하고 마스터나 슬레이브 모드로 동작하는 SPI로,
    구성됨을 특징으로 하는 멀티미디어 신호처리를 위한 영상복원 프로세서.
  15. 청구항 14 있어서, 상기 주변장치의 각 구성부는 다른 버스와 독립적으로 동작하는 주변장치 제어 버스를 통해 인터페이스됨을 특징으로 하는 멀티미디어 신호처리를 위한 영상복원 프로세서.
  16. 청구항 1 있어서, 상기 RISC 프로세서, DSCU DMA, 포스트 DMA, 주변장치 DMA는 메인 버스에 대하여 마스터의 기능을 수행하고, 주변장치 브릿지와 외부 메모리 컨트롤러는 메인 버스에 대하여 슬레이브의 기능을 수행함을 특징으로 하는 멀티미디어 신호처리를 위한 영상복원 프로세서.
  17. 청구항 1 있어서, 상기 RISC 프로세서는 동영상의 복호 과정 중에서 프레임 단위로 포함되는 각종 헤더 정보와 상위 매크로블록에 대한 정보들을 소프트웨어 적으로 해석함을 특징으로 하는 멀티미디어 신호처리를 위한 영상복원 프로세서.
  18. 청구항 1 있어서, 상기 RISC 프로세서에 다운로드 되는 외부 프로그램은 상기 주변장치 중 외부 호스트 프로세서와의 인터페이스를 제공하는 호스트 인터페이스를 통해 전원을 인가함과 동시에 필요한 코드를 읽어 옴을 특징으로 하는 멀티미디어 신호처리를 위한 영상복원 프로세서.
  19. 청구항 1 또는 청구항 18에 있어서, 상기 RISC 프로세서에 다운로드 되는 외부 프로그램은 외부 메모리 컨트롤러를 이용해서 외부의 프로그램 메모리로부터 메인 버스를 통해 읽어 옴을 특징으로 하는 멀티미디어 신호처리를 위한 영상복원 프로세서.
  20. 청구항 1에 있어서, 상기 VDEC는 코프로세서 버스를 통해 RISC 프로세서를 이용하여 명령어를 받아 들이며 이때 RISC 프로세서와 핸드 쉐이킹 방식으로 인터페이스함을 특징으로 하는 멀티미디어 신호처리를 위한 영상복원 프로세서.
  21. 청구항 1에 있어서, 상기 코프로세서 버스와 메인 버스 사이의 버스 동작은 RISC 프로세서를 통해서 이루어지고, 주변장치 제어 버스와 메인 버스 사이의 동작 제어는 주변장치 브릿지를 통해 이루어짐을 특징으로 하는 멀티미디어 신호처리를 위한 영상복원 프로세서.
KR10-2001-0083951A 2001-12-24 2001-12-24 멀티미디어 신호처리를 위한 영상복원 프로세서 KR100418437B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR10-2001-0083951A KR100418437B1 (ko) 2001-12-24 2001-12-24 멀티미디어 신호처리를 위한 영상복원 프로세서
US10/195,575 US6842219B2 (en) 2001-12-24 2002-07-15 Moving picture decoding processor for multimedia signal processing
JP2002366636A JP2003204556A (ja) 2001-12-24 2002-12-18 マルチメディア信号処理のための映像復元プロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2001-0083951A KR100418437B1 (ko) 2001-12-24 2001-12-24 멀티미디어 신호처리를 위한 영상복원 프로세서

Publications (2)

Publication Number Publication Date
KR20030053920A KR20030053920A (ko) 2003-07-02
KR100418437B1 true KR100418437B1 (ko) 2004-02-14

Family

ID=19717483

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0083951A KR100418437B1 (ko) 2001-12-24 2001-12-24 멀티미디어 신호처리를 위한 영상복원 프로세서

Country Status (3)

Country Link
US (1) US6842219B2 (ko)
JP (1) JP2003204556A (ko)
KR (1) KR100418437B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100640876B1 (ko) * 2004-11-17 2006-11-02 엘지전자 주식회사 이동 방송 수신기의 비디오 디코딩 시스템

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003209845A (ja) * 2002-01-11 2003-07-25 Mitsubishi Electric Corp 画像符号化集積回路
KR100895686B1 (ko) * 2002-03-26 2009-04-30 어보브반도체 주식회사 마이크로 컨트롤러의 데이터 로드 타이밍을 감소시키는 방법
US8284844B2 (en) 2002-04-01 2012-10-09 Broadcom Corporation Video decoding system supporting multiple standards
JP4102973B2 (ja) * 2002-04-24 2008-06-18 日本電気株式会社 動画像の符号化方法および復号化方法、これを用いた装置とプログラム
US20040044724A1 (en) * 2002-08-27 2004-03-04 Bell Cynthia S. Apparatus and methods to exchange menu information among processor-based devices
US7426532B2 (en) * 2002-08-27 2008-09-16 Intel Corporation Network of disparate processor-based devices to exchange and display media files
US7376696B2 (en) 2002-08-27 2008-05-20 Intel Corporation User interface to facilitate exchanging files among processor-based devices
US7081874B2 (en) * 2002-12-20 2006-07-25 Motorola, Inc. Portable display device and method utilizing embedded still image buffer to facilitate full motion video playback
US7889206B2 (en) * 2003-06-16 2011-02-15 Broadcom Corporation Direct memory accessing for fetching macroblocks
US20050013498A1 (en) 2003-07-18 2005-01-20 Microsoft Corporation Coding of motion vector information
US7284072B2 (en) * 2003-08-13 2007-10-16 Broadcom Corporation DMA engine for fetching words in reverse order
KR20050022556A (ko) * 2003-08-20 2005-03-08 삼성전자주식회사 고신뢰 복호화 장치 및 방법
US7280595B1 (en) * 2003-10-21 2007-10-09 Redrock Semiconductor, Ltd. Post-inverse-quantization AC prediction with a unified variable-length-decoding and inverse-quantization stage
US7861007B2 (en) * 2003-12-05 2010-12-28 Ati Technologies Ulc Method and apparatus for multimedia display in a mobile device
KR101160640B1 (ko) 2003-12-30 2012-06-28 삼성전자주식회사 데이터 처리 시스템 및 데이터 처리 방법
JP4238166B2 (ja) * 2004-03-22 2009-03-11 ヤマハ発動機株式会社 燃料供給装置および車両
US8514944B2 (en) 2004-06-18 2013-08-20 Broadcom Corporation Reducing motion compensation memory bandwidth through memory utilization
JP2006060813A (ja) * 2004-08-20 2006-03-02 Polycom Inc ビデオデコーダにおける誤り隠蔽
US20060062388A1 (en) * 2004-09-17 2006-03-23 Gaurav Aggarwal System and method for command for fast I-picture rewind
JP4658563B2 (ja) * 2004-10-13 2011-03-23 パナソニック株式会社 画像データ処理装置及び画像データ処理方法
TWI290438B (en) * 2004-12-01 2007-11-21 Samsung Electronics Co Ltd A pipelined deblocking filter
KR20060060919A (ko) * 2004-12-01 2006-06-07 삼성전자주식회사 H.264/mpeg-4 에서의 블록킹 효과를 제거하기 위한디블록 필터 및 필터링 방법
US8065354B1 (en) * 2005-03-04 2011-11-22 Nvidia Corporation Compression of 16 bit data using predictor values
US7895250B2 (en) * 2005-05-25 2011-02-22 Qualcomm Incorporated Fixed point integer division techniques for AC/DC prediction in video coding devices
KR100678124B1 (ko) * 2006-01-26 2007-02-02 삼성전자주식회사 화상 통신 단말 및 화상 통신 단말의 화상 통신 데이터처리 방법
EP1835728A1 (en) * 2006-03-15 2007-09-19 Dibcom Method for data transfer and data recovery
JP2009267837A (ja) * 2008-04-25 2009-11-12 Panasonic Corp 復号化装置
JP4519929B2 (ja) * 2008-06-13 2010-08-04 株式会社東芝 情報処理装置およびリカバリ処理方法
US10123050B2 (en) * 2008-07-11 2018-11-06 Qualcomm Incorporated Filtering video data using a plurality of filters
US9143803B2 (en) * 2009-01-15 2015-09-22 Qualcomm Incorporated Filter prediction based on activity metrics in video coding
US10178396B2 (en) 2009-09-04 2019-01-08 Stmicroelectronics International N.V. Object tracking
US9626769B2 (en) 2009-09-04 2017-04-18 Stmicroelectronics International N.V. Digital video encoder system, method, and non-transitory computer-readable medium for tracking object regions
US8848802B2 (en) 2009-09-04 2014-09-30 Stmicroelectronics International N.V. System and method for object based parametric video coding
US8964852B2 (en) 2011-02-23 2015-02-24 Qualcomm Incorporated Multi-metric filtering
US9378560B2 (en) * 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US11184623B2 (en) * 2011-09-26 2021-11-23 Texas Instruments Incorporated Method and system for lossless coding mode in video coding
KR101951171B1 (ko) * 2012-08-09 2019-02-25 삼성전자 주식회사 멀티미디어 프로세싱 시스템 및 그 동작 방법
CN110574375B (zh) * 2017-04-28 2023-06-02 苹果公司 视频流水线

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02252044A (ja) * 1989-03-24 1990-10-09 Hitachi Ltd コプロセッサ及びデータ転送制御方式
JPH1125039A (ja) * 1997-07-04 1999-01-29 Meidensha Corp マルチメディア情報通信システム
JPH1165989A (ja) * 1997-08-22 1999-03-09 Sony Computer Entertainment:Kk 情報処理装置
KR20010014964A (ko) * 1999-05-24 2001-02-26 니시무로 타이죠 프로세서 장치
US6330626B1 (en) * 1999-05-05 2001-12-11 Qlogic Corporation Systems and methods for a disk controller memory architecture

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5889480A (en) * 1996-10-18 1999-03-30 Samsung Electronics Co., Ltd. Full duplex serial codec interface with DMA
US6661422B1 (en) * 1998-11-09 2003-12-09 Broadcom Corporation Video and graphics system with MPEG specific data transfer commands

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02252044A (ja) * 1989-03-24 1990-10-09 Hitachi Ltd コプロセッサ及びデータ転送制御方式
JPH1125039A (ja) * 1997-07-04 1999-01-29 Meidensha Corp マルチメディア情報通信システム
JPH1165989A (ja) * 1997-08-22 1999-03-09 Sony Computer Entertainment:Kk 情報処理装置
US6330626B1 (en) * 1999-05-05 2001-12-11 Qlogic Corporation Systems and methods for a disk controller memory architecture
KR20010014964A (ko) * 1999-05-24 2001-02-26 니시무로 타이죠 프로세서 장치

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100640876B1 (ko) * 2004-11-17 2006-11-02 엘지전자 주식회사 이동 방송 수신기의 비디오 디코딩 시스템

Also Published As

Publication number Publication date
KR20030053920A (ko) 2003-07-02
JP2003204556A (ja) 2003-07-18
US6842219B2 (en) 2005-01-11
US20030117585A1 (en) 2003-06-26

Similar Documents

Publication Publication Date Title
KR100418437B1 (ko) 멀티미디어 신호처리를 위한 영상복원 프로세서
USRE48845E1 (en) Video decoding system supporting multiple standards
KR100449102B1 (ko) 멀티미디어용 시스템온칩 프로세서
US5774206A (en) Process for controlling an MPEG decoder
US7034897B2 (en) Method of operating a video decoding system
TW583883B (en) System and method for multiple channel video transcoding
US7430621B2 (en) Multiple channel data bus control for video processing
US20080170611A1 (en) Configurable functional multi-processing architecture for video processing
US5903674A (en) Picture coding apparatus
US7760198B2 (en) Display controller
WO2002087248A2 (en) Apparatus and method for processing video data
EP1351512A2 (en) Video decoding system supporting multiple standards
US20030123555A1 (en) Video decoding system and memory interface apparatus
EP1351513A2 (en) Method of operating a video decoding system
US7350035B2 (en) Information-processing apparatus and electronic equipment using thereof
Onoye et al. HDTV level MPEG2 video decoder VLSI
US20060129729A1 (en) Local bus architecture for video codec
Onoye et al. Single chip implementation of MPEG2 decoder for HDTV level pictures
JP4498848B2 (ja) 画像処理装置
KR100987252B1 (ko) 비트스트림 데이터 처리를 위한 인터페이스 장치 및 방법
Lahtinen et al. Reuseable interface in multimedia hardware environment
KR20030030403A (ko) 영상복호기의 매크로블럭 레벨 제어회로
JP2000253405A (ja) ビデオ復号化のためのパイプライン回路
JPH10303308A (ja) 複数のコアおよびシェルを有する集積回路および対応する階層ファームウェア
JP2006191545A (ja) システムオンチップのためのデューアル階層バス構造

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: 20130110

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20140122

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20150202

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20160202

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20170123

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20180129

Year of fee payment: 15

FPAY Annual fee payment

Payment date: 20200128

Year of fee payment: 17