中图分类号: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 电子技术论坛

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

  1. linux中特殊字符反引号,linux中的特殊符号$ ‘’ 反引号 反斜杠

    写在前面:Shell中的特殊字符有 $ 美元符 \ 反斜杠 ` 反引号 "双引号 < ,>;,*,?,[,] 1.反引号``:命令替换 在输出一句话的时候,如果想中间加入命令输出 ...

  2. 数电实验三 数据选择器及其应用 任务一:用74151芯片采用降维的方法实现F=ABC+ABD+ACD+BCD; 任务二:用74151芯片采用降维方式实现F=BCD反+BC反+A反D;

    数电实验三 数据选择器及其应用 任务一:用74151芯片采用降维的方法实现F=ABC+ABD+ACD+BCD; 任务二:用74151芯片采用降维方式实现F=BCD反+BC反+A反D: 实验数据单

  3. 金蝶专业版怎么反过账当月_金蝶KIS专业版如何反结账反过账?

    原标题:金蝶KIS专业版如何反结账反过账? 文章来源公众号:软件职场 我们知道金蝶KIS专业版的使用不同于KIS迷你版或标准版,在反结账和反过账这块存在一定的差异,下面和大家具体探讨. 金蝶KIS专业 ...

  4. ​用友T+标准版如何反结账,反记账​

    用友T+标准版如何反结账,反记账 T+总账反结账步骤: 1.财务结账后凭证发现问题要调整,需要先进行反结账操作,点击[系统管理]-[财务结账]如图下: 2.选择对应月,点击[取消结账]即可 3.反结账 ...

  5. java 反引 双引号_Shell 单引号 双引号 反引号 反斜线

    在Linux中有四种较特殊的符号,分别为双引号 单引号 反引号 反斜线 使用双引号时,相当于等号后面的值作为一个字符串常量赋给了前者(其实这里并没有太大作用),例如: m=java echo $m / ...

  6. 网易云社区高手问答第一期:315之业务反作弊反欺诈

    各位网友大家好!为了促进学习交流,网易云社区将定期开展"高手问答"系列活动,邀请网易专家和各界牛人大咖进驻与大家共同交流,答疑解惑. 互联网公司周围,往往围着一群灰产从业者,他们是 ...

  7. 【H264解析Demo】10、变换量化_3_反变换

    代码实现 //<变换量化><4>反变换(参数1:保存反量化系数 参数2:保存反变换之后) void CResidual::coeff_invers_transform(int( ...

  8. python调用woff_GitHub - zergtant/python-maoyan-spider: woff-xml解码 “猫眼网反爬虫机制” 的爬虫。...

    猫眼网反爬虫策略的处理 2018/12/7测试有效 注意:爬取频繁之后,会根据mac与ip地址封禁,修改为局域网其他ip后,大概5-6次修改,就会封网关 [目录] 一.引入问题 可以看到,猫眼网电影评 ...

  9. android 播放器 反交错,反交错- 视频横纹处理

    以下名词解释摘自维基百科 反交错"(deinterlacing)是将交错式(即隔行扫描)(interlace)影像讯号转换为渐进式(逐行扫描)(progressive)影像讯号的一种方法. ...

最新文章

  1. webservice 测试窗体只能用于来自本地计算机的请求
  2. Python 基础语法(二)
  3. hasattr判断是不是可迭代类型的方法
  4. LIGHTOJ 1027(概率 - 期望)
  5. JDBC基础知识复习
  6. solr怎么设置搜索结果排名靠前?
  7. 从字符串 到类型 Boolean 的转换无效。
  8. 基于消息队列的日志组件
  9. ZooKeeper与Eureka作为注册中心的比较
  10. 多个按钮触发同一个Bootstrap自适应模态窗口
  11. AR识别卡制作工具 1.0终于完工了
  12. 接口测试-使用mock生产随机数据
  13. 安卓系统镜像_安卓手机 F2FS文件系统镜像快速解析技巧
  14. calculate函数使用方法c语言,使用 CALCULATE 函数
  15. 程序员数学(29)–投影与视图
  16. java的inputbox_InputBox函数的使用方法
  17. Retrofit2 详解和使用(一)
  18. DFS基础-----刷题合集--1(全排列,八皇后,迷宫),让你明白DFS的基础用法
  19. mouse hover时就显示提示信息,太烦了,怎样屏蔽它
  20. mapUnderscoreToCamelCase作用- 开启驼峰

热门文章

  1. 借助office web apps实现在线预览和在线编辑
  2. Office web app server2013详细的安装和部署
  3. 搜索计算机硬盘的索引恢复,可以做到秒搜的神器everything,你可知对硬盘到底有多大伤害...
  4. linux打包启动这着的文件,linux – 打开一个RPM文件并重新打包它
  5. 【 POJ - 3628 】Bookshelf 2(dfs 或 dp,0-1背包)
  6. 【POJ - 2631 】Roads in the North(树的直径)
  7. 7.Handling Missing Values
  8. docker启动mysql容器_Docker容器开机自启动
  9. java关闭文本_如何更优雅的关闭java文本、网络等资源
  10. dell服务器T100无法进入系统,DELL服务器开机Alert!Cover was previously removed F1