KR100304872B1 - 가변길이코드디코더. - Google Patents
가변길이코드디코더. Download PDFInfo
- Publication number
- KR100304872B1 KR100304872B1 KR1019980011441A KR19980011441A KR100304872B1 KR 100304872 B1 KR100304872 B1 KR 100304872B1 KR 1019980011441 A KR1019980011441 A KR 1019980011441A KR 19980011441 A KR19980011441 A KR 19980011441A KR 100304872 B1 KR100304872 B1 KR 100304872B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- output
- latch
- outputting
- unit
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods 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/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods 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
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
본 발명은 압축, 부호화(coding)된 영상 및 음성 데이타를 효과적으로 복호화(decoding)하도록 하는 디코딩장치에 관한 것으로, 특히 가변 길이 코드(VLC ; Variable Length Code)로 압축된 영상데이타를 디코딩하는 가변길이 코드 디코더(VLD ; Variable Length code Decoder)에 관한 것이다.
MPEG1, MPEG2 또는 HDTV와 같은 시스템에서 주변회로와 연결되어 하나의 기능블록을 구성하기 위한 가변길이 코드 디코더는 주변회로의 복잡정도에 따라 내부의 최장 지연시간 뿐만 아니라 주변 블록과의 연결부에 존재하는 최장시간을 고려해야하는 바,
본 발명에서는 외부 최장 지연시간 경로에서 배럴 쉬프터가 제외되도록 하여, 주변회로 블록과의 결합시 가변길이 코드 디코더와 주변회로의 연결부분에 존재하는 최장 시간을 줄일 수 있도록 하며, 한가지 종류의 배럴 쉬프터를 디코딩부와 인터페이스부에 직렬로 연결(cascade) 구성하므로써, 회로구현이 용이하게 이루어질 수 있도록 한, 빠른 처리속도를 갖는 가변길이 코드 디코더를 제공하고자 하는 것이다.
Description
본 발명은 압축, 부호화(coding)된 영상 및 음성 데이타를 효과적으로 복호화(decoding)하도록 하는 디코딩장치에 관한 것으로, 특히 가변 길이 코드(VLC ; Variable Length Code)로 압축된 영상데이타를 디코딩하는 가변길이 코드 디코더(VLD ; Variable Length code Decoder)에 관한 것이다.
영상, 음성 및 데이타를 효과적으로 저장 또는 전송하기 위하여서 여러 데이타 압축기술 중의 하나로 가변 길이 코드가 사용된다.
상기 가변 길이 코드는 저장 또는 전송해야 할 데이타의 발생 빈도에 따라 발생 빈도가 높은 데이타에는 가능한 작은 길이의 코드를 할당하고, 발생빈도가 낮은 데이타에는 상대적으로 긴 길이의 코드를 할당하여 전체적인 데이타의 양을 줄이는 방법이다.
이와 같은 방법으로 적당한 코드와 할당되면, 평균 코드 길이는 원 데이타의 평균 코드 길이보다 짧아진다.
따라서, 데이타의 통계적 특성이 알려진 경우에 손실없이 효과적으로 부호화하는데 사용된다.
이러한 가변 길이 코드는 현재 많은 응용 분야에 적용되고 있고, 대표적인 예로는 동영상 압축 기술(MPEG1, MPEG2 ; Motion Picture Expert Group)규격과 이를 채용한 고선명 티브이(HDTV ; High Definition Television), 디지털 다기능 디스크(DVD) 등이다.
이와 같은 응용분야에 있어서 많은 데이타 양을 실시간에 처리하기 위하여 고속으로 처리할 수 있는 가변 길이 코드 디코더를 필요로 하게 된다.
점차 빠른 속도의 가변 길이 코드 디코더가 필요하게 됨에 따라 기존의 트리-베이스드 아키텍쳐(Tree-Based Architecture)보다는 프로그래머블 로직 어레이-베이스드 아키텍쳐(PLA-Based Architecture)를 이용한 구조들이 제안되었다.
이들은 가변 길이 코드 디코더 내부의 최장 지연시간을 줄이는데 효과적인 구조를 가지고 있다.
그러나, 가변 길이 코드 디코더는 주변회로와 함께 연결되어 하나의 기능 블록을 구성하는게 일반적인 바,
MPEG1, MPEG2 또는 HDTV 시스템에서 복잡한 가변 길이 코드 디코더가 주변회로와 함께 연결되어 하나의 기능 블록을 형성하게 될 경우 가변 길이 코드 디코더와 주변 블록과의 연결회로에 존재하는 시간 지연이 내부 최장 지연시간보다 커지게 된다.
따라서, MPEG1, MPEG2 또는 HDTV와 같은 시스템에서 주변회로와 연결되어 하나의 기능 블록을 구성하기 위한 가변 길이 코드 디코더는 주변회로의 복잡정도에 따라 내부의 최장 지연시간 뿐만 아니라 주변 블록과의 연결부에 존재하는 최장시간을 고려해야 한다.
본 발명에서는 이와 같은 점을 감안한 가변 길이 코드 디코더를 제안하고자 하는 것이다.
도 1은 종래 가변 길이 코드 디코더의 구성을 나타낸 블록도로써, 도 1을 참조하여 이하 종래 가변 길이 코드 디코더의 구성 및 작용을 설명하면 다음과 같다.
데이타 채널을 통해 수신된 가변 길이 워드의 직렬 비트스트림(bit stream)을 일시 저장, 출력하는 외부 버퍼 메모리(10)와,
입력되는 연속적인 가변 길이 코드 워드를 계속적인 스트림으로 디코더하고, 리드신호에 따라 디코딩된 고정길이 코드 워드를 대응 출력하는 디코더부(30)와,
상기 외부 버퍼 메모리(10)와 디코더를 인터페이스하여 외부 버퍼 메모리로부터 출력되는 가변 길이 코드 워드를 상기 디코더부에 공급하는 인터페이스부(20)로 구성되며,
상기 인터페이스부(20)는 외부 버퍼 메모리(10)로부터 출력되는 데이타를 일시 저장 출력하기 위한 2개의 래치(21, 22)와, 디코더부(30)로부터 출력되는 코드워드길이와 이전에 디코드된 코드 워드의 누적값을 합산하여 최대 코드 워드길이를 초과하게 될 경우 캐리(carry)를 발생시키는 가산기(23)와, 가산기(23)에서 합산되는 코드 워드 길이를 저장하는 래치(24)와, 상기 래치(21, 22) 및 외부 버퍼 메모리(10)로부터 데이타를 입력받아 상기 가산기에서 발생되는 코드 워드 길이의 누적값에 따라서 데이타를 쉬프트시켜 디코더부(30)로 출력하는 배럴 쉬프터(barrel shifter)(25)를 포함하여 구성되며,
상기 디코더부(30)는 상기 인터페이스부(20)의 배럴 쉬프터(25)로부터 출력되는 데이타를 일시 저장하는 제1래치(31)와, 프로그램어블(PLA ; Programable)이 가능하며, 코드 워드의 길이 정보 및 입력되는 연속적인 가변길이 코드 워드를 디코딩하여 계속적인 스트림으로 출력하는 VLC 테이블(32)과, 이전에 디코딩된 코드 워드의 길이를 저장하는 제3래치(33)와, 제3래치(33)로부터 전달되는 이전의 디코딩된 코드 워드의 길이정보에 따라서 제1래치(31) 및 제2래치(34)로부터 출력되는 데이타를 쉬프트하여 VLC 테이블(32)로 출력하는 배럴 쉬프터(35)로 구성되며, 상기 제2래치(34)의 입력은 상기 배럴 쉬프터(35)의 출력으로써 이루어짐을 특징으로 한다.
이와 같은 구성을 특징으로 하는 종래 가변 길이 코드 디코더의 동작을 설명하면 다음과 같다.
외부 버퍼 메모리(10)에서는 데이타 채널을 통해 수신된 가변 길이 코드 워드의 직렬 비트스트림을 저장하게 되는데, 이와 같은 가변 길이 코드 워드는 디코더부(30)로부터 전달되는 코드 워드 길이 정보에 따라서, 인터페이스부(20)를 통하여 디코더부(30)로 전달되고, 디코더부(30)에서는 이와 같이 입력되는 연속적인 가변 길이 코드 워드를 계속적인 스트림으로 디코드하게 된다.
상기 디코더부(30)의 VLC 테이블(32)은 미확인 가변 길이 코드 워드의 제1비트로 시작하는 비트의 입력 세그먼트를 디코딩하여 코드 워드 길이와 고정된 길이의 디코드된 워드 출력을 제공하고, 테이블 룩업 메모리(table look-up memory)를 포함하여 구성되는 바,
상기 디코더부(30)의 배럴 쉬프터(35)의 출력은 VLC 테이블(32)의 테이블 룩업 메모리에 디코딩된 입력 데이타로써 제공되며, 이와 같은 배럴 쉬프터(35)는 제3래치(33)에 저장되어 있는 이전에 디코드된 코드 워드 길이에 의해 제어된다.
이와 같은 배럴 쉬프터(35)의 입력은 제1래치(31) 및 제2래치(34)의 출력에 의해 이루어지게 된다.
이때, 상기 제1래치(31) 및 제2래치(34) 각각은 최대 가변 길이 코드 워드에 적어도 동일한 비트를 저장할 수 있는 크기를 갖는다.
상기 배럴 쉬프터(35)의 출력은 VLC 테이블(32)의 테이블 룩 업 메모리에 연결되며, 인터페이스(20)로부터 제1래치(31)에 입력 데이타가 제공되는 동안은 제2래치(34)로 연결된다.
상기 배럴 쉬프터(35)는 매 클럭마다 제1래치(31)와 제2래치(34)에 저장되어 있는 최대 코드 워드의 2배만큼의 연속된 비트들 중 디코딩될 최대 코드 워드 길이의 비트를 출력으로 발생시킨다.
상기 VLC 테이블(32)에서는 테이블 룩 업 메모리에서 상기 배럴 쉬프터(35)의 출력에 대한 코드 워드 길이를 제3래치(33)에 출력하고, 디코딩된 워드를 출력하게 된다.
제3래치(33)에서는 상기 VLC 테이블(32)로부터 입력되어 저장된 이전 코드 워드의 길이를 다음 디코드되어질 코드 워드의 길이 정보로서, 제공하게 된다.
즉, 배럴 쉬프터(35)의 출력은 제3래치(33)에서 출력되는 이전 코드 워드의 길이만큼 쉬프트되어, 항상 출력이 시작이 디코드될 워드의 첫 번째 비트와 일치하도록 하는 것이다.
상기 제2래치(34) 내의 비트가 모든 클럭에서 변환되기 때문에 제1래치(31)는 인터페이스부(20)로부터 각각의 사이클에서 다시 채워져, 이전에 디코드된 코드 워드가 첫 비트로 시작하는 연속된 비트 흐름이 상기 배럴 쉬프터(35)에 나타내게 된다.
상기 제1래치(31)의 입력은 인터페이스부(20)의 배럴 쉬프터(25)의 출력으로부터 이루어지게 되는 바,
인터페이스부(20)의 배럴 쉬프터(25)의 출력은 다음과 같이 이루어지게 된다.
상기 배럴 쉬프터(25)로의 입력은 최대 코드 워드 길이를 갖는 2개의 연속된 래치(21, 22)와 외부 버퍼 메모리(10)로부터 이루어지게 된다.
이때, 상기 래치(21)는 외부 버퍼 메모리(10)로부터 데이타를 제공받으며, 이후 래치(22)는 래치(21)에 저장되어 있는 데이타를 저장, 출력하게 되고, 두 개의 래치(21, 22)에서 디코드되는 코드 워드 길이는 최대의 코드 워드 길이와 같다.
배럴 쉬프터(25)의 출력은 래치(24)에 저장되어 있는 이전에 디코드된 코드 워드 길이의 누적값과 디코더부(30)의 래치(33)에서 출력되는 이전에 디코드된 코드 워드 길이와 합산되는 가산기(23)의 출력에 의해 제어된다.
즉, 배럴 쉬프터(25)의 출력은 누적된 코드 워드 길이에 따라 쉬프트되어 상기 디코더부(30)의 배럴 쉬프터(35)의 출력과 연속된 비트를 이루게 되는 것이다.
이때, 가산기(23)에서 누적된 코드 워드의 길이가 최대 코드 워드 길이를 초과하게 되는 경우는 즉, 캐리가 발생하게 되며, 래치(22) 내에 저장되어 있는 모든 비트가 디코더부(30)로 이동되었다는 것을 의미한다.
다시 말하면, 캐리가 발생하면, 래치(21)의 내용은 래치(22)로 이동하게 되고, 외부 버퍼 메모리(10)의 출력은 래치(21)로 이동하게 되며, 이와 동시에 새로운 데이타 세그먼트가 외부 버퍼 메모리(10)로부터 검색된다.
이와 같이 VLC 테이블(32)에서 출력되는 코드 워드의 길이정보에 따라서, 외부 버퍼 메모리(10)로부터 순차적으로 전달되는 데이타를 배럴 쉬프터(25)에서는 쉬프트하여 디코더부(30)로 전달하게 되고, 이에 따라서, 디코더부(30)에서는 상기에서 설명한 바와 같은 과정으로 가변 길이 코드 워드를 디코드하게 되는 것이다.
이때, 상기 인터페이스부(20)는 디코더부(30)의 래치(31)에 데이타 입력을 제공하나 최장 지연시간에는 포함되지 않는다.
그러나, 보통 MPEG1, MPEG2 또는 HDTV 시스템을 구현하게 될 때, 앞서 설명한 바와 같이, 가변 길이 코드 디코더는 주변회로와 함께 연결되어 동작하게 되는바, 상기한 바와 같은 종래 가변 길이 코드 디코더는 VLC 테이블의 출력이 바로 다른 기능 블록의 입력 버퍼에 저장될 수도 있으나, 대부분의 경우에 주변회로의 입력으로 사용되거나, 다른 기능 블록에서 사용하기에 적절한 형태로 변형된 후에 연결된 블록의 입력 버퍼에 저장된다.
따라서, 이러한 경우 주변회로의 복잡도가 증가하게 되면, 종래 기술에 따른 가변 길이 코드 디코더는 가변 길이 코드 디코더의 내부보다는 가변길이 코드 디코더와 주변회로를 연결하는 부분에서 최장 지연시간이 생기게 되어 전체 시스템의 속도가 저하되는 문제점이 발생된다.
또한, 인터페이스부의 배럴 쉬프터가 디코더부의 배럴 쉬프터보다 더 많은 데이타 비트를 처리하여야 하므로써, 복잡하고 그 크기가 커지게 되므로, 회로 구현시 어려움을 가중시키게 된다.
본 발명에서는 이와 같은 문제점을 해결하기 위하여 외부 최장 지연시간 경로에서 배럴 쉬프터가 제외되도록 하여, 주변회로 블록과의 결합시 가변 길이 코드 디코더와 주변회로의 연결부분에 존재하는 최장 시간을 줄일 수 있도록 하며, 한가지 종류의 배럴 쉬프터를 디코딩부와 인터페이스부에 직렬로 연결(cascade) 구성하므로써, 회로구현이 용이하게 이루어질 수 있으며, 빠른 처리속도를 갖는 가변 길이 코드 디코더를 제공하고자 한 것이다.
도 1은 종래 가변 길이 코드 디코더의 블록구성도.
도 2는 본 발명 가변 길이 코드 디코더의 블록구성도.
도 3은 버퍼로 입력되는 데이타 비트스트림의 일예를 나타낸 도면.
도 4는 상기 도 3에 따른 데이타의 입력으로, 도 2의 각 부에서 출력되는 데이타의 일예를 나타낸 도표.
이와 같은 목적을 갖는 본 발명 가변 길이 코드 디코더는 입력되는 데이타를 일시적으로 저장한 후 출력하는 수단과, 상기 일시 저장출력수단의 출력데이타를선택 출력하는 수단과, 상기 선택출력수단의 출력 데이타를 제어신호에 따라 쉬프트 한 후 일정 비트 수만큼 데이타를 출력하는 수단과, 상기 수단으로부터 일정 비트 수만큼 출력되는 데이타를 일시적으로 저장한 후 출력하는 수단과, 상기 수단으로부터 출력되는 데이타를 디코딩하여, 코드 워드를 접속되는 주변회로로 출력하고 디코딩된 코드 워드의 비트 길이값을 출력하는 수단과, 상기 수단으로부터 검출되는 코드 워드의 비트길이값 정보에 따라서 상기 각 수단을 제어하여 데이타의 저장 및 선택 출력, 데이타 비트의 쉬프량에 대한 제어신호를 출력하는 제어수단을 포함하여 구성됨을 특징으로 한다.
이와 같은 구성을 특징으로 하는 본 발명 가변 길이 코드 디코더의 첨부된 도 2에 도시된 그 실시예로써, 그 구성 및 작용을 설명하면 다음과 같다.
입력되는 비트스트림 데이타를 16 비트 수만큼 병렬화하여 저장 및 리드 신호(R)에 따라 출력하는 버퍼(100)와, 버퍼(100)로부터 출력되는 데이타를 일시 저장한 후 출력하는 제1래치부(200)와, 제1래치부(200)의 출력 데이타를 선택 출력하는 멀티플렉스(multiplex)부(300)와, 멀티플렉스부(300)의 출력 데이타를 제어신호에 따라 쉬프트하여 일정 비트 수만큼의 데이타를 출력하는 배럴 쉬프트부(400)와, 배럴 쉬프트부(400)의 출력 데이타를 일시 저장한 후 디코딩 테이블(600) 및 상기 배럴 쉬프트부(400)에 각각 출력하는 제2래치부(500)와, 제2래치부(500)의 출력 데이타를 디코딩하여 디코딩된 코드 워드와 비트 길이(L)를 출력하는 디코딩 테이블(600)과, 디코딩 테이블에서 출력된 코드 워드의 비트길이(L)값과 이전에 누적되어 있던 코드 워드의 비트길이값을 더하여 저장 및 이에 따른 버퍼(100) 및제1래치부(200)와 멀티플렉스부(300) 및 배럴 쉬프트부(400)의 제어신호를 출력하는 제어부(700)를 포함하여 구성됨을 특징으로 하며,
상기 제1래치부(200)는 상기 버퍼(100)로부터 출력되는 데이타를 상기 제어부(700)로부터 출력되는 로드신호(Ld)에 따라 일시 저장한 후, 저장된 데이타를 출력하는 제1래치(201)와, 제1래치(201)의 출력 데이타를 일시 저장한 후, 저장된 데이타를 출력하는 제2래치(202)를 포함하여 구성된다.
상기 멀티플렉스부(300)는 제어부(700)로부터 출력되는 리드신호(R)를 선택제어신호로 하여 제1래치(301) 및 상기 버퍼(100)로부터 출력되는 데이타를 선택하여 배럴 쉬프트부(400)의 하위 16비트로 출력하는 제1멀티플렉서(301)와, 제어부(700)로부터 출력되는 리드신호(R)를 선택 제어신호로 하여 상기 제1래치(301) 및 제2래치(302)의 출력 데이타를 선택하여 배럴 쉬프트(400)의 상위 16비트로 출력하는 제2멀티플렉서(302)를 포함하여 구성된다.
상기 배럴 쉬프트부(400)는 상기 제1멀티플렉서(301) 및 제2멀티플렉서(302)의 출력 데이타를 입력으로 하여 이전에 누적되어 있는 디코드된 코드 워드의 길이값을 제어신호로 하여 그 값만큼 입력된 데이타를 쉬프트하여 출력하는 제1배럴 쉬프터(401)와, 제1배럴 쉬프터(401)의 출력을 하위 16비트 입력으로 받고, 상기 제2래치부(500)의 출력을 상위 16비트 입력으로 받아 상기 디코딩 테이블(600)에서 출력되는 코드 워드 비트 길이값(L) 만큼을 쉬프트시켜 제2래치부(500)로 출력하는 제2배럴 쉬프터(402)를 포함하여 구성된다.
상기 디코딩 테이블(600)은 상기 제2래치부(500)로부터 출력되는 데이타를디코딩하여 검출된 가변길이 코드를 확정길이 코드로 변한해주는 심볼 디코더(symbol docoder)(601)와, 검출된 가변 길이 코드의 비트 길이값(L)을 상기 제어부(700)로 출력하는 랭스 디코더(length decoder)(602)를 포함하여 구성된다.
상기 제어부(700)는 상기 디코딩 테이블(600)의 랭스 디코더(602)로부터 출력되는 현재 디코드되는 코드 워드의 비트 길이값(L)과 이전에 누적되어 있는 비트길이값을 합산하는 합산기(701)와, 합산기(701)에서 합산된 코드 워드의 비트 길이값 즉, 바로 전 클럭까지 디코딩된 코드 워드의 비트값들의 합을 저장하고, 이를 상기 제1배럴 쉬프터(401)의 쉬프팅 제어신호로 출력하는 누적값 레지스터(702)와, 상기 합산기(701)의 출력중 캐리신호(C)가 발생하게 될 때, 발생되는 캐리신호를 일시 저장하고 있다가 이후, 다음 클럭에서 리드신호(R)를 출력하게 되는 캐리 레지스터(703)를 포함하여 구성된다.
이와 같은 구성을 갖는 본 발명의 실시예에 있어서는 16비트의 데이타로 정렬된 데이타의 저장 및 출력을 한예로 한 것으로서, 그 비트수는 여기에 제한되어지지 않으며, 이하 첨부된 도면을 참조하여 그 작용을 설명하면 다음과 같다.
먼저, 상기 버퍼(100)에 입력되는 가변 길이 코드로 이루어진 비트스트림 데이타는 버퍼(100)에서 한번에 16비트씩 차례대로 출력된다.
여기서, 상기 버퍼(100)에 입력되는 가변 길이 비트스트림을 구성하고 있는 최장 가변 길이 코드 워드는 16비트보다 크거나 같다.
이후, 상기 버퍼(100)로부터 출력되는 데이타는 제1래치부(200)의 각 제1래치(201) 및 제2래치(202)를 거쳐 멀티플렉스부(300)에 입력되며,멀티플렉스부(300)의 제1멀티플렉서(301) 및 제2멀티플렉서(302)를 통해 배럴 쉬프트(400)의 상하위 각각 16비트씩 32비트의 데이타 입력을 제공하게 된다.
배럴 쉬프트(400)의 제1배럴 쉬프트(401)는 제1멀티플렉서(301)를 통해 하위 16비트를, 제2멀티플렉서(302)를 통해 상기 16비트를 입력받아 제어부(700)의 제어신호를 입력으로 하여 입력받은 데이타를 쉬프팅시켜 제2배럴 쉬프터(402)로 출력하게 된다.
제2배럴 쉬프터(402)에서는 상기 제1배럴 쉬프터(401)로부터 입력되는 데이타를 하위입력으로 하고, 이후 제2래치부(500)의 출력을 상위입력으로 하여 입력 데이타를 쉬프팅하여 디코딩 테이블(600)로 출력하게 된다.
이때, 제2배럴 쉬프터(402)에서 쉬프트되는 데이타양은 디코딩 테이블(600)의 랭스 디코더(602)의 출력에 의해 결정된다.
제2배럴 쉬프터(402)에서 출력되는 데이타는 제2래치부(500)를 통해 디코딩 테이블(600)로 전달된다.
디코딩 테이블(600)에서는 제2래치부(500)를 통해 입력되는 데이타를 디코딩하게 되는데, 심볼 디코더(601)에 저장된 코드 워드 비트 패턴이 입력되는 데이타의 비트의 순서와 일치할 때 코드 워드는 검출된다.
이때, 랭스 디코더(602)는 심볼 디코더(601)에서 검출되는 가변 길이 코드의 길이값(L)을 제어부(700)로 출력하게 된다.
이와 같이 랭스 디코더(602)에서 출력되는 가변 길이 코드 길이값(L)은 앞서의 제2배럴 쉬프터(402)의 쉬프트량 제어신호로 사용되며, 또한 합산기(701)로 입력된다.
합산기(701)에서는 랭스 디코더(602)로부터 출력된 현재 디코딩된 코드 워드의 길이값(L)과 누적값 레지스터(702)에 저장되어 있는 이전 클럭까지 누적 저장된 코드 워드의 길이값을 합산하여 누적값 레지스터(702)에 저장하게 된다.
이와 같이 누적값 레지스터(702)에 저장된 현재까지의 코드 워드의 길이값의 누적값은 이후 제1배럴 쉬프터(401)의 쉬프트량 제어신호로 사용된다.
여기서, 상기 합산기(701)에서 발생되는 캐리신호(C)는 캐리 레지스터(703)에 저장되어 버퍼(100)의 리드신호(R) 및 래치부(200)의 로드(load)신호 및 멀티플렉스부(300)의 선택신호로 사용되어진다.
상기 캐리신호(C)가 "0" 이면 제1멀티플렉서(301) 및 제2멀티플렉서(302)는 입력단(0)을 선택하게 되고, 캐리신호(C)가 "1" 이면 제1멀티플렉서(301) 및 제2멀티플렉서(302)는 입력단(1)을 선택하게 된다.
즉, 도면에 도시된 바와 같이, 캐리신호(C)가 "0" 일 경우에는 제1멀티플렉서(301)에서는 제1래치(201)의 출력 데이타를 제1배럴 쉬프터(301)의 하위 데이타로 출력하고, 제2멀티플렉서(302)는 제2래치(202)의 출력 데이타를 제1배럴 쉬프터(301)의 상위 데이타로 출력하게 된다.
반대로 캐리신호(C)가 "1" 경우에는 제1멀티플렉서(301)에서는 버퍼(100)로부터 출력되는 데이타를 제1배럴 쉬프터(301)의 하위 데이타로 출력하고, 제2멀티플렉서(302)는 제1래치(201)의 출력 데이타를 제1배럴 쉬프터(301)의 상위 데이타로 출력하게 된다.
이와 같이 캐리신호(C)가 1일 경우에는 버퍼(100)에서 제1래치(201)로, 제1래치(201)에서 제2래치(202)로 데이타가 이동하는 것이다.
도 3은 입력되는 비트 스트림의 일예를 나타낸 것이며, 상기 도3에 따른 데이타의 입력으로, 도 2의 각 부에서 출력되는 데이타의 일예를 도 4에 도표로 나타내었다.
이와 같은 예를 참조하여 데이타의 이동, 저장 및 디코딩되는 과정을 설명하면 다음과 같다.
도 3에서와 같은 데이타 스트림이 버퍼(100)에 입력되면, 도 5에서와 같이 첫 클럭(1)에서 임의로 초기 동작신호(Init)를 1로 디코딩 테이블(600)의 랭스 디코더(602)에 인가하게 된다.
이와 같이 랭스 디코더(602)에 Init신호가 인가되면, 랭스 디코더(602)에서는 코드 워드의 길이값(L)은 16으로 출력되고, 이에 따라서 합산기(701)에서는 캐리신호(C)가 1로 발생되어 캐리 레지스터(703)에 저장된다.
이후, 다음 클럭(2)에서 다시 Init신호를 1로 인가하게 되면, 랭스 디코더(602)에서는 상기한 바와 같이 코드 워드의 길이값(L)을 16으로 출력하게 되고, 합산기(701)에서는 다시 캐리신호(C)를 1로 발생하게 된다.
따라서, 캐리 레지스터(703)에는 상기에서 발생된 현재의 캐리신호(C)값 1을 저장하면서, 이전 첫 클럭(1)에서 발생된 캐리신호(C)값 1을 리드신호(R)로서 버퍼(100)에 입력하게 된다.
이와 같이 버퍼(100)에 입력되는 리드신호(R)를 1로 만들어주게 되면,버퍼(100)에서는 입력 데이타의 첫 비트를 포함한 16비트의 데이타 세그먼트(a1∼a8,b1∼b6,c1,c2)를 출력하게 된다.
이때, 출력된 데이타(a1∼a8,b1∼b6,c1,c2)는 제1래치(201)에 저장된다.
또한, 상기 캐리 레지스터(703)에서 출력되는 캐리신호(C)는 멀티플렉스부(300)의 각 제1멀티플렉서(301) 및 제2멀티플렉서(302)의 제어신호로 사용되어지는 바,
제1멀티플렉서(301)에서는 입력단(1)의 값 즉, 버퍼(100)로부터 출력된 상기 데이타 비트(a1∼a8,b1∼b6,c1,c2)를 선택하여 제1배럴 쉬프터(401)로 출력하게 된다.
이후, 세 번째 클럭(3)에서 다시 Init신호를 1로 인가하게 되면, 랭스 디코더(602)에서는 코드 워드 길이값(L)이 16으로 나타나게 되고, 합산기(701)에서 다시 캐리신호(C)를 발생하게 되고, 이값은 캐리 레지스터(703)에 저장되며, 이전 캐리신호(C)값이 캐리 레지스터(703)로부터 출력된다.
상기에서 설명한 과정으로 버퍼(100)에서는 다시 그 이후의 데이타 세그먼트(c3∼c5,d1∼d13)를 검색하여 출력하게 되고, 제1래치(201)에 저장되어 있던, 이전 데이타(a1∼a8,b1∼b6,c1,c2)는 제2래치(202)에 저장되고, 제1래치(201)에는 상기 버퍼(100)로부터 출력된 데이타(c3∼c5,d1∼d13)가 저장된다.
이때, 제1멀티플렉서(301) 및 제2멀티플렉서(302)에는 제어신호로써, 캐리신호(C) 1이 인가되므로, 입력단(1)으로 입력되는 데이타를 제1배럴 쉬프터(401)로 출력하게 된다.
제1멀티플렉서(301)에서는 버퍼(100)로부터 출력된 상기 데이타(c3∼c5,d1∼d13)가 선택 출력되고, 제2멀티플렉서(302)에서는 제1래치(201)에서 출력되는 데이타(a1∼a8,b1∼b6,c1,c2)가 출력된다.
그러면, 제1배럴 쉬프터(401)에서는 상기 제1멀티플렉서(301) 및 제2멀티플렉서(302)로부터 입력된 상하위 데이타를 누적값 레지스터(702)로부터 출력되는 코드 워드의 길이 누적값에 따라서, 쉬프팅하여 출력하게 되는 바,
계속 캐리가 발생되어 누적값 레지스터(702)의 출력값이 0이므로, 제1배럴 쉬프터(401)에서는 제2멀티플렉서(302)로부터 입력되는 상위 데이타(a1∼a8,b1∼b6,c1,c2)를 제2배럴 쉬프터(402)로 출력하게 된다.
이후, 제2배럴 쉬프터(402)에서는 랭스 디코더(602)로부터 출력되는 코드 워드의 길이값(L) 만큼 쉬프팅하여 데이타를 출력하게 되는데, 랭스 디코더(602)의 출력값이 16이었으므로, 입력받은 데이타(a1∼a8,b1∼b6,c1,c2)를 제2래치부(500)로 출력하여 저장하게 된다.
다음 네 번째 클릭(4)부터는 Init신호가 0으로 바뀌면서 정삭동작이 이루어지게 되는 바,
네 번째 클럭(4)에서는 캐리 레지스터(703)에 저장되어 있던, 이전 클럭에서의 캐리신호(C)값 1이 버퍼(100)에 리드신호(R)로 인가되므로, 버퍼(100)에서는 다음 데이타의 16비트(d14,d15,e1∼e12,f1,f2)를 출력하게 된다.
제1래치(201)에서는 이전 저장했던 데이타(c3∼c5,d1∼d13)를 출력하여 제2래치(202)에 저장하게 되고, 제2래치(202)에서는 이전 저장했던 데이터(a1∼a8,b1∼b6,c1,c2)를 제2멀티플렉서(302)로 출력하게 된다.
이때, 캐리신호(C)값이 1이므로, 제1멀티플렉서(301)는 상기 버퍼(100)에서 출력된 현재 데이타(d14,d15,e1∼e12,f1,f2)를 하위 데이타로서 제1배럴 쉬프터(401)에 출력하게 되고, 제2멀티플렉서(302)는 제1래치(201)에서 출력되어 입력단(1)으로 입력되는 데이타(c3∼c5,d1∼d13)를 제1배럴 쉬프터(401)에 출력하게 된다.
제1배럴 쉬프터(401)에서는 아직 누적값 레지스터(702)의 출력값이 0이므로, 쉬프팅없이 제2멀티플렉서(302)로부터 입력된 상위 데이타(c3∼c5,d1∼d13)를 제2배럴 쉬프터(402)로 출력하게 된다.
즉, 제1배럴 쉬프터(401)에서 현재 출력되는 데이타는 이전 클럭에서 출력되는 데이타의 연속된 데이타 비트인 것이다.
이때, 제2래치부(500)에서는 저장되어 있던 데이타(a1∼a8,b1∼b6,c1,c2)를 출력하게 되고, 이와 같이 출력되는 데이타는 디코딩 테이블(600)의 심볼 디코딩(601) 및 랭스 디코더(602)에 입력되어 a1∼a8이 첫 번째 가변길이 코드로 디코딩된다.
여기서, 디코딩된 데이타(a1∼a8)가 8비트이므로, 랭스 디코더(602)에서는 코드 워드의 길이값(L)을 8로 출력하게 된다.
제2배럴 쉬프터(402)에서는 제1배럴 쉬프터(401)로부터 출력되는 데이타(c3∼c5,d1∼d13)를 하위 입력으로 하고, 상기와 같이 제2래치부(500)에서 출력된 데이타(a1∼a8,b1∼b6,c1,c2)를 상위입력으로 하여, 랭스 디코더(602)의 출력값에 따라 데이타를 출력하게 된다.
이때, 갱스 디코더(602)의 출력값이 8이므로, 8만큼을 쉬프팅한 16비트 데이타(b1∼b6,c1∼c5,d1∼d5)를 출력하여 제2래치부(500)에 저장하게 된다.
한편, 상기 랭스 디코더(602)에서 출력된 코드 워드의 길이값(L)은 합산기(701)로 입력되어, 누적값 레지스터(702)에 저장된 0과 합산된다.
이와 같이 합산된 8은 다시 누적값 레지스터(702)에 저장된다.
이때에는 합산기(701)의 캐리신호(C) 출력은 0이므로, 캐리 레지스터(703)에 저장되는 값은 0이다.
이후, 다섯번째 클럭(5)이 발생하게 되면, 제1래치(201)에서는 이전 클럭에서 버퍼(100)로부터 입력된 데이타(d14,d15,e1∼e12,f1,f2)를 출력하게 되고, 제2래치(202)에서는 이전 클럭에서 제1래치(201)에서 출력되어 저장되어있던 데이타(c3∼c5,d1∼d13)를 출력하게 된다.
이때, 캐리 레지스터(703)에서 출력되는 값이 0이므로, 제1래치부(200)에 인가되는 로드(load) 신호(Ld)가 0이 된다.
따라서, 제1래치(201) 및 제2래치(202)는 현재 출력한 데이타를 계속 저장 유지하게 되므로, 제2래치(202)에는 상기 제1래치(201)에서 출력된 데이타(d14,d15,e1∼e12,f1,f2)를 저장하지 않고, 현재 자신이 출력한 데이타(c3∼c5,d1∼d13)를 저장, 유지하게 된다.
그리고, 멀티플렉스부(300)에도 캐리 레지스터(703)로부터 0값이 인가되므로, 제1멀티플렉서부(301)는 상기 제1래치(201)에서 출력된데이타(d14,d15,e1∼e12,f1,f2)를 출력하게 되고, 제2멀티플렉서부(302)는 상기 제2래치(202)에서 출력된 데이타(c3∼c5,d1∼d13)를 출력하게 된다.
이때, 제1배럴 쉬프터(401)에서 누적값 레지스터(702)로부터 누적 코드 워드의 길이값 8이 인가되므로, 제1배럴 쉬프터(401)는 제2멀티플렉서(302)로부터 인가된 상위 데이타 비트(c3∼c5,d1∼d13)로부터 8비트 쉬프트된 데이타(d6∼d15,e1∼e6)를 제2배럴 쉬프터(402)로 출력하게 된다.
여기서, 제2래치부(500)에서는 이전 클럭에서 저장되어 있던, 데이타(b1∼b6,c1∼c5,d1∼d5)를 출력하게 되고, 디코딩 테이블(600)에서 이때 제2래치부(500)에서 출력된 데이타 중 가변길이 코드 b1∼b6까지 디코딩된다.
따라서, 랭스 디코더(602)에서는 검축된 비트값에 해당하는 코드길이값(L)을 6으로 출력하게 된다.
제2배럴 쉬프터(402)에서는 상기 제2래치부(500)에서 출력된 데이타(b1∼b6,c1∼c5,d1∼d5)를 상위입력으로 하고, 상기 제1배럴 쉬프터(402)로부터 출력된 데이타(d6∼d15,e1∼e6)를 하위입력으로 하여 상기와 같이 인가되는 코드 길이값(L) 6만큼 쉬프트하여 출력하게 된다.
즉, 제2래치부(500)에는 6비트 만큼 쉬프트된 16비트 데이타(c1∼c5, d1∼d11)가 저장된다.
한편, 합산기(701)는 상기 랭스 디코더(602)로 출력된 코드 워드 길이값(L) 8과 누적값 레지스터(702)에서 출력되는 값 6을 합산하고, 합산된 값 14를 누적값 레지스터(702)에 저장하게 된다.
그리고, 합산기(701)에서 캐리신호(C)가 발생되지 않으므로, 캐리 레지스터(703)에는 0값이 저장된다.
이후, 계속되는 각각의 클럭에서도 상기와 같은 과정으로 디코딩 동작이 계속 수행되어진다.
즉, 현재 클럭에서 디코딩 테이블(600)로 전달된 데이타를 상위입력으로 한 상태에서 현재 디코딩되어지는 가변길이 코드의 길이를 정보를 바로 받아 다음 클럭에서 디코딩되어질 다음 데이타 비트를 결정하도록 하므로써, 외부 최장 지연경로에서 제2배럴 쉬프터(402)가 제외되고, 제2래치부(500)와 심볼 디코더(601)로 이루어지게 된다.
이상에서 설명한 바와 같이, 내부 최장 지연시간 경로는 제2래치부(500), 랭스 디코더(602), 제2배럴 쉬프터(402)로 이루어지게 되고, 외부 최장 지연시간 경로는 제2래치부(500), 심볼 디코더(601)로 이루어지게 되어, 배럴 쉬프터가 포함된 종래의 가변 길이 코드 디코더에 비해 외부 최장 지연시간이 짧게 되어 주변 블록과의 인터페이스가 용이하게 이루어진다.
또한, 두 개의 배럴 쉬프터가 같은 구조를 가지고 있어, 디코더의 설계가 용이하다.
Claims (2)
- 입력되는 비트스트림 데이타를 16비트수 만큼 병렬화하여 저장 및 리드신호(R)에 따라 출력하는 버퍼와,상기 버퍼로부터 출력되는 데이타를 일시 저장한 후 출력하는 제1래치부를 포함하는 선택출력수단과,상기 제1래치부의 출력 데이타를 선택 출력하는 멀티플렉스부와, 멀티플렉스부의 출력데이타를 제어신호에 따라 쉬프트하여 일정 비트수 만큼의 데이타를 출력하는 배럴 쉬프트부를 포함하여 구성되어, 상기 선택출력수단의 출력 데이타를 제어신호에 따라 쉬프트한 후 일정 비트수 만큼 데이타를 출력하는 수단과,상기 배럴 쉬프트부의 출력 데이타를 일시 저장한 후 디코딩 테이블 및 상기 배럴 쉬프트부에 각각 출력하는 제2래치부를 포함하여 구성되어 상기 수단으로부터 일정 비트수 만큼 출력되는 데이타를 일시적으로 저장한 후 출력하는 수단과,상기 제2래치부의 출력 데이타를 디코딩하여 디코딩된 코드 워드와 비트 길이(L)를 출력하는 디코딩 테이블을 포함하여 구성되어, 상기 수단으로부터 출력되는 데이타를 디코딩하여, 코드 워드를 접속되는 주변회로로 출력하고 디코딩된 코드 워드의 비트길이값을 출력하는 수단과,상기 디코딩테이블에서 출력된 코드 워드의 비트길이(L)값과 이전에 누적되어 있던 코드 워드의 비트길이값을 더하여 저장 및 이에 따른 버퍼 및 제1래치부와 멀티플렉스부 및 배럴 쉬프트부의 제어신호를 출력하는 제어부를 포함하여 구성되어 상기 수단으로부터 검출되는 코드 워드의 비트길이값 정보에 따라서 상기 각 수단을 제어하여 데이타의 저장 및 선택출력, 데이타 비트의 쉬프트량에 대한 제어신호를 출력하는 제어수단을 포함하여 구성됨을 특징으로 하는 가변 길이 코드 디코더.
- 제1항에 있어서,상기 제1래치부는 상기 버퍼로부터 출력되는 데이타를 상기 제어부로부터 출력되는 리드신호(R)에 따라 일시 저장한 후, 저장된 데이타를 출력하는 제1래치와, 제1래치의 출력 데이타를 일시 저장한 후, 저장된 데이타를 출력하는 제2래치를 포함하여 구성되고,상기 멀티플렉스부는 제어부로부터 출력되는 리드신호(R)를 선택제어신호로 하여 제1래치 및 사기 버퍼로부터 출력되는 데이타를 선택하여 배럴 쉬프트부의 하위 16비트로 출력하는 제1멀티플렉서와, 제어부로부터 출력되는 리드신호(R)를 선택제어신호로 하여 상기 제1래치 및 제2래치의 출력 데이타를 선택하여 배럴 쉬프트의 상위 16비트로 출력하는 제2멀티플렉서를 포함하여 구성되며,상기 배럴 쉬프트부는 상기 제1멀티플렉서 및 제2멀티플렉서의 출력 데이타를 압력으로 하여 이전에 누적되어 있는 디코드된 쿼드워드의 길이값을 제어신호로 하여 그 값만큼 입력된 데이타를 쉬프트하여 출력하는 제1배럴 쉬프터와, 제1배럴 쉬프터의 출력을 하위 16비트 입력으로 받고, 상기 제2래치부의 출력을 상위 16비트입력으로 받아 상기 디코딩 테이블에서 출력되는 코드워크 비트 길이값(L) 만큼을 쉬프트시켜 제2래치부로 출력하는 제2배럴 쉬프터를 포함하여 구성되며,상기 디코딩 테이블은 상기 제2래치부로부터 출력되는 데이타를 디코딩하여 검축된 가변길이 코드를 확정길이 코드로 변환해주는 심볼 디코더와, 검출된 가변길이 코드의 비트 길이값(L)을 상기 제어부로 출력하는 랭스 디코더를 포함하여 구성되며,상기 제어부는 상기 디코딩 테이블의 랭스 디코더로부터 출력되는 현재 디코드되는 코드 워드의 비트 길이값(L)과 이전에 누적되어 있는 비트길이값을 합산하는 합산기와, 합산기에서 합산된 코드 워드의 비트길이값 즉, 바로 전 클럭까지 디코딩된 코드 워드의 비트값들의 합을 저장하고, 이를 상기 제1배럴 쉬프터의 쉬프팅 제어신호로 출력하는 누적값 레지스터와, 상기 합산기의 출력 중 캐리신호(C)가 발생하게 될 때, 발생되는 캐리신호를 일시 저장하고 있다가 이후, 다음 클럭에서 리드신호(R)를 출력하게 되는 캐리 레지스터를 포함하여 구성된 것을 특징으로 하는 가변 길이 코드 디코더.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019980011441A KR100304872B1 (ko) | 1998-04-01 | 1998-04-01 | 가변길이코드디코더. |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019980011441A KR100304872B1 (ko) | 1998-04-01 | 1998-04-01 | 가변길이코드디코더. |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19990079054A KR19990079054A (ko) | 1999-11-05 |
KR100304872B1 true KR100304872B1 (ko) | 2001-09-24 |
Family
ID=37529978
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019980011441A KR100304872B1 (ko) | 1998-04-01 | 1998-04-01 | 가변길이코드디코더. |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100304872B1 (ko) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07312557A (ja) * | 1994-05-17 | 1995-11-28 | Nec Ic Microcomput Syst Ltd | 可変長データ連結回路 |
KR970032144A (ko) * | 1995-11-15 | 1997-06-26 | 구자홍 | 고속 가변길이 디코더장치 |
-
1998
- 1998-04-01 KR KR1019980011441A patent/KR100304872B1/ko not_active IP Right Cessation
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07312557A (ja) * | 1994-05-17 | 1995-11-28 | Nec Ic Microcomput Syst Ltd | 可変長データ連結回路 |
KR970032144A (ko) * | 1995-11-15 | 1997-06-26 | 구자홍 | 고속 가변길이 디코더장치 |
Also Published As
Publication number | Publication date |
---|---|
KR19990079054A (ko) | 1999-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0589682B1 (en) | Variable length code decoder | |
US6215424B1 (en) | System for variable length codeword processing suitable for video and other applications | |
JP3484310B2 (ja) | 可変長符号器 | |
JPH06141295A (ja) | デジタル・ビデオ・コーダ用のバーサタイルなエスケープ・ラン・レベル・コーダ | |
JPH088755A (ja) | 高速可変長復号化装置 | |
EP0798931B1 (en) | Variable length decoder and method for decoding two codes per clock cycle | |
US6546053B1 (en) | System and method for decoding signal and method of generating lookup table for using in signal decoding process | |
KR0152038B1 (ko) | 상대 주소를 이용한 가변장 복호화 장치 | |
JPH11501489A (ja) | 可変長デコーダ | |
JPH10341167A (ja) | 可変長符号復号化回路 | |
KR20040012403A (ko) | 가변 길이 코드 복호화 장치 및 방법 | |
US5781135A (en) | High speed variable length code decoder | |
JPH07222164A (ja) | ディジタルビデオ・ビットストリームコーダ | |
KR100450753B1 (ko) | 프로세서와 연결된 프로그램 가능한 가변 길이 디코더 | |
KR100192269B1 (ko) | 가변길이 코드 디코더 | |
US5835033A (en) | Decoding apparatus and method for coded data | |
KR19980702418A (ko) | 가변 길이 디코더 | |
KR100304872B1 (ko) | 가변길이코드디코더. | |
US5754128A (en) | Variable-length code encoding and segmenting apparatus having a byte alignment unit | |
JPH09130266A (ja) | 高速可変長コード復号化装置及び高速可変長コード復号化方法 | |
KR100292050B1 (ko) | 가변장복호기의 데이타 가변장치 | |
KR0152035B1 (ko) | 가변장복호화방법 및 그 장치 | |
JP3389389B2 (ja) | 可変長コード復号化装置 | |
JPH04213988A (ja) | 伝送符号器 | |
JP2002204171A (ja) | クロックサイクル当りの多重隣接可変コード長を復号する装置及び方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20050607 Year of fee payment: 5 |
|
LAPS | Lapse due to unpaid annual fee |