CN100403802C - 一种基于寄存器组的行程解码与反扫描实现方法 - Google Patents
一种基于寄存器组的行程解码与反扫描实现方法 Download PDFInfo
- Publication number
- CN100403802C CN100403802C CNB2006100427572A CN200610042757A CN100403802C CN 100403802 C CN100403802 C CN 100403802C CN B2006100427572 A CNB2006100427572 A CN B2006100427572A CN 200610042757 A CN200610042757 A CN 200610042757A CN 100403802 C CN100403802 C CN 100403802C
- Authority
- CN
- China
- Prior art keywords
- scanning
- counter
- registers group
- idct
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
一种基于寄存器组的行程解码与反扫描的实现方法:在行程解码与IDCT之间仅使用寄存器组实现行程解码与反扫描,并可于反量化、IDCT流水工作。对于行程解码的按扫描顺序输入的32个前半部基本块系数,仅用其中非零系数更新寄存器组;对按扫描顺序输入的32个后半部基本块系数,逐个时钟覆盖寄存器组中已按反扫描顺序逐行或逐列输出的系数位置;对依据反扫描顺序的输出系数,当应读的系数对应为扫描顺序的32个后半部块数据时,根据写覆盖原则在寄存器组内寻址以得到当前的反扫描数据;同时根据记录解码EOB时的扫描顺序位置值,可提前结束寄存器组写操作且可在寄存器读时将部分输出值直接选0以减少寄存器组的读写功耗;当已输出64个块系数给IDCT后,对寄存器组复位至初值0。
Description
技术领域
本发明属于视频解码及VLSI设计技术领域,应用于视频解码的ASIC设计或软硬件协同设计,涉及一种基于寄存器组的行程解码与反扫描实现方法。
背景技术
在大多数的图像与视频压缩标准中,如JPEG、MPEG-1、MPEG-2、MPEG-4、H.264,编码时,先对帧内数据或帧间残差的基本块数据(一般大小为8×8)进行离散余弦变换和量化,然后按一定的顺序扫描后进行行程编码,最后进行可变长编码。图1所示为MPEG2视频解码器的功能框图,主要由帧内数据或帧间残差数据解码、运动补偿、存储器控制、各种码表及系统内的各种同步电路构成。帧内或帧间的数据解码包括的关键单元电路为:可变长解码器、行程解码与反扫描(反扫描嵌在行程解码中实现)、反量化和反离散余弦变换(IDCT)。可变长解码的输出为Run-Level对,其中Run表示非零AC系数前连续零的个数,Level表示非零AC系数的值,如Run_Level=(4,5),表示4个零后加一个5,即0 0 0 0 5。行程解码器从可变长解码电路的输出缓存中取出Run_Level对,将其解释成一串数,并按照如图2所示的两种反扫描方式中的一种(由解码中的系统参数确定)将一个基本块的全部64个系数写入1个8×8的缓存区后,再以先行后列或先列后行的顺序读出缓存区的数据,输出给反量化模块及反离散余弦变换模块进行计算,最终得到解码后的基本块图像数据。
在上述行程解码的实现中常常需要使用2片双端口RAM块或3片单端口RAM块(每片RAM块大小为768Bit,因Level值为12bit,块大小为64),使行程解码电路、反扫描与反量化、IDCT能够完全并行流水实现,因此存储器的实现资源大(1536Bit或2304Bit),功耗高,且增加后端布局布线复杂度。
当在嵌入式RISC核中用软件实现时,由于核的片上寄存器文件大小一般为32×32Bit,即使配置为64×16Bit使用,行程解码也不能完全基于寄存器文件(寄存器堆)实现,而需使用片上或片外存储器作数据暂时存储区(降低解码速度和效率)。
发明内容
针对上述背景技术中存在的缺陷和不足,本发明的目的在于,提供一种基于寄存器组的行程解码与反扫描实现方法,该方法在行程解码与反离散余弦变换之间仅使用32×12Bit的寄存器组,即可实现行程解码、反扫描、反量化和IDCT的并行流水工作。
为了实现上述任务,本发明采用如下的解决方案:
一种基于寄存器组的行程解码与反扫描实现方法,其特征在于:
在行程解码与IDCT之间仅使用32×12Bit的寄存器组,构成行程解码、反扫描、反量化与IDCT的并行流水工作结构;
上述32×12Bit的寄存器组,在工作中用于分时共享存放基本块的64个系数,该寄存器组在读写时序上等价于同步双端口RAM;
上述寄存器组的写策略为:寄存器组的初始值均为0,当对按扫描顺序输入的32个前半部块数据仅用其非零的系数更新完寄存器组后,对扫描顺序地址计数器Scanindex(Scanindex初值为32)对应的0或非0系数,逐个时钟按寄存器组中32个前半部系数的反扫描输出顺序对寄存器组写覆盖;
上述寄存器组的数据读策略:当Scanindex>31,并且IDCT可接受输入时,可以开始依据反扫描的顺序,从上到下逐行(扫描方式1)或从左到右逐列(扫描方式2)读取块内数据;当按反扫描顺序的应读块内数据对应为扫描顺序的32个后半部块内数据时,依据写策略覆盖原则在寄存器组寻址得到当前的反扫描数据;
上述寄存器组的低功耗读写方法是:记录解码EOB时的扫描顺序位置EOBindex,根据此值可提前结束寄存器组写操作;同时在读时,当反扫描输出数据对应的扫描顺序序号值>EOBindex时,输出数据直接为0;
上述行程解码、反扫描、反量化与IDCT的并行流水工作结构,是使用按扫描顺序输入的32个前半部数据中的非零系数更新寄存器组后,且当IDCT标记为可接受输入时,将系数从寄存器组逐行或逐列按反扫描顺序读出给IDCT;同时继续从Run_Level对缓冲中读取后半部的Run-Level对解码,对寄存器组写覆盖至输出的前半部数据位置,其中Run表示非零AC系数前连续零的个数,Level表示非零AC系数的值。
本发明针对视频解码中的行程解码和反扫描设计,给出一种基于寄存器组的高效、低代价的实现方法;并对该寄存器组的尺寸,以及使用该方法的行程解码、反扫描、反量化与IDCT流水工作结构以及寄存器组的读写地址生成和数据读写策略,以MPEG-2的行程解码、反扫描实现予以说明。
附图说明
图1是视频解码器整体结构及主要功能框图;
图2是MPEG2解码的两种扫描方式(或扫描-反扫描转换模板);
图3是所述行程解码电路的功能框图构成;
图4是寄存器组的二维存储结构及按扫描顺序的32个后半部数据写覆盖示意图(对扫描方式1,IDCT的输入按行读取);
图5是按扫描顺序输入的32个后半部系数到前半部系数的写覆盖地址映射表;
图6是行程解码、反扫描、反量化与IDCT的并行流水工作示意图。
以下结合附图和实施例对本发明作进一步的详细说明。
具体实施方式
发明的基于寄存器组的行程解码与反扫描实现方法,按以下方式进行:
1)使用32×12Bit的系数寄存器组。
2)行程解码、反扫描、反量化与IDCT的并行流水工作结构。
3)给出一种该寄存器组的数据写策略。
4)给出一种该寄存器组的数据读策略。
5)给出一种上述策略下寄存器组低功耗读写方法
6)当完全输出一个基本块的64个系数后,将寄存器组复位至初值0。
所述32×12Bit的寄存器组,也可由全定制的Register file实现;在工作中用于分时共享存放基本块的64个系数,该寄存器组在读写时序上等价于同步双端口RAM。
上述的行程解码、反扫描、反量化与IDCT的并行流水工作结构,指仅用按扫描顺序输出的32个前半部系数中的非0系数更新寄存器组后,如果IDCT的模块当前可以输入,则开始从寄存器组中读出系数数据输出给反量化、IDCT模块,直到读出64个块数据;同时继续从Run_Level对缓冲中读取后半部的Run-Level对解码,对寄存器组中已读出的前半部数据位置写覆盖。因此行程解码、反扫描、反量化与IDCT呈并行流水执行。
上述寄存器组的数据写策略:寄存器组的初始值均为0,当仅用按扫描顺序输入的32个前半部系数数据中非0的系数更新完寄存器组后,对扫描顺序地址计数器Scanindex(31<Scanindex<64)对应的0或非0系数,逐个时钟按寄存器组中32个前半部系数的反扫描输出顺序对寄存器组写覆盖(如图5的写覆盖地址映射表所示)。
上述寄存器组的数据读策略:当Scanindex的值>31时,并且IDCT当前可输入,可以开始依据如图2的扫描-反扫描的转换模板,从左到右按行(对扫描方式2,从上到下按列)逐个读取块内系数数据,当应读块系数对应的扫描顺序序号<32时,可从寄存器组直接寻址输出;当应读块系数对应的扫描顺序序号>32时,需根据图5的写覆盖地址映射表在寄存器组内间接寻址得到该数据。
上述寄存器低功耗读写方法:记录解码EOB时的扫描顺序位置EOBindex,根据此值可提前结束寄存器组写操作;同时在读时,当反扫描的输出数据对应的扫描顺序序号>EOBindex时,输出数据直接为0。
当已从寄存器组中读出64个系数给IDCT后,对寄存器组复位至初值0。
如图3所示为行程解码电路的功能框图,主要由写地址生成与映射、Level值(系数)寄存器组、读地址生成与映射,及其与可变长解码、反量化的接口组成。Scanindex初始值为31;Runindex指示解码Run-Level对行程累加计数器,初始值为0;wrdata指示寄存器组的写数据,值为0或非0系数。系数寄存器组的物理地址为0→31,一个基本块Run_Level对解码的输出系数按扫描顺序编号为0→63,对于前半部32个数据,顺序为0→31的块数据与系数寄存器组是一一直接映射,即0-0,1-1,......,31-31;对于后半部32个数据(扫描顺序为32→63的块数据),依次写覆盖至寄存器组,对应地址为根据图2按反扫描顺序的逐行输出数据中按扫描顺序序号为0→31之间的块数据地址(如图4的写覆盖示意图与图5的写覆盖地址映射表所示)。同理,对于根据图2的按反扫描顺序逐行读取的系数数据中的扫描顺序序号为32→63的块数据,也需按图5的地址映射关系得到该数据的地址以查询寄存器组,得到正确按行输出的反扫描数据给IDCT。具体实现如下:
1、写地址、写数据的生成策略
Runindex=Runindex+run+1;
if Runindex<32,且Level非0时,wrdata=Level
wradd值即为Runindex值。
Else Runindex>=32时,
如IDCT的状态为可以输入数据,且Run_Level缓冲中至少有一个基本块的Run_Level对数据时,则开始启动Scanindex(Scanindex计数器每个时钟累加1),按扫描顺序输出的data_32,data_33,.....,data_63按行(对扫描方式1)覆盖Level寄存器组中的data_0,data_1,data_5,......,data_21的位置,具体示意如图4所示。在实现时wradd的值可由图5的所示地址映射表查询得到,如当Scanindex=35,则查询图5的得到其对应的系数寄存器组的地址应为6,则:wradd=6,写入策略如下:
If Scanindex<Runindex时
wrdata=0
Else Scanindex=Runindex时
wrdata=Level且从缓存中读取一个新的Run-Level对解码。
2、读地址产生
当开始启动Scanindex时,对寄存器组已可以依反扫描方式按行(对扫描方式2,按列)读出Level值输出给反量化、IDCT,故同时启动Rdindex计数器(指示块读地址计数器,每个时钟周期累加1,初始值为0)。Rdindex指示的数据应根据反扫描顺序(如图2所示的二维矩阵)按行输出,而系数寄存器组的存储是按扫描顺序存储,由Rdindex查询图2的扫描方式表,得到其对应的扫描顺序值RdScan,如:当Rdindex=7时,对应的RdScan值为28。
If RdScan<32,Rdadd=RdScan
Else RdScan>31,查询图5的按扫描顺序的32个后半部系数到前半部系数的地址映射表,得到其对应的寄存器组地址值RdScan’,则Rdadd=RdScan’,由Rdadd可以从系数寄存器组中读出对应的Level值。
3、当完成读取1个基本块内的64个系数后,用1个时钟周期将系数寄存器组的所有寄存器清零。
4、在将1个基本块内按扫描顺序序号0→31内的Level值写入系数寄存器组时,行程解码和IDCT是串行的(相当于流水线的预充),如图6所示,等待的时间t1主要决定于32个前半部系数中非零系数的个数,对237帧的352×288的标准MPEG2视频序列(Foreman)测试,此值为232572,说明流水线的效率较高。
5、当IDCT的输入要求仅为连续一行或一列输入时,Rdindex可暂时停止累加,Scanindex也需同时停止累加,以保证写覆盖不能超前于读系数寄存器。
6、设Scan[5:0]表示1个6位的地址,对图5的地址映射表实现时,可直接采用如下所示的组合查询逻辑:
Case(Scan)
32:Scan’=0;33:Scan’=1;34:Scan’=5;35:Scan’=6;
;........;
56:Scan’=24;57:Scan’=31;58:RdScan’=10;59:Scan’=19;
60:Scan’=23;61:Scan’=20;62:Scan’=22;63:Scan’=21;
该逻辑在Altera的EP1S10FC780-7器件上综合时,占用了15个LUT逻辑资源,速度为185MHz,在实现写和读系数寄存器组时,使用了2个如图5所示的查询逻辑,实现方式如上,说明在读写地址映射中引入该模块对资源和速度的影响较小。
7、图2包含扫描与反扫描关系的扫描方式表在实现时,仍然直接采用如下所示的组合查询逻辑(以扫描方式1为例,从上至下按行输出)Case(RdIndex)
0:RdScan=0;1:RdScan=1;2:RdScan=5;3:RdScan=6;
4:RdScan=14;5:RdScan=15;6:RdScan=27;7:RdScan=28;
60:RdScan=57;61:RdScan=58;62:RdScan=62;63:RdScan=63;
8、使用上述方法实现时,在从Run-Level对缓冲中读取到EOB时,可记录解码EOB前的Runindex值为EOBindex,当Scanindex=EOBindex或EOBindex<32时,可提前结束对寄存器组的写;在读时,当RdScan>EOBindex系数寄存器输出值应为零。使用此方法后,可大大减少寄存器组的读写功耗与速度。
Claims (2)
1.一种基于寄存器组的行程解码与反扫描实现方法,其特征在于:
在行程解码与IDCT之间仅使用32×12Bit的寄存器组,构成行程解码、反扫描、反量化与IDCT的并行流水工作结构;
上述32×12Bit的寄存器组,在工作中用于分时共享存放基本块的64个系数,读写时序上等价于同步双端口RAM;
上述寄存器组的写策略为:寄存器组的初始值均为0,当对按扫描顺序输入的32个前半部块数据仅用其非零的系数更新完寄存器组后,对扫描顺序地址计数器Scanindex对应的0或非0系数,逐个时钟按寄存器组中32个前半部系数的反扫描输出顺序对寄存器组写覆盖;
上述寄存器组的数据读策略:当Scanindex>31,并且IDCT接受输入时,开始依据反扫描的顺序,从上到下逐行或从左到右逐列读取块内数据;当按反扫描顺序的应读块内数据对应为扫描顺序的32个后半部块内数据时,根据写策略覆盖原则在寄存器组寻址得到当前的反扫描数据;
上述寄存器组的低功耗读写方法是:记录解码EOB时的扫描顺序位置EOBindex,根据此值提前结束寄存器组写操作;同时在读时,当反扫描的输出数据对应的扫描顺序序号值>EOBindex时,输出数据直接为0;
上述行程解码、反扫描、反量化与IDCT的并行流水工作结构,是使用按扫描顺序输入的32个前半部数据中的非零系数更新寄存器组后,且当IDCT标记为可接受输入时,将系数从寄存器组逐行或逐列按反扫描顺序读出给IDCT;同时继续从Run_Level对缓冲中读取后半部的Run-Level对解码,对寄存器组写覆盖已输出的前半部数据位置,其中,Run表示非零AC系数前连续零的个数,Level表示非零AC系数的值。
2.如权利要求1所述的方法,其特征在于,所述的寄存器组,当已输出全部64个系数给IDCT后,对寄存器组复位至初值0。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100427572A CN100403802C (zh) | 2006-04-30 | 2006-04-30 | 一种基于寄存器组的行程解码与反扫描实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100427572A CN100403802C (zh) | 2006-04-30 | 2006-04-30 | 一种基于寄存器组的行程解码与反扫描实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1852441A CN1852441A (zh) | 2006-10-25 |
CN100403802C true CN100403802C (zh) | 2008-07-16 |
Family
ID=37133908
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100427572A Expired - Fee Related CN100403802C (zh) | 2006-04-30 | 2006-04-30 | 一种基于寄存器组的行程解码与反扫描实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100403802C (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8861877B2 (en) * | 2012-07-19 | 2014-10-14 | Omnivision Technologies, Inc. | System and method for improving decoder performance by using multiple decoding channels |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020027954A1 (en) * | 1998-06-30 | 2002-03-07 | Kenneth S. Singh | Method and device for gathering block statistics during inverse quantization and iscan |
CN1589026A (zh) * | 2004-07-30 | 2005-03-02 | 联合信源数字音视频技术(北京)有限公司 | 一种并行处理行程解码、反扫描和反量化的方法及装置 |
CN1620819A (zh) * | 2001-10-17 | 2005-05-25 | 皇家飞利浦电子股份有限公司 | 改进的可变长度解码器 |
-
2006
- 2006-04-30 CN CNB2006100427572A patent/CN100403802C/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020027954A1 (en) * | 1998-06-30 | 2002-03-07 | Kenneth S. Singh | Method and device for gathering block statistics during inverse quantization and iscan |
CN1620819A (zh) * | 2001-10-17 | 2005-05-25 | 皇家飞利浦电子股份有限公司 | 改进的可变长度解码器 |
CN1589026A (zh) * | 2004-07-30 | 2005-03-02 | 联合信源数字音视频技术(北京)有限公司 | 一种并行处理行程解码、反扫描和反量化的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN1852441A (zh) | 2006-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101072353B (zh) | 译码系统以及图形处理单元 | |
US8989279B2 (en) | Reference data buffer for intra-prediction of digital video | |
US9392292B2 (en) | Parallel encoding of bypass binary symbols in CABAC encoder | |
CN101527849B (zh) | 集成视频解码器的存储系统 | |
CN100508585C (zh) | 用于控制数字视频比特流逆向播放的装置和方法 | |
CN101212674B (zh) | 图像在存储器中的地址映射方法 | |
CN1937773B (zh) | 外部存储装置、存储图像数据的方法及图像处理器 | |
CN101252694A (zh) | 基于块的视频解码的帧存储压缩和地址映射系统 | |
CN105578190A (zh) | 应用于视频硬解码的无损压缩方法及系统 | |
CN101453640A (zh) | 一种软硬件联合解码的avs视频解码器 | |
CN101729893B (zh) | 基于软硬件协同处理的mpeg多格式兼容解码方法及其装置 | |
CN101790093B (zh) | 一种利用sopc实现avs视频解码的装置及方法 | |
CN103686173A (zh) | 变换与反变换电路 | |
CN102572430A (zh) | 一种基于可重构技术的h.264去块滤波算法的实现方法 | |
CN103947211A (zh) | 具有已分区比特流的视频编码装置及方法 | |
JP2888288B2 (ja) | 画像符号化装置 | |
CN101179720A (zh) | 一种视频解码方法 | |
CN101771867B (zh) | 缩小尺寸解码方法和系统 | |
CN101883276A (zh) | 软硬件联合解码的多格式高清视频解码器结构 | |
CN100403802C (zh) | 一种基于寄存器组的行程解码与反扫描实现方法 | |
CN101365131A (zh) | 适于vlsi实现的avs视频解码器变长解码的简化码表及实施方法 | |
CN101448160B (zh) | 带重建数据反馈的像素重建方法及解码器 | |
CN109005410A (zh) | 一种系数存取方法和装置及机器可读介质 | |
CN100576917C (zh) | 逆扫描频率系数的方法和系统 | |
CN100593956C (zh) | 用于解块滤波参数数据存储和交换的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080716 Termination date: 20110430 |