首页> 中国专利> 一种快速傅里叶变换和逆变换的实现方法

一种快速傅里叶变换和逆变换的实现方法

摘要

本申请适用于数据处理技术领域,提供了一种快速傅里叶变换和逆变换的实现方法。本申请实施例中获取待计算数据的数据长度;当待计算数据的数据长度小于或等于预设的寄存器组中寄存器半数时,对寄存器组进行离散处理,并将待计算数据和第一预设旋转因子输入离散后的寄存器组;通过再离散处理对寄存器组和预设的二维脉动阵列的连接进行重构处理;根据预设的傅里叶变换规则对再离散处理后的寄存器组进行蝶形运算,根据蝶形运算结果确定待计算数据的快速傅里叶变换结果,从而提高求解数据的快速傅里叶变换结果时的计算速度。

著录项

  • 公开/公告号CN114861125A

    专利类型发明专利

  • 公开/公告日2022-08-05

    原文格式PDF

  • 申请/专利权人 深圳市国微电子有限公司;

    申请/专利号CN202210499740.9

  • 发明设计人 王文青;李皇;孙长江;

    申请日2022-05-09

  • 分类号G06F17/14(2006.01);

  • 代理机构深圳中一联合知识产权代理有限公司 44414;

  • 代理人刘永康

  • 地址 518000 广东省深圳市南山区高新南一道015号国微研发大厦六层A

  • 入库时间 2023-06-19 16:17:34

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-10-18

    实质审查的生效 IPC(主分类):G06F17/14 专利申请号:2022104997409 申请日:20220509

    实质审查的生效

  • 2022-08-05

    公开

    发明专利申请公布

说明书

技术领域

本申请属于数据处理技术领域,尤其涉及一种快速傅里叶变换和逆变换的实现方法。

背景技术

在现代信息处理中,例如在声学、信号处理、数字图像处理等领域中,通常会用到快速傅里叶变换来对现代信息中的相关数据进行处理,而现有的通过单个浮点对数据进行快速傅里叶变换的计算,会导致计算速度较低。

发明内容

本申请实施例提供了一种快速傅里叶变换和逆变换的实现方法,可以解决通过单个浮点实现数据的快速傅里叶变换计算时的计算速度较低的问题。

第一方面,本申请实施例提供了一种快速傅里叶变换的实现方法,包括:

获取待计算数据的数据长度;

当待计算数据的数据长度小于或等于预设的寄存器组中寄存器半数时,对寄存器组进行离散处理,并将待计算数据和第一预设旋转因子输入离散后的寄存器组;

通过再离散处理对寄存器组和预设的二维脉动阵列的连接进行重构处理;

根据预设的傅里叶变换规则对再离散处理后的寄存器组进行蝶形运算,根据蝶形运算结果确定待计算数据的快速傅里叶变换结果。

第二方面,本申请实施例提供了一种快速傅里叶逆变换的实现方法,包括:

获取待处理数据的数据长度;

当待处理数据的数据长度小于或等于预设的寄存器组中寄存器半数时,对寄存器组进行离散处理,并将待处理数据和第二预设旋转因子输入离散后的寄存器组;

通过再离散处理对寄存器组和预设的二维脉动阵列的连接进行重构处理;

根据预设的傅里叶变换规则对再离散处理后的寄存器组进行蝶形运算,并对蝶形运算结果进行数据缩放处理,得到待处理数据的快速傅里叶逆变换结果。

第三方面,本申请实施例提供了一种快速傅里叶变换的实现装置,包括:

长度获取模块,用于获取待计算数据的数据长度;

离散模块,用于当待计算数据的数据长度小于或等于预设的寄存器组中寄存器半数时,对寄存器组进行离散处理,并将待计算数据和第一预设旋转因子输入离散后的寄存器组;

重构处理模块,用于通过再离散处理对寄存器组和预设的二维脉动阵列的连接进行重构处理;

运算模块,用于根据预设的傅里叶变换规则对再离散处理后的寄存器组进行蝶形运算,根据蝶形运算结果确定待计算数据的快速傅里叶变换结果。

第四方面,本申请实施例提供了一种终端设备,包括存储器、处理器以及存储在上述存储器中并可在上述处理器上运行的计算机程序,上述处理器执行上述计算机程序时实现上述任一种快速傅里叶变换的实现方法或上述任一种快速傅里叶逆变换的实现方法的步骤。

第五方面,本申请实施例提供了一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述的计算机程序被处理器执行时实现上述任一种快速傅里叶变换的实现方法或上述任一种快速傅里叶逆变换的实现方法的步骤。

第六方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第一方面中任一种快速傅里叶变换的实现方法或上述第二方面中任一种快速傅里叶逆变换的实现方法。

本申请实施例中获取待计算数据的数据长度,以根据待计算数据的数据长度对待计算数据进行判断,确定出待计算数据的计算方式,当待计算数据的数据长度小于或等于预设的寄存器组中寄存器半数时,对寄存器组进行离散处理,并将待计算数据和第一预设旋转因子输入离散后的寄存器组,并通过再离散处理对寄存器组和预设的二维脉动阵列的连接进行重构处理。最终根据预设的傅里叶变换规则对再离散处理后的寄存器组进行蝶形运算,以根据蝶形运算结果确定待计算数据的快速傅里叶变换结果,从而通过寄存器组存储计算数据,并通过二维脉动阵列对寄存器组进行计算求解快速傅里叶变换结果的方式,来提高求解数据的快速傅里叶变换结果时的计算速度。

附图说明

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

图1是本申请实施例提供的快速傅里叶变换的实现方法的流程示意图;

图2是本申请实施例提供的数据处理系统的结构示意图;

图3是本申请实施例提供的离散处理方式示意图;

图4是本申请实施例提供的再离散处理方式示意图;

图5是本申请实施例提供的第一预设阵列变换方式示意图;

图6是本申请实施例提供的再离散后恢复方式示意图;

图7是本申请实施例提供的第一种第二预设阵列变换方式示意图;

图8是本申请实施例提供的第二种第二预设阵列变换方式示意图;

图9是本申请实施例提供的第三种第二预设阵列变换方式示意图;

图10是本申请实施例提供的第四种第二预设阵列变换方式示意图;

图11是本申请实施例提供的第三预设阵列变换方式示意图;

图12是本申请实施例提供的快速傅里叶逆变换的实现方法的流程示意图;

图13是本申请实施例提供的快速傅里叶变换的实现装置的结构示意图;

图14是本申请实施例提供的终端设备的结构示意图。

具体实施方式

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

另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

实施例一

图1所示为本申请实施例中一种快速傅里叶变换的实现方法的流程示意图,该方法的执行主体可以是终端设备,如图1所示,上述快速傅里叶变换的实现方法可以包括如下步骤:

步骤S101、获取待计算数据的数据长度。

在一个实施例中,如图2所示,图2为数据处理系统的结构示意图,该处理系统可以实现上述快速傅里叶变换的实现方法,可以包括控制器21、寄存器组22、二维脉动阵列23、高速总线24和数据存储模块25。其中,上述控制器21负责启动并控制数据处理系统中的各个组件,以实现上述快速傅里叶变换的实现方法,即相当于本实施例中的终端设备;上述寄存器组22可以由N*N个寄存器组成,即可将数据分为N组,每组N个,N为2的幂次数,寄存器位宽可根据用户需求进行设定,在对寄存器组进行计算时需对寄存器组进行清零操作;上述二维脉动阵列23为矩形结构,可以由N*N个同类型乘加单元组成,该二维脉动阵列23可以用于计算矩阵对位加、减、乘、和矩阵乘;上述高速总线24通过高速互联的方式向数据存储模块25中输入或输出数据;上述数据存储模块25用于存储数据。

可以理解的是,上述寄存器组22可以包括至少一组寄存器组,例如在本实施例中可以用三组结构和功能完全相同的寄存器组来实现上述快速傅里叶变换的实现方法。具体地,上述三组寄存器组分别是第一寄存器组221、第二寄存器组222、第三寄存器组223,而上述第一寄存器组221包括寄存器组A和寄存器组BA,上述第二寄存器组222包括寄存器组B和寄存器组BB,上述第三寄存器组223包括寄存器组C和寄存器组BC。其中,上述寄存器组BA、寄存器组BB和寄存器组BC可以用于缓存数据,但并不与计算阵列互联,即相当于缓存寄存器组,上述寄存器组A、寄存器组B和寄存器组C可以用于缓存并处理数据,即相当于处理寄存器组。

步骤S102、判断待计算数据的数据长度是否小于或等于预设的寄存器组中寄存器半数。

若是,则执行步骤S103至步骤S105;若否,则执行步骤S106及后续步骤。

在本实施例中,若寄存器组中的寄存器数量为N*N,并用k表示,则寄存器半数为k/2。

步骤S103、对寄存器组进行离散处理,并将待计算数据和第一预设旋转因子输入离散后的寄存器组。

在本实施例中,终端设备根据预设的离散处理方式对寄存器组进行离散处理,以将寄存器组离散化。可以理解的是,离散处理可以用于将寄存器组异构为k/16组大小均为4*4的寄存器组。例如,寄存器组BA可离散为k/16组大小均为4*4的寄存器组ba1、ba2、ba3、ba4等,寄存器组A可执行相同操作离散为k/16组大小均为4*4的寄存器组a1、a2、a3、a4等,如图3所示,当N为8时,将寄存器组A离散为a1、a2、a3、a4。

在一个实施例中,寄存器组包括第一处理寄存器组、缓存寄存器组和第二处理寄存器组,第一处理寄存器组和缓存寄存器组连接,步骤S102中将待计算数据和第一预设旋转因子输入离散后的寄存器组可以包括:将待计算数据拆分为第一待计算数据和第二待计算数据,即以待计算数据的存储位置为起始地址,其前n/2个数据为第一待计算数据,后n/2个数据为第二待计算数据。并将第一待计算数据输入第一处理寄存器组,该第一处理寄存器组为离散后的寄存器组,例如寄存器组A对应的离散后的产生的寄存器组。将第二待计算数据输入第二处理寄存器组,该第二处理寄存器组为离散后的寄存器组,例如寄存器组B对应的离散后的产生的寄存器组。根据第一预设旋转因子的存储位置将第一预设旋转因子输入缓存寄存器组,即以第一预设旋转因子的存储位置为起始地址向寄存器组BA对应的离散后的产生的寄存器组内搬运n/2个第一预设旋转因子。可以理解的是,基于傅里叶变换规则,在搬运n2个第一预设旋转因子时选取循环次数对应位置的旋转因子。其中,上述n为待计算数据的数据长度。

步骤S104、通过再离散处理对寄存器组和预设的二维脉动阵列的连接进行重构处理。

在本实施例中,终端设备根据预设的再离散处理方式对寄存器组和二维脉动阵列的连接进行重构处理,即将离散后的寄存器组进行再离散处理。可以理解的是,再离散处理可以用于将于寄存器组内的A、B、C寄存器组离散生成的寄存器组a1、a2、a3、a4等,b1、b2、b3、b4等,c1、c2、c3、c4等各自再异构为4组大小均为2*2的寄存器组,例如寄存器组a1可执行相同操作离散为4组大小均为2*2的寄存器组a11、a12、a13、14等,离散后的寄存器组按照顺序与二维脉动阵列重新组合,此时计算数据的颗粒度为2*2,如图4所示,图4为当N为8时的寄存器组再离散处理示意图,通过将A、B、C寄存器组进行再离散处理,得到目标寄存器组AC0、AC1、AC2、AC3,图4中的各个目标寄存器中均存在四个计算域,例如AC0中左上角的计算域为AC01,右上角的计算域为AC02,左下角的计算域为AC03,右下角的计算域为AC04,分别对各个计算域进行数据处理及计算;AC1中左上角的计算域为AC11,右上角的计算域为AC12,左下角的计算域为AC13,右下角的计算域为AC14,分别对各个计算域进行数据处理及计算;AC2中左上角的计算域为AC21,右上角的计算域为AC22,左下角的计算域为AC23,右下角的计算域为AC24,分别对各个计算域进行数据处理及计算;AC3中左上角的计算域为AC31,右上角的计算域为AC32,左下角的计算域为AC33,右下角的计算域为AC34,分别对各个计算域进行数据处理及计算。

步骤S105、根据预设的傅里叶变换规则对再离散处理后的寄存器组进行蝶形运算,根据蝶形运算结果确定待计算数据的快速傅里叶变换结果。

在一个实施例中,步骤S105包括:根据待计算数据的数据长度确定目标运算次数;根据傅里叶变换规则确定阵列变换集合,阵列变换集合包括以预设顺序排列的至少一种阵列变换方式;根据顺序依次以阵列变换集合中的阵列变换方式对再离散处理后的寄存器组进行蝶形运算,直至蝶形运算的次数等于目标次数时,确定蝶形运算结果。

具体地,上述根据顺序依次以阵列变换集合中的阵列变换方式对再离散处理后的寄存器组进行蝶形运算,包括:以阵列变换方式对再离散处理后的寄存器组进行数据处理,得到数据处理后的寄存器组;通过二维脉动阵列对数据处理后的寄存器组进行蝶形运算。其中,上述阵列变换方式包括但不限于是第一预设阵列变换方式、第二预设阵列变换方式和第三预设阵列变换方式,第一预设阵列变换方式、第二预设阵列变换方式和第三预设阵列变换方式的处理方式如下所示。

示例性地,设定计算次数c为log

第一步,根据傅里叶变换规则确定第一预设阵列变换方式,以第一预设阵列变换方式对再离散的寄存器组中的数据进行处理。如图5所示,在计算域AC01中根据第一预设阵列变换方式映射待计算数据X0_r、X1_r、X0_r、X0_i和第一预设旋转因子W0_r、W0_i,并进行蝶形运算,更新c的值为c-1,其中,具体计算公式如下所示:

P0_r=X0_r+X1_r*W0_r–X1_i*W0_i;

P0_i=X0_i+X1_r*W0_i+X1_i*W0_r;

P1_r=X0_r–X1_r*W0_r+X1_i*W0_i;

P1_i=X0_i–X1_r*W0_i–X1_i*W0_r。

当寄存器组N为8时,通过图5计算方式可以得到各个目标寄存器组对应的各个计算域的计算结果,该计算结果分别为P0_r、P1_r、P2_r···P31_r,以及P0_i、P1_i、P2_i···P31_i。

可以理解的是,上述第一预设阵列变换方式可以用于调整输入数据在各寄存器中的位置,并自寄存器组ba1、ba2、ba3、ba4等搬运同一组第一预设旋转因子至新的寄存器组结构中的b11、b12、b13、b14等,b21、b22、b23、b24等,b31、b32、b33、b34等,b41、b42、b43、b44等。

第二步,判断c是否为0,当c为0时,根据傅里叶变换规则确定再离散后恢复方式,根据再离散后恢复方式恢复寄存器组结构,当N为8时的寄存器的结果示意图,如图6所示,并以计算结果的存储位置为起始地址自寄存器组A离散后的产生的寄存器组内搬运n个数据至数据存储模块中,至此计算结束。

而当c不为0时,根据傅里叶变换规则确定第二预设阵列变换方式,以第二预设阵列变换方式对再离散的寄存器组中的数据进行处理。如图7所示,当面对计算域AC01时,根据第二预设阵列变换方式映射上轮计算结果P0_r、P0_i、P2_r、P2_i和第一预设旋转因子W0_r、W0_i,并进行蝶形运算,更新c的值为c-1,其中,具体计算公式如下所示:

Q0_r=P0_r+P2_r*W0_r–P2_i*W0_i;

Q0_i=P0_i+P2_r*W0_i+P2_i*W0_r;

Q2_r=P0_r–P2_r*W0_r+P2_i*W0_i;

Q2_i=P0_i–P2_r*W0_i–P2_i*W0_r。

当寄存器组N为8时,通过图7计算方式可以得到各个目标寄存器组对应的各个计算域的计算结果,该计算结果分别为Q0_r、Q1_r、Q2_r···Q31_r,以及Q0_i、Q1_i、Q2_i···Q31_i。

可以理解的是,上述再离散后恢复方式可以用于促使寄存器组再离散生成的各寄存器组将保持数据不变,并按照原来的位置顺序重组为离散后的寄存器组,例如寄存器组a1离散后生成的寄存器组a11、a12、a13、a14等可执行该操作重组为寄存器a1。

可以理解的是,上述第二预设阵列变换方式可以用于调整第一预设阵列变换方式处理后的计算所产生在各寄存器中数据的位置,并自寄存器组ba1、ba2、ba3及ba4搬运两组第一预设旋转因子扩散至新的寄存器组结构中的b11、b12、b13、b14、b21、b22、b23、b24、b31、b32、b33、b34、b41、b42、b43、b44,后续第几次执行该变换时,基于第一预设阵列变换方式产生的新的寄存器组结构,调整上轮变换后的计算所产生在各寄存器中数据的位置,并自寄存器组ba1、ba2、ba3及ba4搬运组第一预设旋转因子扩散至新的寄存器组结构中的b11、b12、b13、b14、b21、b22、b23、b24、b31、b32、b33、b34、b41、b42、b43、b44。

第三步,判断c是否为0,当c为0时,根据傅里叶变换规则确定再离散后恢复方式,根据再离散后恢复方式恢复寄存器组结构,并以计算结果的存储位置为起始地址自寄存器组A离散后的产生的寄存器组内搬运n个数据至数据存储模块中,至此计算结束。

当c不为0时,根据傅里叶变换规则确定第二预设阵列变换方式,以第二预设阵列变换方式对再离散的寄存器组中的数据进行处理。如图8所示,当面对计算域AC01时,根据第二预设阵列变换方式映射上轮计算结果Q0_r、Q0_i、Q4_r、Q4_i和第一预设旋转因子W0_r、W0_i,并进行蝶形运算,更新c的值为c-1,其中,具体计算公式如下所示:

R0_r=Q0_r+Q4_r*W0_r–Q4_i*W0_i;

R0_i=Q0_i+Q4_r*W0_i+Q4_i*W0_r;

R4_r=Q0_r–Q4_r*W0_r+Q4_i*W0_i;

R4_i=Q0_i–Q4_r*W0_i–Q4_i*W0_r。

当寄存器组N为8时,通过图7计算方式可以得到各个目标寄存器组对应的各个计算域的计算结果,该计算结果分别为R0_r、R1_r、R2_r···R31_r,以及R0_i、R1_i、R2_i···R31_i。

第四步,判断c是否为0,当c为0时,根据傅里叶变换规则确定再离散后恢复方式,根据再离散后恢复方式恢复寄存器组结构,并以计算结果的存储位置为起始地址自寄存器组A离散后的产生的寄存器组内搬运n个数据至数据存储模块中,至此计算结束。

当c不为0时,根据傅里叶变换规则确定第二预设阵列变换方式,以第二预设阵列变换方式对再离散的寄存器组中的数据进行处理。如图9所示,当面对计算域AC01时,根据第二预设阵列变换方式映射上轮计算结果R0_r、和第一预设旋转因子W0_r、W0_i,并进行蝶形运算,更新c的值为c-1,其中,具体计算公式如下所示:

S0_r=R0_r+R8_r*W0_r–R8_i*W0_i;

S0_i=R0_i+R8_r*W0_i+R8_i*W0_r;

S8_r=R0_r–R8_r*W0_r+R8_i*W0_i;

S8_i=R0_i–R8_r*W0_i–R8_i*W0_r。

当寄存器组N为8时,通过图9计算方式可以得到各个目标寄存器组对应的各个计算域的计算结果,该计算结果分别为S0_r、S1_r、S2_r···S31_r,以及S0_i、S1_i、S2_i···S31_i。

第五步,判断c是否为0,当c为0时,根据傅里叶变换规则确定再离散后恢复方式,根据再离散后恢复方式恢复寄存器组结构,并以计算结果的存储位置为起始地址自寄存器组A离散后的产生的寄存器组内搬运n个数据至数据存储模块中,至此计算结束。

当c不为0时,根据傅里叶变换规则确定第二预设阵列变换方式,以第二预设阵列变换方式对再离散的寄存器组中的数据进行处理。如图10所示,当面对计算域AC01时,根据第二预设阵列变换方式映射上轮计算结果Q和第一预设旋转因子W并进行蝶形运算,更新c的值为c-1,其中,具体计算公式如下所示:

T0_r=S0_r+S16_r*W0_r–S16_i*W0_i;

T0_i=S0_i+S16_r*W0_i+S16_i*W0_r;

T16_r=S0_r–S16_r*W0_r+S16_i*W0_i;

T16_i=S0_i–S16_r*W0_i–S16_i*W0_r。

当寄存器组N为8时,通过图10计算方式可以得到各个目标寄存器组对应的各个计算域的计算结果,该计算结果分别为T0_r、T1_r、T2_r···T31_r,以及T0_i、T1_i、T2_i···T31_i。

第六步,根据傅里叶变换规则确定再离散后恢复方式,根据再离散后恢复方式恢复寄存器组结构,并以计算结果的存储位置为起始地址自寄存器组A离散后的产生的寄存器组内搬运n个数据至数据存储模块中,至此计算结束。

可以理解的是,在面对其他计算域时,也采用上述计算域AC01对应的计算方式进行求解,而相应地,可根据快速傅里叶变换规则确定各个计算域对应的第一旋转因子的具体数值。

在一个实施例中,终端设备预先根据待计算数据携带的标识信息确定待计算数据的运算类型,即当前需对待计算数据进行什么运算,再根据所得到的运算类型确定对应的目标控制算法,从算法中确定相应的规则,如本实施例中的快速傅里叶变换的实现方法所用到的傅里叶变换规则。

步骤S106、将待计算数据划分为多个待计算数据组。

具体地,终端设备可将待计算数据以k为颗粒度进行分组,即n/k=q,存在q个待计算数据组。

步骤S107、分别对各个待计算数据组对应的寄存器组进行离散处理,并将各个待计算数据组和第一预设旋转因子分别输入各个离散后的待计算数据组对应的寄存器组。

具体地,终端设备根据预设的离散处理方式对寄存器组进行离散处理,以将寄存器组离散化。以待计算数据的存储位置为起始地址,其前k/2个数据输入寄存器组A对应的离散后的产生的寄存器组,后k/2个数据输入寄存器组B对应的离散后的产生的寄存器组,以第一预设旋转因子的存储位置为起始地址向寄存器组BA对应的离散后的产生的寄存器组内搬运k/2个第一预设旋转因子。可以理解的是,基于傅里叶变换规则,在搬运k/2个第一预设旋转因子时选取循环次数对应位置的旋转因子。

步骤S108、通过再离散处理对各个离散后的待计算数据组对应的寄存器组和二维脉动阵列的连接进行重构处理。

步骤S109、根据傅里叶变换规则对各个离散后的待计算数据组对应的寄存器组进行蝶形运算,并根据各个待计算数据组对应的蝶形运算结果确定目标结果数据。

示例性地,设定计算次数c为log

第一步,根据傅里叶变换规则确定第一预设阵列变换方式,根据第一预设阵列变换方式映射待计算数据X和第一预设旋转因子W并进行蝶形运算,得到计算结果P,并更新c的值为c-1,其中,具体计算公式可参考上述示例对应部分。

第二步,根据傅里叶变换规则确定第二预设阵列变换方式,根据第二预设阵列变换方式映射上轮计算结果P和第一预设旋转因子W并进行蝶形运算,得到计算结果Q,并更新c的值为c-1,其中,具体计算公式可参考上述示例对应部分。

第三步,根据傅里叶变换规则确定第二预设阵列变换方式,根据第二预设阵列变换方式映射上轮计算结果Q和第一预设旋转因子W并进行蝶形运算,得到计算结果R,并更新c的值为c-1,其中,具体计算公式可参考上述示例对应部分。

第四步,根据傅里叶变换规则确定第二预设阵列变换方式,根据第二预设阵列变换方式映射上轮计算结果R和第一预设旋转因子W并进行蝶形运算,得到计算结果S,并更新c的值为c-1,其中,具体计算公式可参考上述示例对应部分。

第五步,根据傅里叶变换规则确定第二预设阵列变换方式,根据第二预设阵列变换方式映射上轮计算结果S和第一预设旋转因子W并进行蝶形运算,得到计算结果T,并更新c的值为c-1,其中,具体计算公式可参考上述示例对应部分。

第六步,根据傅里叶变换规则确定再离散后恢复方式,根据再离散后恢复方式恢复寄存器组结构,并以计算结果的存储位置为起始地址自寄存器组A离散后的产生的寄存器组内搬运n个数据至数据存储模块中,更新q值为q值减1。

第七步,q值判定,当q不为0时,更新待计算数据的存储位置为待计算数据的上一轮存储位置和k个数据存储的字长度的总和;更新计算结果的存储位置为计算结果的上一轮存储位置和k个数据存储的字长度的总和,循环执行第一步至第七步。当q值为0时,更新q值为q的初始值;更新待计算数据的存储位置为待计算数据的初始存储位置;更新计算结果的存储位置为计算结果的初始存储位置,设置参量i的值为2*n/k-1,并执行步骤S110。

步骤S110、通过二维脉动阵列对目标结果数据进行转置处理,并根据傅里叶变换规则对转置处理后的目标结果数据进行处理,得到待计算数据的快速傅里叶变换结果。

在本实施例中,转置处理即相当于将上述计算得到的n个结果,该n个结果视为2*n/2大小的矩阵,通过二维脉动阵列的矩阵转置操作,可以将大小为2*n/2的矩阵转置为n/2*2的矩阵,并以待计算数据的存储位置为起始地址放回至数据存储模块中。

在一个实施例中,上述根据傅里叶变换规则对转置处理后的目标结果数据进行处理可以包括:

第一步,将转置处理后的目标结果数据输入寄存器组中。

具体地,终端设备根据预设的离散处理方式对寄存器组进行离散处理,以将寄存器组离散化。以转置处理后的目标结果数据的存储位置为起始地址,其前k/2个数据输入寄存器组A对应的离散后的产生的寄存器组,后k/2个数据输入寄存器组B对应的离散后的产生的寄存器组,以第一预设旋转因子的存储位置为起始地址向寄存器组BA对应的离散后的产生的寄存器组内搬运k/2个第一预设旋转因子。可以理解的是,基于傅里叶变换规则,在搬运k/2个第一预设旋转因子时选取循环次数对应位置的旋转因子。

第二步,根据傅里叶变换规则确定第三预设阵列变换方式,以第三预设阵列变换方式对再离散的寄存器组中的数据进行处理。如图11所示,当面对计算域AC01时,根据第三预设阵列变换方式映射转置结果Y和第一预设旋转因子W,并进行蝶形运算:

U0_r=Y0_r+Y1_r*W0_r–Y1_i*W0_i;

U0_i=Y0_i+Y1_r*W0_i+Y1_i*W0_r;

U1_r=Y0_r–Y1_r*W0_r+Y1_i*W0_i;

U1_i=Y0_i–Y1_r*W0_i–Y1_i*W0_r。

当寄存器组N为8时,通过图11计算方式可以得到各个目标寄存器组对应的各个计算域的计算结果,该计算结果分别为U0_r、U1_r、U2_r···U31_r,以及U0_i、U1_i、U2_i···U31_i。

可以理解的是,上述第三预设阵列变换方式可以用于调整输入数据在各寄存器中的位置,并自寄存器组ba1、ba2、ba3及ba4搬运组第一预设旋转因子至新的寄存器组结构中的b11、b12、b13、b14、b21、b22、b23、b24、b31、b32、b33、b34、b41、b42、b43、b44。

第三步,q值判定,当q不为0时,更新待计算数据的存储位置为待计算数据的上一轮存储位置和k个数据存储的字长度的总和;更新第一预设旋转因子的存储位置为第一预设旋转因子的上一轮存储位置和k个数据存储的字长度的总和;更新计算结果的存储位置为计算结果的上一轮存储位置和k个数据存储的字长度的总和;循环执行第一步至第三步。当q值为0时,更新q值为q的初始值;更新待计算数据的存储位置为待计算数据的初始存储位置;更新计算结果的存储位置为计算结果的初始存储位置,对进行i值判断。

第四步,当i值不为0时,循环执行步骤S110中的转置处理以及第一步四第三步;当i值为0时,计算结束。

本申请实施例中获取待计算数据的数据长度,以根据待计算数据的数据长度对待计算数据进行判断,确定出待计算数据的计算方式,当待计算数据的数据长度小于或等于预设的寄存器组中寄存器半数时,对寄存器组进行离散处理,并将待计算数据和第一预设旋转因子输入离散后的寄存器组,并通过再离散处理对寄存器组和预设的二维脉动阵列的连接进行重构处理。最终根据预设的傅里叶变换规则对再离散处理后的寄存器组进行蝶形运算,以根据蝶形运算结果确定待计算数据的快速傅里叶变换结果,从而通过寄存器组存储计算数据,并通过二维脉动阵列对寄存器组进行计算求解快速傅里叶变换结果的方式,来提高求解数据的快速傅里叶变换结果时的计算速度。

实施例二

图12所示为本申请实施例中一种快速傅里叶逆变换的实现方法的流程示意图,该方法的执行主体可以是终端设备,如图12所示,上述快速傅里叶逆变换的实现方法可以包括如下步骤:

步骤S1201、获取待处理数据的数据长度。

步骤S1202、判断待处理数据的数据长度是否小于或等于预设的寄存器组中寄存器半数。

若是,则执行步骤S1203至步骤S1205;若否,则执行步骤S1206及后续步骤。

步骤S1203、对寄存器组进行离散处理,并将待处理数据和第二预设旋转因子输入离散后的寄存器组。

步骤S1204、通过再离散处理对寄存器组和预设的二维脉动阵列的连接进行重构处理。

步骤S1205、根据预设的傅里叶变换规则对再离散处理后的寄存器组进行蝶形运算,并对蝶形运算结果进行数据缩放处理,得到待处理数据的快速傅里叶逆变换结果。

在一个实施例中,步骤S1205中包括:从蝶形运算结果中依次获取待处理数据的数据长度的向量;根据待处理数据的数据长度对向量中的各个待处理数据进行数据缩放处理。

具体地,以计算结果的存储位置为起始地址,来获取长度为n的向量,并将向量中的每个数据乘以1/n,得到长度为n的计算结果,该计算结果即为待处理数据的快速傅里叶逆变换结果。

步骤S1206、将待处理数据划分为多个待处理数据组。

步骤S1207、分别对各个待处理数据组对应的寄存器组进行离散处理,并将各个待处理数据组和第二预设旋转因子分别输入各个离散后的待处理数据组对应的寄存器组。

步骤S1208、通过再离散处理对各个离散后的待处理数据组对应的寄存器组和二维脉动阵列的连接进行重构处理。

步骤S1209、根据傅里叶变换规则对各个离散后的待处理数据组对应的寄存器组进行蝶形运算,并根据各个待处理数据组对应的蝶形运算结果确定目标结果数据。

步骤S1210、通过二维脉动阵列对目标结果数据进行转置处理,并根据傅里叶变换规则对转置处理后的目标结果数据进行处理,得到目标处理结果,并对目标处理结果进行数据缩放处理,得到待处理数据的快速傅里叶逆变换结果。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的实施例二的具体工作过程,可以参考前述实施例一中的对应过程,在此不再赘述。

实施例三

对应于实施例一所述的一种快速傅里叶变换的实现方法,图13所示为本申请实施例中一种快速傅里叶变换的实现装置的结构示意图,如图13所示,上述快速傅里叶变换的实现装置可以包括:

长度获取模块131,用于获取待计算数据的数据长度。

离散模块132,用于当待计算数据的数据长度小于或等于预设的寄存器组中寄存器半数时,对寄存器组进行离散处理,并将待计算数据和第一预设旋转因子输入离散后的寄存器组。

重构处理模块133,用于通过再离散处理对寄存器组和预设的二维脉动阵列的连接进行重构处理。

运算模块134,用于根据预设的傅里叶变换规则对再离散处理后的寄存器组进行蝶形运算,根据蝶形运算结果确定待计算数据的快速傅里叶变换结果。

在一个实施例中,上述运算模块134可以包括:

次数确定单元,用于根据待计算数据的数据长度确定目标运算次数。

集合确定单元,用于根据傅里叶变换规则确定阵列变换集合,阵列变换集合包括以预设顺序排列的至少一种阵列变换方式。

结果确定单元,用于根据顺序依次以阵列变换集合中的阵列变换方式对再离散处理后的寄存器组进行蝶形运算,直至蝶形运算的次数等于目标次数时,确定蝶形运算结果。

在一个实施例中,上述结果确定单元可以包括:

数据处理子单元,用于以阵列变换方式对再离散处理后的寄存器组进行数据处理,得到数据处理后的寄存器组。

蝶形运算子单元,用于通过二维脉动阵列对数据处理后的寄存器组进行蝶形运算。

在一个实施例中,寄存器组包括第一处理寄存器组、缓存寄存器组和第二处理寄存器组,第一处理寄存器组和缓存寄存器组连接,上述离散模块132可以包括:

数据拆分单元,用于将待计算数据拆分为第一待计算数据和第二待计算数据,并将第一待计算数据输入第一处理寄存器组,将第二待计算数据输入第二处理寄存器组,将第一预设旋转因子输入缓存寄存器组。

在一个实施例中,上述快速傅里叶变换的实现装置还可以包括:

数据划分模块,用于当待计算数据的数据长度大于寄存器组中寄存器半数时,将待计算数据划分为多个待计算数据组。

离散处理模块,用于分别对各个待计算数据组对应的寄存器组进行离散处理,并将各个待计算数据组和第一预设旋转因子分别输入各个离散后的待计算数据组对应的寄存器组。

第一再离散处理模块,用于通过再离散处理对各个离散后的待计算数据组对应的寄存器组和二维脉动阵列的连接进行重构处理。

蝶形运算模块,用于根据傅里叶变换规则对各个离散后的待计算数据组对应的寄存器组进行蝶形运算,并根据各个待计算数据组对应的蝶形运算结果确定目标结果数据。

转置处理模块,用于通过二维脉动阵列对目标结果数据进行转置处理,并根据傅里叶变换规则对转置处理后的目标结果数据进行处理,得到待计算数据的快速傅里叶变换结果。

本申请实施例中获取待计算数据的数据长度,以根据待计算数据的数据长度对待计算数据进行判断,确定出待计算数据的计算方式,当待计算数据的数据长度小于或等于预设的寄存器组中寄存器半数时,对寄存器组进行离散处理,并将待计算数据和第一预设旋转因子输入离散后的寄存器组,并通过再离散处理对寄存器组和预设的二维脉动阵列的连接进行重构处理。最终根据预设的傅里叶变换规则对再离散处理后的寄存器组进行蝶形运算,以根据蝶形运算结果确定待计算数据的快速傅里叶变换结果,从而通过寄存器组存储计算数据,并通过二维脉动阵列对寄存器组进行计算求解快速傅里叶变换结果的方式,来提高求解数据的快速傅里叶变换结果时的计算速度。

实施例四

对应于实施例二所述的一种快速傅里叶逆变换的实现方法,一种快速傅里叶逆变换的实现装置可以包括:

数据长度获取模块,用于获取待处理数据的数据长度。

数据输入模块,用于当待处理数据的数据长度小于或等于预设的寄存器组中寄存器半数时,对寄存器组进行离散处理,并将待处理数据和第二预设旋转因子输入离散后的寄存器组。

第二再离散处理模块,用于通过再离散处理对寄存器组和预设的二维脉动阵列的连接进行重构处理。

数据缩放模块,用于根据预设的傅里叶变换规则对再离散处理后的寄存器组进行蝶形运算,并对蝶形运算结果进行数据缩放处理,得到待处理数据的快速傅里叶逆变换结果。

在一个实施例中,上述数据缩放模块可以包括:

向量获取单元,用于从蝶形运算结果中依次获取待处理数据的数据长度的向量。

数据缩放单元,用于根据待处理数据的数据长度对向量中的各个待处理数据进行数据缩放处理。

在一个实施例中,上述快速傅里叶逆变换的实现装置还可以包括:

数据组划分模块,用于当待处理数据的数据长度大于寄存器组中寄存器半数时,将待处理数据划分为多个待处理数据组。

处理模块,用于分别对各个待处理数据组对应的寄存器组进行离散处理,并将各个待处理数据组和第二预设旋转因子分别输入各个离散后的待处理数据组对应的寄存器组。

第三再离散处理模块,用于通过再离散处理对各个离散后的待处理数据组对应的寄存器组和二维脉动阵列的连接进行重构处理。

数据确定模块,用于根据傅里叶变换规则对各个离散后的待处理数据组对应的寄存器组进行蝶形运算,并根据各个待处理数据组对应的蝶形运算结果确定目标结果数据。

数据处理模块,用于通过二维脉动阵列对目标结果数据进行转置处理,并根据傅里叶变换规则对转置处理后的目标结果数据进行处理,得到目标处理结果。

数据缩放处理模块,用于对目标处理结果进行数据缩放处理,得到待处理数据的快速傅里叶变换结果。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。

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

实施例五

图14为本申请实施例提供的终端设备的结构示意图。为了便于说明,仅示出了与本申请实施例相关的部分。

如图14所示,该实施例的终端设备14包括:至少一个处理器1400(图14中仅示出一个),与上述处理器1400连接的存储器1401,以及存储在上述存储器1401中并可在上述至少一个处理器1400上运行的计算机程序1402,例如快速傅里叶变换的实现程序。上述处理器1400执行上述计算机程序1402时实现上述各个快速傅里叶变换的实现方法实施例中的步骤,例如图1所示的步骤S101至S110或图12所示的步骤S1201至S1210。或者,上述处理器1400执行上述计算机程序1402时实现上述各装置实施例中各模块的功能,例如图13所示模块131至134的功能。

示例性的,上述计算机程序1402可以被分割成一个或多个模块,上述一个或者多个模块被存储在上述存储器1401中,并由上述处理器1400执行,以完成本申请。上述一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述上述计算机程序1402在上述终端设备14中的执行过程。例如,上述计算机程序1402可以被分割成长度获取模块131、离散模块132、重构处理模块133、运算模块134,各模块具体功能如下:

长度获取模块131,用于获取待计算数据的数据长度。

离散模块132,用于当待计算数据的数据长度小于或等于预设的寄存器组中寄存器半数时,对寄存器组进行离散处理,并将待计算数据和第一预设旋转因子输入离散后的寄存器组。

重构处理模块133,用于通过再离散处理对寄存器组和预设的二维脉动阵列的连接进行重构处理。

运算模块134,用于根据预设的傅里叶变换规则对再离散处理后的寄存器组进行蝶形运算,根据蝶形运算结果确定待计算数据的快速傅里叶变换结果。

上述终端设备14可包括,但不仅限于,处理器1400、存储器1401。本领域技术人员可以理解,图14仅仅是终端设备14的举例,并不构成对终端设备14的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括输入输出设备、网络接入设备、总线等。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号