CN112163185A - Fft/ifft运算装置及基于该装置的fft/ifft运算方法 - Google Patents

Fft/ifft运算装置及基于该装置的fft/ifft运算方法 Download PDF

Info

Publication number
CN112163185A
CN112163185A CN202011057041.6A CN202011057041A CN112163185A CN 112163185 A CN112163185 A CN 112163185A CN 202011057041 A CN202011057041 A CN 202011057041A CN 112163185 A CN112163185 A CN 112163185A
Authority
CN
China
Prior art keywords
data
bit
fft
output data
ifft
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202011057041.6A
Other languages
English (en)
Other versions
CN112163185B (zh
Inventor
张天博
石晶林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Computing Technology of CAS
Original Assignee
Institute of Computing Technology of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN202011057041.6A priority Critical patent/CN112163185B/zh
Publication of CN112163185A publication Critical patent/CN112163185A/zh
Application granted granted Critical
Publication of CN112163185B publication Critical patent/CN112163185B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/141Discrete Fourier transforms
    • G06F17/142Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Theoretical Computer Science (AREA)
  • Discrete Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

本发明提供一种FFT/IFFT运算装置及基于该装置的FFT/IFFT运算方法,该FFT/IFFT运算装置包括基运算单元和数据处理单元。基运算单元用于对输入数据执行定点形式的蝶形运算得到输出数据,所述输出数据被存储至存储单元。数据处理单元包括:比较器,用于从所存储的所述输出数据中找到最大值;前导零检测器,用于对所述最大值检测其符号位与第一个1之间的0的个数,作为可移位位数;缩放器,用于基于所述可移位位数对所存储的所述输出数据执行移位操作,并且将经移位操作得到的数据转换为预定长度的数据,作为下一级定点形式的蝶形运算的输入数据。本发明在节约计算、存储资源的同时提高了FFT/IFFT的运算精度,并且还保证了较高的计算速度。

Description

FFT/IFFT运算装置及基于该装置的FFT/IFFT运算方法
技术领域
本发明涉及数字信号处理技术领域,具体而言,涉及一种FFT/IFFT运算装置以及基于该装置的FFT/IFFT运算方法。
背景技术
通信系统的上下行通道通常会涉及到输入信号和输出信号的时域处理或者频域处理,其中最常见的是信号在时域与频域之间的转换处理。目前,信号在时域与频域之间的转换处理大多采用快速傅里叶变换(Fast Fourier Transform,简称FFT)及快速傅里叶逆变换(Inverse Fast Fourier Transform,简称IFFT)技术,该技术的核心是蝶形运算(或称蝴蝶运算、基运算)和倒序技术(或称码位倒读),FFT和IFFT的运算公式通常表示如下:
FFT:
Figure BDA0002711115890000011
IFFT:
Figure BDA0002711115890000012
在公式(1)和(2)中,x(n)表示N点有限长序列,X(k)表示经离散傅里叶变换得到的数据,
Figure BDA0002711115890000013
表示旋转因子。该N点的FFT/IFFT实际上由Log2(N)级的蝶形运算组成,每一级包含有多个蝶形运算,对于最后一级蝶形运算之前的各级蝶形运算,其运算结果用作下一级蝶形运算的输入。根据序列x(n)的分割方式,蝶形运算可以进一步划分为基2、基3、基4、基5、基8、基16等蝶形运算。图1以基2蝶形运算为例示出了8点的FFT和IFFT的原理,如图1所示,8点的FFT和IFFT分别包括三级蝶形运算,其中所涉及的操作相同,仅顺序相反。
当前,针对不同的需求,FFT/IFFT的具体运算方式也各不相同。例如,如果期望实现FFT/IFFT的FFT加速器(或称FFT处理器)具有较小的面积和较低的功耗,则可以采用定点形式的蝶形运算来实现FFT/IFFT,定点计算能够节约计算资源和存储资源并且具有较快的计算速度,但其缺点在于受字长的限制并且误差较大,因此采用定点计算实现的FFT/IFFT无法满足当前5G通信领域对数据精度的要求。如果期望FFT/IFFT的运算结果具有较高的精度,则可以采用浮点形式的蝶形运算来实现FFT/IFFT,浮点计算的精度较高,但是其对计算资源和存储资源的要求也比较高,这导致FFT加速器的面积和功耗都比较大,并且计算速度也比较慢。
除了上述定点和浮点计算之外,还可以采用块浮点(Block Floating Point,简称BFP)计算来实现FFT/IFFT,其中,数据以尾数和与其他数据共用的指数来表示。在执行块浮点形式的蝶形运算时,可以直接用尾数进行计算,其计算速度要高于浮点计算并且运算精度高于定点计算。然而,与上述定点、浮点计算类似,采用块浮点计算实现的FFT/IFFT在存储数据(例如,存储执行一次蝶形运算得到的数据,该数据用于下一级蝶形运算)时,会因存储器的位宽限制而导致存储资源浪费,以及由于存储不方便而导致运算结果精度降低。
可见,为使FFT/IFFT的运算精度满足5G通信的要求,当前做法的资源消耗普遍较大。如何在消耗较少资源的情况下进一步提高FFT/IFFT的运算精度,是当前亟待解决的问题。
发明内容
针对现有技术中存在的问题,根据本发明的一个实施例,提供一种FFT/IFFT运算装置,包括:
基运算单元,用于对输入数据执行定点形式的蝶形运算得到输出数据,所述输出数据被存储至存储单元;以及
数据处理单元,所述数据处理单元包括:比较器,用于从所存储的所述输出数据中找到最大值;前导零检测器,用于对所述最大值检测其符号位与第一个1之间的0的个数,作为可移位位数;以及缩放器,用于基于所述可移位位数对所存储的所述输出数据执行移位操作,并且将经移位操作得到的数据转换为预定长度的数据,作为下一级定点形式的蝶形运算的输入数据。
上述FFT/IFFT运算装置还可以包括数据位宽截取单元,用于在存储所述输出数据之前,对所述输出数据执行数据位宽截取操作。
上述FFT/IFFT运算装置中,所述基运算单元可以由乘法器构成。所述数据位宽截取单元用于在存储所述输出数据之前,截掉所述输出数据的最后两位。
上述FFT/IFFT运算装置中,所述前导零检测器还用于在检测所述最大值符号位与第一个1之间的0的个数之前,检测所述最大值是正数还是负数,并且响应于所述最大值是负数,对所述最大值执行求反操作。
上述FFT/IFFT运算装置中,假设所述预定长度为L,所述缩放器用于:将经移位操作得到的数据除符号位后从高位到低位截取L-1位,并且将所截取的L-1位与符号位一起组成预定长度的数据;获取所述经移位操作得到的数据除符号位后从高位起第L位,检测所述第L位是否为1,响应于所述第L位为1对组成的预定长度的数据执行进位操作。
上述FFT/IFFT运算装置还可以包括数据转换单元,用于将所存储的所述输出数据转换为预定长度的数据。
上述FFT/IFFT运算装置中,假设预定长度为L,所述数据转换单元用于:将所存储的所述输出数据除符号位后从高位到低位截取L-1位,并且将所截取的L-1位与符号位一起组成预定长度的数据;获取所存储的所述输出数据除符号位后从高位起第L位,检测所述第L位是否为1,响应于所述第L位为1对组成的预定长度的数据执行进位操作。
上述FFT/IFFT运算装置还可以包括寄存器,用于存储所述可移位位数。
根据本发明的一个实施例,还提供一种基于上述FFT/IFFT运算装置的FFT/IFFT运算方法,包括:
由基运算单元对输入数据执行定点形式的蝶形运算得到输出数据,所述输出数据被存储至存储单元;
由比较器从所存储的所述输出数据中找到最大值;
由前导零检测器对所述最大值检测其符号位与第一个1之间的0的个数,作为可移位位数;以及
由缩放器基于所述可移位位数对所存储的所述输出数据执行移位操作,并且将经移位操作得到的数据转换为预定长度的数据,作为下一级定点形式的蝶形运算的输入数据。
上述方法还可以包括:由数据位宽截取单元在存储所述输出数据之前,对所述输出数据执行数据位宽截取操作;以及由数据转换单元将所存储的所述输出数据转换为预定长度的数据。
本发明实施例提供如下的有益效果:
本发明采用定点形式的蝶形运算,并且在两级定点形式的蝶形运算之间对数据进行不损失精度的移位操作以及进行转换操作,在节约计算、存储资源的同时提高了FFT/IFFT的运算精度,并且还保证了较高的计算速度。另外,在对经定点形式的蝶形运算得到的数据进行存储前,执行数据位宽截取操作,这使得数据存储更为方便并且进一步节约了存储资源。
附图说明
将通过参考附图对示例性实施例进行详细描述,附图意在描绘示例性实施例而不应被解释为对权利要求的预期范围加以限制。除非明确指出,否则附图不被认为依比例绘制。
图1以基2蝶形运算为例示出了8点的FFT/IFFT的示意图;
图2示出了根据本发明一个实施例的FFT/IFFT运算装置的结构框图;
图3示出了根据本发明一个实施例的基2蝶形运算的示意图;
图4示出了根据本发明一个实施例的两级定点形式的基2蝶形运算之间的数据处理流程图;
图5示出了根据本发明一个实施例的前导零检测过程的示意图;
图6示出了根据本发明一个实施例的基于FFT/IFFT运算装置的FFT/IFFT运算方法的流程图。
具体实施方式
为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
如上文所述,采用定点计算实现的FFT/IFFT的误差要大于采用浮点或块浮点计算实现的FFT/IFFT,而该误差主要是由两级蝶形运算之间的数据转换(例如,对一级蝶形运算得到的数据直接进行截位操作,以使其长度符合蝶形运算的输入数据长度要求,并且将截位后的数据作为下一级蝶形运算的输入数据)造成的。发明人经研究发现,在定点形式的蝶形运算之后,基于块浮点技术来处理经定点形式的蝶形运算得到的数据,并将其作为下一级定点形式的蝶形运算的输入数据,可以减少上述由数据转换带来的误差,从而可以大幅度提高采用定点计算实现的FFT/IFFT的精度,同时由于以定点计算来实现蝶形运算,因此节约了计算资源和存储资源。另外,在存储经定点形式的蝶形运算得到的数据之前,对该数据进行数据位宽截取操作以使其符合存储器的存储位宽,能够使数据存储更为方便并且可以进一步节约存储资源。
有鉴于此,根据本发明的一个实施例,提供一种FFT/IFFT运算装置。
图2示意性地示出了根据本发明一个实施例的FFT/IFFT运算装置20的结构框图,装置20包括蝶形运算模块21、数据处理单元22、存储单元23和控制单元24。概括而言,蝶形运算模块21用于执行FFT/IFFT中的定点形式的蝶形运算并存储运算结果;数据处理单元22用于对所存储的定点形式的蝶形运算的运算结果进行处理,作为下一级定点形式的蝶形运算的输入数据;存储单元23用于存储蝶形运算模块21的输入数据、输出数据、中间运算结果、旋转因子等;控制单元24用于控制数据的输入输出以及在各模块/单元之间的传输,控制单元24还用于对蝶形运算模块21中的操作以及数据处理单元22中的操作进行控制。
下文将结合图2-5对FFT/IFFT运算装置20中的蝶形运算模块21和数据处理单元22进行详细描述。其中,蝶形运算为基2蝶形运算,并且蝶形运算的输入数据的长度为16bit。
蝶形运算模块21
蝶形运算模块21用于在控制单元24的控制下执行FFT/IFFT中的多级蝶形运算,其中每一级蝶形运算包括多个定点形式的基2蝶形运算。如图2所示,蝶形运算模块21包括多个基运算单元211和数据位宽截取单元212。其中,多个基运算单元211用于在多级蝶形运算中的每一级蝶形运算中,分别执行多个如图3所示的定点形式的基2蝶形运算;数据位宽截取单元212用于对基运算单元211的运算结果进行数据位宽截取操作,并且存储经数据位宽截取操作得到的运算结果。下面分别对基运算单元211和数据位宽截取单元212进行描述。
基运算单元211用于获取输入数据a、b(a、b为复数并且长度为16bit)和旋转因子w(w为复数并且长度为16bit),对输入数据执行定点形式的基2蝶形运算,得到输出数据(即运算结果)x、y(x、y为复数)。根据本发明的一个实施例,基运算单元211由乘法器(例如,Booth乘法器)构成,并且乘法器由多个加法器构成,由该乘法器来执行定点形式的基2蝶形运算。其中,定点形式的基2蝶形运算表示如下:
xr=ar+(br*wr-bi*wi) (3)
xi=ai+(br*wi+bi*wr) (4)
yr=ar-(br*wr-bi*wi)=2ar-xr (5)
yi=ai-(br*wi+bi*wr)=2ai-xi (6)
上式中,ar表示输入数据a的实部,ai表示输入数据a的虚部,br表示输入数据b的实部,bi表示输入数据b的虚部;xr表示输出数据x的实部,xi表示输出数据x的虚部,yr表示输出数据y的实部,yi表示输出数据y的虚部;wr表示旋转因子w的实部,wi表示旋转因子w的虚部。
基运算单元211在执行公式(3)、(4)中的运算时,如图4所示,其乘法器对16bit的输入数据执行乘法操作(br*wr、bi*wi、br*wi、bi*wr),从而产生32bit的乘法运算结果;其乘法器中的加法器对32bit的乘法运算结果执行加减操作(br*wr-bi*wi、br*wi+bi*wr),从而产生33bit的加减运算结果;其乘法器中的加法器继而对33bit的加减运算结果执行加减操作(ar+(br*wr-bi*wi)、ai+(br*wi+bi*wr)),从而产生34bit的输出数据xr、xi。另外,基运算单元211在执行公式(5)、(6)中的运算时,其乘法器对输入数据执行移位操作(2ar、2ai),从而产生17bit的移位操作结果;其乘法器中的加法器继而执行加减操作(2ar-xr、2ai-xi,其中输出数据xr、xi的长度为34bit),从而产生34bit的输出数据yr、yi
由此可见,基运算单元211的输出数据xr、xi、yr、yi的长度为34bit,而34bit的数据不符合目前常用存储器的存储位宽,一方面不方便存储,在另一方面,将其存储到存储单元23会导致存储资源的浪费。因此,在存储基运算单元211的输出数据之前,还要通过数据位宽截取单元212对该输出数据进行数据位宽截取操作。
数据位宽截取单元212用于对基运算单元211的34bit的输出数据xr、xi、yr、yi进行数据位宽截取操作,即截掉xr、xi、yr、yi中每个数据的最后2bit,得到32bit的输出数据xr'、xi'、yr'、yi',并且将经数据位宽截取操作得到的输出数据xr'、xi'、yr'、yi'存储到存储单元23。
从上述基运算单元211执行的定点形式的基2蝶形运算可知,其运算结果(即,输出数据xr、xi、yr、yi)是长度为34bit的全精度数据,发明人经实验发现,截掉输出数据xr、xi、yr、yi的最后2bit对精度影响不大,而32bit的数据与目前常用存储器的存储位宽一致,与34bit的数据相比,32bit的数据方便存储并且耗费的存储资源更少。
数据处理单元22
数据处理单元22用于在控制单元24的控制下,对存储在存储单元23中的、经数据位宽截取操作的输出数据进行处理,作为下一级定点形式的基2蝶形运算的输入数据。如图2所示,数据处理单元22包括比较器221、前导零检测器222和缩放器223。下面分别对比较器221、前导零检测器222和缩放器223进行描述。
比较器221用于从存储单元23中取出经数据位宽截取操作得到的输出数据xr'、xi'、yr'、yi',比较这些数据的大小,找到其中的最大值max。
前导零检测器222用于根据最大值max来确定缩放权重,或者称最大值max的可移位位数scale_num,并且将scale_num存储在寄存器中(图2中未示出该寄存器)。scale_num表示在不损失精度的情况下,最大值max可以左移/右移的位数,scale_num用于对经数据位宽截取操作得到的输出数据xr'、xi'、yr'、yi'进行移位操作。
具体地,前导零检测器222首先检测最大值max是正数还是负数,若为负数则对最大值max进行求反操作,若为正数则不进行求反操作;随后,利用前导零检测(LeadingZeros Detect,LZD)技术检测最大值max的符号位与第一个1之间的0的个数(本领域技术人员应理解,通常约定小数点隐含地位于符号位之后),将该0的个数作为最大值max的可移位位数,并且在寄存器中存储该可移位位数(存储该可移位位数的目的在于一方面可以由缩放器223获取以执行移位操作,另一方面用于FFT/IFFT的后续运算)。图5示出了根据本发明一个实施例的前导零检测过程的示意图,其中以b30-b0表示除符号位之外的最大值max的剩余31位,B30为除符号位之外的最高位,b0为除符号位之外的最低位。如图5所示,前导零检测过程包括:首先检测b30-b16是否全为0,若全为0则继续检测b15-b8是否全为0,若全为0则继续检测b7-b4是否全为0,以此类推,直到检测到第一个不为0的1,从而确定出最大值max的符号位与第一个1之间的0的个数,作为最大值max的可移位位数。例如,若b30-b16全为0而b15为1,则最大值max的可移位位数scale_num=15。
缩放器223用于基于最大值max的可移位位数,对存储单元23中存储的经数据位宽截取操作得到的输出数据xr'、xi'、yr'、yi'进行移位操作,并且将经移位操作得到的输出数据进行数据位宽截取操作,所得到的数据用作下一级定点形式的基2蝶形运算的输入数据。
具体地,缩放器223基于可移位位数scale_num,将存储单元23中存储的32bit的xr'、xi'、yr'、yi'中的每个数据除符号位之外进行左移操作,得到32bit的经移位操作得到的输出数据xr”、xi”、yr”、yi”。例如,假设scale_num=15,将32bit的xr'、xi'、yr'、yi'除符号位之外左移15位,右边补0,从而得到长度仍为32bit的xr”、xi”、yr”、yi”。如上文所示,该左移操作不会影响xr'、xi'、yr'、yi'中的最大值max的精度,因此也就不会对其他三个数据的精度产生影响。
在执行完移位操作后,缩放器223对经移位操作得到的输出数据xr”、xi”、yr”、yi”进行数据位宽截取操作,将所得到的数据xr”'、xi”'、yr”'、yi”'用作下一级定点形式的基2蝶形运算的输入数据。其中,由于基运算单元211(其执行定点形式的基2蝶形运算)的输入数据长度为16bit,因此缩放器223将32bit的xr”、xi”、yr”、yi”除符号位后截取出15bit,与符号位一起组成16bit的数据xr”'、xi”'、yr”'、yi”'。具体地,缩放器223对于xr”、xi”、yr”、yi”中的每一个数据dat,除符号位后从左至右(即从高位到低位)选择15bit,将该15bit与符号位一起组成16bit的数据;检测数据dat的第16bit是否为1,如果第16bit为1,则还要对所组成的16bit的数据执行进位操作,即,所组成的16bit的数据进一位。如此形成的16bit的数据xr”'、xi”'、yr”'、yi”'可以用于下一级定点形式的基2蝶形运算,该数据具有较高的精度。
上述FFT/IFFT运算装置采用定点形式的蝶形运算,并且在两级定点形式的蝶形运算之间对数据进行不损失精度的移位操作以及进行转换操作,在节约计算、存储资源的同时提高了FFT/IFFT的运算精度,并且还保证了较高的计算速度。另外,在对经定点形式的蝶形运算得到的输出数据进行存储前执行数据位宽截取操作,使得数据存储更为方便并且进一步节约了存储资源。
上述实施例中,数据位宽截取单元212被设置在蝶形运算模块21中,并且在图2中仅示出了一个数据位宽截取单元212;在其他的实施例中,该数据位宽截取单元可以位于蝶形运算模块之外、独立于蝶形运算模块,并且FFT/IFFT运算装置可以包括多个这样的数据位宽截取单元。上述实施例中,存储单元23位于FFT/IFFT运算装置20中,然而本领域技术人员应理解,也可以采用位于FFT/IFFT运算装置之外的存储器来实现数据存储。上述实施例中,仅示出了一个数据处理单元22(参见图2),而在其他实施例中,FFT/IFFT运算装置可以包括多个数据处理单元22,用于在两级蝴蝶运算之间并行地操作。上述实施例中,用乘法器构成基运算单元211,与现有的结合了乘法器和额外加法器的基运算单元相比,这种仅采用乘法器的结构能够节省硬件的占用面积,本领域技术人员应理解,在其他实施例中,也可以采用乘法器结合额外加法器的方式来实现基运算单元。
在一个优选的实施例中,FFT/IFFT运算装置20还可以包括数据转换单元,用于在控制单元24的控制下,在蝶形运算模块21执行完最后一级定点形式的基2蝶形运算之后(最后一级定点形式的基2蝶形运算包括:由基运算单元211执行定点形式的基2蝶形运算得到输出数据,由数据位宽截取单元212对该输出数据进行数据位宽截取操作,并且将经数据位宽截取操作得到的输出数据xr'、xi'、yr'、yi'存储到存储单元23),将蝶形运算模块21存储在存储单元23中的输出数据xr'、xi'、yr'、yi'进行数据位宽截取操作。其中,将32bit的xr'、xi'、yr'、yi'除符号位后截取出15bit,与符号位一起组成16bit的数据。具体地,对于xr'、xi'、yr'、yi'中的每一个数据dat,除符号位后从左至右(即从高位到低位)选择15bit,将该15bit与符号位一起组成16bit的数据,检测数据dat的第16bit是否为1,如果第16bit的数据为1,则对所组成的16bit的数据执行进位操作。经数据转换单元转换后的数据可以在执行倒序操作后传输给与FFT/IFFT运算装置相连的数字信号处理器(DSP)的存储器,或者直接传输给DSP的存储器,以方便DSP内核直接读取数据进行处理,从而节省了FFT/IFFT运算装置与DSP之间的数据交互时间。在另一个实施例中,还可以用数据处理单元22来实现该数据转换单元,其中控制单元24在控制蝶形运算模块21执行完最后一级蝶形运算之后,控制数据处理单元22中的缩放器223对存储单元23中存储的xr'、xi'、yr'、yi'进行数据位宽截取操作,以得到16bit的最终输出数据。
需要说明的是,尽管上文以基2蝶形运算来描述FFT/IFFT运算装置,但该FFT/IFFT运算装置同样适用于基3、基4、基5等蝶形运算,其中,基运算单元被设置为执行定点形式的基3蝶形运算,或定点形式的基4蝶形运算,或定点形式的基5蝶形运算等。另外,上文以16bit的输入数据为例描述了FFT/IFFT运算装置,应理解,该FFT/IFFT运算装置也适用于32bit或者其他长度的输入数据。
根据本发明的一个实施例,还提供一种FFT/IFFT运算方法,该方法用于在结合图2描述的FFT/IFFT运算装置中执行。
图6示意性示出了根据本发明一个实施例的FFT/IFFT运算方法的流程图,包括如下步骤:
步骤S61.由基运算单元对输入数据执行定点形式的蝶形运算,得到输出数据。
具体地,基运算单元在控制单元的控制下获取输入数据,对输入数据执行定点形式的基2蝶形运算,得到输出数据。其中,基运算单元可以由乘法器构成。
步骤S62.由数据位宽截取单元对基运算单元的输出数据进行数据位宽截取操作,并且将经数据位宽截取操作得到的输出数据存储到存储单元。其中,数据位宽截取单元在控制单元的控制下截掉基运算单元的输出数据的最后2bit。
步骤S63.由比较器从所存储的输出数据中找到最大值。其中,比较器在控制单元的控制下,从存储单元中取出经数据位宽截取操作得到的输出数据,比较这些数据的大小,找到其中的最大值。
步骤S64.由前导零检测器对最大值检测其可移位位数。
其中,前导零检测器在控制单元的控制下,检测最大值是正数还是负数,若为负数则对最大值进行求反操作;随后,利用前导零检测技术检测最大值的符号位与第一个1之间的0的个数,作为最大值的可移位位数,并且在寄存器中存储该可移位位数。
步骤S65.由缩放器基于最大值的可移位位数,对所存储的输出数据进行移位操作,并且将经移位操作得到的数据转换为预定长度的数据,作为下一级定点形式的蝶形运算的输入数据。
其中,缩放器在控制单元的控制下,基于最大值的可移位位数将存储单元中存储的输出数据(即,在步骤S62中经数据位宽截取操作得到的输出数据)除符号位后进行左移操作。在执行完移位操作后,缩放器在控制单元的控制下,对经移位操作得到的数据进行数据位宽截取操作。以经移位操作得到的32bit数据xr”、xi”、yr”、yi”为例,对于xr”、xi”、yr”、yi”中的每一个数据dat,除符号位后从左至右(即从高位到低位)选择15bit,将该15bit与符号位一起组成16bit的数据;检测数据dat的第16bit是否为1,如果第16bit为1,则还要对组成的16bit的数据执行进位操作。
在一个优选的实施例中,FFT/IFFT运算方法还可以包括在执行完最后一级定点形式的蝶形运算之后,执行如下步骤:
由数据转换单元在控制单元的控制下,将存储单元中存储的输出数据(即,在步骤S62中经数据位宽截取操作得到的输出数据)转换为预定长度的数据。其中,将所存储的输出数据进行数据位宽截取操作,所得到的数据可以在执行倒序操作后传输给与FFT/IFFT运算装置相连的DSP的存储器,或者直接传输给该DSP的存储器。
发明人通过实验发现,本发明提供的上述FFT/IFFT运算装置及运算方法与采用块浮点计算实现的FFT/IFFT相比,能够节约存储资源;与采用定点计算实现的FFT/IFFT相比,计算误差减小了70%;并且与采用浮点计算实现的FFT/IFFT相比,计算误差不大于0.2%同时节约了计算资源和存储资源。
应注意到一些示例性方法被描绘为流程图。虽然流程图将操作表述为顺序执行,但可以理解的是,许多操作可以并行、同时或同步地执行。另外,可以重新排列操作的顺序。处理可以在操作完成时终止,但是也可以具有并未包括在图中或实施例中的另外的步骤。
上述方法可以通过硬件、软件、固件、中间件、伪代码、硬件描述语言或者它们的任意组合来实现。当以软件、固件、中间件或伪代码实施时,用来执行任务的程序代码或代码分段可以被存储在计算机可读介质中,诸如存储介质,处理器可以执行该任务。
应理解,软件实现的示例性实施例通常在一些形式的程序存储介质上进行编码或者在一些类型的传输介质上实现。程序存储介质可以是任意的非瞬态存储介质,诸如磁盘(例如,软盘或硬盘)或光盘(例如,紧凑盘只读存储器或“CD ROM”),并且可以是只读的或者随机访问的。类似地,传输介质可以是双绞线、同轴线缆、光纤,或者本领域已知的一些其它适用的传输介质。
虽然本发明已经通过优选实施例进行了描述,然而本发明并非局限于这里所描述的实施例,在不脱离本发明范围的情况下还包括所做出的各种改变以及变化。

Claims (10)

1.一种FFT/IFFT运算装置,其特征在于,包括:
基运算单元,用于对输入数据执行定点形式的蝶形运算得到输出数据,所述输出数据被存储至存储单元;以及
数据处理单元,所述数据处理单元包括:
比较器,用于从所存储的所述输出数据中找到最大值;
前导零检测器,用于对所述最大值检测其符号位与第一个1之间的0的个数,作为可移位位数;以及
缩放器,用于基于所述可移位位数对所存储的所述输出数据执行移位操作,并且将经移位操作得到的数据转换为预定长度的数据,作为下一级定点形式的蝶形运算的输入数据。
2.根据权利要求1所述的FFT/IFFT运算装置,其特征在于,还包括:
数据位宽截取单元,用于在存储所述输出数据之前,对所述输出数据执行数据位宽截取操作。
3.根据权利要求2所述的FFT/IFFT运算装置,其特征在于,
所述基运算单元由乘法器构成;以及
所述数据位宽截取单元用于在存储所述输出数据之前,截掉所述输出数据的最后两位。
4.根据权利要求1-3中任一项所述的FFT/IFFT运算装置,其特征在于,所述前导零检测器还用于在检测所述最大值符号位与第一个1之间的0的个数之前,检测所述最大值是正数还是负数,并且响应于所述最大值是负数,对所述最大值执行求反操作。
5.根据权利要求1-3中任一项所述的FFT/IFFT运算装置,其特征在于,所述预定长度为L;以及
所述缩放器用于:
将经移位操作得到的数据除符号位后从高位到低位截取L-1位,并且将所截取的L-1位与符号位一起组成预定长度的数据;
获取所述经移位操作得到的数据除符号位后从高位起第L位,检测所述第L位是否为1,响应于所述第L位为1对组成的预定长度的数据执行进位操作。
6.根据权利要求1-3中任一项所述的FFT/IFFT运算装置,其特征在于,还包括:
数据转换单元,用于将所存储的所述输出数据转换为预定长度的数据。
7.根据权利要求6所述的FFT/IFFT运算装置,其特征在于,所述预定长度为L;以及
所述数据转换单元用于:
将所存储的所述输出数据除符号位后从高位到低位截取L-1位,并且将所截取的L-1位与符号位一起组成预定长度的数据;
获取所存储的所述输出数据除符号位后从高位起第L位,检测所述第L位是否为1,响应于所述第L位为1对组成的预定长度的数据执行进位操作。
8.根据权利要求1-3中任意项所述的FFT/IFFT运算装置,其特征在于,还包括:
寄存器,用于存储所述可移位位数。
9.一种基于如权利要求1-8中任一项所述的FFT/IFFT运算装置的FFT/IFFT运算方法,其特征在于,包括:
由基运算单元对输入数据执行定点形式的蝶形运算得到输出数据,所述输出数据被存储至存储单元;
由比较器从所存储的所述输出数据中找到最大值;
由前导零检测器对所述最大值检测其符号位与第一个1之间的0的个数,作为可移位位数;以及
由缩放器基于所述可移位位数对所存储的所述输出数据执行移位操作,并且将经移位操作得到的数据转换为预定长度的数据,作为下一级定点形式的蝶形运算的输入数据。
10.根据权利要求9所述的FFT/IFFT运算方法,其特征在于,还包括:
由数据位宽截取单元在存储所述输出数据之前,对所述输出数据执行数据位宽截取操作;以及
由数据转换单元将所存储的所述输出数据转换为预定长度的数据。
CN202011057041.6A 2020-09-30 2020-09-30 Fft/ifft运算装置及基于该装置的fft/ifft运算方法 Active CN112163185B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011057041.6A CN112163185B (zh) 2020-09-30 2020-09-30 Fft/ifft运算装置及基于该装置的fft/ifft运算方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011057041.6A CN112163185B (zh) 2020-09-30 2020-09-30 Fft/ifft运算装置及基于该装置的fft/ifft运算方法

Publications (2)

Publication Number Publication Date
CN112163185A true CN112163185A (zh) 2021-01-01
CN112163185B CN112163185B (zh) 2023-11-28

Family

ID=73862257

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011057041.6A Active CN112163185B (zh) 2020-09-30 2020-09-30 Fft/ifft运算装置及基于该装置的fft/ifft运算方法

Country Status (1)

Country Link
CN (1) CN112163185B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116257207A (zh) * 2022-09-08 2023-06-13 重庆位图信息技术有限公司 一种数据截位方法、模块、计算机设备及存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101938442A (zh) * 2009-06-30 2011-01-05 中兴通讯股份有限公司 Dft处理器的预检测基运算方法、混合基运算方法和系统
CN102063411A (zh) * 2009-11-17 2011-05-18 中国科学院微电子研究所 一种基于802.11n的FFT/IFFT处理器
CN103412851A (zh) * 2013-07-30 2013-11-27 复旦大学 一种高精度低功耗的fft处理器
CN103559019A (zh) * 2013-11-08 2014-02-05 上海航天测控通信研究所 一种通用浮点全流水fft运算ip核
CN103699515A (zh) * 2013-12-27 2014-04-02 中国科学院计算技术研究所 一种fft并行处理装置和方法
CN104679720A (zh) * 2015-03-17 2015-06-03 成都金本华科技股份有限公司 一种实现fft的运算方法
CN104679721A (zh) * 2015-03-17 2015-06-03 成都金本华科技股份有限公司 一种fft处理器的运算方法
CN107273090A (zh) * 2017-05-05 2017-10-20 中国科学院计算技术研究所 面向神经网络处理器的近似浮点乘法器及浮点数乘法
CN110221808A (zh) * 2019-06-03 2019-09-10 深圳芯英科技有限公司 向量乘加运算的预处理方法、乘加器及计算机可读介质

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101938442A (zh) * 2009-06-30 2011-01-05 中兴通讯股份有限公司 Dft处理器的预检测基运算方法、混合基运算方法和系统
CN102063411A (zh) * 2009-11-17 2011-05-18 中国科学院微电子研究所 一种基于802.11n的FFT/IFFT处理器
CN103412851A (zh) * 2013-07-30 2013-11-27 复旦大学 一种高精度低功耗的fft处理器
CN103559019A (zh) * 2013-11-08 2014-02-05 上海航天测控通信研究所 一种通用浮点全流水fft运算ip核
CN103699515A (zh) * 2013-12-27 2014-04-02 中国科学院计算技术研究所 一种fft并行处理装置和方法
CN104679720A (zh) * 2015-03-17 2015-06-03 成都金本华科技股份有限公司 一种实现fft的运算方法
CN104679721A (zh) * 2015-03-17 2015-06-03 成都金本华科技股份有限公司 一种fft处理器的运算方法
CN107273090A (zh) * 2017-05-05 2017-10-20 中国科学院计算技术研究所 面向神经网络处理器的近似浮点乘法器及浮点数乘法
CN110221808A (zh) * 2019-06-03 2019-09-10 深圳芯英科技有限公司 向量乘加运算的预处理方法、乘加器及计算机可读介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116257207A (zh) * 2022-09-08 2023-06-13 重庆位图信息技术有限公司 一种数据截位方法、模块、计算机设备及存储介质
CN116257207B (zh) * 2022-09-08 2023-10-03 重庆位图信息技术有限公司 一种数据截位方法、模块、计算机设备及存储介质

Also Published As

Publication number Publication date
CN112163185B (zh) 2023-11-28

Similar Documents

Publication Publication Date Title
Zhang et al. Efficient multiple-precision floating-point fused multiply-add with mixed-precision support
US4941120A (en) Floating point normalization and rounding prediction circuit
TWI526928B (zh) 向量浮點引數之減少
WO2002023326A1 (en) Handler for floating-point denormalized numbers
KR20080055985A (ko) 선택가능 준정밀도를 가진 부동―소수점 프로세서
US3517173A (en) Digital processor for performing fast fourier transforms
US5341320A (en) Method for rapidly processing floating-point operations which involve exceptions
EP2208132A1 (en) Apparatus and method for performing magnitude detection for arithmetic operations
WO2023206832A1 (zh) 函数实现方法、逼近区间分段方法、芯片、设备及介质
CN112163185B (zh) Fft/ifft运算装置及基于该装置的fft/ifft运算方法
JPH05241787A (ja) 算術演算におけるスティッキイ・ビット値の判別装置
Pineiro et al. High-radix logarithm with selection by rounding
TW202333041A (zh) 執行浮點運算的系統及方法
CA2738544C (en) Method and system for bit stacked fast fourier transform
CN113591031A (zh) 低功耗矩阵运算方法及装置
GB2606040A (en) Implementation of discrete Fourier-related transforms in hardware
KR101922462B1 (ko) 데이터 처리장치 및 이진수에 대해 시프트 기능을 수행하는 방법
Cohen et al. Complex floating point—a novel data word representation for DSP processors
Hsiao et al. Design of a low-cost floating-point programmable vertex processor for mobile graphics applications based on hybrid number system
Sun et al. An approximating twiddle factor coefficient based multiplier for fixed-point FFT
WO2024082674A1 (zh) 浮点数据精度转换方法和装置
He et al. Word-length optimization of a pipelined FFT processor
US20230098421A1 (en) Method and apparatus of dynamically controlling approximation of floating-point arithmetic operations
Chen et al. High Speed Winograd Convolutional Circuit for Convolutional Neural Networks
He et al. A High Throughput Fully Parallel FFT with CSD Constant Multiplier

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant