技术新讯 > 计算推算,计数设备的制造及其应用技术 > 一种执行FFT的方法、处理器、电子设备及存储介质与流程  >  正文

一种执行FFT的方法、处理器、电子设备及存储介质与流程

  • 国知局
  • 2025-01-10 13:27:21

本发明涉及计算机,尤其涉及一种执行fft的方法、处理器、电子设备及存储介质。

背景技术:

1、快速傅里叶变换(fast fourier transform,fft)是数字信号处理中常见的算法,实现fft算法通常有两种办法:(1)在主处理器之外附加一个异构处理器或外设模块实现fft计算,这种方法本质是为fft定制硬件,扩展性不高且研发、生产成本较高;(2)将fft运算转换为若干级乘累加的计算过程,利用rsic-v内部的乘累加(multiply accumulate,mac)单元进行并行运算,分别计算出目标值。这种设计需要将原始计算转换为乘累加的形式,但依然存在部分无法转化的独立乘法,且转换过程中需要引入额外的除法计算,执行效率较低。

技术实现思路

1、本发明实施例提供一种执行fft的方法、处理器、电子设备及存储介质,可以解决相关技术中fft算法的实现成本高、执行效率低的问题。

2、一方面,本发明实施例公开了一种执行fft的方法,所述方法包括:

3、获取待执行的快速傅里叶变换fft运算对应的点数n;

4、根据所述点数n将所述fft运算划分为m级运算;m为以2为底n的对数;

5、根据所述fft运算中各个蝶形运算单元对应的旋转因子,将每一级fft运算划分为至少一组蝶形运算;同一组蝶形运算单元对应的旋转因子相同;

6、在每一级运算中,根据各个蝶形运算单元的第一输入值、第二输入值和旋转因子,依次执行各组蝶形运算,得到蝶形运算输出序列;

7、根据第m级运算对应的蝶形运算输出序列,确定第(m+1)级运算中各个蝶形运算单元的第一输入值、第二输入值和旋转因子,并继续执行第(m+1)级运算中的各组蝶形运算,直至m级运算均执行结束,得到所述fft运算对应的结果序列;其中,0≤m≤(m-1),且m为整数。

8、可选地,所述在每一级运算中,根据各个蝶形运算单元的第一输入值、第二输入值和旋转因子,依次执行各组蝶形运算,得到蝶形运算输出序列,包括:

9、在每一级运算中,针对每组蝶形运算,获取组内各个蝶形运算单元对应的fft指令;所述fft指令中携带所述蝶形运算单元的第一输入值和所述蝶形运算单元所属的级数m;

10、在译码阶段,根据所述第一输入值和所述级数m,确定所述蝶形运算单元对应的第二输入值和旋转因子,并将所述第一输入值、所述第二输入值和所述旋转因子分别写入寄存器中;

11、在执行阶段,执行所述fft指令,以根据所述寄存器中记录的第一输入值、所述第二输入值和所述旋转因子进行蝶形运算,得到所述蝶形运算单元对应的第一运算结果和第二运算结果,直至各组蝶形运算均执行结束,得到蝶形运算输出序列。

12、可选地,所述根据所述第一输入值和所述级数m,确定所述蝶形运算单元对应的第二输入值和旋转因子,包括:

13、根据所述点数n和所述蝶形运算单元所属的级数m,确定所述蝶形运算单元与组内相邻的其他蝶形运算单元之间的第一间距;

14、根据所述第一输入值和所述第一间距确定所述蝶形运算单元的第二输入值;

15、根据所述点数n和所述蝶形运算单元所属的级数m,确定第m级运算中,相邻的两组蝶形运算之间的第二间距;

16、根据所述第二间距确定所述蝶形运算单元对应的旋转因子。

17、可选地,所述根据所述第二间距确定所述蝶形运算单元对应的旋转因子,包括:

18、获取所述fft运算对应的旋转因子的存储基地址;

19、根据所述第二间距确定所述蝶形运算单元对应的旋转因子的偏移地址;

20、基于所述存储基地址和所述偏移地址,从内存中读取所述蝶形运算单元对应的旋转因子。

21、可选地,所述在每一级运算中,根据各个蝶形运算单元的第一输入值、第二输入值和旋转因子,依次执行各组蝶形运算,得到蝶形运算输出序列,包括:

22、在每一级运算中,针对每个蝶形运算单元,从第一寄存器中读取所述蝶形运算单元的第一输入值,从第二寄存器中读取所述蝶形运算单元的第二输入值;

23、计算所述第一输入值与所述第二输入值之和,得到所述蝶形运算单元对应的第一运算结果;

24、计算所述第一输入值与所述第二输入值之差,得到中间结果,将所述中间结果记录在暂存寄存器中;

25、从第三寄存器中读取所述蝶形运算单元对应的旋转因子,从所述暂存寄存器中读取所述中间结果;

26、对所述中间结果和所述旋转因子进行复数乘法运算,得到所述蝶形运算单元对应的第二运算结果,直至各组蝶形运算均执行结束,得到蝶形运算输出序列。

27、可选地,所述方法还包括:

28、在第m级运算中,按照每个蝶形运算单元的第一输入值和第二输入值在所述第m级运算对应的输入数据中的排列顺序,将所述蝶形运算单元对应的第一运算结果和所述第二运算结果进行排序,得到第m级运算对应的蝶形运算输出序列。

29、另一方面,本发明实施例公开了一种用于执行fft的处理器,所述处理器包括指令读取单元、译码单元、通用寄存器堆、fft执行单元、访存处理单元和数据存储单元;所述fft执行单元与所述访存处理单元共用所述通用寄存器堆;

30、所述通用寄存器堆中存储有待执行的快速傅里叶变换fft运算对应的点数n、级数m;

31、所述译码单元,用于根据所述fft运算中各个蝶形运算单元对应的旋转因子,将每一级fft运算划分为至少一组蝶形运算;同一组蝶形运算单元对应的旋转因子相同;

32、所述fft执行单元,用于在每一级运算中,根据各个蝶形运算单元的第一输入值、第二输入值和旋转因子,依次执行各组蝶形运算,得到蝶形运算输出序列;

33、所述译码单元,还用于根据第m级运算对应的蝶形运算输出序列,确定第(m+1)级运算中各个蝶形运算单元的第一输入值、第二输入值和旋转因子;

34、所述fft执行单元,还用于继续执行第(m+1)级运算中的各组蝶形运算,直至m级运算均执行结束,得到所述fft运算对应的结果序列;其中,0≤m≤(m-1),且m为整数。

35、可选地,所述指令读取单元,用于在每一级运算中,针对每组蝶形运算,获取组内各个蝶形运算单元对应的fft指令;所述fft指令中携带所述蝶形运算单元的第一输入值和所述蝶形运算单元所属的级数m;

36、所述译码单元具体用于:在译码阶段,根据所述第一输入值和所述级数m,确定所述蝶形运算单元对应的第二输入值和旋转因子,并将所述第一输入值、所述第二输入值和所述旋转因子分别写入寄存器中;

37、所述fft执行单元具体用于:在执行阶段,执行所述fft指令,以根据所述寄存器中记录的第一输入值、所述第二输入值和所述旋转因子进行蝶形运算,得到所述蝶形运算单元对应的第一运算结果和第二运算结果,直至各组蝶形运算均执行结束,得到蝶形运算输出序列。

38、可选地,所述译码单元具体用于:

39、根据所述点数n和所述蝶形运算单元所属的级数m,确定所述蝶形运算单元与组内相邻的其他蝶形运算单元之间的第一间距;

40、根据所述第一输入值和所述第一间距确定所述蝶形运算单元的第二输入值;

41、根据所述点数n和所述蝶形运算单元所属的级数m,确定第m级运算中,相邻的两组蝶形运算之间的第二间距;

42、根据所述第二间距确定所述蝶形运算单元对应的旋转因子。

43、可选地,所述译码单元具体用于:

44、获取所述fft运算对应的旋转因子的存储基地址;

45、根据所述第二间距确定所述蝶形运算单元对应的旋转因子的偏移地址;

46、基于所述存储基地址和所述偏移地址,从内存中读取所述蝶形运算单元对应的旋转因子。

47、可选地,所述fft执行单元具体用于:

48、在每一级运算中,针对每个蝶形运算单元,从第一寄存器中读取所述蝶形运算单元的第一输入值,从第二寄存器中读取所述蝶形运算单元的第二输入值;

49、计算所述第一输入值与所述第二输入值之和,得到所述蝶形运算单元对应的第一运算结果;

50、计算所述第一输入值与所述第二输入值之差,得到中间结果,将所述中间结果记录在暂存寄存器中;

51、从第三寄存器中读取所述蝶形运算单元对应的旋转因子,从所述暂存寄存器中读取所述中间结果;

52、对所述中间结果和所述旋转因子进行复数乘法运算,得到所述蝶形运算单元对应的第二运算结果,直至各组蝶形运算均执行结束,得到蝶形运算输出序列。

53、可选地,所述访存处理单元,用于:

54、在第m级运算中,按照每个蝶形运算单元的第一输入值和第二输入值在所述第m级运算对应的输入数据中的排列顺序,将所述蝶形运算单元对应的第一运算结果和所述第二运算结果进行排序,得到第m级运算对应的蝶形运算输出序列。

55、再一方面,本发明实施例还公开了一种电子设备,所述电子设备包括处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行前述的执行fft的方法。

56、本发明实施例还公开了一种可读存储介质,当所述可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行前述的执行fft的方法。

57、本发明实施例包括以下优点:

58、本发明实施例提供了一种执行fft的方法,可以根据fft运算的点数n将fft运算拆分为m级运算,并将每一级fft运算划分为至少一组蝶形运算,按顺序循环执行各级运算中的各组蝶形运算即可得到fft运算对应的结果序列,无需为fft运算额外定制相应的硬件模块,也不需要将原始计算转换为乘累加的形式,降低了fft的运算成本,提高了运算效率。

本文地址:https://www.jishuxx.com/zhuanli/20250110/353186.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。