KR19990050486A - 고속 처리 가변 길이 코덱 장치 - Google Patents

고속 처리 가변 길이 코덱 장치 Download PDF

Info

Publication number
KR19990050486A
KR19990050486A KR1019970069613A KR19970069613A KR19990050486A KR 19990050486 A KR19990050486 A KR 19990050486A KR 1019970069613 A KR1019970069613 A KR 1019970069613A KR 19970069613 A KR19970069613 A KR 19970069613A KR 19990050486 A KR19990050486 A KR 19990050486A
Authority
KR
South Korea
Prior art keywords
variable length
codeword
length
bit string
value
Prior art date
Application number
KR1019970069613A
Other languages
English (en)
Other versions
KR100268831B1 (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 KR1019970069613A priority Critical patent/KR100268831B1/ko
Publication of KR19990050486A publication Critical patent/KR19990050486A/ko
Application granted granted Critical
Publication of KR100268831B1 publication Critical patent/KR100268831B1/ko

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • 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)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

허프만 코드 구조를 기초로 입력 데이터를 가변 길이 코드 워드로 코덱하거나 또는 디코딩하는 고속 처리 가변 길이 코덱 장치가 개시되어 있다. 코덱 장치는 허프만 코드 구조에 따른 가변 길이 코드 워드들의 경계를 검출하기 위한 경계 검출부를 포함한다. 상기 경계 검출부는 외부로부터의 가변 길이 코드 워드들 또는 부호화 메모리로부터의 저장 코드 워드의 가변 길이 코드 워드의 길이를 검출한다. 가변 길이 검출부는 상기 저장 코드 워드에서의 m비트를 갖는 선택 코드 워드들, 및 허프만 코드 구조에서 상기 선택 코드 워드에 의해 결정되는 레벨 n의 터미널 노드의 노드 코드 워드 을 근거로, 상기 저장 코드 워드에서의 가변 길이 코드 워드의 길이를 검출한다. 그리고, 상기 코덱 장치는 가변 길이 검출부에 의해 검출된 가변 길이 코드 워드의 길이 에 응답하여, 저장 코드 워드에서 가변 길이 코드 워드를 검출하기 위한 부호화 팩킹부, 및 검출된 가변 길이 코드 워드를 어드레스로 복호화 코드 워드가 저장된 메모리를 포함한다.

Description

고속 처리 가변 길이 코덱 장치
본 발명은 허프만 코드 구조를 기초로 입력 데이터를 가변 길이 코드 워드로 코딩하거나 또는 입력되는 가변 길이 코드 워드를 디코딩할 수 있는 고속 처리 가변 길이 코덱 장치에 관한 것이다.
일반적으로, 가변 길이 코덱은 손실 없이 데이터 압축에 사용되는 코딩 기술이다. 가변 길이 코딩은 모든 가능 입력 데이터(또는 심볼)들을 그 발생 확률에 따라 가변 길이 코드 워드로 변환시켜 그 평균 코드 길이를 감소시킨다. 가변 길이 코딩은 가변 길이 코딩은 빈도 수가 많은 데이터에는 보다 짧은 길이의 코드 워드를, 빈도 수가 적은 데이터에는 보다 긴 길이의 코드 워드를, 모든 가능한 소스 코드 워드의 라이브러리(library)에 할당함으로써, 가변 길이 코드 워드로 코딩한 데이터의 평균 워드 길이가 코딩 전의 데이터의 평균 워드 길이보다 짧아지게 함으로써, 그 결과 데이터 압축을 실현하게 된다.
이러한 가변 길이 코딩 방법중 가장 널리 사용되는 방법은 허프만 코딩 방법이다. 허프만 코딩 방법은 통계치가 알려진 데이터를 그 발생 빈도 수에 따라 허프만 코드 트리에 적용함으로써, 프리픽스-프리 가변 길이 코드(Prefix-free Variable Length Code)를 구현한다.
가변 길이 코딩 장치에 대한 일 예가 조셉에게 허여된 미합중국 특허 제 3,675,212 호에 개시되어 있다. 조셉에 의해 제시된 가변 길이 코딩 장치는 모든 가능 심볼에 가변 길이 코드 워드를 할당하고, 각각의 가변 길이 코드 워드를 상기 심볼들을 주소로 메모리에 저장하는 한편, 상기 가변 길이 코드 워드의 길이를 메모리에 저장하여, 상기 심볼 입력시 상기 심볼에 대응하는 가변 길이 코드 및 그 길이를 메모리로부터 독출하여 코딩하도록 되어 있다.
가변 길이 디코딩 장치는 가변 길이 코드 워드로 변환된 데이터를 복호화하는 것으로, 각각의 가변 길이 코드 워드를 원래의 소스 심볼로 디코딩하기 위해서는 먼저 가변 길이 코드 워드를 수신된 비트 열에서 도출시켜야 한다. 그러나, 가변 길이 코드 워드를 디코딩할 때까지는 다음 코드 워드의 시작 비트의 위치는 알수 없으며, 이러한 디코딩 특성은 디코딩 장치의 제작시 다중 파이프 라인 하드웨어를 사용할 것을 종용한다. 따라서, 통상적으로, 가변 길이 디코딩 장치는 인코딩 장치보다 복잡하다.
통상적으로 가변 길이 코드 워드의 비트 스트림을 복호화하는데는 많은 방법이 있다. 가장 많이 이용되는 것의 하나는 트리-탐색 알고리즘이다. 가변 길이 코드는 터미널 노드라고 불리는 잎으로 코드 워드를 갖는 트리에 의해 표현될 수 있다. 복호화는 코드 트리의 루트로부터 출발하여 수신된 비트열에 의해 안내되어 각 노드에 있는 2개의 가지 중에 하나로 이어진다. 잎에 도달할 때, 코드 워드의 끝이 검출되고 남아 있는 열로부터 세크먼트된다. 이러한 형식의 디코더는 상기 트리에 대응하는 논리 회로 및 코드 트리를 가로지르는 제어 회로를 포함한다. 이러한 방법은 코드 트리를 통한 비트-바이 -비트 탐색이 복호화된 각 심볼에 대해 요구되는 바, 속도가 트리를 통한 비트-방이-비트 탐색이 복호화된 각 심벌에 대해 요구되는 바, 속도가 느리고 특히 긴 코드 워드에 대해 오랜 복호화 시간이 요구된다. 전형적인 적용에 있어서, 입력 심벌은 다수의 비트로 표현된다. 수신된 비트들을 디코더로 시프팅하는 속도는 복호화된 데이터의 평균 속도의 수배이다. 따라서, 트리-탐색을 기초로 하는 디코더는 출력 데이터 비율의 수배 속도로 동작하여야 한다.
그러나, 고선명 텔레비젼의 디지털 전송에 있어서 휘도와 신호들을 결합한 전체 샘풀 속도는 약 100MHz를 요구하며, 가변 길이 부호화가 사용되는 경우 최대 길이의 코드 워드는 전형적으로 16비트이므로 상기 비트-바이 비트 디코더는 상기 샘풀 속도로 코드 워드를 검출하기 위해사는 전형적으로 1.6기가 비트/초의 속도로 시프트해야 한다. 그러나 최근의 IC 제조 기술을 고려할 때 상기와 같은 고속의 디코더를 구현하기는 어렵다.
한편, 가변 길이 코드 워드의 스트림을 복호화하기 위하여 여러 장치가 제안되고 있는데, 현재까지 제안된 가변 길이 복호화 장치의 구조는 순차적 복호화 및 병렬 복호화로 나눌 수 있다. 먼저, 순차적 복호화는 비트열을 앞에서부터 차례로 복호화하는 방법으로, 정속 입력 구조, 정속 출력 구조, 가변 입/출력 구조로 나눌 수 있으며, 정속 입력 구조는 이력 비트열을 비트 단위로 처리하여 설계는 용이하나 속도가 느린 문제점이 있다. 또한, 정속 출력 구조의 가변 길이 복화화 장치는 벨 코어의 M. T Sun이 제안한 구조로 입력 비트 열을 최대 코드 워드 길이 만큼 팩킹하여 ROM 테이블에 저장하며, 복호화시 코드 워드를 찾아 찾은 코드 워드의 길이만큼 배럴 시프터로 시프트 시킨 후, 다음 코드 워드를 찾는 방식이다(Bell Core, U.S.A. 특허 제5173695). 즉, 한 싸이클에 하나의 코드 워드가 복호화되므로 정속 입력 구조보다 속도가 빠른 정속 출력 가변 길이 복호화 장치이다.
본 발명의 목적은 가변 길이 코드 워드의 길이를 저장한 메모리없이, 입력 데이터를 가변 길이 코드 워드로 코딩하거나 또는 입력되는 가변 길이 코드 워드를 디코딩할 수 있는 고속 처리 가변 길이 코덱 장치를 제공하는 것이다.
상기 목적을 실현하기 위한 본 발명에 따른 가변 길이 코덱은 a) 소스로부터 입력되는 부호화 비트 열을 저장하기 위한 버퍼(110); b) 외부로부터의 복호화 비트 열을 저장하고, 상기 저장된 복호화 코드 워드를 가변 길이 코드 워드의 최대 길이로 출력시키며, 상기 복호화 비트 열에 포함된 가변 길이 코드 워드의 길이에 따라 상기 복호화 비트 열에서 복호화된 비트들 다음 비트부터 출력시키기 위한 복호화 팩킹부(130); c) 허프만 코드 구조를 기초로 모든 가능 심볼 각각에 대해 각각 정의된 가변 길이 코드 워드들을 상기 모든 가능 심볼들을 주소로 저장되고, 상기 버퍼(110)로부터 상기 심볼(X)이 입력되는 경우, 상기 심볼(X)에 대응하는 가변 길이 코드 워드 VLW(X)를 포함하는 저장 코드 워드 M(X)를 출력하기 위한 부호화 메모리(150); d) 복호화 코드 워드를 허프만 코드 트리에서의 터미널 노드의 위치를 주소로 저장하기 위한 복호화 메모리; e) 외부로부터의 제어 신호에 응답하여 상기 메모리(150)로부터의 저장 코드 워드 M(X)및 상기 복호화 팩킹부(130)로부터의 부호화 비트 열(ECSi)을 선택 출력하기 위한 선택 수단(160); f) 상기 선택 수단으로부터 입력되는 비트 열(CW)에서 m비트를 선택하여 발생되는 선택 코드 워드(BWm)들 및 상기 선택 코드 워드(BWm)들의 허프만 코드 트리에서의 레벨 및 각 레벨에서의 터미널 노드의 수를 근거로, 상기 비트 열(CW)에 포함된 상기 가변 길이 코드 워드의 길이를 검출하기 위한 가변 길이 검출부(200); g) 상기 가변 길이 검출부(200)에 의해 검출된 가변 길이 코드 워드의 길이에 응답하여 상기 비트 열(CW)에 포함된 가변 길이 코드 워드의 허프만 트리에서의 위치를 검출하고, 상기 검출된 위치를 상기 복호화 메모리에 제공하기 위한 주소 발생부(600); 및 h) 상기 길이 검출부(220)에 의해 검출된 가변 길이 코드 워드의 길이(LEG)에 응답하여 상기 비트 열(CW)에서 가변 길이 코드 워드(W2)를 검출하고, 상기 검출되는 가변 길이 코드 워드(W2)를 출력시키기 위한 부호화 부호화 팩킹부(310)로 구성되며, 여기서, 상기 m은 1, 2, 3 .... K 이고, 상기 K 는 가변 길이 코드 워드의 최대 길이이다.
본 발명에 의하면, 허프만 코드 구조에 따른 가변 길이 코드 워드의 길이를 메모리로부터 발생되는 저장 코드 워드로부터 검출하게 됨으로써, 메모리에 가변 길이 코드 워드의 길이를 저장하지 않고, 입력 데이터를 가변 길이 코드 워드로 코딩하거나 또는 입력되는 가변 길이 코드 워드의 길이를 검출하여 가변 길이 코드 워드를 고정 길이 코드 워드로 디코딩할 수 있게 된다.
도 1은 본 발명의 일 실시 예에 따른 가변 길이 코덱 장치를 도시한 블록 구상도이다.
도 2는 도 1에 도시한 경계 검출부의 일 예를 도시한 구성도이다.
도 3은 도 2에 도시한 연산부의 일 예를 도시한 구성도이다.
도 4는 도 1에 도시한 길이 검출부의 일 예를 도시한 구성도이다.
도 5는 도 1에 도시한 부호화 팩킹부의 일 예를 도시한 회로 구성도이다.
도 6은 허프만 코드 구조를 설명하기 위한 도면이다.
<도면의 주요 부분에 대한 부호의 설명 >
110, 130: 버퍼 150: 부호화 메모리
160: 스위치 210: 경계 검출부
220 길이 검출부 310: 부호화 팩킹부
610: 멀티프렉스 620: 레지스터부
412, 422, 424, 432: 래치 630, 420: 누산부
421, 650: 가산기 510: 코드 선택부
520: 레벨 검출부 530: 연산부
540: 경계 값 발생부
도 1은 본 발명의 일 실시 예에 따른 고속 처리 가변 길이 코덱 장치를 도시한 구성도이다.
도 1을 참조하면, 가변 길이 코덱 장치는 버퍼(110), 복호화 팩킹부(130), 부호화 메모리(150), 스위치(160), 가변 길이 검출부(200), 부호화 팩킹부(310), 주소 발생부(600), 및 복호화 메모리(660)로 구성된다.
상기 버퍼(110)는 외부로부터 시리얼 또는 병렬로 입력되는 부호화 비트 열(이하, 심볼이라 함)을 저장하고, 그 제어 신호(도시하지 않음)에 응답하여 상기 심볼(X)을 상기 부호화 메모리(150)에 출력한다.
상기 부호화 메모리(150)는 저장 코드 워드 M(X)들을 저장한다. 상기 부호화 메모리(150)는 저장 코드 워드들을 상기 심볼들 또는 상기 심볼들에 대응하는 주소들에 따라 가변 길이 코드 워드의 최대 길이로 저장한다. 따라서, 어떤 심볼이 상기 상기 부호화 메모리(150)에 입력될 때, 상기 부호화 메모리(150)는 상기 심볼에 대응하는 저장 코드 워드 M(X)를 발생시킨다. 상기 저장 코드 워드의 코드 길이는 가변 길이 코드 워드의 최대 길이므로, 상기 저장 코드 워드에는 가변 길이 코드 워드 및 스터핑 비트(stuffing bits)들로 구성된다.
예컨데, 상기 가변 길이 코드 워드의 최대 길이가 K비트이고, 심볼 [X]가 상기 부호화 메모리(150)에 입력되는 경우, 상기 부호화 메모리(150)는 K 비트 열의 저장 코드 워드 M(X)를 발생시키고, 상기 저장 코드 워드 M(X)를 상기 스위치(160)의 제1 입력 단자(S1) 및 상기 부호화 팩킹부(310)에 각각 제공한다.
상기 복호화 팩킹부(130)는 외부로부터 입력되는 복호화 비트 열(VLW)을 저장하고, 상기 저장된 복호화 코드 워드(VLW)를 가변 길이 코드 워드의 최대 길이로 출력시키며, 상기 복호화 비트 열에 포함된 가변 길이 코드 워드의 길이에 따라 상기 복호화 비트 열에서 복호화된 비트들 다음 비트부터 상기 스위치(160)의 제2 입력 단자(S2)에 제공한다.
상기 스위치(160)는 상기 제1 및 제2 입력 단자(S1 및 S2)를 통해 입력되는 비트 열에서 한 비트 열을 선택하고 선택된 비트 열(CW)을 상기 가변 길이 검출부(200)에 제공한다.
상기 가변 길이 검출부(200)는 도 8에 도시한 바와 같이, 상기 캐노니컬 허프만 코드 트리를 기초로 상기 스위치(160)으로부터의 비트 열(CW)에 포함된 가변 길이 코드 워드의 길이 LEG(X)를 검출한다.
상기 가변 길이 검출부(200)는 상기 비트 열(CW)에 포함된 가변 길이 코드 워드의 길이 LEG(X)를 검출하기 위해 상기 비트 열(CW)에서 1비트부터 K비트까지 차례로를 선택하여 선택 코드 워드(BWm)들을 발생시킨다. 이어, 상기 선택 코드 워드(BWm)들이 허프만 코드 트리에 의해 정의되는 레벨들 및 상기 검출된 각 레벨에서의 터미널 노드의 수를 검출한다. 그리고, 선택 코드 워드(BWm), 레벨들 및 상기 검출된 각 레벨에서의 터미널 노드의 수를 근거로, 상기 비트 열(CW)에 포함된 상기 가변 길이 코드 워드의 길이 LEG(X)를 검출한다.
상기 복호화 메모리(660)는 복호화 코드 워드를 허프만 코드 트리에서의 터미널 노드의 위치에 대응하는 주소에 따라 저장한다.
상기 주소 발생부(600)는 상기 가변 길이 검출부(200)에 의해 검출된 가변 길이 코드 워드의 길이에 응답하여 상기 비트 열(CW)에 포함된 가변 길이 코드 워드의 허프만 트리에서의 위치를 검출하고, 상기 검출된 위치에 응답하여 상기 주소를 발생시키고, 상기 발생되는 주소를 상기 복호화 메모리(660)에 제공한다.
바람직하게는, 상기 가변 길이 검출부(200)는 도 1에 도시된 바와 같이, 상기 가변 길이 코드워드의 길이 LEG(X)를 검출하기 위해 경계 검출부(210) 및 길이 검출부(220)로 구성된다.
상기 경계 검출부(210)는 상기 스위치(160)로부터의 상기 비트 열(CW)은 저장 코드워드 M(X)에서 1 비트 내지 K 비트를 차례로 선택하여 K 개의 선택 코드 워드 BW(X)1, BW(X)2, BW(X)3,..., BW(X)K를 발생시킨다. 또한, 상기 경계 검출부(210)는 상기 선택 코드워드 BW(X)m=1,2,...,K각각에 대응하는 허프만 코드 구조에서의 레벨에서의 터미널 노드의 수를 검출한다.
이어, 상기 경계 검출부(210)는 상기 선택 코드워드들 BW(X)m=1,2,...,K각각을 상기 각 레벨에서 터미널 노드의 수들과 비교하고, 그 결과로써 상기 비트 열(CW)에 포함된 가변 길이 코드워드 VLW(X) 및 스터핑 비트들 사이의 경계를 검출하고, 상기 경계 검출 결과로서의 경계 값 MSB(X)m을 발생시키고, 상기 발생되는 경계 값 MSB(X)m을 상기 길이 검출부(220)에 제공한다.
상기 길이 검출부(220)는 상기 경계 검출부(210)로부터의 경계 값 MSB(X)m을 근거로 상기 비트 열(CW)에 포함된 상기 가변 길이 코드워드의 길이 LEG(X)를 상기 부호화 팩킹부(310)에 제공한다.
도 2는 도 1에 도시한 경계 검출부(210)의 일 예를 도시한 회로 구성도이다.
도 2를 참조하면, 상기 경계 검출부(210)는 상기 경계 값 MSB(X)m을 검출하기 위해 바람직하게는, 코드 선택부(510), 레벨 검출부(520), 연산부(530), 및 경계 값 발생부(540)로 구성된다.
상기 코드 선택부(510)는 상기 부호화 메모리(150)로부터의 저장 코드워드 M(X)에서 1부터 K 비트까지 차례로 선택하여 상기 선택 코드 워드들 BW(X)m을 발생시키고, 상기 발생된 선택 코드 워드들 BW(X)m=1,2,...,K을 상기 레벨 검출부(520) 및 상기 연산부(530)에 각각 제공한다.
상기 코드 선택부(510)로부터 소정의 선택 코드 워드 BW(X)m가 입력되는 경우, 상기 레벨 검출부(520)는상기 코드 선택부(510)로부터 소정의 선택 코드 워드 BW(X)m각각에 응답하여 상기 선택 코드 워드 BW(X)m의 허프만 트리에서의 레벨 m을 검출한다. 그리고, 루트로부터 상기 검출된 레벨 m까지 각 레벨에서의 터미널 노드수를 검출하고, 각 레벨에 대응하는 웨이트(weight)를 상기 터미널 노드수에 부여하며, 상기 웨이트가 부여된 터미널 노드수들을 합산하여, 레벨 코드 워드들 NW(X)m를 발생시킨다.
즉, 상기 선택 코드 워드 BW(X)m에 의해 정의된 레벨 m에 대한 웨이트된 수들의 합은 다음과 수학식 1과같은 형태를 갖는다.
여기서, j는 허프만 코드 트리에서의 레밸, 그리고 Lj는 레벨 j에서의 터미널 노드의 수이다.
상기 레벨 검출부(520)는 상기 합 WS(X)m을 2진수로 변환하여 상기 레벨 코드 워드 NW(X)m를 발생시키고, 상기 레벨 코드 워드 NW(X)m를 상기 연산부(530)에 제공한다.
상기 연산부(530)는 상기 코드 선택부(510)로부터의 상기 선택 코드워드들 BW(X)m=1,2,..,K에서 상기 레벨 검출부(520)로부터의 상기 레벨 코드 워드들 NW(X)m=1,2,..,K을 감산하고, 그 감산 결과인 위치 값들 LD(X)m=1,2,..,K을 상기 주소 발생부(600) 및 상기 경계 값 발생부(540)에 각각 제공한다. 상기 감산 결과들 LD(X)m=1,2,..,K는 상기 선택 코드 워드들 BW(X)m=1,2,..,K각각에 대해 가변 길이 코드 워드들의 비트들로 구성되었는지를 그 여부를 나타낸다.
도 3은 도 2에 도시한 연산부의 일 예를 도시한 회로 구성도이다.
도 3을 참조하면, 상기 연산부(530)는 상기 코드 선택부(510)로부터의 상기 선택 코드워드 BW(X)m에서 상기 레벨 검출부(520)로부터의 상기 레벨 코드 워드 NW(X)m를 감산하기 위해 제1 내지 제K 감산기(531 내지 537)로 구성된다.
상기 제1 내지 제K 감산기(531 내지 537)는 각각 상기 선택 코드워드 BW(X)1내지 상기 선택 코드워드 BW(X)K에서 상기 레벨 코드 워드 NW(X)1내지 레벨 코드 워드 NW(X)K을 감산하고, 제1 내지 제K 감산 결과 LD(X)1내지 LD(X)K를 상기 경계 값 발생부(540)에 제공한다.
상기 경계 값 발생부(540)는 상기 연산부(530)로부터의 제1 내지 제K 감산 결과 LD(X)1내지 LD(X)K로부터 최상위 비트들 MSB(X)m=1,2,..,K을 검출하고, 상기 검출된 MSB(X)m=1,2,..,K을 경계 값 MSB(X)m=1,2,..,K으로서 상기 길이 검출부(220)에 제공한다. 상기 경계 값 MSB(X)m=1,2,..,K은 상기 저장 코드 워드 M(X)의 스터핑 비트들 및 가변 길이 코드 워드 VLW(X)사이의 경계를 나타낸다.
다시 도 1을 참조하면, 상기 길이 검출부(220)는 상기 저장 코드 워드 M(X)의 스터핑 비트들 및 가변 길이 코드 워드 VLW(X)사이의 경계를 나타내는 상기 경계 값 MSB(X)m=1,2,..,K을 근거로 상기 길이 값 LEG(X)를 발생시킨다.
도 4는 도 1에 도시한 길이 검출부의 일 예를 도시한 회로 구성도이다.
도 4를 참조하면, 상기 길이 검출부(220)는 K개의 XOR 게이트로 구성된다.
제1 XOR 게이트는 '0' 값 및 MSB(X)1을, 그리고 제n XOR 게이트는 MSB(X)n-1및 MSB(X)n을 배타적 논리합한다. 여기서 n은 2부터 K까지의 정수이다.
그리고, 상기 K개의 XOR 게이트들에 의해 발생되는 로직 값들은 상기 저장 코드 워드 M(X)의 가변 길이 코드 워드 VLW(X)의 길이 값으로서 상기 부호화 부호화 팩킹부(310), 및 상기 주소 발생부(600)에 각각 출력된다.
다시 도 1을 참조하면, 상기 부호화 팩킹부(310)는 상기 가변 길이 검출부(200)로부터의 가변 길이 코드 워드의 길이 LEG(X)에 응답하여 상기 저장 코드 워드 M(X)i에서 가변 길이 코드 워드 VLW(X)를 검출하고, 상기 검출되는 가변 길이 코드 워드 VLW(X)를 외부에 출력시킨다.
상기 부호화 팩킹부(310)는 바람직하게는 도 5에 도시한 바와 같이, 입력부(410), 누산부(420), 및 출력부(430)로 구성된다.
도 5를 참조하면, 상기 입력부(410)는 제1 배럴 시프터(Barel Shifter; 411) 및 제1 래치(Latch; 412)로 구성된다. 상기 입력부(410)는 제1 배럴 시프터(Barrel Shifter; 411) 및 제1 래치(Latch; 412)로 구성된다.
상기 입력부(410)의 제1 배럴 시프터(411)는 상기 가변 길이 검출부(200)로부터의 가변 길이 코드워드의 길이 값 LEG(X)에 응답하여, 상기 부호화 메모리(150)로부터의 저장 코드 워드 M(X)의 비트 열 및 상기 제1 래치(412)로부터의 제1 래치 비트 열을 슬라딩(sliding)하여 K 비트의 제1 윈도우 비트 열 B1을 독출하고, 상기 제1 윈도우 비트 열 B1을 상기 제1 레치(412)에 제공한다.
상기 제1 레치(412)는 상기 제1 윈도우 비트 열 B1을 저장하고, 상기 제1 윈도우 비트 열 B1과 동일한 비트 값을 갖는 제1 레치 비트 열 W1을 상기 제1 베럴 시프터(411) 및 상기 출력부(430)에 각각 제공한다. 따라서, 앞서 설명한 바와 같이, 상기 제1 레치 비트 열 W1및 저장 코드 워드 M(X)의 비트 열이 병렬로 상기 제1 배럴 시프터에 입력된다.
상기 누산부(420)는 도 5에 도시된 바와 같이, 가산기(421), 제2 래치(422), 감산기(423), 및 제3 래치(424)로 구성된다. 상기 누산부(420)의 가산기(421)는 상기 가변 길이 검출부(200)로부터의 길이 값 LEG(X) 및 상기 제2 래치(422)로부터의 래치 값 L1을 K-모듈(module-K)로 가산하여 가산된 값을 상기 제2 래치(422)에 제공한다. 또한, 상기 가산기(421)는 상기 가산된 값이 K이상인 경우에는 캐리 신호(C)를 발생시킨다. 상기 캐리 신호(C)는 이후에 설명할 출력부(430)의 제4 래치(432)에 가변 코드 워드 M(X)i의 비트들로 채워졌음을 외부에 알리기 위한 것이다.
상기 제2 래치(422)는 상기 가산기(421)로부터의 가산 값을 저장하고, 상기 저장된 가산 신호를 래치된 값 L1로서 상기 감산기(423) 및 상기 가산기(421)에 각각 제공한다. 상기 감산기(423)는 가변 길이 코드워드의 최대 길이 K=610에서 상기 제2 래치(422)로부터의 상기 래치된 값 L1을 감산하여 감산 값 S0을 발생시킨다.
상기 제3 래치(424)는 상기 감산 값 S0을 저장하고, 상기 저장된 감산 신호 S0을 상기 출력부(430)의 제어 신호 L2로서 상기 출력부(430)에 제공한다.
상기 출력부(430)는 제2 배럴 시프터(431) 및 제4 래치(432)로 구성된다. 상기 제2 배럴 시프터(431)는 상기 제어 신호 L2에 응답하여 상기 부호화 메모리(150)로부터의 상기 저장 코드워드 M(X)의 비트 열 및 상기 입력부(410)의 제1 래치(412)로부터의 제1 래치 비트 열 W1로 구성되는 2K 비트 열을 슬라이딩하여, 제2 윈도우 비트 열 B2을 발생시키고, 상기 발생되는 상기 제2 윈도우 비트 열 B2을 상기 제4 래치(432)에 출력한다.
상기 제4 래치(432)는 상기 제2 배럴 시프터(431)로부터의 제2 윈도우 비트 열 B2을 입력 순서에 따라 저장하고, 저장된 상기 제2 윈도우 비트 열 B2을 가변 길이 코드워드 W2로서 외부에 출력한다.
도 1을 참조하면, 상기 주소 발생부(600)는 멀티 플렉스(610),상기 레지스터부(610), 상기 제5 래치(630), 제6 래치(640), 및 가산기(650)로 구성된다.
상기 멀티플레서(610)는 상기 길이 검출부(220)로부터의 가변 길이 코드 워드의 길이에 응답하여 상기 경계선 검출부(210)로부터의 위치 값들중 한 위치 값을 상기 제6 래치(640)에 출력시킨다.
상기 레지스터부(610)는 허프만 코드 트리 구조의 복호화할 코드 워드에 대한 해당 레벨 이전 까지의 총 터미널 노드 수들을 각각 저장하고, 상기 길이 검출부(220)으로부터의 가변 길이 코드 워드의 길이에 응답하여 상기 저장된 총 터미널 노드 수를 상기 제5 래치(630)에 제공한다.
상기 제5 래치(630)는 상기 레지스터부(620)로부터의 상기 총 터미널 노드수를 래치하여 상기 래치된 일 총 터미널 노드수를 상기 가산기(650)에 제공한다.
상기 제6 래치(640)는 상기 멀티플렉서(610)로부터의 상기 위치 값을 래치하고, 래치된 위치 값을 상기 가산기(650)에 제공한다.
상기 가산기(650)는 상기 제5 및 제6 래치(630 및 640)로부터의 상기 일 총 터미널 노드수와 상기 위치 값을 가산하여 그 가산치를 상기 주소로서 상기 복호화 메모리(660)에 출력시킨다. 상기 메모리(660)는 복호화 코드 워드를 부호화된 코드 워드의 노드 위치에 따라 허프만 트리의 루트 부터 순차적으로 저장하고, 상기 가산기(650)으로부터의 가산치에 응답하여 해당 복호화 코드 워드(Si)를 출력시킨다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 가변 길이 코덱 장치를 보다 상세히 설명한다.
먼저, 상기 가변 길이 코덱 장치의 인코딩 동작을 설명하면, 상기 버퍼(110)를 통해 데이터 소스로부터 발생 가능한 심볼들이 모두 [a, b, c, d, e, f, g, h]이고, 각 심볼의 발생 빈도 수가 차례로 15, 13, 12, 11, 5, 2, 1, 1인 경우, 도 8에 나타낸 바와 같이, 상기 8개의 심볼들에는 그 발생 빈도수에 따라 가변 길이 코드 워드가 할당된다. 캐노니컬 허프만 코드 트리에 따라 상기 8개의 심볼에 할당된 가변 길이 코드 워드의 코드 값을 아래의 표 1에 나타낸 바와 같다.
표 1에 나타낸 바와 같이, 캐노니컬 허프만 트리 구조에 의거하여 가장 빈도수가 큰 심볼 [a]에 1비트의 가변 길이 코드워드 VLW(X)가 할당되며, 빈도수가 가장 적은 심볼 [g, h]에는 6비트의 가변 길이 코드워드가 할당된다.
심볼(X) 가변 길이 코드 워드VLW(X)
a 0
b 1 0 0
c 1 0 1
d 1 1 0
e 1 1 1 0
f 1 1 1 1 0
g 1 1 1 1 1 0
h 1 1 1 1 1 1
상기 부호화 메모리(150)에는 아래의 표 2에 나타낸 바와 같이, 상기 각각의 심볼(X)을 주소로 상기 가변 길이 코드 워드 VLW(X)가 저장된다. 상기 가변 길이 코드워드 VLW(X)는 상기 부호화 메모리(150)의 각 단위의 메모리 셀의 최상위의 자리(MSB)부터 최하위 자리(NSB)의 순서로 채워지며, 가변 길이 코드워드 VLW(X)가 저장되고 남는 자리에는 스터핑 비트(또는 don't care)들이 채워진다.
따라서, 상기 부호화 메모리(150)는 어떤 심볼 X가 입력되는 경우, 입력된 심볼 X를 주소로 갖는 저장 코드 워드 M(X)를 발생시킨다.
심볼(X) 저장 데이터(MSB(X); MSB→LSB)
a 0 X X X X X
b 1 0 0 X X X
c 1 0 1 X X X
d 1 1 0 X X X
e 1 1 1 0 X X
f 1 1 1 1 0 X
g 1 1 1 1 1 0
h 1 1 1 1 1 1
상기 버퍼(110)로부터 상기 부호화 메모리(150)는 표 2에 나타낸 바와 같이, 상기 심볼(X) [c]를 주소로 저장된 [101XXX]의 비트 열을 상기 저장 코드 워드 M(c)로서 발생시키고, 상기 6 비트의 저장 코드 워드 M(c)를 상기 스위치(160)의 제1 입력 단자(S1)를 통해 병렬로 상기 가변 길이 검출부(200)의 경계 검출부(210) 및 상기 부호화 팩킹부(310)에 각각 제공한다.
상기 가변 길이 검출부(200)에 입력되는 상기 저장 코드워드 M(c)는 상기 경계 검출부(210)의 코드 선택부(510)에 입력된다. 상기 저장 코드워드 M(c)가 상기 코드 선택부(510)에 입력되는 경우, 상기 코드 선택부(510)는 상기 저장 코드워드 M(c)에서 아래의 표 3에 나타낸 바와 같이, 1비트 내지 6비트를 차례로 선택하여 선택 코드 워드 BW(c)m=1,2,3...K을 발생시키고, 상기 발생되는 선택 코드 워드 BW(c)m1,2,3...K각각을 상기 경계 검출부(210)의 레벨 검출부(520) 및 연산부(530)에 각각 제공한다.
m BW(c)m
1 BW(c)1= 1
2 BW(c)2= 10
3 BW(c)3= 101
4 BW(c)4= 1011
5 BW(c)5= 10111
6 BW(c)6= 101111
상기 코드 선택부(510)로부터 상기 선택 코드워드 BW(c)m가 상기 레벨 검출부(520)에 입력되는 경우, 상기 레벨 검출부(520)는 도 8에 나타낸 허프만 코드 트리를 근거로 상기 선택 코드워드 BW(C)m의 레벨 1부터 m 까지의 터미널 노드들의 수를 검출하고, 앞서 설명한 바와 같이, 각 레벨에 따라 웨이트된 레벨 코드 워드 NW(c)m를 발생시킨다.
예컨데, m=3인 경우, 상기 표 3에 나타낸 바와 같이, 상기 코드 선택부(510)로부터 선택 코드워드 BW(C)3=[101]이 발생된다.이 때, 상기 레벨 검출부(520)는 각 레벨에 웨이트를 부여하고, 웨이트가 부여된 터미널 노드의 수를 합하여, 다음의 수학식 2와 같은 합을 발생시킨다.
여기서, j는 허프만 코드 트리에서의 레벨이며, Lj는 레벨 j에서의 터미널 노드의 수이다.
이어, 상기 레벨 검출부(520)는 상기 합 WS(c)3을 2진수로 변환하여 레벨 코드 워드 NW(c)3=[0001000]을 발생시킨다. 모든 선택 코드 워드 BW(c)m(m=1,2,..., 6)에 대한 레벨 코드 워드 NW(c)m는 아래의 나타낸 표 4와 같다.
m NC(c)m
1 0=000000
2 2=000010
3 8=001000
4 14=001110
5 30=011110
6 62=111110
상기 레벨 코드 워드 NW(c)m및 선택 코드 워드 BW(c)m들이 각각 상기 연산부(530)에 입력되는 경우, 상기 연산부(530)에 입력된 상기 레벨 코드 워드 NW(c)m및 선택 코드 워드 BW(c)m들은 도 3에 도시한 바와 같이, 상기 연산부(530)의 제1 내지 제6 감산기(531 내지 536)에 차례로 입력된다.
상기 제1 내지 제6 감산기(531 내지 536)는 다음의 수학식 3과 같은 함수LD(c)m을 행하게 된다.
LD(c)m=BW(c)m-NW(c)m
따라서, 연산부(530)은 아래의 표 5에 나타낸 바와 같이, 제1 내지 제6 감산 결과 LD(c)m=1,2,...,6를 발생시킨다.
m LD(c)mMSB→LSB
1 1
2 0
3 1
4 111101
5 111001
6 110001
그리고, 상기 입력 심볼 [c]에 대한 상기 연산부(530)의 제1 내지 제6 감산기(531 내지 536)로부터 출력되는 제1 감산 결과 LD(c)1내지 제6 감산 결과LD(c)6은 상기 경계값 발생부(540)에 제공된다.
상기 연산을 보다 상세히 설명하면, 상기 제1 내지 제6 감산기(531 내지 536)는 아래의 수학식 4와 같은 제1 내지 제6 감산 결과 LD(c)1내지 LD(c)6을 발생시킨다.
= 010
= 110
= -310
= -710
= -1710
여기서, bi는 선택 코드 워드 BW(c)m의 i번째 비트 값, 그리고 Lj는 레벨 j에서의 터미널 노드의 수이다.
상기 경계 값 발생부(540)는 상기 제1 감산 결과 LD(c)1내지 제6 감산 결과 LD(c)6에서 최상위 비트들(MSB)을 검출하고, 최상위 비트들(MSB)의 비트 값들을 저장 코드워드 M(c)의 가변 길이 코드워드 VLW(c) 및 스터플링 코드 사이의 경계를 나타내는 경계 값 MSB(c)으로서 상기 길이 검출부(220)에 제공한다.
도 4에 도시한 바와 같이, 상기 길이 검출부(220)에 입력된 경계 값 MSB(C)m=1,2,...,6=[000111]의 각각의 비트는 병렬로 상기 제1 내지 제6 XOR 게이트(610 내지 660)에 각각 입력되어, 그 결과 상기 길이 검출부(220)는 상기 심볼 [c]의 가변 길이 코드 워드 VLW(c)의 길이 VLG(c)를 나타내는 길이 값 LEG(c)으로서의 비트 열 [000100]을 발생시킨다.
상기 길이 값 LEG(c)이 상기 부호화 팩킹부(310)에 입력되는 경우, 상기 부호화 팩킹부(310)는 상기 길이 값 LEG(c)에 응답하여 저장 코드 워드 M(C)에서 가변 길이 코드워드 VLW(C)만을 검출하고, 검출된 가변 길이 코드워드 VLW(C)를 외부에 출력한다.
이하, 상기 부호화 팩킹부(310)의 동작을 도 5를 참조하여 보다 상세히 설명한다.
먼저 시간 t=1에서, 상기 부호화 팩킹부(310)에 상기 부호화 메모리(150)로부터 저장 코드 워드 M(X)가 입력되지 않으므로, 상기 부호화 팩킹부(310)의 상기 제1 배럴 시프터(411)는 상기 코드 길이 검출부(220)로부터의 [010]의 가변 길이 코드 워드의 길이 LEG(x)에 응답하여 돈 캐어(don't care)로 구성된 제1 윈도우 비트 열(B1) [xxxxxx]을 상기 제1 래치(412)에 제공한다. 시간 t=2에서, 상기 부호화 메모리(150)로부터 심볼 [a] 에 대한 저장 코드 워드 M(a)가 발생될 때, 상기 부호화 메모리(150)로부터 발생된 상기 심볼 [a] 에 대한 저장 코드 워드 M(a)는 상기 부호화 팩킹부(310)의 입력부(410)의 제1 배럴 시프터(411) 및 출력부(430)의 제2 배럴 시프터(431)에 각각 입력되며, 이와 동시에 상기 제1 배럴 시프터(411) 및 상기 누산부(420)의 가산기(421)에는 각각 상기 가변 길이 검출부(220)로부터 상기 심볼 [a]에 대한 가변 길이 코드 워드의 길이 LEG(b)가 입력된다.
상기 제1 배럴 시프터(411)는 상기 부호화 메모리(150)로부터의 심볼 [a]에 대한 저장 코드 워드 M(a) 및 상기 가변 길이 검출부(220)로부터 상기 가변 길이 코드 워드의 길이 LEG(a)가 입력되는 경우, 상기 가변 길이 코드 워드의 길이 LEG(a) [110]에 응답하여 상기 제1 래치(412)로부터 출력되는 제1 래치 비트 열 [xxxxxx] 및 상기 부호화 메모리(150)로부터 입력되는 저장 코드 워드 M(a)의 비트 열 [a1xxxxx]에서 [110]비트 슬라이딩하여 제1 윈도우 비트 열(B1) [xxxxxa1]를 선택하고, 상기 선택된 [xxxxxa1] 비트 열의 제1 윈도우 비트 열(B1)을 상기 제1 래치(412)에 출력한다.
한편, 상기 누산부(420)의 제2 가산기(421)는 상기 코드 길이 검출부(220)로부터의 가변 길이 코드 워드의 길이(LEG(a)) 및 상기 제2 래치(422)로부터의 제2 래치 값을 가산하여 가산 신호를 발생시키고, 상기 발생되는 가산 신호를 상기 제2 래치(422)에 출력시킨다. 여기서, 상기 제2 래치 값(L1)이 [010] 이고 상기 가변 길이 코드 워드의 길이 LEG(a)=110의 값을 가지므로, 상기 가산기(421)는 상기 가산 신호로서 [110]의 값을 출력하게 되며, 상기 [110]의 값을 갖는 가산 신호를 상기 제 2래치(422)에 출력시킨다.
상기 누산부(420)의 감산기(423)는 소정의 값 [610]을 갖는 기준 신호에서 상기 제2 래치(422)로부터의 가산 신호로서의 [010]을 감산하여 [610]의 값을 갖는 감산 신호(S0)를 발생시키고, 상기 발생되는 [610] 값의 감산 신호(S0)를 상기 제3 래치(424)에 제공한다. 상기 제3 래치(424)는 상기 감산기(423)로부터의 [610]값의 감산 신호(S0)를 저장하고, 상기 [510] 값의 감산 신호(S0)를 제3 래치 신호(L2)로서 상기 제2 배럴 시프터(431)에 제공한다. 그러면, 상기 제2 배럴 시프터(431)는 상기 제3 래치 신호(L2)에 응답하여 상기 제1 래치 비트 열 [xxxxxx] 및 상기 저장 코드 워드 M(a)를 6비트 슬라이딩하여 제2 윈도우 비트 열 [a1xxxxx]를 상기 제4 래치(432)에 출력시킨다.
시간 t=3에서, 상기 부호화 메모리(150)로부터 심볼 [b]에 대한 저장 코드 워드 M(b)i가 발생되는 경우, 상기 부호화 메모리(150)로부터 발생된 상기 심볼 'b' 에 대한 저장 코드 워드 M(b)는 앞서 설명한 바와 같이, 상기 부호화 부호화 팩킹부(310)의 입력부(410)의 제1 배럴 시프터(411) 및 출력부(430)의 제2 배럴 시프터(431)에 각각 입력되며, 이와 동시에 상기 제1 배럴 시프터(411) 및 상기 누산부(420)의 가산기(421)에는 각각 상기 가변 길이 검출부(220)로부터 상기 심볼 'b'에 대한 가변 길이 코드 워드의 길이 LEG(b) 값 '310'가 입력된다.
상기 제1 배럴 시프터(411)는 상기 심볼 'b' 에 대한 저장 코드 워드 M(b)i및 상기 가변 길이 코드 워드의 길이 LEG(b)가 입력되는 경우, 상기 가변 길이 코드 워드의 길이 LEG(b) '310'에 응답하여 상기 제1 래치(412)로부터 출력되는 제1 래치 비트 열 'xxxxxa1' 및 상기 부호화 메모리(150)로부터 입력되는 저장 코드 워드 M(b)i의 비트 열 'b1b2b3xxx' 에서 '310'비트 슬라이딩하여 제1 윈도우 비트 열(B1)로서의 'xxa1b1b2b3'를 선택하고, 상기 선택된 'xxa1b1b2b3' 비트 열을 상기 제1 윈도우 비트 열(B1)로서 상기 제1 래치(412)에 출력한다.
한편, 상기 누산부(420)의 가산기(421)는 상기 코드 길이 검출부(400)로부터의 가변 길이 코드 워드의 길이 LEG(b) 및 상기 제2 래치(422)로부터의 제2 래치 값(L1) '110'을 가산하여 가산 값 '410'을 갖는 가산 신호 AD를 발생시키고, 상기 발생되는 가산 신호를 상기 제2 래치(422)에 출력시킨다.
또한, 상기 누산부(420)의 감산기(423)는 상기 기준 신호로서의 기준 값 '610'에서 상기 제2 래치(422)로부터의 가산 신호로서의 '110'을 감산하여 '510'의 값을 갖는 감산 신호(S0)를 발생시키고, 상기 발생되는 '510' 값의 감산 신호(S0)를 상기 제3 래치(424)에 제공한다. 상기 제3 래치(424)는 상기 감산기(423)로부터의 '510' 값의 감산 신호(S0)를 저장하고, 상기 '510' 값의 감산 신호(S0)를 제3 래치 신호 L2로서 상기 제2 배럴 시프터(431)에 제공한다. 그러면, 상기 제2 배럴 시프터(431)는 상기 제3 래치 신호 L2에 응답하여 상기 제1 래치 비트 열 'xxxxxa1' 및 상기 저장 코드 워드 M(b)='b1b2b3xxx'을 '510' 비트 슬라이딩하여 'a1b1b2b3xx'를 상기 제2 윈도우 비트 열(w2)로서 상기 제4 래치(432)에 출력시킨다.
시간 t=4에서, 상기 부호화 메모리(150)로부터 심볼 [c]에 대한 저장 코드 워드 M(c)i가 발생되는 경우, 상기 부호화 메모리(150)로부터 발생된 상기 심볼 [c] 에 대한 저장 코드 워드 M(c)는 앞서 설명한 심볼 [a] 및 [b]에서와 같이, 상기 입력부(410)의 제1 배럴 시프터(411) 및 출력부(430)의 제2 배럴 시프터(431)에 각각 입력되며, 이와 동시에 상기 제1 배럴 시프터(411) 및 상기 누산부(420)의 가산기(421)에는 각각 상기 가변 길이 검출부(200)로부터 상기 심볼 [c]에 대한 가변 길이 코드 워드의 길이(LEG(b)=3)가 입력된다.
상기 제1 배럴 시프터(411)는 상기 심볼 [c] 에 대한 저장 코드 워드 M(c) 및 상기 가변 길이 코드 워드의 길이 LEG(b)가 입력되는 경우, 상기 가변 길이 코드 워드의 길이 LEG(c) [310]에 응답하여 상기 제1 래치(412)로부터 출력되는 제1 래치 비트 열 [xxa1b1b2b3] 및 상기 부호화 메모리(150)로부터 입력되는 저장 코드 워드 M(c)i의 비트 열 [c1c2c3xxx]에서 3비트 슬라이딩하여 제1 윈도우 비트 열(B1)로서의 [b1b2b3c1c2c3]을 선택하고, 상기 선택된 비트 열 [b1b2b3c1c2c3]을 상기 제1 윈도우 비트 열(B1)로서 상기 제1 래치(412)에 출력한다.
한편, 상기 누산부(420)의 제2 가산기(421)는 상기 코드 길이 검출부(400)로부터의 가변 길이 코드 워드의 길이 LEG(c) 및 상기 제2 래치(422)로부터의 제2 래치 값(L1) [310]을 가산하여 가산 값 [710]를 갖는 가산 신호를 발생시키게 되는데, 상기 가산기(421)는 상기 가산 값이 [610]이상 될 때마다 캐리 신호(c)를 발생시키고, 상기 가산 값 [710]에서 [610]를 감산한 값을 상기 가산 신호를 발생시킨다. 따라서, 상기 가산기(421)는 상기 [110]의 값을 상기 가산 신호로서 상기 제2 래치(422)에 출력시키는 한편, 상기 캐리 신호(C)를 외부에 출력하게 된다.
또한, 상기 누산부(420)의 감산기(423)는 상기 기준 신호로서의 기준 값 [610]에서 상기 제2 래치(422)로부터의 가산 신호로서의 [110]를 감산하여 [510]의 값을 갖는 감산 신호(S0)를 발생시키고, 상기 발생되는 [510] 값의 감산 신호(S0)를 상기 제3 래치(424)에 제공한다. 상기 제3 래치(424)는 상기 감산기(423)로부터의 [510] 값의 감산 신호(S0)를 저장하고, 상기 [510] 값의 감산 신호(S0)를 제3 래치 신호 L2로서 상기 제2 배럴 시프터(431)에 제공한다. 그러면, 상기 제2 배럴 시프터(431)는 상기 제3 래치 신호 L2에 응답하여 상기 제1 래치 비트 열 [xxa1b1b2b3] 및 상기 저장 코드 워드 M(b)=[c1c2c3xxx]을 2 비트 슬라이딩하여 비트 열 [a1b1b2b3c1c2]를 상기 제2 윈도우 비트 열(w2)로서 상기 제4 래치(432)에 출력시킨다.
따라서, 상기 캐리 신호(C)의 발생은 상기 출력부(430)의 제4 래치(432)에 가변 길이 코드 워드 VLW(X)들의 비트들만으로 채워졌을 때 발생함으로, 외부에서 상기 캐리 신호(C)에 응답하여 상기 제4 래치(432)의 코드 워드(w2)를 독출하게 되면 상기 저장 코드 워드에서 가변 길이 코드 워드만을 검출할 수 있게 된다.
이와 같이, 상기 부호화 부호화 팩킹부(310)는 상기 심볼들에 대한 저장 코드 워드 및 가변 길이 코드 워드의 길이가 입력될 때마다 상기와 같은 동작을 반복하여 상기 저장 코드 워드에서 가변 길이 코드 워드만을 검출하여 외부에 출력하게 된다.
따라서, 상기 구성에 의하면, 외부로부터 부호화하기 위한 심볼이 입력될 때마다 입력 심볼에 대한 가변 길이 코드 워드의 길이를 검출하고, 상기 검출된 가변 길이 코드 워드의 길이에 응답하여 부호화 메모리로부터의 저장 코드 워드에서 가변 길이 코드 워드만을 검출 및 출력시킬 수 있게 된다.
이어, 상기 코덱 장치의 디코딩 동작을 설명한다.
먼저, 버퍼(110)에서 처럼, 상기 심볼들 [c b a a e....]에 대응하는 복호화 비트열의 [101100001110....] 이 입력되는 경우, 상기 스위치(160)은 상기 복호화 팩킹부(130)의 제2 입력 단자(S2)에 접속되며, 상기 복호화 팩킹부(130)로부터의 복호화 코드 비트열에서 가변 길이 코드 워드의 최대 길이 K=6 만큼의 비트 열(ECSi)를 상기 경계 검출부(210)에 제공한다.
그러면, 상기 경계 검출부(210)는 상기 인코딩 동작에서와 같이, 상기 스위치(160)을 통해 입력되는 복호화할 비트 열(CW)에 포함된 가변 길이 코드 워드의 경계를 검출하고, 검출된 가변 길이 코드 워드의 경계를 나타내는 경계 값을 발생시킨다. 또한, 상기 경계 검출부(210)는 상기 연산부(530)의 제1 내지 제6 감산기(531 내지 536))로부터 출력되는 제1 위치 값 LD(c)1내지 제6 위치 값 LD(c)6을 복호화 코드 워드의 어드레스로 이용하기 위하여 멀티플렉서(610)에 인가한다.
상기 길이 검출부(220)는 앞서 설명한 바와 같이 상기 경계 검출부(210)으로부터의 상기 경계 값 MSBm로부터 상기 비트 열(CW)에 포함된 가변 길이 코드 워드의 길이 LEG(X)를 검출하고, 상기 검출된 가변 길이 코드 워드의 길이 LEG(X)를 상기 복호화 팩킹부(130) 및 상기 주소 발생부(600)의 상기 멀티플렉스(610) 및 상기 다수의 레지스터(620)에 각각 제공한다.
즉, 상기 복호화 팩킹부(130)로부터 비트 열[101100]이 상기 경계 검출부(210)에 입력되는 경우, 상기 경계 검출부(210)는 상기 비트열 [101100]로부터 가변 길이 코드 워드의 경계를 검출을 위하여 앞서 설명한 바와 같이, 상기 제1 내지 제6 감산기(531 내지 536)으로부터의 위치 값들 LDk=1,2,...6을 병렬로 연산한다.
즉, 상기 위치 값들 LDk=1,2,...6은 다음 표.6에 나타낸 바와 같다.
LDm LDm sign 값
십진수 이진수(MSB → LSB)
1 1 0 0 0 0 0 1
2 0 0 0 0 0 0 0
3 1 0 0 0 0 0 1
4 - 3 1 1 1 1 0 1
5 - 8 1 1 1 0 0 0
6 -18 1 0 1 1 1 0
이때, 경계 검출부(210)는 연산한 위치 값들(LD1,LD2,LD3, LD4,LD5,LD6)을 복호화 코드 워드의 어드레스로 이용하기 위하여 상기 멀티플렉서(610)에 출력한다. 상기 경계 검출부(210)는 또한 연산된 위치 값들(LD1,LD2,LD3, LD4,LD5,LD6)의 음/양을 판단하기 위하여 상기 위치 값들(LD1,LD2,LD3, LD4,LD5,LD6)의 최상이 비트들 [MSBm= 000111]을 상기 경계 값(MSBm)으로서 상기 코드 길이 검출부(220)에 인가한다. 그러면, 상기 길이 검출부(220)는 상기 상기 경계 값 [MSBm= 000111]을 배타적 논리 합하여 가변 길이 코드 워드의 길이 LEG(X)=[00100]를 발생시킨다.
그러면, 상기 멀티플렉스(610)는 상기 가변 길이 검출부(200)에 의해 검출된 가변 길이 코드 워드의 길이 LEG(X)=[00100]에 응답하여 상기 경계 검출부(210)로부터의 위치 값들 LD(X)m중 한 위치 값 LD(X)2=[1]을 상기 제6 래치(640)에 출력시킨다.
이와 동시에, 상기 다수의 레지스터(620)중 레벨 2까지의 터미널 노드의 수[1]를 저장하고 있는 레지스터만이 인에블되어 레벨 2까지의 터미널 수 [1]이 상기 제5 래치(630)에 출력된다.
그러면, 상기 가산기(650)는 상기 멀티플렉스(610)로부터의 위치 값 LD(X)2=1에 상기 다수의 레지스터(620)로부터의 터미널 노드 수 [1]이 가산하여 복호화 코드 워드의 주소 [2]를 발생시키고, 상기 발생되는 주소 [2]를 상기 복호화 메모리(660)에 출력시켜, 상기 복호화 메모리(660)으로부터 상기 가변 길이 코드 워드 [101]에 대응하는 복호화 코드 워드(Si)를 발생시키게 한다.
그리고 또한, 상기 복호화 팩킹부(130)는 가변 길이 코드 워드의 길이 LEG(X)=[001000]에 응답하여 복호 처리된 입력 비트열 [101]을 제외한 다음 비트 부터 가변 길이 코드 워드의 최대 길이만큼의 비트열을 패킹하여 경계 검출부(210)로 인가하므로써 상기와 같은 과정을 통해 다음 비트 열 [100001110 . . . . .]의 코드 워드를 모두 복호화할 수 있게 된다.
상기한 바와 같이, 본 발명에 의하면, 가변 길이 부호화된 코드 워드는 캐노니컬 트리 구조상의 레벨에 따른 노드 순서로 순차적으로 룩-업 테이블 메모리에 저장되며 복호시 부호화된 코드 워드의 노드 순서가 소정 연산에 의하여 검색되어서 복호화된 코드 워드의 어드레스로 이용되므로 허프만 코드 트리가 중앙 시스템에 따라 변화하여도 하드웨어 변화없이 변수를 메모리와 래치에 단순히 저장하는 방법으로 고속으로 가변 길이 복호화가 된다. 따라서, 부호화된 코드 워드의 길이에 관계없이 하나의 부호화된 코드 워드를 병렬 연산에 의거하여 한 클럭에 처리하므로 비트 단위로 복호 처리하는 종래 가변 길이 복호화 장치 또는 방법보다 고속으로 복호 처리가 수행된다.
이상 설명한 바와 같이, 본 발명에 의하면 허프만 코드 구조 및 가변 길이 코드 워드를 근거로 가변 길이 코드 워드의 길이를 검출하고, 검출된 가변 길이 코드 워드의 길이를 이용하여 입력 데이터를 가변 길이 코드 워드로 코딩하는 가변 길이 코딩 방법 및 그 장치를 실현할 수 있게 된다.
본 발명을 상기 실시 예에 의해 구체적으로 설명하였지만, 본 발명은 이에 의해 제한되는 것이 아니고, 당업자의 통상적인 지식의 범위 내에서 그 변형이나 개량이 가능하다.

Claims (11)

  1. a) 소스로부터 입력되는 부호화 비트 열을 저장하기 위한 버퍼(110);
    b) 외부로부터의 복호화 비트 열을 저장하고, 상기 저장된 복호화 코드 워드를 가변 길이 코드 워드의 최대 길이로 출력시키며, 상기 복호화 비트 열에 포함된 가변 길이 코드 워드의 길이에 따라 상기 복호화 비트 열에서 복호화된 비트들 다음 비트부터 출력시키기 위한 복호화 팩킹부(130);
    c) 허프만 코드 구조를 기초로 모든 가능 심볼 각각에 대해 각각 정의된 가변 길이 코드 워드들을 상기 모든 가능 심볼들을 주소로 저장되고, 상기 버퍼(110)로부터 상기 심볼(X)이 입력되는 경우, 상기 심볼(X)에 대응하는 가변 길이 코드 워드 VLW(X)를 포함하는 저장 코드 워드 M(X)를 출력하기 위한 부호화 메모리(150);
    d) 복호화 코드 워드를 허프만 코드 트리에서의 터미널 노드의 위치를 주소로 저장하기 위한 복호화 메모리;
    e) 외부로부터의 제어 신호에 응답하여 상기 메모리(150)로부터의 저장 코드 워드 M(X)및 상기 복호화 팩킹부(130)로부터의 부호화 비트 열(ECSi)을 선택 출력하기 위한 선택 수단(160);
    f) 상기 선택 수단으로부터 입력되는 비트 열(CW)에서 m비트를 선택하여 발생되는 선택 코드 워드 BWm들 및 상기 선택 코드 워드 BWm들의 허프만 코드 트리에서의 레벨 및 각 레벨에서의 터미널 노드의 수를 근거로, 상기 비트 열(CW)에 포함된 상기 가변 길이 코드 워드의 길이를 검출하기 위한 가변 길이 검출부(200);
    g) 상기 가변 길이 검출부(200)에 의해 검출된 가변 길이 코드 워드의 길이에 응답하여 상기 비트 열(CW)에 포함된 가변 길이 코드 워드의 허프만 트리에서의 위치를 검출하고, 상기 검출된 위치를 상기 복호화 메모리에 제공하기 위한 주소 발생부(600); 및
    h) 상기 길이 검출부(220)에 의해 검출된 가변 길이 코드 워드의 길이(LEG)에 응답하여 상기 비트 열(CW)에서 가변 길이 코드 워드(W2)를 검출하고, 상기 검출되는 가변 길이 코드 워드(W2)를 출력시키기 위한 부호화 부호화 팩킹부(310)로 구성되며,
    여기서, 상기 m은 1, 2, 3 .... K 이고, 상기 K 는 가변 길이 코드 워드의 최대 길이인 것을 특징으로 하는 고속 처리 가변 길이 코덱 장치.
  2. 제1 항에 있어서, 상기 가변 길이 검출부(200)는 상기 선택 코드 워드 BWm들, 상기 선택 코드 워드 BWm들의 허프만 코드 트리에서의 레벨 및 각 레벨에서의 터미널 노드의 수를 근거로 상기 선택 코드 워드 BWm들의 각 레벨에서의 위치 값 LD(X)m을 발생시키고, 상기 위치 값 LD(X)m을 근거로 상기 비트 열(CW)에 포함된 가변 길이 코드 워드 및 스터핑 비트사이의 경계를 표시하는 경계 값(MSBm)을 발생시키기 위한 경계 검출부(210); 및
    상기 경계 검출부(210)로부터의 경계 값(MSBm)을 근거로 상기 비트 열(CW)에 포함된 가변 길이 코드 워드의 길이(LEG(X))를 검출하기 위한 길이 검출부(220)로 구성되며,
    여기서, 상기 위치 값 LD(X)m은:
    LD(X)m=BW(X)m-NW(X)m
    이며,
    상기 bi는 상기 m 비트 선택하여 발생된 선택 코드 워드의 i번째 비트 값, Lj는 허프만 코드 트리의 j번째 레벨에서의 총 터미널 노드의 수인 것을 특징으로 하는 고속 처리 가변 길이 코덱 장치.
  3. 제2 항에 있어서, 상기 경계 검출부(210)는 상기 선택 수단으로부터 입력되는 비트 열(CW)에서 m비트를 선택하여 상기 선택 코드 워드 BWm들을 발생시키기 위한 코드 선택부(510);
    상기 코드 선택부(510)로부터의 선택 코드 워드 BWm들 각각에 대한 허프만 코드 트리에서의 레벨을 검출하고, 상기 검출된 레벨 및 상기 검출된 레벨에서의 터미널 노드의 수에 대응하는 레벨 코드 워드 NW(X)m를 발생시키기 위한 레벨 검출부(520);
    상기 선택 선택부(510)으로부터의 상기 선택 코드 워드들 BWm및 상기 선택 코드 워드들 BWm에 각각에 대응하는 상기 레벨 검출부(520)로부터의 레벨 코드 워드NW(X)m들을 연산하여 위치 값 LD(X)m를 발생시키기 위한 연산부(530); 및
    상기 위치 값 LD(X)m의 최상위 비트들을 검출하여 상기 경계 값 MSB(X)m을 발생시키기 위한 경계값 발생부(540)으로 구성되는 것을 특징으로 하는 고속 처리 가변 길이 코덱 장치.
  4. 제3 항에 있어서, 상기 연산부(530)는 상기 선택 코드 워드들 BWm및 상기 선택 코드 워드들 BWm에 각각에 대응하는 상기 레벨 코드 워드 NW(X)m들을 병렬 연산하여 위해 다수의 감산기(531 내지 537)로 구성되는 것을 특징으로 하는 고속 처리 가변 길이 코덱 장치.
  5. 제2 항에 있어서, 상기 길이 검출부(220)는 상기 경계 값 발생부(540)로부터 발생되는 상기 경계 값 MSB(X)m의 각 비트들을 상호 배타적 논리 합하여 상기 가변 길이 코드 워드의 길이 LEG(X)를 검출하는 것을 특징으로 하는 고속 처리 가변 길이 코덱 장치.
  6. 제2 항에 있어서, 상기 주소 발생부(600)는 상기 가변 길이 검출부(200)에 의해 검출된 가변 길이 코드 워드의 길이 LEG(X)에 응답하여 상기 경계 검출부(210)로부터의 위치 값 LD(X)m들중 한 위치 값 LD(X)m을 선택하고, 상기 선택된 위치 값 LD(X)m에 대응하는 레벨 m 이전 까지의 터미널 노드의 수를 가산하여 상기 비트 열(CW)에 포함된 가변 길이 코드 워드의 허프만 트리에서의 위치에 대응하는 상기 주소를 검출하는 것을 특징으로 하는 고속 처리 가변 길이 코덱 장치.
  7. 제6 항에 있어서, 상기 주소 발생부(600)는 상기 가변 길이 검출부(200)에 의해 검출된 가변 길이 코드 워드의 길이 LEG(X)에 응답하여 상기 경계 검출부(210)로부터의 위치 값 LD(X)m들중 한 위치 값 LD(X)m을 선택하기 위한 멀티플렉스(610);
    상기 허프만 코드 트리의 각 레벨까지의 터미널 노드수들을 각각 저장하고 상기 가변 길이 검출부(200)에 의해 검출된 가변 길이 코드 워드의 길이 LEG(X)에 응답하여 상기 저장된 터미널 노드 수들중 하나를 선택 출력하기 위한 다수의 레지스터(620); 및
    상기 멀티플렉스(610)로부터의 위치 값 LD(X)m에 다수의 레지스터(620)중 한 레지스터로부터의 터미널 노드수를 가산하여 상기 주소를 발생시키기 위한 가산기(650)으로 구성되는 것을 특징으로 하는 고속 처리 가변 길이 코덱 장치.
  8. 제1 항에 있어서, 상기 복호화 부호화 부호화 팩킹부(310)는 제1 윈도우 비트 열을 발생시키기 위해 상기 가변 길이 코드 워드의 길이에 응답하여 소정의 비트 열에서 비트들을 검출하기 위한 입력부(110);
    제어 신호에 응답하여 상기 저장 코드 워드의 비트 열 및 상기 제1 윈도우 비트 열에서 가변 길이 코드 워드의 비트들을 검출하고, 상기 검출된 비트들을 출력시키기 위한 출력부(430); 및
    상기 제어 신호를 발생시키기 위해 상기 출력부로부터 출력되는 비트들의 수를 누산하기 위한 누산부(420)로 구성되는 것을 특징으로 하는 고속 처리 가변 길이 코덱 장치.
  9. 제8 항에 있어서, 상기 입력부는 상기 제1 윈도우 비트 열을 상기 출력부 및 제1 배럴 시프터에 출력하기 위한 제1 래치(412); 및
    상기 가변 길이 코드 워드의 길이에 응답하여 상기 비트 열에서 슬라딩하여 상기 제1 윈도우 비트 열을 발생시키기 위한 상기 제1 배럴 시프터(411)로 구성되는 것을 특징으로 하는 고속 처리 가변 길이 코덱 장치.
  10. 제8 항에 있어서, 상기 출력부(430)는 상기 가변 길이 코드 워드의 비트들을 검출하기 위해 상기 제어 신호에 응답하여 상기 제1 윈도우 비트 열 및 상기 저장 코드 워드의 비트 열상에서 슬라이딩하기 위한 제2 배럴 시프터(431); 및
    상기 제2 배럴 시프터로부터의 가변 길이 코드 워드의 비트들을 저장하기 위한 제2 래치(432)로 구성되는 것을 특징으로 하는 고속 처리 가변 길이 코덱 장치.
  11. 제8 항에 있어서, 상기 누산부는 가산기로부터 입력되는 가산값을 저장하기 위한 제3 래치(422);
    상기 제3 래치로부터의 가산 값 및 상기 가변 길이 코드 워드의 길이 값을 모듈-K로 가산하여 상기 가산된 값이 K이상일 때 캐리 신호를 발생시키기 위한 가산기(421); 및
    상기 K로부터 상기 제3 래치로부터의 저장 값을 감산하여 상기 제어 신호를 발생시키기 위한 감산기(423)로 구성되는 것을 특징으로 하는 고속처리 가변 길이 코덱 장치.
KR1019970069613A 1997-12-17 1997-12-17 고속 처리 가변 길이 코덱 장치 KR100268831B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019970069613A KR100268831B1 (ko) 1997-12-17 1997-12-17 고속 처리 가변 길이 코덱 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019970069613A KR100268831B1 (ko) 1997-12-17 1997-12-17 고속 처리 가변 길이 코덱 장치

Publications (2)

Publication Number Publication Date
KR19990050486A true KR19990050486A (ko) 1999-07-05
KR100268831B1 KR100268831B1 (ko) 2000-10-16

Family

ID=19527611

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970069613A KR100268831B1 (ko) 1997-12-17 1997-12-17 고속 처리 가변 길이 코덱 장치

Country Status (1)

Country Link
KR (1) KR100268831B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100720684B1 (ko) * 2005-05-09 2007-05-21 이화여자대학교 산학협력단 균형 이진 검색 트리를 이용한 허프만 디코딩 방법 및디코딩 장치
KR100975063B1 (ko) * 2003-12-30 2010-08-11 삼성전자주식회사 가변 길이 부호화된 비트스트림을 복호화하기 위한 장치및 그 방법과 이를 구현하기 위한 프로그램이 기록된 기록매체

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100975063B1 (ko) * 2003-12-30 2010-08-11 삼성전자주식회사 가변 길이 부호화된 비트스트림을 복호화하기 위한 장치및 그 방법과 이를 구현하기 위한 프로그램이 기록된 기록매체
KR100720684B1 (ko) * 2005-05-09 2007-05-21 이화여자대학교 산학협력단 균형 이진 검색 트리를 이용한 허프만 디코딩 방법 및디코딩 장치

Also Published As

Publication number Publication date
KR100268831B1 (ko) 2000-10-16

Similar Documents

Publication Publication Date Title
US5696507A (en) Method and apparatus for decoding variable length code
US5436626A (en) Variable-length codeword encoder
US7079057B2 (en) Context-based adaptive binary arithmetic coding method and apparatus
KR100648258B1 (ko) 고속의 디코딩을 수행하는 파이프라인 구조의 내용 기반적응적 이진 산술 디코더
KR100489908B1 (ko) 디지탈정보신호부호화방법및장치
US5557271A (en) Variable length coder and variable length decoder
KR0124191B1 (ko) 가변길이 코드 디코딩장치
JPH07240720A (ja) チャネル変調方法、誤り訂正方法、状態マシン生成方法、コーディング方法、チャネル変調装置、誤り訂正装置
JPH0916373A (ja) 可変長コードの符号化及び分割装置
WO1996031008A1 (en) Syntax based arithmetic coding circuit
US5901177A (en) High speed variable length code decoding apparatus and method
KR0152038B1 (ko) 상대 주소를 이용한 가변장 복호화 장치
US6809665B2 (en) Apparatus and method for decoding variable length code
US5677690A (en) High speed variable length code decoding apparatus
US5648775A (en) High speed variable length code decoding apparatus
JP3853439B2 (ja) 高速可変長コード復号化装置及び高速可変長コード復号化方法
KR100466455B1 (ko) 부호변환기와가변길이부호복호장치및복호방법
KR19990050486A (ko) 고속 처리 가변 길이 코덱 장치
US6778107B2 (en) Method and apparatus for huffman decoding technique
US5708430A (en) High speed variable length code decoding apparatus
KR100207428B1 (ko) 허프만 코드 변환에 적응적인 고속 가변장 복호화 장치 및 방법
JP2934603B2 (ja) 可変長さコードの復号化方法及びその装置
KR100268830B1 (ko) 고속 처리 가변 길이 부호화 방법 및 장치
JP3389389B2 (ja) 可変長コード復号化装置
KR0125126B1 (ko) 고속 가변길이부호 복호화 장치

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120702

Year of fee payment: 13

LAPS Lapse due to unpaid annual fee