基于single-portSRAM的转置矩阵的地址映射算法

文档序号:7815411阅读:806来源:国知局
基于single-port SRAM的转置矩阵的地址映射算法
【专利摘要】本发明属于高清数字视频压缩编解码【技术领域】,具体为一种适用于HEVC视频编码标准下2D-DCT/IDCT中基于single-port SRAM的转置矩阵的地址映射算法。地址映射算法基于对矩阵分块求转置的运算,即先对矩阵进行分块,然后分别以小尺寸块矩阵和基本元素为单元对整个矩阵和小尺寸块矩阵求转置,小尺寸块矩阵的转置可以直接通过排序实现。本发明基于变换单元(TU)进行,支持HEVC允许的4种TU大小并可实现固定的吞吐率:32pixes/cycle,适用于高吞吐率的2D-DCT/IDCT及高性能的视频编解码器中。本发明硬件结构实现可以减小40%左右的面积;相比于已有的基于single-port SRAM的转置矩阵的地址映射算法,可以在不增加硬件开销的情况下,获得更高的吞吐率,实现高清视频的实时编码。
【专利说明】基于single-port SRAM的转置矩阵的地址映射算法

【技术领域】
[0001]本发明属于高清数字视频压缩编解码【技术领域】,针对HEVC视频编解码标准,具体 涉及一种适用于HEVC视频编码标准下,视频编码器和解码器中2D-DCT/2D-IDCT转置矩阵 的地址映射算法。

【背景技术】
[0002] HEVC(High Efficiency Video Coding)是由国际电信组织(πυ)和运动图像专家 组(MPEG)联合成立的组织JCTVC提出的下一代视频编解码标准。目标是在相同的视觉效 果的前提下,相比于上一代标准H. 264/AVC,压缩率提高一倍。为达到目标,HEVC的运算复 杂度相比H_ 264大大提高,因此HEVC编码器和解码器的硬件开销和功耗较大。降低硬件开 销和功耗是HEVC编解码器设计的研究热点。
[0003]绝大部分图像中直流和低频区占很大一部分,而高频区则占很小一部分。DCT变换 可将图像从空间域变换到频域,产生相关性很小的一些变换系数,有利于图像压缩。为进一 步提高图像压缩律,HEVC编码标准支持16x16和32x32的二维整形DCT/IDCT。
[0004] 2D-DCT/IDCT可以分解为两次一维DCT/IDCT运算:①行(列)方向的DCT/IDCT变 换;②对由①的中间结果产生的矩阵中列(行)方向做DCT/IDCT变换。计算过程可以由下 式得到,大尺寸的2D-DCT/IDCT硬件实现需要转置矩阵模块。
[0005] YN = An*Fn*Ant
[0006] = (An*(An*Fn)t)t
[0007] 其中,FN :NxN的输入矩阵;YN为NxN的变换后输出矩阵。AN为HEVC中NxN变换的 矩阵。
[0008] 转置矩阵可以基于寄存器阵列实现,对于大尺寸的转置矩阵实现,基于寄存器阵 列的实现会消耗大量的硬件资源和功耗。HEVC中转置矩阵中存储结果为16bit,4x4的 2D-DCT的转置矩阵仅需要2 56_bit的寄存器,而32x32的2D-DCT转置矩阵需要16384-bit 的寄存器阵列。当存储大量数据时,SRAM中单位比特数据的存储面积小于寄存器阵列中单 位比特数据的存储面积,因此相比于寄存器阵列,SRAM更适合于实现大尺寸的转置矩阵。
[0009] 2D-DCT/IDCT中,第一次一维变换的结果按行(列)为单元写入转置矩阵,第二 次一维变换时将存储的中间结果以列(行)为单元读出。寄存器阵列可以很容易的实现行 数据和列数据的读写,而single-port SRAM只能实现行方向或列方向的数据读写,所以行 (列)数据必须按一定的规则写入SRAM中,列(行)数据才能从SRAM中读出。大尺寸矩阵 的转置会产生大量地址,映射方法不当会提高硬件实现的复杂度。因此映射方法必须便于 硬件实现。
[0010] 为了实现实时编码,几种高吞吐率的DCT/IDCT架构实现已经被提出,对于各种 尺寸的TU,吞吐率可以达到32pixes/cycle。在这些2D-DCT/IDCT的设计中,转置矩阵 都是基于寄存器阵列,硬件开销较大,数据在寄存器中的移动,导致功耗较大。一种基于 single-port SRAM的转置矩阵的地址映射算法已经提出,但该算法仅适用于低吞吐率的 2D-DCT/IDCT架构。本发明提出的映射算法适用于册¥(:支持的所有基于变换单元(τυ)大 小,对于不同的τυ尺寸可以实现固定的吞吐率:32pixes/cycle。


【发明内容】

[0011]本发明的目的在于提供一种适用于HEVC标准下2D-DCT/IDCT中基于Single-port SRAM的转置矩阵的地址映射算法。
[0012] 本发明提出的基于Single-port SRAM的转置矩阵的地址映射算法,是基于矩阵分 块求转置的基本运算。设对NxN矩阵A,求矩阵A的转置矩阵的步骤如下:① NxN矩阵划分 为以MxM矩阵为基本单元的(N/M)X(N/M)块矩阵;②对(N/M)x(N/M)的块矩阵求转置;③对 每个MxM矩阵求转置;即:
[0013]

【权利要求】
1. 一种基于Single-portSRAM的转置矩阵的地址映射算法,基于矩阵分块求转置的 基本运算:设对NxN矩阵A,求矩阵A的转置矩阵的步骤如下: ① 把NxN矩阵划分为以MxM矩阵为基本单元的(N/M)X(N/M)块矩阵; ② 对(N/M)x(N/M)的块矩阵求转置; ③ 对每个MxM矩阵求转置;
其中,Aij为MxM基本单元矩阵,i,j= 0,1,2,…33 ; 基于Single-portSRAM的转置矩阵硬件结构,由如下三部分模块组成:AGM,SRAM,MM;其中:(I)SRAM模块,是存储单元,划分为32个Bank,每个Bank的深度为5,位宽为 16bit; (2)AGM模块,根据映射算法产生地址add(i)和地址badd(i),数据的映射通过地址 add(i)和地址badd(i)确定,i= 0, 1,2…,31 ;add(i)是第i个Bank的输入信号,控制将 数据写入第i个Bank的指定字节;badd(i)通过MM模块对数据进行排序:写操作时通过 对输入数据排序将输入数据分块并写入指定的Bank;读操作时通过对读出的数据排序实 现对块矩阵的转置及正序输出;(3)MM模块,由32个32 :1的选择器MUX组成,控制信号为 badd(i),对数据进行排序; 所述地址映射算法,通过add(i)和badd(i)确定,具体映射如下: ① 4x4输入矩阵:算法支持同时处理两个4x4输入矩阵,4x4矩阵的转置直接通过badd 实现,不经过SRAM的存储; 映射如下:
② 8x8输入矩阵:8x8输入矩阵每次输入连续4行或4列,共输入两次:k= 0, 1 ; 写操作时地址映射如下:
③16x16输入矩阵:16xl6输入矩阵每次输入连续2行或2列,共输入8次:k=0, 1, 2,. . . , 7 ; 写操作时地址映射如下:
读操作时地址映射如下:
④32x32输入矩阵:32x32输入矩阵每次输入1行或1列,共输入32次:k= 0, 1,2, · · ·,31 ; 写操作时地址映射如下:
读操作时地址映射如下: 其中:
⑴% :取余数的操作;M%N表示M除N的余数; ⑵/ :取整操作;M/N表示M除N的商的整数部分; ⑶fN(i,j)是一个NxN的二维矩阵;
f8如下所示:
【文档编号】H04N19/13GK104270643SQ201410499728
【公开日】2015年1月7日 申请日期:2014年9月25日 优先权日:2014年9月25日
【发明者】范益波, 谢峥, 程魏, 曾晓洋 申请人:复旦大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1