Abstract
H.264(or MPEG-4/AVC pt.10) is a high performance video coding standard, and is widely used. Variable length code (VLC) of the H.264 standard compresses data using the statistical distribution of values. A decoder parses the compressed bit stream and searches decoded values in lookup tables, and the decoding process is not easy to implement by hardware. We propose an architecture of variable length decoder(VLD) for the H.264 baseline profile(BP) L4. The CAVLD decodes syntax elements using the combination of arithmetic units and lookup tables for the optimized hardware architecture. A barral shifter and a first 1's detector parse NAL bit stream, and are shared by Exp-Golomb decoder and CAVLD. A FIFO memory between CAVLD and the reorder unit and a buffer at the output of the reorder unit eliminate the bottleneck of data stream. The proposed VLD is designed using Verilog-HDL and is implemented using an FPGA. The synthesis result using a 0.18um standard CMOS technology shows that the gate count is 22,604 and the decoder can process HD($1920{\times}1080$) video at 120MHz.
H.264(또는 MPEG-4/AVC pt.10) 압축 표준은 고성능 영상 압축 알고리즘으로 그 적용 범위를 넓혀 가고 있다. H.264 압축 표준의 가변길이 코드(Variable Length Code)는 데이터의 통계적 중복성의 특성을 이용하여 압축을 한다. 이러한 압축된 비트 스트림은 복호기에서 연속된 비트 스트림을 잘라내는 작업과 테이블에서 비트 스트림과 비교하는 작업을 진행하는데 순수 하드웨어 구현이 까다로운 연산부이다. 본 논문에서는 HD 영상을 실시간으로 복호 가능한 가변길이 복호기 구조를 제안한다. Exp-Golomb 복호기는 연산기로 구성되어 있으며, CAVLD는 테이블과 연산기를 혼합하여 최적화된 하드웨어로 설계하였다. 비트 스트림의 분할(parsing) 작업은 배럴 쉬프터(Barrel shifter)와 1값 감지기(First 1's detector)에서 진행되며, 이 두 유닛은 Exp-Golomb 복호기와 CAVLD가 공유하는 구조로 설계하여 불필요한 하드웨어를 제거하였다. CAVLD와 재정렬(Reorder) 유닛간의 병목현상으로 가변길이 복호기 뿐만 아니라 H.264 디코더 전체의 성능 저하가 나타나는 단점을 제거하기 위해서 CAVLD와 재정렬 유닛간 FIFO와 재정렬 유닛의 최종 출력에 메모리를 두어 병목현상을 제거하였다. 제안된 가변길이 복호기는 Verilog-HDL을 이용하여 설계하고 FPGA를 통해 검증하였다. 0.18um 표준 CMOS 공정을 사용한 합성 결과는 22,604 게이트 수이며, 동작 주파수 120MHz에서 HD 영상이 복호됨을 확인하였다.