您的位置 首页 电源

根据PLB总线的H.264整数改换量化软核的规划

提出了在FPGA上实现H.264中整数变换量化的方法,设计了基于动态数据宽度和流水线技术的软核(IP),在处理速度和硬件资源方面分别进行优化。此软核作为PowerPC的一个硬件加速模块在Xilinx

H.264以其高杂乱度为价值获得了优异的编码功率, 其间除部分操控流程的杂乱模块外,H.264中的许多模块适合用硬件完结。运用中一般运用CPU+FPGA结构,将耗时较多的模块用FPGA完结,CPU仅担任一些低杂乱度的算法和编码流程参数的设置。

参考文献[1]、[4]、[5]介绍了整数改换量化的硬件完结,但没有考虑数据在处理过程中的宽度问题,因而会形成FPGA资源的糟蹋。本文充分考虑了数据在处理过程中的动态规模,运用更少的FPGA资源来完结H.264中的整数改换量化模块。

结合实践运用,文中对该软核在核算速度和硬件资源方面别离做了优化。经过速度优化的软核功能显着优于文献[1]、[4]、[5]中的规划,经过耗费资源优化的软核也彻底能够担任高分辨率的实时编码。

1 整数改换

在完结帧内和帧间猜测今后,需求对图画参差数据进行整数改换和量化,使图画数据的能量会集到一小部分系数上,进一步下降码流速率。

1.1 整数改换原理

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

其间:

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

避免解码后的数据失配,H.264对4×4 DCT中的A进行改造,选用整数DCT技能,取 则(1)式可分解为:


与E的乘法被归纳到量化运算中,这样(CXCT)中只剩下整数的加法、减法和移位运算,因而能够大大下降硬件完结的杂乱度,改换成果最多只需求16位的数据。

1.2 整数改换硬件结构

本规划H.264中的4×4整数改换选用蝶形快速算法,如图1所示。首要对4×4块的每一行做一维整数改换,然后再对行改换成果做列的一维整数改换,终究得到4×4的整数改换成果。图1模块需求32个加法器和32个减法器,这样在一个时钟周期内就能够完结一个4×4块的整数改换。

整数改换一般的做法是悉数运用16位加法器和减法器,这样能够简化规划。然而在实践运用中,输入的像素点规模是[0,255],假如榜首级改换就运用16位,则数据宽度无疑会占用更多的硬件资源。依据剖析可知,核算一维行改换今后,数据输出规模为[-765,1020],只需运用11位二进制数表明。核算一维列改换今后,数据输出规模是[-3 060,4 080],需求运用13位二进制数表明。因而整数改换模块的数据宽度能够承认为:进行一维行改换时的加法器和减法器运用11位数据宽度,一维列改换的加法器和减法器运用13位数据宽度。

因为数据单向活动的特色,即没有反应,能够运用流水线进步体系功能。运用流水线时需求留意前后模块处理速率的匹配。如本模块中内行改换与列改换刺进缓存构成前后模块,前后模块用同一时钟,而且整个模块的作业频率以最低作业频率的模块来承认。本规划用1级流水线来进步作业频率。假如流水线级数过多会耗费很多FPGA资源,仿真试验证明,此模块运用1级流水线时,只添加很少FPGA资源。

2 量化

为了进一步下降图画传输码率,需求对图画进一步紧缩,办法是运用改换编码及量化技能。

2.1 量化原理

H.264中选用标量量化器。标量量化器的原理是:
  
其间,y为输入样本点编码,Qstep为量化步长,FQ为y的量化值。H.264规范支撑52个量化步长。量化的简化操作如下:
  
其间,Wij为输入样本点编码,MF是规范中界说的值,QP为量化系数,f为偏移量,对帧内猜测图画块f取2qbits/3,对帧间猜测图画块f取2qbits/6。

2.2 量化器完结

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

为了硬件资源耗费最少,需求剖析数据在核算过程中的动态规模,运用最少的数据宽度来表明传输的数据,然后运用最少的硬件资源来完结组合运算逻辑。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体系结构中。

整数改换量化模块的硬件结构如图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时,按矩阵摆放。

3.2 软核的测验

首要运用IBM的CoreConnect东西和Modelsim6.0a来仿真规划的软核并运用虚拟渠道进行测验,仿真的意图是确保PLB总线接口能被处理器正确拜访。仿真测验渠道结构如图5所示。经过虚拟处理器将虚拟内存中的数据写入待测软核,然后读取待测软核中的数据并判别是否正确。

仿真经过今后,再将软核集成到体系中,以便验证软核在实践体系中的作业是否符合要求。验证渠道体系结构如图6,软核验证运用PC机和方针板相结合的办法,方针板运用Xilinx公司XUP Virtex-II PRO开发板,内部含有两个PowerPC内核。

验证流程如图7。首要经过USB口下载方针板程序,程序开端运转今后经过RS232从上位机下载待编码的图画参差数据,下载的数据保存在方针板上的256MB DDR SDRAM中。数据下载结束后,程序将待编码数据顺次写入软核并发动转化,并将核算完的数据写入DDR SDRAM,待悉数数据编码结束,PowerPC将处理成果一同发送给上位机。上位机将成果与本机C代码履行成果相比较,终究承认软核是否正确作业。

4 归纳成果剖析

本规划中的整数改变量化模块在Xilinx的XC2VP30 FPGA中进行归纳。XC2P30含有13 696个Slices和136个18×18乘法器。归纳东西运用Xilinx的ISE9.1。

整数改换模块归纳成果如表1。

对量化器在速度和硬件资源上别离做了优化,表2给出了两种优化的归纳成果。

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

软核归纳成果如表4。现在该软核中的PLB接口部分资源占用较大,后续作业对这部分进一步优化。

本文将H.264中的整数改换量化与微处理器体系相结合,针对不同的运用场合完结了两个根据PLB总线的H.264 整数改换量化软核,并在Xilinx XUP Virtex-II PRO开发板中做了验证。试验成果表明,两个软核均能在体系中安稳作业,并能满意不同分辨率的实时运用。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/195841.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部