KR100748485B1 - 가변 길이 코드워드 디코더 및 가변 길이 코드워드 디코딩 방법 - Google Patents

가변 길이 코드워드 디코더 및 가변 길이 코드워드 디코딩 방법 Download PDF

Info

Publication number
KR100748485B1
KR100748485B1 KR1019990053485A KR19990053485A KR100748485B1 KR 100748485 B1 KR100748485 B1 KR 100748485B1 KR 1019990053485 A KR1019990053485 A KR 1019990053485A KR 19990053485 A KR19990053485 A KR 19990053485A KR 100748485 B1 KR100748485 B1 KR 100748485B1
Authority
KR
South Korea
Prior art keywords
codeword
variable length
length
run
barrel shifter
Prior art date
Application number
KR1019990053485A
Other languages
English (en)
Other versions
KR20000047765A (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 KR20000047765A publication Critical patent/KR20000047765A/ko
Application granted granted Critical
Publication of KR100748485B1 publication Critical patent/KR100748485B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • 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
    • 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)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

가변 길이 코드워드 디코더는 복수의 주기를 갖는 클록 신호에 반응하며, 각각이 런-렝쓰로 인코드된 코드워드를 나타내는 순차적인 가변 길이 코드워드의 코드워드 생성 회로(10)를 포함한다. 배렐 쉬프터(20) 회로는 코드워드 생성 회로에 결합되며, 그 다음 디코드되지 않은 가변 길이 코드워드를 그 출력 단자의 더 하위 비트(lesser significant bit)에 제공한다. 코드워드 디코딩 회로(30,40)는 배렐 쉬프터의 출력 단자에 결합되며, 단일 클록 주기에서 0이 반복되는 런-렝쓰 코드워드들을 각각 나타내는 두 개의 순차적인 가변 길이 코드워드; 또는 단일 클록 주기에서 처음 것은 0이 반복되는 런-렝쓰 코드워드를 나타내고 두 번째 것은 1이 반복되는 런-렝쓰 코드워드를 나타내는 두 개의 순차적인 가변 길이 코드워드 ; 및 단일 클록 주기에서 기타 모든 가변 길이 코드워드를 디코드하기 위하여 동작한다.

Description

가변 길이 코드워드 디코더 및 가변 길이 코드워드 디코딩 방법{A VARIABLE LENGTH CODEWORD DECODER AND A VARIABLE LENGTH CODEWORD DECODING METHOD}
도 1은 본 발명에 따른 가변 길이 디코더(VLD)의 블록도.
도 2, 도 3 및 도 4는 도 1에 도시된 VLD 시스템의 각 부분의 보다 자세한 블록도.
도 5 및 도 6은 도 1에서 도 4에 걸쳐 도시된 VLD에 있는 룩업테이블의 내용을 나타내는 테이블.
도 7은 도 1 및 도 3에 도시된 VLD 시스템 일부의 보다 자세한 블록도.
<도면 주요 부분에 대한 부호의 설명>
30:길이 LUT 284:플립-플롭
294:덧셈기 302:배럴 쉬프트 유닛
296:멀티플렉서
본 발명은 런-렝쓰 인코드된 계수를 인코딩하는 연속적인 가변 길이 코드워드를 디코딩하는 디코더에 관한 것이다. 보다 자세하게는, 본 발명은 MPEG(Motion Picture Expert Group) 국제 표준에 따라 인코드된 고 선명 텔레비전(HDTV : high definition television) 비디오 데이터 신호의 가변 길이 코드워드를 디코딩하기 위해 사용될 수 있는 가변 길이 디코더(VLD : variable length decoder)에 관한 것이다.
미국에서, 고 선명 텔레비전 신호를 디지털로 인코딩하기 위한 표준이 제안되었다. 이 표준은 ISO(International Standards Organization)의 동화상 전문가 그룹(MPEG)에 의해 제안된 MPEG2 표준과 본질적으로 동일하다. 이 표준은 본 명세서에서 MPEG 표준으로 지칭되며, 이 표준에 부합하는 신호는 MPEG 신호 또는 MPEG으로 인코드된 신호로 지칭된다. 이 표준은 ISO로부터 구입 가능한 "정보 기술 - 동화상 및 관련 오디오의 범용 코딩, 권고 H.262 ISO/IEC 13818.2; 1995 (E)이라는 제목이 부여되었으며, 본 출원의 미국대응특허공보에 참고문헌으로 포함된, 내부 표준 초안(DIS : draft internal standard) 출판물에 기술되어 있다.
MPEG2 비디오 신호 인코딩 표준은 영상을 나타내는 비디오 데이터를 주로 이산코사인변환(DCT : discrete cosine transfer) 계수의 블록으로 이루어진 이진(디지털) 데이터로 인코딩하는 것에 대해 규정한다. 이들 계수는 고정 크기 런-렝쓰 코드워드로 런-렝쓰 인코드된다. 그후 런-렝쓰 인코드된 각 코드워드는 가변 길이 코드 워드들로 호프만(Huffman) 인코드된다. MPEG 인코드된 HDTV 신호에서, DCT 계수의 블록은 전송되고 있는 영상을 적절하게 디코드하고 및 디스플레이하기 위하여 사전에 결정된 속도(rate)로 디코드되어야만 한다. 그 순간 속도는 영상의 세부사항 및 움직임에 따라 변할 수 있다. 그러나, 런-렝쓰 인코드된 코드워드, 및 마찬가지로 가변 길이 코드 워드가 "최악의" 영상에 대해 발생하는 최대 속도가 존재한다. 이 속도는 초 당 일억 코드 워드를 초과한다. 코드워드를 이 속도로 디코드하기 위하여 다양한 방법이 제안되어왔다.
적절한 조건하에서 복수의 가변 길이 코드워드를 단일 클록 주기 동안에 동시에 디코딩하는 능력을 갖는 가변 길이 디코더(VLD)가 제안 되어 있다. 종래 기술의 VLD에서, 수신된 인코드된 신호의 다수의 비트는 베렐 쉬프터(barrel shifter)를 통해 VLD의 디코딩 섹션에 병렬로 공급된다. 그러한 VLD를 병렬 디코더라 한다. 상기 비트의 갯수는 적어도 최대 크기의 가변 길이 코드워드 안에 있는 비트 수가 되도록 선택된다. 이들 비트는, 허용된 가변 길이 코드워드 각각에 대한 엔트리로 사전에 구성된 룩업테이블(LUT :lookup table)에, 공급된다. LUT의 각 엔트리는, 가변 길이 코드워드에 의해 표현되는 런-렝쓰 코드워드의 값, 및 가변 길이 코드워드의 길이(즉 비트 수)를 포함한다. 하나의 코드워드가 디코드되면, 새롭게 디코드된 가변 길이 코드워드 안에 있는 병렬 비트의 수는 배렐 쉬프터 밖으로 쉬프트되며, 또한 배렐 쉬프터 내의 잔류 비트들은 밖으로 쉬프트된 비트들 자리로 쉬프트된다. 필요한 경우, 해당 디지털 비트 스트림에 있는 다음 비트들은 배렐 쉬프터 안으로 삽입된다. 그후 배렐 쉬프트 내의 잔류 비트들은 다음 코드워드를 디코드하기 위하여 처리된다. 이러한 VLD는 하나의 단일 가변 길이 코드워드를 하나의 단일 클록 주기 내에서 디코드할 수 있다.
그러나, 위에 기술된 바와 같이, MPEG 인코드된 HDTV 신호에 있어서, 가변 길이 코드워드가 디코드되어야만 할 최대 속도는 초 당 일억을 초과한다. 이것은 100 MHz 이상의 클록 주파수를 요구한다. 이 주파수에서의 작동은 가전 제품에 실용적인 집적 회로의 능력을 현재 벗어나 있다. 따라서, 클록 주기 당 하나의 코드워드보다 많은 코드워드를 디코드할 수 있는 VLD가 제안되어 있다. 이것은 위에 기술된 회로에서 요구되는 100 MHz 이하의 클록 신호 속도로 작동할 수 있는 VLD가 구현되도록 허용할 것이다.
"고속 가변 길이 디코더"라는 제목이 부여되었으며, 왕(WANG) 등에게 1993년 7월 6일 허여된 미국 특허 5,225,832에는 병렬 VLD가 개시되었다. 왕 등이 깨달은 것은, 상기 가변 길이 코드워드는 길이가 변하기 때문에, 하나의 단일 가변길이 코드워크보다 많은 가변 길이 코드워드들이 최대 크기의 가변 길이 코드워드의 비트 수 범위 내에 들어갈 수 있다는 것이다. 디코딩 LUT는 결합된 짧은 코드워드를 위한 엔트리를 추가로 포함한다. 따라서, 두 개의 보다 짧은 코드워드들이 배렐 쉬프터의 출력단에 동시에 존재한다면, 이 두 개의 코드워드는 LUT에 의해 인식되고 또한 동시에 디코드될 것이다. 이것은 상기 VLD가 클록 주기 당 한 코드워드 보다 높은 속도로 디코드하도록 허용한다. 클록-주기-당-한-코드워드 보다 더 큰 속도로의 증가는 보다 짧은 코드워드가 발생할 가능성이 보다 긴 코드워드 보다 확률적으로 높기 때문에 더 증가된다. 이러한 디코딩 속도의 증가는 디코딩 LUT의 복잡도의 증가라는 대가를 치르고 얻어진다.
배렐 쉬프터로부터의 출력의 폭을 증가시켜 두 개의 최대 크기의 가변 길이 코드워드를 동시에 생성하는 것도 역시 제안되어 있다. 이 폭이 두배로 증가된 배렐 쉬프터 출력은 LUT에 공급되며, 상기 LUT는 두 개의 코드워드를 동시에 인지하게 된다. LUT의 제 1 부분은 제 1 가변 길이 코드워드를 인지하고, 제 2 부분은 제 2 가변 길이 코드워드를 인지한다. LUT는 세 개의 출력 값을 생성한다. 즉, 첫 번째 값은 제 1 가변 길이 코드워드를 나타내고, 두 번째 값은 제 2 가변 길이 코드워드를 나타내며, 세 번째 값은 두 코드워드가 결합된 것의 길이를 나타낸다. 이러한 배열은 VLD로 하여금, 실용적인 범위 내에서 만족스러운, 즉 50 MHz 근처의 클록 발생률로 작동할 수 있도록 할 것이다. 그러나, 이러한 배열에서의 LUT는, 클록 주기 당 단일 가변 길이 코드워드 배열에서의 LUT에 비해서 매우 크다. LUT의 제 1 부분에 있는 각 코드워드 엔트리에 대해, LUT는 제 2 부분을 위한 완전한 코드워드 집합을 탐색하는 회로를 포함해야만 한다. 만일 n 개의 허용 가능한 코드워드가 있으면, n2 개의 엔트리가 있어야만 한다. 이 때문에 LUT는 커지게 되며, 작동이 느려지게 된다.
SPIE 논문집 3021권 247-265페이지에 발표된 바크흐머트스키(Bakhmutsky)가 쓴 "두-워드 비트 스트림 분할(segmentation)로 고도의 병렬 가변 길이 디코더를 달성하기 위한 페어-매취(pair-match) 호프만 트랜스코딩(transcoding)"이라는 논문에는 왕 등에서 개시된 유형의 병렬 VLD의 개량이 개시되어 있다. 바크흐머트스키의 VLD는 클록 주기 당 적어도 두 개의 DCT 계수를 디코드할 수 있다. 바크흐머트스키가 인식한 점은, VLD의 출력이 일련의 고정 길이를 갖는 런-렝쓰 인코드된 코드워드들이며, 그 각각은 하나의 수신된 가변 길이 코드워드에 대응한다라는 것이다. 각 런-렝쓰 코드워드는 하나 이상의 DCT 계수를 나타내며, 하나의 런 부분(run portion) 및 하나의 값 부분(value portion)을 포함한다. 런 부분은, 현재의 코드 워드로 표현되기 이전에 있는 0값 DCT 계수(zero valued DCT coefficient)의 갯수를 나타낸다. 값 부분은, 0값 계수의 런 다음에 오는 비-0 DCT 계수(non-zero DCT coefficient)의 값을 나타낸다.
바크흐머트스키가 인지하였던 점은, 하나의 단일 가변 길이 코드워드로 표현되는 하나의 0 런 런-렝쓰 코드워드는 단지 하나의 단일 계수 값(즉 0 0값 계수)만을 나타내고, 하나의 단일 가변 길이 코드워드로 표현되는 하나의 1 런 런-렝쓰 코드워드는 두 개의 계수, 즉 0값 계수 하나와 비-0값 계수 하나를 나타낸다는 것이다. 만약 두 개의 개별적인 0 런 런-렝쓰 코드워드를 나타내는 두 개의 가변 길이 코드워드가, 각각이 하나의 단일 계수를 나타내면서, 순차적으로 발생한다면, 클록 주기 당 두 개의 계수를 디코딩하는 속도를 유지하기 위해서는 하나의 단일 클록 주기 동안에 동시에 두 개의 가변 길이 코드워드가 디코드되어야만 한다. 게다가, 하나의 1 런 런-렝쓰 코드워드(즉, 두 개의 계수)를 나타내는 하나의 가변 길이 코드워드에 선행하는 하나의 0 런 런-렝쓰 코드(즉 하나의 계수)를 나타내는 하나의 가변 길이 코드워드는, 클록 주기 당 두 개의 계수로 디코딩 속도를 유지하기 위해서는 역시 하나의 단일 클록 주기 동안에 동시에 디코드되어야만 한다. 만일 이렇게 되지 않으면, 즉 만일 각각이 하나의 클록 주기 동안에 별도로 디코드되면, 세 개의 계수가 두 개의 클록 주기 동안 디코드될 것(즉 클록 주기 당 1.5 개의 계수)인데, 이는 클록 주기 당 두 개의 계수라는 목표보다 아래로 떨어지는 것이다. 기타 모든 경우에서, 하나의 단일 가변 길이 코드워드는 하나의 단일 클록 주기 동안 디코드될 수 있으며, 클록 주기 당 적어도 두 개의 계수라는 목표를 여전히 유지한다.
MPEG 인코딩 기법에서, 임의의 런-렝쓰 코드워드는 최대 24 비트 폭의 크기를 갖는 가변 길이 코드워드(예를 들어, 이스케이프 문자열)에 의해 표현될 수 있다. 이것은 하나의 MPEG 가변 길이 코드워드가 될 수 있는 최대 크기이다. 따라서, 두 개의 순차적인 가변 길이 코드워드는 잠재적으로 48 비트 폭일 수 있다. 바크흐머트스키가 제안한 것은, VLD로의 입력 신호를 분석하는 것과, 두 개의 순차적인 트랜스코드된 코드워드가 VLD 배렐 쉬프터의 출력단에서 동시에 나타날 수 있도록 하는 방식으로 0 런 및 1 런 런-렝쓰 코드를 나타내는 가변 길이 코드워드를 보다 적은 비트들을 갖는 상이한 코드워드로 각각 대치하는 것이었다. 상기 트랜스코드된 코드워드를 인지하고 또한 동시에 디코드하도록, LUT는 수정된다. 이런 방식에 있어서, 바크흐머트스키 시스템은 하나의 단일 클록 주기 동안 두 개의 순차적인 0 런 런-렝쓰 코드워드, 또는 한 개의 1 런 런-렝쓰 코드워드에 선행하는 한 개의 0 런 런-렝쓰 코드워드를 나타내는 두 개의 가변 길이 코드워드를 인지 및 디코드할 수 있으며, 따라서 클록 주기 당 두 개의 계수를 디코딩하는 속도를 유지할 수 있다.
그러나 바크흐머트스키 시스템은, 두 개의 순차적인 트랜스코드된 코드워드를 동시에 인지 및 처리하기 위하여 VLD 이전의 신호 경로 내에 트랜스코더의 추가, 및 VLD LUT의 수정을 요구한다. 추가적인 디코딩 또는 트랜스코딩 회로를 요구하지 않고서, 또한 룩업테이블 내에서 n 개의 가변 길이 코드워드에 대해서 n2개의 엔트리가 요구되는 룩업테이블을 요구하지 않고서, VLD 클록 주기 당 적어도 두 개의 계수를 디코딩하는 속도를 유지할 수 있는 시스템이 바람직하다.
본 발명의 원리에 따르면, 가변 길이 코드워드 디코더는 다중 주기를 갖는 클록 신호에 반응하며, 또한 각각이 하나의 런-렝쓰 인코드된 코드워드를 나타내는, 순차적인 가변 길이 코드워드들의 코드워드 생성 회로를 포함한다. 배렐 쉬프터 회로는 코드워드 생성 회로에 연결되며, 또한 디코드되지 않은 그 다음 가변 길이 코드워드를 그 출력 단자의 더 아래의 하위 비트로 제공한다. 코드워드 디코딩 회로는 배렐 쉬프터의 출력 단자에 연결되며, 또한 개별적인 0 런 런-렝쓰 코드워드를 나타내는 두 개의 순차적인 가변 길이 코드워드들을 하나의 단일 클록 주기 내에서 디코드하고; 또는 제 1 코드워드가 0 런 런-렝쓰 코드워드를 나타내고 제 2 코드워드가 1 런 런-렝쓰 코드워드를 나타내는, 두 개의 순차적인 가변 길이 코드워드들을 하나의 단일 클록 주기 내에서 디코드하고; 및 기타 모든 가변 길이 코드워드들을 하나의 단일 클록 주기 내에서 디코드하기 위하여 동작한다.
도 1은 본 발명에 따른 가변 길이 디코더(VLD) 시스템(100)의 블록도이다. 본 발명의 구현 및 동작을 이해하는데 필요한 이들 요소들만이 도시되었다. 당업자는 어떤 다른 요소들이 필요하며, 또한 어떻게 설계하고, 구현하고, 및 이들 요소들을 도시된 요소들과 어떻게 상호연결하는가를 이해할 것이다. 특히, 다수의 주기를 갖는 클록 신호의 소스는 도시되지 않았다. 도시된 실시 예에서, 이 클록 신호는 도시된 요소들에게 기존 방식으로 공급되며, 또한 50MHz 속도 근처에서 반복하는 일련의 클록 주기 형태이다. 위에 언급되고, 아래에 기술된 바와 같이, 이것은 본 발명에 따른 디코더로 하여금 MPEG2 코딩 표준을 지원하면서 초 당 최소 100백만 개의 계수를 디코드하도록 허용한다.
도 1에서, 가변 길이 코드워드 생성 회로(10)는 일련의 가변 길이 코드워드를 생성한다. 이 코드워드 생성 회로(10)는 기존 방식으로 배열된 무선 주파수 신호 수신 및 처리 회로, 및 디지털 신호 처리 회로를 포함할 수 있다. 선입선출(FIFO : first-in-first-out) 메모리 출력 버퍼(도시되지 않음)도 역시 기존 방식으로 코드워드 생성 회로의 출력단에 존재한다. 코드워드 생성 회로(10)의 출력 단자는 배렐 쉬프터 회로(20)의 데이터 입력 단자에 연결된다. 배렐 쉬프터 회로(20)는 레지스터 배열, 상태 머신(state machine), 순차 회로, 구성가능한 논리 어레이(configurable logic array), 또는 배럴 쉬프팅 기능을 수행하도록 프로그램된 프로세서와 같은 임의의 기존 배열로 구현될 수 있을 것이다. 배렐 쉬프터 회로(20)의 출력 단자는 코드워드 길이 LUT(30)과 코드워드 값 LUT(40)의 각각의 입력 단자에 연결된다. 코드워드 길이 LUT(30)과 코드워드 값 LUT(40)는 공동으로 코드워드 디코더를 형성한다. 길이 LUT(30)의 출력 단자는 배렐 쉬프터 회로(20)의 제어 입력 단자에 결합된다. 코드워드 값 LUT(40)의 출력 단자는 일련의 고정 길이 런-렝쓰 인코드된 코드워드를 생성하며, 이용율(utilization) 회로(50)의 입력 단자에 결합된다. 이용율 회로(50)는 런-렝쓰 코드 디코더와 추가적인 디지털 신호 처리 회로를 포함한다. 그것은 영상 디스플레이 장치 상에 디스플레이될 영상을 나타내는 신호, 및 오디오 재생 장치에서 재생될 음향 등의 모두를 기존 방식으로 생성하기 위해, 영상 디스플레이 장치 및 스피커와 같은 오디오 재생 장치, 및 디지털 신호 처리 회로에 반응하는 회로도 역시 포함할 것이다.
동작 시, 도 1의 VLD(100)는 코드워드 생성 회로(10)로부터 일련의 가변 길이 코드워드를 수신한다. 배렐 쉬프터 회로(20)는 다수의 비트를 병렬로 수신한다. 도시된 실시 예에서, 159 비트가 아래에 보다 자세하게 기술되어 있는 방식으로 코드워드 생성 회로(10)로부터 배렐 쉬프터 회로에 공급된다. 배렐 쉬프터(20)의 출력은 역시 다수의 병렬 비트이다. 이 다수의 비트는, 적어도 다음에 디코드될 제 1 가변 길이 코드워드, 및 제 1 가변 길이 코드워드 이후에 디코드될 제 2 가변 길이 코드워드를, 동시에 포함하기에 충분하다. 도시된 실시 예에서, 배렐 쉬프터 회로(20)는 48비트를 생성하는데, 이는 각각이 24 비트인 두 개의 이스케이프 문자열을, 동시에 그리고 아래에 보다 자세하게 기술되어 있는 방식으로, 공급할 수 있는 비트수이다.
배렐 쉬프터 회로(20)는 항상, 다음에 디코드될 제 1 가변 길이 코드워드를 배렐 쉬프터 회로(20) 출력단의 한쪽 끝에 유지하며, 또한 제 2 가변 길이 코드워드를 제 1 가변 길이 코드워드에 인접한 배렐 쉬프터 회로(20)의 출력단 위치에 유지할 수 있도록 동작한다. 배렐 쉬프터 회로(20)의 끝에 있는 제 1 코드워드는 길이 룩업테이블(LUT: look-up table)(30) 및 값 룩업테이블(LUT)(40)에 의해 인지되고 디코드된다. 길이 LUT(30)는 인지된 코드워드의 길이를 나타내는 출력을 생성한다. 값 LUT(40)는 인지된 가변 길이 코드워드에 대응하는 고정 길이 런-렝쓰 코드워드를 나타내는 출력을 생성한다. 이 코드워드가 디코드될 때, 배렐 쉬프터 회로(20)는 길이 LUT(30)로부터의 길이 신호에 반응하여, 디코드될 다음 코드워드가 배렐 쉬프터 회로(20) 출력 단자의 끝에 생성되도록 배렐 쉬프터 회로(20)의 출력을 상기 디코드된 코드워드의 길이 만큼 쉬프트한다.
길이 LUT(30) 및 값 LUT(40)는 제 1 및 제 2 가변 길이 코드워드 각각이 0 런 런-렝쓰 코드워드를 나타낼 때를 인지하기 위하여, 아래에 보다 자세하게 기술된 방식으로, 배열된다. 이것이 인지되면, 길이 LUT(30)는 두 개의 가변 길이 코드워드의 결합된 길이를 나타내는 신호를 생성하고, 값 LUT(40)는 두 개의 고정 길이의 0 런 런-렝쓰 코드워드를 나타내는 두 개의 연속적인 값을 생성한다. 길이 LUT(30) 및 값 LUT(40)는 제 1 가변 길이 코드워드가 0 런 런-렝쓰 코드워드를 나타내고 제 2 가변 길이 코드워드가 1 런 런-렝쓰 코드워드를 나타내는 때를 인지하기 위하여, 아래에 보다 자세하게 기술된 방식으로, 역시 배열된다. 이것이 인지되면, 길이 LUT(30)는 두 개의 가변 길이 코드워드의 결합된 길이를 나타내는 신호를 생성하며, 값 LUT(40)는 두 개의 고정 길이의 런-렝쓰 코드워드를 나타내는 두 개의 연속적인 값을 생성한다.
위에 기술된 바와 같이, 각 0 런 런-렝쓰 코드워드, 또는 한 개는 0 런 런-렝쓰 코드워드이고 한 개는 1 런 런-렝쓰 코드워드를 나타내는 순차적인 가변 길이 코드워드를 동시에 인지함으로써, 클록 주기 당 적어도 두 개의 DCT 계수를 디코딩하는 속도가 VLD와 런-렝쓰 디코더(도시되지 않음)의 결합된 시스템에서 유지된다. 도 1의 VLD(100)는 클록 주기 당 두 개의 계수를 디코딩하는 속도를 유지하기 때문에, 100 MHz 코드워드 클록 속도의 거의 반절 정도의 클록 속도로 동작할 수 있다. 도시된 실시 예에서, VLD(100)는 54 MHz의 클록 속도로 동작하는데, 이는 가전 기기에 적합한 집적 회로 기술의 동작 범위 내에 들어가는 속도이다. 게다가, 도시된 실시 예에서는 트랜스코더가 요구되지 않는다.
도 2는 도 1에 도시된 VLD 시스템 일부의 보다 자세한 블록도이다. 도 2에서, 도 1에 있는 것과 동일한 요소들은 동일한 참조 번호에 의해 지정되며, 아래에서는 자세하게 기술되지 않는다. 또한, 도면을 단순화하기 위하여 본 발명을 이해하는데 필요한 요소들만이 도시되어 있다. 당업자는 도시된 요소들을 상호 접속하고 그들의 동작을 동기화하기 위하여 어떤 다른 요소(예, 레지스터, 플립-플롭, 클록 신호 등)들이 필요할 것이며, 그 요소들을 어떻게 구현하고, 또한 그 요소들을 도시된 요소들에 어떻게 연결하는가를 이해할 것이다.
도 2에서, 코드워드 생성 회로(10)의 출력 단자는 한 세트의 레지스터(22)의 입력 단자에 연결된다. 레지스터(22)의 출력 단자는 제 1 배렐 쉬프터(24)의 입력 단자에 연결된다. 제 1 배렐 쉬프터(24)의 출력 단자는 제 2 배렐 쉬프터(26)의 제 1 입력 단자에 연결된다. 제 2 배렐 쉬프터(26)의 출력 단자는 레지스터(27)의 입력 단자에 연결된다. 레지스터(27)의 출력 단자는 길이 LUT(30)의 입력 단자, 및 제 2 배렐 쉬프터(26)의 제 2 입력 단자에 연결된다. 길이 LUT(30)의 출력 단자는 제 2 배렐 쉬프터(26)의 제어 입력 단자 및 어큐물레이터(accumulator)(28)의 입력 단자에 연결된다. 어큐물레이터(28)의 제 1 출력 단자는 제 1 배렐 쉬프터(24)의 제어 입력 단자들에 연결되며, 어큐물레이터(28)의 제 2 출력 단자는 레지스터(22) 및 코드워드 생성 회로(10)의 각 제어 입력 단자에 연결된다.
동작에서, 레지스터(22)는 코드워드 생성 회로(10)로부터 데이터를 수신하고, 159 비트를 제 1 배렐 쉬프터(24)에 병렬로 제공하도록 동작한다. 도시된 실시 예에서, 코드워드 생성 회로(10)의 FIFO(도시되지 않음)의 출력 단자는 64 비트를 병렬로 제공한다. 제 1 및 제 2의 직렬 64 비트 병렬 레지스터(도시되지 않음)는 코드워드 생성 회로(10)의 출력단에 연결된다. 레지스터 출력의 결합은 결과적으로 128 비트를 생성한다. 레지스터(22) 내에서, 코드워드 생성 회로(10)의 FIFO으로부터 직접 받은 추가적인 31 비트는 제 1 및 제 2 레지스터로부터의 128 비트와 결합되어, 레지스터(22)로부터 제 1 배렐 쉬프터(24)로 향하는 159 비트 병렬 신호를 형성하게 된다. 어큐물레이터로부터의 읽기 제어 신호에 반응하여(아래에 보다 자세하게 기술됨), 제 1 레지스터로부터의 출력은 제 2 레지스터에 래치(latch)되고, 코드워드 생성 회로(10)의 FIFO(도시되지 않음)로부터의 64 비트 출력은 모두 제 1 레지스터에 래치되며, 상기 64 비트는 FIFO 밖으로 쉬프트됨으로써, 다음 64 비트의 가변 길이 코드워드가 FIFO의 출력에 생성되도록 한다.
제 1 및 제 2 배렐 쉬프터(24 및 26)는 다음 디코드되지 않은 비트들을 길이 LUT(30)의 입력 단자의 더 하위 비트에 제공하기 위하여 함께 동작한다. 보다 자세하게 말하자면, 제 2 배렐 쉬프터(26)는 다음 디코드되지 않은 비트들이 출력 단자의 더 하위 비트에 제공되도록 제어된다. 제 1 배렐 쉬프터(24)는 코드워드 생성 회로(10)로부터의 159 비트를 제 2 배렐 쉬프터(26)에 있는 아직 디코드되지 않은 비트들의 트레일링 가장자리로 정렬하도록 동작한다.
도시된 실시 예에서, 제 1 배렐 쉬프터(24)의 출력 단자는 48 비트를 생성한다. 제 1 배렐 쉬프터(24)로부터의 상기 48 비트는 제 2 배렐 쉬프터(26)의 제 1 입력 단자에 공급된다. 제 2 배렐 쉬프터(26)의 출력 단자는 48 비트를 역시 생성하는데, 이는 위에서 기술된 바와 같이 가장 긴 가변 길이 코드워드 두 개를 포함하기에 충분한 크기이다. 결과적으로, 제 2 배렐 쉬프터(26)는 그 제 1 및 제 2 입력 단자에서 모두 96 비트를 수신한다.
각 클록 주기의 끝에서, 제 2 배렐 쉬프터(26)의 출력 단자로부터의 48 비트는 레지스터(27)에 래치된다. 각 클록 주기의 시작에서, 이전 클록 주기 동안의 제 2 배렐 쉬프터(26)의 내용을 나타내는, 레지스터(27)로부터의 비트들은 다음 클록 주기에서 처리를 위해, 입력의 더 하위 비트들을 형성하는, 제 2 배렐 쉬프터(26)의 제 2 입력 단자로 되돌아 공급된다. 동시에, 이전 클록 주기 동안 디코드된 가변 길이 코드워드의 길이는, 길이 LUT(30)로부터 제 2 배렐 쉬프터(26)의 제어 입력 단자에 공급된다. 제 2 배렐 쉬프터는 제 1 및 제 2 입력 단자에 있는 비트들을 그 제어 입력 단자에 규정된 양만큼 쉬프트하고, 따라서 이전에 디코드된 비트들을 쉬프트시켜 내보내며, 다음의 디코드되지 않은 비트들을 출력 단자의 더 하위 비트에 남겨 놓는다. 제 2 배렐 쉬프터(26)에 들어가는 입력이 96 비트, 즉 레지스터(27)로부터 나온 48 비트와 제 1 배렐 쉬프터로부터 나온 48 비트이므로, 제 2 배렐 쉬프터로부터 나오는 출력은 항상 적어도 48개의 유효 데이터 비트를 가진다.
제 1 배렐 쉬프터(24)는 레지스터(22)로부터 온 새로운 데이터를 제 2 배렐 쉬프터(26)로부터 온 디코드되지 않은 데이터의 트레일링 비트에 일렬로 정렬하도록 동작한다. 가변 길이 코드워드가 길이 LUT(30)에 의해 인지 및 디코드될 때, 디코드된 코드워드의 길이는 어큐물레이터(28)에 공급되며, 어큐물레이터(28)는 이 길이를 이전에 축적된 길이에 기존 방식으로 더한다. 상기 축적된 길이 데이터는 제 1 배렐 쉬프터(24)의 제어 입력 단자에 공급된다. 제 1 배렐 쉬프터는 축적된 가변 길이 코드워드 길이만큼의 분량의 자신의 데이터를 쉬프트한다. 이에 따라, 제 1 배렐 쉬프터(24)로부터 온 데이터는 제 2 배렐 쉬프터(26)에 있는 아직 디코드되지 않은 데이터의 트레일링 에지에 일렬로 정렬된다. 레지스터 집합(22)에 있는 제 2 레지스터(도시되지 않음)로부터 나온 비트들이 전부 디코드될 때마다, 어큐물레이터는 코드워드 생성 회로(10)로부터의 다음 워드를 위에 기술된 방식으로 래치하기 위하여 레지스터(22) 및 코드워드 생성 회로(10)에 읽기 신호를 보낸다.
최악의 조건은 레지스터 집합(22)의 제 2 레지스터 출력단에 단 하나의 디코드되지 않은 비트가 남아 있고, 각각이 24 비트 길이인 두 개의 코드워드가 디코드될 때 발생한다. 이 경우에, 제 1 배렐 쉬프터(24)는 자기의 입력을 111 비트만큼, 즉 제 2 레지스터를 채우기 위한 63 비트를 쉬프트하고 이에 더하여 디코드된 코드워드에 있는 48 비트를 쉬프트 해야만 한다. 제 1 배렐 쉬프터(24)가 111 비트만큼 쉬프트 할 때, 제 2 배렐 쉬프터(26)에 공급될 유효 48 비트 출력의 더 상위 비트에는 적어도 48 비트가 반드시 존재하고 있다. 이런 이유로, 제 1 배렐 쉬프터(24)에의 입력은 159 비트, 즉 최악의 쉬프트를 위한 111 비트에 제 2 배렐 쉬프터(26)로의 출력을 위한 48 비트를 더한 값이다.
도 3은 도 1에 도시된 VLD 시스템 일부의 보다 자세한 블록도이다. 도 3에서, 도 1에 도시된 것과 동일한 요소들은 동일한 참조 번호에 의해 지정되며, 아래에서는 상세하게 기술되지 않는다. 도 3에서, 길이 LUT(30)의 출력 단자는 덧셈기(282)의 가수(addend) 입력 단자에 연결된다. 덧셈기(282)의 합계(sum) 출력 단자는 D 플립-플롭(284)의 D 입력 단자에 연결된다. D 플립-플롭(284)의 Q 출력 단자는 동기 논리 회로(286)의 입력 단자, 제 1 배렐 쉬프터(24)의 제어 입력 단자 및 덧셈기(282)의 피가산수(augend) 입력 단자에 연결된다. 동기 논리 회로(286)의 출력 단자는 레지스터 집합(22)의 제어 입력 단자에 연결된다.
작동 시, 덧셈기(282), D 플립-플롭(284) 및 동기 논리 회로(286)의 조합은 도 2의 도시된 어큐물레이터(28)처럼 동작한다. 제 2 배렐 쉬프터(26)(도시되지 않음)가 최대 48 비트를 쉬프트하기 때문에, 상기 제어 입력단은 6 비트를 요구하고, 결과적으로, 길이 LUT(30)은 6 비트를 갖는 길이 신호를 생성한다. 이 6 비트 출력 신호는 (도 2의) 제 2 배렐 쉬프터(26) 및 덧셈기(282)에 전달된다. 덧셈기(282)의 합계 출력 단자는 7 비트 출력 신호를 생성한다. 이것은 폭이 7 비트인 D 플립-플롭에 저장된다. 이 신호는 7 비트 어큐물레이터를 형성하는 덧셈기(282)의 피가산수 입력 단자에 되돌아와 전달된다. D 플립-플롭(284)의 출력은 제 1 배렐 쉬프터(24)의 제어 입력 단자에 전달되며, 위에 기술된 바와 같이 111 개 이상은 요구되지 않을 것이지만, 최대 128 개만큼 많은 수의 쉬프트된 비트를 제어한다. D 플립-플롭(284)으로부터의 출력의 최상위비트(MSB : most significant bit)는 제 1 배렐 쉬프터(24)에 의해 쉬프트된 분량이 64 개를 초과할 때마다 활성화된다. 이 경우에, 레지스터(22) 및 코드워드 생성 회로(10)(도시되지 않음)는 위에 보다 자세하게 기술된 바와 같이 코드워드 생성 회로 내의 FIFO로부터 새로운 값을 검색한다.
도 2를 다시 참조하면, 클록 주기 당 두 개의 0 런 또는 한 개의 0 런 및 한 개의 1 런 런-렝쓰 코드워드를 나타내는 두 개의 순차적인 가변 길이 코드워드를 동시에 디코딩함으로서 클록 주기 당 적어도 두 개의 계수를 디코딩하는 위에 기술된 처리 속도를 유지하기 위하여, 도시된 VLD에는 그 처리가 한 클록 주기 내에서 완성되어야만 하는 세 개의 필수적인 경로가 있다. 첫 번째, 제 1 배렐 쉬프터(24)로의 159 비트 입력 단자로부터, 제 2 배렐 쉬프터(26)를 통해 48 비트 레지스터(27)로 가는 경로가 있다. 두 번째, 48 비트 레지스터(27)로부터, 길이 LUT(30)를 통하고, 덧셈기(282)를 통해 7 비트 어큐물레이터 D 플립-플롭(284)으로 가는 경로가 있다. 세 번째, 48 비트 레지스터(27)로부터, 제 2 배렐 쉬프터(26)를 통해 48 비트 레지스터(27)로 되돌아 가는 경로가 있다. 이들 경로들이 단일 클록 주기 내에서 동작할 수 있도록 하기 위하여, 본 발명은 아래에 기술된 회로 최적화 원리들을 개시한다.
제 1 최적화 원리에 있어서, 길이 LUT(30)는 (도 1에 도시된 바와 같은) 값 LUT(40)로부터 분리된다. 이 방식에서, 논리 최적화 원리들이 그들의 길이에 따라 가변 길이 코드워드를 그룹화하기 위하여 길이 LUT(30)에 적용된다. 따라서, 길이 LUT(30)에 있는 엔트리 수가 감소되며, 지연시간이 상응해서 감소된다.
더불어, 길이 LUT(30)는 두 개의 0 런 런-렝쓰 코드워드 또는 하나의 1 런 런-렝쓰 코드워드 및 뒤이은 하나의 0 런 런-렝쓰 코드워드를 나타내는 연속적인 가변 길이 코드워드를 인지 및 디코딩하는 부분, 및 다른 모든 가변 길이 코드워드를 인지 및 디코딩하는 부분으로 분리된다. 이것은 도 4에 도시된다.
도 4에서, 레지스터(27)(도시되지 않음)의 출력 단자는 가변 길이 코드워드(CW)를 포함하는 데이터를 레지스터(27)로부터 수신하는 길이 LUT(30)의 입력 단자(35)에 연결된다. 입력 단자(35)는 단일 코드워드 디코딩 LUT(32)의 입력 단자에 연결된다. 단일 코드워드 디코딩 LUT(32)의 출력 단자는 출력 단자(31)에 연결된다. 입력 단자(35)는 0 런 코드워드 검출기(detector) LUT(342), 0 런 코드워드 색인(index) LUT(344), 0 런 코드워드 길이 LUT(346), 및 제 3 배렐 쉬프터(348)의 각 입력 단자들에도 또한 연결된다. 0 런 코드워드 검출기 LUT(342) 및 0 런 코드워드 색인 LUT(344)의 각 출력 단자는 제 3 배렐 쉬프터(348)의 제어 입력 단자에 연결된다. 제 3 배렐 쉬프터(348)의 출력 단자는 0 및 1 런 코드워드 검출기 LUT(350)와 0 및 1 런 코드워드 색인 LUT(352)의 각 입력 단자에 연결된다. 0 및 1 런 코드워드 색인 LUT(352)의 출력 단자는 게이트(354)의 데이터 입력 단자에 연결되고, 0 및 1 런 코드워드 검출기 LUT(350)의 출력 단자는 게이트(354)의 제어 입력 단자에 연결된다. 게이트의 출력 단자는 길이 LUT(30)의 출력 단자(33)에 연결된다. 0 런-렝쓰 LUT(346)의 출력 단자는 길이 LUT(30)의 출력 단자(37)에 연결된다.
작동 시, 단일 코드워드 디코딩 LUT(32)는, 모두 기존의 방식으로, 입력 단자(35)로부터의 1 보다 큰 런을 갖는 고정 길이 런-렝쓰 인코드된 코드워드를 나타내는 가변 길이 코드워드(CW)를 디코드하고, 디코드된 코드워드의 길이를 나타내는 신호를 출력 단자(31)에서 생성한다. 0 런 렝쓰 LUT(346)는 입력 단자(35)로부터의 0 런 런 렝쓰 코드워드를 나타내는 가변 길이 코드워드(CW)를 디코드하고, 그 코드워드의 길이를 나타내는 신호를 그 출력 단자에서 생성한다. 도 5는 0 런 런-렝쓰 LUT(346)의 내용을 나타내는 테이블이다. 좌측 열(column)은 (도 2의) 레지스터(27)로부터 오는 입력 코드워드(CW)를 나타낸다. 대시(dash)("-")는 "상관없음(don't care)" 비트를 나타낸다. 우측 열은 인지된 0 런 런-렝쓰 코드워드의 길이를 나타낸다. 이 테이블은 비교적 작기 때문에, 이 데이터는 비교적 짧은 지연시간을 가지며, 클록 주기의 초기에 나타난다.
0 또는 1 런-렝쓰 코드워드를 나타낼 다음의 순차 코드워드를 디코드하기 위하여, 입력 단자로부터 온 코드워드(CW)는 그 다음 코드워드가 더 작은 상위 비트를 점유하도록 0 런 코드워드 LUT(346)에 의해 인지된 코드워드의 폭만큼 쉬프트 되어야만 한다. 제 3 배렐 쉬프터(348)는 이 쉬프트를 수행한다. 제 3 배렐 쉬프터는, 0 런 코드워드 길이 LUT(346)가 0 런 코드워드를 검출함으로써 0 런 런-렝쓰 코드워드가 인지되는 때에만, 동작한다. 위에 기술된 바와 같이, 그러한 코드워드를 위해서는 제한된 수의 길이만이 존재한다. 따라서, 지연시간을 저감시키기 위하여, 제 3 배렐 쉬프터(348)는 멀티플렉서로서 구현된다. 예를 들어, 도시된 실시 예에서, 본 발명자는 0 런 런-렝쓰 코드워드를 나타내는 코드워드를 위해 단지 13개의 가능한 길이만이 존재한다는 것을 인지하였다. 따라서, 제 3 배렐 쉬프터(348)를 형성하는 멀티플렉서는 단지 13 입력을 갖는 멀티플렉서일 필요가 있다. 0 런 코드워드 색인 LUT(344)는 13 비트의 출력 신호, 즉 하나의 0 런 코드워드를 위하여 각각의 가능한 길이에 대해 한 비트씩, 즉 디코드된 포맷으로 생성한다. 상기 테이블의 구조는 도 5에 도시된 것과 유사하다. 상기 테이블로부터의 출력은 13 비트인데, 상기 출력에서 한 비트는 동일한 길이를 갖는 모든 코드워드를 나타낸다. 당업자는 그러한 출력을 제공하기 위하여 도 5의 테이블을 어떻게 수정해야 하는지를 이해할 것이다.
또한, 0 런 코드워드 검출기 LUT(342)는 입력 단자(35)에서의 코드워드가 0 런 코드워드라는 것을 나타내기 위하여 단일 비트 출력을 제공한다. 이 테이블의 구조는 그 출력이 모든 나열된 엔트리에 대해 1이고, 그렇지 않은 경우에는 0인 단일 비트라는 점을 제외하고, 도 5의 테이블 구조와 역시 유사하다. 당업자는 그러한 출력을 제공하기 위하여 도 5의 테이블을 어떻게 수정하여야 하는지 알 것이다. 0 런 색인 LUT(344)로부터의 제어 신호가 디코드된 포맷으로 되어 있기 때문에, 제 3 배렐 쉬프터(348)를 형성하는 멀티플렉서는 13개의 AND 게이트 뱅크(bank)들로 구현될 수 있다. AND 게이트 뱅크 각각은 미리 결정된 비트 수만큼 입력을 쉬프트하기 위해 정렬될 수 있고, 0 런 코드워드 색인 LUT(344)로부터의 비트들 중 하나 및 0 런 코드워드 검출 LUT(342)로부터의 0 런 코드워드로 검출된 비트에 의해 인에이블될 수 있다. 이러한 방식으로 제조되는 경우, 제 3 배렐 쉬프터(348)는 저 지연시간을 가지고 동작한다.
0 및 1 런 코드워드 색인 LUT(352)는 제 3 배렐 쉬프터로부터 나온 쉬프트된 코드워드(CW)에서, 0 런 또는 1 런 중 어느 하나인, 제 2 순차 코드워드를 검출한다. 본 발명자는 제 2 코드워드 또한 오직 제한된 수의 가능한 길이를 갖는다는 것을 인지하였다. 따라서, 0 및 1 런 코드워드 색인 LUT(352)는 또한 색인 신호를 디코드된 포맷으로 생성하는데, 여기에서 상기 색인 신호의 각 비트는 그러한 제 2 코드워드의 각 길이를 나타낸다. 도 6은 0 및 1 런 색인 LUT(352)의 내용을 나타내는 테이블을 도시한다. 도 6에서, "-"는 '상관없음' 비트를 나타낸다. 도시된 실시 예에는 14개의 가능한 제 2 코드워드 길이가 있다. 따라서, 0 및 1 런 코드워드 색인 LUT(352)로부터의 출력 신호는 14 비트를 포함한다. 0 및 1 런 코드워드 검출기 LUT(350)는 0 또는 1 런 코드워드의 존재를 나타내는 단일 비트 신호를 생성한다. 0 및 1 런 코드워드 검출기 LUT(350)는 단일 비트가 도시된 엔트리 각각에 대해 활성화되고, 그렇지 않은 경우에 비활성화되는 것을 제외하고는 도 6에 도시된 테이블의 구조와 유사한 구조를 갖는다. 당업자는 이 신호를 생성하기 위하여 도 6에 도시된 테이블을 어떻게 수정할 것인가를 알 것이다. 게이트(354)는 0 및 1 런 코드워드 검출기 LUT(350)로부터의 신호가 그러한 코드워드가 존재한다는 것을 가리킬 때 0 및 1 런 코드워드 색인 LUT(352)부터의 색인 신호를 통과시키고, 그렇지 않을 때에는 어떤 신호도 게이트(354)에 의해 통과되지 않는다. 도 4에 도시된 다양한 LUTs 고유의 처리 시간으로 인하여, 게이트(354)로부터의 신호는 클록 주기에서 비교적 늦게 나타난다.
도 3을 다시 참조하면, 길이 LUT(30)로부터의 길이 신호는 합산기(282)에서 D 플립-플롭(284)으로부터 온 어큐물레이터 내용과 합산된다. 마찬가지로, 길이 LUT(30)로부터 온 길이 신호는 제 2 배렐 쉬프터(26)의 쉬프트를 제어하기 위하여 사용된다. 합계 처리 및 쉬프트 처리를 위한 지연시간을 최소화하기 위하여, 합산기(282) 및 제 2 배렐 쉬프터의 구조는 도 4, 도 5, 및 도 6를 참조하여 위에 기술된 길이 LUT(30)의 구조에 적응된다.
도 7은 도 1 및 도 3에 도시된 VLD 시스템의 일부분에 대한 보다 자세한 블록도이다. 도 7에서, 길이 LUT(30)에 있는 (도 4의) 0 런 코드워드 길이 LUT(346)로부터의 0 런 코드워드 길이는 덧셈기(292)의 제 1 입력 단자 및 배렐 쉬프트 유닛(302)의 제어 입력 단자에 전달된다. 덧셈기(292)의 출력 단자는 복수의 덧셈기(294)(294A, 294B ... 294n)의 제 1 입력 단자 각각에 공통으로 연결된다. 복수의 덧셈기(294)의 출력 단자 각각은 제 1 멀티플렉서(296)의 대응하는 데이터 입력 단자에 연결된다. 멀티플렉서(296)의 출력 단자는 어큐물레이터 D 플립-플롭(284)의 입력 단자에 연결된다. 어큐물레이터 D 플립-플롭(284)의 출력 단자는 덧셈기(292)의 제 2 입력 단자에 연결된다. 복수 개의 상수 길이 신호 소스들은 복수 개의 덧셈기(294)들 각각의 제 2 입력 단자에 개별적으로 연결된다. 즉, 제 1 상수 길이(L1) 소스는 복수 개의 덧셈기(294) 중 첫 번째 것(294A)의 제 2 입력 단자에 연결되고; 제 2 상수 길이(L2) 소스는 복수 개의 덧셈기(294) 중 두 번째 것(294B)의 제 2 입력 단자에 연결되고; n 번째 상수 길이(Ln)의 소스는 복수 개의 덧셈기(294) 중 n 번째 덧셈기에 연결된다, 그리고 나머지도 같은 방식으로 연결된다.
배렐 쉬프트 유닛(302)의 입력 단자는 (여기에는 도시되지 않았지만 도 2의) 제 1 배렐 쉬프터(24)의 출력 단자에 연결된다. 배렐 쉬프트 유닛(302)의 출력 단자는 제 2 멀티플렉서(306)의 각 입력 단자들에 공통으로 연결된다. 상기 배렐 쉬프트 유닛(302) 및 상기 멀티플렉서의 조합은 제 2 배렐 쉬프터 회로(26)를 구성한다. 제 2 멀티플렉서(306)의 출력 단자는 길이 LUT(30)의 입력 단자에 연결된다. 길이 LUT(30)에 있는 (도 4의) 게이트(354)로부터의 0 및 1 런 색인은 제 1 멀티플렉서(296) 및 제 2 멀티플렉서(306)의 각 제어 입력 단자에 연결된다.
동작 시, 어큐물레이터 D 플립-플롭(284)의 현재 값은 덧셈기(292)에서 0 런 코드워드 길이에 더해진다. 이들 두 값이 클록 주기에서 비교적 초기에 이용 가능하므로, 덧셈기(292)는 회로의 나머지 부분에 전달하기에 충분한 시간 안에 그 출력 값을 생성할 수 있다. 그러나, (도 4의) 제 3 배렐 쉬프터(348) 및 LUTs(350 및 352) 고유의 지연시간으로 인하여, 제 2의 연속되는 0 또는 1런 코드워드의 길이가 클록 주기에서 비교적 늦게까지 이용 가능하지 않기 때문에, 덧셈기에서 이들 값의 처리는 충분한 전달 시간을 허용하지 않게 될 것이다. 대신에, 덧셈기(292)로부터 나온 합계는 복수 개의 덧셈기(294)에 병렬로 공급된다.
병렬 덧셈기(294)에의 제 2 입력(L1 - Ln) 각각은 제 2의 연속되는 0 또는 1 런 코드워드를 위해 가능한 길이의 고정된 수 중 하나를 나타낸다. 바람직한 실시 예에서는 제 2 코드워드에 대해 14 개의 가능한 길이가 존재한다; 따라서, 14 개의 병렬 덧셈기가 존재하며, 각각의 병렬 덧셈기는 해당 덧셈기에 대응하는 코드워드의 길이를 나타내는 값을 자기의 제 2 입력 단자에서 수신한다. 위에 기술된 바와 같이, 0 또는 1 런 코드워드 색인 신호는 14 비트 신호인데, 상기 색인 신호에서 각 비트는 가능한 길이 중 하나를 나타내며, 한번에 색인 신호에 있는 비트들 중 단 하나만 활성 상태가 된다. 이 14 비트 색인 신호는 제 1 멀티플렉서(296)을 제어한다. 제 1 멀티플렉서(296)는 14 개의 AND 게이트 뱅크들에 의해 만들어지며, 각각의 뱅크는 복수 개의 덧셈기(294) 중 해당하는 하나로부터 신호를 수신하며, 또한 색인 신호 내에 있는 하나의 대응하는 비트에 의해 인에이블(enable)된다. 제 1 멀티플렉서(296)로부터의 출력 신호는 어큐물레이터 D 플립-플롭(284)에 저장된다. 제 1 멀티플렉서(296) 및 각각이 하나의 고정 값 입력을 갖는 14 개의 덧셈기(294)는 제 2 전가산기(full adder)의 동작 보다 빠르기 때문에, 이 배열은 단일 코드워드 구간 내에서 제 2의 0 또는 1 런-렝쓰 코드워드의 길이를 어큐물레이터 값에 더하는 것을 허용한다.
결론적으로, 비록 처음에는 14 개의 병렬 덧셈기(294)가 많은 회로를 요구할 것처럼 보이지만, 덧셈기 각각이 고정된 하나의 입력 값만을 갖는다는 것이 이해되면, 전가산기의 회로에 비해 단지 최소로만 증가한 도시된 회로가 구현되게 하는 논리 최소화 원리가 적용될 수 있다는 것을 알 수 있다.
마찬가지로, 제 2 멀티플렉서(306)의 각 입력 단자는 제 1 배렐 쉬프터로부터 코드워드를 수신하며, 각각의 코드워크는 인지된 제 1의 0 런 코드워드의 길이 만큼 배렐 쉬프트 유닛(302)에 의해 쉬프트되어 있다. 제 2 멀티플렉서(306)의 입력 단자 각각에서, 이 신호는 제 2의 연속되는 0 또는 1 런 코드워드의 가능 길이의 고정된 수 중 하나를 나타내는 분량만큼 더 쉬프트된다. 위에 기술된 바와 같이, 제 2 코드워드에 대해 14개의 가능 길이가 존재한다; 따라서, 14 개의 입력 단자가 존재하며, 각각의 입력 단자는 해당 입력 단자에 대응하는 제 2 코드워드의 길이만큼 쉬프트된 코드워드 신호를 수신한다. 이 쉬프트 동작은 적절한 수의 비트 위치만큼 쉬프트된 배렐 쉬프트 유닛(302)의 출력 단자로부터의 신호를, 제 2 멀티플렉서(306)의 입력 단자에 "S"로 라벨(label)된 작은 상자로 표현된 바와 같이 고정배선함으로서 기존 방식으로 수행된다. 위에 기술된 바와 같이, 0 또는 1 런 코드워드 색인 신호는 14 비트의 신호인데, 상기 색인 신호에서 각 비트는 가능 길이 중 하나를 나타내며, 한번에 색인 신호에 있는 비트들 중 단 하나의 비트만 활성 상태에 있다. 이 14 비트 색인 신호는 제 2 멀티플렉서(306)을 제어한다. 제 2 멀티플렉서(306)는 색인 신호에 있는 하나의 대응하는 비트에 의해 인에이블되는 14 개의 AND 게이트 뱅크에 의해 만들어진다. 제 2 멀티플렉서(306)로부터의 출력 신호는 그 다음 디코드되지 않은 코드워드를 나타내며, 길이 LUT(30)에 공급된다. 제 2 멀티플렉서(306)의 동작이 배렐 쉬프터의 동작보다 빠르기 때문에, 이 배열은 그 다음 디코드되지 않은 코드워드가 길이 LUT(30)에 단일 코드워드 구간 안에 공급되도록 허용한다.
전술한 관점에서 볼 때, 첨부된 청구범위에 의해 이후 정의된 바와 같이 본 발명의 사상과 범주 내에서 다양한 변형이 이루어질 수 있으며, 그래서 본 발명은 제공된 예들에 한정되지 않는다는 점은 당업자에게 자명할 것이다.
상술한 바와 같은 본 발명은, 추가적인 디코딩 또는 트랜스코딩 회로를 요구하지 않고서, 또한 룩업테이블 내에서 n 개의 가변 길이 코드워드에 대해서 n2개의 엔트리가 요구되는 룩업테이블을 요구하지 않고서도, VLD 클록 주기 당 적어도 두 개의 계수를 디코딩하는 속도를 유지할 수 있는 시스템 등을 제공하는 효과가 있다.

Claims (16)

  1. 다수의 주기를 갖는 클록 신호에 반응하는 가변 길이 코드워드 디코더에 있어서 :
    각각 런-렝쓰 인코드된 코드워드를 나타내는 순차적인 가변 길이 코드워드들을 생성하는 코드워드 생성 회로(10);
    상기 코드워드 생성 회로에 연결되어, 적어도 다음에 디코드될 제 1 가변 길이 코드워드, 및 상기 제 1 가변 길이 코드워드 다음에 디코드될 제 2 가변 길이 코드워드를 출력 단자에서 제공하는 배렐 쉬프터 회로(20);
    상기 배렐 쉬프터의 출력 단자에 연결되는 코드워드 디코딩 회로(30,40)로서, 상기 코드워드 디코딩 회로는 :
    단일 클록 주기에서, 각각이 개별적인 0 런 런-렝쓰 코드워드를 나타내는, 상기 제 1 및 제 2 가변 길이 코드워드를 디코드하고;
    단일 클록 주기에서, 0 런 런-렝쓰 코드워드를 나타내는 상기 제 1 순차 가변 길이 코드워드 및 1 런 런-렝쓰 코드워드를 나타내는 상기 제 2 가변 길이 코드워드를 디코드하고; 및
    다른 모든 가변 길이 코드워드들에 대해 단일 클록 주기에서 하나의 가변 길이 코드워드를 디코드하는, 코드워드 디코딩 회로(30,40)를
    포함하는 것을 특징으로 하는, 가변 길이 코드워드 디코더.
  2. 제 1 항에 있어서, 상기 배렐 쉬프터 회로는:
    상기 코드워드 생성 회로에 연결된 제 1 배렐 쉬프터(24); 및
    상기 제 1 배렐 쉬프터에 연결된 제 2 배렐 쉬프터(26)를
    포함하며, 여기서:
    상기 제 2 배렐 쉬프터는 다음 디코드되지 않은 가변 길이 코드워드를 상기 배렐 쉬프터 회로의 출력 단자의 더 작은 상위 비트에 제공하도록 동작하고; 및
    상기 제 1 배렐 쉬프터는 상기 코드워드 생성 회로로부터의 상기 다음 코드워드를 상기 제 2 배렐 쉬프터에 있는 코드워드의 트레일링 에지에 공급하도록 동작하는
    것을 특징으로 하는, 가변 길이 코드워드 디코더.
  3. 제 1 항에 있어서, 상기 코드워드 디코딩 회로는 :
    상기 배렐 쉬프터의 출력 단자에 연결되어, 상기 가변 길이 코드워드에 의해 표현된 상기 런-렝쓰 코드워드를 나타내는 데이터를 생성하는 값 룩업테이블(40); 및
    상기 배렐 쉬프터의 출력 단자에 연결되어, 상기 가변 길이 코드워드의 길이를 나타내는 데이터를 생성하는 길이 룩업테이블(30)을
    포함하는 것을 특징으로 하는, 가변 길이 코드워드 디코더.
  4. 제 3 항에 있어서, 상기 길이 룩업테이블은 :
    0 런 런-렝쓰 코드워드를 표현하는 제 1 가변 길이 코드워드의 길이를 나타내는 데이터를 생성하는 제 1 룩업테이블(30);
    상기 제 1 가변 길이 코드워드의 다음에 이어지는 제 2 가변 길이 코드워드의 길이를 나타내며, 0 런 런-렝쓰 코드워드 및 1 런 런-렝쓰 코드워드 중 하나를 나타내는 데이터를 생성하는 제 2 룩업테이블(30); 및
    다른 모든 가변 길이 코드워드들의 길이를 나타내는 데이터를 생성하는 제 3 룩업테이블(30)을
    포함하는 것을 특징으로 하는, 가변 길이 코드워드 디코더.
  5. 제 3 항에 있어서, 상기 배렐 쉬프터 회로는 :
    상기 코드워드 생성 회로에 연결되고 상기 길이 룩업테이블에 반응하는 제 1 배렐 쉬프터(24); 및
    상기 제 1 배렐 쉬프터와 상기 배렐 쉬프터 회로의 출력 단자 사이에 연결되고 상기 길이 룩업테이블에 반응하는 제 2 배렐 쉬프터(26)를
    포함하며; 여기서:
    상기 제 2 배렐 쉬프터는 상기 배렐 쉬프터 회로의 출력 단자의 더 작은 상위 비트에서 그 다음의 디코드되지 않은 가변 길이 코드워드를 생성하고; 및
    상기 제 1 배렐 쉬프터는 상기 코드워드 생성 회로로부터의 그 다음의 코드워드를 상기 제 2 배렐 쉬프터에 있는 코드워드의 트레일링 에지에서 유지하는
    것을 특징으로 하는, 가변 길이 코드워드 디코더.
  6. 제 5 항에 있어서, 상기 제 2 배렐 쉬프터와 상기 길이 룩업테이블 사이에 연결되고 상기 클록 신호에 반응하는 레지스터(27)로서, 상기 제 2 배렐 쉬프터가 상기 다음의 디코드되지 않은 가변 길이 코드워드를 상기 출력 단자의 더 작은 상위 비트에서 생성하기 위해 상기 레지스터의 출력에 반응하는, 레지스트(27)를 더 포함하는 것을 특징으로 하는, 가변 길이 코드워드 디코더.
  7. 제 5 항에 있어서, 상기 길이 룩업테이블과 상기 제 1 배렐 쉬프터 사이에 연결된 어큐물레이터(28)로서,
    상기 제 1 배렐 쉬프터가 상기 어큐물레이터에 반응하여 동작하고; 및
    상기 제 2 배렐 쉬프터가 상기 길이 룩업테이블에 반응하여 동작하는,
    어큐물레이터(28)를 더 포함하는 것을 특징으로 하는, 가변 길이 코드워드 디코더.
  8. 제 7 항에 있어서:
    상기 길이 룩업테이블은:
    0 런 런-렝쓰 코드워드를 표현하는 제 1 가변 길이 코드워드의 길이를 나타내는 데이터를 생성하는 제 1 룩업테이블(30,60); 및
    상기 제 1 가변 길이 코드워드 다음에 이어지는 제 2 가변 길이 코드워드의 길이를 나타내며, 0 런 런-렝쓰 코드워드 및 1 런 런-렝쓰 코드워드 중 하나를 나타내는 데이터를 생성하는 제 2 룩업테이블(30,60)을
    포함하고; 및
    상기 어큐물레이터(28)는:
    상기 클록 신호에 반응하는 래치;
    상기 래치에 연결된 제 1 입력 단자, 상기 제 1 룩업테이블에 연결된 제 2 입력 단자, 그리고 출력 단자를 구비하는 제 1 덧셈기 회로;
    상기 제 1 덧셈기의 출력 단자에 연결된 제 1 입력 단자, 상기 제 2 룩업테이블에 연결된 제 2 입력 단자, 및 상기 래치에 연결된 출력 단자를 구비하는 제 2 덧셈기 회로를
    포함하는 것을 특징으로 하는, 가변 길이 코드워드 디코더.
  9. 제 8 항에 있어서:
    상기 제 1 룩업테이블은 상기 제 1 가변 길이 코드워드의 길이 값을 갖는 신호를 생성하고;
    상기 제 2 가변 길이 코드워드는 복수의 길이들 중 하나의 길이일 수 있으며, 상기 제 2 룩업테이블은 상기 제 2 가변 길이 코드워드의 상기 복수의 길이들에 대응하는 개별적인 값들을 갖는 색인 신호를 생성하고; 및
    상기 제 2 덧셈기 회로는:
    상기 제 1 덧셈기 회로의 출력 단자에 공통으로 연결된 개별적인 제 1 입력 단자들, 상기 제 2 가변 길이 코드워드의 복수의 길이들 중 하나의 개별적인 값을 갖는 대응하는 입력 신호를 수신하기 위하여 연결된 개별적인 제 2 입력 단자들, 및 출력 단자들을 구비하며, 상기 제 2 가변 길이 코드워드의 복수의 길이들에 각각 대응하는 복수의 덧셈기들; 및
    상기 복수의 덧셈기들 중 대응하는 덧셈기들의 출력 단자들에 연결되는 복수의 입력 단자들, 상기 제 2 룩업테이블로부터의 색인 신호에 반응하는 제어 입력 단자, 및 상기 래치에 연결된 출력 단자를 구비하는 멀티플렉서를
    포함하는 것을 특징으로 하는, 가변 길이 코드워드 디코더.
  10. 제 9 항에 있어서:
    상기 색인 신호는 상기 복수 개의 길이들 중 하나에 대응하는 개별적인 비트들을 갖는 다중비트 신호이고;
    상기 멀티플렉서는 상기 복수의 길이들에 대응하는 복수의 AND 게이트들을 구비하는데, 각 AND 게이트는 상기 덧셈기들 중 대응하는 덧셈기에 연결된 제 1 입력 단자, 상기 색인 신호의 비트들 중 개별적인 하나의 비트에 반응하는 제 2 입력 단자, 및 상기 래치에 연결된 출력 단자를 구비하는
    것을 특징으로 하는, 가변 길이 코드워드 디코더.
  11. 제 8 항에 있어서:
    상기 제 1 룩업테이블은 상기 제 1 가변 길이 코드워드의 길이 값을 갖는 신호를 생성하고;
    상기 제 2 가변 길이 코드워드는 복수의 길이들 중 하나의 길이일 수 있으며, 상기 제 2 룩업테이블은 상기 제 2 가변 길이 코드워드의 복수의 길이들에 대응하는 개별적인 값들을 갖는 색인 신호를 생성하고; 및
    상기 제 2 배렐 쉬프터는:
    상기 제 1 배렐 쉬프터에 연결된 제 3 배렐 쉬프터; 및
    상기 제 3 배렐 쉬프터에 연결된 복수의 입력 단자들로서, 개별적인 입력 단자 각각은 상기 제 2 가변 길이 코드워드의 복수의 길이들 중 대응하는 길이를 나타내는 비트 수만큼 쉬프트된 신호를 상기 제 3 배렐 쉬프터로부터 수신하는, 입력 단자들, 상기 제 2 룩업테이블로부터의 상기 색인 신호에 반응하는 제어 입력 단자, 및 상기 배렐 쉬프터 회로의 출력 단자에 결합된 출력 단자를 구비하는 멀티플렉서를
    포함하는 것을 특징으로 하는, 가변 길이 코드워드 디코더.
  12. 제 11 항에 있어서:
    상기 색인 신호는 상기 복수의 길이들 중 하나의 길이에 대응하는 개별적인 비트들을 갖는 다중비트 신호이고;
    상기 멀티플렉서는 상기 복수의 길이들에 대응하는 복수의 AND 게이트들을 구비하는데, 각 AND 게이트는 상기 멀티플렉서의 복수의 입력 단자들 중 대응하는 입력 단자에 연결된 제 1 입력 단자, 상기 색인 신호의 비트들 중 개별적인 하나의 비트에 반응하는 제 2 입력 단자, 및 상기 배럴 쉬프터 회로의 출력 단자에 연결된 출력 단자를 구비하는
    것을 특징으로 하는, 가변 길이 코드워드 디코더.
  13. 각 가변 길이 코드워드가 런-렝쓰로 인코드된 코드워드를 표현하는 순차 가변 길이 코드워드들을 처리하며, 다수의 주기를 갖는 클록 신호에 반응하는 가변 길이 코드워드 디코더에서, 상기 가변 길이 코드워드를 디코딩하는 방법에 있어서:
    적어도 다음에 디코드될 제 1 및 제 2 가변 길이 코드워드를 추출하는 단계;
    상기 제 1 가변 길이 코드워드가 0 런 런-렝쓰 인코드된 코드워드를 표현하는지 여부를 검출하는 단계;
    만일 상기 제 1 가변 길이 코드워드가 0 런 런-렝쓰 인코드된 코드워드를 표현하지 않는다면, 단일 클록 주기에서:
    제 1 룩업테이블에서 상기 제 1 가변 길이 코드워드에 의해 표현된 런-렝쓰 코드워드의 길이를 탐색하는 단계; 및
    상기 순차 가변 길이 코드워드들을 상기 제 1 가변 길이 코드워드의 길이만큼 쉬프트함으로서 적어도 다음에 디코드될 제 1 및 제 2 가변 길이 코드워드를 추출하는 단계를
    포함하고;
    만일 상기 제 1 가변 길이 코드워드가 0 런 런-렝쓰 인코드된 코드워드를 표현한다면, 단일 클록 주기에서:
    제 2 룩업테이블에서 상기 제 1 가변 길이 코드워드에 의해 표현된 상기 런-렝쓰 코드워드의 길이를 탐색하는 단계;
    상기 제 2 가변 길이 코드워드가 0 런 런-렝쓰 코드워드 및 1 런 런-렝쓰 코드워드 중 하나를 표현하는가 여부를 검출하는 단계;
    만일 상기 제 2 가변 길이 코드워드가 0 런 런-렝쓰 코드워드 및 1 런 런-렝쓰 코드워드 중 하나를 표현하지 않는다면, 상기 순차 가변 길이 코드워드들을 상기 제 1 가변 길이 코드워드의 길이만큼 쉬프트함으로서 적어도 다음에 디코드될 제 1 및 제 2 가변 길이 코드워드를 추출하는 단계를;
    만일 상기 제 2 가변 길이 코드워드가 0 런 런-렝쓰 코드워드 및 1 런 런-렝쓰 코드워드 중 하나를 표현한다면
    제 3 룩업테이블에서 상기 제 2 가변 길이 코드워드에 의해 표현된 상기 런-렝쓰 코드워드의 길이를 탐색하는 단계;
    상기 제 2 가변 길이 코드워드 및 상기 제 1 가변 길이 코드워드의 개별적인 길이들을 결합하는 단계;
    상기 순차 가변 길이 코드워드들을 상기 제 1 및 제 2 가변 길이 코드워드의 결합된 길이만큼 쉬프트함으로서 적어도 다음에 디코드될 제 1 및 제 2 가변 길이 코드워드를 추출하는 단계를
    포함하는 것을 특징으로 하는, 가변 길이 코드워드 디코딩 방법.
  14. 제 13 항에 있어서:
    만일 상기 제 1 가변 길이 코드워드가 0 런 런-렝쓰로 인코드된 코드워드를 표현하지 않으면, 값 룩업테이블에서 제 1 런-렝쓰 인코드된 코드워드의 값을 탐색하는 단계를
    포함하고;
    만일 상기 제 1 가변 길이 코드워드가 0 런 런-렝쓰 인코드된 코드워드를 표현하면:
    상기 값 룩업테이블에서 상기 제 1 런-렝쓰 인코드된 코드워드의 값을 탐색하는 단계; 및
    만일 상기 제 2 가변 길이 코드워드가 0 런 런-렝쓰 코드워드 및 1 런 런-렝쓰 코드워드 중 하나를 나타내면, 상기 값 룩업테이블에서 상기 제 2 런-렝쓰 인코드된 코드워드의 값을 탐색하는 단계를
    포함하는 것을 특징으로 하는, 가변 길이 코드워드 디코딩 방법.
  15. 제 13 항에 있어서:
    상기 제 2 가변 길이 코드워드는 미리 결정된 수의 길이들 중 하나의 길이를 가지고;
    상기 제 2 가변 길이 코드워드의 값을 탐색하는 상기 단계는 상기 제 2 가변 길이 코드워드의 미리 결정된 수의 길이들 중 하나의 길이를 나타내는 색인을 탐색하는 단계를 포함하고; 및
    상기 순차 가변 길이 코드워드들을 상기 제 1 및 제 2 가변 길이 코드워드의 결합된 길이만큼 쉬프트함으로써 적어도 다음에 디코드될 제 1 및 제 2 가변 길이 코드워드를 추출하는 상기 단계는:
    상기 순차 가변 길이 코드워드들을 상기 제 1 가변 길이 코드워드의 길이만큼 사전 쉬프트하는 단계;
    상기 사전 쉬프트된 순차 가변 길이 코드워드들의 미리 결정된 갯수의 버전(version)들을 생성하는 단계로서. 각 버전은 상기 제 2 가변 길이 코드워드들의 상기 미리 결정된 갯수의 길이들 중 개별적인 길이만큼 더 쉬프트되는, 미리 결정된 갯수의 버전들을 생성하는 단계; 및
    상기 색인에 대응하는 상기 쉬프트된 버전을 상기 쉬프트된 가변 길이 코드워드들로서 선택하는 단계를
    포함하는 것을 특징으로 하는, 가변 길이 코드워드 디코딩 방법.
  16. 제 13 항에 있어서,
    상기 제 2 가변 길이 코드워드는 미리 결정된 갯수의 길이들 중 하나의 길이를 가지고;
    상기 제 2 가변 길이 코드워드의 값을 탐색하는 상기 단계는 상기 제 2 가변 길이 코드워드의 미리 결정된 갯수의 길이들 중 하나의 길이를 나타내는 색인을 탐색하는 단계를 포함하고; 및
    상기 제 1 및 제 2 가변 길이 코드워드의 길이를 결합하는 상기 단계는 상기 미리 결정된 갯수의 합계를 형성하기 위하여 상기 제 1 가변 길이 코드워드의 길이를 상기 미리 결정된 갯수의 길이들 각각에 더하는 단계, 및 상기 색인에 대응하는 상기 미리 결정된 갯수의 합계들 중 하나를 상기 제 1 및 제 2 가변 길이 코드워드의 결합된 길이로서 선택하는 단계를 포함하는
    것을 특징으로 하는, 가변 길이 코드워드 디코딩 방법.
KR1019990053485A 1998-12-16 1999-11-29 가변 길이 코드워드 디코더 및 가변 길이 코드워드 디코딩 방법 KR100748485B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/213,041 US6215424B1 (en) 1998-12-16 1998-12-16 System for variable length codeword processing suitable for video and other applications
US09/213,041 1998-12-16

Publications (2)

Publication Number Publication Date
KR20000047765A KR20000047765A (ko) 2000-07-25
KR100748485B1 true KR100748485B1 (ko) 2007-08-13

Family

ID=22793504

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990053485A KR100748485B1 (ko) 1998-12-16 1999-11-29 가변 길이 코드워드 디코더 및 가변 길이 코드워드 디코딩 방법

Country Status (6)

Country Link
US (1) US6215424B1 (ko)
EP (1) EP1014589B1 (ko)
JP (1) JP4422833B2 (ko)
KR (1) KR100748485B1 (ko)
CN (1) CN100382433C (ko)
DE (1) DE69939521D1 (ko)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6518896B1 (en) 2000-01-15 2003-02-11 Sony Electronics, Inc. Multiple symbol length lookup table
US6445314B1 (en) * 2000-03-01 2002-09-03 Cisco Technology Inc. System and method for the decoding of variable length codes
US6501398B2 (en) * 2000-03-24 2002-12-31 Matsushita Electric Industrial Co., Ltd. Variable-length code decoder using barrel shifters and a look-up table
JP2001332978A (ja) * 2000-05-18 2001-11-30 Sony Corp データストリーム変換装置とその方法、可変長符号化データストリーム生成装置とその方法、および、カメラシステム
JP3661594B2 (ja) * 2001-02-07 2005-06-15 ソニー株式会社 データストリーム生成装置とその方法、可変長符号化データストリーム生成装置とその方法、および、カメラシステム
JP4916059B2 (ja) * 2001-07-31 2012-04-11 キヤノン株式会社 画像処理装置
GB0124882D0 (en) * 2001-10-17 2001-12-05 Koninkl Philips Electronics Nv Improved variable length decoder
US7034849B1 (en) 2001-12-31 2006-04-25 Apple Computer, Inc. Method and apparatus for image blending
US6573846B1 (en) * 2001-12-31 2003-06-03 Apple Computer, Inc. Method and apparatus for variable length decoding and encoding of video streams
US7681013B1 (en) 2001-12-31 2010-03-16 Apple Inc. Method for variable length decoding using multiple configurable look-up tables
KR100848905B1 (ko) * 2002-01-21 2008-07-29 주식회사 엘지이아이 가변 길이 복호화기
KR100450753B1 (ko) * 2002-05-17 2004-10-01 한국전자통신연구원 프로세서와 연결된 프로그램 가능한 가변 길이 디코더
KR100975062B1 (ko) 2003-12-27 2010-08-11 삼성전자주식회사 가변길이 부호화 장치 및 가변길이 부호화 방법
CN100353674C (zh) * 2004-03-12 2007-12-05 东南大学 8b/10b编码的实现装置
US7499595B2 (en) * 2004-08-18 2009-03-03 Cisco Technology, Inc. Joint amplitude and position coding for photographic image and video coding
US7499596B2 (en) * 2004-08-18 2009-03-03 Cisco Technology, Inc. Amplitude coding for clustered transform coefficients
US7471841B2 (en) * 2004-06-15 2008-12-30 Cisco Technology, Inc. Adaptive breakpoint for hybrid variable length coding
US7471840B2 (en) * 2004-08-18 2008-12-30 Cisco Technology, Inc. Two-dimensional variable length coding of runs of zero and non-zero transform coefficients for image compression
CN1306823C (zh) * 2004-07-30 2007-03-21 联合信源数字音视频技术(北京)有限公司 一种并行处理行程解码、反扫描和反量化的方法及装置
CN100394693C (zh) * 2005-01-21 2008-06-11 华中科技大学 一种变长码的编码和解码方法
CN100356793C (zh) * 2005-06-09 2007-12-19 清华大学 多变长码并行解码器
CN101547353B (zh) * 2008-03-28 2011-09-07 富士通株式会社 可变长码解码加速装置
CN101635850B (zh) * 2008-08-11 2012-01-11 青岛海信信芯科技有限公司 高速解码方法及装置
US8824569B2 (en) * 2011-12-07 2014-09-02 International Business Machines Corporation High bandwidth decompression of variable length encoded data streams
US9374106B2 (en) 2013-08-28 2016-06-21 International Business Machines Corporation Efficient context save/restore during hardware decompression of DEFLATE encoded data
US8933824B1 (en) 2013-08-28 2015-01-13 International Business Machines Corporation Hardware decompression of deflate encoded data with multiple blocks
US9800640B2 (en) 2013-10-02 2017-10-24 International Business Machines Corporation Differential encoder with look-ahead synchronization
US9538044B2 (en) * 2015-03-20 2017-01-03 Kyocera Document Solutions Inc. Apparatus and method for data decoding

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5557271A (en) * 1993-09-23 1996-09-17 Goldstar Co., Ltd. Variable length coder and variable length decoder
WO1998021831A2 (en) * 1996-11-14 1998-05-22 Philips Electronics N.V. Variable length decoding

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5225832A (en) 1992-02-13 1993-07-06 Industrial Technology Research Institute High speed variable length decoder
US5233348A (en) * 1992-03-26 1993-08-03 General Instrument Corporation Variable length code word decoder for use in digital communication systems
KR970002483B1 (ko) * 1993-11-29 1997-03-05 대우전자 주식회사 고속의 가변길이 복호화장치
KR0152032B1 (ko) * 1994-05-06 1998-10-15 김광호 영상신호를 위한 가변장복호기
JP2728003B2 (ja) * 1995-02-21 1998-03-18 日本電気株式会社 ゼロラン展開回路およびゼロラン展開方法
KR0154011B1 (ko) * 1995-03-16 1998-11-16 배순훈 가변길이 복호화 장치
KR0178201B1 (ko) * 1995-08-31 1999-05-01 배순훈 가변 길이 복호화 장치
US5650905A (en) 1995-12-28 1997-07-22 Philips Electronics North America Corporation Variable length decoder with adaptive acceleration in processing of Huffman encoded bit streams
US5686916A (en) 1995-12-28 1997-11-11 Philips Electronics North America Corp. Multi-code-book variable length decoder
US5757295A (en) 1995-12-28 1998-05-26 Philips Electronics North America Corporation Variable length decoder with enhanced throughput due to parallel processing of contiguous code words of identical type
US5710561A (en) * 1996-01-02 1998-01-20 Peerless Systems Corporation Method and apparatus for double run-length encoding of binary data
US5841380A (en) 1996-03-29 1998-11-24 Matsushita Electric Corporation Of America Variable length decoder and method for decoding two codes per clock cycle
WO1998000924A1 (en) 1996-06-28 1998-01-08 Philips Electronics N.V. High performance variable length decoder with two-word bit stream segmentation and related method
US6011498A (en) * 1996-12-20 2000-01-04 Philips Electronics North America Corporation Dual-speed variable length decoding architecture for MPEG-2 video data

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5557271A (en) * 1993-09-23 1996-09-17 Goldstar Co., Ltd. Variable length coder and variable length decoder
WO1998021831A2 (en) * 1996-11-14 1998-05-22 Philips Electronics N.V. Variable length decoding

Also Published As

Publication number Publication date
EP1014589A3 (en) 2001-05-16
CN100382433C (zh) 2008-04-16
EP1014589B1 (en) 2008-09-10
JP2000216687A (ja) 2000-08-04
KR20000047765A (ko) 2000-07-25
JP4422833B2 (ja) 2010-02-24
EP1014589A2 (en) 2000-06-28
US6215424B1 (en) 2001-04-10
CN1259801A (zh) 2000-07-12
DE69939521D1 (de) 2008-10-23

Similar Documents

Publication Publication Date Title
KR100748485B1 (ko) 가변 길이 코드워드 디코더 및 가변 길이 코드워드 디코딩 방법
US5675332A (en) Plural-step chunk-at-a-time decoder for variable-length codes of Huffman type
US7804903B2 (en) Hardware-based CABAC decoder
KR100276037B1 (ko) 가변 길이 해독기 및 클럭 사이클마다 2개의 코드를 해독하는 방법
KR100462421B1 (ko) 가변길이디코더
US5650905A (en) Variable length decoder with adaptive acceleration in processing of Huffman encoded bit streams
US6185339B1 (en) Bit stream analyzing method and apparatus
US6546053B1 (en) System and method for decoding signal and method of generating lookup table for using in signal decoding process
US6222467B1 (en) Bitstream decoding apparatus
US6094151A (en) Apparatus and method for finite state machine coding of information selecting most probable state subintervals
US6653953B2 (en) Variable length coding packing architecture
KR19980702418A (ko) 가변 길이 디코더
KR0180164B1 (ko) 가변길이 부호기
Rudberg et al. New approaches to high speed Huffman decoding
KR0154011B1 (ko) 가변길이 복호화 장치
JP2007074648A (ja) Cabac復号化装置
JP2638424B2 (ja) 可変長復号化装置
KR100292050B1 (ko) 가변장복호기의 데이타 가변장치
Park et al. Area efficient fast Huffman decoder for multimedia applications
JP2934603B2 (ja) 可変長さコードの復号化方法及びその装置
KR100396173B1 (ko) 가변길이 복호화 장치
Sun Design of high-throughput entropy codec
KR100304872B1 (ko) 가변길이코드디코더.
JP4466382B2 (ja) 符号語抽出装置とその方法、復号化装置、ならびに画像再生装置
KR0125126B1 (ko) 고속 가변길이부호 복호화 장치

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
G170 Re-publication after modification of scope of protection [patent]
FPAY Annual fee payment

Payment date: 20120719

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20130722

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140722

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20150716

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20160720

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20170719

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20180718

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20190807

Year of fee payment: 13