AVS环路滤波器的VLSI设计与实现

时间:2022-05-28 08:29:02

AVS环路滤波器的VLSI设计与实现

摘 要:设计并实现了一种适用于AVS高清解码器的环路滤波器。该结构利用将水平边和竖直边相邻块数据分开存储的方法,以及流水线的滤波操作,加快了环路滤波器的处理速度,提高了工作频率。利用片内SRAM部分数据自更新的方法,减少了数据的传输。该VLSI实现采用0.18 μm CMOS工艺综合的最高工作频率为167 MHz,电路规模约36 k等效逻辑门(含片内SRAM)。仿真结果显示,设计的环路滤波器能够对AVS高清视频(1 280×720 60帧/s)进行实时的环路滤波。该环路滤波器可用于AVS高清实时解码器芯片中。

关键词:视频解码器;高清;AVS标准;环路滤波器;VLSI

中图分类号:TN919.8文献标识码:B文章编号:1004373X(2008)1916805

VLSI Design and Implementation of Loop Filter for AVS

LI Xia,CHEN Jie,ZHOU Li,HUANG Xuan

(Institute of Microelectronics of Chinese Academy of Sciences,Beijing,100029,China)

Abstract:VLSI design and implementation of loop filter for AVS high-definition video decoder is presented in this paper.The data which are side by row bound and column bound are stored in different SRAMs to accelerate loop filter processing.The pipeline structure are adopted in calculate unit to improve the frequency.One of SRAM updates part of data from otherSRAM to minimize data transfer.The implementation is described in Verilog HDL,simulated with ModelSim and synthesized using 0.18 μm CMOS cells library by Synopsys Design Compiler.The circuit totally costs about 36k logic gates when working frequency is set to 167 MHz.The circuit processes a macro block using 436 cycles.Simulation results show that the implementation can be used in real-time HDTV(1 280×720 60 f/s) AVS video decoder.

Keywords:video decoder;high-definition;AVS standard;loop filter;VLSI

1 引 言

AVS(Audio Video coding Standard)标准是《数字音视频编解码技术标准》系列标准的简称,是我国第一个拥有自主知识产权的音视频编解码标准,主要面向高清晰度电视(HDTV)、高密度光存储媒体等应用中的视频压缩。与MPEG-2,MPEG-4和H.264相比,AVS的优点包括拥有更好的性能,更低的复杂度,更低的实现耗费等。

AVS的变换算法采用了基于8×8块的整数离散余弦变换(Discrete Cosine Transform,DCT)。由于基于块的DCT的非覆盖特性和基于块的量化,在压缩率高的情况下块效应就会明显。为了减小块效应,AVS引入了环路滤波技术以获得更好的主观视觉效果[5]。

AVS解码器的设计通常采用软硬件协同设计的方法――即在处理器周围增加一些专用的硬件加速器,由硬件加速器完成相对独立的、运算量大的操作,处理器负责运算量小但控制复杂的操作。软硬件协同设计的方法一般把环路滤波作为一个硬件加速器进行硬件实现[3,8,9]。

本文设计了一种AVS的环路滤波器的VLSI结构,利用了水平方向相邻块数据和竖直方向相邻块数据分开存储的策略,以及流水线的滤波操作,充分利用了SRAM的带宽资源,加快了环路滤波器的处理速度,提高了工作频率。采用了文献[7]中提出的片内SRAM部分数据自更新的方法,减少了对片外存储器的访问。该设计可以在处理器――数字信号处理器(Digital Signal Processor,DSP)的控制下进行实时的环路滤波处理,可以很容易地嵌入到AVS解码器SoC(System on Chip)中。

2 环路滤波算法

标准规定:宏块内部各个8×8块的边界,以及当前宏块与相邻宏块的上边界和左边界都应进行滤波。环路滤波以宏块为单位,按照光栅扫描顺序依次处理。图像中每个宏块的滤波过程如下:对亮度和色度分别做环路滤波,如图1所示,首先从左到右对垂直边界滤波,然后从上到下对水平边界滤波[1]。

图1 宏块的滤波边界

是否进行环路滤波取决于边界强度(Boundary strength,Bs)和边界两边样本值。边界强度的确定过程如图2所示[4]。色度块的边界强度与对应位置上亮度块的边界强度相同。

图2 边界强度的确定过程

图3[3]显示了水平或垂直边界两侧的块P和块Q的6个样本点{p2,p1,p0,q0,q1,q2}。用P0,P1,Q0和Q1分别表示p0,p1,q0和q1滤波后的样本值。根据Bs和两个域值α,β的取值判断是否需要对边界两边的样本进行滤波,如果(Bs≠0) &&(|p0-q0|

Bs=2时,对亮度块边界两边的样本p0,p1,q0和q1的滤波过程如下[1]:

定义:

ap=|p2-p0|,aq=|q2-q0|.

if(ap

P0=(p1+2×p0+q0+2)2

P1=(2×p1+p0+q0+2)2

}

else

P0=(2×p1+p0+q0+2)2

if(aq

Q0=(q1+2×q0+p0+2)2

Q1=(2×q1+q0+p0+2)2

}

else

Q0=(2×q1+q0+p0+2)2

其中P0和Q0分别为p0和q0滤波后的值,P1和Q1为p1和q1滤波后的值。如果在上面的滤波过程中P1(Q1)不被赋值,则不对p1(q1)滤波;色度块边界两边的样本p0和q0采用同样的方法滤波,不对p1和q1滤波。

图3 边界两边的像素样本

Bs=1时,对p0和q0滤波的计算过程如下[1]:

令delta=Clip3(-C,C,(((q0-p0)×3+(p1-q1)+4)3))

P0=Clip1(p0+delta)

Q0=Clip1(q0Cdelta)

然后根据如下条件判断是否需要对p1和q1滤波:

(1) 如果为色度边界,不对p1和q1滤波。

(2) 如果在亮度边界处有ap

P1=Clip1(p1+Clip3(-C,C,(((P0-p1)×3+(p2-Q0)+4)3)))

(3) 如果在亮度边界处有aq

Q1=Clip1(q1-Clip3(-C,C,(((q1-Q0)×3+(P0-q2)+4)3)))

上述滤波过程中,参数C由两个块的量化参数QPP和QPQ和图像头中的alphacoffset参数确定。

3 环路滤波器整体架构

本文所设计的环路滤波加速器是处理器(DSP)+硬件加速器软硬件协同设计的AVS解码器中的一部分,它在解码器中的位置见图4。

图4 AVS解码器体系结构

从图4可见环路滤波与像素重建和帧存储器SDRAM有数据交互,还有来自处理器DSP的参数和控制信号。由于高清视频的数据量大,因而对解码器的数据带宽要求很高。通常高清解码器的数据位宽为32 b才能满足实时解码的要求。图4中环路滤波的数据位宽为32 b。

图5为环路滤波器的系统架构。SRAM1,SRAM2和SRAM3是片内的单端口SRAM,用来存储当前MB的重建像素和当前MB滤波涉及到的左邻块和上邻块数据。由于边界强度Bs=1和Bs=2时的滤波计算不同[1],所以需要设计两个不同的运算单元进行滤波计算。Bs1为Bs=1时的滤波计算单元,Bs2为Bs=2时的滤波计算单元。Reg1,Reg2,…,Reg12为12个32 b的寄存器,存储滤波中间数据。控制器接受从DSP发送的命令和参数,配置和控制环路滤波器的处理时序。

图5 环路滤波器系统架构

3.1 SRAM的存储方式

SRAM1,SRAM2和SRAM3用来存储当前MB的重建像素和当前MB滤波涉及到的左邻块和上邻块数据。当前MB滤波涉及到左邻块的右边三列数据,由于本设计中的数据位宽为32 b,所以存储了左邻块的右边四列数据,即图6中的数据块L0和L1(色度为L4和L5),存储了上邻块的最后三行数据,即图6中的U0和U1(色度为U4和U5)。

图6 SRAM中数据的存储方式

为了加快环路滤波的处理速度,把边界两边的数据块存储到不同的SRAM中,这样就可以在同一时刻访问边界两边的数据,加快数据的存取。把来自像素重建的数据和来自SDRAM的像素保存到不同的SRAM中,使得这两路输入数据不存在时序上的限制。3个SRAM数据的存储方式见图6所示,图6左边是滤波当前MB设计到的数据,右边是数据在SRAM中的存储方式。SRAM1存储背景为斜条的数据块,SRAM2存储背景为斜方格的数据块,SRAM3存储背景为点阵的数据块。

为了减少数据传输,直接用SRAM中数据对数据块L0,L2,L4,L5进行更新[7]。用图7中背景为斜条的数据块更新与其位置对应的L0,L2,L4和L5。更新的操作在从DSP加载参数和命令时实现,不会额外增加该模块的滤波处理时间。

图7 SRAM局部数据的自更新

3.2 环路滤波器的滤波时序

根据标准对滤波顺序的规定,本设计先滤波亮度分量后滤波色度分量,先滤波色度Cb后滤波色度Cr。亮度分量边界的滤波顺序为:

BsV00BsV10BsV01BsV11BsH00BsH01BsH10BsH11。

色度分量Cb(或Cr)先滤波竖直边后滤波水平边。

3.2.1 竖直边界的滤波时序

由于SRAM都是单端口的,每个时钟周期只能对它访问一次。为了充分利用SRAM的带宽,本设计中竖直边的滤波时序如图8所示。图8中“Rd”表示读SRAM,用一个时钟周期就可以把竖直边界两边的两行数据读出,因为边界两边的数据块存储在不同的SRAM中;“Wr”表示写SRAM,用一个时钟周期也可以把滤波后的两行数据写入SRAM;“0”表示无操作,在等待下个周期把SRAM的输出数据存储到寄存器中。滤波的计算是两级流水,第一级流水计算出P0和Q0,第二级流水计算出P1和Q1。“1C”表示第一级流水;“2C”表示第二级流水。在第二级流水计算后把计算的结果写入SRAM。这种时序每个时钟周期对SRAM访问(读取或写入)一次,充分利用了SRAM的带宽,滤波计算采用两级流水结构提高了模块的工作频率。两行数据并行的滤波处理缩短了竖直边的滤波时间。

与亮度分量的边界不同,色度分量的每个边界有2个Bs,所以滤波色度边界时滤波一半数据后Bs就要更换。竖直边的滤波在第10个时钟周期更换Bs值,即图8中时间轴的竖线标志处。

从图8可以计算出每条竖直边滤波需要18个时钟周期,6条竖直边共需18×6=108个时钟周期。

图8 竖直边的滤波时序

3.2.2 水平边界的滤波时序

为了充分利用SRAM的带宽,并且只有一套滤波计算单元(即设计中只包含一个Bs1的计算单元和一个Bs2的计算单元),本设计中水平边的滤波时序如图9所示。图9中“Rd”,“Wr”,“0”,“1C”和“2C”的表示与图8中相同。“Rd1”,“Rd2”,“Rd3”读取SRAM三次,把水平边上边三行和下边三行数据读出。水平边和竖直边滤波计算单元(即Bs1的计算单元和一个Bs2的计算单元)是同一个计算单元。

这种时序每个时钟周期对SRAM访问一次,充分利用了SRAM的带宽,只有一套滤波计算单元减小了环路滤波器的资源开销。两列数据并行的滤波处理缩短了水平边的滤波时间。

若为色度边界则在第9个时钟周期更换Bs值,即时间轴的竖线标志处。

从图9可以计算出每条水平边滤波需要14个时钟周期,6条水平边共需14×6=84个时钟周期。

图9 水平边的滤波时序

对一个MB进行环路滤波处理,需要96个周期输入6个block的重建数据,需要24个周期输入来自SDRAM的数据,需要108个周期输出滤波后的数据,需要108个周期进行竖直边的滤波,需要84个周期进行水平边的滤波,还需要40个周期从DSP加载参数和配置整个环路滤波加速器。由于6个block的重建数据输入和来自SDRAM的数据输入不存在时序约束,所以在输入6个block的重建数据的同时输入来自SDRAM的数据,减少了输入时间延时。综上所述,对一个MB进行环路滤波处理最多需要96+108+108+84+40=436个时钟周期。

3.3 寄存器中的数据存储和更新

有12个32 b的寄存器存储从SRAM中读出的数据,即Reg1,Reg2,…,Reg12。

竖直边滤波时,从SRAM读出的边界左边的32 b数据存储到Reg0中,竖直边界右边的32 b数据存储到Reg1中。进行滤波处理时对Reg0和Reg1进行滤波。滤波后的输出数据直接存储到对应的SRAM中。

图10 竖直边滤波时寄存器中数据的存取

水平边滤波时,先从SRAM中读出边界两边的各三行数据,然后进行滤波,滤波后的数据先保存到相同的寄存器中,整个水平边滤波完后再输出到SRAM,见图11。SRAM的数据按行存储到寄存器中,寄存器中滤波后的数据也是按行输出到SRAM,但对寄存器中数据的滤波是按列进行的,12个寄存器实现了行进列出和列进行出的转置功能。

水平边滤波时,先滤波左边的4列(即图11中的第1、第2、第3、第4列),后滤波右边的4列(即图11中的第5、第6、第7、第8列)。滤波左边4列时,从SRAM读出的边界上边的三行数据存储到Reg0,Reg2和Reg4中,下边的三行数据存储到Reg1,Reg3和Reg5中,然后按第1列,第2列,…,第4列的顺序进行列的滤波,滤波后的数据保存到寄存器中相同的位置。滤波右边4列的操作与左边4列相同。

图11 水平边滤波时寄存器中数据的存取

由于水平边滤波只修改边界两边的2行数据,Reg0,Reg5,Reg6,Reg11的数据未被修改,所以往SRAM中写滤波后的结果时无需写入这4个寄存器的数据。

4 仿真和综合结果

用Verilog HDL语言描述了环路滤波模块的结构,用ModelSim进行仿真,用AVS测试码流“foreman_cif”进行测试,导出参考C程序[2]的数据和ModelSim仿真数据进行对比,对比结果证明其功能正确。在0.18 μmCMOS工艺下用Synopsys公司的Design Compiler进行综合,最高工作频率是167 MHz,电路规模是3.6万门(包括片上SRAM)。工作在167 MHz的解码器解1 280×720 60帧/s的码流,处理一个MB的时间为773个时钟周期,本设计滤波一个MB的时间为436个时钟周期,所以本设计能够对1 280×720 60帧/s的高清视频进行实时的环路滤波。

表1比较了本设计与文献的性能。由于本设计中的滤波运算单元采用了两级流水线设计,工作频率是最高的;由于采用了将水平边和竖直边相邻块数据块分开存储的方法,优化了竖直边和水平边的滤波时序,MB的处理时间是最短的。

表2比较了本设计与文献的存储器资源利用情况。若把当前MB存储到模块内的SRAM中,本设计用的存储资源较少,因为本设计中的数据位宽为32 b,减少了冗余数据的存储。

表1 设计性能的对比

对比参数文献[3]文献[4]文献[5]文献[6]本文

工作频率 /MHz150140108108167

电路规模(等效逻辑门)38k30k--36k

MB处理时间(包括输入输出延时)(cycle)460---436

MB处理时间(不包括输入输出延时) (cycle)276-316293261

解码码流及帧率1 280×720 60帧/s720p/1 080i1 920×1 080-1 280×720 60帧/s

5 结 语

本文设计了一种应用于AVS高清解码器的环路滤波硬件加速器。该设计利用将水平边和竖直边相邻块数据分开存储的方法,优化了竖直边和水平边的滤波时序,缩短了一个MB的处理时间;滤波运算单元采用

了两级流水线设计,提高了模块的工作频率;优化的

竖直边和水平边的滤波时序充分利用了SRAM的带宽,减小了SRAM的复杂度和电路规模;利用片内SRAM部分数据自更新的方法,减少了数据的传输。最后在0.18 μmCMOS工艺下用DC进行综合,最高工作频率为167 MHz,电路规模约36 k等效逻辑门(含片内SRAM)。仿真结果显示,本文设计的环路滤波器能够对AVS高清视频(1 280×720 60帧/s)进行实时的环路滤波。该环路滤波器可用于AVS高清实时解码器芯片中。

表2 存储资源利用情况对比

当前MB存储位置存储资源

文献[3]模块内部的SRAM

1个51×64 b双端口SRAM;1个51×64 b双端口SRAM3×64 b的寄存器堆

文献[4]模块外部存储器3个16×64 b双端口SRAM

文献[5]模块外部存储器2个8×8 b的寄存器堆;1个16×64 b单端口SRAM;

文献[6]模块内部2个8×8 b的寄存器堆;

1个48×64 b单端口SRAM;

1个3 480×24 b单端口SRAM;

1个32×64 b单端口SRAM;

1个16×64 b的fifo

本文模块内部2个64×32 b单端口SRAM;

1个48×32 b单端口SRAM;

12×32 b的寄存器堆

参考文献

[1]数字音视频编解码技术标准工作组.先进音视频编码――第2部分:视频[S].2005.

[2]AVS 1.0 RM 52j[S].2007.

[3]Bin Sheng,Wen Gao,Di Wu,A Platform-based Architecture of Loop Filter for AVS [J].IEEE International Conference on Signal Processing,2004,1:571-574.

[4]代建伟,黄晁,夏宇闻.适用于AVS的自适应环路滤波器硬件设计[J].微电子学与计算机,2005,22(12):123-126.

[5]叶姜莉,龙沪强,刘佩林.一种适用于AVS自适应环路滤波器的VLSI实现[J].信息技术,2007,31(2):62-64,82.

[6]黄中华,支b.基于FPGA的AVS环路滤波器设计与实现[J].计算机工程,2007,33(6):222-224.

[7]Tsu-Ming Liu,Wen-Ping Lee,Ting-An Lin.A Memory-Efficient Deblocking Filter for H.264/AVC Video Coding [C].IEEE International Symposium on Circuit and System,2005,3:2 140-2 143.

[8]Shih-Chien Chang,Wen-Hsiao Peng,Shih-Hao Wang,et al.A Platform Based Bus-interleaved Architecture for De-blocking Filter in H.264/MPEG-4 AVC [J].IEEE Transaction on Consumer Electronics,2005,51(1):249-255.

作者简介 李 霞 女,1982年出生,硕士研究生。研究方向为多媒体处理器SoC设计。

陈 杰 男,研究员。研究方向为通信基带SoC设计、多媒体处理器SoC设计与高性能数字信号处理器的研发。

周 莉 女,副研究员。研究方向为多媒体处理器SoC设计与数字版权管理的研发。

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文

上一篇:相敏检波电路鉴相特性的仿真研究 下一篇:基于C/S模式与B/S模式结合的企业投资项目信息...