0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于FPGA硬件实现H.264变换量化整体结构的设计方案

电子设计 来源:郭婷 作者:电子设计 2019-08-01 08:04 次阅读

引 言

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

1 算法原理及分析

1.1 变换算法及分析

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

基于FPGA硬件实现H.264变换量化整体结构的设计方案

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

1.2 量化算法及分析

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

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

基于FPGA硬件实现H.264变换量化整体结构的设计方案

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

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

基于FPGA硬件实现H.264变换量化整体结构的设计方案

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

2 FPGA硬件设计及实现

2.1 变换量化硬件整体结构

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

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

基于FPGA硬件实现H.264变换量化整体结构的设计方案

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

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

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

基于FPGA硬件实现H.264变换量化整体结构的设计方案

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

基于FPGA硬件实现H.264变换量化整体结构的设计方案

由前述的变换算法分析可知,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所示。

基于FPGA硬件实现H.264变换量化整体结构的设计方案

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

2.3 量化及反量化模块设计

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

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

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

该结构设计全部采用VHDL编写程序,使用ISE环境下的XST进行综合,综合频率达到112 MHz。该设计采用的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个时钟内完成对一个宏块的残差数据从输入到反变换输出重建值的完整过程。

基于FPGA硬件实现H.264变换量化整体结构的设计方案

4 结 语

提出的这种H.264变换量化结构完全基于FPGA实现,每一个时钟输出8个数据,每2个时钟得出对一个4×4块处理的最终结果。一方面采用流水线操作,对16个数据并行处理提高了数据的处理速度,另一方面分时复用技术又在一定程度上节省了硬件资源。相比文献中只实现了部分功能,本文实现了从残差输入经变换量化、反变换反量化得到用于重建的残差值这一系列完整的操作,并保证了在一定的数据处理速度下对资源的优化处理,适合用于H.264.编码器硬件加速。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1626

    文章

    21665

    浏览量

    601803
  • vhdl
    +关注

    关注

    30

    文章

    816

    浏览量

    128076
  • 效率
    +关注

    关注

    0

    文章

    148

    浏览量

    20039
收藏 人收藏

    评论

    相关推荐

    H.264码流结构pdf

    H.264码流结构pdfH.263的码流结构H.263定义的码流结构是分级结构,共四层。自上而下
    发表于 06-25 10:26

    针对硬件实现h.264视频编码算法改进

    针对硬件实现h.264视频编码算法改进针对硬件实现的视频编码算法改进上海交通大学图像通信与信息处理研究所 周怡吴昊方向忠摘要’ 从
    发表于 06-25 11:35

    基于Blackfin533的H.264编码

    在一起;另一方面这样可以在寄存器中一起完成变换量化,有助于减少数据的存储次数和读取时间。对于反量化、整系数逆变换,采用相似的设计思路。   数据
    发表于 07-13 17:12

    如何利用PLB总线和FPGA技术对H.264整数变换量化软核实现优化设计?

    求一款基于PLB总线的H.264整数变换量化软核的设计方案
    发表于 04-08 06:46

    请问怎样实现H.264量化

    量化的功能有哪些?量化的算法是什么?怎样用Verilog语言实现H.264量化?如何运用Modelsim对
    发表于 04-28 06:12

    分享一款不错的一种基于FPGA高性能H.264变换量化结构设计

    分享一款不错的一种基于FPGA高性能H.264变换量化结构设计
    发表于 05-08 07:56

    h.264码流结构/H.263的码流结构

    H.264的码流结构H.264的码流结构H.263的有很大的区别,它采用的不再是严格的分级结构
    发表于 08-19 13:46 59次下载
    <b class='flag-5'>h.264</b>码流<b class='flag-5'>结构</b>/<b class='flag-5'>H</b>.263的码流<b class='flag-5'>结构</b>

    基于H.264量化IP的硬件实现

    本文提出了基于H.264的逆量化IP的优化结构及其硬件实现。它能够按照标准处理各种4×4块的逆量化
    发表于 02-24 11:51 10次下载

    针对硬件实现H.264视频编码算法改进

    摘要:从硬件实现的角度分析了H.264算法,重点研究了占用最多运算时间的预测部分的优化,给出了对帧内预测、哈达马变换以及运动估计算法的改进,通过简化运算复杂、
    发表于 03-24 13:29 703次阅读
    针对<b class='flag-5'>硬件</b><b class='flag-5'>实现</b>的<b class='flag-5'>H.264</b>视频编码算法改进

    H.264/AVC中量化的Verilog方法介绍及实现

    H.264/AVC中量化的Verilog方法介绍及实现 0  引  言   H.264作为新一代的视频压缩标准,是由ITU-T的视频编码专家组和ISO/IEC
    发表于 11-12 10:08 1104次阅读
    <b class='flag-5'>H.264</b>/AVC中<b class='flag-5'>量化</b>的Verilog方法介绍及<b class='flag-5'>实现</b>

    H.264_AVC视频编码变换量化实现

    本文主要研究H.264/AVC编码模块中的4×4整数变换量化核,提出硬件实现的优化方法。
    发表于 02-08 11:07 1719次阅读
    <b class='flag-5'>H.264</b>_AVC视频编码<b class='flag-5'>变换</b><b class='flag-5'>量化</b>核<b class='flag-5'>实现</b>

    基于FPGAH.264 DCT算法的硬件实现

    二维离散余弦(DCT)在H.264视频编码中承担者信号从时域到频域变换的作用。在现场可编程逻辑门阵列(FPGA)上设计了高效的采用流水线结构H.2
    发表于 07-31 15:26 5822次阅读
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>H.264</b> DCT算法的<b class='flag-5'>硬件</b><b class='flag-5'>实现</b>

    针对DSP、ASIC与FPGA三种产品平台的H.264编码器方案

    目前的视频监控行业,基于DSP的H.264编码器解决方案占有绝对优势的市场份额,这是由DSP方案开发周期相对较短的特性决定的。在ASIC或FPGA
    的头像 发表于 10-29 08:21 1.3w次阅读

    利用PLB总线和FPGA技术对H.264整数变换量化软核实现优化设计

    H.264以其高复杂度为代价获得了优异的编码效率, 其中除部分控制流程的复杂模块外,H.264中的很多模块适合用硬件实现。应用中通常使用CPU+FP
    的头像 发表于 09-24 07:58 2509次阅读

    基于FPGA等的H.264码流实时传输方案

    基于FPGA等的H.264码流实时传输方案
    发表于 06-19 15:07 22次下载