首页> 中国专利> 二次FFT或IFFT变换方法及相关产品

二次FFT或IFFT变换方法及相关产品

摘要

本申请实施例提供一种二次FFT或IFFT变换方法及相关产品,所述方法包括:获取二次FFT或IFFT变换的数据,确定该数据的第一次变换的阶数stage;依据该stage以及分解的因子个数确定对应的地址映射;依据该地址映射确定stage取数地址,对取数地址的数据执行第一次变换得到输出运算结果,将输出运算结果写入带该取数地址,对输出运算结果执行同址的第二次变换运算得到二次FFT或IFFT变换结果。本申请提供的技术方案具有时延低的优点。

著录项

  • 公开/公告号CN112511480B

    专利类型发明专利

  • 公开/公告日2022.11.01

    原文格式PDF

  • 申请/专利权人 展讯半导体(成都)有限公司;

    申请/专利号CN202011250024.4

  • 发明设计人 顾明飞;王练;

    申请日2020.11.10

  • 分类号H04L27/26(2006.01);G06F17/14(2006.01);

  • 代理机构广州三环专利商标代理有限公司 44202;广州三环专利商标代理有限公司 44202;

  • 代理人熊永强;李光金

  • 地址 610096 四川省成都市中国(四川)自由贸易试验区成都高新区天华二路219号5栋1单元3、4、5、7层

  • 入库时间 2022-11-28 17:54:09

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-11-01

    授权

    发明专利权授予

说明书

技术领域

本申请涉及通信处理技术领域,尤其涉及一种二次FFT或IFFT变换方法及相关产品。

背景技术

FFT(快速傅里叶变换)和IFFT(快速傅里叶逆变换)在很多信号处理场景中都需要执行。在信号处理场景中需要二次FFT或IFFT变换,其对时延要求极高,现有的二次FFT或IFFT变换的时延较高,资源消耗大。

发明内容

本申请实施例公开了一种二次FFT或IFFT变换方法及相关产品,能够降低二次FFT或IFFT变换的时延,有效降低资源消耗量,提高用户的体验度。

第一方面,提供一种5G系统中OFDM变换方法,所述方法包括如下步骤:

获取二次FFT或IFFT变换的数据,确定该数据的第一次变换的阶数stage;依据该stage以及分解的因子个数确定对应的地址映射;

依据该地址映射确定stage取数地址,对取数地址的数据执行第一次变换得到输出运算结果,将输出运算结果写入带该取数地址,对输出运算结果执行同址的第二次变换运算得到二次FFT或IFFT变换结果;

若所述第一次变换为:快速傅里叶变换FFT,第二次变换为IFFT;

若所述第一次变换为:IFFT,第二次变换为FFT。

第二方面,提供一种用户设备,所述用户设备包括:

获取单元,用于获取二次FFT或IFFT变换的数据;

处理单元,用于确定该数据的第一次变换的阶数stage;依据该stage以及分解的因子个数确定对应的地址映射;依据该地址映射确定stage取数地址,对取数地址的数据执行第一次变换得到输出运算结果,将输出运算结果写入带该取数地址,对输出运算结果执行同址的第二次变换得到二次FFT或IFFT变换结果;

若所述第一次变换为:快速傅里叶变换FFT,第二次变换为IFFT;

若所述第一次变换为:IFFT,第二次变换为FFT。

第三方面,提供一种电子设备,包括处理器、存储器、通信接口,以及一个或多个程序,所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执行,所述程序包括用于执行第一方面所述的方法中的步骤的指令。

第四方面,提供了一种计算机可读存储介质,存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行第一方面所述的方法。

第五方面,提供了一种计算机程序产品,其中,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如本申请实施例第一方面中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。

第六方面,提供了芯片系统,所述芯片系统包括至少一个处理器,存储器和接口电路,所述存储器、所述收发器和所述至少一个处理器通过线路互联,所述至少一个存储器中存储有计算机程序;所述计算机程序被所述处理器执行时实现第一方面所述的方法。

本申请提供的技术方案获取次FFT或IFFT变换的数据,若该数据小于预设变换尺寸,对该数据执行补零处理得到处理数据,确定该处理数据的快速傅里叶变换FFT的阶数stage;依据该stage以及分解的因子个数确定对应的地址映射;依据该地址映射确定stage取数地址,对取数地址的数据执行运算得到输出运算结果,将输出运算结果写入带该取数地址,对输出运算结果执行同址的IFFT运算得到二次FFT或IFFT变换结果。本申请的方案采用同址结构进行数据的读取和写入,有效的降低了时延,在实际测试中,其只会延时数个时钟节拍,因此其具有降低时延的作用,另外,依据上述映射取数能够极大的提高地址利用率,提高运算速度,降低运算资源,提高用户体验度。

附图说明

以下对本申请实施例用到的附图进行介绍。

图1是一种示例通信系统的系统架构图;

图2是本申请提供的一种二次FFT或IFFT变换方法的流程示意图;

图3是FFT处理器的硬件结构示意图;

图4是二次变换的方法示示意图;

图5是本申请实施例提供的一种用户设备的结构示意图;

图6是本申请实施例提供的一种电子设备的结构示意图。

具体实施方式

下面结合本申请实施例中的附图对本申请实施例进行描述。

本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,表示前后关联对象是一种“或”的关系。

本申请实施例中出现的“多个”是指两个或两个以上。本申请实施例中出现的第一、第二等描述,仅作示意与区分描述对象之用,没有次序之分,也不表示本申请实施例中对设备个数的特别限定,不能构成对本申请实施例的任何限制。本申请实施例中出现的“连接”是指直接连接或者间接连接等各种连接方式,以实现设备间的通信,本申请实施例对此不做任何限定。

本申请实施例的技术方案可以应用于如图1所示的示例通信系统100,该示例通信系统100包括终端110和网络设备120,终端110与网络设备120通信连接。

在基带信号处理中,经常需要将时域的信号变换到频域,在频域处理完成后再变换到时域,相反的过程同样存在,这就迫切需要高速率且低存储消耗的FFT处理器。

FFT处理器运算stage(阶数)与其分解因子有关,其分解的因子个数确定其运算阶数,令FFT_size为所要变换的点数,fftidx_max,fftgroup_max,为某一点数及各运算stage(运算阶数)下分解的固定计数最大值,其取值满足FFT_size=fftidx_max*fftgroup_max*8。

其中,FFT_size表示,FFT的尺寸,fftidx_max表示,fft的索引最大值,fftgroup_max表示,fft组的最大值。

参阅图2,图2提供了一种二次FFT或IFFT变换方法,该方法在如图1所示的通信系统下实现,具体的,上述方法可以由如图1所示的通信系统中的终端执行,当然在一种可选的方案中,也可以由如图1所示的通信系统中的网络设备执行,所述方法包括如下步骤:

步骤S201、获取二次FFT或IFFT变换的数据;

一次FFT(IFFT)运算流程:

数据首先输入到8片RAM,线性地址到RAM BANK号及BANK地址映射,数据输入完成后,在外部运算使能及配置参数(FFT_size、IFFT或者FFT运算标识)下进行运算动作,运算所需数据的线性地址由上文所述,该地址在映射下转换为RAM BANK号及BANK地址,所取8个数进行基8运算,在非最后一个stage下运算结果和旋转因子相乘,运算中间结果回写存储器。运算进行到最后一个stage时将进行基2或者基4或者基8运算(视各个点数具体分解情况而定),运算进行最后一级时已无旋转因子作用,结果回写缓存。RAM采用双口存储器,用于数据输入和输出的同时进行。ROM表用于存储基8运算所需的7路旋转因子。

二次FFT变换实现流程:

数据输入后,进行如上所述的一次FFT(IFFT)运算;

在变换域读取数据进行处理并同址回写,读取支持首地址为8的整数倍,对回写后的数据进行同址IFFT(FFT)运算;

在8片RAM中读取最终结果,读取支持首地址为8的整数倍,连续的8个数,取数地址进行连续二次地址映射,形如:y=f(f(x)),对y进行映射,线性地址到RAM BANK号及BANK地址映射,得最终物理RAM号及地址映射。

步骤S202、确定该数据的第一次变换的阶数stage;依据该stage以及分解的因子个数确定对应的地址映射;

步骤S203、依据该地址映射确定stage取数地址,对取数地址的数据执行第一次变换得到输出运算结果,将输出运算结果写入带该取数地址,对输出运算结果执行同址的第二次变换得到二次FFT或IFFT变换结果。

若所述第一次变换为:快速傅里叶变换FFT,第二次变换为IFFT;

若所述第一次变换为:IFFT,第二次变换为FFT。

本申请提供的技术方案获取次FFT或IFFT变换的数据,若该数据小于预设变换尺寸,对该数据执行补零处理得到处理数据,确定该处理数据的快速傅里叶变换FFT的阶数stage;依据该stage以及分解的因子个数确定对应的地址映射;依据该地址映射确定stage取数地址,对取数地址的数据执行运算得到输出运算结果,将输出运算结果写入带该取数地址,对输出运算结果执行同址的IFFT运算得到二次FFT或IFFT变换结果。本申请的方案采用同址结构进行数据的读取和写入,有效的降低了时延,在实际测试中,其只会延时数个时钟节拍,因此其具有降低时延的作用,另外,依据上述映射取数能够极大的提高地址利用率,提高运算速度,降低运算资源,提高用户体验度。

在一种可选的方案中,上述依据该stage以及该处理数据分解的因子个数确定对应的地址映射;依据该地址映射确定stage取数地址具体包括:

依据该stage以及分解的因子个数确定快速傅里叶变换组值fftgroup_num、快速傅里叶变换索引值fftidx_num以及log2_num;

若该stage为非最后一个stage,依据fftgroup_num、fftidx_num、fftidx_max、log2_num确定stage取数地址。

fftgroup_num具体可以为,fft组编号,该fftidx_num具体可以为,fft索引编号。各点数在各个stage取值如下:

2048点:

1024点:

512点:

256点:

128点:

64点:

32点:

16点:

上述各个点数分解如下:16点的分解

32点的分解n=4n

k=k

64点的分解

128点的分解

256点的分解

512点的分解

n=64n

k=k

1024点的分解

n=128n

k=k

2048点的分解

n=256n

k=k

在一种可选的方案中,上述依据fftgroup_max、fftidx_num、log2_num确定stage取数地址具体包括:

fft_addr0=fftidx_num+fftgroup_base;

fft_addrx=fft_addr(x-1)+fftidx_max*x;

其中,x的取值为【1,7】的整数;

fftgroup_base=fftgroup_num<

上述fft_addr0表示一次fft取值的第一个地址,addr表示地址,0表示取值的地址编号为0(起始值)。fft_addrx表示地址的编号,可以取【1,7】之间任意一个整数。

非最后一个stage地址生成如下:

fftgroup_base=fftgroup_num<

fft_addr0=fftidx_num+fftgroup_base;

fft_addr1=fft_addr0+fftidx_max;

fft_addr2=fft_addr1+fftidx_max*2;

fft_addr3=fft_addr2+fftidx_max*3;

fft_addr4=fft_addr3+fftidx_max*4;

fft_addr5=fft_addr4+fftidx_max*5;

fft_addr6=fft_addr5+fftidx_max*6;

fft_addr7=fft_addr6+fftidx_max*7;

旋转因子地址:twf_rom_addr=fftidx_num。

其中,<<表示左移。

令计数器fftidx_num,fftgroup_num,在每一个stage开始时清零,

在每一个stage,计数器fftidx_num在每个时钟周期计算,在计数到fftidx_max-1时,fftgroup_num计数器加1,在fftidx_num,fftgroup_num,分别计数到fftidx_max-1。

在一种可选的方案中,所述依据该stage以及分解的因子个数确定对应的地址映射;依据该地址映射确定stage取数地址具体包括:

依据该stage以及分解的因子个数确定fftgroup_num,若该stage为最后一个stage,依据该fftgroup_num的特定比特位以及分解的因子个数确定fft_addr0;依据fft_addr0确定后续fft_addrx,该x的取值为【1,7】的整数。

在一种可选的方案中,所述依据该fftgroup_num的特定比特位以及分解的因子个数确定fft_addr0;依据fft_addr0确定后续fft_addrx具体包括:

若分解的因子个数为:64、512,

fft_addrx=fft_addr0+x。

在一种可选的方案中,若分解的因子个数为64,则fft_addr0=fftgroup_num[2:0]<<3;其中,fftgroup_num[2:0]表示选取fftgroup_num第0、1、2这3个比特位的值;<<表示左移,3表示移动的位数,即表示将fftgroup_num第0、1、2这3个比特位的值左移3个比特位。

若分解的因子个数为则512,fft_addr0=fftgroup_num[5:0]<<3;其中,fftgroup_num[5:0]表示fftgroup_num第1、2、3、4、5这5个比特位,<<表示左移。

本申请的方法在高速同址实现FFT二次过程的方法,第一次变换运算的地址映射、变换域取数地址映射、第二次变换运算的地址映射及二次变换后的数据取数地址映射(在(8/4/2蝶形)同址下每次都可以取8个数实现高速运算处理,这样即实现地址在8片RAM中无冲突。

参阅图3,图3为本申请实施例中二次变换中FFT、IFFT的处理器的硬件结构示意图,如图4所示,图4为本申请实施例二次变换的方法示意图。

可以理解的是,用户设备为了实现上述功能,其包含了执行各个功能相应的硬件和/或软件模块。结合本文中所公开的实施例描述的各示例的算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以结合实施例对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

本实施例可以根据上述方法示例对电子设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块可以采用硬件的形式实现。需要说明的是,本实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

在采用对应各个功能划分各个功能模块的情况下,图5示出了一种用户设备的示意图,如图5所示,该UE500可以包括:获取单元501和处理单元502。

其中,处理单元502可以用于支持用户设备执行上述步骤S202、步骤S203等,和/或用于本文所描述的技术的其他过程。

获取单元501可以用于支持用户设备执行上述步骤S201等,和/或用于本文所描述的技术的其他过程。

需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。

本实施例提供的网络设备,用于执行上述如图2所示方法中的步骤S201,因此可以达到与上述实现方法相同的效果。

在采用集成的单元的情况下,用户设备可以包括处理模块、存储模块和通信模块。其中,处理模块可以用于对用户设备的动作进行控制管理,例如,可以用于支持电子设备执行上述获取单元501和处理单元502执行的步骤。存储模块可以用于支持电子设备执行存储程序代码和数据等。通信模块,可以用于支持电子设备与其他设备的通信。

其中,处理模块可以是处理器或控制器。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理(digital signal processing,DSP)和微处理器的组合等等。存储模块可以是存储器。通信模块具体可以为射频电路、蓝牙芯片、Wi-Fi芯片等与其他电子设备交互的设备。

可以理解的是,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对用户设备的结构限定。在本申请另一些实施例中,用户设备也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。

请参见图6,图6是本申请实施例提供的一种电子设备60,该电子设备60包括处理器601、存储器602和通信接口603,所述处理器601、存储器602和通信接口603通过总线相互连接。

存储器602包括但不限于是随机存储记忆体(random access memory,RAM)、只读存储器(read-only memory,ROM)、可擦除可编程只读存储器(erasable programmableread only memory,EPROM)、或便携式只读存储器(compact disc read-only memory,CD-ROM),该存储器602用于相关计算机程序及数据。通信接口603用于接收和发送数据。

处理器601可以是一个或多个中央处理器(central processing unit,CPU),在处理器601是一个CPU的情况下,该CPU可以是单核CPU,也可以是多核CPU。

处理器601可以包括一个或多个处理单元,例如:处理单元可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的部件,也可以集成在一个或多个处理器中。在一些实施例中,用户设备也可以包括一个或多个处理单元。其中,控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。在其他一些实施例中,处理单元中还可以设置存储器,用于存储指令和数据。示例性地,处理单元中的存储器可以为高速缓冲存储器。该存储器可以保存处理单元刚用过或循环使用的指令或数据。如果处理单元需要再次使用该指令或数据,可从所述存储器中直接调用。这样就避免了重复存取,减少了处理单元的等待时间,因而提高了用户设备处理数据或执行指令的效率。

在一些实施例中,处理器601可以包括一个或多个接口。接口可以包括集成电路间(inter-integrated circuit,I2C)接口、集成电路间音频(inter-integrated circuitsound,I2S)接口、脉冲编码调制(pulse code modulation,PCM)接口、通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口、移动产业处理器接口(mobile industry processor interface,MIPI)、用输入输出(general-purpose input/output,GPIO)接口、SIM卡接口和/或USB接口等。其中,USB接口是符合USB标准规范的接口,具体可以是Mini USB接口、Micro USB接口、USB Type C接口等。USB接口可以用于连接充电器为用户设备充电,也可以用于用户设备与外围设备之间传输数据。该USB接口也可以用于连接耳机,通过耳机播放音频。

若该电子设备60为终端侧设备,例如用户设备,该电子设备60中的处理器601用于读取所述存储器602中存储的计算机程序代码,执行以下操作:

获取次FFT或IFFT变换的数据,若该数据小于预设变换尺寸,对该数据执行补零处理得到处理数据,确定该处理数据的快速傅里叶变换FFT的阶数stage;依据该stage以及分解的因子个数确定对应的地址映射;

依据该地址映射确定stage取数地址,对取数地址的数据执行运算得到输出运算结果,将输出运算结果写入带该取数地址,对输出运算结果执行同址的IFFT运算得到二次FFT或IFFT变换结果。

其中,上述方法实施例涉及的各场景的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。

若该电子设备60为网络侧设备,例如基站。

本申请实施例还提供一种芯片系统,所述芯片系统包括至少一个处理器,存储器和接口电路,所述存储器、所述收发器和所述至少一个处理器通过线路互联,所述至少一个存储器中存储有计算机程序;所述计算机程序被所述处理器执行时,图2所示的方法流程得以实现。

本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当其在网络设备上运行时,图2所示的方法流程得以实现。

本申请实施例还提供一种计算机程序产品,当所述计算机程序产品在终端上运行时,图2所示的方法流程得以实现。

本申请实施例还提供一种终端,包括处理器、存储器、通信接口,以及一个或多个程序,所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执行,所述程序包括用于执行图2所示实施例的方法中的步骤的指令。

上述主要从方法侧执行过程的角度对本申请实施例的方案进行了介绍。可以理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模板。本领域技术人员应该很容易意识到,结合本文中所提供的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

本申请实施例可以根据上述方法示例对电子设备进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模板并不一定是本申请所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

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

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

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例上述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号