首页> 中国专利> 一种快速傅里叶变换算法输出数据的处理装置及方法

一种快速傅里叶变换算法输出数据的处理装置及方法

摘要

本发明提供了一种快速傅里叶变换算法输出数据的处理装置及方法,该装置包括:写入模块、读取模块和存储模块;存储模块中设置有数量与FFT算法的点数相对应的存储地址;读取模块用于在第2i个读写周期,按照第一地址序列,依次从各个存储地址读取数据并输出,以及在第2i+1个读写周期,按照第二地址序列,依次从各个存储地址读取数据并输出;其中,i为正整数,第一地址序列与第二地址序列所对应二进制的bit顺序相反;写入模块用于从第2个读写周期开始,在每一个读写周期,根据FFT算法输出数据帧中各个数据的输出顺序,依次将各个数据写入被读取模块读取过的各个存储地址。本方案能够使FFT算法应用于流水输出的应用场景。

著录项

  • 公开/公告号CN107391440A

    专利类型发明专利

  • 公开/公告日2017-11-24

    原文格式PDF

  • 申请/专利权人 郑州云海信息技术有限公司;

    申请/专利号CN201710641409.5

  • 发明设计人 满宏涛;周恒钊;钟俊华;王振江;

    申请日2017-07-31

  • 分类号

  • 代理机构济南信达专利事务所有限公司;

  • 代理人李世喆

  • 地址 450000 河南省郑州市郑东新区心怡路278号16层1601室

  • 入库时间 2023-06-19 03:51:20

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-07-17

    授权

    授权

  • 2020-07-03

    专利申请权的转移 IPC(主分类):G06F17/14 登记生效日:20200616 变更前: 变更后: 申请日:20170731

    专利申请权、专利权的转移

  • 2017-12-19

    实质审查的生效 IPC(主分类):G06F17/14 申请日:20170731

    实质审查的生效

  • 2017-11-24

    公开

    公开

说明书

技术领域

本发明涉及数据处理技术领域,特别涉及一种快速傅里叶变换算法输出数据的处理装置及方法。

背景技术

快速傅里叶变换(Fast Fourier Transformation,FFT)算法是数字信号处理领域的经典算法,其是根据离散傅氏变换(Discrete Fourier Transform,DFT)的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进而获得的。FFT算法对数字信号处理学科的发展起到了重要的促进作用,使得通过数字器件在频域对信号进行处理成为可能,被广泛应用于语音处理、雷达监测、声呐探测、图像处理等领域。

FFT算法输出数据的输出顺序与实际顺序遵从bit逆序原理,即将输出顺序和实际顺序分别写成二进制形式后,两者的bit顺序完成相反。比如,输出顺序0/1/2/3/4/5/6/7的二进制为000/001/010/011/100/101/110/111,则实际顺序的二进制为000/100/010/110/001/101/011/111,即实际输出顺序为0/4/2/6/1/5/3/7。因此,为了获得实际顺序的输出数据,需要对FFT算法的输出数据进行逆序处理。

目前,在对FFT算法的输出数据进行逆序处理时,将FFT算法的输出数据按照输出顺序依次写入到一个存储空间中,然后以与输出顺序bit逆序的顺序将输出数据从存储空间中读出,完成对输出数据的逆序处理。

针对目前对FFT算法的输出数据进行逆序处理的方法,为了防止输出数据被覆盖,需等待存储空间中的输出数据被完全读出后才能再次向存储空间中写入输出数据,造成FFT算法无法应用于流水输出的应用场景。

发明内容

本发明实施例提供了一种快速傅里叶变换算法输出数据的处理装置及方法,能够使FFT算法应用于流水输出的应用场景。

第一方面,本发明实施例提供了一种快速傅里叶变换算法输出数据的处理装置,包括:写入模块、读取模块和存储模块;

所述存储模块中设置有至少两个读写地址,其中,所述读写地址的个数与所述快速傅里叶变换FFT算法的点数相对应;

所述读取模块,用于在第2i个读写周期,按照获取到的第一地址序列,依次从各个所述存储地址读取数据并输出,以及在第2i+1个读写周期,按照获取到的第二地址序列,依次从各个所述存储地址读取数据并输出;其中,所述i为正整数,所述第一地址序列与所述第二地址序列所对应二进制的bit顺序相反,且所述第一地址序列与所述第二地址序列中的任意一个与各个所述存储地址的递变序列相同;

所述写入模块,用于从第2个读写周期开始,在每一个所述读写周期,接收所述FFT算法输出的数据帧,根据所述数据帧中各个数据的输出顺序,依次将所述各个数据写入被所述读取模块读取过的各个所述存储地址,其中,对各个所述存储地址进行写入的顺序与各个所述存储地址被读取的顺序相同。

可选地,

所述写入模块,用于在第2i个读写周期,接收所述FFT算法输出的第2i个数据帧,根据所述第2i个数据帧中各个数据的输出顺序,按照所述第一地址序列将所述第2i个数据帧中各个数据依次写入已被所述读取模块读取过的各个所述存储地址;以及在第2i+1个读写周期,接收所述FFT算法输出的第2i+1个数据帧,根据所述第2i+1个数据帧中各个数据的输出顺序,按照所述第二地址序列将所述第2i+1个数据帧中各个数据依次写入已被所述读取模块读取过的各个所述存储地址。

可选地,

该装置进一步包括:控制模块;

所述控制模块包括:序列产生单元、逆序处理单元、选择开关单元和周期触发单元;

所述序列产生单元,用于产生所述第一地址序列,其中,所述第一地址序列与各个所述存储地址的递增序列或递减序列相同;

所述逆序处理单元,用于对所述序列产生单元产生的所述第一地址序列进行bit逆序处理,获得所述第二地址序列,其中,所述第二地址序列与所述第一地址序列所对应二进制的bit顺序相反;

所述周期触发单元,用于在所述第2i个读写周期向所述选择开关单元发送第一触发指令,并在所述第2i+1个读写周期向所述选择开关单元发送第二触发指令;

所述选择开关单元,用于根据所述周期触发单元发送的所述第一触发指令,将所述序列产生单元产生的所述第一地址序列发送给所述写入模块和所述读取模块;以及根据所述周期触发单元发送的所述第二触发指令,将所述逆序处理单元获得的所述第二地址序列发送给所述写入模块和所述读取模块。

可选地,

所述写入模块,进一步用于在第1个读写周期,接收所述FFT算法输出的第1个数据帧,根据所述第1个数据帧中各个数据的输出顺序,按照所述第二地址序列将所述第1个数据帧中各个数据依次写入各个所述存储地址。

可选地,

所述存储模块包括:静态随机存取存储器SRAM。

可选地,

所述SRAM中所述存储地址的个数与所述FFT算法的点数相等。

第二方面,本发明实施例提供了一种快速傅里叶变换算法输出数据的处理方法,设置个数与所述快速傅里叶变换FFT算法的点数相对应的至少两个读写地址,还包括:

在第2i个读写周期,按照获取到的第一地址序列,依次从各个所述存储地址读取数据并输出,其中,i为正整数;

在所述第2i个读写周期,接收所述FFT算法输出的第2i个数据帧,根据所述第2i个数据帧中各个数据的输出顺序,依次将所述第2i个数据帧中所述各个数据写入被读取过的各个所述存储地址,其中,对各个所述存储地址进行写入的顺序与各个所述存储地址被读取的顺序相同;

在第2i+1个读写周期,按照获取到的第二地址序列,依次从各个所述存储地址读取数据并输出,其中,所述第一地址序列与所述第二地址序列所对应二进制的bit顺序相反,且所述第一地址序列与所述第二地址序列中的任意一个与各个所述存储地址的递变序列相同;

在所述第2i+1个读写周期,接收所述FFT算法输出的第2i+1个数据帧,根据所述第2i+1个数据帧中各个数据的输出顺序,依次将所述第2i+1个数据帧中各个数据写入被读取过的各个所述存储地址,其中,对各个所述存储地址进行写入的顺序与各个所述存储地址被读取的顺序相同。

可选地,

该方法进一步包括:

在第1个读写周期,接收所述FFT算法输出的第1个数据帧,根据所述第1个数据帧中各个数据的输出顺序,按照所述第二地址序列将所述第1个数据帧中各个数据依次写入各个所述存储地址。

第三方面,本发明实施例还提供了一种可读介质,包括执行指令,当存储控制器的处理器执行所述执行指令时,所述存储控制器执行上述第二方面提供的任意一种方法。

第四方面,本发明实施例还提供了一种存储控制器,包括:处理器、存储器和总线;

所述存储器用于存储执行指令,所述处理器与所述存储器通过所述总线连接,当所述存储控制器运行时,所述处理器执行所述存储器存储的所述执行指令,以使所述存储控制器执行上述第二方面提供的任意一种方法。

本发明实施例提供的快速傅里叶变换算法输出数据的处理装置及方法,存储模块中设置有数量与FFT算法点数相对应的多个读写地址,从第2个读写周期开始,读取模块在任意两个相邻读写周期分别采用第一地址序列和第二地址序列从各个读写地址读取数据并输出,而写入模块在每一个读写周期,根据FFT算法输出的数据帧中各个数据的输出顺序,依次将各个数据写入已经被读写模块读取过的各个存储地址,并保证对各个存储地址进行写入的顺序与对各个存储地址进行读取的顺序相同。由于第一地址序列与第二地址序列所对应二进制的bit相反,相邻两个读写周期采用不同的地址序列对各个读写地址进行读写,实现了对FFT算法的输出数据进行逆序处理,保证读取模块输出的数据是正序的输出数据。在同一读写周期内,读取模块从一个存储地址读取上一个周期由写入模块写入的数据后,写入模块即可以向该存储地址写入新的数据,实现了对FFT算法输出数据的连续处理,从而能够使FFT算法应用于流水输出的应用场景。

附图说明

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

图1是本发明一个实施例提供的一种快速傅里叶变换算法输出数据的处理装置的示意图;

图2是本发明一个实施例提供的另一种快速傅里叶变换算法输出数据的处理装置的示意图;

图3是本发明一个实施例提供的一种快速傅里叶变换算法输出数据的处理方法的流程图;

图4是本发明一个实施例提供的另一种快速傅里叶变换算法输出数据的处理方法的流程图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,本发明实施例提供了一种快速傅里叶变换算法输出数据的处理装置,包括:写入模块101、读取模块102和存储模块103;

所述存储模块103中设置有至少两个读写地址,其中,所述读写地址的个数与所述快速傅里叶变换FFT算法的点数相对应;

所述读取模块102,用于在第2i个读写周期,按照获取到的第一地址序列,依次从各个所述存储地址读取数据并输出,以及在第2i+1个读写周期,按照获取到的第二地址序列,依次从各个所述存储地址读取数据并输出;其中,所述i为正整数,所述第一地址序列与所述第二地址序列所对应二进制的bit顺序相反,且所述第一地址序列与所述第二地址序列中的任意一个与各个所述存储地址的递变序列相同;

所述写入模块101,用于从第2个读写周期开始,在每一个所述读写周期,接收所述FFT算法输出的数据帧,根据所述数据帧中各个数据的输出顺序,依次将所述各个数据写入被所述读取模块读取过的各个所述存储地址,其中,对各个所述存储地址进行写入的顺序与各个所述存储地址被读取的顺序相同。

本发明实施例提供了一种快速傅里叶变换算法输出数据的处理装置,存储模块中设置有数量与FFT算法点数相对应的多个读写地址,从第2个读写周期开始,读取模块在任意两个相邻读写周期分别采用第一地址序列和第二地址序列从各个读写地址读取数据并输出,而写入模块在每一个读写周期,根据FFT算法输出的数据帧中各个数据的输出顺序,依次将各个数据写入已经被读写模块读取过的各个存储地址,并保证对各个存储地址进行写入的顺序与对各个存储地址进行读取的顺序相同。由于第一地址序列与第二地址序列所对应二进制的bit相反,相邻两个读写周期采用不同的地址序列对各个读写地址进行读写,实现了对FFT算法的输出数据进行逆序处理,保证读取模块输出的数据是正序的输出数据。在同一读写周期内,读取模块从一个存储地址读取上一个周期由写入模块写入的数据后,写入模块即可以向该存储地址写入新的数据,实现了对FFT算法输出数据的连续处理,从而能够使FFT算法应用于流水输出的应用场景。

可选地,如图1所示,

写入模块101用于将FFT算法输出的数据写入各个存储地址。具体地,在第2i个读写周期,接收FFT算法输出的第2i个数据帧,根据第2i个数据帧中各个数据的输出顺序,按照第一地址序列将第2i个数据帧中各个数据依次写入已经被读取模块102读取过的各个存储地址;在第2i+1个读写周期,接收FFT算法输出的第2i+1个数据帧,根据第2i+1个数据帧中各个数据的输出顺序,按照第二地址序列将第2i+1个数据帧中各个数据依次写入已经被读取模块102读取过的各个存储地址。

例如,存储模块中设置有8个存储地址,分别为存储地址0至存储地址7,第一地址序列为0/1/2/3/4/5/6/7,相应的第二地址序列为0/4/2/6/1/5/3/7。

在第2i个读写周期,FFT算法输出的数据帧包括8个数据,8个数据的输出顺序为Y2i[0]、Y2i[4]、Y2i[2]、Y2i[6]、Y2i[1]、Y2i[5]、Y2i[3]、Y2i[7],读取模块按照第一地址序列,依次从存储地址0至存储地址7读取由写入模块在第2i-1个读写周期写入的数据。具体地,在读取模块将存储地址0中的数据读出后,写入模块将Y2i[0]写入到存储地址0;在读取模块将存储地址1中的数据读出后,写入模块将Y2i[4]写入到存储地址1;在读取模块将存储地址2中的数据读出后,写入模块将Y2i[2]写入到存储地址2;在读取模块将存储地址3中的数据读出后,写入模块将Y2i[6]写入到存储地址3;在读取模块将存储地址4中的数据读出后,写入模块将Y2i[1]写入到存储地址4;在读取模块将存储地址5中的数据读出后,写入模块将Y2i[5]写入到存储地址5;在读取模块将存储地址6中的数据读出后,写入模块将Y2i[3]写入到存储地址6;在读取模块将存储地址7中的数据读出后,写入模块将Y2i[7]写入到存储地址7。

在第2i+1个读写周期,FFT算法输出的数据帧包括8个数据,这8个数据的输出顺序为Y2i+1[0]、Y2i+1[4]、Y2i+1[2]、Y2i+1[6]、Y2i+1[1]、Y2i+1[5]、Y2i+1[3]、Y2i+1[7],读取模块按照第二地址序列,依次从存储地址0、存储地址4、存储地址2、存储地址6、存储地址1、存储地址5、存储地址3和存储地址7读取由写入模块在第2i个读写周期写入的数据。具体地,在读取模块将存储地址0中的Y2i[0]读出后,写入模块将Y2i+1[0]写入到存储地址0;在读取模块将存储地址4中的Y2i[1]读出后,写入模块将Y2i+1[4]写入存储地址4;在读取模块将存储地址2中的Y2i[2]读出后,写入模块将Y2i+1[2]写入存储地址2;在读取模块将存储地址6中的Y2i[3]读出后,写入模块将Y2i+1[6]写入存储地址6;在读取模块将存储地址1中的Y2i[4]读出后,写入模块将Y2i+1[1]写入存储地址1;在读取模块将存储地址5中的Y2i[5]读出后,写入模块将Y2i+1[5]写入存储地址5;在读取模块将存储地址3中的Y2i[6]读出后,写入模块将Y2i+1[3]写入存储地址3;在读取模块将存储地址7中的Y2i[7]读出后,写入模块将Y2i+1[7写入存储地址7。

这样,在第2i+1个读写周期,读取模块从各个存储地址顺序读取出了Y2i[0]、Y2i[1]、Y2i[2]、Y2i[3]、Y2i[4]、Y2i[5]、Y2i[6]、Y2i[7],完成了对FFT算法输出的第2i个数据帧的逆序处理;同时,写入模块在存储地址0至存储地址7中依次写入了Y2i+1[0]、Y2i+1[1]、Y2i+1[2]、Y2i+1[3]、Y2i+1[4]、Y2i+1[5]、Y2i+1[6]、Y2i+1[7],在下一个读写周期读取模块按照第一地址序列从各个存储地址读取数据时,可以顺序读出Y2i+1[0]、Y2i+1[1]、Y2i+1[2]、Y2i+1[3]、Y2i+1[4]、Y2i+1[5]、Y2i+1[6]、Y2i+1[7],以实现对FFT算法输出的第2i+1个数据帧进行逆序处理。

在同一个读写周期内,写入模块向各个存储地址写入数据的顺序与读取模块从各个存储地址中读取数据的顺序相同,当读取模块从一个存储地址读出数据后,写入模块可立即向该存储地址写入新的数据,从而读取模块可以不间断地从各个存储地址中读取数据并输出,而写入模块可以不间断地向各个存储地址中写入数据。因此,该FFT算法输出数据的处理装置可以连续地对FFT算法输出的数据进行逆序处理,因此可以将FFT算法应用于流水输出的应用场景。

可选地,如图2所示,

该FFT算数输出数据的处理装置还可以包括:控制模块104,其中,

控制模块104包括:序列产生单元1041、逆序处理单元1042、选择开关单元1043和周期触发单元1044;

序列产生单元1041用于产生第一地址序列,其中,所产生的第一地址序列与存储模块103中各个存储地址的递增序列或递减序列相同;

逆序处理单元1042用于对序列产生单元1041产生的第一地址序列进行bit逆序处理,获得第二地址序列,使得第一地址序列与第二地址序列所对应二进制的bit顺序相反;

周期触发单元1044用于在第2i个读写周期向选择开关单元1043发送第一触发指令,并将第2i+1个读写周期向选择开关单元1043发送第二处理指令;

选择开关单元1043用于在接收到周期触发单元1044发送的第一触发指令后,将序列产生单元1041产生的第一地址序列发送给写入模块101和读取模块102,并在接收到周期触发单元1044发送的第二触发指令后,将逆序处理单元1042获得的第二地址序列发送给写入模块101和读取模块102。

写入模块与读取模块在不同的读写周期采用不同的地址序列对存储模块中的各个存储地址进行读写,在每个读写周期写入模块和读取模块所采用的地址序列,由控制模块决定。控制模块中的周期触发单元根据周期的变化,控制选择开关单元向写入模块和读取模块发送第一地址序列或第二地址序列,保证写入模块与读取模块之间的准确配合,使得该装置能够连续对FFT算法的输出数据进行逆序处理,提高了该装置对FFT算法输出数据进行处理的准确性和可靠性。

可选地,如图1或图2所示,

写入模块101进一步用于在第1个读写周期,接收FFT算法输出的第1个数据帧,并根据第1个数据帧中各个数据的输出数据,按照第二地址序列将第1个数据帧中各个数据依次写入存储模块103中的各个存储地址。

在开始对FFT算法的输出数据进行处理时,由于在第1个读写周期开始时,各个存储地址中还没有数据,因此在第1个读写周期只有写入模块按照第二地址序列,将FFT算法输出的第1个数据帧中各个数据写入各个存储地址。由于读取模块在第2个读写周期按照第一地址序列从各个存储地址中读取数据,为了保证读取模块后续读取出的数据为所需的顺序,因此第1个读写周期需要按照第二地址序列向各个存储地址写入数据。

可选地,如图1或图2所示,

存储模块103可以通过静态随机存取存储器(Static Random Access Memory,SRAM)实现。由于在任意两个相邻读写周期,写入模块和读取模块均会改变对存储地址进行写入和读取的地址序列,使两个相邻读写周期所采用的两个地址序列所对应的bit顺序相反,从而通过一个SRAM即可实现对FFT算法输出数据的连续处理,达到了节省硬件资源的目的。

可选地,SRAM中存储地址的个数与FFT算法的点数相等。比如,FFT算法的点数为8,则FFT算法所输出的每个数据帧包括8个数据,相应地,SRAM中设置8个存储地址。使SRAM中存储地址的个数与FFT算法的点数相等,保证每个数据帧所包括数据的个数与存储地址的个数相等,一方面保证各个数据能够准确地被写入对应的存储地址,提高对FFT算法输出数据进行处理的准确性,另一方面无需考虑无用存储地址的序列问题,减少计算资源的浪费。

需要说明的是,由于FFT算法的点数可以为2n,比如2、4、8、16、1024等,相应地SRAM中存储地址的个数也可以为2n

如图3所示,本发明一个实施例提供了一种快速傅里叶变换算法输出数据的处理方法,包括:

步骤301:设置个数与所述快速傅里叶变换FFT算法的点数相对应的至少两个读写地址;

步骤302:在第2i个读写周期,按照获取到的第一地址序列,依次从各个所述存储地址读取数据并输出,其中,i为正整数;

步骤303:在所述第2i个读写周期,接收所述FFT算法输出的第2i个数据帧,根据所述第2i个数据帧中各个数据的输出顺序,依次将所述第2i个数据帧中所述各个数据写入被读取过的各个所述存储地址,其中,对各个所述存储地址进行写入的顺序与各个所述存储地址被读取的顺序相同;

步骤304:在第2i+1个读写周期,按照获取到的第二地址序列,依次从各个所述存储地址读取数据并输出,其中,所述第一地址序列与所述第二地址序列所对应二进制的bit顺序相反,且所述第一地址序列与所述第二地址序列中的任意一个与各个所述存储地址的递变序列相同;

步骤305:在所述第2i+1个读写周期,接收所述FFT算法输出的第2i+1个数据帧,根据所述第2i+1个数据帧中各个数据的输出顺序,依次将所述第2i+1个数据帧中各个数据写入被读取过的各个所述存储地址,其中,对各个所述存储地址进行写入的顺序与各个所述存储地址被读取的顺序相同。

本发明实施例提供一种快速傅里叶变换算法输出数据的处理方法,由于第一地址序列和第二地址序列所对应二进制的bit顺序相反,而任意两个相邻读写周期分别采用第一地址序列和第二地址序列对各个存储地址进行读写,从而可以使得从各个存储地址读取出数据的顺序符合对FFT算法输出数据进行逆序的要求,达到对FFT算法输出数据进行逆序处理的目的。在任意一个读写周期中,由于对各个存储地址进行写入和读取的顺序相同,当以相应地址序列从一个存储地址读取数据后,便可以按照相同的地址序列向该存储地址写入新的数据,从而可以不间断地向各个存储地址中写入数据和不间断地从各个存储地址中读取数据,实现了连续地对FFT算法输出的数据进行逆序处理,因此可以将FFT算法应用于流水输出的应用场景。

可选地,如图3所示,

在步骤301之前,还包括:在第1个读写周期,接收FFT算法输出的第1个数据帧,根据第1个数据帧中各个数据的输出顺序,按照第二地址序列将第1个数据帧中各个数据依次写入各个存储地址。

由于在第2个读写周期按照第一地址序列从各个存储地址中读取数据,为了保证后续从各个存储地址读取出的数据为所需的顺序,达到对FFT算法输出数据进行逆序处理的目的,因此需要在第1个读写周期按照第二地址序列向各个存储地址写入数据。

下面以点数为8的FFT算法为例,对本发明实施例提供的快速傅里叶变换算法输出数据的处理方法作进一步详细说明,如图4所示,该方法可以包括以下步骤:

步骤401:在第1个读写周期,按照第二地址序列依次向各个存储地址中写入第1个数据帧包括的各个数据。

在本发明一个实施例中,预先设置一个包括有8个存储地址的SRAM,当FFT算法开始输出数据时,接收FFT算法输出的第1个数据帧,根据第1个数据帧中8个数据的输出数据,按照第二地址序列将第1个数据帧包括的8个数据依次写入到8个存储地址中。

例如,SRAM中8个存储地址分别为存储地址0至存储地址7,预先设定第一地址序列为0/1/2/3/4/5/6/7,由于第一地址序列与第二地址序列所对应二进制的bit顺序相反,所以第二地址序列为0/4/2/6/1/5/3/7。

由于FFT算法输出数据的输出顺序与实际顺序遵从bit逆序原理,即输入FFT算法的数据依次为X[0]、X[1]、X[2]、X[3]、X[4]、X[5]、X[6]、X[7]时,FFT算法输出数据的顺序Y[0]、Y[4]、Y[2]、Y[6]、Y[1]、Y[5]、Y[3]、Y[7],其中Y[i]是FFT算法对X[i]进行运算的结果。为了获取正序的输出数据,即依次获得Y[0]、Y[1]、Y[2]、Y[3]、Y[4]、Y[5]、Y[6]、Y[7],需要对FFT算法输出数据进行逆序处理。

在第1个读写周期,按照第二地址序列,将FFT算法输出的Y1[0]、Y1[4]、Y1[2]、Y1[6]、Y1[1]、Y1[5]、Y1[3]、Y1[7],依次写入到8个存储地址中,即将Y1[0]写入存储地址0,将Y1[4]写入存储地址4,将Y1[2]写入存储地址2,将Y1[6]、Y1[1]写入存储地址1,将Y1[5]写入存储地址5,将Y1[3]写入存储地址3,将Y1[7写入存储地址7。

步骤402:在第2i个读写周期,按照第一地址序列依次对各个存储地址进行读写。

在本发明一个实施例中,在第2i个读写周期(i为正整数),按照第一地址序列依次从各个存储地址读取在第2i-1个读写周期写入的数据,并按照第一地址序列依次向已被读取过的各个存储地址写入第2i个数据帧包括的各个数据。针对每一个存储地址,在该存储地址所存储的属于第2i-1个数据帧的一个数据被读取后,根据第一地址序列,将第2i个数据帧中对应的一个数据写入该存储地址。

例如,在第2个读写周期(i=1),接收到FFT算法输出的第2个数据帧,第2个数据帧中8个数据的输出顺序依次为Y2[0]、Y2[4]、Y2[2]、Y2[6]、Y2[1]、Y2[5]、Y2[3]、Y2[7]。

首先,按照第一地址序列(0/1/2/3/4/5/6/7),依次从8个存储地址中读取在第1个读写周期写入的数据并输出。即,首先从存储地址0中读取Y1[0],然后从存储地址1中读取Y1[1],然后从存储地址2中读取Y1[2],然后从存储地址3中读取Y1[3],然后从存储地址4中读取Y1[4],然后从存储地址5中读取Y1[5],然后从存储地址6中读取Y1[6],然后从存储地址7中读取Y1[7]。这样,从8个存储地址中顺序读取出了Y1[0]、Y1[1]、Y1[2]、Y1[3]、Y1[4]、Y1[5]、Y1[6]、Y1[7],完成了对第1个数据帧的逆序处理。

然后,按照第一地址序列(0/1/2/3/4/5/6/7),依次将第2个数据帧包括的8个数据写入8个存储地址。具体地,在从存储地址0中读取Y1[0]后,将Y2[0]写入存储地址0;在从存储地址1中读取Y1[1]后,将Y2[4]写入存储地址1;在从存储地址2中读取Y1[2]后,将Y2[2]写入存储地址2;在从存储地址3中读取Y1[3]后,将Y2[6]写入存储地址3;在从存储地址4中读取Y1[4]后,将Y2[1]写入存储地址4;在从存储地址5中读取Y1[5]后,将Y2[5]写入存储地址5;在从存储地址6中读取Y1[6]后,将Y2[3]写入存储地址6;在从存储地址7中读取Y1[7]后,将Y2[7]写入存储地址7。

为了避免存储地址中未被读取数据被写入的数据覆盖,并保证向存储地址写入和读取数据的连续性,针对同一个存储地址,可以使对该存储地址进行写入的时间比进行读取的时间晚一个时序。比如,按照第一地址序列(0/1/2/3/4/5/6/7),在从存储地址1中读取Y1[1]的同时,向存储地址0写入Y2[0];在从存储地址2中读取Y2[1]的同时,向存储地址1写入Y2[4];在从存储地址3中读取Y1[3]的同时,向存储地址2写入Y2[2];依次类推,依次对存储地址4至6进行读写,在从存储地址7中读取Y1[7]后的一个时序,向存储地址7写入Y2[7]。

步骤403:在第2i+1个读写周期,按照第二地址序列依次对各个存储地址进行读写。

在本发明一个实施例中,在第2i+1个读写周期(i为正整数),按照第二地址序列依次从各个存储地址读取在第2i个读写周期写入的数据,并按照第二地址序列依次向已被读取过的各个存储地址写入在第2i+1个读写周期接收到的第2i+1个数据帧包括的各个数据。其中,针对每一个存储地址,在该存储地址所存储的属于第2i个数据帧的一个数据被读取后,根据第二地址序列,将第2i+1个数据帧中对应的一个数据写入该存储地址。

例如,在第3个读写周期(i=1),接收到FFT算法输出的第3个数据帧,第3个数据帧中8个数据的输出顺序依次为Y3[0]、Y3[4]、Y3[2]、Y3[6]、Y3[1]、Y3[5]、Y3[3]、Y3[7]。

按照第二地址序列(0/4/2/6/1/5/3/7),首先从存储地址0中读取Y2[0],然后从存储地址4中读取Y2[1],然后从存储地址2中读取Y2[2],然后从存储地址6中读取Y2[3],然后从存储地址1中读取Y2[4],然后从存储地址5中读取Y2[5],然后从存储地址3中读取Y2[6],然后从存储地址7中读取Y2[7]。这样,从8个存储地址中顺序读取出了Y2[0]、Y2[1]、Y2[2]、Y2[3]、Y2[4]、Y2[5]、Y2[6]、Y2[7],完成了对第2个数据帧的逆序处理。

按照第二地址序列(0/4/2/6/1/5/3/7),在从存储地址0中读取Y2[0]的同时将Y2[7]写入存储地址7,在从存储地址4中读取Y2[1]的同时将Y3[0]写入存储地址0,在从存储地址2中读取Y2[2]的同时将Y3[4]写入存储地址4,在从存储地址6中读取Y2[3]的同时将Y3[2]写入存储地址2,在从存储地址1中读取Y2[4]的同时将Y3[6]写入存储地址6,在从存储地址5中读取Y2[5]的同时将Y3[1]写入存储地址1,在从存储地址3中读取Y2[6]的同时将Y3[5]写入存储地址5,在从存储地址7中读取Y2[7]的同时将Y3[3]写入存储地址3。

需要说明的是,上述各个实施例所述的读写周期是为了更加清楚地对本发明进行说明而定义的时间长度,在实际业务实现过程中,相邻两个读写周期可以是连续的,即前一个读写周期的结束即为后一个读写周期的开始,另外,相邻两个读写周期还可以存在部分重叠时间,比如,在从存储地址0中读取Yi[0]的同时将Yi+1[7]写入存储地址7,则读取Yi[0]并写入Yi[7]的这段时间即输入第i个读写周期,同时也属于第i+1个读写周期。

本发明实施例还提供了一种可读介质,包括执行指令,当存储控制器的处理器执行所述执行指令时,所述存储控制器执行上述任一实施例提供的快速傅里叶变换算法输出数据的处理方法。

本发明实施例还提供了一种存储控制器,包括:处理器、存储器和总线;

所述存储器用于存储执行指令,所述处理器与所述存储器通过所述总线连接,当所述存储控制器运行时,所述处理器执行所述存储器存储的所述执行指令,以使所述存储控制器执行上述任一实施例提供的快速傅里叶变换算法输出数据的处理方法。

综上所述,本发明各个实施例提供的快速傅里叶变换算法输出数据的处理装置及方法,至少具有如下有益效果:

1、在本发明实施例中,存储模块中设置有数量与FFT算法点数相对应的多个读写地址,从第2个读写周期开始,读取模块在任意两个相邻读写周期分别采用第一地址序列和第二地址序列从各个读写地址读取数据并输出,而写入模块在每一个读写周期,根据FFT算法输出的数据帧中各个数据的输出顺序,依次将各个数据写入已经被读写模块读取过的各个存储地址,并保证对各个存储地址进行写入的顺序与对各个存储地址进行读取的顺序相同。由于第一地址序列与第二地址序列所对应二进制的bit相反,相邻两个读写周期采用不同的地址序列对各个读写地址进行读写,实现了对FFT算法的输出数据进行逆序处理,保证读取模块输出的数据是正序的输出数据。在同一读写周期内,读取模块从一个存储地址读取上一个周期由写入模块写入的数据后,写入模块即可以向该存储地址写入新的数据,实现了对FFT算法输出数据的连续处理,从而能够使FFT算法应用于流水输出的应用场景。

2、在本发明实施例中,由于在任意两个相邻读写周期,均会改变对各个存储地址进行写入和读取的地址序列,使两个相邻读写周期所采用的两个地址序列所对应的bit顺序相反,从而通过一个SRAM即可实现对FFT算法输出数据的连续处理,达到了节省硬件资源的目的。

3、在本发明实施例中,通过一个控制模块对写入模块和读取模块所采用的地址序列进行控制,保证写入模块与读取模块之间的准确配合,使得该装置能够连续对FFT算法的输出数据进行逆序处理,提高了该装置对FFT算法输出数据进行处理的准确性和可靠性。

4、在本发明实施例中,为了避免存储地址中未被读取数据被写入的数据覆盖,并保证向存储地址写入和读取数据的连续性,针对同一个存储地址,可以使对该存储地址进行写入的时间比进行读取的时间晚一个时序。在实现连续对FFT算法输出数据进行逆序处理的前提下,保证了对数据进行处理的准确性。

需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个〃····〃”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。

最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号