KR100227275B1 - 단위 처리 시스템에서의 가변길이코드 검출장치 및 방법 - Google Patents

단위 처리 시스템에서의 가변길이코드 검출장치 및 방법 Download PDF

Info

Publication number
KR100227275B1
KR100227275B1 KR1019970022662A KR19970022662A KR100227275B1 KR 100227275 B1 KR100227275 B1 KR 100227275B1 KR 1019970022662 A KR1019970022662 A KR 1019970022662A KR 19970022662 A KR19970022662 A KR 19970022662A KR 100227275 B1 KR100227275 B1 KR 100227275B1
Authority
KR
South Korea
Prior art keywords
bit
bit length
entropy code
output signal
group
Prior art date
Application number
KR1019970022662A
Other languages
English (en)
Other versions
KR19980032138A (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 윤종용
Publication of KR19980032138A publication Critical patent/KR19980032138A/ko
Application granted granted Critical
Publication of KR100227275B1 publication Critical patent/KR100227275B1/ko

Links

Images

Classifications

    • 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
    • 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
    • H03M7/425Conversion 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 for the decoding process only
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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
    • 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/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

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

가변길이코드(VLC)를 압축한 입력 데이터스트림 비트그룹은 엔트로피코드 비트길이 탐색모듈에 부가된다. 비트그룹은 엔트로피코드 비트길이 탐색로직 유니트 사이에 선택적으로 분할된 다수의 매칭모듈 내에서 복사된다. 엔트로피코드 비트길이 탐색로직의 각 유니트는 MPEG1, MPEG2, H.261 및 H.263 등과 같은 표준 압축포맷으로 규정되는 VLC워드 테이블을 지원한다. 매칭모듈은 엔트로피코드 비트길이 탐색로직 유니트 내에서 그룹 단위로 분할된다. 매칭모듈 그룹은 관련된 VLC워드로 지원되는 테이블에 나타난 각 VLC 비트길이에 할당된다. 다수의 매칭모듈 그룹은 특정 비트길이의 VLC워드에 대해 유일한 패턴의 최소한의 수에 해당하는 각 비트길이에 할당된다. 매칭모듈은 입력 데이터 그룹을 각각의 패턴에 비교한다. 일치 상태의 검출은 적절히 세트하는 그룹 출력신호로 나타낸다. 각 엔트로피코드 비트길이 탐색로직 유니트는 그룹 출력신호를 수신하는 비트길이 인코더를 포함한다. 세트그룹 출력신호는 현재 VLC의 비트길이를 나타내고, 비트길이 인코더는 이 정보를 비트길이 코드 출력신호로 인코드한다. 비트길이 코드 신호는 시프터가 현재 데이터의 해당 비트길이를 분석하는데 이용된다. 분석된 현재 데이터는 디코딩 룩업 테이블을 위한 출력신호를 발생하는 어드레스 발생기에 직접 부가될 수 있다.

Description

단위 처리 시스템에서의 가변길이코드 검출장치 및 방법
본 발명은 신호처리에 관한 것으로서, 좀더 상세하게는 데이터스트림 내에 포함된 각각의 가변길이코드(variable length code) 워드(words)를 검출하는 것에 관한 것이다.
광대역 밴드폭 전송 성능의 출현과 고속 처리 응용법 및 장비의 실현으로 방대한 양의 정보를 수반하는 데이터 전송은 아주 흔한 일이 되고 있다. 대용량 데이터 전송을 이루는 구동력 중 하나는 멀티미디어 사용의 증가이다. 비록 프로세서의 계산력은 꾸준하고 급속하게 향상되어 왔지만 더 많은 데이터량의 수행 및 표현이 요구되는 멀티미디어 분야에서 활력있는 새로운 응용법의 개발에 기인하여 더 높은 처리 능력과 계산 효율에 대한 요구는 경감되지 않고 있다. 전송, 수신, 처리 한계 등과 관련되는 정보량을 조절하기 위해 정보의 압축 및 복원 목적의 많은 압축 표준이 광범위하게 사용되고 있다. 비디오 데이터용으로 널리 통용되는 압축 및 복원 표준은 ISO/IEC(International Organization for Standadization/ International Electrotechncal Commission) MPEG(Motion Picture Experts Group)의 MPEG1 및 MPEG2 표준과, ITU-T(United Nation's International Telecommunications Union Telecommunications Standadization Bureau)의 H.261 및 H.263 표준이다.
MPEG1, MPEG2, H.261 및 H.263 표준은 적절한 압축률을 달성하는데 도움이 되는 가변길이코드(VLC) 워드를 널리 이용한다. VLC 워드는 통상 Huffman표 또는 엔트로피 코드표라 일컫는 테이블로 특정된다.
VLC 워드는 일반적으로 전송용 비트스트림내에 압축된다. 입력되는 비트스트림을 디코드하기 위해 VLC 워드는 개별적으로 디코드된다. 종래에는 현재의 VLC을 정확히 디코드하기 위해 현재 VLC 워드의 비트길이를 결정하는 큰 조사표(look up table)가 사용된다. 이러한 조사표는 상대적으로 방대한 양의 칩영역을 차지하고 있다.
도 1 은 본 발명의 제 1 실시예에 따른 멀티미디어 멀티프로세서 시스템을 나타내는 상위 레벨의 개략적인 블록도.
도 2 는 도 1 에 도시한 멀티미디어 멀티프로세서 시스템의 멀티미디어 신호 처리기를 나타내는 개략적인 블록도.
도 3 은 도 1 의 멀티미디어 신호 처리기의 비트스트림 프로세서를 나타내는 블록도.
도 4 는 압축 표준에 따라 압축된 비트스트림을 대표하는 예시도.
도 5 는 도 3 의 비트스트림 프로세서에 의한 엔트로피코드 비트길이 탐색로직을 나타내는 예시도.
도 6 은 도 5 의 엔트로피코드 비트길이 탐색로직을 하나의 VLC 테이블에 대하여 나타내는 예시도.
도 7 은 도 6 의 엔트로피코드 비트길이 탐색로직에 의해 채용되는 엔트로피코드 매칭모듈의 한 실시예를 나타내는 예시도.
* 도면의 주요 부분에 대한 부호의 설명 *
100: 멀티미디어 멀티프로세서 시스템
200: 멀티미디어 신호처리기201: DSP 코어
204: 코우 프로세서234: 비트스트림 프로세서
300: 다중표준 시작코드 검출시스템
307: 제어상태 머신308: 비교기 유니트
310: 시작코드형식 사전검출로직314: 엔트로피코드 비트길이 탐색모듈
본 발명의 한 실시예로서, 현재 엔트로피코드 워드의 잠재 비트길이의 기정수가
Figure kpo00001
이 되도록 비트길이를 지니는 현재 엔트로피코드 워드를 검출하는 장치에 있어서: 각각이 비트그룹을 수신하여 비트그룹 내에서 현재 엔트로피코드 워드의 비트길이 결정을 시도하고, 그중 하나가 비트그룹 내에서 현재 엔트로피코드 워드의 비트길이를 결정하여 여타의 출력신호에 비해 유일한 출력신호를 발생하는 다수의 매칭모듈을 포함한다. 또한, 각각이 매칭모듈의 기정수를 지니고, 각각이 현재 엔트로피코드 워드의 잠재 비트길이의
Figure kpo00002
개 기정수중 하나를 나타내고, 각각이 출력신호를 지니고, 그중 하나가 여타의 출력신호에 비해 유일한 출력신호를 갖는 매칭모듈을 지니는
Figure kpo00003
개 매칭모듈 그룹을 포함한다.
본 발명의 다른 측면의 실시예는 현재 엔트로피코드 워드의 잠재 비트길이의 기정수가
Figure kpo00004
이 되도록 비트길이를 지니는 현재 엔트로피코드 워드를 검출하는 방법에 있어서: 각 비트패턴이 현재 엔트로피코드의
Figure kpo00005
개 잠재 비트길이중 하나에만 연관되도록 다수의 비트패턴을 비트그룹의 각 부분에 동시에 비교하는 단계와, 다수의 비트패턴중 어느 비트패턴이 비트그룹의 각 부분에 일치하는지 결정하는 단계를 포함한다. 또한, 비트그룹의 각 부분에 일치하는 것으로 결정된 비트패턴에 응답하여 현재 엔트로피코드의 비트길이를 규명하는 출력신호를 발생하는 단계를 포함한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 상술하며, 도면전체를 통하여 동일한 부분에는 동일한 도면부호를 사용하기로 한다.
다음의 자료는 삼성 반도체(주)의 멀티미디어 프로세서(MSP) family인 멀티미디어 신호처리기(200)를 제 1 실시예로서 포함하는 멀티미디어 멀티프로세서 시스템(100)의 일반적인 개요를 제공한다. 추가적인 상세자료는 동시 계류중인 미국 특허출원 번호 xx/xxx,xxx(대리인 처리번호 M-4354) L. Nguyen의 "Microprocessor Operations in a Multimedia Signal Processor", 출원 번호 xx/xxx,xxx(대리인 처리번호 M-4355) L. Nguyen의 "Single-Instruction-Multiple-Data Processing in a Multimedia Signal Processor", 출원 번호 xx/xxx,xxx(대리인 처리번호 M-4369) L. Nguyen외 다수의 "Single-Instruction-Multiple-Data Processing Using Multiple Banks of Vector Registers", 출원 번호 xx/xxx,xxx(대리인 처리번호 M-4370) M. Mohamed외 다수의 "Single-Instruction-Multiple-Data Processing With Combined Scalar/Vector Operations" 를 참조하는데, 이러한 것들은 모두 이하에서 참고 사항으로서 전체적으로 포함된다.
도 1 을 참조하면, 상위 레벨의 개략적인 블록도는 호스트 프로세서(102)와 멀티미디어 신호처리기(200)를 지니는 멀티미디어 멀티프로세서 시스템(100)을 도시한다. 전형적인 호스트 프로세서(102)는 인텔사의 PentiumTM 또는 Pentium ProTM 프로세서 등과 같은 x86 프로세서이다. 호스트 프로세서(102)는 주로 시스템 메모리(104) 및 캐쉬(105)에 저장된 지령 및 데이터에 근거하여 프로그램을 수행한다. 호스트 프로세서(102)는 PC 칩셋(chipset)(107)과 시스템 버스(106)(예컨대 PCI 버스)를 통하여 멀티미디어 신호처리기(200)와 교신한다. 멀티미디어 신호처리기(200)는 음향 및 전화통신을 수신하기 위한 오디오 & 통신 코덱(108), 화상 입력신호를 수신하기 위한 비디오 A/D 컨버터(110), 화상 출력신호를 전송하기 위한 비디오 D/A 컨버터(112), 그리고 프레임 버퍼 SDRAM 메모리(114) 등과 같은 다양한 기능 블록들에 접속된다.
도 2 를 참조하면, 개략적인 블록도는 멀티미디어 멀티프로세서 시스템(100)(도 1)의 멀티미디어 신호처리기(200)를 나타낸다. 멀티미디어 신호처리기(200)는 패스트 버스(fast bus;FBUS)(210)를 통하여 다수의 FBUS 주변기기, 예를 들어 32비트 PCI 버스 인터페이스(222), 64비트 SDRAM 메모리 컨트롤러(226), 8채널 DMA 컨트롤러(220), ASIC 로직 블록(216), 호스트 프로세서(102)와 프레임 버퍼 SDRAM 메모리(114) 사이에 데이터를 이동시키기 위한 메모리 데이터 무버(224) 등과 접속되는 디지털 신호 처리기(DSP) 코어(201)를 지닌다. PCI 버스 인터페이스(222)는 시스템 버스(106)에 접속되어 예컨대 33MHz로 작동한다. ASIC 로직 블록(216)은 주문형 기능을 바라는 대로 수행하기 위한 제어로직을 제공한다. ASIC 로직 블록(216)은, 제 1 실시예로서, 다양한 아날로그 코덱 및 주문자 특정의 I/O 장치들과 접속되는 10K 게이트를 제공한다. 메모리 데이터 무버(224)는 호스트 프로세서(102)로부터 멀티미디어 신호처리기(200)의 주변부인 SDRAM 메모리(114)까지 DMA 데이터를 보낸다. 또한 DSP 코어(201)는 I/O 버스를 통하여 8254-compatible programmable interval timer(228), 16450-compatable UART serial line(230), 8259-compatible programmable interrupt controller(232), 그리고 비디오 비트스트림을 처리하기 위한 비트스트림 프로세서(234) 등을 포함한 다수의 I/O 버스 장치들과 접속된다. 비트스트림 프로세서(234)에 관한 좀더 상세한 정보를 위해 미국 특허출원 번호 xx/xxx,xxx(대리인 처리번호 M-4368) C. Reader의 "Methods and Apparatus for Processing Video Data" 를 참조하는 바, 이러한 것들은 모두 이하에서 참고 사항으로서 전체적으로 포함된다. 특히, 미국 특허출원 번호 xx/xxx,xxx(대리인 처리번호 M-4368) C. Reader의 "Methods and Apparatus for Processing Video Data" 에서 바람직한 실시예의 설명, 첨부 A의 제 10장 및 첨부 B를 참조한다.
DSP 코어(201)는 멀티미디어 신호처리기(200), 코우 프로세서(co-processor)(204), 캐쉬 서브시스템(208), 패스트 버스(FBUS)(210), I/O 버스(212)의 계산 엔진이다. 제 1 실시예에서 프로세서(202)는 콘텍스트 스위치 인에이블(context switch enable) 요청, 리얼 타임 오퍼레이팅 시스템 작동, 인터럽트 및 익셉션(exception) 처리, I/O 장치 관리, 호스트 프로세서(102)와의 교신 등 일반적인 처리 기능을 수행하는 32비트 ARM7TM RISC 컨트롤 프로세서이다. 제 1 실시예에서 프로세서(202)는 40MHz로 동작한다. 프로세서(202)는 코우 프로세서 인터페이스(206)를 통하여 코우 프로세서(204)에 접속된다.
프로세서(202)는 지령 처리 과정에서 발생하는 일반적인 상황인 익셉션(exception)에 대응하여 익셉션 처리를 수행함에 따라 실행 제어 흐름을 변경시킨다. 익셉션 처리에 관한 추가적인 정보는 미국 특허출원 번호 xx/xxx,xxx(대리인 처리번호 M-4366) Song외 다수의 "System And Method For Handling Software Interrupts With Argument Passing" 와, 출원 번호 xx/xxx,xxx(대리인 처리번호 M-4367) Song외 다수의 "System And Method For Handling Interrupt And Exception Events In An Asymmetric Multiprocessor Architecture" 를 참조하는 바, 이러한 것들은 모두 이하에서 참고 사항으로서 전체적으로 포함된다.
코우 프로세서(204)는 멀티미디어 신호처리기(200)의 디지털 신호처리 엔진이다. 제 1 실시예에서, 코우 프로세서(204)는 삼성사 MSP family 중에서 벡터 프로세서이다. 벡터 프로세서로서의 코우 프로세서(204)는 단독지령 다중데이터(Single-Instruction Multiple-Data) 구조를 지니고, 이산코사인 변환기(Discrete Cosine Transforms; DCT), FIR filtering, convolution, 비디오 운동추정 및 기타 처리동작과 같은 신호처리 기능을 수행하기 위해 다중의 데이터 요소에 병렬로 작동하는 pipelined RISC 엔진을 포함한다. 코우 프로세서(204)는 다중 데이터 요소가 다수의 벡터 실행 유니트에 의해 벡터 처리처럼 병렬로 작용하는 벡터 연산을 지원한다. 코우 프로세서(204)는 스칼라 연산 및 벡터-스칼라 혼합 연산을 모두 수행한다. 코우 프로세서(204)의 다중 데이터 요소는 사이클당(예를들어 12.5ns) 32개의 8/9비트 고정소수점 연산률이나 16개소의 16비트 고정소수점 연산률이나 8개의 32비트 고정소수점 또는 부동소수점 연산률로 계산되는 576비트 벡터로 압축된다. 대부분의 32비트 스칼라 연산은 한 사이클당 하나의 지령인 비율로 이동되는 반면 대부분의 576비트 벡터 연산은 두 사이클당 하나의 지령인 비율로 이동된다. 입력(load) 및 저장(store) 작용은 산술 연산과 중첩되고, 별도의 입력 및 저장 회로에 의해 독립적으로 수행된다.
도 3 을 참조하면, 비트스트림 프로세서(234)는 멀티미디어 멀티프로세서 시스템(100) 내부 주변기기 중의 하나이다. 비트스트림 프로세서(234)는 각종 비트스트림 비디오 데이터 압축 및 복원을 지원하는 특정화된 하드웨어 로직 블록이다. 비트스트림 프로세서(234)는 특히 비트 레벨의 처리를 위하여 고안된다. 비트스트림 프로세서(234)는 독립적인 처리 유니트로 작용하며 프로세서(202) 또는 코우 프로세서(204)에 의해 소프트웨어 제어된다. 좀더 구체적으로, 비트스트림 프로세서(234)는 블록그룹(group of blocks; GOB)이나 슬라이스(slice)층 이하의 층에 포함된 모든 정보를 엔코드 및 디코드하고, I/O 버스(202)를 통하여 DSP 코어(201)로부터 정보를 수신하고 DSP 코어(201)로 정보를 전송한다. 정보를 디코드할때 정보는 일반적으로 압축화상 비트스트림(402)처럼 비트스트림으로 수신되고, 적용하는 표준에 따라 시작코드, 헤더 파라미터 및 압축 데이터가 포함되기도 한다. 이러한 압축화상 비트스트림(402)은 압축되나 용도에 따라서는 바이트 정렬할 필요가 없다. 즉, 그 상태가 비트스트림내의 첫째 비트부터 다수의 8비트라면 비트스트림내의 비트는 바이트 정렬된다. 압축화상 비트스트림(402)은 여러 slice 및 GOB를 위한 데이터를 포함할 수 있음을 주목한다.
멀티미디어 환경에서는 화상 시컨스가 처리되고 예를 들어 PC 및 화상회의장치에 표시된다. 화상 시컨스는 일반적으로 ISO/IEC(International Organization for Standadization/ International Electrotechncal Commission) MPEG(Motion Picture Experts Group)의 MPEG1 및 MPEG2 표준과, ITU-T(United Nation's International Telecommunications Union Telecommunications Standadization Bureau)의 H.261 및 H.263 표준 등과 같은 다수의 화상표준 중의 하나를 사용하여 엔코드된 압축 비트스트림의 형태로 된다. MPEG1, MPEG2, H.261 및 H.263 표준은 각각 ISO/IEC 11172-2(1992)(MPEG1), ISO/IEC의 Joint Technical Committee(JTC) 1/SC 29N 0981 Rev(1995,3,31)(MPEG2), ITU-T의 권고 H.261, ITU-T의 권고 H.263에서 설명되는 바, 이러한 모든 것들은 모두 참고 사항으로서 전체적으로 포함된다. MPEG1, MPEG2, H.261 및 H.263 표준은 이하에서 총체적으로 "멀티미디어 포맷"으로 언급되나, 멀티미디어 멀티프로세서 시스템(100)은 다른 표준에 따라 포맷된 비트스트림을 처리하도록 응용될 수 있음을 알 수 있다.
도 4 를 참조하면, 압축화상 비트스트림(402)은 일반적으로 다중표준 압축포맷에 따라 압축된 비트스트림을 나타낸다. 시작코드(404)(405)는 압축화상 비트스트림(402)에서는 달리 발생되지 않는 예비 비트패턴이다. 시작코드(404)(405)는 화상 데이터(408)와 구문 정보, 예컨대 현재 채용된 압축표준을 식별하는 정보를 포함하는 포맷 정보의 시작을 표시한다. 다중의 화상표준에 따른 화상 비트스트림은 가변 길이로 되는데, 바이트 정렬되기도 하고 그렇지 않기도 하다. 즉, 시작코드간의 비트수는 균등한 8배수일 수도 있고 아닐 수도 있다. 더구나 수많은 제로충전비트(406)는 일반적으로 화상 데이터(408)와 다음의 시작코드(405) 사이에 삽입된다. 수많은 제로충전비트(406)는 MPEG1 및 MPEG2의 적용을 위해 슬라이스(slice)층까지의 압축화상 비트스트림(402)이 바이트 정렬되도록 삽입된다. 픽처(picture)층까지의 압축화상 비트스트림(402)은 바이트 정렬되고 H.261 적용에서는 바이트 정렬되지 않으나, H.263의 적용을 위해 GOB층까지의 압축화상 비트스트림(402)은 바이트 정렬될 수도 있다.
제로충진비트(406)와 에러를 지니는 화상 데이터(405), 즉 손상된 화상 데이터는 멀티미디어 멀티프로세서 시스템(100)에 유용한 정보를 제공하지 못한다. 그러므로 제로충진비트(406)와 손상된 화상 데이터를 기능한 즉시 폐기하고 다음의 시작코드를 검출함으로써 멀티미디어 멀티프로세서 시스템(100)의 압축화상 비트스트림(402) 처리 성능을 향상시킨다. 압축화상 비트스트림(402)이 다중표준 포맷에 의해 시작코드(404)(405) 사이에서 가변 길이로 될때, 다음 시작코드(405)의 위치가 결정되지 않으므로 다음 시작코드(405)를 검출하기 위해 압축화상 비트스트림(402)이 조사된다.
도 3 을 참조하면, 비트스트림 프로세서(234)는 압축화상 비트스트림(402)내의 다중표준 시작코드를 조사하고 검출하기 위한 다중표준 시작코드 검출시스템(300)을 지닌다. 예를 들어 멀티미디어 PC 환경에서는 압축화상 비트스트림(402)은 CD ROM 드라이버, 하드디스크 드라이버, 네트워크 인터페이스(도시 생략)로부터 보내진다. 압축화상 비트스트림(402)의 근원지는 ASIC(216)일 수도 있고 PCI 버스 인터페이스(222)일 수도 있다. ASIC(216) 또는 PCI 버스 인터페이스(222)의 32바이트 버퍼에 저장된 데이터는 DMA를 이용하여 프레임 버퍼 SDRAM 메모리(114)(도 1)에 전달된다. DSP 코어(201)는 압축화상 비트스트림(402)내의 구문 정보를 검사한다. DSP 코어(201)는 비트스트림 프로세서(234)로 하여금 압축화상 비트스트림(402)을 처리하기 시작하도록 하기에 앞서서 구문 정보로부터 압축화상 비트스트림(402)의 포맷을 결정한다. 프로세서(202)는 레지스터 파일(324)에 있는 BP_MODE 레지스터에 기록하여 본 실시예에서 다중표준 포맷 중의 하나로 된 압축화상 비트스트림(402)의 포맷을 나타낸다. BP_MODE 레지스터의 포맷은 <표 1>에 주어진다.
BP_MODE 레지스터 바이트0 의 비트 2:0 는 "SF" 또는 압축화상 비트스트림(402)의 표준포맷을 의미한다.
Byte/Bit 7 6 5 4 3 2 1 0
Byte 0 PS PT - SP
Byte 1 PARAM_SET0
Byte 2 PARAM_SET1
Byte 3 PARAM_SET3
다음의 시작코드(405)를 검출하는 작동중 제어상태 머신(control state machine)(307)은 표준포맷 정보를 사용하여 다중 표준 시작코드 검출시스템(300)을 정확히 제어한다. <표 2>는 SF를 규정한다.
Byte0[2:0} 표준포맷(SF)
3'b000 MPEG-1 화상 엔코딩
3'b001 MPEG-1 화상 디코딩
3'b010 MPEG-2 화상 엔코딩
3'b011 MPEG-2 화상 디코딩
3'b100 H.261 엔코딩
3'b101 H.261 디코딩
3'b110 H.263 엔코딩
3'b111 H.263 디코딩
비트스트림 프로세서(234)가 DSP 코어(201)에 의해 동작(enable)되면 압축화상 비트스트림(402)은 I/O 버스(212), I/O 버스 인터페이스 유니트(320), I/O 버퍼(322)를 통하여 본 실시예에서 16비트 플립플롭 장착형 FIFO버퍼인 후속데이터 버터(306)에 입력된다. 정보는 I/O 버스(212), I/O 버스 인터페이스 유니트(320), I/O 버퍼(322) 사이에서 양방향으로 전송된다. 압축화상 비트스트림(402)의 초기 수신 과정에서 제어상태 머신(307)은 게이트(326)를 오픈시키고, 후속데이터 버터(306)내의 16비트 데이터는 본 실시예에서 역시 16비트 플립플롭 장착형 FIFO버퍼인 현재데이터 버터(304)에 전송된다. 현재데이터 버터(304)의 내용은 시프터(312)에 의해 16비트 레지스터인 shifter_result(334)로 시프트된다. 압축화상 비트스트림(402)의 다음 16비트는 후속데이터 버터(306)에 저장된다. 이어서 처리된 압축화상 비트스트림(402)은 I/O 버스(212)를 통하여 비트스트림 프로세서(234)로부터 DSP 코어(201)로 전송된다. DSP 코어(201)는 화상 데이터(408)의 종료를 검출하면 비트스트림 프로세서(234)로 하여금 다음의 시작코드(405)를 찾도록 지령한다.
비트스트림 프로세서(234)로 하여금 다음의 시작코드(405)를 찾도록 요청하기 위해 프로세서(202) 또는 코우 프로세서(204)는 비트스트림 프로세서(234)를 아이들 상태로 두는데, 이미 아이들 상태가 아니라면 비트스트림 프로세서(234)로 하여금 다음 시작코드(405)를 검출하도록 요청하고 비트스트림 프로세서(234)가 처리동작을 시작하도록 동작(enable)시킨다. 레지스터 파일(324)내에 위치하는 BP_CONTROL 레지스터의 SOFT_RESET 비트에 "1"을 기록함으로써 비트스트림 프로세서(234)가 아이들이 아니면, 비트스트림 프로세서(234)를 아이들 상태로 두기 위해 프로세서(202) 또는 코우 프로세서(204)는 비트스트림 프로세서(234)로 소프트웨어 리셋 명령을 보낸다. 프로세서(202) 또는 코우 프로세서(204)는 BP_CONTROL 레지스터의 DETECT_START_CODE 비트에 "1"을 기록함으로써 비트스트림 프로세서(234)로 하여금 다음 시작코드(405)를 검출하도록 할 수도 있다. 비트스트림 프로세서(234)를 리셋하고 다음 시작코드(405)의 검출을 요청한 후 프로세서(202) 또는 코우 프로세서(204)는 BP_CONTROL 레지스터의 BP_EN 비트에 "1"을 기록함으로써 비트스트림 프로세서(234)를 동작시켜 처리를 시작한다. BP_CONTROL 레지스터의 포맷은 <표 3>에 주어진다.
비트 위치 Flag 명 Read/Write 설 명
0 BP_EN R/W BP processing enable
1 SOFT_RESET R BP software reset
2 PAUSE R BP processing freeze
3 DETECT_START_CODE R Detect the next start code
4 STEP R BP
5 CTX_SWITCH R Context switching request
6 CTX_MODE R Context Switching mode
7 CTX_RELOAD R Context reload request
8 ERR_HANDLE_MODE R Error handle mode
9 - - 예비
10 - 15 - - 예비
16 - 31 NO_MBS[0]:NO_MBS[15] R 현재의 slice나 GOB내에 엔코 드되는 매크로블록의 수
<다중표준 시작코드 검출시스템>
(MULTI-STANDARD START CODE DETECTOR SYSTEM)
비트스트림 프로세서(234)의 다중표준 시작코드 검출시스템(300)은 화상 데이터(408)의 종료가 검출되거나 DSP 코어(201) 또는 비트스트림 프로세서(234)에 의해 손상된 화상 데이터(408)가 검출된 후에 압축화상 비트스트림(402)의 다음 시작코드를 검색하기 시작한다. 다음 시작코드(405)를 검출하는 동작을 시작하는 동시에 다중표준 시작코드 검출시스템(300)은 적어도 다음 시작코드(405)의 일부가 검출될 때까지 모든 비트 그룹을 신속히 폐기한다. 이러한 동작은 바이트 정렬된 비트스트림 및 바이트 정렬되지 않은 비트스트림 전부에 대하여 수행된다. 바이트 정렬되지 않은 포맷을 포함하는 다음 시작코드 검출동작은 제한적인 한 비트씩의 폐기를 수반한다. 개개의 비트가 아닌 비트 그룹을 폐기함으로써 시작코드의 검출시간은 줄어들고 유용한 정보의 처리에 더 많은 시간이 부여될 수 있다.
시작코드 검색 작동중이고, 화상 데이터(408)내에 손상된 데이터가 검출되지 않으며, 비트스트림 프로세서(234)가 동작되어 다음 시작코드(405)를 검출하도록 요청된다면, 제어상태 머신(307)은 적절한 인에이블 신호[1:0]을 발생하여 다음 시작코드(405)를 검출한다. 인에이블 신호[1:0]은 제어상태 머신(307) 및 비교기 유니트(308)에 의해 사용되어 다음 시작코드(405)와 유일하게 연관되는 비트 패턴을 결정한다. 16비트 비교기 유니트(308)는 이 비트 패턴을 shifter_result(334) 레지스터의 내용과 대조한다. 비교기 유니트(308)는 exclusive OR 로직 또는 exclusive OR 알고리즘과 같은 다양한 공지의 회로나 소프트웨어 알고리즘중 그 어느 것을 사용하여 설치되기도 한다. 압축화상 비트스트림(402)이 다중표준 포맷중의 하나에 의해 포맷될 때 다음 시작코드(405)의 최상위 비트(most significant bit;MSB)는 0001h(접미어 h는 16진수 표기를 의미함)를 포함한다. 인에이블 신호[1:0]을 10b로 세트함에 의해 비교기 유니트(308)가 현재데이터 버퍼(304)의 내용을 0001h에 대응시킨다.
비교기 유니트(308)에 의한 비교 동작과 동시에 다음데이터 버퍼(306)에 저장된 다음 데이터는 시작코드형식 사전검출로직(310)을 이용하여 처리된다. 제로충전비트(406)는 가변길이일 수도 있기 때문이다. 다음데이터 버퍼(306)내에서 다음 시작코드(405)가 점하고 있는 정확한 위치는 예측할 수 없다. 제로충전비트(406)가 가변길이이기 때문에 시프터(312)는 8에서 어큐물레이터(336)의 최하위 비트(least significant bit;LSB) 3개 Acc[2:0]을 뺀것에 해당하는 수만큼 제로충전비트(406)의 최초 숫자를 편이(shift out)시킨다. 후술하는 바와 같이, 5비트 어큐물레이터(336)는 분석된 화상 데이터(408) 엔트로피코드 워드를 살핀다. 만일 화상 데이터(408)가 바이트 정렬되지 않으면 바이트 정렬되는 것과의 차이는 8에서 Acc[2:0]을 뺀것과 같다.
통상 shifter_result(334) 레지스터로부터 전체 비트그룹을 폐기하면서 다음 시작코드(405)를 검출하는 비교기 유니트(308)에 의해 사용되는 패턴의 수를 최소화하기 위해, 다음 시작코드(405)의 형태 및 속성은 다음데이터 버퍼(306) 내에서 적은 오버헤드(overhead)의 처리동작에 의해 사전검출된다. 일단 다음 시작코드(405)의 정형(predetermined feature)이 사전검출되면, 다음 시작코드(405)의 정형이 다음데이터 버퍼(306)에 의해 사용된 비트 패턴과 일치되도록 하기 위해 현재 데이터 시프트 크기가 수정된다. 사전검출 동작은 후술하는 다음데이터 버퍼(306) 비교동작에 수반되는 비트 패턴의 수를 증가시킴으로써 생략될 수 있을 것이다.
시작코드 검출동작중 다음 시작코드(405) 검출동작의 개시전에 화상 데이터(408)의 종료점에 도달한다면, 다음 시작코드(405)를 수신하기 전에 다음데이터 버퍼(306)에는 제로충전비트(406)만 존재할 것이다. 적은 오버헤드의 시작코드형식 사전검출 동작은 시작코드형식 사전검출로직(310)에 의해 수행된다. 시작코드형식 사전검출로직(310)은 "1"을 검출하기 위하여 다음데이터 버퍼(306)의 내용에 대하여 논리OR 동작을 수행한다. "1"이 검출되면 not_all_zero인 시작코드형식 사전검출로직(310) 출력신호는 "1"로 세트되어 비교기 유니트(308)의 입력부에 부가된다. 그렇지 않으면, not_all_zero 출력신호는 "0"으로 세트된다.
압축화상 비트스트림(402)을 처리하는 동안 비교기 유니트(308)가 다음 시작코드(405)의 내용을 0001h와 매칭시켜 shifter_result(334) 레지스터의 내용에서 다음 시작코드(405)를 검출하지 못하고 not_all_zero 신호도 0이면, 비교기 유니트(308)는 본 실시예에서 16비트인 현재데이터 버퍼(304)의 비트용량과 동일한 5비트 출력신호 skip_size를 세트한다. 이러한 다음 시작코드(405) 검출동작중에 제어상태 머신(307)은 멀티플렉서(328)를 통하여 시프터(shifter)(312)에 전송하기 위한 비교기 유니트(308) 출력신호 skip_size를 선택한다. 시프터(312)는 shifter_result(334) 레지스터의 16비트 내용을 편이시키고, 제어상태 머신(307)은 게이트 제어선(330)으로 인도되는 제어신호를 사용하여 게이트(328)를 오픈시킨다. 다음데이터 버퍼(306)의 16비트 내용 전체는 현재데이터 버퍼(304)에 로드되고, 다음의 16비트 압축화상 비트스트림(402)은 다음데이터 버퍼(306)에 로드된다. 다시 현재데이터 버퍼(304)의 내용은 shifter_result(334) 레지스터에 로드된다. 이러한 과정은 시작코드형식 사전검출로직(310)에 의해 not_all_zero 신호가 세트될때까지 반복된다.
다음 시작코드(405) 검출동작중 어느 시점에서 적어도 다음 시작코드(405)의 일부가 다음데이터 버퍼(306)에 로드될 수 있다. 시작코드형식 사전검출로직(310)은 이와 같이 하여 다음 시작코드(405)의 최상위 비트에 포함된 "1"을 검출하고, 출력신호 not_all_zero를 "1"로 세트하게 된다. 압축화상 비트스트림(402)이 바이트 정렬되어 있다면, 다음데이터 버퍼(306)내의 다음 시작코드(405)의 0번 비트나 8번 비트는 "1"로 세트된다. 전술한 바와 같이 비트스트림 프로세서(234)는 DSP 코어(201)에 의해 BP_MODE 레지스터의 SF비트를 통하여 압축화상 비트스트림(402) 형식을 통보받는데, 바이트 정렬된 경우 SF비트는 압축화상 비트스트림(402)이 MPEG1 또는 MPEG2에 따라 바이트 정렬로 포맷된 것을 나타낸다. 비교기 유니트(308)는 출력신호 skip_size를 8(1000b)로 세트하는데, 이는 비교기 유니트(308)가 다음 시작코드(405)를 검출하지 못하는 상태로 되지 않도록 한다. shifter_result(334) 레지스터의 내용인 Acc[4:0}는 출력신호 skip_size에 의해 01000b로 세트된다.(접미어 b는 이진수 표기임을 나타낸다.) 시프터(312)는 최상위 8비트를 shifter_result(334) 레지스터로부터 편이시키고, 다음데이터 버퍼(306)로부터의 다음데이터중 8비트가 shifter_result(334) 레지스터의 최하위 비트 위치에 로드된다.
매번의 1바이트 편이후 shifter_result(334) 레지스터의 내용은 1000b씩 증가된다. Acc[4:0]이 15를 초과할 때마다 제어상태 머신(307)은 게이트(326)를 오픈하고, 다음데이터 버퍼(306)의 내용은 현재데이터 버퍼(304)에 로드된다. 현재데이터 버퍼(304)의 내용은 shifter_result(334) 레지스터내로 편이되고, 다음의 16비트 압축화상 비트스트림(402)은 다음데이터 버퍼(306)에 로드된다. 비교기 유니트(308)는 shifter_result(334) 레지스터의 내용을 다음 시작코드(405)에 유일하게 연관되는 비트형식(본 실시예에서 0001h)과 대조한다. 2사이클내에 비교기 유니트(308)는 현재데이터 버퍼(304)의 내용을 0001h와 매치시킨다. 일치점을 검출하는 순간 비교기 유니트(308)는 두 번째 출력신호 detector_status를 "1"로 세트하는데, 이는 shifter_result(334) 레지스터내의 현재데이터가 다음 시작코드(405)의 최상위 비트 16개를 포함하고 있는 것을 의미한다. 제어상태 머신(307)은 시작코드가 검출되었다는 것을 DSP 코어(201)에 알리고, 비교기 유니트(308)를 아이들 상태로 두기 위해 출력신호 enable[1:0]을 00b로 세트한다. 그러면 비트스트림 프로세서(234)는 DSP 코어(201)로부터 후속 정보를 기다리거나 다음 시작코드(405)가 슬라이스(slice) 시작코드이면 다음 시작코드(405)를 디코드한다.
시작코드형식 사전검출로직(310)이 출력신호 not_all_zero를 "1"로 단정했다면, 비트스트림 프로세서(234)가 DSP 코어(201)에 의해 압축화상 비트스트림(402)이 H.261 또는 H.263에 따라 바이트 정렬되지 않은 것을 BP_MODE 레지스터의 SF비트를 통하여 통보받는 경우, 다음데이터 버퍼(306) 내에서 다음 시작코드(405)의 0001h 부분중 1h의 위치를 알 수 없다. 비교기 유니트(308)는 출력신호 skip_size를 1로 세트한다. 시프터(312)는 shifter_result(334) 레지스터의 내용을 한 비트씩 성공적으로 편이시키면서 최하위 비트를 다음데이터 버퍼(306)로부터의 최상위 비트로 대체시킨다. 각각 한 비트씩의 편이후 비교기 유니트(308)는 shifter_result(334) 레지스터내의 현재데이터를 다음 시작코드(405)에 유일하게 연관되는 비트형식과 대조한다. 이러한 처리는 일치상태가 검출될때까지 반복되는데, 길어도 16사이클 내에는 일어나게 된다. 일치상태가 검출되면 shifter_result(334) 레지스터는 적어도 다음 시작코드(405)의 일부를 포함하고, 비교기 유니트(308)는 출력신호 detector_status를 "1"로 세트하여 shifter_result(334) 레지스터의 내용이 다음 시작코드(405)의 0001h 부분을 포함하고 있음을 제어상태 머신(307)에 알린다. 이에 응하여 비트스트림 프로세서(234)는 출력신호 enable[1:0]을 00b로 리셋하여 비교기 유니트(308)를 아이들 상태에 둔다. 제어상태 머신(307)은 시작코드가 검출되었음을 DSP 코어(201)에 알리고, 출력신호 enable[1:0]을 00b로 세트하여 비교기 유니트(308)를 아이들 상태로 둔다. 그러면 비트스트림 프로세서(234)는 DSP 코어(201)로부터 후속 정보를 기다리거나 다음 시작코드(405)가 slice 시작코드이면 다음 시작코드(405)를 디코드한다.
비트스트림 프로세서(234)가 화상 데이터(408) 내에서 에러를 검출하면 비트스트림 프로세서(234)는 프로세서(202)를 인터럽트하고 레지스터 파일(324)내의 BP_CONTROL 레지스터 내에서 <표 3>의 err_handle_mode 플래그 내용을 체크한다. err_handle_mode 플래그가 "1"로 세트될때 비트스트림 프로세서(234)는 자동적으로 다음 시작코드(405)를 찾아 에러로부터의 회복을 재촉한다. err_handle_mode 플래그가 "0"으로 세트되면 비트스트림 프로세서(234)는 아이들 상태로 들어가 DSP 코어(201)로부터의 후속 정보를 기다린다. 미국 특허출원 번호 xx/xxx,xxx(대리인 처리번호 M-4368) C. Reader의 "Methods and Apparatus for Processing Video Data"에서 첨부 A의 제 10장 제 13절은 비트스트림 프로세서(234)와 DSP 코어(201) 사이의 "job hand-shaking"을 더욱 상세히 설명한다.
화상 데이터(408)내에 에러가 검출되고 err_handle_mode 플래그가 "1"로 세트되면, 비트스트림 프로세서(234)는 다음 시작코드(405)를 검출하기 위한 효과적인 동작을 즉시 개시한다. 제어상태 머신(307)은 출력신호 enable[1:0]을 10b로 세트하여 비교기 유니트(308)가 화상 데이터(408)내에 포함되지 않은 정형을 찾도록 요청한다. 본 실시예에는 다중표준 포맷에 따라 포맷된 압축화상 비트스트림(402)의 화상 데이터(408)내에 0000h를 허용하지 않는다. 비교기 유니트(308)는 shifter_result(334) 레지스터의 16비트 내용을 0000h와 비교하기 시작한다. 일치상태가 검출되지 않으면 출력신호 detector_status는 "0"으로 유지된다. 비교기 유니트(308)는 출력신호 skip_size를 "10000h"로 세트하고, 제어상태 머신(307)은 시프터(312)로 전송하기 위해 멀티플렉서(328)로 가는 skip_size 입력신호를 선택한다. 제어상태 머신(307)은 게이트 제어선(330)의 제어신호를 통하여 게이트(328)를 동작시켜 다음데이터 버퍼(306)에 저장된 다음의 16비트를 현재데이터 버퍼(304)로 전송한다. 압축화상 비트스트림(402)으로부터 온 16비트는 다음데이터 버퍼(306)에 로드되고, 현재데이터 버퍼(304)의 내용은 shifter_result(334) 레지스터에 로드된다. 다시, 비교기 유니트(308)는 shifter_result(334) 레지스터의 내용을 0000h와 비교한다. 그 동작은 비교기 유니트(308)에 의해 일치상태가 검출될때까지 계속되고, 비교기 유니트(308)는 출력신호 detector_status를 "1"로 하여 일치상태 검출을 제어상태 머신(307)에 알린다. 이러한 동작 시점에서 다중표준 시작코드 검출시스템(300)은 제로충전비트(406)를 검출하였다.
화상 데이터(408) 내에서의 에러 검출에 이어 에러를 처리하는 시작코드 검출동작을 완료하기 위해 제어상태 머신(307)은 출력신호 enable[1:0]을 01b로 세트한다. 시작코드 검출처리는 전술한 바와 같이 계속되어 바이트 정렬되지 않는 압축화상 비트스트림(402)을 추정하거나 엔트로피코드 워드를 찾고, 전술한 바와 같이 제로충전비트(406)를 정렬하고, 전술한 바와 같이 압축화상 비트스트림(402)이 바이트 정렬된 것을 추정한다.
<다중표준 시작코드 검출시스템의 작동예>
다음은 초기에 압축화상 비트스트림(402)이 MPEG1, MPEG2, H.261 또는 H.263 표준에 따라 포맷된 것으로 추정하는 다중표준 시작코드 검출시스템(300)의 작동예이다. 또한 본 실시예는 유용한 화상 데이터(408)가 XXXX1XXXX2h(접미어는 단지 16진 그룹을 나타내는 예시의 목적으로 사용함)에 해당하고, 제로충전비트(406)가 0000100001003ah이고, 다음 시작코드(405)가 003b014aXX4bh(접미어 "a"와 "b"는 각각 16비트 그룹의 첫째 및 둘째 바이트를 나타냄)를 포함하는 것으로 추정된다. 당업계에서 통상의 지식을 가진자는 이러한 설명을 통하여 다중표준 시작코드 검출시스템(300)이 다른 화상 및 비화상 표준에도 적용될 수 있음을 알 수 있을 것이다.
화상 데이터(408)에 에러가 없거나 유용하다면 비교기 유니트(308) 출력신호 enable[1:0]은 제어상태 머신(307)에 의해 초기에 모두 논리 "0"으로 세트되어 레지스터 파일(324)내의 출력신호 detect_start_code 플래그가 DSP 코어(201)에 의해 세트될때까지 비교기 유니트(308)를 아이들 상태로 둔다. 다중표준 시작코드 검출시스템(300)이 압축화상 비트스트림(402)을 받을 때 16비트의 유용한 화상 데이터(408) XXXX1h는 현재데이터 버퍼(304) 및 shifter_result(334) 레지스터에 로드되고, 다음 16비트의 유용한 화상 데이터(408) XXXX2h는 다음데이터 버퍼(306)에 로드된다. 비교기 유니트(308)가 아이들 상태에 있는 동안 현재데이터 XXXX1h는 시프터(312)에 의해 shifter_result(334) 레지스터로부터 후술하는 엔트로피코드 비트길이 검출로직(314)으로 적절히 편이된다. Acc[4:0]이 15를 초과할 때 계속하여 다음데이터 XXXX2h는 게이트(326)를 통해 현재데이터 버퍼(304)에 로드되고, shifter_result(334) 레지스터에 로드된다. 압축화상 비트스트림(402)의 다음 16비트 00001h는 다음데이터 버퍼(306)에 로드된다. 비교기 유니트(308)를 계속 아이들로 둔 채로 shifter_result(334) 레지스터내의 현재데이터 XXXX2h는 엔트로피코드 비트길이 검출로직(314)으로 편이되고, 다음데이터 00001h는 현재데이터 버퍼(304) 및 shifter_result(334) 레지스터에 로드된다. 압축화상 비트스트림(402)의 다음 16비트 00002h는 다음데이터 버퍼(306)에 로드된다. DSP 코어(201)가 유용한 화상 데이터(408)의 종료를 검출한 후 DSP 코어(201)는 detect_start_code 플래그를 "1"로 세트하고, 제어상태 머신(307)은 출력신호 enable[1:0]을 01b로 세트하여 비교기 유니트(308)가 shifter_result(334) 레지스터의 내용을 0001h와 비교하도록 요청한다. 이에 더하여 제로충전비트(406)는, 전술한 바와 같이 적절하다면, 바람직하기로는 바이트 정렬된다. 이와 같이 하여 인에이블 상태로 되는 비교기 유니트(308)는 다음 시작코드(405)를 찾기 시작한다.
현재데이터 버퍼(304) 및 shifter_result(334) 레지스터에 있는 현재데이터는 00001h에 해당하고, 다음데이터 버퍼(306)에 있는 다음데이터는 00002h에 해당한다. 시작코드형식 사전검출로직(310)은 OR로직을 이용하여 다음데이터 버퍼(306)의 내용 00002h를 처리한다. 다음데이터 버퍼(306)의 내용은 모두 논리 "0"이기 때문에 출력신호 not_all_zero는 로우(low)인 논리 "0"을 유지한다. 비교기 유니트(308)는 현재데이터를 0001h와 비교하여 현재데이터가 다음 시작코드(405)의 정형과 일치하지 않음을 확인한다. 출력신호 not_all_zero가 로우이고 비교기 유니트(308)에 의해 일치점이 검출되지 않으므로 비교기 유니트(308)는 출력신호 skip_size를 10000h로 세트하고 detector_status를 "0"으로 세트한다. 출력신호 detector_status가 로우이므로 출력신호 enable[1:0]은 01b로 유지된다. 시프터(312)는 출력신호 skip_size에 응답하고, 능률적으로 현재데이터 00001h를 폐기한다. 제어상태 머신(307)은 게이트(326)를 오픈하여 다음데이터 00002h를 현재데이터 버퍼(304)에 전송하고, 이는 시프터(312)에 의해 shifter_result(334) 레지스터에 편이된다. 압축화상 비트스트림(402)의 다음 16비트 003a003bh는 다음데이터 버퍼(306)에 로드된다. 다중표준 시작코드 검출동작은 상기의 설명과 같이 계속되고, 비교기 유니트(308)에 의한 불일치 신호 및 시작코드형식 사전검출로직(310) 출력신호 not_all_zero의 "0"에 응답하여 00002h가 shifter_result(334) 레지스터로부터 능률적으로 폐기된다. 다음데이터 버퍼(306)의 내용 003a003bh는 현재데이터 버퍼(304) 및 shifter_result(334) 레지스터에 로드된다. 014aXX4bh 비트는 다음데이터 버퍼(306)에 로드된다.
시작코드형식 사전검출로직(310)은 다음데이터 버퍼(306)의 내용을 처리하고 "1" 비트를 검출하여 출력신호 not_all_zero를 "1"로 세트한다. 비교기 유니트(308)는 003a003bh를 0001h와 비교하여 일치상태를 검출하지 못하면 출력신호 detector_status를 로우로 유지한다. DSP 코어(201)가 압축화상 비트스트림(402)이 바이트 정렬된 것으로 인식하면 BP_MODE 레지스터 "SF" 비트(표 1 및 표 2)를 적절히 세트하여 다음데이터 버퍼(306)의 내용이 0001h이거나 01XXh임을 비트스트림 프로세서(234)에 알린다. 이와 같이 하여 비교기 유니트(308)는 출력신호 skip_size를 01000b로 세트하는데, 다음데이터 버퍼(306)가 적어도 다음 시작코드(405)의 일부를 지니기 때문이다. 시프터(312)는 003ah를 능률적으로 버리고, shifter_result(334) 레지스터는 이제 014ah를 다음데이터 버퍼(306)로부터 편이시켜 현재데이터 003b014ah를 지닌다. 비교기 유니트(308)는 현재데이터 및 시작코드 형식 0001h 사이에서 일치상태를 검출하여 출력신호 detector_status를 하이(high)로 세트하게 된다. 제어상태 머신(307)은 출력신호 enable[1:0]을 00b로 세트하여 비교기 유니트(308)를 아이들 상태로 두고 DSP 코어(201)에 다음 시작코드(405)가 검출되었음을 알린다.
이제는 바이트 정렬되는 대신, 압축화상 비트스트림(402)이 바이트 정렬되지 않음을 전술한 바와 같이 DSP 코어(201)가 비트스트림 프로세서(234)에 적절히 통보하는 것을 가정한다. 다중표준 시작코드 검출시스템(300)은 본 실시예의 014aXX4bh에 해당하는 다음데이터 버퍼(306)의 내용에서 시작코드형식 사전검출로직(310)에 의해 논리 "1"이 검출될때까지 전술한 바와 같이 진행한다. 시작코드형식 사전검출로직(310)은 출력신호 not_all_zero를 하이로 세트하고, 비교기 유니트(308)는 현재데이터 003a003bh가 0001h와 일치하는지 조사한다. 일치상태가 검출되지 않고 비교기 유니트(308)는 출력신호 skip_size를 00001b로 세트하는데, 다음 시작코드(405)의 0001h 비트의 위치를 모르기 때문이다. shifter_result(334) 레지스터의 내용을 제어하는 시프터(312) 및 제어상태 머신(307)은 shifter_result(334) 레지스터내의 연속되는 최상위 비트를 한 비트씩 능률적으로 폐기한다. 한 비트씩의 편이후 비교기 유니트(308)는 shifter_result(334) 레지스터내의 현재데이터를 조사하여 0001h와의 일치를 발견할 때까지 검출한다. 본 실시예에서 8번의 한 비트 편이후 현재데이터는 003b014ah에 해당하고 비교기 유니트(308)는 일치상태를 검출한다. 일치상태를 검출한 후 압축화상 비트스트림(402)의 작동은 전술한대로 진행한다.
이제는 다음 시작코드(405)에서 예를 들어 비트스트림 프로세서(234)나 DSP 코어(201)에 의해 에어가 검출되는 것을 가정하여, BP_CONTROL 레지스터 내에서 <표 3>의 err_handle_mode 플래그가 "1"로 세트되면, 비트스트림 프로세서(234)는 먼저 최상위 제로충전비트(406)에 대하여 전체 16 비트그룹을 조사하고 그후 다음 시작코드(405)의 0001h에 대하여 조사함으로써 다음 시작코드(405) 서치동작을 시작한다. 제어상태 머신(307)은 출력신호 enable[1:0]을 10b로 세트하고, 비교기 유니트(308)는 shifter_result(334) 레지스터의 내용을 0000h와 비교한다. 일치상태가 검출될때까지 비교기 유니트(308)는 출력신호 skip_size를 10000b로 세트한다. 따라서 shifter_result(334) 레지스터에서 현재데이터의 16비트 그룹은 시프터(312)에 의해 능률적으로 폐기되고, 제어상태 머신(307)은 게이트(326)를 제어하여 다음데이터 버퍼(306)의 16비트 내용을 shifter_result(334) 레지스터로 편이되는 현재데이터 버퍼(304)로 전송한다. 압축화상 비트스트림(402)의 다음 16비트는 다음데이터 버퍼(306)에 입력된다. 본 실시예에서 XXXX1h에 해당하는 손상된 화상 데이터(408)는 비교기 유니트(308)에 의해 0000h에 비교되고, 이어서 XXXX2h는 0000h에 비교된다. 세 번째 비교동작에서는 00011h를 0000h와 비교하고, 일치상태는 검출된다. 비교기 유니트(308)는 출력신호 detector_status를 "1"로 세트하고, 제어상태 머신(307)은 출력신호 enable[1:0]을 01b로 세트한다. 시작코드 검출동작은 전술한 바와 같이 압축화상 비트스트림(402)의 바이트 정렬 특성에 따라 진행된다.
<엔트로피코드 비트길이 탐색모듈>
(ENTROPY CODE BIT LENGTH SEARCHING MODULES)
압축화상 비트스트림(402)은 다양한 VLC표, 즉 엔트로피코드 테이블(또한 Huffman 테이블이라고도 함)에 따라 엔코드된다. 한 실시예로서, 비트스트림 프로세서(234)는 각각의 MPEG1, MPEG2, H.261 및 H.263 화상표준 문서내에서 설명되고 추천된 모든 Huffman 테이블을 지원한다. 대부분의 테이블은 룩업 테이블(look-up table; LUT)(332)내에 제공된다. 한 실시예로서, LUT(332)는 768 × 12비트 리드온리 메모리(ROM)이다. 약간 단순하기도 하고 상당히 복잡한 Huffman 테이블은 고정배선(hardwired) 로직을 이용하여 제공된다. LUT(332) 방법론 및 위상에 대한 상세 정보는 동시 계류중인 미국 특허출원 번호 xx/xxx,xxx(대리인 처리번호 M-4368) C. Reader의 "Methods and Apparatus for Processing Video Data" 부록 B를 참조한다. 엔트로피 코드화는 일반적으로 반복(redundancy)을 줄이기 위한 신호의 가변길이 코드화로 정의된다. 일반적으로 엔트로피 코드화로 짧은 엔트로피코드 워드는 빈도가 높은 일에 할당되고 긴 엔트로피코드 워드는 빈도가 낮은 일에 할당된다.
LUT(332)가 관련되는 디코딩 동작은 가변길이 엔트로피코드 입력을 사용하여 디코드 데이터 출력신호를 제공한다. 압축화상 비트스트림(402)의 엔트로피코드 워드는 사전검출되고 압축되어 연속 비트스트림을 형성한다. 엔트로피코드 압축에 대한 상세정보를 위해, 동시 출원 및 계류중인 미국 특허출원 번호 xx/xxx,xxx(대리인 처리번호 M-4395) Jae Cheol Son의 "System for Variable Length Code Data Stream Position Arrangement" 를 참조하는데, 이러한 것들은 모두 이하에서 참고 사항으로서 전체적으로 포함된다. 압축화상 비트스트림(402)을 디코드하기 위해 압축화상 비트스트림(402)이 개개의 엔트로피코드 워드로 분해되어 432를 위한 주소를 발생한다. 압축화상 비트스트림(402)을 연속적인 엔트로피코드 워드로 분해하는 한 방법은 엔트로피코드 비트길이 탐색모듈(314)을 사용하여 현재 엔트로피코드 워드의 비트길이를 결정하는 것이다. 비트길이가 결정되면 엔트로피코드 워드는 인식되고, 압축화상 비트스트림(402)으로부터 분해되고, 디코드된다. 이러한 디코드 동작은 엔트로피코드 비트길이에 배치된 종래의 별도 ROM을 대체시키고, 상대적으로 보다 컴팩트한 디자인을 제공한다.
도 3 을 참조하면, 디코딩 동작중에 제어상태 머신(307)은 출력신호 enable[1:0]을 00b로하여 비교기 유니트(308)를 아이들 상태로 둔다. 시프터(312)는 압축화상 비트스트림(402) 데이터를 shifter_result(334) 레지스터로부터 엔트로피코드 비트길이 탐색모듈(314)에 공급하고, 엔트로피코드 비트길이 탐색모듈(314)은 현재 엔트로피코드의 비트길이를 결정한다. 다음데이터 버퍼(306)로부터 현재데이터 버퍼(304)에 데이터를 입력시키고, 현재데이터 버퍼(304)로부터 shifter_result(334) 레지스터에 내용을 편이시키고, 다음데이터 버퍼(306)에 다음 16비트의 압축화상 비트스트림(402)을 입력시키는 동작은 제어상태 머신(307)의 제어하에 있고, 전술한 바와 같이 어큐물레이터(336)의 내용에 의존한다. 제어상태 머신(307)은 멀티플렉서(328)를 통해 시프터(312)에 전송하기 위한 신호 bit_length_code를 선택한다. 결정된 비트길이 정보는 멀티플렉서(328)를 통해 시프터(312)에 전송되고, 시프터(312)는 bit_length_code에 의해 나타난 기정 비트길이에 따라 shifter_result(334) 레지스터의 내용을 분해한다. 시프터(312)는 어큐물레이터(336)의 내용 Acc[4:0]을 이용하여 shifter_result(334) 레지스터 내에서 이전에 분해된 내용을 추적한다. 현재데이터 버퍼(304)는 shifter_result(334) 레지스터가 비는(예컨대 미분해 비트가 없는) 때에만 다음데이터 버퍼(306)로부터 재충전된다.
도 5 를 참조하면, 엔트로피코드 비트길이 탐색모듈(314)은 각각 N+1 개의 엔트로피코드 비트길이 탐색로직모듈 SLM[N:0]으로 구성된다. 각각의 엔트로피코드 비트길이 탐색로직모듈 SLM[N:0]은 비트스트림 프로세서(234)에 의해 지원되는 포맷표준, 한 실시예로서 MPEG1, MPEG2, H.261 및 H.263에 의한 정형대로 각각의 VLC 테이블을 나타내도록 구성된다. 그러므로 N+1 은 다중표준 포맷에 의해 사용되는 테이블 수에 해당하는데, 본 실시예에서는 28이다. 각각의 엔트로피코드 비트길이 탐색로직모듈 SLM[N:0]은 shifter_result(334) 레지스터로부터 병렬 도선을 통하여 동일한 16개의 current_data 비트를 수신한다. 제어상태 머신(307)은 다음데이터 버퍼(306)의 최상위 비트를 수신한다. 한 실시예로서, 각각의 엔트로피코드 비트길이 탐색로직모듈 SLM[N:0]에 한번에 저장되는 current_data 비트수의 최대는 16비트인데, 이는 최대의 엔트로피코드 워드 비트길이에서 다중표준 포맷에 의해 사용된 것을 뺀것에 해당한다. 만일 각각의 엔트로피코드 비트길이 탐색로직모듈 SLM[N:0] 중의 하나가 17비트 길이의 엔트로피코드 워드를 검출하면, 제어상태 머신(307)은 신호 bit_length_code를 통해 통보받고 최하위 비트(17번째)를 shifter_result(334) 레지스터의 내용에 부가하게 된다.
엔트로피코드 워드가 각각의 엔트로피코드 비트길이 탐색로직모듈 SLM[N:0]에 의해 나타난 테이블에 속한다면, 각각의 엔트로피코드 비트길이 탐색로직모듈 SLM[N:0]은 수신된 최상위 엔트로피코드 워드의 비트길이를 결정한다. 각각의 엔트로피코드 비트길이 탐색로직모듈 SLM[N:0]은 최상위 엔트로피코드 워드의 결정된 길이를 나타내도록 각각의 출력신호 bit_length_code[N:0]을 지닌다. 제어상태 머신(307)은 멀티플렉서(502)의 출력단을 통과하는 최상위 엔트로피코드 워드와 관련된 테이블을 나타내는 출력신호 bit_length_code[N:0] 중의 하나를 선택한다. 제어상태 머신(307)은 출력신호 select_logic_module_input을 멀티플렉서(502)의 선택단에 부가하여 이러한 선택을 한다.
디코드 동작중에 제어상태 머신(307)은 멀티플렉서(502)의 출력단을 통하여 시프터(312)의 입력단으로 전해지는 출력신호 bit_length_code를 선택한다. 시프터(312)는 분석된 현재 데이터를 shifter_result(334) 레지스터의 최상위 미사용 내용으로부터 편이시킴으로써 입력신호 bit_length_code에 대응한다. 입력신호 bit_length_code에 해당하는 비트수를 지니는 분석된 현재 데이터는 어드레스 발생기(338)에 전달된다. 어드레스 발생기(338)는 LUT(332)를 위한 주소를 생성한다. 따라서, 통상 수 ns(nanoseconds)안에, 시프터(312)는 입력신호 bit_length_code에 해당하는 shifter_result(334) 레지스터로부터의 최상위 미사용 비트수를 엔트로피코드 비트길이 탐색모듈(314)로 편이시킨다. 현재데이터 버퍼(304) 및 다음데이터 버퍼(306)의 비트들은 엔트로피코드 비트길이 탐색모듈(314)로 전송된 적이 없으면 이와 관련해서 "미사용"으로 간주한다. shifter_result(334) 레지스터가 비면, 즉 양측에 사용된 비트만 지니면 현재데이터 버퍼(304)는 게이트(326)를 통하여 다음데이터 버퍼(306)의 내용을 재 입력받는다. 현재데이터 버퍼(304)의 내용은 shifter_result(334) 레지스터에 편이되고, 다음데이터 버퍼(306)는 다음 16비트의 압축화상 비트스트림(402)을 재 입력받는다.
도 6 을 참조하면, 엔트로피코드 비트길이 탐색로직모듈 SLM[M]은 각각의 엔트로피코드 비트길이 탐색로직모듈 SLM[N:0]의 한 실시예를 나타낸다. 엔트로피코드 비트길이 탐색로직모듈 SLM[M]의 전체 구성은 엔트로피코드 매칭모듈 MM[M:0](즉 매칭모듈 MM[M]부터 MM[0]까지)을 매칭모듈 그룹 G[t:0]으로 정렬하는 것을 포함한다. VLC 테이블내의 잠재적인 엔트로피코드 비트길이 각각은 MPEG1, MPEG2, H.261 및 H.263으로 설명한 바와 같이 그룹 G[t:0] 중의 하나로 표현된다. 매칭모듈 그룹내의 각각의 매칭모듈은 입력신호 current_data를 통하여 압축화상 비트스트림(402)의
Figure kpo00006
비트를 수신하여
Figure kpo00007
에 해당하는 비트길이를 지니는 엔트로피코드 워드를 검출한다. 또한 "
Figure kpo00008
" 는 매칭모듈 그룹내의 특정 매칭모듈에 나타난 비트길이에 해당함을 주목한다. 그러므로 "
Figure kpo00009
" 는 각 매칭모듈 그룹에 따라 변한다. 예를 들어, 엔트로피코드 비트길이 탐색로직모듈 SLM[M]이 <표 4>의 MPEG-1 모션 VLC 테이블과 연관된다면 매칭모듈 그룹 G[0]은 가장 작은 비트길이, 본 테이블에서 1(코드 0),를 지니는 엔트로피코드 워드를 검출한다. 그러므로
Figure kpo00010
는 16에 해당하고,
Figure kpo00011
는 1에 해당한다. 또한, 매칭모듈 그룹 G[t]는 가장 큰 비트길이, 표 4의 VLC 테이블에서 11(코드 -16부터 -11까지 및 11부터 16까지),를 지닌 엔트로피코드 워드를 검출한다. 그러므로,
Figure kpo00012
는 6에 해당하고,
Figure kpo00013
는 11에 해당한다. 각각의 엔트로피코드 매칭모듈 MM[M:0]은 최상위
Figure kpo00014
비트를 하나 이상의 정형 엔트로피코드 워드에 상응하는 비트형식과 일치시킨다. 매칭모듈 그룹내의 매칭모듈 수는 바람직하기로 특정 그룹과 관련된 비트길이를 지니는 모든 정형 엔트로피코드 워드를 검출오류나 검출누락 없이 정확히 검출하는데 필요한 비트형식의 최소한의 수를 기준으로 선택된다. 예를 들어 매칭모듈 그룹G[0]을 일치시키기 위한 "a+1", 매칭모듈 그룹G[t]를 일치시키기 위한 "m+b+1" 등의 그룹 내에서 매칭모듈의 수를 정형화하는 것과, 매칭모듈 그룹의 수("t+1")를 정형화하는 것은 아래에 더욱 상세히 설명된다.
<표 4>는 특히 MPEG-1 문서의 부록 B.4에 있는 화상벡터에 대한 엔트로피코드를 나타낸다. <표 4>에 관련된 아래의 예는 다중표준 포맷과 같은 다른 포맷표준의 엔트로피코드 테이블에 적용하도록 채용된다.
각각의 엔트로피코드 매칭모듈 MM[M:0]은 매칭모듈의 최상위
Figure kpo00015
비트가 완전한 엔트로피코드 워드인지를 나타내는 출력신호를 발생한다. 엔트로피코드 매칭모듈 MM[M:0]은 단지 하나의 매칭모듈이 한 사이클동안 하나의 논리 1을 발생하도록 구성된다. 매칭모듈내에 입력된 최상위
Figure kpo00016
비트가 엔트로피코드 워드를 나타낼 때 이 매칭모듈은 논리 1 출력신호를 발생한다.
엔트로피코드 매칭모듈 MM[M:0]은 바람직하기로 각 매칭모듈 그룹 G[t]내에 적어도 하나의 매칭모듈이 존재하도록 구성된다. 각각의 매칭모듈 그룹 G[t]에 대한 최소한의 매칭모듈 수를 결정하기 위해, 엔트로피코드 비트길이 탐색로직모듈 SLM[M]으로 나타낸 엔트로피코드 테이블이 조사되는데, 엔트로피코드 워드 테이블 내용은 독특한 속성을 지닌 공통 최상위 비트 공통 패턴(pattern)에 따라 비트길이별로 그룹을 이룬다. 도 4를 참조하여 가장 작은 엔트로피코드 워드로 예를 들면, 가장 작은 엔트로피코드 워드가 얼마나 많은 선행제로(leading zero)를 지니고 있는지 결정한다.
패 턴 매칭모듈그룹수 매칭모듈수 모션VLC 코드 코드
0000 001 7 1 0000 0011 001 -16
0000 001 7 1 0000 0011 011 -15
0000 001 7 1 0000 0011 101 -14
0000 001 7 1 0000 0011 111 -13
0000 0100 0 7 0 0000 0100 001 -12
0000 0100 0 7 0 0000 0100 011 -11
0000 0100 1 6 1 0000 0100 11 -10
0000 0101 6 0 0000 0101 01 -9
0000 0101 6 0 0000 0101 11 -8
0000 011 5 1 0000 0111 -7
0000 10 5 0 0000 1001 -6
0000 10 5 0 0000 1011 -5
0000 11 4 0 0000 111 -4
0001 3 0 0001 1 -3
001 2 0 0011 -2
01 1 0 011 -1
1 0 0 1 0
01 1 0 010 1
001 2 0 0010 2
0001 3 0 0001 0 3
0000 11 4 0 0000 110 4
0000 10 5 0 0000 1010 5
0000 10 5 0 0000 1000 6
0000 011 5 1 0000 0110 7
0000 0101 6 0 0000 0101 10 8
0000 0101 6 0 0000 0101 00 9
0000 0100 1 6 1 0000 0100 10 10
0000 0100 0 7 0 0000 0100 010 11
0000 0100 0 7 0 0000 0100 000 12
0000 001 7 1 0000 0011 110 13
0000 001 7 1 0000 0011 100 14
0000 001 7 1 0000 0011 010 15
0000 001 7 1 0000 0011 000 16
X개의 선행제로가 있다면 같은 선행제로수 X를 지니는 보다 긴 길이의 엔트로피코드 워드를 조사한다.
가장 작은 엔트로피코드 워드중 하나로부터 Y개의 최상위 비트를 취함으로써 패턴이 결정되는데, 가장 작은 엔트로피 코드 워드에 비해 다른 길이를 지니는 엔트로피코드 워드 내용의 Y개 최상위 비트에는 비교일치가 발생하지 않게 된다. 이러한 처리는 가장 작은 엔트로피코드 워드 각각에 대하여 반복된다. 각기 다른 정형의 수는 가장 작은 비트길이에 대한 매칭모듈 그룹내의 매칭모듈의 수와 동일하다. 이러한 처리는 개개의 엔트로피코드 워드 내용에 대해 반복된다. 본 기술 분야의 통상의 기술을 가진자는 유일한 일치 패턴이 여러 방법으로 결정되는 것을 알 수 있을 것이다.
예를 들어 도 4 를 참조하면, MPEG-1 모션 VLC 테이블에 대한 엔트로피코드 비트길이 탐색로직모듈 SLM[M]은 8개의 매칭모듈 그룹 G[7:0]을 지닌다. 각 매칭모듈 그룹 G[4:0]은 각각 하나의 엔트로피코드 매칭모듈 MM[0]을 지니고, 각 매칭모듈 그룹 G[7:5]는 각각 두개의 엔트로피코드 매칭모듈 MM[1:0]을 지닌다. 또한 <표 4>는 각각의 매칭모듈과 관련된 독특한 패턴을 포함한다. 비트길이 Z의 패턴이 엔트로피코드 비트길이 탐색로직모듈 SLM[M]의 각 매칭모듈 내로의
Figure kpo00017
비트 입력의 최상위 Z비트에 대해 일치되면, 일치상태는 매칭모듈 그룹 G[7:0] 중 하나에서만 발견될 것이다. <표 4>로부터 알 수 있듯이, 비트길이를 결정하는 LUT ROM을 포함하는 것에 비하여 엔트로피코드 워드의 비트길이를 결정하는 엔트로피코드 비트길이 탐색모듈(314)을 제공하기 위한 칩영역이 감소된다.
도 7 을 참조하면, 매칭모듈 MM[i]는 각각 도 6의 매칭모듈 그룹 G[t:0]에서 개개의 엔트로피코드 매칭모듈 MM[m:0]을 나타낸다. 매칭모듈 MM[i]는 current_data 입력신호 패스(704)를 통해 수신되는 압축화상 비트스트림(402)의 n개 현재데이터 비트 EC[n-1:0]을 저장하는 엔트로피코드 버퍼(702)를 포함한다. 최상위 비트 EC[n-1:x]는
Figure kpo00018
패턴 비트 P[(n-1)-x:0]과 비교되는데,
Figure kpo00019
는 전술한 매칭모듈과 관련된 패턴의 비트길이에 해당한다. 예를 들어 도 4를 참조하면, 매칭모듈 MM[i]이 비트길이 10의 엔트로피코드 워드 매칭모듈을 검출하는 매칭모듈 그룹 G[6]의 매칭모듈 MM[1]을 나타내고
Figure kpo00020
은 17이면, 관련된 패턴 0000 0100 1b는 9비트 길이이다. 그러므로
Figure kpo00021
는 8이 되고
Figure kpo00022
는 9가 된다. 이와 같이 하여 EC[n-1]은 E[x]가 되고 P[(n-1)-x]는 P[0]이 된다. 비교기 유니트(308)는 최상위 엔트로피코드 데이터 비트 EC[n-1:x]를 최상위 패턴 비트 P[(n-1)-x:0]과 일대일로 비교한다. 일치상태가 검출되면 매칭모듈 MM[i]는 논리 "1" 출력신호를 출력선(710)에 부가하고, 그렇지 않으면 매칭모듈 MM[i]는 논리 "0"을 부가한다.
비교기 유니트(308)는 exclusive OR 로직 또는 exclusive OR 알고리즘과 같은 공지의 다양한 회로나 소프트웨어 알고리즘을 이용하여 수행할 수 있다. 패턴 비트 P[(n-1)-x:0]은 고정배선으로 구성할 수 있는데, 유연성을 향상하거나 엔트로피코드 비트길이 탐색로직모듈의 수를 줄이기 위해 현재의 엔트로피코드 워드와 관련된 엔트로피코드 테이블에 따라 프로그램할 수도 있다.
매칭모듈 그룹 G0:G1의 매칭모듈이 인식중에 있는 엔트로피코드 매칭모듈 MM[m:0] 중의 하나로부터 논리 "1" 출력신호에 의해 지시된 대로 엔트로피코드 워드를 인식했는지 결정하기 위해 로직모듈이 사용된다. 도 6의 실시예에서, 각각의 매칭모듈 그룹 G[t:0]으로부터의 매칭모듈 출력신호는 각각의 OR로직 모듈 L[t:0]에 부가된다. 현재 엔트로피코드의 비트길이는 OR로직 모듈 L[t:0]중 어느 것이 논리 1 출력신호 hit_t:hit_0 각각을 지니는가에 의해 결정된다. 비트길이 인코더(602)는 각각의 도선으로부터 OR로직 모듈 L[t:0] 출력신호 hit_t:hit_0을 수신한다. 비트길이 인코더(602)는 논리 1 출력신호를 발생한 매칭모듈을 지니는 매칭모듈 그룹에 해당하는 코드화된 출력신호 bit_length_code_M을 발생한다. 예를 들어 t가 매칭모듈 그룹 G[t:0]을 위한 7로 되면 매칭모듈 그룹 G[t:0]은 서로 다른 8개의 엔트로피코드 비트길이를 나타낸다. 그러므로 출력신호 bit_length_code는 8개의 잠정적인 엔트로피코드 비트길이를 직접적으로 나타내는 8개의 잠정적인 출력신호 값을 지닌다. bit_length_code_M 출력신호 패스(604)는 이에 따라서 bit_length_code_M의 4비트를 나타내는 4개의 출력선을 지닌다. 엔트로피코드 매칭모듈 MM[m:0] 및 매칭모듈 그룹 G[t:0]은 엔트로피코드 매칭모듈 MM[m:0] 중의 단 하나가 한 사이클 동안에 논리 1 출력신호를 발생하도록 구성되기 때문에, bit_length_code_M은 논리 1 출력신호를 발생하는 매칭모듈의
Figure kpo00023
최상위 비트내에 입력된 현재 엔트로피코드 워드의 비트길이를 직접적으로 나타낸다.
도 5 를 참조하면, 각 엔트로피코드 비트길이 탐색로직모듈 SLM[N:0]은 각각의 출력신호 bit_length_code[N:0]을 각각의 멀티플렉서(502) 입력단에 부가한다. 제어상태 머신(307) 출력신호 select_logic_module_input은 멀티플렉서(328)의 선택단에 부가된다. 멀티플렉서(328)로 전달되도록 선택된 신호 bit_length_code[N:0] 중 하나는 현재 엔트로피코드 워드에 대응하여 VLC 테이블에 할당된 엔트로피코드 비트길이 탐색로직모듈 SLM[N:0] 중 하나에 의해 생성된 신호이다.
bit_length_code에 인도된 멀티플렉서(502) 출력신호 bit_length_code는 멀티플렉서(328)의 선택단에 부가된다. 디코딩 과정에서 제어상태 머신(307)은 시프터(312)에 연결하기 위한 bit_length_code 출력신호를 선택한다. 시프터(312)는 전술한대로 현재데이터 버퍼(304)로부터 bit_length_code 신호에 해당하는 다수의 비트를 LUT(332)를 위한 주소를 생성하는 어드레스 발생기(338)로 편이시킨다. 이러한 비트는 디코드되고 레지스터 파일(324) 내의 다목적 레지스터에 전달된다. 이러한 비트는 이제 I/O 버스(212)를 통해 DSP 코어(201)에 유용해진다.
본 발명을 특정의 바람직한 실시예에 관련하여 도시하고 설명하였지만, 본 발명이 이에 한정되는 것은 아니다. 예를 들어 비트스트림 프로세서(234)는 비교기 유니트(308) 내에 프로그래머블 비트패턴 메모리를 포함시켜 일치 패턴을 선택하도록 적용될 수 있다. 더욱이 엔트로피코드 비트길이 탐색모듈(314)의 기능은 프로세서나 소프트웨어를 이용하여 수행될 수 있다. 따라서 다른 화상 및 비화상 표준의 형식도 적용됨을 알 수 있다. 따라서, 이하의 특허청구의 범위에 의해 마련되는 본 발명의 정신이나 분야를 이탈하지 않는 한도내에서 본 발명이 다양하게 개조 및 변화될 수 있다는 것을 당 업계에서 통상의 지식을 가진 자는 용이하게 알 수 있다.

Claims (9)

  1. 현재 엔트로피코드 워드의 잠재 비트길이의 기정수가
    Figure kpo00024
    이 되도록 비트길이를 지니는 현재 엔트로피코드 워드를 검출하는 장치에 있어서:
    각각이 비트그룹을 수신하여 비트그룹 내에서 현재 엔트로피코드 워드의 비트길이 결정을 시도하고, 그중 하나가 비트그룹 내에서 현재 엔트로피코드 워드의 비트길이를 결정하여 여타의 출력신호에 비해 유일한 출력신호를 발생하는 다수의 매칭모듈; 및
    각각이 매칭모듈의 기정수를 지니고, 각각이 현재 엔트로피코드 워드의 잠재 비트길이의
    Figure kpo00025
    개 기정수중 하나를 나타내고, 각각이 출력신호를 지니고, 그중 하나가 여타의 출력신호에 비해 유일한 출력신호를 갖는 매칭모듈을 지니는
    Figure kpo00026
    개 매칭모듈 그룹을 포함하여 이루어지는 것을 특징으로 하는 단위 처리 시스템에서의 가변길이코드 검출장치.
  2. 제 1 항에 있어서,
    상기 각각의 매칭모듈은,
    비트그룹을 지니는
    Figure kpo00027
    비트 버퍼;
    하나의 잠재 비트길이로 된 적어도 하나의 잠재 엔트로피코드 워드의 최상위
    Figure kpo00028
    비트에 일치하는 비트패턴을 지니는
    Figure kpo00029
    패턴비트 버퍼; 및
    일치상태가 발생되면 매칭모듈이 유일한 출력신호를 발생하도록
    Figure kpo00030
    비트 버퍼 및
    Figure kpo00031
    패턴비트 버퍼에 연결되어
    Figure kpo00032
    비트 버퍼의 최상위
    Figure kpo00033
    비트를
    Figure kpo00034
    패턴비트 버퍼의
    Figure kpo00035
    비트에 비교하는 비교기를 구비하는 것을 특징으로 하는 단위 처리 시스템에서의 가변길이코드 검출장치.
  3. 제 2 항에 있어서,
    상기 비트패턴은 하나의 잠재 비트길이로 된 적어도 하나의 잠재 엔트로피코드 워드에 유일하게 관련되는 최소의 비트수에 해당하는 비트수를 지니는 것을 특징으로 하는 단위 처리 시스템에서의 가변길이코드 검출장치.
  4. 제 1 항에 있어서,
    상기 각각의
    Figure kpo00036
    개 매칭모듈 그룹내의 매칭모듈 수는 각각의
    Figure kpo00037
    개 매칭모듈 그룹에 의해 대표되는 비트길이에 대해 각각의 기정 엔트로피코드 워드를 유일하게 식별하는데 필요한 최소의 비트패턴 수에 해당하는 것을 특징으로 하는 단위 처리 시스템에서의 가변길이코드 검출장치.
  5. 제 1 항에 있어서,
    Figure kpo00038
    개 매칭모듈 그룹의 출력신호에 연결되어
    Figure kpo00039
    개 매칭모듈 그룹중 유일한 출력신호를 지니는 하나를 검출하고 현재 엔트로피코드 워드의 비트길이를 나타내는 유일한 코드를 발생하는 엔코더를 추가로 구비하는 것을 특징으로 하는 단위 처리 시스템에서의 가변길이코드 검출장치.
  6. 제 1 항에 있어서,
    상기
    Figure kpo00040
    개 매칭모듈 그룹은 엔트로피코드 워드의 기정된 테이블을 나타내는
    Figure kpo00041
    개 엔트로피코드 비트길이 탐색모듈 사이에 배치되는 것을 특징으로 하는 단위 처리 시스템에서의 가변길이코드 검출장치.
  7. 제 1 항에 있어서,
    상기 현재 엔트로피코드 워드의 잠재 비트길이의 기정수는 MPEG1, MPEG2, H.261 또는 H.263으로 이루어진 그룹으로부터의 표준포맷에 의해 규정되는 것을 특징으로 하는 단위 처리 시스템에서의 가변길이코드 검출장치.
  8. 제 1 항에 있어서,
    다수의 매칭모듈 및
    Figure kpo00042
    개 매칭모듈 그룹을 지니는 멀티미디어 신호처리기를 추가로 구비하는 것을 특징으로 하는 단위 처리 시스템에서의 가변길이코드 검출장치.
  9. 현재 엔트로피코드 워드의 잠재 비트길이의 기정수가
    Figure kpo00043
    이 되도록 비트길이를 지니는 현재 엔트로피코드 워드를 검출하는 방법에 있어서:
    각 비트패턴이 현재 엔트로피코드의
    Figure kpo00044
    개 잠재 비트길이중 하나에만 연관되도록 다수의 비트패턴을 비트그룹의 각 부분에 동시에 비교하는 단계;
    다수의 비트패턴중 어느 비트패턴이 비트그룹의 각 부분에 일치하는지 결정하는 단계; 및
    비트그룹의 각 부분에 일치하는 것으로 결정된 비트패턴에 응답하여 현재 엔트로피코드의 비트길이를 규명하는 출력신호를 발생하는 단계를 포함하는 것을 특징으로 하는 단위 처리 시스템에서의 가변길이코드 검출방법.
KR1019970022662A 1996-10-18 1997-06-02 단위 처리 시스템에서의 가변길이코드 검출장치 및 방법 KR100227275B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US8/731,339 1996-10-18
US08/731,339 US5821886A (en) 1996-10-18 1996-10-18 Variable length code detection in a signal processing system

Publications (2)

Publication Number Publication Date
KR19980032138A KR19980032138A (ko) 1998-07-25
KR100227275B1 true KR100227275B1 (ko) 1999-11-01

Family

ID=24939090

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970022662A KR100227275B1 (ko) 1996-10-18 1997-06-02 단위 처리 시스템에서의 가변길이코드 검출장치 및 방법

Country Status (4)

Country Link
US (1) US5821886A (ko)
JP (1) JPH10135843A (ko)
KR (1) KR100227275B1 (ko)
TW (1) TW392391B (ko)

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6786420B1 (en) 1997-07-15 2004-09-07 Silverbrook Research Pty. Ltd. Data distribution mechanism in the form of ink dots on cards
US6618117B2 (en) 1997-07-12 2003-09-09 Silverbrook Research Pty Ltd Image sensing apparatus including a microcontroller
US7551201B2 (en) 1997-07-15 2009-06-23 Silverbrook Research Pty Ltd Image capture and processing device for a print on demand digital camera system
US6879341B1 (en) 1997-07-15 2005-04-12 Silverbrook Research Pty Ltd Digital camera system containing a VLIW vector processor
US6690419B1 (en) 1997-07-15 2004-02-10 Silverbrook Research Pty Ltd Utilising eye detection methods for image processing in a digital image camera
US6624848B1 (en) 1997-07-15 2003-09-23 Silverbrook Research Pty Ltd Cascading image modification using multiple digital cameras incorporating image processing
US7110024B1 (en) 1997-07-15 2006-09-19 Silverbrook Research Pty Ltd Digital camera system having motion deblurring means
IL122299A (en) * 1997-11-25 2003-11-23 Broadcom Corp Video encoding device
AUPP702098A0 (en) 1998-11-09 1998-12-03 Silverbrook Research Pty Ltd Image creation method and apparatus (ART73)
US6522694B1 (en) * 1998-10-09 2003-02-18 Matsushita Electric Industrial Co., Ltd. Programmable filter for removing stuffing bits from an MPEG-2 bit-stream
US6373898B1 (en) * 1999-04-06 2002-04-16 Ravisent Technologies, Inc. High-speed start code scanner for MPEG-2 data streams
IT1308456B1 (it) * 1999-04-26 2001-12-17 Olivetti Lexikon Spa Dispositivo per comprimere/decomprimere stringhe di bit
AUPQ056099A0 (en) 1999-05-25 1999-06-17 Silverbrook Research Pty Ltd A method and apparatus (pprint01)
US6683909B1 (en) * 2000-03-16 2004-01-27 Ezenial Inc. Macroblock parsing without processing overhead
US6563439B1 (en) * 2000-10-31 2003-05-13 Intel Corporation Method of performing Huffman decoding
US6587057B2 (en) * 2001-07-25 2003-07-01 Quicksilver Technology, Inc. High performance memory efficient variable-length coding decoder
US7403981B2 (en) * 2002-01-04 2008-07-22 Quicksilver Technology, Inc. Apparatus and method for adaptive multimedia reception and transmission in communication environments
WO2004064351A1 (ja) * 2003-01-15 2004-07-29 Fujitsu Limited 非同期伝送方法及びその回路
TWI228932B (en) * 2003-02-11 2005-03-01 Ind Tech Res Inst Encoding and decoding method of recording medium
US9330060B1 (en) 2003-04-15 2016-05-03 Nvidia Corporation Method and device for encoding and decoding video image data
US8660182B2 (en) * 2003-06-09 2014-02-25 Nvidia Corporation MPEG motion estimation based on dual start points
KR100561464B1 (ko) * 2003-07-29 2006-03-16 삼성전자주식회사 가변장 부호화 장치 및 방법
KR101089489B1 (ko) * 2003-11-18 2011-12-02 스칼라도 아베 디지털 이미지 처리 방법 및 이미지 표현 포맷
US8427494B2 (en) * 2004-01-30 2013-04-23 Nvidia Corporation Variable-length coding data transfer interface
US7334116B2 (en) * 2004-10-06 2008-02-19 Sony Computer Entertainment Inc. Bit manipulation on data in a bitstream that is stored in a memory having an address boundary length
US7849369B2 (en) * 2005-10-25 2010-12-07 Waratek Pty Ltd. Failure resistant multiple computer system and method
US8731071B1 (en) * 2005-12-15 2014-05-20 Nvidia Corporation System for performing finite input response (FIR) filtering in motion estimation
US8724702B1 (en) 2006-03-29 2014-05-13 Nvidia Corporation Methods and systems for motion estimation used in video coding
US8660380B2 (en) * 2006-08-25 2014-02-25 Nvidia Corporation Method and system for performing two-dimensional transform on data value array with reduced power consumption
WO2008087750A1 (ja) 2007-01-19 2008-07-24 Mitsubishi Electric Corporation テーブル装置、可変長符号化装置、可変長復号装置及び可変長符号化復号装置
US8756482B2 (en) * 2007-05-25 2014-06-17 Nvidia Corporation Efficient encoding/decoding of a sequence of data frames
US20080291209A1 (en) * 2007-05-25 2008-11-27 Nvidia Corporation Encoding Multi-media Signals
US8726125B1 (en) 2007-06-06 2014-05-13 Nvidia Corporation Reducing interpolation error
US8725504B1 (en) 2007-06-06 2014-05-13 Nvidia Corporation Inverse quantization in audio decoding
US9118927B2 (en) * 2007-06-13 2015-08-25 Nvidia Corporation Sub-pixel interpolation and its application in motion compensated encoding of a video signal
US8477852B2 (en) * 2007-06-20 2013-07-02 Nvidia Corporation Uniform video decoding and display
US8873625B2 (en) * 2007-07-18 2014-10-28 Nvidia Corporation Enhanced compression in representing non-frame-edge blocks of image frames
US8502709B2 (en) * 2007-09-17 2013-08-06 Nvidia Corporation Decoding variable length codes in media applications
US8849051B2 (en) * 2007-09-17 2014-09-30 Nvidia Corporation Decoding variable length codes in JPEG applications
US8462855B2 (en) * 2007-09-26 2013-06-11 Intel Corporation Method and apparatus for stream parsing and picture location
US8934539B2 (en) * 2007-12-03 2015-01-13 Nvidia Corporation Vector processor acceleration for media quantization
US8704834B2 (en) * 2007-12-03 2014-04-22 Nvidia Corporation Synchronization of video input data streams and video output data streams
US8687875B2 (en) * 2007-12-03 2014-04-01 Nvidia Corporation Comparator based acceleration for media quantization
US8666181B2 (en) * 2008-12-10 2014-03-04 Nvidia Corporation Adaptive multiple engine image motion detection system and method
US9307267B2 (en) * 2008-12-11 2016-04-05 Nvidia Corporation Techniques for scalable dynamic data encoding and decoding
KR101175680B1 (ko) 2008-12-23 2012-08-22 광운대학교 산학협력단 비트스트림 프로세서의 구동방법
KR101279507B1 (ko) * 2009-12-15 2013-06-28 한국전자통신연구원 병렬 처리 기반 파이프라인 복호화 장치 및 방법
US8743967B2 (en) * 2011-03-09 2014-06-03 Vixs Systems, Inc. Multi-format video decoder with vector processing instructions and methods for use therewith
US10171810B2 (en) 2015-06-22 2019-01-01 Cisco Technology, Inc. Transform coefficient coding using level-mode and run-mode
CA3043884A1 (en) 2016-11-16 2018-05-24 Catalog Technologies, Inc. Systems for nucleic acid-based data storage
JP7364604B2 (ja) 2018-03-16 2023-10-18 カタログ テクノロジーズ, インコーポレイテッド 核酸ベースのデータ記憶のための化学的方法
AU2020268440A1 (en) 2019-05-09 2021-12-02 Catalog Technologies, Inc. Data structures and operations for searching, computing, and indexing in DNA-based data storage
US11535842B2 (en) 2019-10-11 2022-12-27 Catalog Technologies, Inc. Nucleic acid security and authentication
EP4315336A1 (en) * 2021-03-24 2024-02-07 Catalog Technologies, Inc. Fixed point number representation and computation circuits

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3701108A (en) * 1970-10-30 1972-10-24 Ibm Code processor for variable-length dependent codes

Also Published As

Publication number Publication date
TW392391B (en) 2000-06-01
US5821886A (en) 1998-10-13
KR19980032138A (ko) 1998-07-25
JPH10135843A (ja) 1998-05-22

Similar Documents

Publication Publication Date Title
KR100227275B1 (ko) 단위 처리 시스템에서의 가변길이코드 검출장치 및 방법
KR100236528B1 (ko) 신호처리시스템내의비트스트림신호형식검출장치및방법
US10489426B2 (en) Category-prefixed data batching of coded media data in multiple categories
US7079057B2 (en) Context-based adaptive binary arithmetic coding method and apparatus
US6043765A (en) Method and apparatus for performing a parallel speculative Huffman decoding using both partial and full decoders
US7385534B2 (en) Methods and apparatus for processing variable length coded data
JP5583106B2 (ja) データデコーディング
US8125364B2 (en) Data compression/decompression method
EP1440585A2 (en) Improved variable length decoder
JP2001308715A (ja) 可変長符号化装置および可変長復号装置
US6185339B1 (en) Bit stream analyzing method and apparatus
US6285789B1 (en) Variable length code decoder for MPEG
US8625677B2 (en) Apparatus processing video stream
KR100227273B1 (ko) 가변길이 코드 데이터 스트림 위치정렬을 위한 시스템
US6621428B1 (en) Entropy codec for fast data compression and decompression
US20050174270A1 (en) Programmable variable length decoder including interface of cpu processor
KR0180164B1 (ko) 가변길이 부호기
CN112449191A (zh) 压缩多个图像的方法、解压缩图像的方法和装置
Golston et al. C64x VelociTI. 2 extensions support media-rich broadband infrastructure and image analysis systems
JPH11112354A (ja) ビットストリーム供給回路
JP2006041659A (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: 20120801

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20130731

Year of fee payment: 15

LAPS Lapse due to unpaid annual fee