KR100470251B1 - 가변길이디코더 - Google Patents
가변길이디코더 Download PDFInfo
- Publication number
- KR100470251B1 KR100470251B1 KR1019970705912A KR19970705912A KR100470251B1 KR 100470251 B1 KR100470251 B1 KR 100470251B1 KR 1019970705912 A KR1019970705912 A KR 1019970705912A KR 19970705912 A KR19970705912 A KR 19970705912A KR 100470251 B1 KR100470251 B1 KR 100470251B1
- Authority
- KR
- South Korea
- Prior art keywords
- length
- value
- code words
- decoding
- word
- 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
-
- 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
- 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/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
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 값에 응답하여 상기 입력 회로로부터 수신된 2개 이상의 코드 워드들의 조합의 조합 길이를 결정하고, 상기 결정된 조합 길이를 나타내는 조합 길이 신호를 발생시키고, 상기 제어 신호의 제 2 값에 응답하여 상기 입력 회로로부터 수신된 개개의 코드 워드의 길이를 결정하며, 그리고 상기 개개의 코드 워드의 상기 결정된 길이를 나타내는 개별 워드 길이 신호를 발생시키기 위한 코드 워드 길이 디코딩 회로와; 상기 코드 워드 길이 디코딩 회로로부터 상기 조합 길이 신호 또는 상기 개별 워드 길이 신호를 수신하고, 이에 응답하여 상기 디코딩 윈도우를 시프트하여 하나 이상의 디코딩될 코드 워드를 추가적으로 포함하는 새로운 비트 시퀀스를 상기 입력 회로의 상기 출력에 제공하기 위한 계산 루프 회로와; 상기 제어 신호의 상기 제 1 값에 응답하여 상기 입력 회로에 의해 제공되는 복수의 코드 워드의 상기 조합의 값을 디코딩하고, 그리고 상기 제어 신호의 상기 제 2 값에 응답하여 상기 개별 코드 워드의 값을 디코딩하기 위한 코드 워드값 디코딩 회로와; 상기 제어 신호를 발생시키고 디코딩 프로토콜에 따라 상기 가변 길이 디코더의 동작을 제어하기 위한 제어 회로를 포함하는 디코더가 개시되어 있다. 개시된 실시예에서, 코드 워드들의 조합의 복수의 코드 워드는 허프만 인코딩된 비트 스트림에서 그 비트 길이가 소정 이하인 선택된 코드 워드 그룹의 일부분이다.
Description
본 발명은 데이터 전송 시스템에서 사용되는 가변 길이 디코더(variable length decoder)에 관한 것으로서, 특히 고화질 텔레비전(HDTV)용 디지털 영상 데이터를 디코딩하기 위한 가변 길이 디코더에 관한 것이다.
디지털 영상 데이터 전송 시스템에서, 영상 데이터는 수신기에 전송되기 전에 인코딩되고, 그 수신기는 인코딩된 디지털 영상 데이터를 디코딩한다. 그 후에, 상기 디코딩된 디지털 영상 데이터는 후속 신호 처리단으로 출력된다. 상기 시스템들의 메모리 효율 및 데이터 처리량을 증가시키기 위해, 통계적 압축 알고리즘(statistical compression algorithm)을 사용하여 디지털 영상 데이터를 압축하여 인코딩한다. 허프만 코딩 알고리즘(Huffman coding algorithm)은 이러한 압축 알고리즘의 한 가지이다. 데이터를 압축하면 일반적으로 고정길이 코드 워드(fixed length code word)가 아닌 가변 길이 코드 워드(variable length code word)의 분할된 데이터 스트림(data streams)이 생성된다. 가변 길이 디코더는 압축된 데이터 스트림을 포함하는 가변 길이 코드 워드를 디코딩한다.
가변 길이 코드 워드의 시퀀스를 디코딩하기 위한 방법이 현재 여러 가지가 제안되어 있다. 이 중에서 가장 보편적인 방법이 트리 탐색 알고리즘(tree searching algorithm)과 테이블 조사 기법(table look-up technique)이다.
트리 탐색 알고리즘은 코딩 트리(coding tree)를 통해 한 비트씩 탐색하여 입력 비트 스트림(bit stream)에서 각 코드 워드의 값과 종단(end)을 찾아낸다. 코딩 트리는 알려진 코드 워드의 잎들(leaves)을 포함한다. 디코딩 처리는 코딩 트리의 루트(root)에서 시작하여, 비트 스트림에서 연속된 각 비트를 디코딩한 값에 따라 코딩 트리의 상이한 가지(branches)까지 한 비트씩 계속된다. 결국에는 하나의 잎에 다다르고 코드 워드의 종단이 검출된다. 그리고 나서, 비트 스트림의 나머지 부분으로부터 코드 워드가 분할되고, 검출된 코드 워드의 값이 가변 길이 디코더로부터 조사 및 출력된다. 트리 탐색 알고리즘을 사용하여 비트 스트림을 디코딩하면 디코딩 동작이 심볼률(symbol rate)이 아닌 비트율로 실행되기 때문에, 고속 애플리케이션들의 경우 너무 느리다. 이런 관점에서, 비트율로 비트 스트림을 디코딩하면 HDTV 디코더의 피크 심볼률 요건들을 만족시키지 못한다.
가변 길이 디코더의 데이터 처리량을 증가시키기 위해, Sun 등에게 허여된 미국 특허 제5,173,695호에 개시된 것과 같은 테이블 조사 디코더가 개발되었다. 본원에서는 그의 내용을 참고로 편입한다. 상기 특허에 개시된 테이블 조사 디코더의 입력은 레이트 버퍼(rate buffer)의 출력에 연결되고, 상기 레이트 버퍼는 그 입력단에서 가변 워드 길이 인코딩된 비트 스트림(variable-word-length encoded bit stream)을 수신하고 비트 스트림에서의 최대 길이 코드와 동일한 길이를 갖는 비트 시퀀스들을 병렬 출력한다. 이들 시퀀스들은 판독되어 직렬 접속된 래치들로 들어간다. 상기 두 래치들의 직렬 접속된 시퀀스들은 배럴 시프터(barrel shifter)에 입력되고, 상기 시프터는 그 다중 비트 입력으로부터 테이블 조사 디코더에 슬라이딩 디코딩 윈도우(sliding decoding window)를 제공한다. 제어 신호는 각 코드 워드가 검출될 때마다 배럴 시프터의 디코딩 윈도우의 위치를 직접 시프트한다. 각 코드 워드를 검출하기 위해서, 디코딩 윈도우의 초기 비트들을 테이블 조사 디코더의 코드 워드 엔트리들과 비교한다. 코드 워드가 검출되면, 대응하는 코드 워드 길이가 누산기(accumulator)의 이전에 누산된 코드 워드 길이 값에 가산되어 디코딩 윈도우를 방금 디코딩된 워드의 비트 개수만큼 직접 시프트하는 제어 신호를 발생시킨다. 제 1 래치의 모든 비트가 디코딩되면, 버퍼의 다음 비트 시퀀스가 제 2 래치로 입력되고 제 2 래치의 이전의 비트 시퀀스는 제 1 래치로 전송된다. 그리고 나서, 디코딩 윈도우는 그 다음의 미-디코딩 시퀀스(undecoded Sequence)의 시작점으로 시프트된다. 디코딩 윈도우의 시프트와 코드 워드의 디코딩은 한 클록 사이클 동안에 수행할 수 있다. 결과적으로, 상기 테이블 조사 디코더는 비트 길이에 관계없이 매 클록 사이클마다 하나의 코드 워드를 디코딩할 수 있고, 이로써 이전의 트리 탐색 알고리즘 디코더에 비해 디코더의 데이터 처리량을 현저히 증가시킨다.
상술한 Sun 등에게 허여된 특허에 기술된 테이블 조사 디코더가 비트율이 아닌 심볼률로 디코딩할 수 있지만, 그 실제 동작 속도는 배럴 시프터(barrel shifter), 워드 길이 디코더, 가산기-누산기를 포함하는 피드백 루프를 통한 전파 지연(propagation delay)에 의해 제한된다. 최대 심볼 처리속도가 1억 코드 워드/초가 넘는 HDTV 애플리케이션들에서는, 단일의 가변 길이 디코더를 사용하여 전체 화상(picture)을 위의 심볼 처리속도로 디코딩하는 것은 비현실적이다. HDTV 시스템에서, 가변 길이 디코더(VLD)를 사용하여 화상 디스플레이 시간내에 레이트 버퍼로부터 전체 화상을 추출한다. VLD가 상기 최대 심볼 처리속도로 동작할 수 없는 경우에는, 한정된 화상 디스플레이 시간내에 처리할 수 있는 양을 초과하는 데이터를 수반하는 화상에 대해 VLD가 레이트 버퍼로부터 모든 화상을 추출할 수 없게 되어 디코더가 충돌(crash)을 일으킨다. 이는 화상 화질을 현저히 저하시킨다. 따라서, 이러한 문제를 발생시키지 않고 화상을 디코딩하기 위해서는 VLD가 최대 심볼 처리속도(PSR)로 데이터 스트림의 워드를 디코딩해야 한다.
MPEG("동영상 전문가 그룹") 프로토콜을 사용하는 HDTV 시스템에서는 초당 1억 코드 워드이상의 VLD 처리량이 요구된다. 상기 처리량을 갖는 VLD를 구현하는 것에 따른 기술적인 문제 외에도, 대용량 레이트 버퍼와의 고속 VLD 인터페이스는 현재의 메모리 기술에서는 대단히 고가이다. 가격이 중요한 경우에는 문제가 더욱 더 심각해지는데, 이는 비동기 DRAM과 같은 저속의 저가 메모리 소자가 아닌, SRAM이나 동기 DRAM과 같은 고속의 고가 메모리 소자를 사용하여야 하기 때문이다. 물론, HDTV 세트와 같은 가전용품에 있어서는 메모리 가격은 특히 중요한 사항이다.
현재의 구현에서, 일반적으로 HDTV 시스템은 다중 VLD를 사용하여 다중 처리 경로로 분할하여 화상의 상이한 부분들을 병렬로 디코딩한다. 이러한 구현에서는 VLD가 주요 병목지점(bottlenecks)의 하나이다. 화상의 각 분할부분은 대부분의 화상 정보를 포함할 수도 있으므로, 레이트 버퍼와 모든 VLD 사이에 전용의 다중 핑퐁 버퍼(multiple dedicated ping-pong buffer)가 요구되고, 이로 인해 시스템에 요구되는 비트 스트림 메모리의 양이 상당히 증가하게 된다. 예를 들어, 8개의 병렬 VLD를 갖는 분할형 디코딩 시스템은 8개의 핑퐁 버퍼를 요구하고 각 핑퐁 버퍼는 그 크기가 레이트 버퍼의 두 배이므로, 이 시스템에서 요구되는 버퍼 메모리의 양은 단일 VLD을 갖는 시스템에 비해 16배로 증가하게 된다.
HDTV 시스템에서, 디지털 영상 데이터는 디코딩될 코드 워드를 포함하는 허프만 인코딩된 비트 스트림(Huffman encoded bit stream)이다. 허프만 인코딩된 비트 스트림에서는, 발생 확률이 가장 높은 코드 워드는 최소의 비트 수를 갖고 발생 확률이 가장 낮은 코드 워드는 최대의 비트 수를 갖는다. 따라서, 허프만 인코딩된 비트 스트림에 포함되는 코드 워드는 그 비트 길이가 비트 스트림에서 상기 코드 워드의 발생 확률의 함수이다. 일반적으로, 화상 사이즈는 코드 워드 단위가 아닌 비트율이다. 한 클록 사이클당 하나의 코드 워드를 디코딩할 경우, VLD의 처리량이 최하로 되는 시나리오는 전체 화상이 최소의 코드 워드로 구성되는 경우이며, 이는 클록 사이클당 디코딩되는 비트의 평균수가 이러한 화상에서 최소이기 때문이다. 따라서, HDTV 시스템에서는 허프만 인코딩된 비트 스트림에서 최소의 코드 워드에 의해 그러한 높은 최대 심볼률이 달성된다.
상술한 바에 기초하여, 종래 기술의 상술한 단점을 극복할 수 있고 분할형 HDTV 디코더가 아닌 단일 VLD HDTV 디코더를 구현하는 데에 사용할 수 있는 가변 길이 디코더에 대한 필요성이 현재 존재한다는 것을 알 수 있다. 특히, 보다 낮은 클록 레이트에서 디지털 영상 데이터를 처리하기에 적합한 데이터 처리량을 제공할 수 있어 보다 저가인 저속 메모리를 사용할 수 있어 현실적으로 가변 길이 디코더를 더 쉽게 구현할 수 있도록 해주는 가변 길이 디코더에 대한 필요성이 현재 존재한다.
상술한 내용으로부터 명확한 바와 같이, 본 발명은 본 기술분야의 상기한 필요성을 가변 길이 디코더를 제공함으로써 충족되는데, 좀더 구체적으로 비트 길이가 소정의 수 이하인 허프만 인코딩된 비트 스트림에서 선택된 코드 워드 그룹에 대해 상기 선택된 그룹으로부터의 모든 가능한 코드 워드들의 조합을 추가 엔트리로서 포함하는 조합치 조사 테이블을 사용하여 상기 선택된 그룹으로부터 2개 이상의 코드 워드의 조합을 단일 클록 사이클동안에 디코딩함으로써 클록 사이클당 데이터 처리량을 적응적으로 증가시키는 가변 길이 디코더를 제공함으로써 충족된다. 이러한 보다 작은 코드 워드는 허프만 인코딩된 비트 스트림에서 통계적으로 가장 발생 빈도가 높은 코드 워드이므로, 본 발명의 VLD는 현재의 VLD에 비해 그 데이터 처리량이 현저히 높고, 그 클록 레이트는 대단히 낮다. 본 발명의 VLD는 상기 선택된 그룹내의 코드 워드를 디코딩함에 있어서의 적응적 가속능력으로 인하여 통계적 성능이 개선되는 이외에도, 보다 높은 평균적인 최소 코드 워드 길이를 보장하므로, 그에 의해 데이터 처리량을 저하시키지 않고서도 클록 레이트를 감소시킬 수 있다.
본 발명은 허프만 인코딩된 비트 스트림에서 비트 길이가 규정된 수 이하인 선택된 워드 그룹에 대하여 클록 사이클 당 처리량을 적응적으로 증가시키되, 상기 선택된 그룹으로부터의 모든 가능한 코드 워드의 조합들을 추가 엔트리로서 포함하는 조합값 조사 테이블을 사용하여 단일 클록 사이클동안 상기 선택된 그룹으로부터 2개 이상의 코드 워드의 조합들을 디코딩함으로써 증가시키는 가변 길이 디코더로서에 관한 것이다.
본 발명의 가변 길이 디코더는 인코딩된 비트 스트림을 수신하기 위한 입력 회로를 포함한다. 입력 회로는 디코딩될 코드 워드를 포함하는 병렬 비트 시퀀스를 출력한다. 코드 워드 길이 계산 회로는 제어 회로로부터 수신된 제어 신호의 제 1 값에 응답하여 상기 선택된 그룹으로부터의 코드 워드들의 조합들의 길이들을 결정(계산)하고, 상기 제어 회로로부터 수신된 상기 제어 신호의 제 2 값에 응답하여 개개의 코드 워드들 길이들을 디코딩한다.
피드백 회로는 코드 워드 길이 계산 회로로부터 워드 길이 정보를 입력 회로로 통신하여 상기 입력 회로가 디코딩될 코드 워드들을 포함하는 새로운 비트 시퀀스를 그의 출력에 제공할 수 있도록 한다. 가변 길이 디코더는 개별 코드 워드 및 코드 워드들의 조합들의 값들을 디코딩하기 위한 코드 워드값 디코딩 회로를 더 포함한다. 값 디코딩 회로는 상기 제어 신호의 제 1 값에 응답하여 선택된 그룹으로부터의 코드 워드들의 조합들을 디코딩하고, 상기 제어 회로로부터의 제어 신호의 제 2 값에 응답하여 개별 코드 워드들을 디코딩한다. 상기 제어 회로는 제어 신호를 발생시키고 현재 및 이전에 디코딩한 코드 워드들에 기초하여 디코딩 프로토콜에 따라 가변 길이 디코더의 동작을 제어한다.
본 발명의 목적, 특징, 및 장점은 다음의 상세한 설명과 첨부 도면에 의해 명확해질 것이다.
[도면의간단한설명]
도 1은 본 발명의 가변 길이 디코더의 특정 실시예의 블록도.
본 발명을 첨부 도면을 참조하여 이하 설명하고자 한다. 동일한 부분은 동일한 참조 번호를 사용하였다. 본 명세서에서는 특정 애플리케이션들에 대한 실시예를 참조하여 본 발명을 기술하지만, 본 발명은 이에 한정되는 것은 아니다. 본 기술 분야의 지식을 갖는 자는 본 발명의 범위 내에서 그리고 본 발명이 중요하게 이용 할 수 있는 그 밖의 분야에서 추가의 변경, 애플리케이션들, 및 실시예들을 구현할 수 있음을 생각해 낼 수 있다.
도1은 본 발명의 가변 길이 디코더의 특정 실시예의 블록도이다. 입력 비트 스트림(20)은 디코딩될 코드 워드를 포함한다. 본 실시예에서, 상기 입력 비트 스트림(20)은 허프만 인코딩된 비트 스트림이다. 상술한 바와 같이, 허프만 인코딩 된 비트 스트림에서, 발생 확률이 가장 높은 코드 워드는 최소의 비트 수를 갖고 발생 확률이 가장 낮은 코드 워드는 최대의 비트 수를 갖는다. 따라서, 허프만 인코딩된 비트 스트림에 포함되는 코드 워드는 그 비트 길이가 비트 스트림에서 상기 코드 워드의 발생 확률의 함수이다.
제 1 레지스터(22)는 32라인의 병렬 입력 비트라인(24)을 통해 제 1 배럴 시프터(30)로 연결되는데, 각 비트라인은 제 1 레지스터(22)의 비트에 대응한다. 제 2 레지스터(26)는 32비트의 병렬 입력 비트라인(28)을 통해 제 1 배럴 시프터(30)로 연결되는데, 각 비트라인은 제 2 레지스터(26)의 비트에 대응한다. 따라서, 전체 64비트의 병렬 입력 비트라인(24, 28)이 배럴 시프터(30)에 연결되고, 이로써 이에 대응하는 64개의 입력 비트 시퀀스를 배럴 시프터(30)에 제공한다. 배럴 시프터(30)는 시프트 입력(35)과 32비트의 병렬 출력 비트라인(34)을 갖는다. 본 기술 분야에 지식을 갖는 자는 본 발명의 정신과 범위를 벗어나지 않고 병렬 입력 비트라인(24, 28)과 병렬 출력 비트라인(34)에 다른 비트 수를 사용할 수 있다는 것을 생각해낼 수 있다. 본 실시예에서는, 병렬 입력 비트라인(24, 28)과 병렬 출력 비트라인(34)의 비트 수를 코드 워드의 최대 비트 개수(즉, 최대 코드 워드 길이)와 동일하게 설정하였다.
초기에, 라인(70)을 통해 인가된 데이터 요구 신호에 응답하여, 디코딩될 코드 워드를 나타내는 32비트 시퀀스가 입력 비트 스트림(20)으로부터 제 1 레지스터(22)로 로딩된다. 제 1 레지스터(22)에 비트들이 로딩되면, 제 1 레지스터(22)의 내용은 32비트의 병렬 비트라인들(24)을 통해 제 2 레지스터(26)로 전송되고, 입력 비트 스트림(20)으로부터 그 다음의 32비트 시퀀스가 제 1 레지스터(22)로 로딩된다. 따라서, 64 입력 비트들의 시퀀스가 배럴 시프터(30)에서 사용가능하다. 32비트의 병렬 출력 비트라인들(34)이 후술하는 방식으로 64비트의 병렬 입력 비트라인들(24, 28)로부터 선택되고, 그에 의해 디코딩 윈도우(34)가 제공된다. 디코딩 윈도우(34)는 라인(36)을 통해 배럴 시프터(30)의 시프트 입력(35)에 인가된 워드 포인터에 응답하여 사용가능한 입력 비트의 시퀀스를 따라 좌에서 우로 시프트된다. 디코딩 윈도우(34)는 이전의 클록 사이클동안 디코딩된 코드 워드의 길이(또는 조합 길이)에 따라서 사용가능한 입력 비트의 시퀀스를 따라 워드 포인터에 의해 시프트됨으로써, 현재 클록 사이클동안 처리할 다음 코드 워드의 시작점은 디코딩 윈도우(34)의 좌측 에지(left edge)에서 시작된다.
워드 포인터 값은 현재 클록 사이클동안 디코딩한 코드 워드의 디코딩된 길이 또는 조합 길이와 제 1 가산기(58)에 의해 합산된다. 가산기(58)의 출력은 레지스터(72)로 로딩되고, 레지스터(72)의 출력은 워드 포인터이다. [물론, 시스템 초기화 시에 레지스터(72)는 0으로 초기화된다.] 워드 포인터의 현재 값에 현재 클록 사이클 동안 디코딩된 코드 워드의 길이 또는 조합 길이를 합산한 값[이하, "루프합(loop sum)"]이 디코딩 윈도우(34)의 비트 폭(본 실시예의 경우, 32)을 초과하는 경우에, 가산기(58)는 오버플로우되고, 캐리 출력 "C"가 발생되어 데이터 요구 라인(70)에 인가되어 "데이터 재로딩(data reload)" 동작을 트리거(trigger)하는데, 여기서 제 1 레지스터(22)의 내용은 제 2 레지스터(26)로 전송되고 입력 비트 스트림(20)으로부터 다음의 32비트 시퀀스가 제 1 레지스터(22)로 로딩된다. 가산기(58)가 오버플로우되면, 가산기(58)의 출력값은 상기 "루프합"이 32를 초과하는 양(즉, 루프합 - 32)과 같게 된다. 따라서, 워드 포인터는 디코딩 윈도우(34)의 좌측 에지를 이 차값과 동일한 위치의 입력 비트로 시프트한다. 예를 들어, "루프합"이 40이라면 가산기의 출력은 8이고, 따라서 워드 포인터는 디코딩 윈도우(34)의 좌측 에지를 사용가능한 입력 비트의 8번째 비트로 시프트할 것이다.
디코딩 윈도우(34)는 길이 디코더(38), 조합 길이 디코더(40), 값 디코더(42), 조합값 디코더(44), 및 제어 회로(46)로 입력된다. 제어 회로(46)는 디코딩 윈도우(34) 내에서 디코딩될 코드 워드 또는 코드 워드 그룹을 검출하고, 길이 디코더(38, 40)와 값 디코더(42, 44)에 처리하는 코드 워드의 유형에 대한 정보를 제공한다. 길이 디코더(38)는 표준형 허프만 조사 테이블을 구비하여 디코딩 윈도우(34)내의 단일 코드 워드의 길이를 결정하고, 조합 길이 디코더(40)는 그 비트 길이가 소정 이하인 코드 워드들의 모든 가능한 조합에 대응하는 추가 엔트리를 포함하는 조사 테이블을 구비하여 그 비트 길이가 소정 이하인 선택된 코드 워드 그룹 내의 2개 이상의 코드 워드들의 조합 길이를 결정한다.
값 디코더(42)는 표준형 허프만 조사 테이블을 구비하여 출력 디코딩 윈도우(34)내의 단일 코드 워드의 값을 결정한다. 조합값 디코더(44)는 그 비트 길이가 소정 이하인 코드 워드들의 모든 가능한 조합에 대응하는 추가 엔트리를 포함하는 조사 테이블을 구비한다.
그 비트 길이가 소정 이하인 선택된 소형 코드 워드 그룹내의 2개 이상의 코드 워드들의 조합은 함께 디코딩되고, 이로써 상기 Sun 등의 특허에 개시된 종래의 테이블 조사 디코더와 비교하여, 심볼 처리속도보다 낮은 클록 레이트에서 가변 길이 디코더(10)의 데이터 처리량을 현저히 증가시킬 수 있다.
제어 회로(46)가 발생시키는 제어 신호는 제어 라인(48, 68)을 통해 상기 값 디코더(42, 44)에 인가된다. 제어 신호는 소정의 클록 사이클에서 디코딩될 코드 워드의 유형 및 개수에 관한 정보를 가지고 있다. 이러한 제어 신호를 후술하는 바와 같이 사용함으로써, 단일 코드 워드를 처리하기 위해 길이 디코더(38) 및 값 디코더(42)를 선택하고 선택된 그룹으로부터 2개 이상의 코드 워드의 조합을 처리하기 위해 조합 길이 디코더(40)를 선택하며, 더욱이 처리 중인 코드 워드를 디코딩하기 위해 적절한 조사 테이블을 선택한다.
길이 디코더(38)의 출력은 길이 멀티플렉서(50)에 제 1 멀티플렉서 입력(52)을 제공한다. 조합 길이 디코더(40)의 출력은 길이 멀티플렉서(50)에 제 2 멀티플렉서 입력(54)을 제공한다. 길이 멀티플렉서(50)의 출력은 가산기(58)에 제 1 입력(56)을 제공한다. 현재 처리하는 코드 워드가 단일 코드 워드인지 아니면 선택된 그룹으로부터의 2개 이상의 코드 워드들의 조합인지에 따라, 제 1 입력(56)은 라인(68)을 통해 수신된 제어 회로(46)로부터의 제어 신호에 응답하여 길이 멀티플렉서(50)에 의해 제 1 멀티플렉서 입력(52)과 제 2 멀티플렉서 입력(54) 사이에서 스위칭된다.
값 디코더(42)의 출력은 값 멀티플렉서(60)에 제 1 멀티플렉서 입력(62)을 제공한다. 조합값 디코더(44)의 출력은 값 멀티플렉서(60)에 제 2 멀티플렉서 입력(64)을 제공한다. 값 멀티플렉서(60)의 출력은 라인(66)을 통해 가변 길이 디코더(10)의 출력으로서 인가된다. 출력(66)은 라인(68)을 통해 수신된 제어 회로(46)로부터의 제어 신호에 응답하여 값 멀티플렉서(60)의 제 1 멀티플렉서 입력(62)과 제 2 멀티플렉서 입력(64) 사이에서 스위칭된다.
상술한 바와 같이, 제어 회로(46)는 디코딩 프로토콜에 따라서 현재 및 이전에 디코딩한 코드 워드에 기초하여 소정의 클록 사이클에서 디코딩될 코드 워드가 단일 코드 워드인지 아니면 2개 이상의 코드 워드의 조합인지를 판단한다. 이 점에 있어서, 제어 회로(46)는 허프만 인코딩된 비트 스트림에서 현재의 코드 워드가 규정된 수 이하인지, 즉 현재의 코드 워드(들)가 조합 디코딩하도록 선택된 코드 워드 그룹 내에 포함되는지를 판단한다. 소정의 클록 사이클 동안에 단일 코드 워드(즉, 상기 선택된 그룹내에 있지 않는 코드 워드)를 디코딩하는 경우에는, 제어 회로(46)는 라인(68)을 통해 인가된 제어 신호를 통해 길이 멀티플렉서(50)의 제 1 멀티플렉서 입력(52)을 선택하고 또한 값 멀티플렉서(60)의 제 1 멀티플렉서 입력(62)을 선택한다. 단일 코드 워드의 디코딩된 길이는 길이 멀티플렉서(50)로부터 출력되고, 단일 코드 워드의 디코딩된 값은 출력 라인(66)을 통해 가변 길이 디코더(10)로부터 출력된다. 소정의 클록 사이클 동안에 코드 워드들의 조합을 디코딩하는 경우에는, 제어 회로(46)는 라인(68)을 통해 인가된 제어 신호를 통해 길이 멀티플렉서(50)의 제 2 멀티플렉서 입력(54)을 선택하고 또한 값 멀티플렉서(60)의 제 2 멀티플렉서 입력(64)을 선택한다. 코드 워드들의 조합의 조합 길이는 길이 멀티플렉서(50)로부터 출력되고, 코드 워드 그룹의 값은 출력(66)에서 가변 길이 디코더(10)로부터 출력된다.
가산기(58)의 제 1 입력(56)은 가산기(58)와 레지스터(72)에 의해 사용되어 라인(36)을 통해 배럴 시프터(30)의 시프트 입력(35)으로 인가된 워드 포인터를 갱신한다. 워드 포인터는 또한 가산기(58)의 제 2 입력이다. 라인(36)을 통해 인가된 워드 포인터는 디코딩 윈도우(34)의 좌측 에지의 현재 위치를 나타낸다. 가산기(58)는 워드 포인터의 값을 마지막으로 디코딩된 코드 워드(또는 코드 워드들의 조합)의 길이(또는 조합 길이)에 가산한다. 라인(74)을 통해 인가되는 "루프 합(loop sum)" 결과는, 그 다음 클록 사이클에서 디코딩 윈도우(34)를 사용가능한 입력 비트의 병렬 시퀀스 상에서 시프트하여 디코딩 윈도우(34)의 좌측 에지가 디코딩될 다음 코드 워드를 형성하는 비트 시퀀스에서 시작하도록 만드는 데에 사용할 워드 포인터의 갱신된 값을 나타낸다. 라인(74)을 통해 인가된 루프합은 레지스터(72)에 저장된다. 레지스터(72)의 출력은 갱신된(현재의) 워드 포인터로서 라인(36)을 통해 배럴 시프터(30)의 시프트 입력(35)에 연결되고, 이로써 디코딩 윈도우(34)를 다음에 디코딩될 코드 워드로 시프트한다. 새로운 코드 워드가 디코딩될때, 디코딩 윈도우(34)의 위치는 매 클록 사이클마다 사용가능한 입력 비트들의 시퀀스에 대해 시프트된다.
본 실시예에서, 선택된 그룹내의 코드 워드들은 쌍(pair)으로 조합된다. 그러나, 물론 이것이 본 발명을 제한하지는 않는다. 일반적으로, M개의 심볼이 비트 길이가 특정의 비트수 N 이하인 선택된 코드 워드들의 그룹에 포함된 경우에, M개 심볼의 모든 가능한 조합에 대하여 조합 조사 테이블에 엔트리가 추가된다. 따라서, 허프만 테이블에 M2개의 엔트리가 추가된다. 상기 N이 커질수록, M도 커진다. M이 커짐에 따라서, 조합 길이 디코더(40) 및 조합값 디코더(44)의 조사 테이블에 추가적인 엔트리들(디코딩 조합들)이 필요하게 된다. 상기 N이 커질수록, M도 커지게 된다. 그러나, 가변 길이 디코더의 속도는 N이 증가함에 따라 빨라지는데, 이는 클록 사이클당 평균적으로 더 많은 코드 워드가 처리되기 때문이다.
허프만 인코딩된 비트 스트림에서 선택된 코드 워드 그룹을 처리하는 데 있어서 병렬 방식을 적용함으로써, 본 발명의 가변 길이 디코더(10)는 허프만 인코딩 된 비트 스트림의 소형 코드 워드의 처리를 가속할 수 있다. 입력 비트 스트림(20)에서 소형 코드 워드가 많이 발생하게 되면, 특정 화상에 대해 최대 코드 워드(심볼) 처리속도가 증가하게 되고, 이로써 가변 길이 디코더(10)가 필요로 하는 클록의 주파수가 증가하게 된다. 종래의 허프만 조사 테이블에 엔트리를 추가적으로 더해줌으로써, 한 클록 사이클 동안에 2개 이상의 소형 코드 워드를 처리하는 것이 가능해진다. 소형 코드 워드들을 함께 처리함으로써, 감소되는 클록 레이트가 필요하게 되고 데이터 처리량도 증가하게 된다.
예시 목적으로, 본 발명을 MPEG-2 메인 프로파일, 고레벨 HDTV 디코더 애플리케이션들에 적용하였다. 이러한 애플리케이션들에서, 최대 지원가능한 수평 해상도(H)는 1920픽셀이고, 최대 지원가능한 수직 해상도(V)는 1080픽셀이다. 비계수 데이터 오버헤드(OVHD)는 0.05이다. 이러한 정보를 사용하여, 화상당 처리 가능한 심볼(즉, 코드 워드)의 최대 개수(MNSP)는 다음의 식
[식 1]
MNSP = 1.5*H*V/(1-OVHD) = 3,274,105 (심볼)
에 따라 계산한다.
상기 식 1에서, 심볼 계수에는 색채 정보가 포함되기 때문에 색채정보를 고려하여 샘플의 전체 계수에 1.5를 곱연산하였다. 오버헤드, 즉 헤더 정보를 고려하여 MNSP를 (1-OVHD)로 나누었다. 입력 비트 스트림(20)에서 데이터의 압축률이 낮은 경우에는, 심볼의 개수가 샘플의 개수에 근접하거나 오히려 이를 초과할 수도 있다.
극단적인 경우에, 처리할 최대 화상은 레이트 버퍼(도시되지 않음)의 전체 사이즈를 차지한다. 비트의 최소 평균 심볼길이(LMIN)는 레이트 버퍼(도시되지 않음)의 사이즈(B)와 MNSP의 함수이다. MPEG-2 메인 프로파일, 고레벨 HDTV 디코더의 경우, 레이트 버퍼의 사이즈(B)는 9,781,248개의 심볼들이다. 따라서, LMIN은 다음의 식
[식 2]
LMIN = B/MNSP = (9,781,248)/(3,274,105) = 2.99 (비트/심볼)
에 따라 계산할 수 있다.
가변 길이 디코더(10)의 최대 심볼 처리속도(PSR)는 이 극단적인 경우에 매 초당 처리해야 하는 최대 심볼 개수에 대응한다. PSR은 MNSP, 및 매초당 처리하는 화상의 개수를 특정하는 프레임율(F)의 함수이다. MPEG-2 애플리케이션들에서, F는 30 (화상/초)이다. 따라서, PSR은 다음의 식
[식 3]
PSR = MNSP*F = (3,274,105)*(30) = 98,223,150 (심볼/초)
에 따라 계산할 수 있다.
Sun 등의 미국 특허 제5,173,695호에 개시된 가변 길이 디코더는 PSR보다 높은 클록 레이트에서 동작할 수 있어야 한다. 그렇지 않은 경우에는, 가변 길이 디코더는 화상 디스플레이 시간 동안에 전체 화상을 디코딩하지 못할 수도 있다. 현재의 기술을 사용해서는 98 MHz 이상의 클록 레이트를 얻는 것이 어렵다.
본 발명은 비트 길이가 가장 짧은 이산 코사인 변환(DCT) 계수의 소그룹에 대하여 병렬 방식을 선택적으로 적용함으로써 MPEG-2 메인 프로파일, 고레벨 HDTV 디코더에서의 높은 PSR로 인해 야기되는 문제를 해결한다. 본 발명의 디코더(10)는 높은 LMIN을 보장하는데, 이는 PSR을 보다 낮춘다.
DCT 계수용 허프만 조사 테이블은 발생 확률이 가장 높은 심볼에서 시작한다. 발생 확률이 가장 높은 심볼은 그 비트 길이가 가장 짧다. 허프만 조사 테이블의 시작 부분에서는, 분기 가능성의 회수가 제한됨에 따라 코드 워드의 비트 길이가 급격히 증가한다. 따라서, 특정의 비트 길이 N이 작은 경우에는 동일한 길이를 갖는 코드 워드의 개수가 대단히 제한되고, 따라서 N을 작게 유지한다면 비트 길이가 N이하인 심볼의 개수는 많을 수가 없다.
허프만 조사 테이블의 시작 부분에서 M개의 심볼로 구성된 심볼 그룹내의 각 코드 워드 또는 심볼의 길이가 상기 특정의 비트 길이 N을 초과하지 않는 경우에는, 상기 M개의 심볼은 동일한 클록 사이클에서 같은 그룹내의 다른 심볼들과 함께 조합 처리된다. 조합 심볼쌍의 전체 개수가 M2으로 제한되어 있으므로, 상기 조합 심볼쌍은 허프만 조사 테이블에 신규 엔트리로서 추가된다. 추가 엔트리의 개수는 N에 따라 스케일링된다. N이 작은 경우에는 M도 상대적으로 작다.
통계적으로, 본 발명의 개시에 따른 허프만 조사 테이블에 추가 트리를 첨가함으로써 가변 길이 디코더의 성능을 현저히 증가시킬 수 있는데, 이는 모든 고확률 계수(비트 길이가 작은 코드 워드)에 대한 처리량을 두 배로 만들 수 있기 때문이다.
MPEG-2에서, 최소의 DCT 계수는 그 길이가 2비트이다. 허프만 조사 테이블은 다음과 같이 2비트 이상의 길이를 갖는 코드 워드 엔트리를 갖는다: 2, 3, 4, 5, ...., N, N+1, N+2, N+3, .... . 비트 길이가 N이하인 DCT 계수로 구성되는 M개의 심볼을 서로 그룹화한다. 상기 그룹에서 어떠한 조합도 98,223,150 (코드 워드/초)만큼 높은 PSR을 만들지는 못한다. 전체 화상에 대하여 비트 길이가 2비트인 코드 워드로만 코드 워드들의 조합을 구성하는 것은 최소 평균 비트 길이가 2.99 비트 이상인 사실을 감안할 때 불가능하다. 비트 길이가 3비트인 코드 워드로만 이루어진 코드 워드들의 조합에 대하여 PSR이 가장 많이 감소하는데, 이는 비트 길이가 3비트인 모든 코드 워드들이 쌍으로 조합되어 두 배의 처리량을 나타낼 것이기 때문이다. M개의 심볼들의 그룹내의 모든 다른 조합들은 최소 평균 비트 길이(LMIN)를 증가시킬 것이고, 이는 MNSP를 감소시키며, 따라서 PSR은 감소하고 클록 사이클당 데이터 처리량은 증가하게 된다.
이 실시예에서 최소 비트 길이를 이루는 조합은 그룹 M의 최단 심볼과 다음 그룹의 최단 심볼의 조합이다. 상기 다음 그룹은 비트 길이가 N+1, N+2, ......인 심볼로 구성된 그룹을 포함한다. 그룹 M의 최단 심볼과 다음 그룹의 최단 심볼만을 조합함으로써, LMIN의 최소값, 따라서 PSR이 가장 작게 감소하는 결과를 얻을 수 있다. 예를 들어, 입력 비트 스트림(20)에서 코드 워드의 길이가 시퀀스 2, N+1, 2, N+1, 2, N+1, ......와 같이 나타나는 경우에는, 심볼당 LMIN은 다음의 식
[식 4]
LMIN = (2+N+1)/2
에 의해 계산할 수 있다.
상기 식 4에서, 비트 길이가 2와 (N+1)인 심볼은 2클록 사이클에 처리된다. 따라서, 1클록 사이클당 LMIN을 얻기 위해서는 합 (2+N+1)을 2로 나누어야 한다.
레이트 버퍼에 적합할 수 있는 이러한 심볼의 최대 개수, 즉 MNSP는 다음의 식
[식 5]
MNSP = B/LMIN = 2*B/(2+N+1)
에 의해 계산할 수 있다.
이 화상을 최대 처리량으로 처리하기 위해 필요한 최소 클록 레이트(즉, PSR)는 다음의 식
[식 6]
PSR = 클록 레이트 = (2B/(2+N+1))*F
에 의해 계산할 수 있다.
실용적인 관점에서 기술하기 위해, MPEG-2 메인 프로파일, 고레벨 HDTV 디코더에서 N=6, N=5, N=4, F=30(화상/초), B=9,781,248의 경우에 대하여 PSR을 계산한다. 상술한 바와 같이, Sun 등의 특허에 개시된 것과 같은 종래의 가변 길이 디코더는 약 98.223 MHz의 클록 레이트를 필요로 한다. N=6의 경우, 본 발명의 가변 길이 디코더에서 필요한 클록 레이트는 65.208 MHz로서 약 33.61%가 감소되었다. N=5의 경우, 본 발명의 가변 길이 디코더에서 필요한 클록 레이트는 73.359 MHz로서 약 25.31%가 감소되었다. N=4의 경우, 본 발명의 가변 길이 디코더에서 필요한 클록 레이트는 83.839 MHz로서 약 14.64%가 감소되었다.
앞의 예에서는 최고확률의 가속 조합(the most probable accelerated combinations)이 발생하지 않았다고 가정하였고, 이는 최악의 화상인 경우에 해당한다. 통계적으로, 본 발명의 가변 길이 디코더(10)를 사용하였을 때의 성능상의 실제 이득은 이보다는 훨씬 높다. 처리 클록 레이트를 이와 같이 현저히 감소시킴으로써 본 발명의 개시된 바에 따라 구성된 가변 길이 디코더를 VLSI로 구현하는 것이 실현가능성을 현저히 높일 수 있다.
본 명세서의 기재 사항은 특정된 내용을 많이 포함하고 있지만, 이는 본 발명의 범위를 제한하는 것이 아니라 단지 본 발명의 양호한 실시예를 나타내는 것에 불과하다. 예를 들어, 함께 심사중인 M. Barhmutsky 등의 특허출원 "원핫(One-Hot) 가변 길이 디코더"에 개시된 가변 길이 디코더도 본 발명의 개시된 내용을 사용함으로써 그 성능을 현저히 향상시킬 수 있다. 또한, DCT 계수만이 아니라 여러 유형의 코드 워드를 조합함으로써 훌륭한 결과를 얻을 수 있다. 예를 들어, 움직임 벡터를 나타내는 코드 워드를 본 발명의 내용에 맞게 조합할 수 있다.
본 명세서에는 본 발명의 양호한 실시예를 상세히 기술하였지만, 본 기술 분야의 지식을 갖는 자는 본 발명의 기본 발명 개념에서 생각해 내는 여러 가지 변경 및 수정들도 부첨된 특허 청구의 범위에 의해 정해지는 바와 같이 본 발명의 정신과 범위 내에 있음을 알 수 있을 것이다.
Claims (14)
- 인코딩된 입력 비트 스트림을 디코딩하기 위한 가변 길이 디코더(variable length decoder)에 있어서,상기 입력 비트 스트림을 수신하고, 디코딩될 하나 이상의 코드 워드들을 포함하는 비트들의 시퀀스를 포함하는 디코딩 윈도우(decoding window)를 그의 출력에 제공하기 위한 입력 수단과;제어 신호의 제 1 값에 응답하여 상기 입력 수단으로부터 수신된 2개 이상의 코드 워드들의 조합의 조합 길이를 결정하여 상기 결정된 조합 길이를 나타내는 조합 길이 신호를 발생시키고, 상기 제어 신호의 제 2 값에 응답하여 상기 입력 수단으로부터 수신된 개별 코드 워드의 길이를 결정하여 상기 개별 코드 워드의 상기 결정된 길이를 나타내는 개별 워드 길이 신호를 발생시키기 위한 코드 워드 길이 디코딩 수단과;상기 코드 워드 길이 디코딩 수단으로부터 상기 조합 길이 신호 또는 상기 개별 워드 길이 신호를 수신하고, 이에 응답하여 상기 디코딩 윈도우를 시프트하여 하나 이상의 디코딩될 추가 코드 워드들을 포함하는 비트들의 새로운 시퀀스를 상기 입력 수단의 상기 출력에 제공하기 위한 계산 루프 수단(computation loop means)과;상기 제어 신호의 상기 제 1 값에 응답하여 상기 입력 수단에 의해 제공되는 2개 이상의 코드 워드들의 상기 조합값을 디코딩하고, 상기 제어 신호의 상기 제 2 값에 응답하여 상기 개별 코드 워드값을 디코딩하기 위한 코드 워드값 디코딩 수단과;상기 제어 신호를 발생시키고, 디코딩 프로토콜에 따라 상기 가변 길이 디코더의 동작을 제어하기 위한 제어 수단을 포함하는, 가변 길이 디코더.
- 제 1 항에 있어서,상기 코드 워드 길이 계산 수단은 상기 입력 수단으로부터 수신된 2개 이상의 코드 워드들의 상기 조합의 조합 길이를 결정하기 위한 조합 워드 길이 디코더와, 상기 입력 수단으로부터 수신된 상기 개별 코드 워드의 길이를 결정하기 위한 개별 워드 길이 디코더를 포함하는, 가변 길이 디코더.
- 제 2 항에 있어서,상기 코드 워드들의 조합의 상기 2개 이상의 코드 워드들은 상기 입력 비트 스트림에서의 코드 워드들의 선택된 그룹의 일부분이며, 상기 입력 비트 스트림에서의 코드 워드들의 길이는 규정된 비트 수 이하인 가변 길이 디코더.
- 제 3 항에 있어서,상기 코드 워드들의 선택된 그룹의 모든 가능한 코드 워드들의 조합들의 조합 길이들은 상기 조합 워드 길이 디코더내의 조사 테이블(look-up table)에 엔트리들(entries)로서 저장되는, 가변 길이 디코더.
- 제 4 항에 있어서,상기 코드 워드값 디코딩 수단은 상기 개별 코드 워드의 값을 디코딩하기 위한 개별 워드값 디코더와, 상기 2개 이상의 코드 워드들의 상기 조합의 값을 디코딩하기 위한 조합값 디코더를 포함하는, 가변 길이 디코더.
- 제 5 항에 있어서,상기 코드 워드들의 선택된 그룹의 모든 가능한 코드 워드들의 조합들의 조합값은 상기 조합 워드값 디코더내의 조사 테이블에 엔트리로서 저장되는, 가변 길이 디코더.
- 제 6 항에 있어서,상기 계산 루프 수단은:제 1 입력이 상기 개별 워드 길이 신호에 연결되어 있고 제 2 입력이 상기 조합 워드 길이 신호에 연결되어 있는 멀티플렉서로서, 상기 제어 신호의 상기 제 1 값에 응답하여 상기 멀티플렉서의 출력으로서 상기 개별 워드 길이 신호가 선택되고 상기 제어 신호의 상기 제 2 값에 응답하여 상기 멀티플렉서의 출력으로서 상기 조합 워드 길이 신호가 선택되는, 상기 멀티플렉서와;상기 입력 수단의 상기 디코딩 윈도우를 시프트하기 위한 워드 포인터를 포함하는 가산기로서, 상기 멀티플렉서의 상기 출력에 연결된 제 1 입력 및 상기 가산기의 출력에 연결된 제 2 입력을 구비하는 상기 가산기를 포함하는, 가변 길이 디코더.
- 제 7 항에 있어서,상기 가산기는 상기 가산기의 오버플로우가 발생하는 경우에 상기 입력 비트 스트림으로부터 새로운 비트들의 시퀀스가 상기 입력 수단으로 로딩되도록 요구하기 위한 캐리 출력(carry output)을 발생시키는, 가변 길이 디코더.
- 제 8 항에 있어서,상기 제어 수단은 상기 디코딩 프로토콜에 따라 상기 가변 길이 디코더의 동작을 제어하기 위한 상태 머신(state machine) 및 연관된 논리 회로를 포함하는, 가변 길이 디코더.
- 제 9 항에 있어서,상기 제어 수단은, 상기 디코딩 프로토콜에 따라 이전과 현재에(previously and currently) 디코딩된 코드 워드들에 기초하여 상기 코드 워드 길이 디코딩 수단과 상기 코드 워드값 디코딩 수단에 의해 처리될 다음 코드 워드들의 유형과 갯수를 결정하고, 상기 결정에 응답하여 상기 제어 신호를 발생시키고, 상기 결정에 응답하여 상기 코드 워드 길이 디코딩 수단 및 상기 코드 워드값 디코딩 수단내의 적절한 조사 테이블들을 선택하기 위한 추가 제어 신호를 발생시키는, 가변 길이 디코더.
- 입력 비트 스트림을 적응적으로 가속하면서 처리하기 위한 방법에 있어서:상기 입력 비트 스트림을 수신하고, 디코딩될 하나 이상의 코드 워드들을 포함하는 비트들의 시퀀스를 포함하는 디코딩 윈도우를 제공하는 단계와;제어 신호의 제 1 값에 응답하여 상기 디코딩 윈도우의 2개 이상의 코드 워드들의 조합의 조합 길이를 결정하여 상기 결정된 조합 길이를 나타내는 조합 길이 신호를 발생시키고, 상기 제어 신호의 제 2 값에 응답하여 상기 디코딩 윈도우의 개별 코드 워드의 길이를 결정하여 상기 개별 코드 워드의 상기 결정된 길이를 나타내는 개별 워드 길이 신호를 발생시키는 단계와;디코딩될 하나 이상의 추가 코드 워드들을 포함하는 비트들의 새로운 시퀀스를 상기 입력 수단의 상기 출력에 제공하기 위하여, 상기 조합 길이 신호 또는 상기 개별 워드 길이 신호에 응답하여 상기 디코딩 윈도우를 시프트하는 단계와;상기 제어 신호의 상기 제 1 값에 응답하여 상기 디코딩 윈도우내의 2개 이상의 코드 워드들의 상기 조합의 값들을 디코딩하고, 상기 제어 신호의 상기 제 2 값에 응답하여 상기 개별 코드 워드의 값을 디코딩하는 단계를 포함하는, 입력 비트 스트림 처리 방법.
- 제 11 항에 있어서,상기 코드 워드들의 조합의 상기 2개 이상의 코드 워드들은 상기 입력 비트 스트림에서의 코드 워드들의 선택된 그룹의 일부분이며, 상기 입력 비트 스트림에서의 상기 코드 워드들의 길이들은 규정된 비트들의 수 이하인, 입력 비트 스트림 처리 방법.
- 제 12 항에 있어서,상기 코드 워드들의 선택된 그룹의 모든 가능한 코드 워드들의 조합들의 조합 길이들은 상기 결정 단계를 수행하는데 사용되는 조합 워드 길이 디코더내의 조사 테이블에 엔트리들로서 저장되는, 입력 비트 스트림 처리 방법.
- 제 13 항에 있어서,상기 코드 워드들의 선택된 그룹의 모든 가능한 코드 워드들의 조합들의 조합값들은 상기 결정 단계를 수행하는데 사용되는 조사 테이블내의 엔트리들로서 저장되는, 입력 비트 스트림 처리 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/580,407 US5650905A (en) | 1995-12-28 | 1995-12-28 | Variable length decoder with adaptive acceleration in processing of Huffman encoded bit streams |
US580,407 | 1995-12-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19980702512A KR19980702512A (ko) | 1998-07-15 |
KR100470251B1 true KR100470251B1 (ko) | 2005-05-27 |
Family
ID=24320983
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019970705912A KR100470251B1 (ko) | 1995-12-28 | 1996-12-10 | 가변길이디코더 |
Country Status (6)
Country | Link |
---|---|
US (1) | US5650905A (ko) |
EP (1) | EP0812496B1 (ko) |
JP (1) | JPH11501489A (ko) |
KR (1) | KR100470251B1 (ko) |
DE (1) | DE69616036T2 (ko) |
WO (1) | WO1997024811A1 (ko) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
FR2757288B1 (fr) * | 1996-12-17 | 1999-02-26 | Sgs Thomson Microelectronics | Microprocesseur dedie au traitement de flux de bits dans un systeme de compression/decompression d'images animees |
US6011498A (en) * | 1996-12-20 | 2000-01-04 | Philips Electronics North America Corporation | Dual-speed variable length decoding architecture for MPEG-2 video data |
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 |
US6246347B1 (en) | 1997-10-27 | 2001-06-12 | Philips Electronics North America Corporation | Controller for a variable length decoder |
US5990812A (en) * | 1997-10-27 | 1999-11-23 | Philips Electronics North America Corporation | Universally programmable variable length decoder |
US6215424B1 (en) | 1998-12-16 | 2001-04-10 | Thomson Licensing S.A. | System for variable length codeword processing suitable for video and other applications |
KR100391935B1 (ko) * | 1998-12-28 | 2003-07-16 | 프라운호퍼-게젤샤프트 츄어 푀르더룽 데어 안게반텐 포르슝에.파우. | 오디오 신호를 코딩 또는 디코딩하는 방법 및 디바이스 |
US6411226B1 (en) * | 2001-01-16 | 2002-06-25 | Motorola, Inc. | Huffman decoder with reduced memory size |
US7224841B2 (en) * | 2001-10-29 | 2007-05-29 | Parthusceva Ltd. | Method and apparatus for accelerating variable length coding (VLC) decoding in the process of inverse discrete cosine transformation (IDCT) |
US6653955B1 (en) | 2002-05-09 | 2003-11-25 | Lsi Logic Corporation | Multi-symbol variable length code decoder |
KR100975062B1 (ko) * | 2003-12-27 | 2010-08-11 | 삼성전자주식회사 | 가변길이 부호화 장치 및 가변길이 부호화 방법 |
US6956511B2 (en) * | 2004-01-06 | 2005-10-18 | Sharp Laboratories Of America, Inc. | Multi-symbol/coefficient decode operation for Huffman codes |
US7256719B2 (en) * | 2005-03-23 | 2007-08-14 | International Business Machines Corporation | Digital data decompression implemented in a field programmable array device |
KR100667595B1 (ko) * | 2005-12-29 | 2007-01-11 | 삼성전자주식회사 | 가변 길이 디코더 |
CN101043625B (zh) * | 2006-03-23 | 2010-10-20 | 国际商业机器公司 | 用于高速解压缩数字数据的装置和方法 |
CN106533628B (zh) * | 2016-11-30 | 2019-10-18 | 郑州云海信息技术有限公司 | 一种哈夫曼并行解码方法及其装置 |
US9819359B1 (en) * | 2016-12-11 | 2017-11-14 | Microsoft Technology Licensing, Llc | Multi-symbol, multi-format, parallel symbol decoder for hardware decompression engines |
Family Cites Families (8)
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 |
US5055841A (en) * | 1991-02-01 | 1991-10-08 | Bell Communications Research, Inc. | High-speed feedforward variable word 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. |
JPH07107303A (ja) * | 1993-09-30 | 1995-04-21 | Nec Corp | ハフマン符号の復号化方法 |
KR970002483B1 (ko) * | 1993-11-29 | 1997-03-05 | 대우전자 주식회사 | 고속의 가변길이 복호화장치 |
KR0124191B1 (ko) * | 1994-01-18 | 1998-10-01 | 배순훈 | 가변길이 코드 디코딩장치 |
-
1995
- 1995-12-28 US US08/580,407 patent/US5650905A/en not_active Expired - Lifetime
-
1996
- 1996-12-10 KR KR1019970705912A patent/KR100470251B1/ko not_active IP Right Cessation
- 1996-12-10 WO PCT/IB1996/001404 patent/WO1997024811A1/en active IP Right Grant
- 1996-12-10 DE DE69616036T patent/DE69616036T2/de not_active Expired - Fee Related
- 1996-12-10 EP EP96939277A patent/EP0812496B1/en not_active Expired - Lifetime
- 1996-12-10 JP JP9524146A patent/JPH11501489A/ja not_active Ceased
Also Published As
Publication number | Publication date |
---|---|
KR19980702512A (ko) | 1998-07-15 |
DE69616036D1 (de) | 2001-11-22 |
JPH11501489A (ja) | 1999-02-02 |
US5650905A (en) | 1997-07-22 |
WO1997024811A1 (en) | 1997-07-10 |
EP0812496B1 (en) | 2001-10-17 |
EP0812496A1 (en) | 1997-12-17 |
DE69616036T2 (de) | 2002-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100470251B1 (ko) | 가변길이디코더 | |
KR100748485B1 (ko) | 가변 길이 코드워드 디코더 및 가변 길이 코드워드 디코딩 방법 | |
KR100462421B1 (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 | |
US6546053B1 (en) | System and method for decoding signal and method of generating lookup table for using in signal decoding process | |
US6011498A (en) | Dual-speed variable length decoding architecture for MPEG-2 video data | |
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 | |
US5835035A (en) | High performance variable length decoder with two-word bit stream segmentation and related method | |
JP3238571B2 (ja) | 可変長復号化装置 | |
KR100191318B1 (ko) | 고속의 동벡터 복호회로 | |
JP3389391B2 (ja) | 可変長コードの符号化及び分割装置 | |
US6020835A (en) | Code decoding apparatus | |
US5657016A (en) | Variable length decoder with one of N length indicator | |
US20020075960A1 (en) | Method and apparatus for buffer management in video processing | |
US5798717A (en) | One-hot overflow matrix with enhanced architecture and one-hot variable length decoder incorporating the same | |
EP0855106A1 (en) | High performance variable length decoder with two-word bit stream segmentation and related method | |
KR19990021920A (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: 20130111 Year of fee payment: 9 |
|
FPAY | Annual fee payment |
Payment date: 20140107 Year of fee payment: 10 |
|
FPAY | Annual fee payment |
Payment date: 20150105 Year of fee payment: 11 |
|
FPAY | Annual fee payment |
Payment date: 20160104 Year of fee payment: 12 |
|
EXPY | Expiration of term |