KR0152032B1 - 영상신호를 위한 가변장복호기 - Google Patents

영상신호를 위한 가변장복호기

Info

Publication number
KR0152032B1
KR0152032B1 KR1019940009922A KR19940009922A KR0152032B1 KR 0152032 B1 KR0152032 B1 KR 0152032B1 KR 1019940009922 A KR1019940009922 A KR 1019940009922A KR 19940009922 A KR19940009922 A KR 19940009922A KR 0152032 B1 KR0152032 B1 KR 0152032B1
Authority
KR
South Korea
Prior art keywords
bit
length
sequence
run
codeword
Prior art date
Application number
KR1019940009922A
Other languages
English (en)
Other versions
KR950035400A (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 KR1019940009922A priority Critical patent/KR0152032B1/ko
Priority to JP10865695A priority patent/JP3032134B2/ja
Priority to CN95106522A priority patent/CN1085009C/zh
Priority to EP19950303102 priority patent/EP0681404A3/en
Priority to US08/436,866 priority patent/US5696506A/en
Publication of KR950035400A publication Critical patent/KR950035400A/ko
Application granted granted Critical
Publication of KR0152032B1 publication Critical patent/KR0152032B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/005Statistical coding, e.g. Huffman, run length coding
    • 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
    • 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

Abstract

영상 신호를 위한 가변장 복호기는 일정한 클럭율로 발행하는 클럭에 근거하여 입력 비트 스트림 내의 각 가변장 부호어를 복호화하여 런랭스만큼의 영들과 레벨을 발생한다. 가변장 복호기 내의 FIFO 메모리는 입력 비트 스트림을 저장하며, 캐리 신호에 응답하여 저장된 비트 스트림 내의 첫번째 비트 위치로부터의 N-비트의 시퀀스를 순차적으로 출력한다. 비트수 N은 비트 스트림 내에 있는 가장 긴 길이의 가변장 부호어가 갖는 비트수이다. 배럴시프터(18)는 래치들(13, 14, 15)로부터의 연속하는 2N-비트 시퀀스 중의 일부를 캐리 신호에 응답하는 멀티플렉서들을 통해 인가받아, 시프트 신호인 누적된 부호어길이에 응답하여 N-비트 시퀀스를 출력한다. 배럴시프터(23)는 배럴시프터(18)로부터의 연속하는 2N-비트 시퀀스를 저장하는 래치들(21, 22)의 출력으로부터 시프트 신호인 부호어길이에 응답하여 N-비트 시퀀스를 래치들(22, 41)로 출력한다. 복호기는 래치(41)에 저장된 N-비트의 시퀀스 내의 첫번째 비트 위치에서 시작하는 하나의 가변장 부호어에 대응하는 런랭스와 레벨을 발생한다. 복호기는 런랭스에 일치하는 기간 동안의 제2런등가 신호와, 그 기간이 경과할 때의 제1런등가 신호를 발생하고, 제2런등가 신호에 응답하여 데이타 영을 출력하며 제1런등가 신호에 응답하여 레벨을 출력한다. 부호어길이 발생부는 배럴시프터(23)의 출력에 들어 있는 첫번째 가변장 부호어에 대응하는 부호어길이를 발생하고, 누적 연산부는 이전의 누적된 부호어길이와 부호어길이 발생부로부터의 부호어길이를 가산 및 모듈러-N 연산하여 그 나머지를 누적된 부호어길이로 그 몫을 캐리 신호로 출력한다.

Description

영상 신호를 위한 가변장 복호기
제1도는 가변장 부호화된 데이타를 복호화하기 위한 종래의 가변장 복호기.
제2도는 본 발명의 바람직한 일 실시예에 따른 가변장 복호기를 나타낸 블럭도.
제3도(a) 내지 (j)는 제2도 장치의 동작을 설명하기 위한 타이밍도.
* 도면의 주요부분에 대한 부호의 설명
11 : FIFO 메모리
13,14,15,21,22,26,31,41,46,47,48 : 래치
16,17 : 제1 및 2멀티 플렉서 18,23 : 제1 및 2배럴 시프터
24 : 부호어길이테이블 32 : 누적 연산기
42 : 레벨테이블 43 : 런테이블
44 : 카운터 45,51 : 제1 및 2비교기
본 발명은 신호 처리 주파수가 높은 데이타 전송 시스템을 위한 가변장 복호기에 관한 것으로서, 특히 영상 신호의 가변장 부호화에 의한 부호어들을 부호화하기 이전의 부호로 복호화하는 가변장 복호기에 관한 것이다.
최근의 HD-TV, HD-VTR, 디지탈 VTR, 디지탈 캠코더, 멀티미디어(multimedia) 등과 같은 시스템에서는 영상 신호와 음성 신호를 디지탈 신호로 부호화하여 전송하거나 기록 매체에 저장하고, 이를 다시 복호화하여 재생하는 방식을 주로 사용하고 있다. 이러한 부호화 및 복호화 시스템에서는 데이타의 전송 효율을 극대화시키기 위하여 정송 데이타량을 보다 더 압축하는 기술이 요구되고 있다. 일반적으로 사용되고 있는 영상 신호의 부호화 방식에는 변환 부호화, DPCM(Differential Pulse Code Modulation), 벡터 양자화, 가변장 부호화(Variable Length Coding) 등이 있다. 이 부호화 방식들은 디지탈 신호에 포함되어 있는 용장성 데이타(Redundancy Data)를 제거하여 전체 데이타량을 줄이기 위해 사용된다.
상술한 부호화 바익들 중에서 가변장 부호화는 런랭스 부호화와 (변형된) 허프만 부호화로 이루어지며, 런랭스 부호화는 연속하는 영들의 갯수를 런랭스(run lengths)로 나타내어 샘플들의 수를 줄인다. 런랭스 부호화에 의해 발생하는 연속하는 영들의 갯수인 런랭스와 영이 아닌 샘플의 크기 또는 레벨은 하나의 부호어에 대응하게 된다. 예를 들어, 임의의 데이타가 a,0,0,b,0,0,0,0,c,d,0,e,…(여기서, a,b,c,d,e≠0)의 순서로 입력될 때 런랭스 부호화에 의한 데이타는 다음과 같다: [0,a], [2,b], [4,c], [0,d], [1,e],…. 여기서, [0,a]는 0이 아닌 첫번째 레벨 a앞에는 0이 하나도 없음을 나타내며, [2,b]는 0이 아닌 두번째 레벨 b 앞에는 0이 두개 있음을 나타낸다. 이와 같이 런랭스 부호화된 데이타는 허프만 코드 테이블 등에 의해 발생 빈도수가 높은 데이타일수록 짧은 길이의 부호어가 할당되며 발생 빈도수가 낮은 데이타일수록 긴 길이의 부호어가 할당된다. 그리고, 런랭스는 무한정 길게 하는 것이 적절하지 못하므로 임의의 블럭 단위로 가변장 부호화를 수행한다. 가변장 부호화된 데이타의 비트 스트림에는 임의의 구간의 시작을 나타내는 부호와 끝을 나타내는 부호, 비디오 신호임을 나타내는 부호, 블럭의 끝(EOB: End of block)을 나타내는 부호, 여러 가지 제어 부호들, 그리고 상태 표시 부호 등이 포함된다. 상태 표시 부호는 비트 스트림에 포함된 각 부호가 어떠한 성질의 부호인가를 나타낸다. 즉, 상태 표시 부호는 비트 스트림을 구성하는 부호들의 형태를 서로 구분하기 위한 정보이다.
제1도는 가변장 부호화된 데이타를 복호화하기 위한 종래의 가변장 복호기를 보여준다. 이러한 제1도의 기기는 IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY, VOL. 1, NO. 1, March 1991중의 p.147-155의 Shaw-min Lei 및 Ming-Ting Sun의 An Entropy Coding System for Digital HDTV Applications에서 보다 상세하게 기술되었다. 그러므로, 본 출원서에서는 제1도 기기의 동작을 간단히 설명한다.
가변장 부호화된 데이타는 버퍼(미도시)에 저장되며, 버퍼는 부호어길이 누적부(5)로부터 읽기 신호(READ)가 인가될 때마다 N-비트 데이타를 제1레지스터(1)로 출력한다. 제1레지스터(1)는 부호어길이 누적부(5)로부터 판독 신호(READ)가 인가될 때마다 버퍼(미도시)로부터 출력하는 N-비트의 가변장 부호화된 데이타를 래칭한다. 제2레지스터(2)는 제1레지스터(1)에서 출력된 N-비트 데이타를 래칭한다. 배럴 시프터(Barrel shifter)(3)는 제1 및 제2레지스터(1, 2)의 출력을 인가 받아, 부호어길이 누적부(5)로부터 출력하는 누적된 부호어길이에 따라 출력한다. 보다 상세하게는, 배럴 시프터(3)는 부호어길이 누적부(5)로부터의 누적된 부호어길이만큼 시프트된 윈도우내에 들어 있는 N-비트의 데이타들을 프로그램 가능한 로직 어레이(Programmable Logic Array;PLA)(4)로 출력한다. PLA(4)는 배럴 시프터(3)로부터 출력되는 N-비트의 가변장 부호화된 데이타들을 복호화하며, 복호화에 사용된 비트들의 수인 부호어길이를 부호어길이 누적부(5)로 출력한다. PLA(4)는 또한 복호화에 의한 심볼 및 그 심볼의 부호 길이를 출력한다. 부호어길이 누적부(5)는 PLA(4)로부터 인가되는 부호어길이를 저장하고 있던 누적된 부호어길이에 더하여 새로운 누적된 부호어길이를 생성한다. 부호어길이 누적부(5)는 또한 새로이 생성된 누적된 부호어길이가 N-비트보다 크거나 같으면 읽기 신호(READ)를 발생하고, 누적된 부호어길이로부터 비트수 N을 뺄셈하여 배럴 시프터(3)로 공급되는 누적된 부호어길이를 계산한다. 부호어길이 누적부(5)는, 그러나, 누적된 부호어길이가 N-비트보다 적으면 누적된 부호어길이를 그대로 배럴 시프터(3)로 출력한다. 배럴 시프터(3)는 레지스터들(1, 2)로부터 공급되는 2N-비트의 데이타들 중에서 부호어길이 누적부(5)로부터 공급되는 누적된 부호어길이만큼 시프트된 윈도우내의 데이타를 PLA(4)로 출력한다. 이러한 배럴 시프터(3)의 동작을 포함하여 제1도에 관련한 구체적인 설명은 상술한 Shaw-min Lei 및 Ming-Ting Sun의 문헌에서 기술되었다.
한편, 1993년 9월 14일자로 특허된 Ming-Ting Sun의 미국 특허 번호 5,245,338인 HIGH-SPEED VARIABLE-LENGTH DECODER는 HD-TV 시스템과 같은 고속 시스템에서 사용할 수 있는 고속 가변장 복호기를 기술한다.
본 발명의 목적은 개시된 선행 기술과는 다른 형태의 구성으로 가변장 부호화된 데이타를 복호화하는 장치를 제공함에 있다.
상술한 목적을 달성하기 위한, 영상 신호를 위한 가변장 복호기는 일정한 클럭율로 발생하는 클럭펄스에 근거하여 입력 비트 스트림 내의 각 가변장 부호어를 복호화하기 위하여, 비트 스트림 내에 있는 적어도 가장 긴 길이의 가변장 부호어의 비트수 N의 길이를 갖는 N-비트의 시퀀스 내의 첫번째 비트 위치에서 시작하는 하나의 가변장 부호어에 대응하는 런랭스와 레벨을 발생하며, 상기 런랭스에 일치하는 갯수의 클럭펄스들이 인가될 때까지 제2런등가신호를 발생하며, 상기 런랭스에 일치하는 갯수의 클럭펄스들이 인가되면 제1런등가신호를 발생하고, 발생된 제2런등가신호에 응답하여 상기 발생된 레벨을 저장하며 발생된 제1런등가신호에 응답하여 상기 발생된 레벨을 출력하는 복호기; 저장하고 있는 N-비트의 시퀀스를 상기 복호기로 공급하도록 연결되며, 상기 복호기로부터 제1런등가신호가 인가되는 동안의 각 클럭펄스에서 N-비트의 입력 시퀀스를 저장하며, 제2런등가신호가 인가되는 동안의 각 클럭에서는 저장된 N-비트의 시퀀스를 보유하고 있는 제1비트 저장 수단; 상기 제1비트 저장 수단으로 공급되는 N-비트의 시퀀스를 인가받아, 상기 복호기로부터 제1런등가신호가 인가되는 동안의 각 클럭펄스마다 N-비트 시퀀스 내의 첫번째 비트 위치에서 시작하는 하나의 가변장 부호어에 대응하는 부호어길이를 발생하여 출력하는 부호어길이 발생부; 이전의 누적된 부호어길이와 상기 부호어길이 발생부로부터의 부호어길이를 가산하며 가산에 의한 결과를 비트수 N으로 나누고, 나눈 결과에 의한 나머지인 누적된 부호어길이를 출력하며 그 몫이 존재하면 캐리 신호를 발생하여 출력하는 누적 연산 수단; 입력 비트 스트림을 저장하며, 상기 누적 연산 수단으로부터의 캐리 신호에 응답하여 저장된 비트 스트림 내의 첫번재 비트 위치로부터의 N-비트의 시퀀스를 순차적으로 출력하는 버퍼; 상기 누적 연산 수단에서 출력하는 캐리 신호에 응답하여 상기 버퍼로부터 출력하는 적어도 연속하는 2N-비트의 시퀀스를 각 클럭펄스마다 저장하는 제2비트 저장 수단; 상기 캐리 신호 및 누적된 부호어길이에 응답하여, 상기 제2비트 저장 수단에 저장된 적어도 2N-비트의 시퀀스 중의 첫번째 비트 위치에서 시작하여 누적된 부호어길이만큼 시프트된 비트 위치에서 시작하는 N-비트의 시퀀스를 출력하는 시프터 수단; 상기 시프터 수단으로부터의 N-비트의 시퀀스를 각 클럭펄스마다 저장하는 제3비트 저장 수단; 상기 제1비트 저장 수단으로 공급되는 N-비트의 시퀀스를 각 클럭펄스마다 저장하는 제4비트 저장 수단; 상기 제4비트 저장 수단에 저장된 N-비트의 시퀀스가 상기 제3비트 저장 수단에 저장된 N-비트의 시퀀스보다 앞서도록 구성된 2N-비트의 시퀀스 중에서 첫번째 비트 위치로부터 상기 부호어길이 발생부로부터의 부호어길이 만큼 시프트된 비트 위치에 첫번째 비트를 갖는 N-비트의 시퀀스를 상기 제1비트 저장 수단과 상기 제4비트 저장 수단 및 상기 부호어길이 발생부로 출력하는 배럴 시프터를 포함한다.
이하, 첨부된 제2도와 제3도(a) 내지 제3도(j)를 참조하여 본 발명을 구현한 일 실시예를 상세히 설명하면 다음과 같다.
제2도는 본 발명의 바람직한 일 실시예에 따른 가변장 복호기를 나타낸 블럭도이다. 제2도의 가변장 복호기는 가변장 부호화된 데이타인 가변장 부호어들을 부호화하기 이전의 상태로 복호화한다. 보다 상세하게는, 제2도의 가변장 복호기는 영상 신호의 가변장 부호화에 의한 부호어들로부터 런랭스만큼 지연된 레벨을 발생한다. 따라서, 제2도 가변장 복호기의 출력은 역변환 부호화에 곧바로 사용할 수 있는 데이타의 형태가 된다.
가변장 부호어들은 직렬 또는 병렬 비트 스트림 형태로 FIFO 메모리(11)로 입력한다. FIFO 메모리(11)는 입력하는 가변장 부호어들을 저장하며, 인버터(12)로부터 캐리 신호 0이 인가될 때마다 저장하고 있는 데이타 중에서 가장 먼저 입력된 N-비트 데이타를 래치(13)로 출력한다. FIFO 메모리(11)는 직렬 또는 병렬 비트 스트림 형태로 입력되는 비트들 중의 N-비트씩을 병렬 형태의 시퀀스로 출력하므로, FIFO 메모리(11)로부터 출력하는 N-비트 데이타들 중의 최상위 비트는 직렬 비트 스트림 상에서의 동일한 N-비트 데이타 중의 가장 앞선 비트가 된다. 여기서, 비트수 N은 가변장 부호어들이 가질 수 있는 가장 긴 길이의 비트수이다. 따라서, N-비트 시퀀스 내에는 하나의 가변장 부호어만이 들어 있거나 두개의 가변장 부호어들이 들어 있을 수도 있다. 클럭펄스가 입력되면, 래치(13)는 FIFO 메모리(11)로부터 출력되는 N-비트 시퀀스를, 래치(14)는 래치(13)로부터의 데이타를, 그리고, 래치(15)는 래치(14)로부터 공급되는 데이타를 개별적으로 래칭한다. 이러한 래치들(13, 14, 15)은 공급받은 N-비트 시퀀스를 캐리 신호가 1인 동안에 뜨는 클럭펄스에 따라 래칭한다. 제1멀티플렉서(16)는 캐리 신호가 1이면 래치(13)의 출력을 선택하며 캐리 신호가 0이면 래치(14)의 출력을 선택하여 제1배럴 시프터(18)로 공급한다. 제2멀티플렉서(17)는 캐리 신호가 1이면 래치(14)의 출력을 선택하며 캐리 신호가 0이면 래치(15)의 출력을 선택하여 제1배럴 시프터(18)로 공급한다. 제1배럴 시프터(18)는 멀티플렉서들(16, 17)을 통해 공급되는 2N-비트의 시퀀스 중에서 누적된 부호어길이(ACL)에 해당하는 비트수 만큼 시프트(shift)된 윈도우 내의 N-비트의 데이타를 래치(21)로 출력한다. 여기서, 윈도우의 시프팅은 제2멀티플렉서(17)로부터 인가되는 N-비트 시퀀스의 첫번째 비트로부터 누적된 부호어길이(ACL)만큼 시프트된다. 예를 들어, 누적 부호어길이(ACL)가 m인 경우, 제1배럴 시프터(18)는 제2멀티플렉서(17)로부터 인가되는 N-비트 시퀀스 내의 첫번째 비트부터 m개의 비트들을 제외한 나머지 N-m개의 비트들과 제1멀티플렉서(16)로부터 인가되는 N-비트 시퀀스 내의 첫번째 비트로부터 m개의 비트들을 래치(21)로 출력한다.
래치(21)는 클럭펄스가 뜰 때마다 제1배럴 시프터(18)로부터 공급되는 데이타를 래칭한다. 래치(22)는 전술한 제1배럴 시프터(18)와 동일하게 동작하는 제2배럴 시프터(23)로부터 공급되는 데이타를 클럭이 뜰 때마다 래칭한다. 제2배럴 시프터(23)는 래치들(21, 22)로부터 공급되는 2N-비트 시퀀스 중에서 부호어길이(CL)만큼 시프트된 윈도우 내에 들어 있는 N-비트 시퀀스를 부호어길이 테이블(24)과 래치(41), 및 래치(22)로 출력한다.
부호어길이 테이블(24)은 상태 신호의 값에 따라 제2배럴 시프터(23)로부터 공급되는 N-비트 시퀀스 내에 들어 있는 첫번째 가변장 부호어의 길이와, 상태 신호의 값에 대응하는 부호어길이 중의 하나를 앤드 게이트(25)로 출력한다. 본 발명의 일 실시예에서 사용된 상태 신호는 4비트의 데이타이며, 부호어길이 테이블(24)은 상태신호의 값이 0이면 부호어길이 0을, 상태 신호의 값이 1에서 14사이의 값이면 제2배럴 시프터(23)의 출력 데이타로부터 얻어진 부호어길이를, 그리고 상태 신호의 값이 15이면 부호어길이 N을 출력하도록 설계된다. 상태 신호의 값 1 내지 14는 여러 개의 부호어길이 테이블들을 사용하는 경우에 그것들을 서로 구분하기 위하여 사용된다. 이러한 상태 신호는, 초기화 구간 즉, 제2도의 장치가 가변장 부호어로부터 얻어지는 부호어길이와 런랭스에 근거하여 정상적으로 동작하기 이전의 5클럭구간 동안에는 외부 기기(미도시)로부터 공급되며, 제3도(c)에 나타낸 바와 같이 초기화 신호가 인가된 후 첫번째 클럭 구간부터 네번째 클럭 구간 동안에는 그 값 15를 가지며, 5번째 클럭 구간에서는 0을 갖는다. 이에 응답하여 부호어길이 테이블(24)은 초기 4클럭 구간 동안에는 N을 클럭펄스에 상관없이 지속적으로 출력하고, 5번째 클럭 구간에서는 0을 출력한다. 이러한 초기 5클럭 구간 동안의 부호어길이 테이블의 출력을 이용하여 제2도의 장치는, FIFO 메모리(11)에 입력되는 비트 스트림 상의 최초의 N-비트 시퀀스 F1이 제4비트 저장 수단인 래치(22)에 저장되도록 하고, 이에 따라 여섯번째 클럭부터 제2배럴 시프터(23)는 인가되는 부호어길이에 따른 시프팅 동작을 정상적으로 하게 한다. 이에 대한 상세한 내용은 제3도의 타이밍도와 관련한 제2도 장치의 동작 설명에서 상세히 기술하기로 한다. 그리고, 제2도의 장치가 정상적으로 동작하는 동안의 상태 신호는 부호어길이 테이블(24)로부터 얻어진 부호어길이를 이용하거나, 초기화 구간과 마찬가지로 외부 기기로부터 공급받을 수 있다. 앤드 게이트(25)는 제1비교기(45)로부터 런등가 신호 1이 인가되는 동안에는 부호어길이 테이블(24)로부터의 부호어길이를 래치(26)로 공급하고, 런등가 신호 0이 인가되는 동안에는 값 0을 래치(26)로 공급한다. 래치(26)는 앤드 게이트(25)로부터 공급되는 데이타를 클럭펄스가 뜰 때마다 래칭한다. 제2배럴 시프터(23)는 래치(26)로부터의 부호어길이에 따라 데이타 출력을 결정하는 윈도우를 시프트시킨다.
또한, 래치(26)에 저장된 부호어길이는 누적연산기(32)로 공급되며, 래치(31)는 누적연산기(32)로부터 출력되는 누적된 부호어길이를 클럭펄스에 따라 래칭한다. 누적연산기(32)는 래치(26)로부터 공급되는 부호어길이를 래치(31)로부터 공급되는 누적된 부호어길이에 가산한다. 그리고, 누적연산기(32)는 가산에 의한 결과값은 모듈로(modulo)-N 연산하여 그 몫을 캐리 신호로 그 나머지를 누적된 부호어길이로 출력한다. 즉, 누적연산기(32)는 새로이 얻어진 누적된 부호어길이가 N보다 크거나 같으면 캐리 신호 1과 모듈로(modulo)-N 연산에 의한 나머지인 누적된 부호어길이를 출력하고, 새로이 얻어진 누적된 부호어길이가 N보다 적으면 캐리 신호 0과 모듈로(modulo)-N 연산에 의한 나머지인 누적된 부호어길이를 출력한다. 누적연산기(32)로부터 출력되는 누적된 부호어길이는 래치(31)와 제1배럴 시프터(18)로 공급되고, 캐리 신호는 인버터(12)와 래치들(13, 14, 15), 및 제1, 2멀티플렉서들(16, 17)로 공급된다. 한편, 래치들(22, 26, 31)은 인버터(6)를 통해 각각의 로우에지트리거형 클리어단으로 인가되는 초기화 신호에 의해 클리어된다.
래치(41)는 제1비교기(45)로부터 인가되는 런등가신호에 따라 인에이블되며, 클럭펄스가 뜨면 제2배럴 시프터(23)로부터 공급되는 N-비트 시퀀스를 래칭한다. 즉, 래치(41)는 런등가신호가 1인 동안에 제2배럴 시프터(23)로부터의 N-비트 시퀀스를 클럭펄스가 뜰 때 래칭한다. 레벨테이블(42)은 래치(41)로부터 공급되는 N-비트 시퀀스 내에 들어 있는 첫번째 가변장 부호어에 대응하는 레벨을 출력한다. 이 레벨은 래치(46)로 공급되며, 클럭펄스가 뜰 때 래치(46)에 래칭된 레벨은 래치(48)로 공급된다. 한편, 런테이블(43)은 래치(41)로부터 공급되는 N-비트 시퀀스 내의 첫번째 가변장 부호어에 대응하는 런랭스를 출력한다. 제1비교기(45)는 런테이블(43)로부터의 런랭스와 카운터(44)로부터의 카운트된 값을 비교한다. 제1비교기(45)는 런랭스와 카운트된 값이 일치하면 런등가신호 1을 출력하며, 일치하지 않으면 런등가신호 0을 출력한다. 제1비교기(45)의 출력인 런등가신호는 래치들(41, 47)과 게이트 회로(52) 및 앤드 게이트(25)로 공급된다. 래치(47)는 제1비교기(45)로부터의 런등가신호를 클럭펄스에 따라 래칭하며, 래치(47)의 출력은 래치(48)의 클리어 신호로 이용된다. 따라서, 클럭이 뜰 때 래치(48)는 래치(47)로부터 0이 인가되면 0을 출력하며, 그리고 래치(47)로부터 1이 인가되면 래치(46)로부터 공급되는 레벨을 래칭한다.
제2비교기(51)는 상태 신호와 블럭 끝신호(EOB)를 인가받아 비교하며, 그 비교 결과를 게이트 회로(52)로 출력한다. 즉, 제2비교기(51)는 블럭 끝신호(EOB)와 상태 신호가 동일한 신호이면 1을 출력하고, 동일하지 않으면 0을 출력한다. 제2비교기(51)의 출력에 의해 새로운 블럭에 대한 가변장 복호화가 정상적으로 이루어질 수 있게 된다. 게이트 회로(52)는 런등가신호의 반전된 신호와 제2비교기(51)의 출력의 반전된 신호 및 초기화 신호를 인가받아 논리곱하여 카운터(44)로 출력한다. 카운터(44)는 클럭펄스를 카운트하는 증가 카운터로서, 게이트회로(52)의 출력신호를 클리어 신호로 인가받도록 설계된다. 따라서, 카운터(44)는 런랭스와 카운트값이 일치할 때 제1비교기(45)로부터 발생하는 런등가신호 1에 의해 클리어된다. 이러한 카운터(44)는 카운트된 값이 런랭스와 일치할 때까지 클럭펄스를 카운트한다.
상술한 구성을 갖는 제2도 장치의 동작을 제3도(a) 내지 제3도(j)를 참조하여 설명한다.
초기화 신호(제3도(b))는 첫번째 클럭펄스(CLK1)가 뜨기 전에 하이 레벨을 가지며, 상태 신호(제3도(c))의 값은 첫번째 클럭펄스(CLK1)로부터 네번째 클럭펄스(CLK4)구간 동안에는 15, 다섯번째 클럭펄스(CLK5)구간에는 0, 그리고 여섯번째 클럭펄스(CLK6)이후에는 제2배럴 시프터(23)의 출력에 따라 그 값이 가변된다.
설명의 편이를 위해, FIFO 메모리(11)는 누적연산기(32)에 의해 발생되는 캐리 신호가 1이 될 때마다 F1, F2, F3, F4, … 의 순서로 N-비트의 데이타를 각각 출력하는 것으로 정한다. 그리고, 본 발명의 일실시예에서는 각 래치들 및 카운터는 각 클럭펄스의 라이징에지(rising edge)에서 동작하는 것으로 설계한다. 또한, 제3도(d) 내지 제3도(j)에 나타낸 래치들의 타이밍 상태들은 각 래치들이 입력 데이타를 래칭하는 시점으로부터 약간씩 지연되어 출력되는 타이밍을 나타낸 것이다. 래치들(15, 14, 13)은 인가되는 캐리 신호가 1이고 클럭펄스가 뜰 때마다 그 시점에서 입력되는 데이타를 래칭하여 다음 클럭이 뜰 때까지 출력하고, 래치(26)는 클럭이 뜰 때마다 그 시점의 앤드 게이트(25)로부터의 입력 데이타를 래칭하고, 래치들(21, 22)은 클럭이 뜰 때마다 그 시점의 입력 데이타를 래칭한다.
첫번째 클럭펄스(CLK1)가 뜨기 이전에, 직렬 비트 스트림 형태의 가변장 부호어들은 FIFO 메모리(11)로 입력되어 저장되며, 초기화 신호(제3도(b))는 인버터(6)를 통해 제2도의 장치로 인가된다. 래치들(22, 26, 31)은 초기화 신호에 의해 클리어되며, 게이트 회로(52)는 초기화 신호의 하이레벨 구간동안 0을 출력한다. 카운터(44)는 게이트회로(52)로부터의 신호 0에 의해 클리어된다. 따라서, 래치(26)는 제3도(d)에서 보인 것처럼 부호어길이 0을 출력한다. 래치(260의 출력 0은 누적연산기(32)로 출력되며, 누적연산기(32)는 초기화 신호에 의해 클리어된 래치(31)의 출력과 래치(26)의 출력을 가산한 다음 모듈러-N 연산을 수행한다 . 이 경우 래치(31)의 출력은 0이므로, 누적연산기(32)는 캐리 신호 0과 누적된 부호어길이 0을 출력한다. FIFO 메모리(11)와 래치들(13, 14, 15)은 캐리 신호 0에 의해 동작하지 않게 된다. 첫번째 클럭펄스가 뜨기 이전의 래치들(26, 13, 14, 15, 21, 22, 및 41)의 출력은 제3도(d) 내지 제3도(j)에서 보인 바와 같이 그 값이 모두 0이다. 한편, 제1비교기(45)는 런등가신호 1을 출력하며, 이 런등가신호 1은 앤드 게이트(25)로 인가된다. 첫번째 클럭펄스가 뜨기 직전 부호어길이 테이블(24)로 입력되는 상태 신호는 제3도(c)에서 보인 것처럼 그 값이 이전의 0에서 15로 바뀐다. 따라서, 부호어길이 테이블(24)은 입력되는 상태 신호 15에 즉각적으로 (클럭이 뜨는 것과 상관없이) 응답하여 부호어길이 N을 앤드 게이트(25)로 출력한다. 앤드 게이트(25)는 제1비교기(45)로부터의 런등가신호가 1이므로, 부호어길이 테이블(24)로부터 출력되는 부호어길이 N을 래치(26)로 출력한다.
첫번째 클럭펄스(CLK1)가 뜨면, 래치(26)는 앤드 게이트(25)로부터의 부호어길이 N을 래칭한다. 누적연산기(32)는 래치(31)로부터의 출력 0에 래치(26)로부터의 출력 N을 가산한 다음, 그 결과값 N의 모듈로-N 연산에 의한 캐리 신호 1과 누적된 부호어길이 0을 출력한다. FIFO 메모리(11)는 인버터(12)에 의해 반전된 캐리 신호에 따라 저장하고 있던 데이타 중에서 가장 먼저 입력된 N-비트의 데이타 F1을 래치(13)로 출력한다. 첫번째 클럭펄스(CLK1)가 뜬 이후에 래치들(13, 14, 15, 21, 22, 및 41) 각각에 래칭되는 데이타는 제3도(e) 내지 제3도(j)의 각각에서 보인 바와 같이 0이다. 한편, 제1비교기(45)는 런테이블(43)로부터의 런랭스가 공급되지 않고, 이전의 런등가신호1에 의하여 카운터(44)가 클리어되므로 런등가신호 1을 출력한다. 런등가신호 1은 앤드 게이트(25)로 공급된다. 두번째 클럭펄스가 뜨기 직전, 부호어길이 테이블(24)은 입력되는 상태 신호 15에 응답하여 N을 출력한다. 앤드 게이트(25)는 런등가신호 1에 의하여 부호어길이 테이블(24)로부터의 출력 N을 래치(26)로 공급한다.
두번째 클럭펄스가 뜨면, 래치(26)는 앤드 게이트(25)로부터의 부호어길이 N을 래칭한다. 래치(26)로부터의 부호어길이 N을 공급받는 누적연산기(32)는 가산 및 모듈로-N 연산을 수행한 후, 캐리 신호 1과 누적 부호어길이 0을 출력한다 . 래치들(15, 14)은 입력 데이타가 0이므로 0을 래칭한다. 캐리 신호 1에 의하여 래치(13)는 FIFO 메모리(11)의 출력 F1을 래칭한다. FIFO 메모리(11)는 캐리 신호 1에 따라 저장하고 있던 비트 스트림 중 그 다음 N-비트 F2를 출력한다. 제1멀티플렉서(16)는 래치들(14, 13)로부터 각각 입력되는 N-비트의 시퀀스 중 캐리 신호 1에 의하여 래치(13)의 F1을 선택하여 제1배럴 시프터(18)로 출력하고, 제2멀티플렉서(17)는 래치들(15, 14)로부터의 입력이 각각 0이므로, 래치(14)의 N-비트 0을 선택하여 제1배럴 시프터(18)로 출력한다. 제1배럴 시프터(18)는 제2멀티플렉서(17)로부터 입력되는 N-비트 0이 제1멀티플렉서(16)로부터 입력되는 N-비트 F1에 앞서도록 구성된 2N-비트의 시퀀스 중 누적연산기(32)로부터 인가되는 누적부호어길이가 0이므로 N-비트 0을 출력한다. 한편, 제1비교기(45)는 런테이블(43)로부터 입력되는 런랭스가 0이고, 카운터가 이전의 런등가 신호 1에 의하여 클리어되므로 런등가신호 1을 출력한다. 세번째 클럭펄스가 뜨기 직전, 부호어길이 테이블(24)은 입력되는 상태 신호 15에 응답하여 N을 출력한다. 앤드 게이트(25)는 런등가신호 1에 의하여 부호어길이 테이블(24)로부터의 부호어길이 N을 래치(26)로 출력한다.
세번째 클럭펄스가 뜨면, 래치(26)는 N을 래칭한다. 이에 따라 누적연산기(32)는 캐리 신호 1과 누적부호어길이 0을 출력한다. 래치들(22, 21, 15)은 입력 데이타가 0이므로 0을 래칭한다. 래치(14)는 캐리 신호 1에 의하여 인에이블되어 FIFO 메모리(11)의 출력 F2를 래칭한다. FIFO 메모리(11)는 인가된 캐리 신호 1에 의하여 저장된 비트 스트림의 세번째 N-비트 F3을 래치(13)로 출력한다. 제1멀티플렉서(16)는 캐리 신호 1에 의하여 래치들(14, 13)로부터의 입력 중 래치(13)로부터 입력되는 F2를 선택하여 제1배럴 시프터(18)로 출력하고, 제2멀티플렉서(17)는 캐리 신호 1에 의하여 래치들(15, 14)로부터의 입력 중 래치(14)로부터 입력되는 F1을 선택하여 제1배럴 시프터(18)로 출력한다. 제1배럴 시프터(18)는, 제2멀티플렉서(17)로부터 입력되는 N-비트의 F1이 제1멀티플렉서(16)로부터 입력되는 N-비트의 F2에 앞서도록 구성된 2N-비트의 시퀀스 중에서, 누적연산기(32)로부터 인가되는 누적부호어길이 0에 의하여 시프팅이 일어나지 않으므로 2N-비트의 시퀀스 중 앞선 N-비트의 F1을 래치(21)로 출력한다. 한편, 제1비교기(45)는 런테이블(43)의 출력이 0이고 카운터(44)가 이전의 런등가신호 1에 의하여 클리어되므로 런등가신호 1을 출력한다. 네번째 클럭펄스가 뜨기 직전, 부호어길이 테이블(24)은 입력 상태 신호가 15이므로 이에 응답하여 부호어길이 N을 출력한다. 앤드 게이트(25)는 런등가신호 1에 의하여 부호어 길이 N을 래치(26)로 출력한다.
네번째 클럭(CLK4)이 뜨면, 래치(26)는 N을 래칭한다. 누적연산기(32)는 이전 클럭의 누적부호어길이를 저장하는 래치(31)로부터의 데이타 0에 래치(26)로부터의 부호어길이 N을 가산한 다음 모듈로-N 연산을 한 후, 캐리 신호 1과 누적부호어길이 0을 출력한다. 래치(21)는, 제1배럴 시프터(18)로부터 출력된 네번째 클럭이 뜨기 직전의 데이타 F1을 래칭한다. 캐리 신호 1에 의하여 인에이블된 래치(15)는 래치(14)로부터의 데이타 F1을, 래치(14)는 래치(13)로부터의 데이타 F2를, 그리고 래치(13)는 FIFO메모리(11)로부터 출력된 데이타 F3을 각각 래칭한다. FIFO 메모리(11)는 누적연산기(32)로부터의 캐리 신호 1에 응답하여 그 다음의 N-비트 데이타 F4를 출력한다. 제1멀티플렉서(16)는 캐리 신호 1에 응답하여 래치(13)로부터의 데이타 F3을 선택하여 제1배럴 시프터(18)로 공급하며, 제2멀티플렉서(17)는 래치(14)로부터의 데이타 F2를 선택하여 제1배럴시프터(18)로 공급한다. 제1배럴시프터(18)는 누적연산기(32)로부터의 누적된 부호어길이 0에 응답하여 제2멀티플렉서(17)로부터 공급되는 데이타 F2를 래치(21)로 출력한다. 네번째 클럭이 뜰 때, 래치(26)는 앤드 게이트(25)의 출력 N을 래칭하므로, 제2배럴시프터(23)는 래치(26)로부터의 부호어길이 N 만큼 시프트된 윈도우 내의 N-비트 시퀀스 즉, 래치(21)로부터의 데이타 F1을 부호어길이 테이블(24)과 래치들(22 및 41)로 출력한다. 한편 제1비교기(45)는, 런테이블(43)의 출력이 0이고 카운터(44)가 이전 런등가신호 1에 의하여 클리어되므로 런등가신호 1을 출력한다. 다섯번째 클럭이 뜨기 직전, 입력되는 상태 신호는 0이므로 부호어길이 테이블(24)은 상태 신호 0에 응답하여, 제2배럴시프터(23)로부터 입력되는 F1을 무시하고, 부호어길이 0을 앤드 게이트(25)로 출력하고, 이때의 런등가신호 1에 따라 앤드 게이트(25)는 부호어길이 0을 래치(26)로 출력한다.
다섯번째 클럭(CLK5)이 뜨면, 래치(26)는 0을 래칭하여 제2배럴시프터(23) 및 누적연산기(32)로 출력하고, 누적연산기(32)는 래치(26)의 출력 N과 래치(31)의 출력 0에 대하여 가산 및 모듈러-N 연산을 수행하며 그 결과에 따른 캐리 신호 1과 누적된 부호어길이 0을 출력한다. 한편, 다섯번째 클럭이 뜨는 시점에서 래치들(15, 14, 13)로 인가되는 캐리 신호는 다섯번째 클럭이 뜨기 직전의 캐리 신호 1이므로 (왜냐하면, 다섭너째 클럭이 뜰 시점에서 래치(26)에서 래칭되는 부호어길이 0은 아직 래치들(15, 14, 13)을 인에이블시키는 캐리 신호에 영향을 미치지 않고 있기 때문에), 래치(15)는 래치(14)로부터의 데이타 F2를, 래치(14)는 래치(13)로부터의 데이타 F3을, 그리고 래치(13)는 FIFO 메모리(11)로부터 출력된 데이타 F4를 각각 래칭한다. FIFO 메모리(11)는 캐리 신호 1에 응답하여 그 다음 N-비트 시퀀스 F5를 출력하다가 6번째 클럭이 뜨기 이전에 인가되는 캐리 신호가 0으로 바뀌므로 아무런 데이타도 출력하지 않는다. 6번째 클럭이 뜨기 직전, 누적연산기(32)가 캐리 신호 0 및 누적부호어길이 0을 출력하므로, 제1멀티플렉서(16)는 캐리 신호 0에 응답하여 래치(14)로부터의 F2를, 제2멀티플렉서(17)는 캐리 신호 0에 응답하여 래치(15)로부터의 F3을 선택하여 제1배럴시프터(18)로 출력한다. 제1배럴시프터(18)는 인가되는 누적부호어길이 0에 의하여 F2를 선택하여 래치(21)로 출력한다. 다섯번째 클럭펄스가 뜨는 시점에서, 래치(41)는 다섯번째 클럭펄스가 뜨기 직전 제2배럴시프터(23)로부터 공급된 데이타 F1을 래칭한다. 레벨 테이블(42)은 N-비트 시퀀스 F1에 들어 있는 첫번째 가변장 부호어에 대응하는 레벨을 출력한다. 런테이블(43)은 래치(41)로부터의 데이타 F1을 인가받아 레벨테이블(42)에서 출력되는 레벨에 대응하는 런랭스를 제1비교기(45)로 출력한다. 제1비교기(45)는 런랭스와 카운터(44)의 출력 0을 비교하여, 두 값이 동일하면 런등가신호 1을, 그리고 두 값이 서로 다르면 런등가신호 0을 출력한다. 본 발명의 일 실시예에서는, 레벨 테이블(42)로부터 최초로 출력된 레벨에 대응하는 런랭스를 0으로 정한다. 따라서, 제1비교기(45)는 런테이블로부터의 런랭스가 0이고 카운터(44)가 이전의 런등가신호 1에 의하여 클리어되므로 런등가신호 1을 출력한다. 런등가신호 1은 래치들(41, 47), 게이트 회로(52) 및 앤드 게이트(25)로 각각 공급된다.
한편, 다섯번째 클럭이 뜰 때 래치(22)는 다섯번째 클럭(CLK5)이 뜨기 직전 제2배럴시프터(23)로부터 출력된 데이타 F1을, 래치(21)는 제1배럴시프터(18)로부터의 데이타 F2를 각각 래칭한다. 제2배럴시프터(23)는 래치들(21, 22)로부터의 2N-비트의 시퀀스 중에서 래치(26)로부터의 부호어길이 0에 의하여, 2N-비트의 시퀀스 중 시프트되지 않은 F1을 래치들 (21, 41) 및 부호어길이 테이블(24)로 출력한다. 여섯번째 클럭이 뜨기 직전, 입력되는 상태 신호가 제3도(c)에 보인 것처럼 1이므로 이에 응답하여 부호어길이 테이블(24)은 제2배럴시프터(23)로부터 입력되는 N-비트 F1에 들어 있는 첫번째 가변장 부호어에 대응하는 부호어길이 X1을 출력한다. 앤드 게이트(25)는 제1비교기(45)로부터 인가되는 런등가신호 1에 따라 부호어길이 테이블(24)로부터의 부호어길이 X1을 래치(26)로 출력한다.
여섯번째 클럭(CLK6)이 뜨면, 래치(46)는 레벨 테이블(42)로부터 출력된 레벨을, 래치(47)는 제1비교기(45)로부터의 런등가신호 1을 각각 래칭한다. 래치(41)는 런등가신호 1에 응답하여 제2배럴시프터(23)로부터 공급된 데이타 F1을 래칭한다. 레벨 테이블(42)은 데이타 F1에 들어 있는 가변장 부호어에 대응하는 레벨을 출력한다. 런테이블(43)은 래치(41)로부터의 데이타 F1을 인가받아 레벨 테이블(42)에서 출력되는 레벨에 대응하는 런랭스를 제1비교기(45)로 출력한다. 제1비교기(45)는 카운터(44)의 출력 0과 런랭스를 비교하여 그 결과에 따른 런등가신호 1을 출력한다. 이 런등가신호 1은 래치들(41, 47), 게이트 회로(52) 및 앤드 게이트(25)로 각각 공급된다. 한편, 래치(22)는 여섯번째 클럭(CLK6)이 뜨기 직전 제2배럴시프터(23)로부터 출력된 데이타 F1을, 래치(21)는 제1배럴시프터(18)로부터의 데이타 F2를 각각 래칭한다. 또한, 여섯번째 클럭이 뜨기 직전의 캐리 신호가 0이므로 래치(15)는 데이타 F2를, 래치(14)는 데이타 F3을, 그리고 래치(13)는 데이타 F4를 그대로 가지고 있는다. 그리고 FIFO 메모리(11)는 데이타를 출력하지 않는다. 여섯번째 클럭이 뜰 때 래치(26)는, 여섯번째 클럭(CLK6)이 뜨기 직전의 앤드 게이트(25)의 출력 X1을 래칭하므로, 제2배럴시프터(23)는 래치(26)로부터의 출력 X1에 응답하여 윈도우를 X1 비트만큼 이동시키며, 이동된 윈도우 내의 N-비트 데이타를 래치들(22 및 41)과, 부호어길이 테이블(24)로 출력한다. 따라서, 이 경우의 제2배럴시프터(23)의 출력은 FIFO 메모리(11)로 인가되는 비트 스트림 상의 첫번째 가변장 부호어가 제외된 N-비트 데이타가 된다. 제2배럴시프터(23)의 출력은 래치들(22, 41) 및 부호어길이 테이블(24)로 공급된다.
한편 여섯번째 클럭(CLK6)이 뜰 때, 누적연산기(32)는 래치(26)의 출력 X1과 래치(31)의 출력 0에 대하여 가산 및 모듈러-N 연산을 수행하며, 그 결과에 따른 캐리 신호와 누적된 부호어길이를 출력한다. 이 경우, 누적연산기(32)로부터 출력되는 캐리 신호 및 누적된 부호어길이는 부호어길이 X1에 의해 결정된다. 부호어길이 X1이 N보다 크거나 같으면 캐리 신호 1과, 부호어길이 X1을 N으로 나눈 나머지인 누적된 부호어길이가 발생된다. 반면에, 부호어길이 X1의 값이 N보다 적은 경우, 캐리 신호는 0이 되며 부호어길이 X1이 누적연산기(32)로부터 출력되는 누적된 부호어길이가 된다. 누적연산기(32)로부터의 캐리 신호에 응답하여, 제1멀티플렉서(16)는 래치(13 및 14) 중의 하나로부터의 N-비트 시퀀스를, 제2멀티플렉서(17)는 래치(14 및 15) 중의 하나로부터의 N-비트 시퀀스를 개별적으로 출력한다. 제1배럴시프터(18)는 누적연산기(32)로부터 출력되는 누적된 부호어길이에 응답하여 윈도우를 이동시키며 이동된 윈도우 내의 N-비트 시퀀스를 래치(21)로 출력한다. 일곱번째 클럭이 뜨기 직전, 입력되는 상태 신호가 1에서 2로 바뀌므로 이에 응답하여 부호어길이 테이블(24)은 제2배럴시프터(23)로부터 출력되는 데이타 내에 들어 있는 첫번째 가변장 부호어에 대응하는 부호어길이 X2를 앤드 게이트(25)로 출력한다. 앤드 게이트(25)는 런등가신호 1(CLK7이 뜨기 직전까지 래치(41)가 F1을 래칭하고 있으므로 제1비교기(45)는 런등가신호 1을 출력)에 응답하여 부호어길이 테이블(24)로부터의 부호어길이 X2를 래치(26)에 출력한다.
일곱번째 클럭(CLK7)이 뜨면, 래치(48)는 래치(47)에 저장된 런등가신호 1에 응답하여 래치(46)로부터 공급된 최초의 레벨을 래칭한다. 여기서, 래치(48)에 래칭되는 데이타는 FIFO 메모리(11)로 인가되는 비트 스트림상의 최초의 가변장 부호어에 대응하는 레벨이다. 래치(46)는 상술한 최초의 가변장 부호어에 대응하는 레벨을 다시 래칭하며(여섯번째 클럭에서 래치(41)가 F1을 래칭하고 있으므로), 래치(47)는 그 가변장 부호어에 대응하는 런랭스를 래칭한다. 래치(41)의 경우, 런등가신호 1에 응답하여 비트 스트림상의 최초의 가변장 부호어가 제외된 비트들로 된 N-비트의 데이타를 래칭한다. 보다 상세하게 래치(41)는, 일곱번째 클럭(CLK7)이 뜨기 직전 제2배럴시프터(23)가 2N-비트의 (F1+F2)시퀀스 중 X1비트 만큼 시프트된 (윈도잉된) N-비트의 데이타를 출력하므로, 일곱번째 클럭이 뜨면 이를 래칭한다. 레벨테이블(42)은 래치(41)로부터 출력되는 데이타에 들어 있는 처음의 가변장 부호어에 대응하는 레벨을 출력하며, 런테이블(43)은 그 레벨에 대응하는 런랭스를 출력한다. 이때 카운터(44)로부터 제1비교기(45)로 공급되는 카운트된 값은 0이 된다 . 왜냐하면, 카운터(44)는 이전의 런등가신호 1에 의해 클리어된 상태이기 때문이다. 제1비교기(45)는 런테이블(43)의 출력과 카운터(44)의 출력을 비교한다. 제1비교기(45)는 비교 결과에 따른 1 또는 0의 런등가신호를 래치(41) 및 래치(47)과, 게이트 회로(52) 및 앤드 게이트(25)로 출력한다. 제1비교기(45)는 런테이블(43)로부터 출력하는 런랭스와 카운터(44)로부터 출력하는 카운트된 값이 동일하지 않는 동안에는 런등가신호 0을 출력한다. 제1비교기(45)로부터 출력하는 런등가신호 0에 의해, 레벨 테이블(42)로부터 출력되는 레벨에 대응하는 런랭스가 0이 아닌 경우, 래치(41)는 그 런랭스에 해당하는 클럭수만큼 래칭된 데이타를 유지한다. 래치(22) 역시 그 런랭스에 해당하는 클럭수만큼 래칭된 데이타를 계속 가지고 있게 된다. 그리고, 런등가신호가 0이면, 래치(26)로 공급되는 데이타 역시 0이 된다. 따라서, 배럴시프터들(18, 23)은 바로 이전 클럭이 들 때의 출력 데이타와 동일한 출력 데이타를 갖게 된다.
상태 신호와 블럭끝신호(EOB)가 동일한 경우, 제2비교기(51)의 출력은 카운터(44)를 클리어시킨다. 제2도의 장치는 카운터(44)의 클리어에 의한 새로운 블럭에 대하여 정상적으로 복호화를 수행할 수 있게 된다.
제2도의 장치는 상술한 과정을 반복하면서 비트 스트림상에 들어 있는 가변장 부호어들을 복호화한다. 따라서, 위에서 설명된 예로부터 해당 기술 분야의 숙련자에게는 제2도 가변장 복호기의 동작이 명백하게 될 것이다.
상술한 본 발명의 가변장 복호기는 영상 신호의 가변장 부호화에 의한 부호어들을 높은 신호 처리 주파수에서 가변장 복호화할 수 있다. 뿐만 아니라, 가변장 부호어에 대응하는 심볼을 발생하는 대신에 런랭스만큼의 데이타 영들(zeros)과 그것에 뒤따르는 레벨을 발생하므로써, 변환 부호화 및 가변장 부호화된 영상 신호를 HDTV 시스템에서 요구하는 신호 처리 주파수로 복호화할 수 있게 된다. 또한, 런등가신호에 따라 시스템의 동작이 지연되어야 하므로 신호 처리 주파수에 의해 제약되어 왔던 사용 가능한 하드웨어의 범위를 넓힐 수 있는 효과가 있다.

Claims (8)

  1. 일정한 클럭율로 발생하는 클럭에 근거하여 입력 비트 스트림 내의 각 가변장 부호어를 복호화하는 영상 신호를 위한 가변장 복호기에 있어서, 비트 스트림 내에 있는 적어도 가장 긴 길이의 가변장 부호어의 비트수 N의 길이를 갖는 N-비트의 시퀀스 내의 첫번째 비트 위치에서 시작하는 하나의 가변장 부호어에 대응하는 런랭스와 레벨을 발생하며, 상기 런랭스에 일치하는 갯수의 클럭들이 인가될 때까지 제2런등가 신호를 발생하며, 상기 런랭스에 일치하는 갯수의 클럭들이 인가되면 제1런등가 신호를 발생하고, 발생된 제2런등가 신호에 응답하여 상기 발생된 레벨을 저장하며 발생된 제1런등가 신호에 응답하여 상기 발생된 레벨을 출력하는 복호기; 저장하고 있는 N-비트의 시퀀스를 상기 복호기로 공급하도록 연결되며, 상기 복호기로부터 제1런등가 신호가 인가되는 동안의 각 클럭에서 N-비트의 입력 시퀀스를 저장하며, 제2런등가 신호가 인가되는 동안의 각 클럭에서는 저장된 N-비트의 시퀀스를 보유하고 있는 제1비트 저장 수단; 상기 제1비트 저장 수단으로 공급되는 N-비트의 시퀀스를 인가받아, 상기 복호기로부터 제1런등가 신호가 인가되는 동안의 각 클럭에 대하여 N-비트 시퀀스 내의 첫번째 비트 위치에서 시작하는 하나의 가변장 부호어에 대응하는 부호어길이를 발생하여 출력하는 부호어길이 발생부; 이전의 누적된 부호어길이와 상기 부호어길이 발생부로부터의 부호어길이를 가산하며 가산에 의한 결과를 비트수 N으로 나누고, 나눈 결과에 의한 나머지인 누적된 부호어길이를 출력하며 그 몫이 존재하면 캐리 신호를 발생하여 출력하는 누적 연산 수단; 입력 비트 스트림을 저장하며, 상기 누적 연산 수단으로부터의 캐리 신호에 응답하여 저장된 비트 스트림 내의 첫번째 비트 위치로부터의 N-비트의 시퀀스를 순차적으로 출력하는 버퍼; 상기 누적 연산 수단에서 출력하느 캐리 신호에 응답하여 상기 버퍼로부터 출력하는 적어도 연속하는 2N-비트의 시퀀스를 각 클럭에 대하여 저장하는 제2비트 저장 수단; 상기 누적 연산 수단으로부터의 캐리 신호 및 누적된 부호어길이에 응답하여, 상기 제2비트 저장 수단에 저장된 적어도 2N-비트의 시퀀스 중의 첫번째 비트 위치에서 시작하여 누적된 부호어길이만큼 시프트된 비트 위치에서 시작하는 N-비트의 시퀀스를 출력하는 시프터 수단; 상기 시프터 수단으로부터의 N-비트의 시퀀스를 각 클럭에 대하여 저장하는 제3비트 저장 수단; 상기 제1비트 저장 수단으로 공급되는 N-비트의 시퀀스를 각 클럭에 대하여 저장하는 제4비트 저장 수단; 및 상기 제4비트 저장 수단에 저장된 N-비트의 시퀀스가 상기 제3비트 저장 수단에 저장된 N-비트의 시퀀스보다 앞서도록 구성된 2N-비트의 시퀀스 중의 첫번째 비트 위치로부터 상기 부호어길이 발생부로부터의 부호어길이만큼 시프트된 비트 위치에 첫번째 비트를 갖는 N-비트의 시퀀스를 상기 제1비트 저장 수단과 상기 제4비트 저장수단, 및 상기 부호어길이 발생부로 출력하는 배럴시프터를 포함하는 가변장 복호기.
  2. 제1항에 있어서, 상기 복호기는 상기 제1비트 저장 수단으로부터의 N-비트의 시퀀스 중의 첫번째 비트 위치에서 시작하는 하나의 가변장 부호어에 대응하는 레벨을 출력하는 레벨 테이블; 상기 제1비트 저장 수단으로부터의 N-비트의 시퀀스를 인가받아 상기 레벨 테이블로부터 출력되는 레벨에 대응하는 런랭스를 출력하는 런테이블; 상기 런테이블로부터의 런랭스에 일치하는 클럭들이 인가될 때까지 제2런등가 신호를 발생하며 상기 런랭스에 일치하는 클럭들이 인가되면 제1런등가 신호를 발생하는 비교부; 및 상기 레벨 테이블로부터의 레벨을 상기 제2런등가 신호가 인가되는 동안은 출력하지 않으며 상기 제1런등가 신호가 인가되면 출력하는 출력부를 포함하는 가변장 복호기.
  3. 제2항에 있어서, 상기 비교부는 각 클럭을 카운트하여 카운트된 값을 출력하는 카운터; 및 상기 런테이블로부터의 런랭스와 상기 카운터로부터의 카운트된 값을 비교하여 두 값이 일치하면 제1런등가 신호를 발생하며 두 값이 일치하지 않으면 제2런등가 신호를 발생하고, 발생된 제1런등가 신호를 상기 카운터의 클리어 신호로 공급하는 비교기를 포함하는 가변장 복호기.
  4. 제3항에 있어서, 상기 비교기는 초기 상태에서는 5클럭 기간 동안 제1런등가 신호를 발생하는 것을 특징으로 하는 가변장 복호기.
  5. 제2항에 있어서, 상기 출력부는 상기 레벨테이블로부터의 레벨을 각 클럭에서 저장하는 제1래치; 상기 비교부로부터의 제1 및 제2런등가 신호를 각 클럭에서 저장하는 제2래치; 및 상기 제1래치로부터 공급되는 레벨을 제1런등가 신호가 인가되는 동안의 각 클럭에서 저장 및 출력하며, 제2런등가 신호가 인가되는 동안의 각 클럭에서는 데이타 값 영을 출력하는 제3래치를 포함하는 가변장 복호기.
  6. 제1항에 있어서, 상기 부호어길이 발생부는 상기 배럴시프터로부터의 N-비트 시퀀스 내의 첫번째 비트 위치에서 시작하는 하나의 가변장 부호어에 대응하는 부호어길이를 출력하는 부호어길이 테이블; 상기 부호어길이 테이블로부터의 부호어길이를 상기 제1런등가 신호가 인가되는 동안 출력하는 게이트 회로; 및 상기 게이트 회로부터의 부호어길이를 각 클럭에서 저장하는 제4래치를 포함하는 가변장 복호기.
  7. 제6항에 있어서, 상기 부호어길이 테이블은 입력되는 상태 신호에 응답하여 초기 상태로부터의 5클럭 구간 동안에 비트 스트림 상의 처음의 N-비트의 시퀀스가 상기 제4비트 저장 수단에 저장되도록 하는 부호어길이를 발생하는 것을 특징으로 하는 가변장 복호기.
  8. 제 1항에 있어서, 상기 제2비트 저장 수단은 상기 버퍼로부터 출력되는 N-비트의 시퀀스를 캐리 신호에 응답하여 각 클럭에서 저장하는 제5래치; 상기 제5래치로부터의 N-비트의 시퀀스를 캐리 신호에 응답하여 각 클럭에서 저장하는 제6래치; 및 상기 제6래치로부터의 N-비트의 시퀀스를 캐리 신호에 응답하여 각 클럭에서 저장하는 제7래치를 포함하며, 상기 시프터 수단은 상기 누적 연산 수단으로부터 캐리 신호가 인가되면 상기 제5래치로부터의 N-비트의 시퀀스를 출력하며, 캐리 신호가 인가되지 않으면 상기 제6래치로부터의 N-비트의 시퀀스를 출력하는 제1멀티플렉서; 상기 누적 연산 수단으로부터 캐리 신호가 인가되면 상기 제6래치로부터의 N-비트의 시퀀스를 출력하며, 캐리 신호가 인가되지 않으면 상기 제7래치로부터의 N-비트의 시퀀스를 출력하는 제2멀티플렉서; 및 상기 제2멀티플렉서로부터의 N-비트의 시퀀스가 상기 제1멀티플렉서로부터의 N-비트의 시퀀스보다 앞서도록 구성된 2N-비트의 시퀀스를 상기 제1및 제2멀티플렉서들로부터 인가받아, 2N-비트의 시퀀스 중의 첫번째 비트 위치에서 상기 누적 연산 수단으로부터의 누적된 부호어길이 만큼 시프트된 비트 위치에서 시작하는 N-비트의 시퀀스를 출력하는 배럴시프터를 포함하는 가변장 복호기.
KR1019940009922A 1994-05-06 1994-05-06 영상신호를 위한 가변장복호기 KR0152032B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1019940009922A KR0152032B1 (ko) 1994-05-06 1994-05-06 영상신호를 위한 가변장복호기
JP10865695A JP3032134B2 (ja) 1994-05-06 1995-05-02 映像信号のための可変長復号器
CN95106522A CN1085009C (zh) 1994-05-06 1995-05-05 图像信号的可变长度译码器
EP19950303102 EP0681404A3 (en) 1994-05-06 1995-05-05 Decoder for words of variable length.
US08/436,866 US5696506A (en) 1994-05-06 1995-05-08 Apparatus for variable-length decoding image signals using a run equivalent signal

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019940009922A KR0152032B1 (ko) 1994-05-06 1994-05-06 영상신호를 위한 가변장복호기

Publications (2)

Publication Number Publication Date
KR950035400A KR950035400A (ko) 1995-12-30
KR0152032B1 true KR0152032B1 (ko) 1998-10-15

Family

ID=19382582

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019940009922A KR0152032B1 (ko) 1994-05-06 1994-05-06 영상신호를 위한 가변장복호기

Country Status (5)

Country Link
US (1) US5696506A (ko)
EP (1) EP0681404A3 (ko)
JP (1) JP3032134B2 (ko)
KR (1) KR0152032B1 (ko)
CN (1) CN1085009C (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0178201B1 (ko) * 1995-08-31 1999-05-01 배순훈 가변 길이 복호화 장치
KR100203246B1 (ko) * 1995-10-19 1999-06-15 윤종용 고속의 가변장복호화장치
US5835035A (en) * 1995-12-28 1998-11-10 Philips Electronics North America Corporation High performance variable length decoder with two-word bit stream segmentation and related method
US5668548A (en) * 1995-12-28 1997-09-16 Philips Electronics North America Corp. High performance variable length decoder with enhanced throughput due to tagging of the input bit stream and parallel processing of contiguous code words
KR100192269B1 (ko) * 1996-03-25 1999-06-15 구자홍 가변길이 코드 디코더
CN100539695C (zh) * 1996-05-28 2009-09-09 松下电器产业株式会社 图像预测编码/解码装置和方法以及记录媒体
JP3520670B2 (ja) * 1996-06-28 2004-04-19 ソニー株式会社 可変長符号処理装置および画像処理装置
DE19707974C2 (de) * 1997-02-27 1999-01-14 Siemens Ag Schaltungsanordnung zur Dekodierung von Codes variabler Länge
JPH11215008A (ja) * 1998-01-27 1999-08-06 Oki Electric Ind Co Ltd 復号回路
US6215424B1 (en) * 1998-12-16 2001-04-10 Thomson Licensing S.A. System for variable length codeword processing suitable for video and other applications
JP4559652B2 (ja) * 2000-03-24 2010-10-13 パナソニック株式会社 可変長復号化回路
TWI245571B (en) * 2004-11-05 2005-12-11 Ali Corp Variable-length decoding apparatus and method for the image format of a digital video camera
CN100466748C (zh) * 2004-11-12 2009-03-04 扬智科技股份有限公司 数字摄影机影像格式的可变长度解码装置及方法
KR20090117580A (ko) * 2008-05-08 2009-11-12 엘지전자 주식회사 부호어의 생성 방법
CN105718402B (zh) * 2016-01-13 2021-04-20 福州瑞芯微电子股份有限公司 可编程时序发生器

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5060242A (en) * 1989-02-24 1991-10-22 General Electric Company Non-destructive lossless image coder
JP3013381B2 (ja) * 1990-03-28 2000-02-28 ソニー株式会社 可変長データの復号装置
US5173695A (en) * 1990-06-29 1992-12-22 Bell Communications Research, Inc. High-speed flexible variable-length-code decoder
US5208593A (en) * 1991-07-30 1993-05-04 Lsi Logic Corporation Method and structure for decoding Huffman codes using leading ones detection
US5181031A (en) * 1991-07-30 1993-01-19 Lsi Logic Corporation Method and apparatus for decoding huffman codes by detecting a special class
GB2260458B (en) * 1991-10-04 1995-03-22 Sony Broadcast & Communication Data decoder
JPH05199122A (ja) * 1992-01-20 1993-08-06 Canon Inc 復号回路
US5233348A (en) * 1992-03-26 1993-08-03 General Instrument Corporation Variable length code word decoder for use in digital communication systems
US5369405A (en) * 1992-05-19 1994-11-29 Goldstar Co., Ltd. Coefficient generation apparatus for variable length decoder
US5245338A (en) * 1992-06-04 1993-09-14 Bell Communications Research, Inc. High-speed variable-length decoder
KR960003452B1 (ko) * 1992-12-31 1996-03-13 대우전자주식회사 가변길이부호 복호장치

Also Published As

Publication number Publication date
JPH0879747A (ja) 1996-03-22
EP0681404A2 (en) 1995-11-08
US5696506A (en) 1997-12-09
JP3032134B2 (ja) 2000-04-10
EP0681404A3 (en) 1996-10-16
KR950035400A (ko) 1995-12-30
CN1119813A (zh) 1996-04-03
CN1085009C (zh) 2002-05-15

Similar Documents

Publication Publication Date Title
US5627917A (en) Variable length coding system having a zig-zag FIFO for selectively storing each data coefficient and zero-run count
KR0152032B1 (ko) 영상신호를 위한 가변장복호기
KR100324833B1 (ko) 가변길이부호디코더
US5436626A (en) Variable-length codeword encoder
US6043765A (en) Method and apparatus for performing a parallel speculative Huffman decoding using both partial and full decoders
JP3294026B2 (ja) 高速可変長復号化装置
US5892791A (en) High-speed variable length decoding apparatus
US5706001A (en) Run-length decoding apparatus for use in a video signal decoding system
KR0178201B1 (ko) 가변 길이 복호화 장치
KR0152038B1 (ko) 상대 주소를 이용한 가변장 복호화 장치
US7504970B2 (en) Data encoder
US5781135A (en) High speed variable length code decoder
US5309156A (en) Variable-length code decoding device
KR960003452B1 (ko) 가변길이부호 복호장치
KR19980702418A (ko) 가변 길이 디코더
KR100466455B1 (ko) 부호변환기와가변길이부호복호장치및복호방법
JPH08223055A (ja) 可変長コードデコーダ
KR0152035B1 (ko) 가변장복호화방법 및 그 장치
JP2003174365A (ja) 復号化装置及びその方法
KR100207428B1 (ko) 허프만 코드 변환에 적응적인 고속 가변장 복호화 장치 및 방법
EP0499225B1 (en) Variable-length code decoding device
JP2934603B2 (ja) 可変長さコードの復号化方法及びその装置
KR960011111B1 (ko) 디지탈 영상신호의 복호화장치에 있어서의 가변길이 복호화기
KR0125126B1 (ko) 고속 가변길이부호 복호화 장치
KR0125125B1 (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: 20030530

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee