一种基于FPGA高性能H.264变换量化结构设计-设计应用_第1页
一种基于FPGA高性能H.264变换量化结构设计-设计应用_第2页
一种基于FPGA高性能H.264变换量化结构设计-设计应用_第3页
一种基于FPGA高性能H.264变换量化结构设计-设计应用_第4页
一种基于FPGA高性能H.264变换量化结构设计-设计应用_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精品文档-下载后可编辑一种基于FPGA高性能H.264变换量化结构设计-设计应用摘要:H.264作为的视频编码标准具有很高的压缩性能,对它的研究具有重要的意义。根据H.264的变换量化算法设计一种基于FPGA的高性能变换量化处理结构,该结构采用流水线操作和分时复用技术。结果显示,该设计既节省了资源,又保证了效率;能够同时处理整个4×4块的全部16个残差输入数据,并在236个时钟内完成对1个宏块的残差数据从输入到反变换输出重建值的完整变换量化过程。它的处理速度和性能大大提高,可用于硬件加速。

0引言

H.264高效的编码效率是以其高复杂性为代价的,因此制约了它在高分辨率、实时处理等方面的应用。而FPGA器件采用流水控制策略和并行处理方式,可为H.264复杂的编码模块提供硬件加速引擎。变换量化模块在H.264编码算法中被频繁调用。因此研究在尽量合理控制其资源消耗的前提下,提高变换量化模块的工作频率及处理数据的吞吐量,并完成变换量化一系列完整功能的变换量化结构具有重要的实际意义,也成为当前研究的首要问题。H.264.变换是基于DCT的,其全部采用整数DCT变换,这样就避免了正变换和反变换的失配问题,既不丢失解码精度,也适合于FPGA硬件实现。

1算法原理及分析

1.1变换算法及分析

H.264变换是整数DCT变换,该算法实现了编码端和解码端反变换之间的零匹配,从而减少了解码精度的丢失。通常H.264变换编码以4×4块为单位,变换矩阵如下:

当变换矩阵中a=1时,为DCT正向变换矩阵Cf,;若将DCT正向变换矩阵Cf,中所有的2变为1,并保持所有符号不变,则变成Hadamard变换矩阵Hi;若将以上矩阵中所有的2变为1,并使a=1/2,保持所有符号不变,则为DCT反向变换矩阵CTi。

1.2量化算法及分析

H.264的分级标量量化器支持多达52个量化步长QSTep,用量化参数QP进行索引。范围广阔的量化步长能够灵活准确地控制比特速率和质量之间的平衡。

在整数算法中,量化过程可以用以下运算来实现:

式中:W为残差系数;表示二进制右移;帧内块和帧间块f分别为2qbits/3,2qbits/6;MF为乘法因子,其值可根据W(i,j)在矩阵中不同的位置和量化参数QP的不同,查乘法因子表得到。

系数z的反量化方式如下:

式中:尺度因子V可根据Z(i,j)在矩阵中不同的位置和量化参数QP的不同,查尺度因子表得到。

2FPGA硬件设计及实现

2.1变换量化硬件整体结构

在H.264编码器中经过预测后得到的残差数据经过变换T、量化Q后的数据分为两路:一路经过重排序Recoder后用于熵编码;另一路为重建通路,经过反量化Q-1、反变换T-1后与预测值P相加得到重建值,用于后面的宏块的预测编码。

H.264编码标准中,在帧内预测方式下,首先对16×16宏块(亮度分量)的1*×4块进行DCT变换,然后提取出DC系数组成一个4×4DC块;对于这个4×4Dc块要先进行Hadamard变换,然后量化。在重建通路中需要注意:对于4×4DC块,要先进行反Hadamard变换,再进行反量化,目的是使反变换的动态范围;再依据这个4×4DC块中16个数值对反量化后的16×16宏块进行反DCT变换。对于色度分量的DC系数也是一样需要经过进一步变换。H.264变换量化整体结构主要分为4大模块,其框图如图1所示。

结构框图中DC_reg是一组用于存储所有的DC系数值的寄存器,使用两个同步FIFO存储反量化后的AC系数,等待DC系数反变换反量化完毕以后,再一起送人的反DCT变换模块中进行处理。两个同步FIFO在时钟控制下先后进行写操作,其中一个存储4×4块反量化输出的其中两行数据,另一个在下一时钟存储这个4×4块反量化输出的另两行数据。读取时,则同时对两个FIFO进行读操作,即一个时钟内这个4×4块的反量化后的全部16个数值同时出现在反变换模块的输入端。

2.2变换模块(DCT/Hadamard变换)及反变换模块

(iDCT/iHadamard反变换)设计由DCT变换矩阵可以推导得出:

同样:Y01~Y03以及Y20~Y23也可将式(5)展开得到。同理可得:

由前述的变换算法分析可知,Hadamard变换和DCT变换的变换矩阵只存在是否乘以2的差别,因此将式(5)和(7)中的cr换成Hi,且2变为1,由此可得到Hadamard变换。

在实际的硬件电路中,乘以2和除以2的操作都可以通过移位来实现。此外,DCT正向变换与Hadamard变换在整个变换过程中不是同时进行操作,因此将DCT正向变换与Hadamard变换结合到一起,并分时复用,以是否乘2来区分当前是哪种变换。同时采用16个残差数据同时输入,输出8位变换数据,每2个时钟输出一个4×4块的变换结果。这样既充分利用了硬件资源,又能性处理一个4×4残差块的全部16个数据,确保了效率。DCT变换和Hadamard变换的变换均可用快速蝶形算法实现,如图2所示。

对iDCT反向变换和iHadamard反变换的变换进行分析,原理与上述相似。

2.3量化及反量化模块设计

整个量化及反量化模块全部采用乘法器、加法器和移位操作来实现,并采用FPGA内部的两个ROM来分别存放正反量化的乘法因子MF和尺度因子V。

由于变换模块输出是8位,因此量化模块采用8数据输入,每2个时钟输出一个4×4块的量化结果。反量化模块也是采用8数据输入,且每2个时钟输出一个4×4块的反量化结果。

3时序分析及硬件调试验证

该结构设计全部采用VHDL编写程序,使用ISE环境下的XST进行综合,综合频率达到112MHz。该设计采用的FPGA是Xilinx公司生产的XC2V1500,并使用在线逻辑分析仪Chipscope来观察量化输出数据(quant_out_i)和反变换后的残差输出数据(inv_dct_i);图3所示为反变换后的残差输出数据(inv_dct_i)。输入数据采用数值相同的4×4块,因此输出数据也完全相同。波形显示:每次输出8个数据;对于一个宏块的16个亮度4×4块进行处理时,可在45个时钟内完成变换量化(包括AC/DC)用于编码,在91个时钟内完成变换量化反变换反量化一系列操作得到用于重建的残差,在236个时钟内完成对一个宏块的残差数据从输入到反变换输出重建值的完整过程。

4结语

提出的这种H.264变换量化结构完全基于FPGA实现,每一个时钟输出8个数据,每2个时钟得出对一个4×4块处理的终结果。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论