首页 > 范文大全 > 正文

AVS视频解码器中VLD模块的硬件设计

开篇:润墨网以专业的文秘视角,为您筛选了一篇AVS视频解码器中VLD模块的硬件设计范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要:avs是我国自主制定的音视频编码技术标准。提出一种新的适用于AVS视频解码的变字长解码(VLD) 结构,重点研究AVS变字长码的特点,通过合理的码字分割解决码字的存储问题,采用桶式移位器,使得每个时钟能处理1个码字。采用Verilog 语言进行设计、模拟,并通过了FPGA 验证。采用0.18 μm CMOS 工艺库综合,在50 MHz的时钟频率下工作时电路规模达到1.6万门左右。

关键词:AVS视频标准;变长解码;FPGA;Verilog HDL

中图分类号:TP368.1文献标识码:B

文章编号:1004-373X(2008)24-024-03

Hardware Design of VLD Module in AVS Video Decoder

ZHENG Jun

(Design Center of Communication Software and ASIC,Tongji University,Shanghai,200092,China)

Abstract:AVS is the audio and video standard of China.A novel architecture for Variable Length Decoding (VLD) algorithm for AVS video decoder is proposed in the paper.According to the characteristics of AVS DCT coefficients table,the storage of code word is solved by proper code word partitioning.Barrel shift register is used so that each code word can be processed in one clock period.The module is designed,simulated based on Verilog HDL.The whole design has been verified by FPGA.The VLD is synthesized with 0.25μm CMOS cell library,and is implemented in 16,000 gates when operating at 50MHz.

Keywords:AVS;variable length decoding;FPGA;Verilog HDL

1 引 言

AVS(Audio Video Coding Standard) 标准是《信息技术先进音视频编码》系列标准的简称,是由中国自主提出的第一个音视频编码标准。该标准面向中国的信息产业需求,服务于高分辨率数字广播、高密度激光数字存储媒体、无线宽带多媒体通讯、互联网宽带流媒体等重大信息产业应用。目前音视频产业可以选择的信源编码标准有4个:MPEG-2,MPEG-4,MPEG-4 AVC,AVS。前3个标准是由MPEG专家组完成的,第四个是我国自主制定的。从主要技术指标――编码效率比较:MPEG-4是MPEG-2的1.4倍,AVS和AVC相当,都是MPEG-2两倍以上。

由于AVS采用的是上下文自适应2D-VLC,且编码块系数过程中进行多码表切换,故AVS有很高的压缩效率,这使得其算法的复杂度也高。如果采用软件解AVS的码流将很难满足实时视频解码的要求,为此需要采用硬件实现。用硬件实现视频解码器一般有2种基本的实现结构:DSP 型和ASIC 型的结构。DSP 型结构基于可编程DSP核,它可以通过适当的编程,实现不同标准的解码,其缺点是程序复杂,增加了I/O、总线以及DSP 核和专用模块的冲突。而ASIC 结构中每个功能块均采用专用的VLSI结构,通过系统控制器控制各部分的运行,ASIC结构能有效地提高时钟频率、减小芯片面积。因而为了获得更高的性能,这里采用ASIC结构来实现。

变字长解码是压缩系统广泛采用的技术。它实际上是Huffman 编码的逆过程,其主要思想是通过对数据出现几率的统计,使平均码长最小化。小的码字指向出现几率大的数据,长的码字指向出现几率小的数据。AVS之所以能够有较高的压缩效率是因为AVS所用的变字长编码相比以前的变字长编码方法有许多改进和独特的特征,它的语法元素和残差系数是由定长码和指数哥伦布编码( Exp-Golomb) 构成的,其中指数哥伦布编码和语法元素之间存在多种映射关系。AVS 还引入了起始码和插入码的概念,起始码用来标识比特流语法结构的开始,插入码是为了防止在比特流中出现伪起始码而插入的“2’b10”两个比特,所以在进行VLD解码之前首先要做的工作是去掉起始码和插入码。

2 变长解码器的设计

2.1 总体结构设计

整个AVS视频解码芯片是采用流水作业的,而VLD解码模块是视频解码的第一级流水处理,视频解码器通过主控制器启动整个VLD解码模块开始解码工作;整个VLD所要执行的操作有:

(1) 查找起始码,并去除填充位;

(2) 解定长码,即解码帧内预测模式、宏块类型、参考索引和运动向量等和Exp-Golomb编码;

(3) 读取残差系数等,并将解码后的残差系数存入RAM中。

VLD的系统结构如图1 所示,VLD负责解析出输入码流中的所有语法元素,并做处理;它先从外部获得压缩的码流数据,码流从片外RAM读取送入到FIFO中缓存,以减少请求内存的次数,为了提高数据的处理效率,这里外部数据的输入位宽和FIFO的输出数据位宽均设定为32位;FIFO Interface模块用于桶型移位和检测起始码及伪起始码并剔除位插入,然后将码流送入到VLC Decoder模块供其解码;宏块层以上的语法元素或保存在VLC Decoder模块内部或端口传出,宏块层以下的语法元素则要传送给其他模块做相应的处理,而block内的游程编码数据则送入片内RAM中存储供下一级读取。

2.2 检测起始码及插入位

VLD中序列头部的定长解码包括起始码检测、伪起始码检测及其插入码剔除、定长解码3个部分。步骤如下:

(1) 从FIFO中输入到FIFO Interface的数据寄存在2个32位的寄存器中RegA和RegB中;

(2) RegA和RegB中总共有8个字节(如图2所示),其中第2,3,4三个字节用来检测插入码,而从第0,1,2三个字节中检测起始码。如果检测发现这3个字节24位为“0000 0000 0000 0000 0000 0010”即是起始码,那么第3个字节是起始码类型。如果检测到是插入码则表明第2个字节中的“10”是需要剔除掉的插入位,此时输出第2个字节的前6位,否则输出整个字节。

2.3 定长变长码解码

AVS的变长码不同于MPEG-2,也不同于H.264。AVS采用的是上下文自适应2D-VLC的指数哥伦布编码,这使得在同等条件下AVS码率能达到现行MPEG-2标准的一半,而且在降低解码复杂度后却能达到与H.264几乎相同的效率。

(1) K阶指数哥伦布码。