一种快速傅立叶变换旋转因子计算系统和方法技术方案

技术编号:30536584 阅读:17 留言:0更新日期:2021-10-30 13:11
本发明专利技术公开了通讯系统领域的一种快速傅立叶变换旋转因子计算系统和方法,旨在解决在不同的fftSize下,同一个memory在同一个clk易存在读写冲突的技术问题。一种快速傅立叶变换旋转因子计算方法,通过memory分割方法将memory分割成多个分块,将不同的datablock分配在不同的memory分块中,并通过旋转因子并行构造方法计算得出对datablock进行叠形运算时所需要的旋转因子;其中,memory为暂存每一级数据的装置,datablock为数据块。本发明专利技术能够满足NR系统各种fftSize的FFT场景的分割方式,并且给出了对应的读写方法,然后再各种场景下验证,可以完全避免读写memory的冲突;另外,仅仅保存一组旋转因子,通过另外一个辅助性的小表,可以并行构造多个旋转因子,即可节省存储空间,又能够满足并行算法的需求。又能够满足并行算法的需求。又能够满足并行算法的需求。

【技术实现步骤摘要】
一种快速傅立叶变换旋转因子计算系统和方法


[0001]本专利技术涉及一种快速傅立叶变换旋转因子计算系统和方法,属于通讯系统


技术介绍

[0002]FFT是一种DFT的高效算法,称为快速傅立叶变换(fast Fouriertransform),广泛应用于各种数字信号处理系统,例如分析信号频谱特性,5G无线通信系统中的transformprecoding,OFDMmudulation,PRACH波形生成,以及接收端都会用到。它每次输入N个数,变换输出N个数,这里的N被称为FFT的点数,也记为FFTSize。例如5G系统需要支持所有N=12*RBnum的FFT,其中0<RB<=273,在PRACH模块甚至可能用到高达N=48*4096的FFT。
[0003]5G系统需要支持很高的数据吞吐率,所以FFT模块的吞吐率是一个重要的设计指标。在平台主频受限的情况下,需要通过并行计算或者pipeline的方式来提高吞吐率。另外由于需要支持多种N值,其中一些N值可能很大,所以硬件实现时,希望使用memory而不是register来存储数据和旋转因子;再加上Cooley

Turkey算法本身有内在的数据依赖关系和对应寻址方式,意味着并行计算需要在同一个clk中读写多个数据,另外一方面同一个memory在同一个clk只能读写一次,这是实现并行算法的难点。
[0004]现有技术中,在不同的N=fftSize(也就是FFT的输入或者输出的数据数量)下,同一个memory在同一个clk易存在读写冲突,为此,我们提出一种快速傅立叶变换旋转因子计算系统和方法。

技术实现思路

[0005]本专利技术的目的在于克服现有技术中的不足,提供一种快速傅立叶变换旋转因子计算系统和方法,解决在不同的fftSize下,同一个memory在同一个clk易存在读写冲突的技术问题。
[0006]为达到上述目的,本专利技术是采用下述技术方案实现的:
[0007]第一方面,本专利技术提供了一种快速傅立叶变换旋转因子计算方法,通过memory分割方法将memory分割成多个分块,将不同的datablock分配在不同的memory分块中,并通过旋转因子并行构造方法计算得出对datablock进行叠形运算时所需要的旋转因子;
[0008]其中,memory为暂存每一级数据的装置,datablock为数据块。
[0009]进一步的,所述memory分割方法包括:
[0010]根据调度算法所决定的读写数据规律,编写计算机搜索程序来搜索memory分割方案,并根据所述memory分割方案将memory分割成多个分块,多个所述分块用于为不同的datablock提供分配空间。
[0011]进一步的,所述旋转因子并行构造方法包括:
[0012]保存旋转因子构成一个大表,并引入另一个辅助性的小表,通过大表和小表相配合计算得出多个旋转因子;其中,所述大表用于存储旋转因子表的部分旋转因子,且大表的
[0028]类似的,假如N=N1N2N3,则通过Cooley

Turkey算法可以分解为:
[0029][0030]其中:是旋转因子,通常在硬件实现中都是离线预先产生并且预先存储。
[0031]下面结合附图对本专利技术作进一步描述。以下实施例仅用于更加清楚地说明本专利技术的技术方案,而不能以此来限制本专利技术的保护范围。
[0032]实施例一:
[0033]一种快速傅立叶变换旋转因子计算方法,通过memory分割方法将memory分割成多个分块,将不同的datablock分配在不同的memory分块中,并通过旋转因子并行构造方法计算得出对datablock进行叠形运算时所需要的旋转因子,memory分割方法包括:根据调度算法所决定的读写数据规律,编写计算机搜索程序来搜索memory分割方案,并根据memory分割方案将memory分割成多个分块,多个分块用于为不同的datablock提供分配空间;旋转因子并行构造方法包括:保存旋转因子构成一个大表,并引入另一个辅助性的小表,通过大表和小表相配合计算得出多个旋转因子;其中,大表用于存储旋转因子表的部分旋转因子,且大表的大小与fftSize成正比;小表用于存储旋转因子表在特定调度算法下的相位间隔规律,其中,memory为暂存每一级数据的装置,datablock为数据块。
[0034]具体的,在设计阶段,根据相应的调度算法的内部读写规律,编写了一个memory分割方式的搜索程序,遍历搜索,在确保各种场景都不会发生读写冲突的前提下,分割的块数尽量少。成功找到能够满足NR系统各种fftSize的FFT场景的分割方式,并且给出了对应的读写方法,然后再各种场景下验证,可以完全避免读写memory的冲突。
[0035]由于每一次蝶形运算所需要的几个旋转因子之间具有均匀间隔的特点,具体地说,说,其中可以通过大表得到,而可以查小表得到,其中小表预先存储的是因为D2和D
2next
都是基本蝶形因子,D2<=8且D
2next
<=8,与fftSize相比是很小的,所以小表的存储空间远远小于大表。
[0036]仅仅用一个大表保存一个旋转因子表的一部分,另外保存一个小表,使用两个表互相配合,可以并行产生多个旋转因子而不会发生冲突,也有效地降低了旋转因子的存储开销。如果没有分割memory的方法,就只能使用register实现,效率会低,在fftSize很大的时候,register方式会比memory方式的芯片面积会增大很多。如果没有有效的并行构造旋转因子的方法,就需要存储多组旋转因子,存储开销与fftSize成正比,在fftSize很大的时候,存储开销很大。
[0037]实施例二:
[0038]一种快速傅立叶变换旋转因子计算系统,装置包括:
[0039]datablock分配模块:用于通过memory分割模块将memory分割成多个分块,将不同的datablock分配在不同的memory分块中;
[0040]旋转因子计算模块:用于通过旋转因子并行构造模块计算得出对datablock进行叠形运算时所需要的旋转因子。
[0041]需要说明的是,memory分割模块用于根据调度算法所决定的读写数据规律编写计算机搜索程序来搜索memory分割方案,并根据memory分割方案将memory分割成多个分块,多个分块用于为不同的datablock提供分配空间;旋转因子并行构造模块用于保存旋转因子构成一个大表,并引入另一个辅助性的小表,通过大表和小表相配合计算得出多个旋转因子;其中,大表用于存储旋转因子表的部分旋转因子,且大表的大小与fftSize成正比;小表用于存储旋转因子表在特定调度算法下的相位间隔规律。
[0042]实施例三:
[0043]本专利技术实施例还提供了一种快速傅立叶变换旋转因子计算装置,包括处理器及本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种快速傅立叶变换旋转因子计算方法,其特征是,通过memory分割方法将memory分割成多个分块,将不同的datablock分配在不同的memory分块中,并通过旋转因子并行构造方法计算得出对datablock进行叠形运算时所需要的旋转因子;其中,memory为暂存每一级数据的装置,datablock为数据块。2.根据权利要求1所述的快速傅立叶变换旋转因子计算方法,其特征是,所述memory分割方法包括:根据调度算法所决定的读写数据规律,编写计算机搜索程序来搜索memory分割方案,并根据所述memory分割方案将memory分割成多个分块,多个所述分块用于为不同的datablock提供分配空间。3.根据权利要求1所述的快速傅立叶变换旋转因子计算方法,其特征是,所述旋转因子并行构造方法包括:保存旋转因子构成一个大表,并引入另一个辅助性的小表,通过大表和小表相配合计算得出多个旋转因子;其中,所述大表用于存储旋转因子表的部分旋转因子,且大表的大小与fftSize成正比;所述小表用于存储旋转因子表在特定调度算法下的相位间隔规律。4.一种快速傅立叶变换旋转因子计算系统,其特征在于,所述装置包括:datablock分配模块:用于通过memory分割模块将memory分割成多个分块,将不同的datablock分配...

【专利技术属性】
技术研发人员:黄勇富
申请(专利权)人:星思连接上海半导体有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1