KR19980702675A - 가변 길이 디코더 - Google Patents
가변 길이 디코더 Download PDFInfo
- Publication number
- KR19980702675A KR19980702675A KR1019970706081A KR19970706081A KR19980702675A KR 19980702675 A KR19980702675 A KR 19980702675A KR 1019970706081 A KR1019970706081 A KR 1019970706081A KR 19970706081 A KR19970706081 A KR 19970706081A KR 19980702675 A KR19980702675 A KR 19980702675A
- Authority
- KR
- South Korea
- Prior art keywords
- bit stream
- word
- tag
- stream
- decoding
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/42—Conversion 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/42—Conversion 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/425—Conversion 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods 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/91—Entropy 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, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
본 발명의 고성늘 가변 길이 디코더는 유입되는 비트 스트림 내의 코드 워드의 경계를 태그하고, 버스형 비트 스트림 출력 및 이 버스형 비트 스트림 출력과 일치하는 버스형 비트 스트림 출력을 제공하는 태깅 회로를 포함한다. 버스형 태그 스트림 출력은 고속 병렬 워드 길이 연산 회로의 입력에 접속되고, 버스형 비트 스트림 출력은 병렬값 디코더 회로의 입력에 접속된다. 병렬 워드 길이 연산 회로(워드 길이 디코딩 루프)는 단일 모드 동작으로 단일 코드 워드의 길이 또는 연속 모드 동작으로 1개 이상의 연속적 코드 워드의 길이를 계산(디코딩)한다. 워드 길이 연산 회로는 버스형 태그 스트림으로 나타낸 코드 워드의 길이를 디코딩함으로써 유입되는 비트 스트림 내의 코드 워드의 압도적인 다수에 대해 훨씬 더 신속한 워드 길이 디코딩을 가능하게 하기 위해 보다 신속한 빠른 검색 테이블을 사용한다. 워드 빠른 디코딩 동작은 병렬 처리 정도 및 그에 따라 낮은 클록 속도로 달성될 수 있는 가변 길이 디코더의 처리량을 증가시킨다. 병렬값 디코도 회로는 태깅 회로로부터 버스형 비트 스트림을 수신하고, 제 1 또는 단일 모드 동작으로 단일 코드 워드값 또는 제 2 또는 연속적 모드 동작으로 병렬로 1개 이상의 연속적 코드 워드값을 디코딩한다. 동작의 모드(단일 또는 연속적)는 규정된 디코딩 프로토콜, 예를 들면 MPEG 프롤토콜에 따라 현재 코드 워드 및 이전에 디코딩된 코드 워드에 기초하여 가변 길이 디코더의 동작을 조절하는 조절 회로에 의해 발생된 조절 신호에 따라 선택된다.
Description
디지탈 비디오 데이터 전송 시스템에 있어서, 비디오 데이터는 수신기에 전송되기 전에 인코딩되고, 이는 인코딩된 디지탈 비디오 데이터를 디코딩한다. 이어서, 디코딩된 디지탈 비디오 데이터는 후속하는 신호 처리 단계를 출력된다. 그러한 시스템의 데이터 처리량 및 메모리 효율을 증가시키기 위해, 통계학적인 압축 알고리즘이 디지탈 비디오 데이터를 압축하고 인코딩하도록 사용된다. 이러한 압축 알고리즘 한가지는 허프만 코딩 알고리즘이다. 데이터를 압축하는 것은 전형적으로 고정 길이 코드 워드보다 가변 길이 코드 워드로 세그먼트화된 데이터 스트림을 초래한다. 가변 길이 디코더는 압축된 데이터 스트림을 포함하는 가변 길이 코드 워드를 디코딩한다.
가변 길이 코드 워드의 시퀀스를 디코딩하기 위한 여러 가지 유용한 방법들이 현재 존재한다. 가장 효과있는 방법은 트리 탐색 알고리즘 및 테이블 검색 기술이다.
트리 탐색 알고리즘은 입력된 비트 스트림에서 각각의 코드 워드값 및 그 끝을 발견하기 위해 코드 트리를 통한 1비트씩의 탐색을 사용한다. 코딩 트리는 공지된 코드 워드의 잎(leaf)들을 포함한다. 디코딩 방법은 코딩 트리의 루트에서 시작하고, 비트 스트림 내의 각각의 연속적인 비트의 디코딩된 값에 따라 코딩 트리의 상이한 가지로 한 비트씩 계속된다. 결과적으로 잎에 도달하고, 코드 워드의 끝이 검출된다. 이어서, 코드 워드는 나머지 비트 스트림으로부터 세그먼트화되고, 검출된 코드 워드값은 가변 길이 디코더로부터 검색되고 출력된다. 디코딩 동작은 기호 속도로보다 비트 속도로 수행되기 때문에, 트리 검색 알고리즘을 사용하여 비트 스트림을 디코딩하는 것은 많은 고속 용도로 사용하기에는 너무 느리다. 이와 같은 점에서, 비트 스트림을 비트 속도로 디코딩하는 것은 HDTV 디코더의 피크기호 속도 요건을 만족시키지 못한다.
가변 길이 디코더의 데이터 처리량을 증가시키기 위해, Sun 등에 의해 출원된 미국 특허 명세서 제 5,173,695 호에 기재된 것과 같은 테이블 검색 디코더가 개발되었으며, 본 명세서에서는 그 실시예를 참조한다. 상기 특허 명세서에 기재된 테이블 검색 디코더의 입력은 그의 입력 단자에서 가변-워드-길이의 인코딩된 비트 스트림을 수신하고, 비트 스트림 내의 최대 길이 코드 워드에 길이가 동일한 비트들의 시퀀스를 병렬로 출력하는 속도 버퍼의 출력 단자에 접속된다. 이들 시퀀스는 직렬 래치로 판독된다. 두 래치에서 직렬 시퀀스는 그의 다중-비트 입력으로부터 테이블 검색 디코더에 슬라이딩 디코딩 윈도우를 제공하는 배럴 시프터에 입력된다. 조절 신호는 각각의 코드 워드가 검출될 때 배럴 시프터의 디코딩 윈도우의 위치를 직접적으로 이동시킨다.
각각의 코드 워드를 검출하기 위해, 디코딩 윈도우에서 초기 비트들이 테이블 검색 디코더에서 코드 워드 엔트리와 비교된다. 코드 워드가 검출될 때, 대응하는 코드 워드 길이는 이제 막 디코딩된 워드의 비트 수에 의해 디코딩 윈도우를 직접적으로 이동시키는 조절 신호를 생성하기 위해 미리 축적된 코드 워드 길이를 갖는 어큐뮬레이터의 값에 부가된다. 제 1 래치 내의 모든 비트들이 검출되었을 때, 버퍼 내의 다음 비트 시퀀스는 제 2 래치로 입력되고, 그 동안 제 2 래치내의 이전의 비트 시퀀스는 제 1 래치로 전송된다. 이어서, 디코딩 윈도우는 디코딩되지 않은 시퀀스 내의 다음 코드 워드의 시작점으로 이동된다. 디코딩 윈도우의 이동 및 코드 워드의 디코딩은 1 클록 주기로 행하여질 수 있다. 결과적으로, 테이블 검색 디코더는 그의 비트 길이와 무관하게 클록 주기당 1개의 코드 워드를 디코딩함으로써, 이전에 이용되는 트리 검색 알고리즘 디코더에 비해 디코더의 데이터 처리량을 극적으로 증가시킬 수 있다.
그러나, 소비자 HDTV 애플리케이션에 있어서, 피크 기호 속도가 초당 100 밀리언 코드 워드인 경우, 단일 가변 길이 디코더에 의해 기호 속도로 전체 화상을 디코딩하는 것은 비실용적이다. HDTV 시스템에서, 가변 길이 디코더(VLD)는 화상 디스플레이 시간 내에 속도 버퍼로부터 전체 화상을 추출하기 위해 사용된다. VLD는 피크 기호 속도(PSR)로 데이터 스트림 내의 워드를 디코딩시켜야 하며, 이는 디스플레이 해상도 및 디스플레이 시간에 의존한다. MPEG(동화상 전문가 그룹) 프로토콜을 사용하는 HDTV 시스템의 경우, 초당 100 밀리언 이상의 코드 워드인 VLD 처리량이 요구된다. 이러한 처리량을 갖는 VLD 자체의 구현과 관련된 기술적 문제점들 외에, 대용량 속도 버퍼를 갖는 고속 VLD 인터페이스는 현재 이용되는 메모리 기술에 의해 상당히 고가이다. 비동기 DRAM 등의 보다 느리고 보다 저렴한 메모리 장치보다는 오히려 스태틱 랜덤 액세스 메모리(SRAM) 및 동기 다이내믹 랜덤 액세스 메모리(SDRAM) 등의 보다 빠르고 보다 고가의 메모리 장치가 사용되어야 하기 때문에, 가격이 쟁점인 경우 문제는 더욱 심각해진다. 물론, 메모리의 가격은 특히 HDTV 수상기 등의 소비자 제품에 대해 중요한다.
현행의 HDTV의 구체적인 실시 형태를 보면, HDTV 시스템은 화상의 상이한 부분들을 병렬로 디코딩하기 위해 다중 VLD를 사용함으로써 다중 처리 경로로 통상적으로 분배된다. 이러한 실시 형태에서, VLD는 주요 병목중의 하나이다. 화상의 각각의 파티션은 거의 모든 화상 정보를 포함할 수 있기 때문에, 다중 전용 핑퐁 버퍼는 모든 VLD와 속도 버퍼 사이에서 요구되므로, 시스템에 대해 요구되는 비트 스트림 메모리의 양을 극적으로 증가시킨다. 예를 들면, 8개의 병렬 VLD를 갖는 분할된 디코딩 시스템은 각각의 핑퐁 버퍼가 속도 버퍼의 크기인 2배인 8개의 핑퐁 버퍼를 필요로 함으로써 단일 VLD를 갖는 시스템의 16개의 인자에 의해 요구되는 버퍼 메모리의 양을 증가시킨다.
HDTV 시스템에 있어서, 입력된 비트 스트림은 페이로드 데이터 및 셋업 데이터를 포함하는 MPEG 디지탈 비디오 데이터 스트림이다. 데이터의 압도적 다수(데이터의 약 95%)를 구성하는 페이로드 데이터는 이들의 각각의 검색 테이블을 사용하여 디코딩되는 DCT(불연속 코사인 변환) 계수 및 운동 벡터 등의 연속적인 코드 워드로 나타낸다. 데이터의 나머지 부분(데이터의 약 5%)을 구성하는 셋업 데이터는 상이한 검색 테이블을 사용하여 디코딩되는 단일 코드 워드로 나타낸다.
위에서 언급한 바에서 알 수 있듯이, 현재 이용되는 기술의 상기 논의한 결점 및 단점을 극복한 가변 길이 디코더가 현재의 당업계에 필요하고, 분할된 HDTV 디코더보다 오히려 단일 VLD HDTV 디코더를 수행하기 위해 사용될 수 있음을 인식할 수 있다. 보다 상세하게는, 낮은 클록 속도에서지만 디지탈 비디오 데이터를 초래하는데 적절한 데이터 처리량을 갖는 가변 길이 디코더에 대한 필요성이 현재 당업계에 존재함으로써, 보다 저렴한(느린) 메모리를 사용할 수 있고, 가변 길이 디코더의 수행을 보다 실용적으로 만든다.
당업계에서 이러한 필요성을 충족시키고 데이터 처리량을 증가시키기 위해, 코드 워드를 병렬 처리할 수 있는 가변 길이 디코더가 개발되었으며, 이는 본 출원과 동시 계류중인 특허 출원 명세서 PHA23.080에 기재되어 있고, 본 명세서에서는 그 명세서에서 교지하는 바를 참조적으로 인용한다. 상기 출원에 기재된 가변 길이 디코더에 의해, 병렬로 처리될 수 있는 코드 워드의 양은 입력된 비트 스트림 내의 코드 워드의 유형 및 시퀀스에 의존한다. 결과적으로, 주어진 클록 주기에 행하여질 수 있는 병렬 처리량은 주어진 클록 주기에 발생하는 연속적인 코드 워드의 수에 의해 제한된다. 또한, 복수개의 배럴 시프터, 종래의 허프만 검색 테이블을 사용하는 복수개의 가변 워드 길이 디코더 및 복수개의 가산기로 구성된 워드 길이 연산 루프를 통한 테이블준 전파 지연이 여전히 존재함으로써, 달성될 수 있는 데이터 처리량을 제한한다.
그러므로, 당업계에서, 낮은 클록 속도에서 클록 주기당 데이터 처리량을 증가시키기 위해 워드 길이 연산 및 병렬 처리 동작을 최적화하기에 적합한 개선된 가변 길이 디코더가 요구될 것이다.
본 발명은 일반적으로 데이터 전송 시스템에 사용된 가변 길이 디코더에 관한 것이며, 보다 상세하게는 고화질 텔레비전(HDTV)용 디지탈 비디오 데이터를 디코딩하기 위한 가변 길이 디코더에 관한 것이다.
도 1은 본 발명의 가변 길이 디코더에 대한 프리-태깅 회로로서 사용될 수 있는 태그 스트림 발생 회로의 도시도.
도 2는 도 1에 도시된 태그 스트림 발생 회로의 타이밍을 나타내는 타이밍도.
도 3은 도 1의 프리-태깅 회로를 포함하지 않는, 본 발명의 가변 길이 디코더의 실시예의 도시도.
도 4는 본 발명의 가변 길이 디코더의 특정 성능-최적화 실시예의 도시도.
도 5는 본 발명의 가변 길이 디코더를 사용하여 입력된 코드 워드의 전형적인 시퀀스에 대해 클록 주기당 처리된 코드 워드의 수를 설명하는 도면.
도 6은 입력된 코드 워드의 동일한 전형적인 시퀀스에 대해 Sun 등에 의해 출원된 미국 특허 명세서 제 5,173,695 호의 개시 내용에 따라 구성된 가변 길이 디코더를 사용하여 클록 주기당 처리된 코드 워드의 수를 설명하는 도면.
도 7은 본 출원과 동시 계류중인 특허 출원 명세서 PHA23.080의 내용에 따라 구성된 가변 길이 디코더를 사용하여 입력된 코드 워드의 동일한 전형적인 시퀀스에 대해 클록 주기당 처리된 코드 워드의 수를 설명하는 도면.
이와 같은 요구는, 본 발명의 고성능 가변 길이 디코더에 의해 다루어진다. 이러한 디코더의 실예를 보여주는 실시예에서, 가변 길이 디코더는 유입되는 비트 스트림 내의 코드 워드의 경계를 태그하고, 버스형 태그 스트림 출력 및 이 버스형 태그 스트림 출력과 일치하는 버스형 비트 스트림 출력을 제공하는 태깅 회로를 포함한다. 버스형 비트 스트림 출력은 고속 병렬 워드 길이 연산 회로의 입력에 접속되고, 버스형 비트 스트림 출력은 병렬값 디코더 회로의 입력에 접속된다.
병렬 워드 길이 연산 회로(워드 길이 디코딩 루프)는 단일 모드 동작으로 단일 코드 워드의 길이 또는 연속 모드 동작으로 1개 이상의 연속적 코드 워드의 길이를 계산(디코딩)한다. 워드 길이 연산 회로는 버스형 비트 스트림으로 나타낸 코드 워드의 길이를 디코딩함으로써 유입되는 비트 스트림 내의 코드 워드의 압도적인 다수에 대해 훨씬 더 신속한 워드 길이 디코딩을 가능하게 하기 위해 보다 신속한 빠른 검색 테이블(a type independent look-up table)을 사용한다. 워드 빠른 디코딩 동작은 병렬 처리 정도 및 그에 따라 낮은 클록 속도로 달성될 수 있는 가변 길이 디코더의 처리량을 증가시킨다.
병렬값 디코더 회로는 태깅 회로로부터 버스형 비트 스트림을 수신하고, 제 1 또는 단일 모드 동작으로 단일 코드 워드값 또는 제 2 또는 연속적 모드 동작으로 병렬로 1개 이상의 연속적 코드 워드값을 디코딩한다.
동작의 모드(단일 또는 연속적)는 규정된 디코딩 프로토콜, 예를 들면 MPEG 프로토콜에 따라 현재 코드 워드 및 이전에 디코딩된 코드 워드에 기초하여 가변 길이 디코더의 동작을 조절하는 조절 회로에 의해 발생된 조절 신호에 따라 선택된다.
따라서, 입력된 비트 스트림을 태깅하고, 연속적 코드 워드를 병렬로 디코딩함으로써, 본 발명의 가변 길이 디코더에 의해 달성된 병렬 처리 정도에 따라 낮은 클록 속도에서 달성될 수 있는 가변 길이 디코더의 처리량은 크게 증가된다.
본 발명의 이들 목적 및 다른 목적, 특징 및 장점을 수반된 도면과 연관시킨 하기 상세한 설명으로부터 용이하게 이해할 수 있을 것이다.
본 발명은 특정 용도를 나타내는 실시예와 연관시켜 본 명세서에 기재하였지만, 본 발명이 이에 국한되지 않음을 이해해야 한다. 당업계의 통상의 기술을 갖고 본 명세서에 제공된 개시 내용을 받아들일 수 있는 자들은 본 발명의 범위 내에서 추가의 변형, 용도 및 실시예 및 본 발명이 중요하게 이용될 수 있는 다른 분야를 인식할 수 있을 것이다.
도 1은 본 발명의 가변 길이 디코더를 위한 프리-회로로서 사용될 수 있는 태그 스트림 발생 회로(16)의 도면이다. 가변 길이의 코드 워드로 구성된 비트 스트림(18)은 트리 탐색 상태 기계(20) 및 지연 이퀄라이저(22)에 입력된다. 비트 스트림 인에이블 신호(24)도 역시 트리 탐색 상태 기계(20) 및 지연 이퀄라이저(22)에 접속된다. 비트 스트림(18)은 코드 워드의 시퀀스를 포함하는 비트 스트림을 트리 탐색 상태 기계(20) 및 지연 이퀄라이저(22)에 공급한다. 상태 기계(20) 및 이퀄라이저(22)는 비트 스트림 인에이블 신호(24)의 온 상태에 반응하여 코드 워드를 수신하고 처리한다. 테이블준 검색 디코더, 마이크로프로세서 또는 임의의 다른 적절한 장치가 트리 탐색 상태 기계(20) 대신에 사용될 수 있다는 것은 당업자에 매우 명백하다.
트리 탐색 상태 기계(20)는 입력된 비트 스트림(18)을 수신하고, 이 비트 스트림(18) 내의 코드 워드를 검출한다. 검출된 코드 워드의 경계는 태그되거나 또는 테이블시되고, 워드 경계 태그 스트림(26)으로서 상태 기계(20)로부터 출력된다. 이어서, 워드 경계 태그 스트림(26)은 제 1 포맷 변환기(28)에 입력된다. 상태 기계(20)는 이 트리 탐색 상태 기계(20)가 코드 워드 경계를 태그하는 시간만큼 비트 스트림(18)을 지연시킨다.
지연 이퀄라이저(22)는 트리 탐색 상태 기계(20)가 비트 스트림(18)을 지연시키는 것과 동일한 양만큼 비트 스트림(18)의 비트를 지연시킨다. 이어서, 지연 이퀄라이저(22)는 지연된 비트 스트림(30)을 출력한다. 이 비트 스트림(30)은 워드 경계 태그 스트림(26)과 병렬로 진행하고, 도 2에 나타낸 바와 같이, 비트 스트림(30) 내의 코드 워드들이 태그 스트림(26)의 코드 워드 경계와 때맞춰 정렬되는 방식으로 균등화된다.
도 2는 도 1의 태그 스트림 발생 회로의 타이밍을 나타내는 타이밍도이다. 도 2의 도면에서, 코드 워드의 경계는 태그 스트림(26)의 상위 상태로 표시된다. 비트 스트림(30)의 대응하는 코드 워드는 태그 스트림(26)와 때맞춰 정렬된다. 각각의 코드 워드의 비트들은 1부터 출발하도록 번호가 매겨진다.
제 1 포맷 변환기(28)는 직렬 태그 스트림(26)을 병렬 32 비트 태그 스트림(36)으로 변환시킨다. 포맷-변환된(병렬) 태그 스트림(32)은 도 2에 나타낸 바와 같이 비트 스트림(30)의 코드 워드의 최종 비트로 정렬된 상위 비트를 포함한다. 32 비트 태그 스트림은 주어진 영상의 코드 워드 또는 데이터 세트에 대한 태그가 코드 워드를 디코딩하기 위해 사용되기 전에 저장되는 경우 태그 버퍼(38)에 입력된다.
도 1로 돌아가서, 지연된 비트 스트림(30)은 제 2 포맷 변환기(32)에 접속된다. 제 2 포맷 변환기(32)는 직렬 비트 스트림(30)을 32비트 병렬 비트 스트림(34)으로 변환시킨다. 물론, 병렬 비트 스트림(34)의 비트 폭은 본 발명에 제한되지 않고, 당업자에 용이하게 인식할 수 있는 임의의 다른 편리한 수일 수 있다. 32비트 버스형 비트 스트림(34)은 주어진 영상의 코드 워드 또는 데이터 세트에 대한 비트 디코딩되기 전에 저장되는 경우 속도 버퍼(38)에 입력된다. 버퍼 조절 입력이 속도 버펀(4)의 판독 및 기입 주기를 조절하기 위해 사용된다.
전형적으로, HDTV 용도로, 영상이 속도 버퍼(40)에 저장되고, 대응하는 코드 워드 태그가 태그 버퍼(38)에 저장된다. 결과적으로, 속도 버퍼(40)로부터 영상은 할달된 영상 지연 시간 동안 추출되고 디코딩되어야 한다. 제한된 지연 시간 동안 속도 버퍼(40)로부터 영상을 추출하는 것은 극히 신속한 디코더 회로를 요구한다. 그렇지 않으면, 속도 버퍼(40) 및 태그 버퍼(38)는 버퍼(40, 38)가 가득차서 시스템을 폭주시킬 때 완전하게 디코딩되지 않을 것이다.
태그 버퍼(38)의 출력(46)은 고속 디코딩 회로(도 3에서 50 및 도 4에서 50'로 나타냄)에 사용된다. 데이터 요구 라인(68)은 태그 버퍼(38) 및 속도 버퍼(40)와 접속시켜 나타낸다. 데이터 요구 라인(68)은 버퍼(38, 40)를 시발시켜 본 발명의 고속 디코딩 회로(도 3에서 50 및 도 4에서 50'로 나타냄)로부터 요청에 따라 데이터를 방출한다.
도 3은 도 1의 프리-태깅 회로를 포함하지 않는, 본 발명의 가변 길이 디코더의 실시예의 도면이다. 가변 길이 디코더(50)의 동작은 클록(도시하지 않음)과 동기화되지 않는다.
태그 스트림(46)은 제 1 입력 태그 레지스터(52)에 입력된다. 제 1 입력 태그 레지스터(52)의 출력 라인(54)은 레지스터(56)의 입력에서 제 2 입력 태그 레지스터(56)에 접속되고, 역시 제 1 배럴 시프터(60)의 입력에 접속된다. 제 2 레지스터(56)는 출력 라인(62) 상의 배럴 시프터(60)의 입력에 접속된다. 본 실시예에서, 제 1 레지스터(52)는 각각의 라인이 제 1 레지스터(52)의 비트에 대응하는 32 병렬 비트 라인(54)을 제 1 배럴 시프터(60)에 제공한다. 제 2 레지스터(56)는 각각의 라인이 제 2 레지스터(56)의 비트에 대응하는 32 병렬 비트 라인(62)을 제 1 배럴 시프터(60)에 제공한다. 제 1 배럴 시프터(60)는 시프트 입력(35) 및 한 벌의 32 병렬 출력 라인(66)을 갖는다.
병렬 라인(54, 62)의 다른 수들이 제 1 배럴 시프터(60)의 압력에 접속될 수 있고, 병렬 출력 라인(66)의 다른 수들이 본 발명의 범위로부터 벗어나지 않고 사용될 수 있음을 당업자라면 인식할 수 있을 것이다. 본 실시예에서, 병렬 라인(66)의 수는 본 발명의 가변 길이 디코더에 의해 디코딩될 최대 길이 코드 워드를 수용하도록 선택된다. 전형적인 경우, 병렬 출력 라인(66)의 수는 디코딩될 최대 길이 코드 워드 또는 병렬로 디코딩될 코드 워드의 최대 길이 세트보다 더 작지 않다.
초기에, 라인(68)상에 인가된 데이터 요청 신호에 반응하여, 코드 워드의 태그형 경계를 나타내는 비트의 스트링은 입력된 태그 스트림(46)으로부터 제 1 레지스터(52)로 로드된다. 일단 제 1 레지스터(52)가 비트로 로드되면, 제 1 레지스터(52)의 내용은 출력(54)을 통해 제 2 레지스터(56)로 전송된다. 제 1 레지스터(52)로부터 32비트 병렬 입력 비트 라인(54) 및 제 2 레지스터(56)로부터 32비트 병렬 입력 비트 라인(62)은 유용한 64비트 입력 비트의 병렬 시퀀스를 제 1 배럴 시프터(60)에 제공된다. 제 1 배럴 시프터(60)로부터 32 병렬 출력 라인(66)은 64 병렬 입력 라인(54 및 62)의 세트로부터 선택된다. 32 병렬 출력 라인(66)은 라인(64) 상으로 인가된 워드 포인터에 반응하여 이용할 수 있는 입력 비트의 시퀀스를 가로질러 좌측에서 우측으로 시프트되는 출력 디코딩 윈도우를 형성한다. 이 디코딩 윈도우(66)은 유용한 입력 비트의 시퀀스를 가로질러 워드 포인터에 의해 시프트되므로, 처리될 다음 코드 워드의 출발은 디코딩 윈도우(66)의 좌측 에지에서 시작한다. 따라서, 워드 포인터는 디코딩 윈도우(66)의 좌측 에지가 유용한 입력 비트의 시퀀스에 관하여 위치하는 경우를 측정한다.
가산기(74)는 제 1 가산기 입력(76) 및 라인(64)상에 인가되는 워드 포인터인 제 2 가산기 입력을 갖는다. 제 1 가산기 입력(76)은 단일/연속 멀티플렉서(78)의 출력에 접속된다. 단일/연속 멀티플렉서(78)의 출력 및 그에 다른 제 1 가산기 입력(76)은 제 1 멀티플렉서 입력(82)과 제 2 멀티플렉서 입력(84) 간에 스위치된다. 제 1 입력(82)으로부터 제 2 입력(84)으로 멀티플렉서(78)의 출력의 스위칭은 가변 길이 디코더(50)를 한 번에 하나의 워드 태그 경계 처리로부터 한 번에 한 세트의 워드 태그 경계 처리로 스위치한다. 단일/연속 멀티플렉서(78)의 스위칭은 멀티플렉서(78)의 조절 입력에 라인(86)상이 조절 모드(단일/연속 선택) 신호를 제공하는 조절 회로(8)에 의해 조절된다.
조절 회로(80)는 규정된 디코딩 프로토콜, 예를 들면 MPEG 디코딩 프로토콜에 따라 가변 길이 디코더의 동작을 조절하기 위한 상태 기계 및 관련 논리 회로를 포함한다. 조절 회로(80)는 규정된 디코딩 프로토콜에 따라 현재 디코딩된 코드 워드와 이전에 디코딩된 코드 워드에 기초하여 디코딩될 코드 워드의 수 및 타입을 결정한다.
가산기(74)는 제 1 가산기 입력(76)을 현재 클록 주기에 측정된 워드 포인터의 값에 가산하고, 라인(72)상의 캐리 출력 C로서 임의의 나머지를 데이터 요청 라인(68)에 출력한다. 합이 32를 초과하는 경우 가산기(72)는 오버플로우되거나 또는 약 0으로 루프된다. 예를 들면, 합 38은 6으로 나타내고, 합 43은 11로 나타낸다. 두 실시예에서, 데이터 요구 라인(68)은 라인(72) 상에 인가된 캐리 출력 C에 의해 달성된다.
가산기(74)의 출력(즉, 갱신된 워드 포인터)은 레지스터(88)의 입력에 접속되고, 레지스터(88)의 출력은 라인(64)을 통해 제 1 배럴 시프터(60)의 시프트 입력(35)에 접속된다.
디코딩 윈도우(66)은 본 발명의 가변 길이 디코더의 실시예에서 32비트 폭이다. 디코딩 윈도우(66) 내의 주어진 비트 위치에서 상위 비트는 이전 코드 워드의 끝 및 다음 코드 워드의 시작을 테이블시한다. 예를 들면, 디코딩 윈도우(66) 내의 7번째 비트상의 상위 비트는 비트 길이 7인 코드 워드의 끝에 대응한다. 이러한 태그 정보를 사용함으로써 빠른 검색 테이블(90)은 주어진 유입되는 코드 워드의 길이를 용이하고 신속하게 결정하기 위해 사용될 수 있다. 당업자라면 인식할 수 있듯이, 빠른 검색 테이블(90)은 각각의 코드 워드 타입에 대해 모든 허프만 코드 워드 엔트리를 포함하는 복수개의 종래의 허프만 검색 테이블보다 극적으로 낮은 수의 엔트리를 포함한다. 빠른 검색 테이블(90)에서 유일한 엔트리는 이하 나타내고 논의하게 되는 바와 같이, 단일 코드 워드에 대해 가능한 모든 32 태그 스트림 비트 조합이다. 디코딩 윈도우(66)은 빠른 검색 테이블(90)에 접속된다. 빠른 검색 테이블(90)은 그의 태그 스트림 비트의 시퀀스가 디코딩 윈도우(66)의 좌측 에지에서 시작하는 코드 워드의 길이를 검색하기 위해 사용된다. 디코딩된 길이는 제 1 멀티플렉서 입력(82)에 출력된다. 입력(82)은 단지 1나의(단일) 코드 워드가 즉석 클록 주기로 처리될 것임을 나타내는 조절 라인(86) 상의 조절 회로(80)에 의해 공급되는 조절 신호(단일/연속 선택)에 반응하여 단일/연속 멀티플렉서(78)의 출력으로서 선택될 것이다.
트리 탐색 상태 기계(20)는 코드 워드의 경계를 태그하기 때문에, 코드 워드의 디코딩은 빠른 검색 테이블(90)을 사용함으로써 코드 워드 타입과 무관하게 행하여질 수 있다. 예를 들면, 임의의 타입의 코드 워드 길이는 빠른 검색 테이블(90)에 의해 용이하게 결정될 수 있다. 따라서, 클록 주기로 단지 1개의 코드 워드를 처리할 때조차, 본 발명의 가변 길이 디코더는 현재 이용되는 가변 길이 디코더에 비해 증가된 처리량을 갖고, 그러한 속도에 의해, 코드 워드의 길이는 단순한 빠른 검색 테이블(90)을 사용함으로써 디코딩될 수 있다.
검색 테이블(90)의 출력(82)은 제 2 배럴 시프터(94)의 시프트 입력에 접속된다. 디코딩 윈도우(66)은 역시 병렬 비트 라인(96) 상의 제 2 배럴 시프터(94)에 접속된다. 제 2 배럴 시프터(94)의 디코딩 윈도우(98)은 제 1 검출된 코드 워드의 길이에 의해 디코딩 윈도우(98)의 좌측 에지로부터 시프트된다. 제 1 검출된 코드 워드의 길이는 제 2 배럴 시프터(94)의 시프트 입력에 워드 포인터로서 인가된 빠른 검색 테이블(90)의 출력(82)이다. 제 2 배럴 시프터(94)의 디코딩 윈도우(98)은 제 2 빠른 검색 테이블(102)에 접속된다. 제 2 빠른 검색 테이블(102)은 그의 길이가 빠른 검색 테이블(90)에 의해 결정된 코드 워드에 직접적으로 후속하는 코드의 길이를 검색하기 위해 사용된다.
코드 워드의 병렬 처리를 조장하기 위해, 합산 멀티플렉서(104)가 제공된다. 빠른 검색 테이블(90)의 출력에 접속된 라인(82)상에 인가된 제 1 검출된 코드 워드의 길이는 합산 멀티플렉서(104)에 제 1 입력(106)을 제공한다. 합산 멀티플렉서(104)에 대한 제 2 입력(110)은 제 2 빠른 검색 테이블(102)로부터 출력된 제 2 코드 워드의 길이 및 제 1 빠른 검색 테이블(90)에 의해 출력된 제 1 코드 워드의 길이의 합을 나타낸다. 이 합은 그의 출력이 합산 멀티플렉서(104)에 대한 제 2 출력(110)인 제 2 가산기(108)에 의해 연산된다.
합산 멀티플렉서(104)의 출력은 단일/연속 멀티플렉서(78)에 대한 제 2 입력(84)이다. 가변 길이 디코더(50)가 병렬로 코드 워드를 처리할 때, 단일/연속 멀티플렉서(78)의 제 2 입력(84)은 합산 멀티플렉서(104)의 제 2 입력(110)이다. 단일/연속 멀티플렉서(78)의 제 2 입력(84)이 선택될 때, 디코딩 윈도우(66)의 좌측 에지는 최종 처리된 2개의 코드 워드의 길이의 합에 의해 유용한 입력 비트의 시퀀스를 가로질러 시프트된다. 따라서, 디코딩 윈도우(66)의 좌측 에지는 새로운 워드 태그 경게 시퀀스를 시작한다.
합산 멀티플렉서(104)의 출력(84)은 조절 회로(80)에 의해 라인(105) 상에 인가된 합 선택 조절 신호에 반응하여 입력들(106, 110) 간에 스위치된다. 조절 회로(80)는 병렬로 처리되는 코드 워드들의 수를 결정하고, 합산 멀티플렉서(104)의 출력(84)으로서 합산 멀티플렉서(104)의 적절한 입력을 선택한다.
본 발명의 상기 기본적인 진보성의 확대로, 여러 가지 배럴 시프터는 합산 멀티플렉서(104)의 추가의 입력이 가산될 수 있고, 디코딩 윈도우(66)의 폭은 가변 길이 디코더(50)에 의해 병렬로 처리될 코드 워드의 보다 많은 세트를 수용하도록 확대될 수 있다.
입력 비트 스트림(44)은 그의 출력이 제 4 레지스터(114)의 입력에 및 제 3 배럴 시프터(116)의 제 2 입력에 접속된 제 3 레지스터(112)에 입력된다. 제 3 레지스터(112), 제 4 레지스터(114) 및 제 3 배럴 시프터(116)에 의해 형성된 회로의 동작은 제 1 레지스터(52), 제 2 레지스터(56) 및 제 1 배럴 시프터(60)에 의해 형성된 회로의 동작과 유사하지만, 여러 가지 예외가 있다. 입력 비트 스트림(44)은 입력 태그 스트림(46)을 통해 제 1 레지스터(52)에 대한 입력으로서 코드 워드의 이제 막 태그형 길이보다 오히려 비트를 나타내는 코드 워드의 스트림이다. 배럴 시프터(116)의 디코딩 윈도우(118)은 디코딩 윈도우(66)과 동시에 시프트되고, 역시 배럴 시프터(116)의 시프트 입력에 접속된 라인(64) 상에 인가된 워드 포인터에 반응하여 디코딩 윈도우(66)에서와 동일한 비트 거리로 시프트된다.
디코딩 윈도우(118)은 제 1 워드 값 디코더(120)에 접속된다. 디코더(120)는 디코딩 윈도우(118)의 제 1 코드 워드의 값을 디코딩하고 이러한 코드 워드의 값을 출력 멀티플렉서(124)의 제 1 입력(122)에 출력한다. 디코딩 윈도우(118)은 병렬 라인(126) 상에서 제 4 배럴 시프터(128)에 접속된다. 제 4 배럴 시프터(128)의 디코딩 윈도우(130)은 라인(82) 상에 인가된 빠른 검색 테이블(90)의 출력에 반응하여 디코딩 윈도우(118)에 포함된 제 2 코드 워드의 시작점으로 시프트되고, 이는 제 4 배럴 시프터(128)의 시프트 입력으로 라인(82) 상에 인가된 워드 포인터를 구성한다.
디코딩 윈도우(130)은 제 2 워드값 디코더(132)에 접속된다. 제 2 워드값 디코더(132)는 디코딩 윈도우(130)에서 제 1 코드 워드인 제 2 코드 워드의 값을 디코딩한다. 이러한 코드 워드의 디코딩된 값은 제 2 워드값 디코더(132)로부터 출력되고, 이는 제 2 입력(134)으로서 출력 멀티플렉서(124)에 인가된다.
조절 회로(80)는 제 1 워드값 디코더(120), 제 2 워드값 디코더(132) 및 조절 회로(136)를 통해 처리되는 코드 워드 또는 워드들의 타입의 출력 멀티플렉서(124)에 정보를 제공한다. 이러한 정보는 워드값 디코더(120, 132) 내에서 적절한 디코딩(검색) 테이블을 선택하기 위해 사용되고, 출력 멀티플렉서(124)의 입력에 역시 인가된다. 입력(122, 134) 상에 제공된 코드 워드의 값은 가속화된 코드 워드 스트림(140) 상으로 멀티플렉서된다. 병렬로 처리되는 코드 워드 수에 관한 추가 정보는 디코딩 주기 라인(142)당 워드를 통해 조절 회로(80)에 의해 출력 멀티플렉서(124)에 제공된다. 이러한 추가 정보 역시 후속 처리 동작에 사용된다. 출력 멀티플렉서(124)는 라인(138) 상의 코드 워드 타입 스트림으로서 코드 워드 타입을 출력하고, 라인(142) 상의 클록 주기당 코드 워드 수를 데이터 처리 시스템에서 다음 단계에 출력함으로써 시스템의 다음 단계에서 적절한 회로를 활성화(인에이블)시킨다.
동작 모드(단일 또는 연속 코드 워드 처리 모드) 및 클록 주기당 유용한 코드 워드 수(연속 코드 워드 처리 모드에서)에 기총하여, 조절 회로(80)는 출력 멀티플렉서(속도 가속기)(124)를 조절하여 그의 출력에 1개의 단일 코드 워드 값 또는 4개 이하의 연속 코드 워드값을 제공한다. 시스템 이행에 의존하여, 코드 워드는 고속으로 클록된 단일 코드 워드 스트림으로 멀티플렉서되거나 또는 적절한 어드레싱 도식을 사용하여 동일한 속도로 다음 메모리 단계(도시하지 않음)에 기입될 수 있다.
제 3 디코딩 윈도우(118) 및 제 4 디코딩 윈도우(130)은 조절 회로(80)에 접속된다. 연속 모드일 때, 조절 회로(80)는 시퀀스 터미네이터(예 종단 블록(EOB) 코드 워드)를 탐색함으로써 및(또는) 운돈 벡터(MV)를 계수함으로써 디코딩 윈도우(118, 130)에 포함된 연속 코드 워드의 시퀀스 또는 블록의 끝에 대해 탐색한다. 연속 코드 워드의 끝이 검출될 때, 조절 회로(80)의 출력(86)은 단일/연속 멀티플렉서(78)를 동작의 단일 모드로 스위치한다. 하기 테이블(테이블 1)는 코드 워드의 길이가 어떻게 배럴 시프터(66)의 출력에서 워드 경계 태그 스트림으로부터 결정되는지를 나타낸다. 본 발명의 가변 길이 디코더는 연속 코드 워드를 구성하는 DCT 계수 및 기타 페이로드 데이터(예, 운동 벡터) 등의 수식된 데이터 타입에 대해 2-경로 병렬 처리를 사용한다. 버스형 비트 스트림(46)에 의해 공급되고, 워드 길이를 측정하기 위해 사용된 태그 정보는 버스형 비트 스트림(44)에서 주어진 워드의 최종 비트와 정렬된 1(태그)로 종료되는 0의 스트링을 나타낸다. 2-경로 루프는 워드 길이를 결정하기 위해 이전의 디코더에 사용된 비트 스트림 대신에 태그 스트림을 사용한다. 태그 스트림을 사용함으로써, 보다 신속한 빠른 검색 테이블(90, 102)이 사용될 수 있다. 전형적인 빠른 검색 테이블은 하기 테이블 1에 나타낸다.
테이블 1
코드 워드 길이워드 경계 태그 스트림
도 4는 도 3의 가변 길이 디코더의 특정 실시예의 블록도이다. 이러한 특정 실시예의 가변 길이 디코더의 동작은 다음을 제외하고는 도 3에 나타낸 실시예의 가변 길이 디코더의 동작과 유사하다. 도 3에 나타낸 가변 길이 디코더의 여러 가지 회로 소자: 즉, 검색 테이블(90), 배럴 시프터(94), 빠른 검색 테이블(102), 가산기(108), 단일/연속 멀티플렉서(78) 및 합산 멀티플렉서(104)가 도 4에서 단일의 2개의 코드 워드 빠른 검색 테이블(100)로 논리적으로 조합된다. 빠른 검색 테이블(100) 역시 처리되는 코드 워드의 타입과 독립적으로 코드 워드의 길이를 검출한다. 하기 테이블(테이블 2)은 제 1 배럴 시프터(60)의 디코딩 윈도우(66)의 워드 경계 태그 스트림을 나타낸다. 제 1 코드 워드의 길이는 디코딩되고, 테이블 2에서 합1로서 라벨된다. 두 코드 워드의 길이의 합은 디코딩되고, 테이블 2에서 합2로서 라벨된다. 적절한 합은 라인(105)상에 인가된 합 선택 조절 신호를 통해 조절 회로(80')에 의해 선택되고, 가산기(74)의 제 1 입력(76)에 출력된다.
테이블 2
상기 테이블에서, 제 1 코드 워드의 길이는 인터럽트되지 않은 일련의 하위 비트 후에 제 1 상위 비트에 의해 결정된다. 제 1 코드 워드의 동일한 길이에 대한 경우 각각은 제 2 워드의 길이에 대한 가능성의 최소한의 수로 확대된다. 제 2 코드 워드의 끝이 검색 테이블(100)에 의해 디코딩 윈도우(66)에서 발견되지 않는 경우, 오버플로우 비트는 검색 테이블(100)로부터 오버플로우 라인(150)을 통해 조절 회로(80)에 출력된다. 오버플로우 메카니즘은 디코딩 윈도우(66)을 2개의 최대 길이 코드 워드의 길이보다 더 좁게 한다. 이러한 설계 옵션은 매우 많은 처리량은 비트 스트림이 많은 단축 코드 워드을 포함하는 경우에 단지 충족된다는 사실과 일치한다. 제 1 코드 워드의 합(합 1)은 무조건적으로 출력하는 합 선택 출력(105)에서 발생된다. 제 1 및 제 2 코드 워드의 합(합 2)은 오버플로우의 경우 또는 조절 회로(80)로부터 합 선택 조절 신호의 조절 하에 합1의 값에 할당된다. 오버플로우의 경우, 라인(150)상에 인가된 오버플로우 비트는 제 2 코드 워드가 검출되지 않은 조절 회로(80')을 확인한다. 이어서, 조절 회로(80')는 합 선택 출력 라인(105)을 통해 합1을 선택한다. 이어서, 디코딩 윈도우(66)은 출력 라인(76)상의 합1에 의해 나타낸 바의 제 1 코드 워드의 길이로 시프트된다. 여기서, 제 2 코드 워드의 길이는 그의 길이가 출력 디코딩 윈도우(66)의 폭보다 적은 비트인 한 검출될 수 있다. 오버플로우를 다룸으로써, 빠른 검색 테이블(100)은 2개의 최대 길이 코드 워드의 합의 길이보다 더 좁은 디코딩 윈도우를 가질 수 있다. 이는 보다 다수의 코드 워드가 병렬로 처리될 때 역시 실현된다. 가변 길이 디코더가 많은 단축 코드 워드를 디코딩해야 하는 경우에만 매우 많은 처리량이 요구되기 때문에, 좁은 디코딩 윈도우를 수행하는 것은 실행할 수 있는 설계 옵션이다. 합 선택 출력(105)은 필요한 경우 연속 작동 모드 동안 단지 1개의 코드 워드를 선택하기 위해 사용될 수도 있다.
도 4에 나타낸 성능-최적화된 가변 길이 디코더는 상기 본 명세서에 기재한 고속 길이 디코딩 루프의 사용으로 달성되는 전파 지연의 극적인 감소로 인해, 도 3에 나타낸 가변 길이 디코더 및 Sun 등에 허여된 미국 특허 명세서 제 5,173,695 호에 기재된 가변 길이 디코더보다 훨씬 더 많은 처리량을 갖는다.
입력된 비트 스트림의 프리-태깅으로 인해, 빠른 검색 테이블(100)을 사용할 수 있다. 빠른 검색 테이블(100)은 코드 워드 타입들 간에 차별화되지 않기 때문에, DC 및 AC 계수 등의 상이한 타입의 코드 워드는 디코딩 처리에서 임의의 인터럽션 없이 및 완전히 처리량으로 처리될 수 있다.
도 5는 입력된 코드 워드의 전형적인 시퀀스에 대해 클록 주기당 처리된 코드 워드의 수를 나타내는 도면이다. 도 5는 불연속 코사인 변환 계수(DCT)의 4개의 블록을 포함하는 전형적인 데이터 스트림을 나타낸다. 도 3 또는 도 4의 가변 길이 디코더에 의해, 2개의 코드 워드는 입력된 비트 스트림에 존재하는 코드 워드 타입 및 이들이 발생하는 시퀀스와 무관하게 클록 주기당 처리된다. 도 3 또는 도 4의 가변 길이 디코더는 클록 주기당 보다 많은 코드 워드의 시퀀스를 처리하기 위해 구축될 수 있다.
병렬 처리는 제 1 내지 제 9 클록 주기로 사용된다. AC 계수뿐만 아니라 DC 계수는 이들의 디코딩 테이블(100)이 빠른이기 때문에 연속 코드 워드 디코딩 루프에서 함께 처리된다. 코드 워드(EOB)는 연속 코드 워드 디코딩 루프에서 처리되지만, EOB는 수식되지 않은 데이터 타입의 가능한 시퀀스가 시작되기 전에 매크로블록 내에 남아있는 코드 워드이다. 매크로 블록의 최단부의 클록 주기만이 증가되지 않은 처리량을 갖는다. 따라서, DCT 계수 블록 시퀀스는 본 발명의 가변 길이 디코더에 의해 단지 10 클록 주기로 처리된다.
도 6은 입력된 코드 워드의 동일한 전형적인 시퀀스에 대해 Sun 등의 미국 특허 제 5,173,695 호의 개시 내용에 따라 구성된 종래의 가변 길이 디코더를 사용하여 클록 주기당 처리된 코드 워드의 수를 나타내는 도면이다. 미국 특허 제 5,173,695호의 가변 길이 디코더는 도 6에 나타낸 바와 같이 클록 주기당 단지 1개의 코드 워드를 처리할 수 있다. 따라서, DCT 블록 시퀀스는 종래의 가변 길이 디코더에 의해 19 클록 주기로 처리된다.
본 출원과 동시 계류중인 특허 출원 명세서 PHA23.080에 기재된 가변 길이 디코더는 주어진 클록 주기로 가변 길이 디코더에 의해 처리될 특정 타입의 1개 이상의 코드 워드을 허용함으로써, 보다 낮은 클록 속도로 데이터 처리량을 증가시킨다. 상기 특허 출원은 DCT 계수 및 운동 벡터 등의 페이로드 데이터가 비트 스트림 내의 이들의 위치 및 부피의 견지에서 헤더 데이터에 의해 통상적으로 매우 잘 제한된다는 사실을 이용하는 가변 길이 디코더를 기재한다. 예를 들면, MPEG에서, 운동 벡터의 수는 운동 벡터가 전송되기 전에 공지된다. DCT 계수는 통상적으로 블록 내에서 조직되고, 블록의 수가 공지된다. 터미네이터라 칭하는 블록의 끝(EOB) 코드 워드의 DCT 계수 테이블의 일부이다. DCT 계수 및 운동 벡터는 디코딩 방법의 루팅에 현저하게 영향을 미치지 않고, 예측할 수 있다. 이러한 사실 및 DCT 계수 및 운동 벡터(데이터 타입으로 수식됨)가 다른 타입의 정보로부터 구별하기 용이한 긴 시퀀스로 전송된다는 사실은 상기 특허 출원에 기재된 것과 유사한 병렬 처리를 허용한다.
동일한 타입의 연속 코드 워드의 병렬 처리로 인해 증가된 처리량을 갖는 가변 길이 리코더라는 명칭의 상기 특허 명세서에서, 병렬로 처리될 수식된 데이터 타입은 단일 동작 모드로 처리되어야 하는 단일 데이터 타입에 의해 인터럽트된다. 불행하게도, 단일 타입 코드 워드는 수식된 연속 타입 코드 워드와 상이하게 처리되어야 하므로, 처리량 감소를 초래한다. 예를 들면, 상기 특허 출원에 기재된 4가지 경로의 연속 루프에서, AC 계수 등의 연속 코드 워드는 연속 AC 계수와 상이하게 인코딩되는 DC 계수 코드 워드로 시작하는 새로운 계수 블록의 시작점에서 인터럽트된다. 따라서, DC 계수는 병렬 처리를 위해 수식화되지 않고(즉, 이들 계수는 단일 코드 워드임), 따라서, 단일 코드 워드 디코딩 루프로 처리된다. 매시간 디코딩 방법은 연속 모드로부터 단일 모드로 스위치되고, 처리량은 감소한다. 4개 미만의 AC 계수가 이전 블록의 최종 클록 주기에서 처리되었을지 모른다는 사실에 의해 처리량은 추가로 감소한다. 이는 AC 계수의 수가 4로 분할되로록 보장되지 않고, 따라서 EOB 코드 워드를 포함하는 블록의 단부에서 나머지 AC 계수의 수는 1 내지 4중 어느 것일 수 있기 때문이다. 따라서, 클록 주기당 처리량은 설계에 사용된 경로 수보다 더 적다.
도 7은 동시 계류중인 특허 출원의 내용에 따라 구성된 가변 길이 디코더를 사용하여 입력된 코드 워드의 동일한 전형적인 시퀀스에 대해 클록 주기당 처리된 코드 워드의 수를 나타내는 도면이다. 도 7에서, 클록 주기당 최대 2개의 코드 워드가 2개의 병렬 처리 경로를 갖는 가변 길이 디코더에 대해 처리된다.
병렬 처리는 DC 계수가 AC 계수와 상이하게 디코딩되기 때문에 제 1 클록 주기에 사용되지 않는다. 보다 상세하게 말하자면, DC 계수는 클록 주기당 1개의 DC 계수의 처리량을 갖는 단일 작동 모드로 처리된다. 제 2 클록 주기에서, 계수(AC1 및 AC2)는 연속(수식화) 모드이기 때문에 병렬로 처리된다. 마찬가지로, 제 3 클록 주기에서, 계수(AC3 및 AC4)는 병렬로 처리된다. 제 4 클록 주기에서, EOB 기호는 연속 동작 모드로 처리되지만, 새로운 코드 워드 타입, 즉 DC 계수로의 전송으로 인해, 단지 1개의 코드 워드가 제 4 클록 주기에 처리된다. 마찬가지로, 다른 DCT 블록에서, 단지 제 6, 제 8, 제 11 및 제 12 클록 주기에서 AC 계수가 증가된 처리량으로 처리된다. 모든 다른 클록 주기에서, 그 처리량은 2개의 이유중 하나 때문에 증가되지 않는다: 즉, 병렬 처리는 새로운 코드 워드 타입(X)으로의 전송으로 인해 인터럽트되거나, 또는 코드 워드가 연속 루프(0)로 처리되지 않기 때문에 병렬 처리가 적용되지 않는다. DCT 계수 블록은 본 발명의 가변 길이 디코더에 대한 10회의 클록 주기에 비해 13회의 클록 주기의 가변 길이 디코더에 의해 처리된다.
상기 특허 명세서에 기재된 가변 길이 디코더에 비해 본 발명의 가변 길이 디코더의 장점은 다중-워드 빠른 검색 테이블을 사용하는 워드 길이 디코딩 동작이 훨씬 더 용이하고 신속하기 때문에 다중-워드 빠른 검색 테이블(100)을 사용함으로써 제공되는 증가된 기능성에 기초한다. 또한, 코드 워드 시퀀스 내의 보다 수식화된 코드 워드가 클록 주기당 보다 많은 처리량으로 처리되기 때문에 높은 병렬도가 달성된다. 따라서, 코드 워드의 워드 길이 디코딩 루프 및 병렬 처리에서 감소된 전파 지연은 이미 공지된 가변 길이 디코더에 비해 본 발명의 성능을 증가시킨다.
본 발명의 바람직한 실시예가 위에서 상세히 설명되었지만, 본 명세서의 기본적인 진보성에 관해 많은 수정과 또는 변형이 본 발명의 기술적 사상과 범위에 이탈함이 없이 당업자에게 구현될 수 있음을 본 명세서에서 교지하였음을 명백하게 이해하여야 할 것이다.
내용 없음.
Claims (10)
- 연속적이며 단일의 코드 워드를 포함하는 입력 스트림을 디코딩하기 위한 가변 길이 디코더에 있어서,입력 비트 스트림을 수신하고, 표시된 코드 워드 경계와 함께 태그형 비트 스트림 및 상기 태그형 비트 스트림과 적당한 시기에 정렬된 버스형 비트 스트림을 출력하기 위한 태깅 수단;상기 태그형 비트 스트림을 수신하고, 그의 출력에서 디코딩될 1개 이상의 코드 워드에 대해 표시된 코드 워드 경계를 포함하는 태그 스트림 비트의 시퀀스를 포함하는 제 1 태그 디코딩 윈도우를 제공하는 제 1 입력 수단;상기 버스형 비트 스트림을 수신하고, 그의 출력에서 디코딩될 1개 이상의 코드 워드를 포함하는 버스형 비트 스트림 비트의 시퀀스를 포함하는 제 1 비트 스트림 디코딩 윈도우를 제공하는 제 2 입력 수단;제 1 태그 디코딩 윈도우 내의 1개 이상의 코드 워드의 조합된 길이를 연산하기 위한 워드 길이 연산 수단; 및제 1 클록 주기 동안 제 1 비트 스트림 디코딩 윈도우 내의 1개 이상의 연속적인 코드 워드의 값들을 병렬로 측정하고, 제 2 클록 주기 동안 상기 제 1 비트 스트림 디코딩 윈도우 내의 단일 코드 워드의 값을 측정하기 위한 코드 워드 값 디코딩 수단을 포함하는 가변 길이 디코더.
- 제 1 항에 있어서, 상기 태깅 수단은:입력된 비트 스트림을 수신하고, 워드 경계 태그 스트림을 출력하는 트리 탐색 상태 기계;일련의 비트 스트림으로부터 상기 워드 경계 태그 스트림을 병렬 비트 스트림으로 변환시키는 제 1 포맷 변환기; 및버퍼 조절 신호의 제 1 값에 반응하여 상기 태그형 비트 스트림을 저장하고, 상기 버퍼 조절 신호의 제 2 값에 반응하여 상기 태그형 비트 스트림을 출력하는 태그 버퍼를 포함하는 가변 길이 디코더.
- 제 2 항에 있어서, 상기 태깅 수단은:입력된 비트 스트림을 수신하고, 입력된 비트 스트림과 상기 워드 경계 태그 스트림간의 시간 지연에 의해 지연된 지연 균등화된 비트 스트림을 출력하므로, 상기 지연 균등화된 비트 스트림이 상기 워드 경계 태그 스트림과 적당한 시기에 정렬되는 지연 이퀄라이저;일련의 비트 스트림으로부터 상기 지연 균등화된 비트 스트림을 병렬 비트 스트림으로 변환시키고, 상기 버스형 비트 스트림을 생산하기 위한 제 2 포맷 변환기; 및상기 버퍼 조절 신호의 상기 제 1 값에 반응하여 상기 버스형 비트 스트림을 저장하고, 상기 조절 신호의 제 2 값에 반응하여 상기 버스형 비트 스트림을 출력하는 속도 버퍼를 더 포함하는 가변 길이 디코더.
- 제 1 항에 있어서,디코딩된 코드 워드의 출력 스트림을 생성하기 위해 규정된 디코딩 프로토콜에 따라 가변 길이 디코더의 동작을 제어하는 제어 수단을 더 포함하는 가변 길이 디코더.
- 제 1 항에 있어서, 상기 입력된 비트 스트림은 디지탈 비디오 데이터 스트림이고;상기 단일 코드 워드는 상기 디지탈 비디오 데이터 스트림 내의 셋업 데이터를 포함하고;상기 연속 코드 워드는 상기 디지탈 비디오 데이터 스트림의 페이로드 데이터를 포함하는 가변 길이 디코더.
- 제 1 항에 있어서, 상기 워드 길이 연산 수단은 2개의 코드 워드에 대한 태그 엔트리를 내장하는, 상기 제 1 태그 디코딩 윈도우에 접속된 빠른의 2-워드 검색 테이블을 포함하는 가변 길이 디코더.
- 복수개의 연속적이며 단일의 코드 워드를 포함하는 입력된 비트 스트림을 디코딩하는 방법에 있어서,입력된 비트 스트림을 태그하고, 표시된 코드 워드 경계를 갖는 태그형 비트 스트림 및 상기 태그형 비트 스트림과 때맞춰 정렬된 버스형 비트 스트림을 출력하는 단계;상기 태그형 비트 스트림을 수신하고, 그의 출력에서 디코딩될 1개 이상의 코드 워드에 대한 표시된 코드 워드 경계를 포함하고 태그 스트림 비트의 시퀀스를 포함하는 제 1 태그 디코딩 윈도우를 제공하는 단계;상기 버스형 비트 스트림을 수신하고, 그의 출력에서 디코딩될 1개 이상의 코드 워드를 포함하는 버스형 비트 스트림 비트의 시퀀스를 포함하는 제 1 비트 스트림 디코딩 윈도우를 제공하는 단계;제 1 태그 디코딩 윈도우 내의 1개 이상의 코드 워드의 조합된 길이를 연산하는 단계; 및제 1 클록 주기 동안 상기 비트 스트림 디코딩 윈도우 내의 1개 이상의 연속적인 코드 워드의 값들을 병렬로 측정하고, 제 2 클록 주기 동안 상기 비트 스트림 디코딩 윈도우 내의 단일 코드 워드의 값을 측정하는 단계를 포함하는 디코딩 방법.
- 제 7 항에 있어서, 상기 연산 단계가 2개의 코드 워드에 대해 코드 워드의 타입과 독립적인 태그 워드 엔트리를 포함하는 2-워드 빠른 검색 테이블을 사용함으로써 수행되는 디코딩 방법.
- 제 7 항에 있어서, 상기 연산 단계는 상기 제 1 태그 디코딩 윈도우에 접속된 제 1 빠른 검색 테이블 및 상기 제 1 태그 디코딩 윈도우에 접속된 태그 배럴 시프터의 출력에 형성된 제 2 태그 디코딩 윈도우에 접속된 제 2 빠른 검색 테이블을 사용함으로써 수행되는 디코딩 방법.
- 제 7 항에 있어서, 상기 입력된 비트 스트림은 디지탈 비디오 데이터 스트림이고;상기 단일 코드 워드는 상기 디지탈 비디오 데이터 스트림 내의 셋업 데이터를 포함하고;상기 연속 코드 워드는 상기 디지탈 비디오 데이터 스트림 내의 페이로드 데이터를 포함하는 디코딩 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US580,405 | 1995-12-28 | ||
US08/580,405 US5668548A (en) | 1995-12-28 | 1995-12-28 | High performance variable length decoder with enhanced throughput due to tagging of the input bit stream and parallel processing of contiguous code words |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19980702675A true KR19980702675A (ko) | 1998-08-05 |
KR100462421B1 KR100462421B1 (ko) | 2005-06-16 |
Family
ID=24320971
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019970706081A KR100462421B1 (ko) | 1995-12-28 | 1996-12-05 | 가변길이디코더 |
Country Status (6)
Country | Link |
---|---|
US (1) | US5668548A (ko) |
EP (1) | EP0812495B1 (ko) |
JP (1) | JPH11501486A (ko) |
KR (1) | KR100462421B1 (ko) |
DE (1) | DE69621124T2 (ko) |
WO (1) | WO1997024810A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20160035553A (ko) * | 2014-09-22 | 2016-03-31 | 삼성디스플레이 주식회사 | 가변 길이 코딩된 입력을 디코딩하는 방법 및 시스템, 그리고 코드북을 변경하는 방법 |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR0178201B1 (ko) * | 1995-08-31 | 1999-05-01 | 배순훈 | 가변 길이 복호화 장치 |
US5835035A (en) * | 1995-12-28 | 1998-11-10 | Philips Electronics North America Corporation | High performance variable length decoder with two-word bit stream segmentation and related method |
US5808570A (en) * | 1996-06-28 | 1998-09-15 | Philips Electronics North America Corp. | Device and method for pair-match Huffman transcoding and high-performance variable length decoder with two-word bit stream segmentation which utilizes the same |
US5963260A (en) * | 1997-03-18 | 1999-10-05 | U.S. Philips Electronics North America Corporation | Macroblock-level partitioned HDTV video decoder and related method |
US5973627A (en) * | 1997-08-28 | 1999-10-26 | Philips Electronics North America Corporation | Variable length decoder with adaptive acceleration optimized by sub-grouping and cross-grouping the symbols having the highest probability of occurrence |
US6263023B1 (en) | 1998-10-15 | 2001-07-17 | International Business Machines Corporation | High definition television decoder |
JP2000132433A (ja) * | 1998-10-23 | 2000-05-12 | Matsushita Electric Ind Co Ltd | 可変長の電子データを管理する方法及び装置 |
US7213129B1 (en) * | 1999-08-30 | 2007-05-01 | Intel Corporation | Method and system for a two stage pipelined instruction decode and alignment using previous instruction length |
WO2001019052A2 (en) * | 1999-09-10 | 2001-03-15 | General Instrument Corporation | Method and apparatus for compressing scripting language content |
US6771824B1 (en) * | 1999-12-28 | 2004-08-03 | Lucent Technologies Inc. | Adaptive variable length decoding method |
US6445314B1 (en) * | 2000-03-01 | 2002-09-03 | Cisco Technology Inc. | System and method for the decoding of variable length codes |
MXPA03000418A (es) | 2000-07-13 | 2003-07-14 | Belo Company | Sistema y metodo para asociar informacion historica con datos sensoriales y distribucion de los mismos. |
EP1978110B1 (en) * | 2000-09-06 | 2010-05-26 | Transnetyx, Inc. | Computer-based method and system for screening genomic DNA |
US6636166B2 (en) * | 2001-05-31 | 2003-10-21 | Koninklijke Philips Electronics N.V. | Parallel communication based on balanced data-bit encoding |
WO2006033060A1 (en) * | 2004-09-20 | 2006-03-30 | Koninklijke Philips Electronics N.V. | Programmable data processor for a variable length encoder/decoder |
JP4829720B2 (ja) * | 2006-08-29 | 2011-12-07 | ルネサスエレクトロニクス株式会社 | 可変長符号復号装置 |
US8699344B2 (en) | 2010-12-15 | 2014-04-15 | At&T Intellectual Property I, L.P. | Method and apparatus for managing a degree of parallelism of streams |
US8587458B2 (en) | 2011-12-07 | 2013-11-19 | International Business Machines Corporation | Unpacking a variable number of data bits |
JP2021129143A (ja) | 2020-02-10 | 2021-09-02 | キオクシア株式会社 | デコード装置 |
US11575389B2 (en) * | 2020-12-08 | 2023-02-07 | Nxp Usa, Inc. | Multi-standard low-density parity check decoder |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5173695A (en) * | 1990-06-29 | 1992-12-22 | Bell Communications Research, Inc. | High-speed flexible variable-length-code decoder |
GB2260428B (en) * | 1991-10-11 | 1995-03-08 | Sony Broadcast & Communication | Data Formatter |
US5245338A (en) * | 1992-06-04 | 1993-09-14 | Bell Communications Research, Inc. | High-speed variable-length decoder |
US5363097A (en) * | 1992-09-14 | 1994-11-08 | Industrial Technology Research Institute | Direct sequential-bit variable length decoder |
EP0614317A3 (en) * | 1993-03-05 | 1995-01-25 | Sony Corp | Decoding video signals. |
EP0631440A3 (en) * | 1993-06-23 | 1995-02-22 | Daewoo Electronics Co Ltd | Device for the parallel decoding of image signals encoded with variable length. |
KR970002483B1 (ko) * | 1993-11-29 | 1997-03-05 | 대우전자 주식회사 | 고속의 가변길이 복호화장치 |
EP0665653B1 (en) * | 1994-01-28 | 2001-12-05 | Matsushita Electric Industrial Co., Ltd. | Apparatus and method for decoding variable-length code |
KR0152032B1 (ko) * | 1994-05-06 | 1998-10-15 | 김광호 | 영상신호를 위한 가변장복호기 |
-
1995
- 1995-12-28 US US08/580,405 patent/US5668548A/en not_active Expired - Lifetime
-
1996
- 1996-12-05 EP EP96939244A patent/EP0812495B1/en not_active Expired - Lifetime
- 1996-12-05 WO PCT/IB1996/001363 patent/WO1997024810A1/en active IP Right Grant
- 1996-12-05 JP JP9524132A patent/JPH11501486A/ja not_active Ceased
- 1996-12-05 KR KR1019970706081A patent/KR100462421B1/ko not_active IP Right Cessation
- 1996-12-05 DE DE69621124T patent/DE69621124T2/de not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20160035553A (ko) * | 2014-09-22 | 2016-03-31 | 삼성디스플레이 주식회사 | 가변 길이 코딩된 입력을 디코딩하는 방법 및 시스템, 그리고 코드북을 변경하는 방법 |
Also Published As
Publication number | Publication date |
---|---|
WO1997024810A1 (en) | 1997-07-10 |
KR100462421B1 (ko) | 2005-06-16 |
DE69621124T2 (de) | 2003-01-09 |
EP0812495A1 (en) | 1997-12-17 |
DE69621124D1 (de) | 2002-06-13 |
EP0812495B1 (en) | 2002-05-08 |
JPH11501486A (ja) | 1999-02-02 |
US5668548A (en) | 1997-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100462421B1 (ko) | 가변길이디코더 | |
US5963260A (en) | Macroblock-level partitioned HDTV video decoder and related method | |
KR100470251B1 (ko) | 가변길이디코더 | |
US5428356A (en) | Variable length code decoder utilizing a predetermined prioritized decoding arrangement | |
KR100748485B1 (ko) | 가변 길이 코드워드 디코더 및 가변 길이 코드워드 디코딩 방법 | |
US6043765A (en) | Method and apparatus for performing a parallel speculative Huffman decoding using both partial and full decoders | |
US5808570A (en) | Device and method for pair-match Huffman transcoding and high-performance variable length decoder with two-word bit stream segmentation which utilizes the same | |
US5663726A (en) | High speed variable-length decoder arrangement with reduced memory requirements for tag stream buffering | |
GB2321154A (en) | Reverse playback of MPEG video | |
US5666116A (en) | High speed variable-length decoder arrangement | |
US5940016A (en) | Syntax parser for a MPEG2 video decoder | |
US5757295A (en) | Variable length decoder with enhanced throughput due to parallel processing of contiguous code words of identical type | |
US5973627A (en) | Variable length decoder with adaptive acceleration optimized by sub-grouping and cross-grouping the symbols having the highest probability of occurrence | |
US5781135A (en) | High speed variable length code decoder | |
JPH07222164A (ja) | ディジタルビデオ・ビットストリームコーダ | |
US5835035A (en) | High performance variable length decoder with two-word bit stream segmentation and related method | |
JP3238571B2 (ja) | 可変長復号化装置 | |
US5657016A (en) | Variable length decoder with one of N length indicator | |
US5798717A (en) | One-hot overflow matrix with enhanced architecture and one-hot variable length decoder incorporating the same | |
WO1998000924A1 (en) | High performance variable length decoder with two-word bit stream segmentation and related method | |
KR0184405B1 (ko) | 가변길이 부호화 방법 및 장치 | |
Bakhmutsky | Novel architectures for implementing very high throughput variable-length decoders in HDTV systems | |
JP2000209100A (ja) | デコ―ダ及びデコ―ド方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20121121 Year of fee payment: 9 |
|
FPAY | Annual fee payment |
Payment date: 20131118 Year of fee payment: 10 |
|
FPAY | Annual fee payment |
Payment date: 20141120 Year of fee payment: 11 |
|
FPAY | Annual fee payment |
Payment date: 20151118 Year of fee payment: 12 |
|
EXPY | Expiration of term |