`
mmdev
  • 浏览: 12919939 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

AVS游程解码、反扫描、反量化和反变换优化设计

 
阅读更多
中图分类号:TN919.81   文献标识码:A   文章编号:1009-2552 (2007) 02-0054-04
AVS游程解码、反扫描、反量化和反变换优化设计
赵 策, 刘佩林
(上海交通大学电子工程系, 上海200240)
摘 要: 提出了一种适用于AVS的游程解码、反扫描、反量化和反变换硬件结构优化设计方案。
根据AVS整数变换和量化的特性, 设计了可工作在不同模式的存储器阵列, 既可用来进行反变
换器所需的转置操作, 又可用来存储中间结果, 将游程解码、反扫描和反量化合并为一个流水
线单元并行处理。该设计省去了存储中间结果所需的大量存储器, 加快了处理速度, 满足高清
视频的处理要求。该设计通过了FPGA验证, 综合结果表明, 其逻辑门数仅为9076, 最高工作频
率大于200MHz。
关键词: AVS; 视频解码; 硬件结构; 存储器阵列; 反量化; 反变换
Hardwarearchitectureoptimizingforrunlenth decoding,
inversescan ,inversequantizationandinversetransforminAVS
ZHAOCe,LIUPei 2lin
(DepartmentofElectronicEngineering ,ShanghaiJiaotongUniversity ,Shanghai200240 ,China)
Abstract: Anoptimizedhardwarearchitectureofrunlenthdecoding,inversescan,inversequantizationand
inversetransforminAVSvideodecoderispresented.Accordingtothespecificintegertransformandquantiza 2
tionalgorithmusedinAVS,aparallelmemoryarrayisdesignedtoperformthetransposeoperationwhilepro 2
vidingaplatformforacombinedblock-levelpipelinestage,whichintegratedrunlengthdecoding,inverse
scanandinversequantizationmoduletogether.Thisarchitectureresultedinhigherprocessingspeedandless
intermediatememoriesandfulfilledtherequirementofhighdefinitionvideoprocessing.Thewholedesignhas
beenverifiedbyFPGA.Thesynthesisresultshowsthatthegatecountisonly9076whilethefrequencyismore
than200MHz.
Keywords : AVS;videocoding;hardwarearchitecture;memoryarray;inversequantization;inverse
transform
0  引言
AVS(先进音视频编码标准) 是用于数字音视频
的压缩、解压缩、处理和表示的技术方案,编码效率
比第一代标准(MPEG-2 ) 高,而且技术方案简洁,芯
片实现复杂度低,是一套我国具备自主知识产权的
包含系统、视频、音频、媒体版权管理在内的完整标
准体系,目前视频部分已正式成为国家标准[1] 。
CongPeng 等人对AVS解码器设计结构进行了
研究[2] ,但其文中未涉及游程解码、反扫描、反量化
和反变换部分,这些单元耗费资源和处理时间,若不
进行合理设计则难以完成高速视频处理。郑国卿和
BinSheng 等人的论文[3-4] 中分别提出了并行处理反
扫描和反量化的结构,这些结构有一定并行性,但为
满足流水线设计要求,各处理单元间需设置大量存
储空间。另外,经过变换编码一个像素块中大部分
数据均为0, 但上述结构中均需对所有系数进行反
量化处理,存在较大时间冗余。
本文基于AVS编解码标准,利用其所采用的带
预缩放的整数余弦变换技术( PIT,Pre-scaled
收稿日期: 2006-08-18
作者简介: 赵策(1983- ) ,男,硕士研究生,主要研究方向为数字视
频压缩编码、VLSI设计。
— 45 —
© 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
http://www.elecfans.com/ 电子发烧友 http://bbs.elecfans.com 电子技术论坛
Integer Transform) [5] ,设计了一种并行处理结构,利
用高速并行反变换操作所需的转置寄存器堆作为共
用存储器阵列,将游程解码、反扫描、反量化和反变
换融合在一个流水线单元中,可以节省存储空间、提
高处理速度。
1  Zig-Zag 扫描、整数变换
1.1  Zig-Zag 扫描
变换编码的目的在于去除系数之间的相关性,
以提高压缩效率。一般而言,变换系数量化后,零值
系数占较大比例。为了更有效地进行编码,通常在
变长编码之前,要先进行Zig-Zag 扫描和游程编
码,可选择帧扫描模式或场扫描模式。图1 为按帧
扫描顺序排列量化后系数示意图,扫描顺序上最高
频的非零系数称为截点(如图1 中粗箭头终点处的
圆点所示) ,从左上角开始结束于截点的粗线条扫过
的路径称为有效扫描路径,有效扫描路径上的系数
称为有效系数。利用5 个CIF 序列各100 帧测试,
编码采用全I 帧,测试结果如图2 所示,像素块内有
效系数个数的平均值一般小于20, 最大不超过25。
图1  Zig-Zag 扫描示意图
图2  变换量化后块内有效系数个数统计
变换编码后的系数幅度从高频交流系数向低频
交流系数呈现由小到大递增的趋势,AVS 按有效扫
描路径的逆序从高频到低频进行游程编码,使得已
编码系数的幅度一般小于相邻的后编码系数的幅
度,从而便于动态切换码表,使熵编码器的性能更加
逼近理论信息熵[6] ,因此一般在解码器中的游程解
码之前,需要先存储变长解码结果,再按从低频到高
频的顺序读出。
1.2  带PIT的8 ×8 整数变换技术
AVS采用8 ×8 整数变换。通过系数调整和分
解,可保证变换和反变换的核心操作没有乘法运算,
只有加法和移位,降低了运算复杂度。
由于各变换基矢量的模大小不一,因此编码时
必须对变换系数进行不同程度的缩放以达到归一
化。H.264PAVC规定编解码端都需要归一化[7] ,即
在编码端进行正缩放和量化,在解码端进行反缩放
和反量化;而AVS采用了带PIT(预缩放整数变换)
的8 ×8 整数余弦变换技术,即正向缩放、量化、反向
缩放结合在一起,而解码端只进行反量化,不再需要
反缩放,即归一化集中在编码端。PIT 的使用可以
简化解码端运算和存储,而性能又不会受影响[5] 。
因此,AVS解码时一个像素块内系数的量化参数相
同,所以所有系数的反量化公式均相同,与系数具体
位置无关。
2  硬件结构
本文设计的结构如图3 所示,模式控制器控制从
变长解码FIFO中读出成对的游程Run, 幅度Level, 块
结束标志和扫描方式;反量化器对幅度Level 值进行
反量化,得到变换系数,并由链式移动存储控制器控
制存入并行设计的存储器阵列,通过可配置存储器阵
列进行并行游程解码、反扫描;完成一个块的游程解
码和反扫描后,一维反变换单元从存储器阵列中读出
行数据,进行一维行反变换,其结果经过存储器阵列
转置操作后并行输出,进行一维列反变换,输出残差
系数。下面将针对重点模块详细介绍。
图3  设计结构框图
2.1  一维反变换器
AVS反变换处理的像素块为8 ×8 大小,顺序地
对每个系数逐个做反变换,难以满足实时处理高速
视频码流的要求。因此,必须设计并行的反变换结
构,其中包括所谓的“行列”结构,即重复使用同一个
一维反变换单元,先对像素块每一行做一维反变换
(行反变换) ,再对其结果的每一列做一维反变换(列
— 55 —
© 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
http://www.elecfans.com/ 电子发烧友 http://bbs.elecfans.com 电子技术论坛
反变换) 。
毛讯等人对MPEG-2 中的IDCT硬件结构做了
详细研究[8] ,提出了所谓“脉动阵列结构”,即将反变
换蝶形运算安排为三级流水线,每个时钟周期可以
计算8 个数据。AVS中采用的是8 ×8 整数变换,因
此本设计中也采用了三级流水线的阵列结构实现高
速并行操作。
图4 表示本设计完成一个块的反变换处理的时
序安排,其中以数据并行输入反变换单元作为起始
时刻。三级流水线阵列结构需3 个时钟周期才能输
出结果,而AVS标准中所规定的一维反变换后处理
操作也需要1 个时钟周期,所以数据输入4 个时钟
周期后开始输出行反变换结果,并同时存入转置单
元;第12 个时钟后行变换完成,结果存储完毕,经过
转置后的结果即可再次输入一维反变换单元,开始
列变换;第16 个时钟周期可开始输出列反变换结果
(即残差数据) ,第24 个时钟周期结果输出完毕,因
此完成一个8 ×8 像素块的反变换处理的时间固定
为24 个时钟周期。
图4  并行反变换单元的时序安排
2.2  存储器阵列
上述反变换处理单元中必须对结果作转置处
理,该转置单元要存储一个块的数据,且应按行或列
并行的方式输入输出数据。该单元可以用RAM来
实现,但由于RAM读写的时序限制,一般需要使用
多块RAM,转置操作需要的时间也较长。
本文采用寄存器阵列作为转置单元,由8 ×8 个
寄存器单元完成,省去地址运算,控制明确。其结构
图如图5 所示,虚线所示为Zig-Zag 扫描中常用的
帧扫描顺序。阵列中每个寄存器单元的组成如图6
所示,由1 个选择器控制1 个寄存器,所有寄存器单
元的模式信息相同,并可根据模式信息,选择空闲数
据、链式移动存储数据、行数据和列数据4 种输入中
的一种进行存储。
空闲数据即为该寄存器中原来的数据;链式移
动存储数据即扫描顺序上前一个单元中的数据,0
号寄存器单元的链式移动存储数据即为存储器阵列
的串行输入数据;列数据即存储器阵列中紧邻右侧
的寄存器单元中的数据,最后一列的寄存器单元的
列数据全部为0; 行数据即存储器阵列中紧邻下方
的寄存器单元的数据,最后一行的寄存器单元的行
数据为存储器阵列的并行输入数据。
图5  存储器阵列示意图
图6  寄存器单元结构
从整体来看,存储器阵列工作在行模式时,其行
数据可从第一行并行读出,从最后一行并行输入;工
作在列模式时,其列数据可从第一列并行输出,从最
后一列并行输入;工作在链式存储模式时,即按照图
5 中虚线所示的扫描顺序,将串行输入数据存入0
号寄存器,将0 号寄存器内数值存入1 号寄存器,1
号寄存器内数值存入8 号寄存器⋯⋯62 号寄存器
内数值存入63 号寄存器,上述63 个存储器存储过
程为并行处理。
2.3  链式移动存储控制器、模式控制器
模式控制器根据变长解码输出的块结束标志,向
存储器阵列提供工作模式信息、向一维反变换器提供
启动和停止信息,向变长解码FIFO输出读控制信号。
链式移动存储控制器中设置游程计数器,以每次
从FIFO中读取的新的游程Run 值作为初值,对应的
Level值完成反量化时开始计数,并控制将反量化后
— 65 —
© 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
http://www.elecfans.com/ 电子发烧友 http://bbs.elecfans.com 电子技术论坛
有效的变换系数存入存储器阵列,之后存入0; 每存
一次数据,计数值减少1, 已经存入存储器阵列的数
据就沿扫描顺序向后移动一次。到计数值减小为0
时,已完成该(Run,Level ) 对的反量化和游程解码。
随着不断从变长解码FIFO中读入新数据,重复
以上操作直至读入块结束标志时,有效路径上所有
变换系数均已存放在存储器阵列中对应位置,而由
于其它位置上的寄存器均已被提前初始化为零,所
以此时已完成该块内所有系数的并行游程解码、反
扫描和反量化,模式控制器设置存储器阵列工作模
式为行模式,开始进行行反变换。
3  结果比较与分析
3.1  处理周期和存储空间统计
在郑国卿和BinSheng 等人的设计中,其流水线
单元的处理时间固定为一个块内的像素数目,即64
个时钟周期。同时为顺利完成流水线操作,各处理
单元之间均需要设置乒乓RAM或者FIFO[3-4] 。若
需处理高速视频码流,这两个结构的反变换单元至
少需要64 个寄存器或大量RAM完成转置操作。
本文设计的结构则将游程解码、反扫描、反量
化、反变换融合为一个流水线处理单元。如前文统
计,变换编码后一个块内有效系数个数一般小于
25, 按本文设计的并行游程解码、反扫描和反量化所
需时钟周期数同样小于25, 而反变换单元的处理时
间固定为24 个时钟周期,所以完成一个块的时间小
于49 个时钟周期,同时也为作为上一个流水线单元
的变长解码单元省去了堆栈操作相应的操作时间;
本文结构仅需要1 个16 单元的FIFO存储变长解码
数据,而将反变换所需的64 个寄存器作为整个流水
线单元的共用存储器阵列。三种设计结构的处理周
期和存储空间统计对比如表1 所示。
表1  本设计结构与其他设计结构的比较
名称处理周期中间存储空间转置单元
郑国卿设计64 cycles 4 个64×13bitRAM
2 个64 ×14bitRAM
64 个20bit 寄存器
BinSheng 设计64 cycles 2 个64 ×13bit 堆栈
2 个64 ×14bitRAM
64 个20bit 寄存器
本文设计小于49 cycles 1 个16 ×13bitFIFO 64 个20bit 寄存器
3.2  仿真与综合结果
按照49 个时钟周期的处理时间,针对HDTV
1920 ×1080Pixel@30Frames PSecond 和4∶2∶0 的图
像格式,可计算得到
B=
1920 ×1080PixelsPFrame×30FramesPSecond×1.5
8 ×8PixelsPBlock
=
1458000BlocksPSecond
B 为每秒钟处理的块数。由于4∶2∶0 图像格式中每
两个亮度块对应一个色度块,故有一个1.5 的系数。
所以工作频率
f =49CyclesPBlock ×B=71.4MHz
工作频率较低,有利于降低功耗。
对本文所述结构用VerilogHDL 语言进行了实
现,用Modelsim进行了仿真,然后与AVS参考软件
rm52c 生成的测试向量进行对比,仿真验证结果表
明,该结构可以满足视频标准AVS的解码要求。
对于上述设计,采用XilinxISE7.1i 综合工具,选
择Xilinx公司的virtex4 系列中的xc4vlx80器件,进行
了综合,综合后的资源占用情况如表2 所示,综合布
线结果表明,关键路径时延为3.710ns, 该结构的最高
工作频率高于200MHz,总的等效门数为9,076 门。
表2  本设计硬件综合结果
宏单元数量具体器件数量
ROMs 1 BELS 653
Registers (bits) 2244 FlipFlops 666
Multiplexers 65 IOBuffers 736
Adders 62 FIFO 1
Multipliers 1
Comparators 2
4  结束语
本文设计的并行游程解码、反扫描、反量化和反
变换的结构,通过一个并行结构的寄存器阵列实现
反变换的转置操作,同时采用优化结构安排处理单
元,共用该寄存器阵列完成游程解码、反扫描和反量
化,不需再占用存储器存储中间结果,从而将游程解
码、反扫描、反量化和反变换合并为一个流水线处理
单元,节省了存储资源和芯片面积,并且该结构可以
满足高清AVS解码的处理要求。
参考文献:
[1]  信息技术先进音视频编码第二部分:视频[S].GB PT20090.
2006.
[2]  CongPeng,etal.ArchitectureofAVSHardwareDecodingSystem
[C].Proceedingsof2004InternationalSymposiumonIntelligentMul 2
timedia,VideoandSpeechProcessing,2004:306-309.
[3]  郑国卿. 专用集成电路并行结构研究及其在视频解码芯片设计
中的实践[D]. 浙江大学硕士论文,2005.
[4]  ShengBin,GaoWen,WuDi.AnImplementedVLSIArchitectureof
InverseQuantizerforAVSHDTVVideoDecoder[C].The6thIEEE
InternationalConferenceOnASIC (ASICON) ,Oct24-27,2005
(1) :306-309.
[5]  ZhangCi-Xun,LouJian,YuLu,etal.TheTechniqueofPre-
ScaledIntegerTransform[C].Proc.ofIEEEInternationalSymposium
onCircuitsandSystems (ISCAS2005) ,2005 (1) :316-319.
[6]  刘宇, 田晓华.AVS 视频标准中块变换系数熵编码器的优化设
计[J]. 微电子学与计算机,2004 (10) :27-31,35.
[7]  JointVideoTeamofITU--TandISO PIECJTC1,DraftITU--T
RecommendationandFinalDraftInternationalStandardofJointVideo
Specification( ITU--TRec.H.264 ) [S].2003.
[8]  毛讯. 高速视频解码器设计研究[D]. 浙江大学博士论文,
2001.
责任编辑:肖滨
— 75 —
© 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
http://www.elecfans.com/ 电子发烧友 http://bbs.elecfans.com 电子技术论坛
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics