摘要:本文提出了基于H.264的逆量化IP的优化结构及其硬件实现。它能够按照标准处理各种4×4块的 逆量化,该IP可以嵌入到编码器也能用于解码器,可以作为ASIC设计中的一个模块,也适用于SOC平 台设计中的硬件部分。在SMIC 0.18um工艺下,Synopsys DC 的综合结果达到频率140MHZ,吞吐率560 Mpixels/s ,占用面积46050um2完全符合标准中的各种档次。
关键词; H.264 逆量化 IP 硬件
引言
H.264是ITU- VCEG(Video Coding Experts Group)和ISO MPEG(Moving Picture Experts Group) 共同制定的最新的视频压缩编码国际标准。高编码压缩效率、友好的面向网络的接口和较低带宽上提供的高质量图像传输使H.264 视频压缩技术已经成为新一代视频解决方案的新宠。其中的量化和变换部分运算量较大,该部分适合用硬件实现以提高系统的速度。本文着眼于逆量化部分的硬件实现,该模块在编码端和解码端中均要用到,故将其设计为一软IP ,能够被灵活应用。
1逆量化过程
逆量化是量化的逆过程,公式Zij=round(Yij/Qstep)是量化过程,Yij是量化输入, Qstep是量化系数,因为H.264把DCT变换中的相乘部分合并到量化过程,为了得到一致的结果,须把逆变换中的相乘部分在逆量化中实现。由逆变换公式:

矩阵Ei的所有元素都是小数,都属于{ab,a2,b2 },将a,b 值代入得{0.32, 0.25, 0.4},用PF表示以上三个值,PF的取值与矩阵中的位置关系如表1-1所示。因为都包含了小数点,所以Qstep和PF的乘积可能会产生更多的小数位,为了减小近似计算带来的误差,使用先放大再缩小的方法,得到H.264标准规定的逆量化系数为Qstep×PF×64,用V表示,于是量化可由下式表示:Wij=Zij×V=Zij×(Qstep*PF*64),Zij是逆量化的输入,Wij是逆量化的输出。不同位置上的系数所乘的系数是不同的,这个由PF体现,对应关系如表1-1,式中的Qstep由表1-2所示,QP值每增加6,Qstep就翻一倍,所以只要规定QP小于6时对应的量化系数,就能通过左移操作实现输入数据与所有逆量化系数相乘的常数乘法运算。文中把QP小于6时对应的逆量化系数用V表示,则Vij=Qstep*PF*64,式中Qstep是QP在0到5范围内的值,即QP=QP%6时对应的Qstep。不同QP%6值,V在不同位置上的取值如表1-3所示。
表1—1 不同位置对应PF值 表1—3 不同位置对应的V值
|
位 置 |
PF |
|
(0,0),(2,0),
(2,2),(0,2) |
0.25 |
|
(1,1),(1,3),
(3,1),(3,3) |
0.4 |
|
其 他 |
0.32 |
|
QP |
(0,0),(2,0),
(2,2),(0,2) |
(1,1),(1,3),
(3,1),(3,3) |
其他 |
|
0 |
10 |
16 |
13 |
|
1 |
11 |
18 |
14 |
|
2 |
13 |
20 |
16 |
|
3 |
14 |
23 |
18 |
|
4 |
16 |
25 |
20 |
|
5 |
18 |
29 |
23 |
表1—2 量化系数和量化值对应表
|
QP |
0 |
1 |
2 |
3 |
4 |
|
QStep |
0.625 |
0.6875 |
0.8125 |
0.875 |
1 |
|
QP |
… |
18 |
… |
24 |
… |
|
QPtep |
… |
5 |
… |
10 |
… |
对不同的4×4块,不同的量化阶数QP,逆量化公式有所不同,归纳如下:
① block_type为Intra_16×16亮度直流系数
当 QP>=12 Wij=Zij×V00<<2floor(QP/6)-2
当 QP<12 Wij=(Zij×V00+21-floor(QP/6))>>(2- floor(QP/6))
② block_type为色度直流系数
当 QP>=6 Wij=Zij×V00<<2floor(QP/6)-1
当 QP<6 Wij=Zij×V00>>1
③ block_type为普通4×4块,则Wij=Zij×Vij<<2floor(QP/6)
逆量化系数的求解过程为:首先根据QP=QP%6和元素当前的位置选择一个在表1-3中的一个数V,再根据当前输入解码块的类型进行移位操作。①输入块是intra_16×16宏块的直流分量(4×4)则对V左移QPY/6位,再右移两位,若QP小于12,则移位前加上2(1-QP/6)也即QP在0到5时加2,在6到11时加1;②如果输入的块是色度信号的直流分量(2×2),则对V左移QPY/6位,再右移一位;③不是以上两种情况,则对V左移QPY/6位即可。
2 硬件结构
2.1 系统结构
本设计采用流水线的结构,每个时钟处理四个象素,只用两级流水,系统结构如图2—1。共有五个模
块,左上模块完成反量化系数的输出,根据QP的值给出不同的系数。模块Data_reg是个数据缓冲器,目的是为了能够与信号QP 和Block_type实现流水。Control singal generator模块产生用于处理特殊4×4块的附加操作信号,当处理的块是intra_16×16宏块的直流分量(4×4)时,则Shift_DC为2,即右移两位。同时,若QP在0到5,则Add_2为1,表示加2,若QP在6到11,则Add_1为1,表示加1;当输入的块是色度信号的直流分量(2×2),则Shift_DC为1,即右移一位;当Blokc_type为普通块时Add_1,Add_2,Shift_DC均为零。Sel_13, Sel_24,Sel_DC为选择信号,用于控制选择与输入数据data相乘的系数。本设计采用列数据输入,而每列数据中奇数行与偶数行的反量化系数以及奇数列与偶数列的反量化系数都是不同的,Sel_13用于1、3行的系数选择,Sel_24用于2、4行的系数选择,而Sel_DC用于处理Block_type为直流分量块时的系数选择。模块16×5Both Multiplier实现反量化相乘,由四个16×5的both乘法器构成。模块shift实现移位操作。

2.2 模块Div_6
该模块实现QP%6与QP/6的输出,因其是常数除法,除数是6,故硬件结构上不需要设计常规除法器来实现,本文采用改进了的阵列除法器实现,将阵列除法器中每一行用超前进位的可控加减法器取代,以减小关键路径,提高速度,如图2—2:被除数是7位二进制数QP,除数为0110,P为加减控制信号,P=1做减操作,为0做加操作,每次操作后高位取反后作为本次的商和下次操作的控制信号P,低位补全四位后再做加减。最后得QP/6的值为q3q2q1q0,QP%6的值为当r1是0时,QP%6等于r1r2r3r4,当r1是1时,QP%6等于r1r2r3r4加上6。

2.3 模块16×5Both Multiplier
该模块由四个16×5both乘法器及一些输入选择逻辑构成,硬件结构如图2—3。乘法器采用基2布什算法,有三个部分积,再通过一个3:2的压缩器,最后用一个超前进位加法得出结果。因为3:2压缩器对三个部分积是错位操作的,故低位可以为Add_1、Add_2留端口,这样可以在不增加逻辑的情况下实现block_type为DC块且QP小于12时的处理。

3验证及结果
本文的逆量化IP验证系统如图3—1所示,testbench产生完备的输入测试数据信号,两个时钟周期后,这些输入数据经逆量化后再输出到testbench,与理想输出数据对比,完成验证。该验证系统在modelsim 5.8下的语句覆盖率(statement coverage)和分支语句覆盖率(branch coverage)均达到了100%。另外,该系统IP在Synopsys DC软件中,用SMIC 0.18um工艺综合,时钟频率达到140MHZ,吞吐率560 Mpixels/s,性能上达到了所有档次要求,包括HDTV 720P,1080i和数字影视格式。

本文作者创新点:H.264标准的高性能是以增加编解码算法的复杂度实现的,业界通常采用多处理器核来实现,但对一些计算量大的模块如果能用硬件实现,则能够提高编解码系统的速度。本文将各种4×4块的逆量化通过选择控制信号进行统一处理,以纯硬件实现,可以作为编解码系统的加速器。其次,本文在各子模块的实现过程中,都采用了优化的硬件结构,在达到高速指标的前提下,减小了模块占用的面积。
4.结语
本文目前只完成前端设计和前端验证,从应用角度,只能作为软IP,软IP有其灵活性的一面,但其最终还是要与具体的工艺相结合才能流片,本文的后续工作将继续完成版图布局布线,布图后的静态时序分析(STA),以及DRC&LVS,并通过MPW流片实现该模块的硬核IP。
参考文献:
[1] 毕厚杰. 新一代视频压缩编码标准——H.264/AVC[M]. 北京:人民邮电出版社. 2005.
[2] 龚国旺. H.264解码器中逆量化、逆变换的硬件实现[D].上海:同济大学,2005.
[3] 杨波,韩立强. 快速实现H264视频编码的研究[J].微计算机信息,2006,10-3:221-223 .
[3] Joint Video Team of ITU-T and ISO/IEC JTC 1,"Draft ITU-T Recommendation and Final Draft International Standard of Joint Video Specification (ISO/IEC 14496-10 AVC)[S]."Joint Video Team(JVT) of SO/IECMPEG and ITU-T CEG.JVT-GOS0,March 2003.
[4]Thomas Wiegand,Gary J Sullivan,Ajay Luthra,et al.Overview of the H.264 video coding standard[J].IEEE Transactions on circuits and systems for video technology,2003,13(7):1-19.
[5]Lin Yi-fan, Zeng Xiao-yang, Chen Jun,Zhang Zhang.A Low Cost design for Optimized IDCT and de-quantization of H.264[C]: 2006 8th International Conference on Solid-State and Integrated Circuit echnology ectronic Version Proceedings Shanghai, 2006
|