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

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

3天内不再提示

利用PLB总线和FPGA威廉希尔官方网站 对H.264整数变换量化软核实现优化设计

电子设计 来源:郭婷 作者:电子设计 2019-09-24 07:58 次阅读

H.264以其高复杂度为代价获得了优异的编码效率, 其中除部分控制流程的复杂模块外,H.264中的很多模块适合用硬件实现。应用中通常使用CPU+FPGA结构,将耗时较多的模块用FPGA实现,CPU仅负责一些低复杂度的算法和编码流程参数的设置。

介绍了整数变换量化的硬件实现,但没有考虑数据在处理过程中的宽度问题,因此会造成FPGA资源的浪费。本文充分考虑了数据在处理过程中的动态范围,使用更少的FPGA资源来实现H.264中的整数变换量化模块。

结合实际应用,文中对该软核在计算速度和硬件资源方面分别做了优化。经过速度优化的软核性能明显优于设计,经过消耗资源优化的软核也完全能够胜任高分辨率的实时编码。

1 整数变换

在完成帧内和帧间预测以后,需要对图像参差数据进行整数变换和量化,使图像数据的能量集中到一小部分系数上,进一步降低码流速率。

1.1 整数变换原理

H.264中对图像参差进行二维DCT变换,表达式为:

利用PLB总线和FPGA威廉希尔官方网站
对H.264整数变换量化软核实现优化设计

其中:

利用PLB总线和FPGA威廉希尔官方网站
对H.264整数变换量化软核实现优化设计

X为输入数据,A为变换矩阵,Y为变换结果。H.264对4×4的图像块进行操作,则相应的4×4 DCT变换矩阵A为:

利用PLB总线和FPGA威廉希尔官方网站
对H.264整数变换量化软核实现优化设计

与E的乘法被归纳到量化运算中,这样(CXCT)中只剩下整数的加法、减法和移位运算,因此可以大大降低硬件实现的复杂度,变换结果最多只需要16位的数据。

1.2 整数变换硬件结构

本设计H.264中的4×4整数变换采用蝶形快速算法,如图1所示。首先对4×4块的每一行做一维整数变换,然后再对行变换结果做列的一维整数变换,最终得到4×4的整数变换结果。图1模块需要32个加法器和32个减法器,这样在一个时钟周期内就可以完成一个4×4块的整数变换。

利用PLB总线和FPGA威廉希尔官方网站
对H.264整数变换量化软核实现优化设计

整数变换通常的做法是全部使用16位加法器和减法器,这样可以简化设计。然而在实际应用中,输入的像素点范围是[0,255],如果第一级变换就使用16位,则数据宽度无疑会占用更多的硬件资源。根据分析可知,计算一维行变换以后,数据输出范围为[-765,1020],只需使用11位二进制数表示。计算一维列变换以后,数据输出范围是[-3 060,4 080],需要使用13位二进制数表示。因此整数变换模块的数据宽度可以确定为:进行一维行变换时的加法器和减法器使用11位数据宽度,一维列变换的加法器和减法器使用13位数据宽度。

由于数据单向流动的特点,即没有反馈,可以使用流水线提高系统性能。使用流水线时需要注意前后模块处理速率的匹配。如本模块中在行变换与列变换插入缓存构成前后模块,前后模块用同一时钟,并且整个模块的工作频率以最低工作频率的模块来确定。本设计用1级流水线来提高工作频率。如果流水线级数过多会消耗大量FPGA资源,仿真实验证明,此模块使用1级流水线时,只增加极少FPGA资源。

2 量化

为了进一步降低图像传输码率,需要对图像进一步压缩,方法是使用变换编码及量化威廉希尔官方网站 。

2.1 量化原理

H.264中采用标量量化器。标量量化器的原理是:

利用PLB总线和FPGA威廉希尔官方网站
对H.264整数变换量化软核实现优化设计

其中,y为输入样本点编码,Qstep为量化步长,FQ为y的量化值。H.264标准支持52个量化步长。量化的简化操作如下:

利用PLB总线和FPGA威廉希尔官方网站
对H.264整数变换量化软核实现优化设计

其中,Wij为输入样本点编码,MF是标准中定义的值,QP为量化系数,f为偏移量,对帧内预测图像块f取2qbits/3,对帧间预测图像块f取2qbits/6。

2.2 量化器实现

量化器硬件结构如图2所示,其结果是实现对式(4)和式(5)的组合电路。W是需要量化的数据,MF是根据QP和当前点位置在查找表中得到的值。f和qbits是根据QP查表的输出。

利用PLB总线和FPGA威廉希尔官方网站
对H.264整数变换量化软核实现优化设计

为了硬件资源消耗最少,需要分析数据在计算过程中的动态范围,使用最少的数据宽度来表示传输的数据,从而使用最少的硬件资源来实现组合运算逻辑。W是整数变换结果,根据整数变换部分的分析,其取值范围是[-3 060,4 080],MF最大取13 107,乘法器输出动态范围是[-40 107 420,53 476 560],至少用27位二进制数表示。本量化器的乘法器使用Vetex-Ⅱ中的18×18硬件乘法器,因此在输入加法器之前需要将数据宽度调整为27bit。加法器输出的27位数据通过移位模块调整为16位数据宽度。

综合考虑工作频率和资源占用率,设计中使用2级流水线来提高性能。

2.3 量化器优化

本量化器一次只能量化一个点,无法满足高质量图像编码的要求。针对高质量图像编码对此量化器进行速度优化,即将n个量化器并联,一个时钟周期计算n个点。n根据实际需要进行选择。考虑到与变换模块的速度匹配,选择16个量化器并联。

3 软核设计及测试

3.1 PLB总线的软核结构

PLB(Processor Local Bus)总线是IBM开发的一种高性能片上总线,主要应用于PowerPC405处理器系统中,它支持32位、64位和128位数据宽度。本设计使用64位总线宽度,最大速据传输速率达800Mb/s。

如图3,PLB的软核设计分为总线接口和H.264整数变换量化模块两部分。PLB总线接口是与硬件体系结构相关的部分,它是整数变换量化模块与PLB总线上其他设备进行交互的桥梁。整数变换量化模块与体系结构无关,它也可以被移植到ARM体系结构中。

利用PLB总线和FPGA威廉希尔官方网站
对H.264整数变换量化软核实现优化设计

整数变换量化模块的硬件结构如图4。寄存器组包含9个32bit的寄存器,0、1、2、3为输入的4×4参差数据寄存器;5、6、7、8为输出数据寄存器;4为控制寄存器,包括go、done、reset、intra、DCT、ZSCAN、QP、datacount,分别对应启动、完成、复位、帧内/帧间、DCT/Hadamard变换、Z扫描输出、量化级数、数据输出计数器。第二个模块对寄存器组中数据进行4×4整数变换,使用1级流水线。第三个模块对输入的整数变换结果按QP进行量化,量化模块中的MF、f、qbits使用FPGA中的查找表保存。数据输出模块受ZSCAN位控制,当ZSCAN=1时,输出数据寄存器中的数据按Z扫描排列;ZSCAN=0时,按矩阵排列。

利用PLB总线和FPGA威廉希尔官方网站
对H.264整数变换量化软核实现优化设计

3.2 软核的测试

首先使用IBM的CoreConnect工具和Modelsim6.0a来仿真设计的软核并使用虚拟平台进行测试,仿真的目的是保证PLB总线接口能被处理器正确访问。仿真测试平台结构如图5所示。通过虚拟处理器将虚拟内存中的数据写入待测软核,然后读取待测软核中的数据并判断是否正确。

利用PLB总线和FPGA威廉希尔官方网站
对H.264整数变换量化软核实现优化设计

仿真通过以后,再将软核集成到系统中,以便验证软核在实际系统中的工作是否符合要求。验证平台系统结构如图6,软核验证使用PC机和目标板相结合的方法,目标板使用Xilinx公司XUP Virtex-II PRO开发板,内部含有两个PowerPC内核。

利用PLB总线和FPGA威廉希尔官方网站
对H.264整数变换量化软核实现优化设计

验证流程如图7。首先通过USB下载目标板程序,程序开始运行以后通过RS232上位机下载待编码的图像参差数据,下载的数据保存在目标板上的256MB DDR SDRAM中。数据下载完毕后,程序将待编码数据依次写入软核并启动转换,并将计算完的数据写入DDR SDRAM,待全部数据编码完毕,PowerPC将处理结果一起发送给上位机。上位机将结果与本机C代码执行结果相比较,最终确认软核是否正确工作。

利用PLB总线和FPGA威廉希尔官方网站
对H.264整数变换量化软核实现优化设计

4 综合结果分析

本设计中的整数变化量化模块在Xilinx的XC2VP30 FPGA中进行综合。XC2P30含有13 696个Slices和136个18×18乘法器。综合工具使用Xilinx的ISE9.1。

整数变换模块综合结果如表1。

利用PLB总线和FPGA威廉希尔官方网站
对H.264整数变换量化软核实现优化设计

对量化器在速度和硬件资源上分别做了优化,表2给出了两种优化的综合结果。

利用PLB总线和FPGA威廉希尔官方网站
对H.264整数变换量化软核实现优化设计

表3给出本设计整数变换量化模块与文献[1]的比较结果。对照发现速度优化软核编码性能远远高于文献[1]的设计,资源优化的软核性能也略高于文献[1]的设计。

利用PLB总线和FPGA威廉希尔官方网站
对H.264整数变换量化软核实现优化设计

软核综合结果如表4。目前该软核中的PLB接口部分资源占用较大,后续工作对这部分进一步优化。

利用PLB总线和FPGA威廉希尔官方网站
对H.264整数变换量化软核实现优化设计

本文将H.264中的整数变换量化与微处理器系统相结合,针对不同的应用场合实现了两个基于PLB总线的H.264 整数变换量化软核,并在Xilinx XUP Virtex-II PRO开发板中做了验证。实验结果表明,两个软核均能在系统中稳定工作,并能满足不同分辨率的实时应用。


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

    关注

    1629

    文章

    21734

    浏览量

    603111
  • 微处理器
    +关注

    关注

    11

    文章

    2261

    浏览量

    82417
  • 总线
    +关注

    关注

    10

    文章

    2879

    浏览量

    88059
收藏 人收藏

    评论

    相关推荐

    基于Blackfin533的H.264编码

    系数逆变换后的重建图像进行滤波;图像缓存管理模块负责管理对参考图像的存取。从图3中可以看出,整系数变换量化结合在一起作为一个模块。主要因为:一方面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

    基于FPGAH.264去块滤波系统的优化设计

    提出一种H.264去块滤波系统的优化设计方法。通过合理设计流水线级数提高并行性,适当增加内部SRAM来提高系统速度和总线利用率,使用一种层次化的有限状态机设计方法,
    发表于 04-21 09:07 33次下载

    H.264视频编码在DM642上的实现优化

    设计并实现了基于DSP 芯片TMS320DM642 的H.264 编码器。详细介绍了H.264 算法在DSP上的移植和优化。为使编码器达到实时应用的要求,采用基于C64x CPU 的软
    发表于 09-03 14:30 23次下载

    基于TMS320DM642平台的H.264编码器优化

    H.264 实时编码器的研究和实现是目前视频通信研究领域的一个热点问题,本文介绍了基于TMS320DM642 平台的H.264 编码器的优化,重点介绍了基于DM642 的
    发表于 12-18 12:13 19次下载

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

    本文提出了基于H.264的逆量化IP的优化结构及其硬件实现。它能够按照标准处理各种4×4块的逆量化,该IP可以嵌入到编码器也能用于解码器,可
    发表于 02-24 11:51 10次下载

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

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

    H.264视频编码器在DM6437上的优化实现

    为了实现基于DSP的H.264视频编码器的实时性能,提出了一系列优化实现方法。首先结合TMS320DM6437硬件特点,描述了X264代码向
    发表于 05-22 15:10 63次下载
    <b class='flag-5'>H.264</b>视频编码器在DM6437上的<b class='flag-5'>优化</b><b class='flag-5'>实现</b>

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

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

    基于DM642的H.264编码算法优化实现

    基于DM642的H.264编码算法优化实现
    发表于 05-18 09:22 1次下载

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

    H.264高效的编码效率是以其高复杂性为代价的,因此制约了它在高分辨率、实时处理等方面的应用。而FPGA器件采用流水控制策略和并行处理方式,可为H.264复杂的编码模块提供硬件加速引擎。变换
    的头像 发表于 08-01 08:04 2330次阅读

    如何在Linux下实现H.264解码器的优化

    H.264解码器进行优化。本文首先分析了H264标准所采用的一些先进威廉希尔官方网站 ,如基于多种运动矢量模块的运动佔计、帧内预测、整数
    发表于 02-25 11:06 5次下载
    如何在Linux下<b class='flag-5'>实现</b><b class='flag-5'>H.264</b>解码器的<b class='flag-5'>优化</b>