一种二维DCT硬件实现方法及装置与流程

文档序号:14447938阅读:177来源:国知局
一种二维DCT硬件实现方法及装置与流程

本发明属于多媒体数据压缩技术领域,尤其涉及一种二维dct硬件实现方法及装置。



背景技术:

众所周知,多媒体数据的压缩技术,特别是音视频数据压缩技术,其理论可行性在于被压缩的数据存在冗余。典型的冗余类型有:空间冗余、时间冗余、符号冗余等。但实践发现,在时间域通常难以找出信号的相关性,无法区分出冗余信息。于是,人们开始把目光转向变换域,比如:k-l(karhunen-loevetransform)变换、傅里叶变换、余弦变换和小波变换等。在选取均方差的标准下,k-l变换是信号处理方式中的最佳变换方式。但k-l变换没有快速算法,且计算十分困难,不具实用价值。而离散余弦变换(discretecosinetransform,dct)最接近k-l变换,因而得到广泛发展。例如mp3、jpeg、mpeg等多媒体数据的压缩算法中,通常都有使用二维dct。

然而,尽管二维dct已有许多快速实现算法,但基本都是基于软件的算法,而软件实现的二维dct模块往往是整个压缩算法的速度瓶颈。由于硬件实现与软件实现存在较大差异,适于软件实现的算法并不能照搬移植到硬件实现方案,不然容易带来过度消耗硬件资源或是无法提高系统主频。



技术实现要素:

有鉴于此,本发明实施例提供了一种二维dct硬件实现方法及装置,以解决现有技术中尽管二维dct已有许多快速实现算法,但基本都是基于软件的算法,而软件实现的二维dct模块往往是整个压缩算法的速度瓶颈。由于硬件实现与软件实现存在较大差异,适于软件实现的算法并不能照搬移植到硬件实现方案,不然容易带来过度消耗硬件资源或是无法提高系统主频的问题。

本发明实施例的第一方面提供了一种二维dct硬件装置,其包括一个或两个离散余弦变换模块;

所述二维dct硬件装置包括一个离散余弦变换模块时,所述离散余弦变换模块的输入端口和输出端口连接;

所述离散余弦变换模块用于通过所述输入端口接入输入数据,对所述输入数据和变换矩阵的乘积进行矩阵转置,得到矩阵转置结果并通过所述输出端口输出至所述输入端口;对所述矩阵转置结果和所述变换矩阵的乘积进行矩阵转置,得到输出数据并通过所述输出端口输出;

所述二维dct硬件装置包括两个离散余弦变换模块时,第一离散余弦变换模块与第二离散余弦变换模块连接;

所述第一离散余弦变换模块用于对输入数据和变换矩阵的乘积进行矩阵转置,得到矩阵转置结果并输出至所述第二离散余弦变换模块;

所述第二离散余弦变换模块用于对所述矩阵转置结果和所述变换矩阵的乘积进行矩阵转置,得到输出数据并输出;

其中,所述输入数据为多媒体数据的宏块对应的矩阵数据,所述输出数据为所述输入数据的二维离散余弦变换结果。

在一个实施例中,所述离散余弦变换模块包括:

分布式离散余弦变换单元,用于根据分布式算法,计算所述输入数据和所述变换矩阵的乘积;

与所述分布式离散余弦变换单元连接的所述矩阵转置单元,用于对所述输入数据和所述变换矩阵的乘积进行矩阵转置,得到所述矩阵转置结果;

所述分布式离散余弦变换单元还用于通过分布式算法,计算所述矩阵转置结果和所述变换矩阵的乘积;

所述矩阵转置单元还用于对所述矩阵转置结果和所述变换矩阵的乘积进行矩阵转置,得到所述输出数据;

所述第一离散余弦变换模块包括:

第一分布式离散余弦变换单元,用于通过分布式算法,计算所述输入数据和所述变换矩阵的乘积;

与所述第一分布式离散余弦变换单元连接的第一矩阵转置单元,用于对所述输入数据和所述变换矩阵的乘积进行矩阵转置,得到所述矩阵转置结果;

所述第二离散余弦变换模块包括:

与所述第一矩阵转置单元连接的第二分布式离散余弦变换单元,用于通过分布式算法,计算所述矩阵转置结果和所述变换矩阵的乘积;

与所述第二分布式离散余弦变换单元连接的第二矩阵转置单元,用于对所述矩阵转置结果和所述变换矩阵的乘积进行矩阵转置,得到所述输出数据。

在一个实施例中,所述宏块的大小为8×8;

所述分布式离散余弦变换单元和所述第一分布式离散余弦变换单元均包括:

八个依次级联的d触发器,用于根据所述变换矩阵的对称性,将所述变换矩阵简化为第一子变换矩阵和第二子变换矩阵;

四个分别与所述d触发器连接的加法器,用于将所述输入数据首尾对称相加,得到第一子输入数据;

四个分别与所述d触发器连接的减法器,用于将所述输入数据首尾对称相减,得到第二子输入数据;

至少一个分布式forwarddct模块,用于通过分布式算法,计算所述第一子变换矩阵和所述第一子输入数据的乘积,并计算所述第二子变换矩阵和所述第二子输入数据的乘积,得到所述输入数据和所述变换矩阵的乘积;

其中,所述第一分布式离散余弦变换单元包括一个分布式forwarddct模块时,所述分布式forwarddct模块与所述加法器和所述减法器连接;所述第一分布式离散余弦变换单元包括八个分布式forwarddct模块时,八个分布式forwarddct模块与四个所述加法器和四个所述减法器一一对应连接。

在一个实施例中,所述分布式forwarddct模块包括寄存器数组。

在一个实施例中,所述矩阵转置单元、所述第一矩阵转置单元和所述第二矩阵转置单元均包括双端口随机存取存储器。

本发明实施例的第二方面提供了一种二维dct硬件实现方法,其包括:

对输入数据和变换矩阵的乘积进行矩阵转置,得到矩阵转置结果;其中,所述输入数据为多媒体数据的宏块对应的矩阵数据;

对所述矩阵转置结果和所述变换矩阵的乘积进行矩阵转置,得到输出数据;其中,所述输出数据为所述输入数据的二维离散余弦变换结果。

在一个实施例中,对输入数据和变换矩阵的乘积进行矩阵转置,得到矩阵转置结果,包括:

通过分布式算法,计算输入数据和变换矩阵的乘积;

对所述输入数据和所述变换矩阵的乘积进行矩阵转置,得到矩阵转置结果;

对应的,所述对所述矩阵转置结果和所述变换矩阵的乘积进行矩阵转置,得到输出数据,包括:

通过分布式算法,计算所述矩阵转置结果和所述变换矩阵的乘积;

对所述矩阵转置结果和所述变换矩阵的乘积进行矩阵转置,得到输出数据。

在一个实施例中,通过分布式算法,计算输入数据和变换矩阵的乘积,包括:

根据所述变换矩阵的对称性,将所述变换矩阵简化为第一子变换矩阵和第二子变换矩阵;

将所述输入数据首尾对称相加,得到第一子输入数据;

将所述输入数据首尾对称相减,得到第二子输入数据;

通过分布式算法,计算所述第一子变换矩阵和所述第一子输入数据的乘积,并计算所述第二子变换矩阵和所述第二子输入数据的乘积,得到所述输入数据和所述变换矩阵的乘积。

在一个实施例中,所述宏块的大小为8×8,所述多媒体数据为音频数据、视频数据或音视频数据。

本发明实施例通过提供一种包括一个或两个离散余弦变换模块的二维dct硬件装置,在其包括一个离散余弦变换模块时,通过离散余弦变换模块对输入数据和变换矩阵的乘积进行矩阵转置,再对矩阵转置结果和变换矩阵的乘积进行矩阵转置,得到输入数据的二维离散余弦变换结果;在其包括两个离散余弦变换模块时,通过第一离散余弦变换模块对输入数据和变换矩阵的乘积进行矩阵转置,在通过第二离散余弦变换模块对矩阵转置结果和变换矩阵的乘积进行矩阵转置,得到输入数据的二维离散余弦变换结果;能够实现二维dct变换的硬件化处理,结构简单、易于实现且不会对系统主频产生负面影响。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1和2是本发明实施例一提供的二维dct硬件装置的结构示意图;

图3是本发明实施例一提供的二维dct硬件实现方法的流程示意图;

图4和5是本发明实施例二提供的二维dct硬件装置的结构示意图;

图6是本发明实施例二提供的二维dct硬件实现方法的流程示意图;

图7是本发明实施例三提供的分布式离散余弦变换单元和第一分布式离散余弦变换单元的结构示意图;

图8是本发明实施例三提供的步骤s11的流程示意图;

图9是本发明的一个示例提供的数据时序图。

具体实施方式

以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。

为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。

实施例一

在本领域中,广义的dct包括8种不同类型的定义,其中,dct-ii是最为常见的形式,如无特别说明,dct通常指的就是这种类型,一般也称为forwarddct。而dct-iii则是dct-ii的逆向转换公式,一般也称为inversedct。dct-ii的计算公式如下:

其中,x表示dct计算结果,x表示输入数据,k=0、1、…、n-1且k为整数,n≥1且为正整数。

在实际应用中,一般使用上述dct-ii的计算公式的变种公式,也称为归一化的dct计算公式。具体是将上述dct-ii的计算公式中的x0项乘以而将其余项乘以变种公式如下:

其中,

由于dct是一种可分离的线性变换,因此,二维dct等同于先对矩阵数据的某一维度进行一维dct,再对一维dct的结果的另一维度进行一维dct即可得到矩阵数据的二维dct结果。二维dct的计算公式如下:

其中,u=0、1、…、m-1且u为整数,m≥1且为正整数,v=0、1、…、n-1且v为整数,n≥1且为正整数。

经典的压缩算法(如jpeg)里使用的参数为m=n=8。也就是将多媒体数据(通常为音视频数据)分割成若干个8x8的宏块再进行dct变换。计算公式如下:

其中,c(u)’=2c(u),c(v)’=2c(v)。

使用矩阵形式来表示上述二维dct变换公式f(u,v)为:

y=axat

其中,x表示输入数据,a表示变换矩阵,y表示输出数据;

若设z=ax,则y=zat=(azt)t

令f(x)=(ax)t,则有y=f(f(x))。

因此,通过硬件来实现上述二维dct变换公式时,理论上只需要采用一个能够实现f(x)计算的硬件模块即可,再通过模块复用机制,通过该硬件模块采用相同计算原理对f(x)进行计算,即可实现f(f(x)),从而实现二维dct。

基于上述通过硬件来实现二维dct的思想,本实施例提供一种二维dct硬件装置,其包括一个或两个离散余弦变换模块;

包括一个离散余弦变换模块时,可以先通过离散余弦变换模块实现对f(x)的计算,然后通过模块复用机制,根据f(x)的计算结果,再次通过离散余弦变换模块实现对f(f(x))的计算,从而实现对输入数据的二维dct;

包括两个离散余弦变换模块时,可以先通过第一离散余弦变换模块实现对f(x)的计算,然后根据f(x)的计算结果,通过第二离散余弦变换模块实现对f(f(x))的计算,从而实现对输入数据的二维dct。

在具体应用中,输入数据x是将多媒体数据分割成若干个宏块得到的矩阵数据,多媒体数据可以是音频数据、视频数据或者音视频数据,宏块的大小可以为8×8、16×16、32×32等,本发明所有实施例中均是以8×8大小的宏块对应的矩阵数据为示例,来介绍二维dct处理过程。

下面结合附图来对本实施例所提供的二维dct硬件装置的具体结构作详细介绍:

如图1所示,在一种硬件实现方式中,提供一种二维dct硬件装置100包括一个离散余弦变换模块110,离散余弦变换模块110的输入端口input和输出端口output连接,输入数据从输入端口input输入,输出数据从输出端口output输出。

在实现二维dct时,离散余弦变换模块用于通过其输入端口接入输入数据,对输入数据和变换矩阵的乘积进行矩阵转置,得到矩阵转置结果并通过其输出端口输出至其输入端口,即实现f(x)的计算;

还用于对矩阵转置结果和变换矩阵的乘积进行矩阵转置,得到输出数据并通过输出端口输出,即实现f(f(x))的计算,得到输入数据x的二维dct计算结果。

如图2所示,在另一种硬件实现方式中,提供一种二维dct硬件装置200包括第一离散余弦变换模块210与第二离散余弦变换模块220,输入数据从第一离散余弦变换模块210的输入端口input输入,第一离散余弦变换模块210的输出端口与第二离散余弦变换模块220的输入端口连接,输出数据从第二离散余弦变换模块220的输出端口output输出;

在实现二维dct时,第一离散余弦变换模块用于对输入数据和变换矩阵的乘积进行矩阵转置,得到矩阵转置结果并输出至第二离散余弦变换模块,即实现f(x)的计算;

第二离散余弦变换模块用于对矩阵转置结果和变换矩阵的乘积进行矩阵转置,得到输出数据并输出,即实现f(f(x))的计算,得到输入数据x的二维dct计算结果。

应当理解的是,在本实施例中离散余弦变换模块、第一离散余弦变换模块和第二离散余弦变换模块的工作原理都是相同的,即都是用于实现f(x)函数的计算,只是在输入的数据不同的情况下,各模块的实际作用会有所差别,但实际计算过程和原理思想是一致的。

在具体应用中,离散余弦变换模块、第一离散余弦变换模块和第二离散余弦变换模块均可以通过任意的能够实现上述功能作用的fpga(field-programmablegatearray,现场可编程门阵列)或通过asic(applicationspecificintegratedcircuit,专用集成电路)等来实现。

如图3所示,在本实施例中,基于上述二维dct计算思想,提供一种二维dct硬件实现方法,该方法可以通过上述的二维dct硬件装置来实现,也可以通过任意具有相同或相应功能的逻辑器件、处理器、终端设备或服务器等来实现。本实施例所提供的二维dct硬件实现方法,包括:

步骤s10:对输入数据和变换矩阵的乘积进行矩阵转置,得到矩阵转置结果;其中,所述输入数据为多媒体数据的宏块对应的矩阵数据;

步骤s20:对所述矩阵转置结果和所述变换矩阵的乘积进行矩阵转置,得到输出数据;其中,所述输出数据为所述输入数据的二维离散余弦变换结果。

在具体应用中,步骤s10可以由离散余弦变换模块或第一离散余弦变换模块执行,步骤s20可以由离散余弦变换模块或第二离散余弦变换模块执行,上述步骤也可以通过其他任意的具有相同或相应功能的硬件结构来实现。

本实施例通过提供一种包括一个或两个离散余弦变换模块的二维dct硬件装置,在其包括一个离散余弦变换模块时,通过离散余弦变换模块对输入数据和变换矩阵的乘积进行矩阵转置,再对矩阵转置结果和变换矩阵的乘积进行矩阵转置,得到输入数据的二维离散余弦变换结果;在其包括两个离散余弦变换模块时,通过第一离散余弦变换模块对输入数据和变换矩阵的乘积进行矩阵转置,在通过第二离散余弦变换模块对矩阵转置结果和变换矩阵的乘积进行矩阵转置,得到输入数据的二维离散余弦变换结果;能够实现二维dct变换的硬件化处理,结构简单、易于实现且不会对系统主频产生负面影响。

实施例二

在本实施例中,基于上述通过硬件来实现二维dct的思想,可以将传统的二维dct算法简化为通过硬件实现f(x)的计算;

其中,f(x)的计算包括两个部分,其一是计算z=ax,其二是对结果z进行矩阵转置。

基于这一思想,可以进一步的将离散余弦变换模块、第一离散余弦变换模块或第二离散余弦变换模块细化为二个硬件,来分别实现对z=ax的计算和结果z的矩阵转置。

下面结合附图来对本实施例所提供的二维dct硬件装置的具体结构作详细介绍:

如图4所示,基于图1所示的采用一个离散余弦变换模块110的实现方式,该离散余弦变换模块110包括分布式离散余弦变换单元(dctimplementation)111和矩阵转置单元112,分布式离散余弦变换单元111的输入端口input与矩阵转置单元112的输出端口output连接,分布式离散余弦变换单元111的输出端口与矩阵转置单元112的输入端口连接,输入数据从输入端口input输入,输出数据从输出端口output输出。

在实现二维dct时,分布式离散余弦变换单元,用于根据分布式算法,计算输入数据和变换矩阵的乘积;

矩阵转置单元,用于对输入数据和变换矩阵的乘积进行矩阵转置,得到矩阵转置结果;

分布式离散余弦变换单元还用于通过分布式算法,计算矩阵转置结果和变换矩阵的乘积;

矩阵转置单元还用于对矩阵转置结果和变换矩阵的乘积进行矩阵转置,得到输出数据。

如图5所示,基于图2所示的采用两个离散余弦变换模块的实现方式,第一离散余弦变换模块210包括第一分布式离散余弦变换单元(dctimplementation)211和第一矩阵转置单元212,第二离散余弦变换模块220包括第二分布式离散余弦变换单元(dctimplementation)221和第二矩阵转置单元222;

第一分布式离散余弦变换单元211、第一矩阵转置单元212、第二分布式离散余弦变换单元221和第二矩阵转置单元222依次连接,输入数据从第一分布式离散余弦变换单元211的输入端口input输入,输出数据从第二矩阵转置单元222的输出端口output输出。

在实现二维dct时,第一分布式离散余弦变换单元,用于通过分布式算法,计算输入数据和变换矩阵的乘积;

第一矩阵转置单元,用于对输入数据和变换矩阵的乘积进行矩阵转置,得到矩阵转置结果;

第二分布式离散余弦变换单元,用于通过分布式算法,计算矩阵转置结果和变换矩阵的乘积;

第二矩阵转置单元,用于对矩阵转置结果和变换矩阵的乘积进行矩阵转置,得到输出数据。

在具体应用中,分布式离散余弦变换单元、矩阵转置单元、第一分布式离散余弦变换单元、第一矩阵转置单元、第二分布式离散余弦变换单元和第二矩阵转置单元均可以通过任意的能够实现上述功能作用的fpga(field-programmablegatearray,现场可编程门阵列)或通过asic(applicationspecificintegratedcircuit,专用集成电路)等来实现。

在一个实施例中,矩阵转置单元、第一矩阵转置单元和第二矩阵转置单元均包括双端口随机存取存储器(dualportedrandom-accessmemory),即均可以利用dpram,通过控制读写地址来实现矩阵的转置,为了实现流水作业,至少需要多开辟一倍空间以实现乒乓访问机制,即乒乓操作,以完成数据的无缝缓冲与处理,提高数据吞吐量。

如图6所示,在本实施例中,基于通过二个部分实现f(x)的计算的思想,图3中的方法步骤可以进一步的进行细化。

其中,步骤s10包括:

步骤s11:通过分布式算法,计算输入数据和变换矩阵的乘积;

步骤s12:对所述输入数据和所述变换矩阵的乘积进行矩阵转置,得到矩阵转置结果;

对应的,步骤s20包括:

步骤s21:通过分布式算法,计算所述矩阵转置结果和所述变换矩阵的乘积;

步骤s22:对所述矩阵转置结果和所述变换矩阵的乘积进行矩阵转置,得到输出数据。

在具体应用中,步骤s11和s21可以通过分布式离散余弦变换单元来实现,步骤s12和s22可以通过矩阵转置单元来实现,步骤s11、s12、s21和s22可以依次通过第一分布式离散余弦变换单元、第一矩阵转置单元、第二分布式离散余弦变换单元和第二矩阵转置单元来实现,上述步骤也可以通过其他任意的具有相同或相应功能的硬件结构来实现。

本实施例通过使用分布式算法可以规避乘法器的使用,降低数据处理量,提高处理速度。

实施例三

对于大小为8×8的宏块,输入数据x和变换矩阵a的乘积的计算公式zn=axn表示为:

其中,变换矩阵a表示为:

zn=axn表示输入数据和变换矩阵的乘积,n=0、1、2、…、7且为整数。

根据变换矩阵中的系数的对称性,可以将zn=axn的计算公式简化为:

常规的方法就是事先将变换矩阵a中的每个系数值都事先存储在rom中,再根据矩阵乘法的规则进行乘法累加。由于变换矩阵中的系数都是固定值。因此,图4和5中的dctimplementation模块可以使用分布式算法来实现,从而规避乘法器的使用。

其中,分布式算法广泛应用在乘积和乘积求和(乘积求和公式为运算中。对于一个n位(即n位字长)的有符号数,可以使用如下公式表示该符号数的数值大小:

则对于zn=axn的简化计算公式中任意的zn,其计算公式可以表示为:

其中,

计算z0时,[h0h1h2h3]对应[aaaa];

计算z1时,[h0h1h2h3]对应[cf-f-c];

计算z2时,[h0h1h2h3]对应[a-a-aa];

计算z3时,[h0h1h2h3]对应[f-cc-f];

计算z4时,[h0h1h2h3]对应[bdeg];

计算z5时,[h0h1h2h3]对应[d-g-b-e];

计算z6时,[h0h1h2h3]对应[e-bgd];

计算z7时,[h0h1h2h3]对应[g-ed-b];

计算z0,z2,z4,z6时,x07对应x0+x7,x16对应x1+x6,x25对应x2+x5,x34对应x3+x4;

计算z1,z3,z5,z7时,x07对应x0-x7,x16对应x1-x6,x25对应x2-x5,x34对应x3-x4。

根据上述公式推导原理可知,可以将输入数据的一部分与变换矩阵中的固定系数整合在一起,然后存储在rom中。在通过硬件来进行实际计算时,只要将4个输入数据的每个位比特值组合成4位地址来寻址,再将结果进行移位相加即可实现zn=axn的计算。完全不需要使用乘法器,即可实现dct变换。

在具体应用中,通过rom来事先存储变换矩阵中的系数的实现方式为:因为地址是4位,所以rom的深度是16个。rom数据的位宽与变换矩阵中系数的量化等级相关。从前面变换矩阵系数的计算以及余弦函数的特性可知,最大的是7个变化系数绝对值中的b=cos(π/16)/2,其值略小于1/2。不妨设量化等级是d(d=2^k),则b需要(k-1)位表示,考虑到符号位需要额外1位表示,则所有可能的dct矩阵变换系数需要使用k位表示。因为rom存储的是4个这样的数之和,因此rom数据位宽是(k+2)位。

在具体应用中,由于常规的rom一般都是使用ram来实现,因此,可以在fdct_da模块里面使用寄存器数组来实现,即分布式forwarddct模块包括寄存器数组。这样可以在一个时钟时刻读出所有需要的存储值,缩短计算周期。

基于上述思想,在硬件实现上,可以仅通过一个fdct_da模块来实现对zn=axn的8个z值的计算,每次计算一个z值,通过模块复用机制,通过fdct_da模块依次计算出8个z值。在一种实现方式中,为了加速运算,可以同时采用8个fdct_da模块并行计算8个z值,以在计算后的某个时钟时刻一次性得出8个结果值,在其他实现方式中,也可以根据实际需要采用其他数量的fdct_da模块来实现。

下面结合附图来对本实施例所提供的分布式离散余弦变换单元和第一分布式离散余弦变换单元的具体结构作详细介绍:

如图7所示,在本实施例中,分布式离散余弦变换单元111和第一分布式离散余弦变换单元211均包括八个依次级联的d触发器101、四个分别与d触发器101连接的加法器102、四个分别与d触发器101连接的减法器103和至少一个分布式forwarddct模块(fdct_da模块)104。

其中,八个依次级联的d触发器,用于根据变换矩阵的对称性,将变换矩阵简化为第一子变换矩阵和第二子变换矩阵;

四个加法器,用于将输入数据首尾对称相加,得到第一子输入数据;

四个减法器,用于将输入数据首尾对称相减,得到第二子输入数据;

至少一个分布式forwarddct模块,用于通过分布式算法,计算第一子变换矩阵和第一子输入数据的乘积,并计算第二子变换矩阵和第二子输入数据的乘积,得到输入数据和变换矩阵的乘积;

其中,第一分布式离散余弦变换单元包括一个分布式forwarddct模块时,分布式forwarddct模块分别与加法器和减法器连接,通过模块复用机制,依次对每个加法器和每个减法器输出的数据进行处理;第一分布式离散余弦变换单元包括八个分布式forwarddct模块时,八个分布式forwarddct模块与四个所述加法器和四个所述减法器一一对应连接,每个分布式forwarddct模块仅用于对与其对应连接的加法器或减法器输出的数据进行处理,以提高数据处理效率,一次可以得到8个结果z。

图7中示例性的示出了包括八分布式forwarddct模块的情况,图7中明确的示意出了每个加法器和每个减法器的实际作用;其中,上部四个加法器102依次用于实现x0+x7、x1+x6、x2+x5、x3+x4,下部的四个减法器103依次用于实现x0-x7、x1-x6、x2-x5、x3-x4。

如图8所示,在本实施例中,基于上述zn=axn计算思想,图6中的方法步骤s11包括:

步骤s111:根据所述变换矩阵的对称性,将所述变换矩阵简化为第一子变换矩阵和第二子变换矩阵;

步骤s112:将所述输入数据首尾对称相加,得到第一子输入数据;

步骤s113:将所述输入数据首尾对称相减,得到第二子输入数据;

步骤s114:通过分布式算法,计算所述第一子变换矩阵和所述第一子输入数据的乘积,并计算所述第二子变换矩阵和所述第二子输入数据的乘积,得到所述输入数据和所述变换矩阵的乘积。

在本实施例中,各数据与上述公式的对应关系为:

第一子变换矩阵表示为第二子变换矩阵表示为输入数据表示为第一子输入数据表示为第二子输入数据表示为

应当理解的是,基于本发明实施例中模块复用的思想,对结果zn进行矩阵转置之后,可以再次通过与上述实现方式原理相同的方式,将矩阵转置之后的结果zn作为输入数据,再次进行zn=axn的计算并对计算结果进行矩阵转置,以得到最终的二维dct计算结果。

在一个实施例中,为了简化二维dct硬件装置的计算,可以在二维dct硬件装置之前设置一个fifo模块,通过检测fifo模块的工作模式,可以知道何时产生strb脉冲,每次来一个strb脉冲,则表示其后的64个时钟会连续来64个有效数据(即输入数据),即可以通过在检测到fifo模块产生strb脉冲时,开始连续读取数据64个有效数据。

如图9所示,示例性的示出了一个数据时序图,其中,clock表示时钟信号,data表示二维dct硬件装置的输入数据。

应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。

在本发明所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1