KR100486251B1 - 가변 길이 코드 복호화 장치 및 방법 - Google Patents

가변 길이 코드 복호화 장치 및 방법 Download PDF

Info

Publication number
KR100486251B1
KR100486251B1 KR10-2002-0045975A KR20020045975A KR100486251B1 KR 100486251 B1 KR100486251 B1 KR 100486251B1 KR 20020045975 A KR20020045975 A KR 20020045975A KR 100486251 B1 KR100486251 B1 KR 100486251B1
Authority
KR
South Korea
Prior art keywords
loc
node
bits
length code
variable length
Prior art date
Application number
KR10-2002-0045975A
Other languages
English (en)
Other versions
KR20040012403A (ko
Inventor
박태환
김태선
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR10-2002-0045975A priority Critical patent/KR100486251B1/ko
Priority to TW092120370A priority patent/TWI223501B/zh
Priority to US10/632,010 priority patent/US6809665B2/en
Priority to JP2003285402A priority patent/JP4098187B2/ja
Priority to CNB031602657A priority patent/CN1256848C/zh
Publication of KR20040012403A publication Critical patent/KR20040012403A/ko
Application granted granted Critical
Publication of KR100486251B1 publication Critical patent/KR100486251B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/42Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
    • H03M7/425Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory for the decoding process only

Abstract

사용자가 가변 길이 복호화 테이블을 설정할 수 있는 가변 길이 코드 복호화 장치 및 방법이 개시된다. 본 발명의 실시예에 따른 복호화 장치는 프리 디코딩부, 쉬프팅부, 제 1 내지 제 M(M은 자연수) 룩업 테이블 어드레스 레지스터, 선택부, 메모리 제어부, 메모리 및 메모리 검색부를 구비하는 것을 특징으로 한다. 상기 구성요소를 구비하는 가변 길이 코드 복호화 장치는 가변 길이 부호화 된 데이터 비트 스트림(DSTREAM)을 3 비트씩 디코딩 하기 위해서, 가변 길이 부호 테이블에 근거한 LOC 정보 테이블이 작성되어야 한다. LOC 정보 테이블 내부에는 3 비트씩 디코딩하는 과정에서 발생되는 브랜치의 특성을 표현하기 위해서 LOC 정보 비트를 A, B, C, D의 4가지 형태로 표현하며 이들은 각각 2비트의 디지털 값을 가진다. 본 발명의 가변 길이 코드 복호화 장치는 가변 길이 코드로 되어있는 데이터 비트 스트림을 3 비트씩 나누어 디코딩 할 수 있으므로 디코딩 속도가 빨라질 수 있다. 또한 입력되는 데이터 비트 스트림의 코드 특성에 따라 제 1 프리 디코딩부와 제 2 프리 디코딩부를 선택할 수 있어서 복호화 속도가 빨라지고 테이블 전체 사이즈를 줄일 수 있는 장점이 있다.

Description

가변 길이 코드 복호화 장치 및 방법{Decoding apparatus for variable length code and method thereof}
본 발명은 복호화 장치에 관한 것으로서, 특히 가변 길이 부호화된 데이터를 복호화 하는 가변 길이 코드 복호화 장치에 관한 것이다.
동화상 전문가 그룹(MPEG: Moving Picture Expert Group 이하 MPEG)2의 비디오 규격의 국제 표준안은 1994년 4월에 발표된 동화상 압축 및 복원에 관한 규격으로서, 여러 관계자들이 규격의 실제적 구현을 위해서 노력하고 있다.
디지탈 영상신호의 압축은 디지탈 영상 데이타의 전송 및 디지탈 기억 장치 등의 여러 응용분야에서 그 수요가 증가되고 있다.
영상 압축 알고리즘들은 일반적으로 마지막에 가변 길이 부호화 장치(Variable Length Encoder)를 사용하여 영상 데이터의 비손실 압축을 실시한다.
가변 길이 부호화 장치는 많이 사용되는 데이터의 심볼에 대해서는 그 심볼을 표현하기 위하여 짧은 비트를 할당하고, 상대적으로 적게 사용되는 데이터의 심볼에 대해서는 긴 비트들 할당한다. 따라서, 가변 길이 부호화 장치는 동일한 길이의 데이터 비트 스트림을 부호화 할 경우, 고정 길이 부호화 장치보다 데이터 비트 스트림의 길이가 짧아진다.
가변 길이 복호화 장치(Variable Length Decoder)는 입력되는 가변 길이 부호화된 데이터 비트 스트림으로부터 하나의 심볼에 대응하는 가변 길이 코드를 분리해 낸다. 분리된 가변 길이 코드로부터 심볼 테이블을 이용하여 고정 길이 코드가 얻어질 수 있다.
이 경우, 만약 가변 길이 부호화 장치에서 사용하는 가변 길이 부호화 테이블이 사용자가 설정 할 수 있어야 한다면, 가변 길이 복호화 장치는 부호화 장치에서 쓰여진 테이블을 바탕으로, 입력되는 데이터 비트 스트림에서 고정 길이의 비트를 읽어보면서 가변 길이 코드를 분리해 낸다.
가장 기본적인 방법은 입력되는 데이터 비트 스트림을 1 비트씩 분리하면서 트리 서치 알고리즘(Tree search algorithm)을 이용하는 것이다. MPEG의 경우 코드의 최대 길이가 16 비트이므로, 최대 16 번의 트리 서치가 수행되어야만 코드 값이 얻어질 수 있다. 또 다른 방법은 데이터 비트 스트림을 2 비트씩 분리하면서 트리 서치 알고리즘(Tree search algorithm)을 이용하는 것이다. 이 경우 최대 8 번의 트리 서치가 수행되어야만 코드 값이 얻어진다.
한번에 분리되는 데이터 비트 스트림의 비트 수가 많을수록 복호화 속도가 빨라진다. 그러나 분리되는 데이터 비트 스트림의 비트 수가 많을수록 복호화 장치의 구조가 복잡해지므로 복호화 속도와 복호화 장치의 면적사이의 적절한 트레이드 오프(trade off)가 필요하다.
본 발명에서는 입력되는 데이터 비트 스트림을 3 비트씩 분리하는 복호화 장치 및 방법을 제안한다. 또한 입력되는 데이터 비트 스트림의 코드 값의 특성에 따라 2 가지의 프리 디코딩 방법을 선택 할 수 있게 하는 복호화 장치 및 방법을 제안한다.
본 발명이 이루고자하는 기술적 과제는, 입력되는 데이터 비트 스트림을 L 비트씩 분리하여 디코딩하며, 입력되는 데이터 비트 스트림의 코드 값의 특성에 따라 프리 디코딩 방법을 선택할 수 있는 가변 길이 코드 복호화 장치를 제공하는데 있다.
본 발명이 이루고자하는 다른 기술적 과제는, 입력되는 데이터 비트 스트림을 L 비트씩 분리하여 디코딩하며, 입력되는 데이터 비트 스트림의 코드 값의 특성에 따라 프리 디코딩 방법을 선택할 수 있는 가변 길이 코드 복호화 방법을 제공하는데 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 실시예에 따른 복호화 장치는 프리 디코딩부, 쉬프팅부, 제 1 내지 제 M(M은 자연수) 룩업 테이블 어드레스 레지스터, 선택부, 메모리 제어부, 메모리 및 메모리 검색부를 구비하는 것을 특징으로 한다.
프리 디코딩부는 데이터 비트 스트림을 수신하고 상기 데이터 비트 스트림의 코드 값에 따라 소정의 제 1 내지 제 M 룩업 테이블 어드레스 레지스터 중 하나를 선택하는 제 1 또는 제 2 선택 신호를 발생한다.
쉬프팅부는 상기 제 1 선택 신호 또는 상기 제 2 선택 신호 중 하나 및 상기 연속 노드 신호에 응답하여 상기 데이터 비트 스트림을 일정한 비트만큼 이동시킨다.
제 1 내지 제 M(M은 자연수) 룩업 테이블 어드레스 레지스터는 소정의 메모리에 저장된 K(K는 자연수) 비트의 LOC 테이블 값을 지정하는 LOC 어드레스를 각각 구비한다.
선택부는 상기 제 1 선택 신호 또는 상기 제 2 선택 신호에 응답하여 상기 제 1 내지 제 M 룩업 테이블 어드레스 레지스터의 출력들 중 하나를 선택하여 출력한다.
메모리 제어부는 상기 선택부의 출력을 수신하고, 소정의 연속 노드 신호에 응답하여 상기 메모리에 저장된 LOC 테이블 값 및 상기 LOC 테이블 값에 대응되며 소정의 심볼 어드레스를 구하기 위한 터미널 값을 선택하는 제 3 선택 신호를 발생하거나, 소정의 심볼 어드레스 신호에 응답하여 상기 메모리에 저장된 소정의 고정 길이 코드를 선택하는 제 4 선택 신호를 발생한다.
메모리는 상기 LOC 테이블 값, 상기 터미널 값 및 상기 고정 길이 코드를 저장하고, 상기 제 3 선택 신호에 응답하여 선택된 상기 LOC 테이블 값 및 상기 터미널 값을 출력하거나 상기 제 4 선택 신호에 응답하여 상기 고정 길이 코드를 출력한다.
메모리 검색부는 상기 메모리에서 출력되는 상기 선택된 LOC 테이블 값, 상기 터미널 값 및 상기 데이터 비트 스트림의 L (L은 자연수)비트를 수신하고, 내부에 저장되어 있는 LOC 정보 테이블을 이용하여 상기 데이터 비트 스트림의 L 비트가 터미널 노드인지 연속 노드인지를 판단하여 연속 노드 신호 또는 심볼 어드레스 신호를 발생하거나,
상기 메모리에서 출력되는 상기 고정 길이 코드를 수신하여 출력한다.
상기 프리 디코딩부는 제 1 프리 디코딩부 및 제 2 프리 디코딩부를 구비하는 것을 특징으로 한다.
제 1 프리 디코딩부는 상기 데이터 비트 스트림을 수신하고, 상기 데이터 비트 스트림의 최상위 비트(MSB)쪽에 0 또는 1이 연속되는 경우, 0 이나 1의 개수에 따라 상기 제 1 내지 제 M 룩업 테이블 어드레스 레지스터 중 하나를 선택하는 제 1 선택 신호를 발생한다.
제 2 프리 디코딩부는 상기 데이터 비트 스트림을 수신하고, 상기 데이터 비트 스트림의 최상위 비트(MSB)쪽의 N(N은 자연수) 비트를 이용하여 상기 제 1 내지 제 M 룩업 테이블 어드레스 레지스터 중 하나를 선택하는 제 2 선택 신호를 발생한다.
상기 쉬프팅부는 상기 연속 노드 신호에 응답하여 상기 데이터 비트 스트림을 3비트씩 이동시키는 것을 특징으로 한다.
상기 메모리 제어부는 오프셋 레지스터, 합산부, LOC 어드레스 레지스터 및 심볼 어드레스 레지스터를 구비하는 것을 특징으로 한다.
오프셋 레지스터는 상기 선택부의 출력을 수신하고 상기 선택부의 새로운 출력이 수신될 때까지 상기 선택부의 출력을 저장한다.
합산부는 상기 오프셋 레지스터의 출력과 소정의 다음 LOC 어드레스를 더하여 상기 메모리에 저장된 LOC 테이블의 값들을 선택하는 제 3 선택 신호를 발생한다.
LOC 어드레스 레지스터는 상기 연속 노드 신호에 응답하여 LOC 테이블 값을 선택하기 위한 상기 다음 LOC 어드레스를 발생한다.
심볼 어드레스 레지스터는 상기 심볼 어드레스 신호에 응답하여 상기 고정 길이 코드를 구하기 위한 상기 제 4 선택 신호를 발생한다.
상기 다음 LOC 어드레스는 현재의 LOC 어드레스와 현재의 LOC에서 현재의 노드를 포함한 현재 노드 이전의 비 터미널 노드의 개수를 더한 값인 것을 특징으로 한다.
상기 심볼 어드레스는 현재의 LOC 테이블 값에 대응되는 터미널 값과 현재의 LOC에서 현재의 노드를 제외한 현재 노드 이전의 터미널 노드의 개수를 더한 값인 것을 특징으로 한다.
상기 메모리 검색부에 저장되는 LOC 정보 테이블은 가변 길이 코드(variable length code)가 지시하는 노드가 터미널 노드인지 연속 노드인지 무효 노드인지를 나타내는 노드 타입을 구비하며, 상기 각각의 노드 타입은 N* { 2}^{L } 비트의 LOC 정보 비트를 구비하며, 상기 LOC 정보 비트들은 각각 N 비트로 구성되는 A, B, C, D의 4가지 형태로 표현는 것을 특징으로 한다.
상기 메모리 검색부에 저장되는 LOC 정보 테이블은 가변 길이 코드가 0, 1, 00, 01, 10, 11인 경우 상기 가변 길이 코드가 지시하는 노드 타입은 터미널 노드이고, 가변 길이 코드가 000부터 111 사이에 존재하는 경우 상기 가변 길이 코드가 지시하는 노드 타입은 터미널 노드와 연속 노드 및 무효 노드 중 어느 하나이며,
상기 N 이 2 비트이고, 상기 L 이 3비트라면 가변 길이 코드가 0 인 경우는 LOC 정보 비트의 상위 8 비트가 A B B B로 표현되고, 가변 길이 코드가 1 인 경우는 LOC 정보 비트의 하위 8 비트가 A B B B로 표현되고, 가변 길이 코드가 00 인 경우는 LOC 정보 비트의 상위 4 비트가 A B로 표현되고, 가변 길이 코드가 01 인 경우는 LOC 정보 비트의 상위 5 비트에서 8 비트 사이가 A B로 표현되고, 가변 길이 코드가 10 인 경우는 LOC 정보 비트의 상위 9 비트에서 12 비트 사이가 A B로 표현되고, 가변 길이 코드가 11 인 경우는 LOC 정보 비트의 상위 13 비트에서 16 비트 사이가 A B로 표현되고, 가변 길이 코드가 000부터 111인 경우에는 상기 가변 길이 코드가 지시하는 노드 타입이 터미널 노드인 경우 LOC 정보 비트가 A로 표현되고, 연속 노드인 경우 LOC 정보 비트가 C로 표현되고, 무효 노드인 경우 LOC 정보 비트가 D로 표현되는 것을 특징으로 한다.
또한 상기 메모리 검색부에 저장되는 LOC 정보 테이블은 가변 길이 코드가 0, 1인 경우 상기 가변 길이 코드가 지시하는 노드 타입은 터미널 노드이고, 가변 길이 코드가 00부터 11 사이에 존재하는 경우 상기 가변 길이 코드가 지시하는 노드 타입은 터미널 노드와 연속 노드 및 무효 노드 중 어느 하나이며, 상기 N 이 2 비트이고, 상기 L 이 2비트라면, 가변 길이 코드가 0 인 경우는 LOC 정보 비트의 상위 4 비트가 A B로 표현되고, 가변 길이 코드가 1 인 경우는 LOC 정보 비트의 하위 4 비트가 A B로 표현되고, 가변 길이 코드가 00부터 11인 경우에는 상기 가변 길이 코드가 지시하는 노드 타입이 터미널 노드인 경우 LOC 정보 비트가 A로 표현되고, 연속 노드인 경우 LOC 정보 비트가 C로 표현되고, 무효 노드인 경우 LOC 정보 비트가 D로 표현되는 것을 특징으로 한다.
상기 메모리에 저장되는 LOC 테이블 값은 가변 길이 코드가 지시하는 상기 LOC 정보 테이블의 노드 타입에 대응되는 LOC 정보 비트들로 이루어지는 것을 특징으로 한다.
상기 다른 기술적 과제를 달성하기 위한 본 발명의 제 1 실시예에 따른 가변 길이 코드 복호화 방법은, 소정의 LOC 어드레스를 각각 구비하는 제 1 내지 제 M(M은 자연수) 룩업 테이블 어드레스 레지스터, 상기 LOC 어드레스에 대응되는 K(K는 자연수) 비트의 LOC 테이블 값, 소정의 터미널 값 및 고정 길이 코드를 저장하는 메모리 및 가변 길이 코드를 복호화 하는 기준이 되는 정보를 가지는 LOC 정보 테이블을 구비하는 메모리 검색부를 구비하는 가변 길이 코드 복호화 장치의 가변 길이 코드 복호화 방법에 있어서,
(a) 데이터 비트 스트림을 수신하고 상기 데이터 비트 스트림의 코드 값에 따라 상기 룩업 테이블 어드레스 레지스터중 하나를 선택하는 제 1 또는 제 2 선택 신호를 발생하는 단계, (b) 상기 제 1 선택 신호 또는 상기 제 2 선택 신호에 응답하여 상기 제 1 내지 제 M 룩업 테이블 어드레스 레지스터의 출력들 중 하나를 선택하여 출력하는 단계, (c) 상기 (b) 단계의 출력과 소정의 다음 LOC 어드레스를 더하여 상기 메모리에 저장된 LOC 테이블의 값 및 상기 LOC 테이블 값에 대응되며 소정의 심볼 어드레스를 구하기 위한 터미널 값을 선택하는 제 3 선택 신호를 발생하는 단계, (d) 상기 제 3 선택 신호에 응답하여 선택된 LOC 테이블 값 및 터미널 값을 출력하는 단계, (e) 상기 메모리에서 출력되는 상기 선택된 LOC 테이블 값, 터미널 값 및 상기 데이터 비트 스트림의 L 비트를 수신하고, 상기 LOC 정보 테이블을 이용하여 상기 데이터 비트 스트림의 L 비트가 터미널 노드인지 연속 노드인지를 판단하여 연속 노드 신호 또는 심볼 어드레스 신호를 발생하는 단계, (f) 상기 연속 노드 신호에 응답하여 상기 LOC 테이블 값을 선택하기 위한 상기 다음 LOC 어드레스를 발생하여 상기 (c) 단계로 인가하는 단계, (g) 상기 심볼 어드레스 신호에 응답하여 상기 고정 길이 코드를 구하기 위한 제 4 선택 신호를 발생하는 단계 및 (h) 상기 제 4 선택 신호에 응답하여 상기 메모리로부터 터미널 값을 출력하고, 상기 출력된 터미널 값에 응답하여 심볼 어드레스를 선택하며, 상기 선택된 심볼 어드레스에 대응되는 고정 길이 코드를 출력하는 단계를 구비하는 것을 특징으로 한다.
상기 (a) 단계는 (a1) 상기 데이터 비트 스트림의 최상위 비트(MSB)쪽에 0 또는 1이 연속되는 경우, 0 이나 1의 개수에 따라 상기 복수개의 룩업 테이블 어드레스 레지스터 중 하나를 선택하는 제 1 선택 신호를 발생하는 단계, (a2) 상기 데이터 비트 스트림의 최상위 비트(MSB)쪽의 N(N은 자연수) 비트를 이용하여 상기 복수개의 룩업 테이블 어드레스 레지스터 중 하나를 선택하는 제 2 선택 신호를 발생하는 단계 및 (a3) 상기 제 1 선택 신호 또는 상기 제 2 선택 신호 중 하나 및 상기 연속 노드 신호에 응답하여 상기 데이터 비트 스트림을 일정한 비트만큼 이동시키는 단계를 구비한다.
상기 다음 LOC 어드레스는 현재의 LOC 어드레스와 현재의 LOC에서 현재의 노드를 포함한 현재 노드 이전의 비 터미널 노드의 개수를 더한 값인 것을 특징으로 한다.
상기 심볼 어드레스는 현재의 LOC 테이블 값에 대응되는 터미널 값과 현재의 LOC에서 현재의 노드를 제외한 현재 노드 이전의 터미널 노드의 개수를 더한 값인 것을 특징으로 한다.
상기 메모리 검색부에 저장되는 LOC 정보 테이블은 가변 길이 코드(variable length code)가 지시하는 노드가 터미널 노드인지 연속 노드인지 무효 노드인지를 나타내는 노드 타입을 구비하며,
상기 각각의 노드 타입은 N* { 2}^{L } 비트의 LOC 정보 비트를 구비하며,
상기 LOC 정보 비트들은 각각 N 비트로 구성되는 A, B, C, D의 4가지 형태로 표현는 것을 특징으로 한다.
상기 메모리에 저장되는 LOC 테이블 값은 가변 길이 코드가 지시하는 상기 LOC 정보 테이블의 노드 타입에 대응되는 LOC 정보 비트들로 이루어지는 것을 특징으로 한다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 도면에 기재된 내용을 참조하여야 한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 실시예에 따른 가변 길이 코드 복호화 장치를 나타내는 블록도이다.
도 1을 참조하면, 본 발명의 제 1 실시예에 따른 가변 길이 코드 복호화 장치(100)는 프리 디코딩부(107), 쉬프팅부(130), 제 1 내지 제 M(M은 자연수) 룩업 테이블 어드레스 레지스터(140), 선택부(150), 메모리 제어부(153), 메모리(165) 및 메모리 검색부(170)를 구비한다.
프리 디코딩부(107)는 데이터 비트 스트림(DSTREAM)을 수신하고 데이터 비트 스트림(DSTREAM)의 코드 값에 따라 소정의 제 1 내지 제 M 룩업 테이블 어드레스 레지스터(140)중 하나를 선택하는 제 1 또는 제 2 선택 신호(SEL1, SEL2)를 발생한다.
프리 디코딩부(107)는 제 1 프리 디코딩부(110) 및 제 2 프리 디코딩부 (120)를 구비한다.
제 1 프리 디코딩부(110)는 데이터 비트 스트림(DSTREAM)을 수신하고, 데이터 비트 스트림(DSTREAM)의 최상위 비트(MSB)쪽에 0 또는 1이 연속되는 경우, 0 이나 1의 개수에 따라 제 1 내지 제 M 룩업 테이블 어드레스 레지스터(140) 중 하나를 선택하는 제 1 선택 신호(SEL1)를 발생한다.
제 2 프리 디코딩부(120)는 데이터 비트 스트림(DSTREAM)을 수신하고, 데이터 비트 스트림(DSTREAM)의 최상위 비트(MSB)쪽의 N(N은 자연수) 비트를 이용하여 제 1 내지 제 M 룩업 테이블 어드레스 레지스터(140) 중 하나를 선택하는 제 2 선택 신호(SEL2)를 발생한다.
쉬프팅부(130)는 제 1 선택 신호(SEL1) 또는 제 2 선택 신호(SEL2) 중 하나 및 연속 노드 신호(NCONS)에 응답하여 데이터 비트 스트림(DSTREAM)을 일정한 비트만큼 이동시킨다. 좀 더 설명하면, 쉬프팅부(130)는 연속 노드 신호(NCONS)에 응답하여 데이터 비트 스트림(DSTREAM)을 L비트씩 이동시킨다. 여기서 L은 3일 수 있다.
제 1 내지 제 M(M은 자연수) 룩업 테이블 어드레스 레지스터(140)는 소정의 메모리(165)에 저장된 K(K는 자연수) 비트의 LOC 테이블 값(LOCTV)을 지정하는 LOC 어드레스를 각각 구비한다.
선택부(150)는 제 1 선택 신호(SEL1) 또는 제 2 선택 신호(SEL2)에 응답하여 제 1 내지 제 M 룩업 테이블 어드레스 레지스터(140)의 출력들 중 하나를 선택하여 출력한다. 선택부(150)는 멀티플렉서일 수 있다.
메모리 제어부(153)는 선택부(150)의 출력을 수신하고, 소정의 연속 노드 신호(NCONS)에 응답하여 메모리(165)에 저장된 LOC 테이블 값(LOCTV) 및 터미널 값(TERMV)을 선택하는 제 3 선택 신호(SEL3)를 발생하거나, 소정의 심볼 어드레스 신호(SYMADDS)에 응답하여 상기 메모리(165)에 저장된 소정의 고정 길이 코드(SFLC)를 선택하는 제 4 선택 신호를 발생한다.
좀더 설명하면, 메모리 제어부(153)는 오프셋 레지스터(155), 합산부(160), LOC 어드레스 레지스터(175) 및 심볼 어드레스 레지스터(180)를 구비한다.
오프셋 레지스터(155)는 선택부(150)의 출력을 수신하고 선택부(150)의 새로운 출력이 수신될 때까지 선택부(150)의 출력을 저장한다.
합산부(160)는 오프셋 레지스터(155)의 출력과 소정의 다음 LOC 어드레스(NLOCADD)를 더하여 메모리(165)에 저장된 LOC 테이블 값(LOCTV) 및 터미널 값(TERMV)을 선택하는 제 3 선택 신호(SEL3)를 발생한다.
LOC 어드레스 레지스터(175)는 연속 노드 신호(NCONS)에 응답하여 LOC 테이블 값(LOCTV)을 선택하기 위한 다음 LOC 어드레스(NLOCADD)를 발생한다. 다음 LOC 어드레스(NLOCADD)는 현재의 LOC 어드레스와 현재의 LOC에서 현재의 노드를 포함한 현재 노드 이전의 비 터미널 노드의 개수를 더한 값이다.
심볼 어드레스 레지스터(180)는 심볼 어드레스 신호(SYMADDS)에 응답하여 고정 길이 코드(SFLC)를 구하기 위한 제 4 선택 신호(SEL4)를 발생한다. 심볼 어드레스는 현재의 LOC 테이블 값(LOCTV)에 대응되는 터미널 값(TERMV)과 현재의 LOC에서 현재의 노드를 제외한 현재 노드 이전의 터미널 노드의 개수를 더한 값이다.
메모리(165)는 LOC 테이블 값(LOCTV), 소정의 터미널 값(TERMV) 및 고정 길이 코드(SFLC)를 저장하고, 제 3 선택 신호(SEL3)에 응답하여 선택된 LOC 테이블 값(LOCTV) 및 터미널 값(TERMV)을 출력하거나 소정의 제 4 선택 신호(SEL4)에 응답하여 고정 길이 코드(SFLC)를 출력한다.
메모리(165)에 저장되는 LOC 테이블 값(LOCTV)은 가변 길이 코드가 지시하는 LOC 정보 테이블(200)의 노드 타입에 대응되는 LOC 정보 비트들로 이루어진다.
메모리 검색부(170)는 메모리(165)에서 출력되는 선택된 LOC 테이블 값(LOCTV), 터미널 값(TERMV) 및 데이터 비트 스트림(DSTREAM)의 L (L은 자연수)비트를 수신하고, 내부에 저장되어 있는 LOC 정보 테이블(200)을 이용하여 데이터 비트 스트림(DSTREAM)의 L 비트가 터미널 노드인지 연속 노드인지를 판단하여 연속 노드 신호(NCONS) 또는 심볼 어드레스 신호(SYMADDS)를 발생한다. 여기서 L은 3일 수 있다.
또한 메모리 검색부(170)는 메모리(165)에서 출력되는 고정 길이 코드(SFLC)를 수신하여 출력한다.
메모리 검색부(170)에 저장되는 LOC 정보 테이블(200)은 가변 길이 코드(variable length code)가 지시하는 노드가 터미널 노드인지 연속 노드인지 무효 노드인지를 나타내는 노드 타입을 구비하며, 상기 각각의 노드 타입은 N* { 2}^{L } 비트의 LOC 정보 비트를 구비하며, 상기 LOC 정보 비트들은 각각 N 비트로 구성되는 A, B, C, D의 4가지 형태로 표현된다.
메모리 검색부(170)에 저장되는 LOC 정보 테이블은, 가변 길이 코드가 0, 1, 00, 01, 10, 11인 경우 상기 가변 길이 코드가 지시하는 노드 타입은 터미널 노드이고, 가변 길이 코드가 000부터 111 사이에 존재하는 경우 상기 가변 길이 코드가 지시하는 노드 타입은 터미널 노드와 연속 노드 및 무효 노드 중 어느 하나이다. 만일 상기 N 이 2 비트이고, 상기 L 이 3비트라면, 가변 길이 코드가 0 인 경우는 LOC 정보 비트의 상위 8 비트가 A B B B 로 표현되고, 가변 길이 코드가 1 인 경우는 LOC 정보 비트의 하위 8 비트가 A B B B로 표현되고, 가변 길이 코드가 00 인 경우는 LOC 정보 비트의 상위 4 비트가 A B로 표현되고, 가변 길이 코드가 01 인 경우는 LOC 정보 비트의 상위 5 비트에서 8 비트 사이가 A B로 표현되고, 가변 길이 코드가 10 인 경우는 LOC 정보 비트의 상위 9 비트에서 12 비트 사이가 A B로 표현되고, 가변 길이 코드가 11 인 경우는 LOC 정보 비트의 상위 13 비트에서 16 비트 사이가 A B로 표현되고, 가변 길이 코드가 000부터 111인 경우에는 상기 가변 길이 코드가 지시하는 노드 타입이 터미널 노드인 경우 LOC 정보 비트가 A로 표현되고, 연속 노드인 경우 LOC 정보 비트가 C로 표현되고, 무효 노드인 경우 LOC 정보 비트가 D로 표현된다.
메모리 검색부(170)에 저장되는 LOC 정보 테이블은, 가변 길이 코드가 0, 1인 경우 상기 가변 길이 코드가 지시하는 노드 타입은 터미널 노드이고, 가변 길이 코드가 00부터 11 사이에 존재하는 경우 상기 가변 길이 코드가 지시하는 노드 타입은 터미널 노드와 연속 노드 및 무효 노드 중 어느 하나이다.
상기 N 이 2 비트이고, 상기 L 이 2비트라면 가변 길이 코드가 0 인 경우는 LOC 정보 비트의 상위 4 비트가 A B로 표현되고, 가변 길이 코드가 1 인 경우는 LOC 정보 비트의 하위 4 비트가 A B로 표현되고, 가변 길이 코드가 00부터 11인 경우에는 상기 가변 길이 코드가 지시하는 노드 타입이 터미널 노드인 경우 LOC 정보 비트가 A로 표현되고, 연속 노드인 경우 LOC 정보 비트가 C로 표현되고, 무효 노드인 경우 LOC 정보 비트가 D로 표현된다.
도 2는 도 1의 메모리 검색부에 저장되는 LOC 정보 테이블을 나타내는 도표이다.
도 3은 심볼과 가변 길이 코드가 나타나있는 도표이다.
도 4는 가변 길이 코드로부터 심볼을 구하는 개념도이다.
도 5는 도 1의 메모리에 저장된 LOC 테이블 값과 터미널 값을 나타내는 도표이다.
도 6은 심볼과 고정 길이 코드를 나타내는 도표이다.
이하 도 1 내지 도 6을 참조하여 본 발명의 실시예에 따른 가변 길이 코드의 복호화 장치의 동작이 상세히 설명된다.
데이터 비트 스트림(DSTREAM)은 데이터 비트 스트림 저장부(105)에 저장된다. 그리고 데이터 비트스 트림 저장부(105)는 데이터 비트 스트림(DSTREAM)을 프리 디코딩부(107)로 인가한다. 데이터 비트 스트림 (DSTREAM)은 데이터가 가변 길이 코드로 인코딩 되어 있는 데이터 정보이다.
도 3을 참조하여 좀더 설명한다. 심볼들은 인코딩 단계에서 고정 길이 코드로 인코딩될 수도 있고 가변 길이 코드로 인코딩 될 수도 있다.
고정 길이 코드는 모든 심볼이 동일한 비트 수로 인코딩 된다. 가변 길이 코드는 심볼마다 서로 다른 비트 수로 인코딩 된다. 자주 사용되는 심볼은 적은 비트 수로 인코딩하고 자주 사용되지 않는 심볼은 많은 비트 수로 인코딩 한다면 인코딩 된 데이터의 비트 수를 줄일 수 있다.
따라서 가변 길이 코드를 이용하여 인코딩 하는 방법이 많이 사용된다. 본 발명의 데이터 비트 스트림은 가변 길이 코드로 인코딩 된 것이다.
프리 디코딩부(107)는 제 1 프리 디코딩부(110)와 제 2 프리 디코딩부(120)를 구비한다.
제 1 프리 디코딩부(110)는 MPEG이나 JPEG의 DC 계수 테이블(coefficient table)과 같이 데이터 비트 스트림(DSTREAM)의 최상위 비트(MSB)쪽에 0 또는 1이 연속되는 경우, 0 이나 1의 개수에 따라 제 1 내지 제 M 룩업 테이블 어드레스 레지스터(140) 중 하나를 선택하는 제 1 선택 신호(SEL1)를 발생한다.
즉, 제 1 선택 신호(SEL1)는 데이터 비트 스트림(DSTREAM)의 최상위 비트에 0 이나 1 이 2개 이하인 경우에는 제 1 룩업 테이블 어드레스 레지스터(LUTADD0), 데이터 비트 스트림(DSTREAM)의 최상위 비트에 0 이나 1 이 4개 이하인 경우에는 제 2 룩업 테이블 어드레스 레지스터(LUTADD1) 등과 같이 데이터 비트 스트림(DSTREAM)의 특성에 따라서 제 1 내지 제 M 룩업 테이블 어드레스 레지스터(140) 중 하나를 선택한다.
제 2 프리 디코딩부(120)는 MPEG에서의 AC 계수 테이블(coefficient table)과 같이 연속되는 0 이나 1 이 없는 경우, 데이터 비트 스트림(DSTREAM)의 최상위 비트(MSB)쪽의 몇 개의 비트를 이용하여 제 1 내지 제 M 룩업 테이블 어드레스 레지스터(140) 중 하나를 선택하는 제 2 선택 신호(SEL2)를 발생한다.
만일 최상위 비트(MSB) 쪽의 4개의 비트를 이용한다면, 제 2 선택 신호(SEL2)는 데이터 비트 스트림(DSTREAM)의 최상위 비트쪽 4비트가 0000인 경우 제 1 룩업 테이블 어드레스 레지스터(LUTADD0), 0001인 경우 제 2 룩업 테이블 어드레스 레지스터(LUTADD1), 0010인 경우 제 3 룩업 테이블 어드레스 레지스터(LUTADD2) 등과 같이 데이터 비트 스트림(DSTREAM)의 특성에 따라서 제 1 내지 제 M 룩업 테이블 어드레스 레지스터(140) 중 하나를 선택한다.
이와 같이 제 1 프리 디코딩부(110)와 제 2 프리 디코딩부(120)를 구별함으로써 입력되는 데이터 비트 스트림(DSTREAM)의 코드 값의 특성에 따라 디코딩 대상의 사이즈가 감소되어 전력 소모가 줄고 복호화 속도도 빨라진다.
이때 제 1 프리 디코딩부(110)와 제 2 프리 디코딩부(120) 중 어느 것을 선택할 것 인지의 여부는 사용자가 입력되는 데이터 비트 스트림(DSTREAM)을 파악하여 미리 그 정보를 제어 레지스터(미도시)에 입력하면, 데이터 비트 스트림(DSTREAM)은 선택된 프리 디코딩부(107)로 입력된다.
쉬프팅부(130)는 제 1 선택 신호(SEL1) 또는 제 2 선택 신호(SEL2)에 응답하여 입력되는 데이터 비트 스트림(DSTREAM)을 쉬프트 한다. 만일 제 2 프리 디코딩부(120)가 입력되는 데이터 비트 스트림(DSTREAM)의 코드 값을 4 비트씩 나누어 그 특성을 판단한다면, 쉬프팅부(130)는 제 2 선택 신호(SEL2)에 응답하여 데이터 비트 스트림(DSTREAM)을 4비트씩 쉬프트 시킨다.
또한 쉬프팅부(130)는 연속 노드 신호(NCONS)에 응답하여 데이터 비트 스트림(DSTREAM)을 L 비트씩 이동시킨다. 본 발명의 실시예에서 L은 3일 수 있다. 이에 대해서는 후술된다.
제 1 내지 제 M 룩업 테이블 어드레스 레지스터(140)는 메모리(165)에 저장된 K(K는 자연수) 비트의 LOC 테이블 값(LOCTV)을 지정하는 LOC 어드레스를 각각 구비한다.
도 5를 참조하면, LOC 어드레스는 주소(Addres)로 표시된 0과 1이다. LOC 테이블 값(LOCTV)은 내용(Content)으로 표시된 값들이다. 즉, LOC 어드레스 0 이 선택되면 K 비트의 LOC 테이블 값(LOCTV)은 11 10 11 01 11 10 11 11 의 16 비트가 선택된다.
메모리(165)에는 LOC 테이블 값(LOCTV)이 저장되어 있고 제 1 내지 제 M 룩업 테이블 어드레스 레지스터(140)에는 LOC 테이블 값(LOCTV)을 지정하는 LOC 어드레스가 저장된다.
선택부(150)는 제 1 선택 신호(SEL1) 또는 제 2 선택 신호(SEL2)에 응답하여 제 1 내지 제 M 룩업 테이블 어드레스 레지스터(140)의 출력들 중 하나를 선택하여 출력한다. 선택부(150)는 멀티플렉서일 수 있다.
만일 데이터 비트 스트림(DSTREAM)이 제 2 프리 디코딩부(120)로 입력된다면 제 2 선택 신호(SEL2)가 발생되고 제 2 선택 신호(SEL2)는 제 1 내지 제 M 룩업 테이블 어드레스 레지스터(140)에 저장된 LOC 어드레스 중 하나를 선택한다.
제 2 선택 신호(SEL2)에 의하여 선택된 LOC 어드레스는 메모리 제어부(153)로 입력된다. 메모리 제어부(153)는 입력되는 LOC 어드레스에 대응되는 LOC 테이블 값(LOCTV)을 선택한다.
입력되는 데이터 비트 스트림(DSTREAM)의 코드 특성에 따라 데이터 비트 스트림(DSTREAM)이 프리 디코딩되고 LOC 어드레스가 선택되면, 트리 서치 알고리즘(Tree search algorithm)을 이용하여 데이터 비트 스트림(DSTREAM)을 디코딩 하는 동작이 수행된다.
트리 서치 알고리즘(Tree search algorithm)은 LOC를 기초로 하여 수행된다. 도 4를 참조하여 데이터 비트 스트림(DSTREAM)을 디코딩 하는 동작을 상세히 설명한다.
LOC는 하나의 노드에 연결된 child 노드의 그룹이다. 노드는 디코딩 동작에 의하여 출력되는 데이터 심볼을 의미한다. 노드에는 터미널 노드와 연속 노드가 있다. 터미널 노드는 최종적으로 데이터 심볼로 나타내는 노드이고 연속 노드는 터미널 노드로 이동되는 중간 과정에 존재하는 노드이다. 도 4에서 터미널 노드는 내부에 빗금으로 표시되어 있고 연속 노드는 내부에 아무런 표시도 없다.
프리 디코딩 단계에서는 입력되는 데이터 비트 스트림(DSTREAM)의 코드 값의 특성에 따라 프리 디코딩 동작을 수행하고 LOC 어드레스를 선택한다. 이때 데이터 비트 스트림(DSTREAM)의 4 비트를 기준으로 코드 값의 특성을 판단 할 수도 있고 5 비트를 기준으로 코드 값의 특성을 판단할 수도 있다.
그러나 디코딩 동작은 데이터 비트 스트림(DSTREAM)을 L 비트씩 나누어 수행한다. 여기서는 설명의 편의를 위하여 L이 3 인 경우, 즉, 데이터 비트 스트림(DSTREAM)을 3 비트씩 나누어 디코딩 동작을 수행하는 경우를 설명한다.
도 1의 가변 길이 코드 복호화 장치(100)의 디코딩 동작은 데이터 비트 스트림(DSTREAM)을 3 비트씩 수신하고 도 2의 LOC 정보 테이블(200)을 이용하여 데이터 비트 스트림(DSTREAM)의 3 비트가 터미널 노드인지 연속 노드인지를 판단하는 것이다.
도 2의 LOC 정보 테이블에 대하여 좀 더 설명한다. 메모리 검색부(170)에 저장되는 LOC 정보 테이블(200)은 가변 길이 코드(variable length code)가 지시하는 노드가 터미널 노드인지 연속 노드인지 무효 노드인지를 나타내는 노드 타입과, 상기 노드 타입을 판단할 수 있는 LOC 정보 비트들을 구비한다.
여기서 가변 길이 코드는 입력되는 데이터 비트 스트림(DSTREAM)의 3 비트의 코드 값을 의미한다.
도 2의 표에서 노드 타입을 나타내는 부분의 숫자는 3비트의 데이터 비트 스트림(DSTREAM)이다.
메모리 검색부(170)에 저장되는 LOC 정보 테이블(200)은, 가변 길이 코드(variable length code)가 지시하는 노드가 터미널 노드인지 연속 노드인지 무효 노드인지를 나타내는 노드 타입을 구비하며, 상기 각각의 노드 타입은 N* { 2}^{L } 비트의 LOC 정보 비트를 구비한다. LOC 정보 비트들은 각각 N 비트로 구성되는 A, B, C, D의 4가지 형태로 표현된다.
도 2의 LOC 정보 테이블(200)에서 LOC 정보 비트들은 2 비트로 구성되는 A, B, C, D의 4가지로 표현되고 있다. 즉, 상기 A 는 11, 상기 B 는 10, 상기 C 는 01, 상기 D는 00으로 표현되고 있다. 즉, N 은 2 이다. 이는 설명의 편의를 위한 것이며 N이 2로 한정되는 것은 아니다. 또한 이하에서는 A, B, C, D 대신 각각 11, 10, 01, 00을 이용하여 설명한다.
N은 2 이고 L은 3인 경우이므로, 결국, 노드 타입은 2* { 2}^{3 } = 16 비트의 LOC 정보 비트를 구비한다.
데이터 비트 스트림(DSTREAM)의 3 비트중 최상위 비트가 0 이고, 만일 메모리(165)에 저장된 LOC 테이블 값이 LOC 정보 테이블(200)의 LOC 정보 비트들과 같다면 데이터 비트 스트림(DSTREAM)의 3 비트중 최상위 비트 0은 터미널 노드가 된다.
메모리 검색부(170)에 저장되는 LOC 정보 테이블(200)을 살펴보면, 입력되는 데이터 비트 스트림(DSTREAM)의 3 비트가 0, 1, 00, 01, 10, 11을 포함한다면 0, 1, 00, 01, 10, 11이 지시하는 노드는 터미널 노드가 된다.
데이터 비트 스트림(DSTREAM)의 3 비트가 000부터 111 사이에 존재한다면 000부터 111 사이에 존재하는 데이터 비트 스트림(DSTREAM)이 지시하는 노드는 LOC 정보 비트에 따라 각각 터미널 노드와 연속 노드 및 무효 노드를 모두 나타낼 수 있다. 터미널 노드와 연속 노드 및 무효 노드는 각각 16 비트의 LOC 정보 비트를 가진다.
입력되는 데이터 비트 스트림(DSTREAM)의 최상위 비트가 0 이고 만일 0이 지시하는 노드가 터미널 노드라면, 0 터미널 노드는 LOC 정보 비트의 상위 8 비트에 11, 10, 10, 10을 가진다.
입력되는 데이터 비트 스트림(DSTREAM)의 최상위 비트가 1 이고 만일 1이 지시하는 노드가 터미널 노드라면, 1 터미널 노드는 LOC 정보 비트의 하위 8 비트에 11, 10, 10, 10을 가진다.
입력되는 데이터 비트 스트림(DSTREAM)의 상위 2 비트가 00 이고 만일 00이 지시하는 노드가 터미널 노드라면, 00 터미널 노드는 LOC 정보 비트의 상위 4 비트에 11, 10을 가진다.
입력되는 데이터 비트 스트림(DSTREAM)의 상위 2 비트가 01 이고 만일 01이 지시하는 노드가 터미널 노드라면, 01 터미널 노드는 LOC 정보 비트의 상위 5 비트에서 8 비트 사이에 11, 10을 가진다.
입력되는 데이터 비트 스트림(DSTREAM)의 상위 2 비트가 10 이고 만일 10이 지시하는 노드가 터미널 노드라면, 10 터미널 노드는 LOC 정보 비트의 상위 9 비트에서 12 비트 사이에 11, 10을 가진다.
입력되는 데이터 비트 스트림(DSTREAM)의 상위 2 비트가 11 이고 만일 11이 지시하는 노드가 터미널 노드라면, 11 터미널 노드는 LOC 정보 비트의 상위 13 비트에서 16 비트 사이에 11, 10을 가진다.
입력되는 데이터 비트 스트림(DSTREAM)의 3 비트가 000에서 111중 하나이고 만일 지시하는 노드가 터미널 노드라면, 당해 3비트가 지시하는 터미널 노드는 11을 가진다.
입력되는 데이터 비트 스트림(DSTREAM)의 3 비트가 000에서 111중 하나이고 만일 지시하는 노드가 연속 노드라면, 당해 3비트가 지시하는 연속 노드는 01을 가진다.
입력되는 데이터 비트 스트림(DSTREAM)의 3 비트가 000에서 111중 하나이고 만일 지시하는 노드가 무효 노드라면, 당해 3비트가 지시하는 무효 노드는 00을 가진다.
메모리(165)에 저장되는 LOC 테이블 값(LOCTV)은 도 4의 개념도와 도 2의 LOC 정보 테이블(200)을 이용하여 얻어진다.
도 4를 보면 입력되는 데이터 비트 스트림(DSTREAM)이 00 인 경우, 도 4의 00 가지는 터미널 노드 c를 지시한다. 이때의 LOC 정보 비트들은 도 2의 LOC 정보 테이블(200)에서 11 10 으로 표시됨을 알 수 있다. 이 값을 도 5의 LOC 테이블 값(LOCTV)을 나타내는 내용 (Content)부분에 기록한다.
입력되는 데이터 비트 스트림(DSTREAM)이 010 인 경우, 도 4의 010 가지는 터미널 노드 f를 지시한다. 이때의 LOC 정보 비트들은 도 2의 LOC 정보 테이블(200)에서 11로 표시됨을 알 수 있다. 이 값을 도 5의 LOC 테이블 값(LOCTV)을 나타내는 내용 (Content)부분 중 11과 10 다음에 기록한다.
입력되는 데이터 비트 스트림(DSTREAM)이 011 인 경우, 도 4의 011 가지는 연속 노드를 지시한다. 이때의 LOC 정보 비트들은 도 2의 LOC 정보 테이블(200)에서 01로 표시됨을 알 수 있다. 이 값을 도 5의 LOC 테이블 값(LOCTV)을 나타내는 내용 (Content)부분 중 11과 10 및 11 다음에 기록한다.
입력되는 데이터 비트 스트림(DSTREAM)이 10 인 경우, 도 4의 10 가지는 터미널 노드 a를 지시한다. 이때의 LOC 정보 비트들은 도 2의 LOC 정보 테이블(200)에서 11 10으로 표시됨을 알 수 있다. 이 값을 도 5의 LOC 테이블 값(LOCTV)을 나타내는 내용 (Content)부분 중 11, 10, 11, 01 다음에 기록한다.
입력되는 데이터 비트 스트림(DSTREAM)이 110 인 경우, 도 4의 110 가지는 터미널 노드 g를 지시한다. 이때의 LOC 정보 비트들은 도 2의 LOC 정보 테이블(200)에서 11로 표시됨을 알 수 있다. 이 값을 도 5의 LOC 테이블 값(LOCTV)을 나타내는 내용 (Content)부분 중 11, 10, 11, 01, 11, 10 다음에 기록한다.
입력되는 데이터 비트 스트림(DSTREAM)이 111 인 경우, 도 4의 111 가지는 터미널 노드 b를 지시한다. 이때의 LOC 정보 비트들은 도 2의 LOC 정보 테이블(200)에서 11로 표시됨을 알 수 있다. 이 값을 도 5의 LOC 테이블 값(LOCTV)을 나타내는 내용 (Content)부분 중 11, 10, 11, 01, 11, 10, 11 다음에 기록한다.
그러면 LOC 0에 대응되는 LOC 테이블 값이 모두 완성된다. LOC 어드레스 0은 LOC 0에 대응되고, LOC 어드레스 1은 LOC 1에 대응된다. LOC 0의 연속 노드에서 LOC 1로 연결되는 가지에 표시된 가변 길이 코드 0과 1에 대해서도 LOC 테이블 값(LOCTV)을 구할 수 있다.
도 4에서 R 은 루트 노드이다. 루트 노드에서 LOC 0 으로 가지들이 연결되어 있고 각각의 가지에는 입력되는 데이터 비트 스트림(DSTREAM)이 가변 길이 코드의 형태로 표시되어 있다. 가변 길이 코드는 도 3에 나타나 있다.
가변 길이 코드의 논리 값이 작은 것이 왼쪽에, 큰 것이 오른 쪽에 배치된다. 가변 길이 코드가 4 비트인 경우는 앞의 3비트가 연속 노드를 지시하도록 하고 당해 연속 노드로부터 가변 길이 코드의 마지막 1 비트가 터미널 노드를 지시하도록 한다.
도 3에 표시된 가변 길이 코드는 예를 들어 설명한 것일 뿐이므로 심볼 a를 나타내는 가변 길이 코드가 반드시 00일 필요는 없다. 만일 가변 길이 코드가 도 3과 다르다면 도 4의 개념도도 달라질 것이다. 도 5의 표는 메모리(165)에 저장되는 LOC 테이블 값(LOCTV)을 나타낸다.
주소(Address)로 표시된 부분은 LOC 어드레스를 나타내며 제 1 내지 제 M 룩업 테이블 어드레스 레지스터(140)에 저장되어 있다.
입력되는 데이터 비트 스트림(DSTREAM)은 여러 가지 코드 값을 가질 수 있다. 입력되는 데이터 비트 스트림(DSTREAM)의 3 비트가 도 4의 00, 010, 011, 10, 110, 111 중 하나가 아니라면 잘못된 데이터 비트 스트림(DSTREAM)이므로 인터럽트에 의하여 처리된다.
데이터 비트 스트림(DSTREAM)이 011000.... 인 경우를 예로 들어 설명한다.
제 1 선택 신호(SEL1) 또는 제 2 선택 신호(SEL2)에 의하여 선택부(150)에서 LOC 어드레스 값 0 이 출력되면 그 값은 오프셋 레지스터(155)에 저장된다.
메모리(165)에 저장된 LOC 테이블 값(LOCTV)중 LOC 어드레스가 0 인 경우가 선택된다.
LOC 테이블 값(LOCTV)은 11, 10, 11, 01, 11, 10, 11, 11이고 입력되는 데이터 비트 스트림(DSTREAM)의 3 비트는 011 이다. LOC 테이블 값(LOCTV)을 참고하면 입력되는 데이터 비트 스트림(DSTREAM)이 00, 010, 011, 10, 110, 111인 경우 유효한 입력임을 알 수 있으며, 입력되는 데이터 비트 스트림(DSTREAM)이 011이므로 이는 유효한 입력 값이다. 또한 도 4의 개념도에서 알 수 있듯이, 데이터 비트 스트림(DSTREAM) 011이 지시하는 노드는 터미널 노드가 아니고 연속 노드이고, LOC 테이블 값(LOCTV)을 검색해 보면 011이 연속 노드 일 때의 값을 가지고 있으므로 메모리 검색부(170)는 연속 노드 신호(NCONS)를 발생한다.
메모리 제어부(153)의 LOC 어드레스 레지스터(175)는 연속 노드 신호(NCONS)를 수신하여 다음 LOC 어드레스(NLOCADD)를 발생한다.
다음 LOC 어드레스(NLOCADD)는 현재의 LOC 어드레스와 현재의 LOC에서 현재의 노드를 포함한 현재 노드 이전의 비 터미널 노드의 개수를 더한 값이다. 현재의 LOC 어드레스는 0 이고, 현재의 LOC내에서 011을 가리키는 노드를 포함한, 그 이전의 연속 노드는 011 노드 하나 밖에서 없으므로, 현재의 LOC에서 현재의 노드를 포함한 현재 노드 이전의 비 터미널 노드의 개수는 1 이다. 그러므로 다음 LOC 어드레스(NLOCADD)는 1 이다.
이때 쉬프팅부(130)는 연속 노드 신호(NCONS)에 응답하여 입력되는 데이터 비트 스트림(DSTREAM)을 3비트만큼 이동시킨다. 따라서 데이터 비트 스트림(DSTREAM)은 000 이 된다. 합산부(160)는 오프셋 레지스터(155)에 저장되어 있던 값 0 과 다음 LOC 어드레스 1을 더하여 제 3 선택 신호(SEL3)를 1로 출력한다.
오프셋 레지스터(155)에 저장된 처음의 LOC 어드레스 0은 데이터 비트 스트림(DSTREAM)이 터미널 노드를 지정하고 심볼 값으로 디코딩 되기 전까지는 동일한 값을 유지한다. 입력되는 데이터 비트 스트림(DSTREAM)이 심볼 값으로 디코딩 되면 다시 새로운 LOC 어드레스가 제 1 또는 제 2 프리 디코딩부(120)에 의하여 선택되고 새로운 LOC 어드레스가 오프셋 레지스터(155)에 저장된다.
제 3 선택 신호(SEL3)는 메모리(165)에 저장된 LOC 테이블 값(LOCTV)중 LOC 어드레스가 1 인 경우를 선택하여 메모리 검색부(170)로 인가한다. 또한 제 3 선택 신호(SEL3)는 메모리(165)에 저장된 터미널 값(TERMV)을 선택하여 메모리 검색부(170)로 인가한다.
메모리 검색부(170)는 메모리(165)로부터 출력되는 LOC 테이블 값(LOCTV), 터미널 값(TERMV) 및 데이터 비트 스트림(DSTREAM)의 3비트를 수신한다.
LOC 테이블 값(LOCTV)은 11, 10, 10, 10, 11, 10, 10, 10이고 입력되는 데이터 비트 스트림(DSTREAM)의 3 비트는 000 이다. LOC 테이블 값(LOCTV)을 참고하면 입력되는 데이터 비트 스트림(DSTREAM)이 0, 1인 경우 유효한 입력임을 알 수 있으며, 입력되는 데이터 비트 스트림(DSTREAM) 000중 상위 0 값이 유효한 입력 값이다.
또한 도 4의 개념도에서 알 수 있듯이, 데이터 비트 스트림(DSTREAM) 0이 지시하는 노드는 터미널 노드이다. 도 5의 도표에서 터미널 값(TERMV)은 5임을 알 수 있다. 터미널 값(TERMV)은 메모리(165)에 저장되어 있다. 터미널 값(TERMV)은 LOC 어드레스가 1 인 경우에 대응되는 LOC 1 이전의 터미널 노드의 개수이다. LOC 어드레스가 1인 경우 터미널 값은 5이다. LOC 어드레스가 0 인 경우 터미널 값(TERMV)은 0이다.
메모리 검색부(170)는 메모리(165)에서 출력되는 터미널 값(TERMV)을 수신하여 내부에 저장된 심볼 어드레스를 선택하고, 선택된 심볼 어드레스에 대응되는 심볼 어드레스 신호(SYMADDS)를 발생한다.
심볼 어드레스는 현재의 LOC 테이블 값에 대응되는 터미널 값과 현재의 LOC에서 현재의 노드를 제외한 현재 노드 이전의 터미널 노드의 개수를 더한 값이다. 현재의 LOC 테이블 값에 대응되는 터미널 값(TERMV)은 5 이고, 현재의 LOC에서 현재의 노드를 제외한 현재 노드 이전의 터미널 노드의 개수는 0이다. 즉, 심볼 어드레스는 5가 된다.
도 6에는 심볼 어드레스와 고정 길이 코드 및 심볼이 나타나 있다. 심볼 어드레스가 5 이므로 메모리 검색부(170)는 심볼 e를 선택하기 위한 심볼 어드레스 신호(SYMADDS)가 발생된다.
심볼 어드레스 레지스터(180)는 심볼 어드레스 신호(SYMADDS)를 저장한 후 심볼 어드레스 신호(SYMADDS)를 고정 길이 코드(SFLC)를 구하기 위한 제 4 선택 신호(SEL4)로서 발생한다.
제 4 선택 신호(SEL4)는 메모리(165)로 인가되어 메모리(165)에 저장되어 있으며, 심볼 e에 대응되는 고정 길이 코드(SFLC)를 출력시킨다.
그러면 메모리 검색부(170)는 메모리(165)에서 출력되는 고정 길이 코드(SFLC)를 수신하고 이를 출력한다.
앞서 설명한 과정에 의하여 본 발명의 가변 길이 코드 복호화 장치(100)는 가변 길이 코드로 되어있는 데이터 비트 스트림(DSTREAM)을 3 비트씩 나누어 디코딩 할 수 있으므로 디코딩 속도가 빨라질 수 있다. 또한 제 1 프리 디코딩부(110)와 제 2 프리 디코딩부(120)를 사용함으로써 입력되는 데이터 비트 스트림의 코드 값의 특성에 따라 디코딩 하는 대상 테이블의 사이즈를 줄여 전체적인 전력 소모를 줄일 수 있다.
데이터 비트 스트림(DSTREAM)을 3 비트씩 디코딩하기 위하여 도 2의 LOC 정보 테이블(200)과 같은 구조의 테이블이 작성되어야 하며 도 2의 LOC 정보 테이블(200)의 LOC 정보 비트들을 표현하는 A, B, C, D 가 2비트의 디지털 값으로 표현된다. 그러나 LOC 정보 비트를 표현하는 A, B, C, D가 반드시 2비트로 한정되는 것은 아니다.
예를 들어, 데이터 비트 스트림(DSTREAM)을 2 비트씩 디코딩할 수도 있다. 이 때, A, B, C, D를 표현하는 비트가 2 비트라면 즉, N이 2라면, LOC 정보 비트는 2* { 2}^{2 } =8 비트를 구비한다.
그러면, 도 2의 LOC 정보 테이블은 다음과 같이 변경될 것이다. 즉, 가변 길이 코드가 0, 1인 경우 상기 가변 길이 코드가 지시하는 노드 타입은 터미널 노드이고, 가변 길이 코드가 00부터 11 사이에 존재하는 경우 상기 가변 길이 코드가 지시하는 노드 타입은 터미널 노드와 연속 노드 및 무효 노드 중 어느 하나가 된다.
그리고, 가변 길이 코드가 0 인 경우는 LOC 정보 비트의 상위 4 비트가 A B로 표현되고, 가변 길이 코드가 1 인 경우는 LOC 정보 비트의 하위 4 비트가 A B로 표현되고, 가변 길이 코드가 00부터 11인 경우에는 상기 가변 길이 코드가 지시하는 노드 타입이 터미널 노드인 경우 LOC 정보 비트가 A로 표현되고, 연속 노드인 경우 LOC 정보 비트가 C로 표현되고, 무효 노드인 경우 LOC 정보 비트가 D로 표현될 것이다.
도 7은 다른 기술적 과제를 달성하기 위한 본 발명의 제 1 실시예에 따른 가변 길이 코드의 복호화 방법을 나타내는 플로우 차트이다.
도 8은 도 7의 제 710 단계를 나타내는 플로우 차트이다.
도 7을 참조하면, 본 발명의 제 1 실시예에 따른 가변 길이 코드 복호화 방법(700)은, 소정의 LOC 어드레스를 각각 구비하는 제 1 내지 제 M(M은 자연수) 룩업 테이블 어드레스 레지스터, 상기 LOC 어드레스에 대응되는 K(K는 자연수) 비트의 LOC 테이블 값 및 소정의 터미널 값을 저장하는 메모리 및 가변 길이 코드를 복호화 하는 기준이 되는 정보를 가지는 LOC 정보 테이블을 구비하는 메모리 검색부를 구비하는 가변 길이 코드 복호화 장치의 가변 길이 코드 복호화 방법에 있어서, 데이터 비트 스트림을 수신하고 상기 데이터 비트 스트림의 코드 값에 따라 상기 룩업 테이블 어드레스 레지스터중 하나를 선택하는 제 1 또는 제 2 선택 신호를 발생한다.(710 단계)
좀더 설명하면, 제 710 단계는, 상기 데이터 비트 스트림의 최상위 비트(MSB)쪽에 0 또는 1이 연속되는 경우, 0 이나 1의 개수에 따라 상기 복수개의 룩업 테이블 어드레스 레지스터 중 하나를 선택하는 제 1 선택 신호를 발생한다(810 단계)
상기 데이터 비트 스트림의 최상위 비트(MSB)쪽의 N(N은 자연수) 비트를 이용하여 상기 복수개의 룩업 테이블 어드레스 레지스터 중 하나를 선택하는 제 2 선택 신호를 발생한다.(820 단계)
상기 제 1 선택 신호 또는 상기 제 2 선택 신호 중 하나 및 상기 연속 노드 신호에 응답하여 상기 데이터 비트 스트림을 일정한 비트만큼 이동시킨다.(830 단계)
상기 제 1 선택 신호 또는 상기 제 2 선택 신호에 응답하여 상기 제 1 내지 제 M 룩업 테이블 어드레스 레지스터의 출력들 중 하나를 선택하여 출력한다.(720단계)
상기 720 단계의 출력과 정의 다음 LOC 어드레스를 더하여 상기 메모리에 저장된 LOC 테이블의 값 및 상기 LOC 테이블 값에 대응되며 소정의 심볼 어드레스를 구하기 위한 터미널 값을 선택하는 제 3 선택 신호를 발생한다.(730 단계) 상기 다음 LOC 어드레스는 현재의 LOC 어드레스와 현재의 LOC에서 현재의 노드를 포함한 현재 노드 이전의 비 터미널 노드의 개수를 더한 값인 것을 특징으로 한다.
상기 제 3 선택 신호에 응답하여 선택된 LOC 테이블 값 및 터미널 값을 출력한다.(740 단계) 상기 메모리에서 출력되는 상기 선택된 LOC 테이블 값, 터미널 값 및 상기 데이터 비트 스트림의 L 비트를 수신하고, 상기 LOC 정보 테이블을 이용하여 상기 데이터 비트 스트림의 L 비트가 터미널 노드인지 연속 노드인지를 판단하여 연속 노드 신호 또는 심볼 어드레스 신호를 발생한다.(750 단계) 상기 연속 노드 신호는 상기 데이터 비트 스트림을 3 비트씩 이동시킬 수 있다.
상기 연속 노드 신호에 응답하여 상기 LOC 테이블 값을 선택하기 위한 상기 다음 LOC 어드레스를 발생하여 상기 730 단계로 인가한다.(760 단계) 상기 심볼 어드레스 신호에 응답하여 고정 길이 코드를 구하기 위한 제 4 선택 신호를 발생한다.(770 단계)
상기 제 4 선택 신호에 응답하여 상기 메모리로부터 상기 고정 길이 코드를 출력한다.(780 단계)
상기 심볼 어드레스는 현재의 LOC 테이블 값에 대응되는 터미널 값과 현재의 LOC에서 현재의 노드를 제외한 현재 노드 이전의 터미널 노드의 개수를 더한 값인 것을 특징으로 한다.
상기 메모리 검색부에 저장되는 LOC 정보 테이블은 상기 제 1 실시예의 LOC 정보 테이블과 동일하므로 여기서 상세한 설명은 생략한다.
상기 메모리에 저장되는 LOC 테이블 값은 가변 길이 코드가 지시하는 상기 LOC 정보 테이블의 노드 타입에 대응되는 LOC 정보 비트들로 이루어지는 것을 특징으로 한다. 본 발명의 실시예에서 L은 3 일 수 있다.
도 7 및 도 8의 가변 길이 코드 복호화 방법(700)은 도 1의 가변 길이 코드 복호화 장치(100)의 동작에 대응된다. 따라서 가변 길이 코드 복호화 방법(700)의 동작에 대한 상세한 설명은 생략된다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
상술한 바와 같이 본 발명에 따른 가변 길이 코드 복호화 장치 및 방법은 입력되는 데이터 비트 스트림을 3 비트씩 분리하여 디코딩 하므로 빠른 디코딩이 가능하고, 입력되는 데이터 비트 스트림의 코드 값의 특성에 따라 프리 디코딩을 함으로써 디코딩 하는 대상 테이블의 사이즈를 줄여 전체적인 전력 소모를 줄일 수 있는 장점이 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 실시예에 따른 가변 길이 코드 복호화 장치를 나타내는 블록도이다.
도 2는 도 1의 메모리 검색부에 저장되는 LOC 정보 테이블을 나타내는 도표이다.
도 3은 심볼과 가변 길이 코드가 나타나있는 도표이다.
도 4는 가변 길이 코드로부터 심볼을 구하는 개념도이다.
도 5는 도 1의 메모리에 저장된 LOC 테이블 값과 터미널 값을 나타내는 도표이다.
도 6은 심볼과 고정 길이 코드를 나타내는 도표이다.
도 7은 다른 기술적 과제를 달성하기 위한 본 발명의 제 1 실시예에 따른 가변 길이 코드의 복호화 방법을 나타내는 플로우 차트이다.
도 8은 도 7의 제 710 단계를 나타내는 플로우 차트이다.

Claims (19)

  1. 데이터 비트 스트림을 수신하고 상기 데이터 비트 스트림의 코드 값에 따라 소정의 제 1 내지 제 M 룩업 테이블 어드레스 레지스터 중 하나를 선택하는 제 1 또는 제 2 선택 신호를 발생하는 프리 디코딩부 ;
    상기 제 1 선택 신호 및 상기 제 2 선택 신호중에서 하나의 선택 신호와 소정의 연속 노드 신호에 응답하여 상기 데이터 비트 스트림을 일정한 비트만큼 이동시키는 쉬프팅부 ;
    소정의 메모리에 저장된 K(K는 자연수) 비트의 LOC 테이블 값을 지정하는 LOC 어드레스를 각각 구비하는 제 1 내지 제 M(M은 자연수) 룩업 테이블 어드레스 레지스터 ;
    상기 제 1 선택 신호 및 상기 제 2 선택 신호중에서 하나의 선택 신호에 응답하여 상기 제 1 내지 제 M 룩업 테이블 어드레스 레지스터의 출력들 중 하나를 선택하여 출력하는 선택부 ;
    상기 선택부의 출력을 수신하고, 소정의 연속 노드 신호에 응답하여 상기 메모리에 저장된 LOC 테이블 값 및 상기 LOC 테이블 값에 대응되며 소정의 심볼 어드레스를 구하기 위한 터미널 값을 선택하는 제 3 선택 신호를 발생하거나, 소정의 심볼 어드레스 신호에 응답하여 상기 메모리에 저장된 소정의 고정 길이 코드를 선택하는 제 4 선택 신호를 발생하는 메모리 제어부 ;
    상기 LOC 테이블 값, 상기 터미널 값 및 상기 고정 길이 코드를 저장하고, 상기 제 3 선택 신호에 응답하여 선택된 상기 LOC 테이블 값 및 상기 터미널 값을 출력하거나 상기 제 4 선택 신호에 응답하여 상기 고정 길이 코드를 출력하는 상기 메모리 ; 및
    상기 메모리에서 출력되는 상기 선택된 LOC 테이블 값, 상기 터미널 값 및 상기 데이터 비트 스트림의 L (L은 자연수)비트를 수신하고, 내부에 저장되어 있는 LOC 정보 테이블을 이용하여 상기 데이터 비트 스트림의 L 비트가 터미널 노드인지 연속 노드인지를 판단하여 연속 노드 신호 또는 심볼 어드레스 신호를 발생하거나,
    상기 메모리에서 출력되는 상기 고정 길이 코드를 수신하여 출력하는 메모리 검색부를 구비하는 것을 특징으로 하는 가변 길이 코드 복호화 장치.
  2. 제 1항에 있어서, 상기 프리 디코딩부는,
    상기 데이터 비트 스트림을 수신하고, 상기 데이터 비트 스트림의 최상위 비트(MSB)쪽에 0 또는 1이 연속되는 경우, 0 이나 1의 개수에 따라 상기 제 1 내지 제 M 룩업 테이블 어드레스 레지스터 중 하나를 선택하는 제 1 선택 신호를 발생하는 제 1 프리 디코딩부 ; 및
    상기 데이터 비트 스트림을 수신하고, 상기 데이터 비트 스트림의 최상위 비트(MSB)쪽의 N(N은 자연수) 비트를 이용하여 상기 제 1 내지 제 M 룩업 테이블 어드레스 레지스터 중 하나를 선택하는 제 2 선택 신호를 발생하는 제 2 프리 디코딩부를 구비하는 것을 특징으로 하는 가변 길이 코드 복호화 장치.
  3. 제 1항에 있어서, 상기 쉬프팅부는,
    상기 연속 노드 신호에 응답하여 상기 데이터 비트 스트림을 3비트씩 이동시키는 것을 특징으로 하는 가변 길이 코드 복호화 장치.
  4. 제 1항에 있어서, 상기 메모리 제어부는,
    상기 선택부의 출력을 수신하고 상기 선택부의 새로운 출력이 수신될 때까지 상기 선택부의 출력을 저장하는 오프셋 레지스터 ;
    상기 오프셋 레지스터의 출력과 소정의 다음 LOC 어드레스를 더하여 상기 메모리에 저장된 LOC 테이블의 값들을 선택하는 제 3 선택 신호를 발생하는 합산부 ;
    상기 연속 노드 신호에 응답하여 LOC 테이블 값을 선택하기 위한 상기 다음 LOC 어드레스를 발생하는 LOC 어드레스 레지스터 ; 및
    상기 심볼 어드레스 신호에 응답하여 상기 고정 길이 코드를 구하기 위한 상기 제 4 선택 신호를 발생하는 심볼 어드레스 레지스터를 구비하는 것을 특징으로 하는 가변 길이 코드 복호화 장치.
  5. 제 4항에 있어서, 상기 다음 LOC 어드레스는,
    현재의 LOC 어드레스와 현재의 LOC에서 현재의 노드를 포함한 현재 노드 이전의 비 터미널 노드의 개수를 더한 값인 것을 특징으로 하는 가변 길이 코드 복호화 장치.
  6. 제 1항에 있어서, 상기 심볼 어드레스는,
    현재의 LOC 테이블 값에 대응되는 터미널 값과 현재의 LOC에서 현재의 노드를 제외한 현재 노드 이전의 터미널 노드의 개수를 더한 값인 것을 특징으로 하는 가변 길이 코드 복호화 장치.
  7. 제 1항에 있어서, 상기 메모리 검색부에 저장되는 LOC 정보 테이블은,
    가변 길이 코드(variable length code)가 지시하는 노드가 터미널 노드인지 연속 노드인지 무효 노드인지를 나타내는 노드 타입을 구비하며,
    상기 각각의 노드 타입은 N* { 2}^{L } 비트의 LOC 정보 비트를 구비하며,
    상기 LOC 정보 비트들은 각각 N 비트로 구성되는 A, B, C, D의 4가지 형태로 표현는 것을 특징으로 하는 가변 길이 코드 복호화 장치.
  8. 제 7항에 있어서, 상기 메모리 검색부에 저장되는 LOC 정보 테이블은,
    가변 길이 코드가 0, 1, 00, 01, 10, 11인 경우 상기 가변 길이 코드가 지시하는 노드 타입은 터미널 노드이고, 가변 길이 코드가 000부터 111 사이에 존재하는 경우 상기 가변 길이 코드가 지시하는 노드 타입은 터미널 노드와 연속 노드 및 무효 노드 중 어느 하나이며,
    상기 N 이 2 비트이고, 상기 L 이 3비트라면,
    가변 길이 코드가 0 인 경우는 LOC 정보 비트의 상위 8 비트가 A B B B 로 표현되고, 가변 길이 코드가 1 인 경우는 LOC 정보 비트의 하위 8 비트가 A B B B로 표현되고, 가변 길이 코드가 00 인 경우는 LOC 정보 비트의 상위 4 비트가 A B로 표현되고, 가변 길이 코드가 01 인 경우는 LOC 정보 비트의 상위 5 비트에서 8 비트 사이가 A B로 표현되고, 가변 길이 코드가 10 인 경우는 LOC 정보 비트의 상위 9 비트에서 12 비트 사이가 A B로 표현되고, 가변 길이 코드가 11 인 경우는 LOC 정보 비트의 상위 13 비트에서 16 비트 사이가 A B로 표현되고,
    가변 길이 코드가 000부터 111인 경우에는 상기 가변 길이 코드가 지시하는 노드 타입이 터미널 노드인 경우 LOC 정보 비트가 A로 표현되고, 연속 노드인 경우 LOC 정보 비트가 C 표현되고, 무효 노드인 경우 LOC 정보 비트가 D로 표현되는 것을 특징으로 하는 가변 길이 코드 복호화 장치.
  9. 제 7항에 있어서, 상기 메모리 검색부에 저장되는 LOC 정보 테이블은,
    가변 길이 코드가 0, 1인 경우 상기 가변 길이 코드가 지시하는 노드 타입은 터미널 노드이고, 가변 길이 코드가 00부터 11 사이에 존재하는 경우 상기 가변 길이 코드가 지시하는 노드 타입은 터미널 노드와 연속 노드 및 무효 노드 중 어느 하나이며,
    상기 N 이 2 비트이고, 상기 L 이 2비트라면,
    가변 길이 코드가 0 인 경우는 LOC 정보 비트의 상위 4 비트가 A B로 표현되고, 가변 길이 코드가 1 인 경우는 LOC 정보 비트의 하위 4 비트가 A B로 표현되고,
    가변 길이 코드가 00부터 11인 경우에는 상기 가변 길이 코드가 지시하는 노드 타입이 터미널 노드인 경우 LOC 정보 비트가 A로 표현되고, 연속 노드인 경우 LOC 정보 비트가 C로 표현되고, 무효 노드인 경우 LOC 정보 비트가 D로 표현되는 것을 특징으로 하는 가변 길이 코드 복호화 장치.
  10. 제 1항에 있어서, 상기 메모리에 저장되는 LOC 테이블 값은,
    가변 길이 코드가 지시하는 상기 LOC 정보 테이블의 노드 타입에 대응되는 LOC 정보 비트들로 이루어지는 것을 특징으로 하는 가변 길이 코드 복호화 장치.
  11. 제 1항에 있어서, 상기 선택부는,
    멀티플렉서인 것을 특징으로 하는 가변 길이 코드 복호화 장치.
  12. 소정의 LOC 어드레스를 각각 구비하는 제 1 내지 제 M(M은 자연수) 룩업 테이블 어드레스 레지스터, 상기 LOC 어드레스에 대응되는 K(K는 자연수) 비트의 LOC 테이블 값, 소정의 터미널 값 및 고정 길이 코드를 저장하는 메모리 및 가변 길이 코드를 복호화 하는 기준이 되는 정보를 가지는 LOC 정보 테이블을 구비하는 메모리 검색부를 구비하는 가변 길이 코드 복호화 장치의 가변 길이 코드 복호화 방법에 있어서,
    (a) 데이터 비트 스트림을 수신하고 상기 데이터 비트 스트림의 코드 값에 따라 상기 룩업 테이블 어드레스 레지스터중 하나를 선택하는 제 1 또는 제 2 선택 신호를 발생하는 단계 ;
    (b) 상기 제 1 선택 신호 또는 상기 제 2 선택 신호에 응답하여 상기 제 1 내지 제 M 룩업 테이블 어드레스 레지스터의 출력들 중 하나를 선택하여 출력하는 단계 ;
    (c) 상기 (b) 단계의 출력과 소정의 다음 LOC 어드레스를 더하여 상기 메모리에 저장된 LOC 테이블의 값 및 상기 LOC 테이블 값에 대응되며 소정의 심볼 어드레스를 구하기 위한 터미널 값을 선택하는 제 3 선택 신호를 발생하는 단계 ;
    (d) 상기 제 3 선택 신호에 응답하여 선택된 LOC 테이블 값 및 터미널 값을 출력하는 단계 ;
    (e) 상기 메모리에서 출력되는 상기 선택된 LOC 테이블 값, 상기 터미널 값 및 상기 데이터 비트 스트림의 L 비트를 수신하고, 상기 LOC 정보 테이블을 이용하여 상기 데이터 비트 스트림의 L 비트가 터미널 노드인지 연속 노드인지를 판단하여 연속 노드 신호 또는 심볼 어드레스 신호를 발생하는 단계 ;
    (f) 상기 연속 노드 신호에 응답하여 상기 LOC 테이블 값을 선택하기 위한 상기 다음 LOC 어드레스를 발생하는 단계 ;
    (g) 상기 심볼 어드레스 신호에 응답하여 상기 고정 길이 코드를 구하기 위한 제 4 선택 신호를 발생하는 단계 ; 및
    (h) 상기 제 4 선택 신호에 응답하여 상기 메모리로부터 상기 고정 길이 코드를 출력하는 단계를 구비하는 것을 특징으로 하는 가변 길이 코드 복호화 장치의 가변 길이 코드 복호화 방법.
  13. 제 12항에 있어서, 상기 (a) 단계는,
    (a1) 상기 데이터 비트 스트림의 최상위 비트(MSB)쪽에 0 또는 1이 연속되는 경우, 0 이나 1의 개수에 따라 상기 복수개의 룩업 테이블 어드레스 레지스터 중 하나를 선택하는 제 1 선택 신호를 발생하는 단계 ;
    (a2) 상기 데이터 비트 스트림의 최상위 비트(MSB)쪽의 N(N은 자연수) 비트를 이용하여 상기 복수개의 룩업 테이블 어드레스 레지스터 중 하나를 선택하는 제 2 선택 신호를 발생하는 단계 ; 및
    (a3) 상기 제 1 선택 신호 또는 상기 제 2 선택 신호 중 하나 및 상기 연속 노드 신호에 응답하여 상기 데이터 비트 스트림을 일정한 비트만큼 이동시키는 단계를 구비하는 것을 특징으로 하는 가변 길이 코드 복호화 장치의 가변 길이 코드 복호화 방법.
  14. 제 12항에 있어서, 상기 다음 LOC 어드레스는,
    현재의 LOC 어드레스와 현재의 LOC에서 현재의 노드를 포함한 현재 노드 이전의 비 터미널 노드의 개수를 더한 값인 것을 특징으로 하는 가변 길이 코드 복호화 장치의 가변 길이 코드 복호화 방법.
  15. 제 12항에 있어서, 상기 심볼 어드레스는,
    현재의 LOC 테이블 값에 대응되는 터미널 값과 현재의 LOC에서 현재의 노드를 제외한 현재 노드 이전의 터미널 노드의 개수를 더한 값인 것을 특징으로 하는 가변 길이 코드 복호화 장치의 가변 길이 코드 복호화 방법.
  16. 제 12항에 있어서, 상기 메모리 검색부에 저장되는 LOC 정보 테이블은,
    가변 길이 코드(variable length code)가 지시하는 노드가 터미널 노드인지 연속 노드인지 무효 노드인지를 나타내는 노드 타입을 구비하며,
    상기 각각의 노드 타입은 N* { 2}^{L } 비트의 LOC 정보 비트를 구비하며,
    상기 LOC 정보 비트들은 각각 N 비트로 구성되는 A, B, C, D의 4가지 형태로 표현는 것을 특징으로 하는 가변 길이 코드 복호화 장치.
  17. 제 16항에 있어서, 상기 메모리 검색부에 저장되는 LOC 정보 테이블은,
    가변 길이 코드가 0, 1, 00, 01, 10, 11인 경우 상기 가변 길이 코드가 지시하는 노드 타입은 터미널 노드이고, 가변 길이 코드가 000부터 111 사이에 존재하는 경우 상기 가변 길이 코드가 지시하는 노드 타입은 터미널 노드와 연속 노드 및 무효 노드 중 어느 하나이며,
    상기 N 이 2 비트이고, 상기 L 이 3비트라면,
    가변 길이 코드가 0 인 경우는 LOC 정보 비트의 상위 8 비트가 A B B B 로 표현되고, 가변 길이 코드가 1 인 경우는 LOC 정보 비트의 하위 8 비트가 A B B B로 표현되고, 가변 길이 코드가 00 인 경우는 LOC 정보 비트의 상위 4 비트가A B로 표현되고, 가변 길이 코드가 01 인 경우는 LOC 정보 비트의 상위 5 비트에서 8 비트 사이가 A B로 표현되고, 가변 길이 코드가 10 인 경우는 LOC 정보 비트의 상위 9 비트에서 12 비트 사이가 A B로 표현되고, 가변 길이 코드가 11 인 경우는 LOC 정보 비트의 상위 13 비트에서 16 비트 사이가 A B로 표현되고,
    가변 길이 코드가 000부터 111인 경우에는 상기 가변 길이 코드가 지시하는 노드 타입이 터미널 노드인 경우 LOC 정보 비트가 A로 표현되고, 연속 노드인 경우 LOC 정보 비트가 C로 표현되고, 무효 노드인 경우 LOC 정보 비트가 D로 표현되는 것을 특징으로 하는 가변 길이 코드 복호화 장치.
  18. 제 16항에 있어서, 상기 메모리 검색부에 저장되는 LOC 정보 테이블은,
    가변 길이 코드가 0, 1인 경우 상기 가변 길이 코드가 지시하는 노드 타입은 터미널 노드이고, 가변 길이 코드가 00부터 11 사이에 존재하는 경우 상기 가변 길이 코드가 지시하는 노드 타입은 터미널 노드와 연속 노드 및 무효 노드 중 어느 하나이며,
    상기 N 이 2 비트이고, 상기 L 이 2비트라면,
    가변 길이 코드가 0 인 경우는 LOC 정보 비트의 상위 4 비트가 A B로 표현되고, 가변 길이 코드가 1 인 경우는 LOC 정보 비트의 하위 4 비트가 A B로 표현되고,
    가변 길이 코드가 00부터 11인 경우에는 상기 가변 길이 코드가 지시하는 노드 타입이 터미널 노드인 경우 LOC 정보 비트가 A로 표현되고, 연속 노드인 경우 LOC 정보 비트가 C로 표현되고, 무효 노드인 경우 LOC 정보 비트가 D로 표현되는 것을 특징으로 하는 가변 길이 코드 복호화 장치.
  19. 제 12항에 있어서, 상기 메모리에 저장되는 LOC 테이블 값은,
    가변 길이 코드가 지시하는 상기 LOC 정보 테이블의 노드 타입에 대응되는 LOC 정보 비트들로 이루어지는 것을 특징으로 하는 가변 길이 코드 복호화 장치의 가변 길이 코드 복호화 방법.
KR10-2002-0045975A 2002-08-03 2002-08-03 가변 길이 코드 복호화 장치 및 방법 KR100486251B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR10-2002-0045975A KR100486251B1 (ko) 2002-08-03 2002-08-03 가변 길이 코드 복호화 장치 및 방법
TW092120370A TWI223501B (en) 2002-08-03 2003-07-25 Apparatus and method for decoding variable length code
US10/632,010 US6809665B2 (en) 2002-08-03 2003-07-31 Apparatus and method for decoding variable length code
JP2003285402A JP4098187B2 (ja) 2002-08-03 2003-08-01 可変長コード復号化装置及び方法
CNB031602657A CN1256848C (zh) 2002-08-03 2003-08-03 用于译码可变长度编码的装置和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2002-0045975A KR100486251B1 (ko) 2002-08-03 2002-08-03 가변 길이 코드 복호화 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20040012403A KR20040012403A (ko) 2004-02-11
KR100486251B1 true KR100486251B1 (ko) 2005-05-03

Family

ID=31185797

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0045975A KR100486251B1 (ko) 2002-08-03 2002-08-03 가변 길이 코드 복호화 장치 및 방법

Country Status (5)

Country Link
US (1) US6809665B2 (ko)
JP (1) JP4098187B2 (ko)
KR (1) KR100486251B1 (ko)
CN (1) CN1256848C (ko)
TW (1) TWI223501B (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0717576U (ja) * 1993-09-07 1995-03-28 株式会社野口紙工 綴込装置
US7594098B2 (en) * 2005-07-01 2009-09-22 Stmicroelectronics, Sa Processes and devices for compression and decompression of executable code by a microprocessor with RISC architecture and related system
US7974517B2 (en) * 2005-10-05 2011-07-05 Broadcom Corporation Determination of decoding information
KR100667595B1 (ko) 2005-12-29 2007-01-11 삼성전자주식회사 가변 길이 디코더
JP2007312323A (ja) * 2006-05-22 2007-11-29 Osaka Univ データ圧縮方法,データ圧縮装置,コンピュータプログラム及びコンピュータでの読み取りが可能な記録媒体
EP2104236B1 (en) * 2007-01-19 2018-08-15 Mitsubishi Electric Corporation Table device, variable-length encoding device, variable-length decoding device, and variable-length encoding/decoding device
KR101009725B1 (ko) 2008-09-04 2011-01-19 한국전자통신연구원 가변길이 코드 복호화를 위한 테이블 생성 방법
JP2010176277A (ja) * 2009-01-28 2010-08-12 Sanyo Electric Co Ltd データ転送システム
JP4764488B2 (ja) * 2009-03-16 2011-09-07 株式会社東芝 デコード装置およびデコード方法
ES2549502T3 (es) 2009-11-20 2015-10-28 Sk Chemicals Co., Ltd. Antagonistas de receptores de gonadoliberina, método de fabricación de los mismos, y composición farmacéutica que los contienen
JP2012033032A (ja) * 2010-07-30 2012-02-16 Sony Corp 情報処理装置および情報処理方法
TWI420830B (zh) * 2010-12-31 2013-12-21 Ind Tech Res Inst 動態解碼查詢表之產生方法與應用其之電子裝置
CN103327314B (zh) * 2012-03-22 2016-06-29 上海算芯微电子有限公司 基于通用格式码表的可变长解码装置和方法
CN103905054B (zh) * 2012-12-25 2017-05-24 展讯通信(上海)有限公司 构建码表的方法和装置,编码、解码方法和装置
CN104427530B (zh) * 2013-08-29 2019-05-31 锐迪科(重庆)微电子科技有限公司 一种控制信道检测方法及装置
US10324842B2 (en) * 2014-12-13 2019-06-18 Via Alliance Semiconductor Co., Ltd Distributed hang recovery logic
CN116208667A (zh) * 2023-01-18 2023-06-02 中国电子科技集团公司第二十八研究所 一种可变长高压缩的比特报文编解码方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5784631A (en) * 1992-06-30 1998-07-21 Discovision Associates Huffman decoder
US5226082A (en) * 1992-07-02 1993-07-06 At&T Bell Laboratories Variable length decoder
US5675332A (en) * 1996-02-01 1997-10-07 Samsung Electronics Co., Ltd. Plural-step chunk-at-a-time decoder for variable-length codes of Huffman type
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
US5990812A (en) * 1997-10-27 1999-11-23 Philips Electronics North America Corporation Universally programmable variable length decoder

Also Published As

Publication number Publication date
US6809665B2 (en) 2004-10-26
KR20040012403A (ko) 2004-02-11
US20040021593A1 (en) 2004-02-05
JP4098187B2 (ja) 2008-06-11
TW200402940A (en) 2004-02-16
JP2004096735A (ja) 2004-03-25
TWI223501B (en) 2004-11-01
CN1496127A (zh) 2004-05-12
CN1256848C (zh) 2006-05-17

Similar Documents

Publication Publication Date Title
KR100486251B1 (ko) 가변 길이 코드 복호화 장치 및 방법
US5696507A (en) Method and apparatus for decoding variable length code
US5600812A (en) Variable-length-code decoders storing decoding results and corresponding code-bit-length information in memory
US5841381A (en) Huffman coding/decoding using an intermediate code number
KR100748485B1 (ko) 가변 길이 코드워드 디코더 및 가변 길이 코드워드 디코딩 방법
JP3778087B2 (ja) データ符号化装置及びデータ復号装置
US6546053B1 (en) System and method for decoding signal and method of generating lookup table for using in signal decoding process
JP3189876B2 (ja) 可変長符号復号化回路
JP4079965B2 (ja) 復号化システム
JP4841496B2 (ja) 可変長符号復号化装置
KR19980702418A (ko) 가변 길이 디코더
US7256719B2 (en) Digital data decompression implemented in a field programmable array device
US6518896B1 (en) Multiple symbol length lookup table
JP3429623B2 (ja) 高速可変長符号復号化装置
JP3304745B2 (ja) 可変長符号復号化器
JP2934603B2 (ja) 可変長さコードの復号化方法及びその装置
KR0152035B1 (ko) 가변장복호화방법 및 그 장치
KR100207428B1 (ko) 허프만 코드 변환에 적응적인 고속 가변장 복호화 장치 및 방법
JP2710917B2 (ja) ヘッダ検出器及びこれを用いた復号装置
KR100462060B1 (ko) 유니버셜 가변 길이 코드 부호어 다중 추출 방법 및 그를위한 룩-업 테이블 구성 방법
JP2004056417A (ja) 復号装置および復号方法
JP3332630B2 (ja) 復号装置及びデコードテーブルの生成方法
JP4466382B2 (ja) 符号語抽出装置とその方法、復号化装置、ならびに画像再生装置
KR0125126B1 (ko) 고속 가변길이부호 복호화 장치
KR20050066142A (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
FPAY Annual fee payment

Payment date: 20090415

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee