CN111580867A - 一种用于fft运算的块浮点处理方法及装置 - Google Patents
一种用于fft运算的块浮点处理方法及装置 Download PDFInfo
- Publication number
- CN111580867A CN111580867A CN202010364700.4A CN202010364700A CN111580867A CN 111580867 A CN111580867 A CN 111580867A CN 202010364700 A CN202010364700 A CN 202010364700A CN 111580867 A CN111580867 A CN 111580867A
- Authority
- CN
- China
- Prior art keywords
- butterfly operation
- level
- bit width
- shift value
- nth
- 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
Links
- 238000007667 floating Methods 0.000 title claims abstract description 53
- 238000003672 processing method Methods 0.000 title claims abstract description 17
- 101100134058 Caenorhabditis elegans nth-1 gene Proteins 0.000 claims abstract description 13
- 238000000034 method Methods 0.000 claims description 21
- 238000004364 calculation method Methods 0.000 claims description 14
- 230000000295 complement effect Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 125000004122 cyclic group Chemical group 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 108010028778 Complement C4 Proteins 0.000 description 1
- 241000255777 Lepidoptera Species 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明涉及一种用于FFT运算的块浮点处理方法及装置,属于集成电路技术领域,解决了现有技术对FFT数据的吞吐率较差造成的FFT数据运算效率较低的问题。该处理方法包括如下步骤:对采集的多个FFT数据分别进行第1级蝶形运算,得到第1级蝶形运算结果;基于第n‑1级蝶形运算结果,计算多个第n‑1级蝶形运算的移位值;基于所述第n‑1级蝶形运算的移位值分别对相应的第n‑1级蝶形运算结果进行移位;对移位后的第n‑1级蝶形运算结果分别进行第n级蝶形运算;直至得到第N级蝶形运算结果;其中,2≤n≤N;N表示蝶形运算的级数,为大于等于2的自然数。实现了多个FFT数据交叉进行的蝶形运算,提高了FFT数据的运算效率。
Description
技术领域
本发明涉及集成电路技术领域,尤其涉及一种用于FFT运算的块浮点处理方法及装置。
背景技术
快速傅里叶变换(Fast Fourier Transform,FFT)是一种将数据从时域转换到变换域进行处理的快速实现算法。现代的无线通信系统对FFT处理提出了较高的运算速率要求和运算精度要求。
当前主流的FFT处理器采用基于存储的运算架构,通过多级蝶形运算完成各种点数的FFT运算。由于蝶形运算主要通过多级的加法和乘法来实现,运算过程中需要进行位宽扩展,而存储器的位宽是固定的,中间需要进行数据舍位处理。当输入数据的范围较大时,传统的蝶形运算往往无法满足系统的精度要求,而浮点运算又占用过多的硬件资源。
另一方面,多级加法和乘法级联也导致运算延时较大,为了提高电路的运行速度,往往需要采用级数较多的流水线设计来进行实现。但是流水线深度的加深,容易导致蝶形运算占用较多的周期,特别是当FFT运算的点数较少时,常常会由于流水线的利用率较低而导致很低的吞吐率,造成FFT运算效率较低。
发明内容
鉴于上述的分析,本发明实施例旨在提供一种用于FFT运算的块浮点处理方法及装置,用以解决现有技术对FFT数据的吞吐率差造成的FFT运算效率较低的问题。
一方面,本发明实施例提供了一种用于FFT运算的块浮点处理方法,包括如下步骤:
对采集的多个FFT数据分别进行第1级蝶形运算,得到第1级蝶形运算结果;以及,
基于第n-1级蝶形运算结果,计算多个第n-1级蝶形运算的移位值;
基于所述第n-1级蝶形运算的移位值分别对相应的第n-1级蝶形运算结果进行移位;
对移位后的第n-1级蝶形运算结果分别进行第n级蝶形运算;
直至得到第N级蝶形运算结果;
其中,2≤n≤N;N表示蝶形运算的级数,为大于等于2的自然数。
进一步,所述移位值由最小冗余位宽减去扩展位宽得到,其中,所述最小冗余位宽为蝶形运算结果的最小符号位减1,所述扩展位宽为蝶形运算结果为了防止运算溢出所需扩展的位宽。
进一步,得到第1级蝶形运算结果的同时,还包括:基于初始指数值减去所述第1级蝶形运算的移位值,得到第1级指数值,其中,所述初始指数值基于外部输入获得;
得到第n级蝶形运算结果的同时,还包括:由第n-1级指数值减去第n级蝶形运算的移位值,得到第n级指数值。
另一方面,本发明实施例提供了一种用于FFT运算的块浮点处理方法,包括:
存储模块,用于采集多个FFT数据并存储;以及用于缓存第n-1级蝶形运算结果;
输入缓存处理模块,用于对缓存的所述第n-1级蝶形运算结果基于移位值进行移位;
蝶形运算模块,用于分别对多个所述FFT数据进行第1级蝶形运算,得到第1级蝶形运算结果,再对移位后的第n-1级蝶形运算结果分别进行第n级蝶形运算,以得到第N级蝶形运算结果;其中,2≤n≤N,N为大于等于2的自然数;
块浮点处理模块,用于基于第n-1级蝶形运算结果得到移位值。
进一步,所述块浮点处理模块包括冗余计数单元、比较器、最小冗余寄存器和移位值计算单元;
所述冗余计数单元,用于获得冗余位宽;
所述比较器,用于比较冗余计数单元获得的所述冗余位宽与最小冗余寄存器中的当前冗余位宽,得到最小冗余位宽;
所述最小冗余寄存器,用于存储所述最小冗余位宽,所述最小冗余位宽为下一周期中的当前冗余位宽;
所述移位值计算单元,用于根据所述最小冗余位宽得到移位值。
进一步,所述移位值由最小冗余位宽减去扩展位宽得到,其中,所述扩展位宽为蝶形运算结果被扩展的符号位数。
进一步,所述块浮点处理模块还包括移位值更新单元,用于接收所述移位值计算单元输出的移位值并存储。
进一步,所述移位值更新单元包括读写控制电路和移位值寄存器堆;
所述读写控制电路,用于根据当前输入的移位值选通移位值寄存器堆中相应的移位寄存器;
所述移位值寄存器堆,用于存储移位值。
进一步,所述块浮点处理模块还包括轮转式指数值更新单元,用于更新多个所述FFT数据的指数值。
进一步,所述轮转式指数值更新单元执行下述流程更新多个所述FFT数据的指数值:
基于初始指数值减去第1级蝶形运算的移位值,得到第1级指数值,其中,所述初始指数值基于外部输入获得;以及,
基于第n-1级指数值减去第n级蝶形运算的移位值得到第n级指数值。
与现有技术相比,本发明至少可实现如下有益效果之一:
1、一种用于FFT运算的块浮点处理方法,以解决现有技术存在的FFT数据的吞吐率较差造成的块浮点处理效率低的问题,实现了多个FFT数据交叉进行的蝶形运算,在保证计算精度的同时,提高了运算效率。
2、输出结果采用指数和尾数相结合的方法,相比定点数增加了一个指数位,使得可表示的数据范围大大增加,同时通过多个数据共享一个指数位的方式减少了存储器件并节省了运算资源,提高了硬件资源的利用率,节省了运算成本,具有较高的实用价值。
3、一种用于FFT运算的块浮点处理装置,解决了现有技术存在的FFT数据的吞吐率较差造成的块浮点处理效率低的问题,实现了多个FFT数据交叉进行的蝶形运算,在保证计算精度的同时,提高了多级蝶形运算的效率。
4、存储模块通过采集并存储FFT数据为后期进行蝶形运算提供了支撑和依据,对实现块浮点处理具有重要的意义。同时,蝶形运算模块实现了多个FFT数据交叉进行蝶形运算,对FFT数据有较大的吞吐率,在保证计算精度的同时,提高了运算速率。
5、通过块浮点处理模块,获得了FFT数据的移位值,继而实现对蝶形运算结果的移位,使得存储蝶形运算结果的存储器得到了重复利用,节省了硬件资源,提高了存储器的复用率。
本发明中,上述各技术方案之间还可以相互组合,以实现更多的优选组合方案。本发明的其他特征和优点将在随后的说明书中阐述,并且,部分优点可从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过说明书以及附图中所特别指出的内容中来实现和获得。
附图说明
附图仅用于示出具体实施例的目的,而并不认为是对本发明的限制,在整个附图中,相同的参考符号表示相同的部件。
图1为一个实施例中用于FFT运算的块浮点处理方法流程图;
图2为另一个实施例中用于FFT运算的块浮点处理装置结构图;
图3为另一个实施例中块浮点处理模块内部结构示意图;
图4为另一个实施例中移位值更新单元内部结构示意图;
图5为另一个实施例中轮转式指数值更新单元内部结构示意图;
附图标记:
100-输入缓存处理模块;200-蝶形运算模块;300-块浮点处理模块;400-存储模块;500-输出缓存处理模块;600-控制模块。
具体实施方式
下面结合附图来具体描述本发明的优选实施例,其中,附图构成本申请一部分,并与本发明的实施例一起用于阐释本发明的原理,并非用于限定本发明的范围。
现有技术对块浮点的处理方法,主要基于采集的多个FFT数据,首先实现第一个FFT数据的多级蝶形运算,接着再完成第二个FFT数据的多级蝶形运算,最终实现所有FFT数据的多级蝶形运算,这种方法在计算某一个FFT数据的多级蝶形运算过程中,其他未被处理的FFT数据被闲置,必须等待当前计算的FFT数据完成多级蝶形运算才能继续下一级FFT数据的蝶形运算,这种块浮点的处理方法对FFT数据的吞吐率较差,造成了FFT运算效率较低的问题。为此,本申请提出了一种用于FFT运算的块浮点处理方法及装置,以解决现有技术存在的FFT数据的吞吐率较低造成的块浮点处理效率低的问题,实现了多个FFT数据交叉进行的蝶形运算,在保证计算精度的同时,提高了运算速率。
本发明的一个具体实施例,公开了一种用于FFT运算的块浮点处理方法,如图1所示。包括如下步骤:
步骤S1、对采集的多个FFT数据分别进行第1级蝶形运算,得到第1级蝶形运算结果。多个FFT数据指需要进行块浮点处理的FFT数据。具体来说,多个FFT数据可以预先被存储至相应的位置,通过相应位置处的多个FFT数据实现多级蝶形运算。具体来说,每一个FFT数据可能包括多个点,可分别对FFT数据中每个点进行第1级蝶形运算,基于蝶形运算支持的并行度,依次循环,直至完成每一个FFT数据中多个点的第一级蝶形运算。示例性的,4096点的一个FFT数据,若蝶形运算第一级计算的并行度为16,则该FFT数据的第一级蝶形运算需要256次循环才能完成。
步骤S2、基于第n-1级蝶形运算结果,计算多个第n-1级蝶形运算的移位值。其中,n由2依次递增选取。示例性的,n取2时,基于步骤S1得到的第1级蝶形运算结果,可计算多个第1级蝶形运算的移位值。优选的,所述移位值基于最小冗余位宽减去扩展位宽得到,其中,所述最小冗余位宽为蝶形运算结果的最小符号位数减1,所述扩展位宽为蝶形运算结果为了防止运算溢出所需扩展的位宽。示例性的,扩展位宽是用二进制补码表示的、为了匹配固定的位宽需要被扩展的符号位数。比如用8位二进制补码表示+5,为8'b00000101,冗余位宽即为4;实际只需要4位二进制就可以表示4'b0101。反过来说,对于原来一个4位补码表示的符号数+5,也即4'b0101,当需要扩展为8位补码表示时,也即8'b00000101,则需要扩展4位的符号位,即扩展位宽为4。通过计算下一级FFT数据对应的移位值,最终实现FFT数据的移位,提高了存储器件的利用率。
步骤S3、基于所述第n-1级蝶形运算的移位值分别对相应的第n-1级蝶形运算结果进行移位。由于蝶形运算主要通过多级的加法和乘法来实现,运算过程中需要进行位宽扩展,而存储器的位宽是固定的,中间需要进行数据舍位处理。当输入数据的范围较大时,传统的定点运算往往无法满足系统的精度要求,而浮点运算又占用过多的硬件资源。本实施例中通过移位方法可解决这种问题。具体来说,根据得到的第n-1级蝶形运算的移位值对相应的第n-1级蝶形运算结果进行移位,若移位值为正,则左移,若移位值为负,则右移。移位后的第n-1级蝶形运算结果继续进行下一级蝶形运算,直至完成多个FFT数据的各级蝶形运算。
步骤S4、对移位后的第n-1级蝶形运算结果分别进行第n级蝶形运算。具体的,在进行每级蝶形运算的同时,还可以基于每级获得的蝶形运算结果得到每级的移位值和指数值,其中,得到第1级蝶形运算结果的同时,还包括:基于初始指数值减去所述第1级蝶形运算的移位值,得到第1级指数值,其中,该初始指数值为多个FFT数据分别对应的指数值,基于外部输入获得;得到第n级蝶形运算结果的同时,还包括:由第n-1级指数值减去第n级蝶形运算的移位值,得到第n级指数值。
n由2依次取至N,重复进行上述步骤S2-S4;以得到第N级蝶形运算结果。其中,2≤n≤N;N表示蝶形运算的级数,为大于等于2的自然数。在得到第N级蝶形运算结果的同时,还基于第N-1级指数值减去第N级蝶形运算的移位值得到第N级指数值。也即块浮点处理的最终结果,不仅包含了第N级蝶形运算结果,还包括了第N级指数值。最终输出的结果以尾数(蝶形运算结果)和指数两种形式存在,是一种介于定点数与浮点数之间的表达形式。输出结果使用指数和尾数相结合的方法,相比于定点数增加了一个指数位,使得可表示的数据范围大大增加,同时通过多个数据共享一个指数位的方式减少存储器件并节省运算资源,提高了硬件资源的利用率,节省了运算成本,具有较高的实用价值。输出并保存多个FFT数据的第N级蝶形运算结果及第N级指数值,可用于后期蝶形运算结果的存档与分析。
与现有技术相比,本实施例提供的一种用于FFT运算的块浮点处理方法,以解决现有技术存在的FFT数据的吞吐率较差造成的FFT运算效率低的问题,实现了多个FFT数据交叉进行的蝶形运算,在保证计算精度的同时,提高了多级蝶形运算的效率。
本发明的另一个具体实施例,公开了一种用于FFT运算的块浮点处理装置,如图2所示。包括存储模块400用于采集多个FFT数据并存储,以及用于缓存第n-1级蝶形运算结果;输入缓存处理模块100,用于对缓存的所述第n-1级蝶形运算结果基于移位值进行移位;蝶形运算模块200,用于分别对多个所述FFT数据进行第1级蝶形运算,得到第1级蝶形运算结果,再对移位后的第n-1级蝶形运算结果分别进行第n级蝶形运算,直至得到第N级蝶形运算结果;其中,2≤n≤N,N为大于等于2的自然数;块浮点处理模块300,用于基于第n-1级蝶形运算结果得到所述移位值。
具体的,该块浮点处理装置还包括输出缓存处理模块500和控制模块600。控制模块用于控制存储模块、蝶形运算模块和块浮点处理模块的工作状态。输出缓存处理模块用于将蝶形运算结果输出至块浮点处理模块计算移位值,同时将蝶形运算结果输出至存储模块进行存储。输入缓存处理模块除了具备接收存储模块存储的多个FFT数据的功能外,蝶形运算结果的移位功能也在该模块实现。对于FFT数据的输入,开始时存入到存储模块,然后从存储模块通过输入缓存处理模块进入蝶形运算模块进行蝶形运算,输出缓存处理模块将蝶形运算结果返回给存储模块,该蝶形运算结果是中间结果,存储模块将该中间结果缓存,然后下一级蝶形运算从存储模块中取出这些中间结果继续计算。其中,多个FFT数据指需要进行块浮点处理的FFT数据,由于本实施例中设置的移位值寄存器和指数值寄存器的个数均为64,故最多支持64个FFT数据同时进行FFT运算,但本申请中可处理的FFT数据的个数不仅仅只局限于64,只要移位值寄存器堆和指数值寄存器堆能够设置更多的寄存器,就可以支持更多的FFT数据运算。
本实施例提供的一种用于FFT运算的块浮点处理装置,解决了现有技术存在的FFT数据的吞吐率较差造成的块浮点处理效率低的问题,实现了多个FFT数据交叉进行的蝶形运算,在保证计算精度的同时,提高了多级蝶形运算的效率。同时,输入缓存处理模块采集的FFT数据为后期进行蝶形运算提供了支撑和依据,对实现块浮点处理具有重要的意义,蝶形运算模块实现了多个FFT数据交叉进行蝶形运算,在保证计算精度的同时,提高了运算速率。
优选地,如图3所示,所述块浮点处理模块300包括冗余计数单元、比较器、最小冗余寄存器和移位值计算单元;所述冗余计数单元,用于获得冗余位宽,其中,冗余计数单元接收并读取蝶形运算结果多余的符号位数,得到冗余位宽,示例性的,以4位补码4’b0010表示的蝶形运算结果+2,数字占两位,符号占一位,高一位是多余的符号位,即冗余位宽为1。所述比较器,用于比较冗余计数单元获得的所述冗余位宽与最小冗余寄存器中的当前冗余位宽,得到最小冗余位宽,其中,初始时最小冗余寄存器中的当前冗余位宽0,最小冗余寄存器直接将冗余计数单元获得的所述冗余位宽作为最小冗余位宽存储,该最小冗余位宽作为某FFT数据下一周期中的当前冗余位宽,最终当蝶形运算单元完成FFT某级所有点数据的蝶形运算后,块浮点模块中的最小冗余寄存器存储的数据即为该级FFT数据对应的最小冗余位宽。所述最小冗余寄存器,用于存储所述最小冗余位宽;所述移位值计算单元,用于根据所述最小冗余位宽得到移位值。
具体的,根据蝶形运算模块的并行度,冗余计数单元并行地侦测并读取输出缓存处理模块输出的蝶形运算结果,得到该蝶形运算结果对应的冗余位宽,再通过一个比较器与之前缓存的最小冗余位宽寄存器中的数据进行比较求得最新的最小冗余位宽,存入最小冗余寄存器中。根据以上流程,当蝶形运算单元完成FFT某级所有点数数据的蝶形运算后,块浮点模块中的最小冗余位宽寄存器存储的数据即为该级FFT数据对应的最小冗余位宽。
优选地,所述移位值由最小冗余位宽减去扩展位宽得到,其中,所述扩展位宽为蝶形运算结果为了防止运算溢出所需扩展的位宽。具体的,移位值可正可负,若移位值为正数,则对相应的蝶形运算结果进行左移,若移位值为负,对相应的蝶形运算结果进行右移,继而进行下一级蝶形运算。
通过块浮点处理模块,获得了FFT数据的移位值,继而实现对蝶形运算结果的移位,使得存储蝶形运算结果的存储器得到了重复利用,节省了硬件资源,提高了存储器的复用率。
优选地,所述块浮点处理模块还包括移位值更新单元,用于接收所述移位值计算单元输出的移位值并存储。优选地,如图4所示,所述移位值更新单元包括读写控制电路和移位值寄存器堆;所述读写控制电路,用于根据当前输入的移位值选通移位值寄存器堆中相应的移位寄存器;所述移位值寄存器堆,用于存储所述当前输入的移位值。
具体的,移位值寄存器堆由多个移位值寄存器串行组成,移位值寄存器堆中的寄存器数量与FFT处理器所能同时支持的FFT数据个数相同,用来存储每个FFT数据对应的蝶形运算级间的移位值。移位值经由移位值计算单元获得后输出至移位值更新单元。其中,读写控制电路对当前所处理的是第几个FFT的数据进行计数并选通相应的移位值寄存器进行存储。蝶形输入指针由时序控制单元生成,表示当前的输入缓存处理模块处理的是第几个FFT数据,并以此为地址控制移位值寄存器堆中的选择器选通相应的移位值寄存器,并读取相应的移位值供输入缓存处理模块进行移位。
通过移位值更新单元,实现了当前移位值的不断更新和存储,使得每一个输入的移位值都能够井然有序的被存储,减小了移位值存储过程中的误差,提高了块浮点处理模块的运行效率。
优选的,所述块浮点处理模块还包括轮转式指数值更新单元,用于更新多个所述FFT数据的指数值。优选地,所述轮转式指数值更新单元执行下述流程更新多个所述FFT数据的指数值:基于初始指数值减去第1级蝶形运算的移位值,得到第1级指数值,其中,所述初始指数值基于外部输入获得;以及,基于第n-1级指数值减去第n级蝶形运算的移位值得到第n级指数值。
具体来说,如图5所示,轮转式指数值更新单元包括由多个指数值寄存器串联组成的指数值寄存器堆,其中,各指数值寄存器分别用于存储多个FFT数据的各级指数值。初始时,首先经由选择器1输入对应FFT数据个数的初始指数值,依次存入对应个数的指数值寄存器中。示例性地,若FFT数据个数为3个,指数值寄存器堆中将由选择器1输入三个FFT数据的初始指数值,即第一个初始指数值存至寄存器2,第二个初始指数值存至寄存器1,第三个初始指数值存至寄存器0。在对某一FFT数据进行第1级蝶形运算的同时,选择器2选通存储有对应FFT数据的指数值寄存器,并基于存储的初始指数值,利用减法单元1输入的对应移位值进行移位,再经选择器1输入指数值寄存器0,其余已存储的指数值依次后移。示例性的,第1个FFT数据对应的第1级指数值存至指数值寄存器0,第三个初始指数值后移存至寄存器1,第二个初始指数值存至寄存器2,直至得到第三级蝶形运算结果的同时,第一个FFT数据对应的第一级指数值存至指数值寄存器2,第二个FFT数据对应的第二级指数值存至指数值寄存器1,第三个FFT数据对应的第三级指数值存至指数值寄存器0。在得到第n级蝶形运算结果的同时,选择器2选通指数值寄存器堆中存储第n-1级指数值的相应指数值寄存器,并将该指数值寄存器中存储的指数值输出至减法1单元,在减法1单元中由第n-1级指数值减去第n级蝶形运算的移位值得到第n级指数值。选择器1将减法1单元得到的第n级指数值存储在指数值寄存器0中。当前级指数计算值处在指数值寄存器0这个位置,初始指数值与当前的移位值在减法1单元进行减法运算后,写回到指数值寄存器0中;每获得一个FFT数据对应的当前级指数值运算后,指数值寄存器进行一次循环移位,参与循环移位的指数值寄存器个数由当前蝶形运算模块同时处理的FFT数据个数决定。在完成所有FFT数据的蝶形运算后,各套FFT数据对应的第N指数值以倒序的方式存储在各组指数值寄存器中,因此指数值的读取指针需要在减法2单元中做一个求补变换,再通过选择器3控制相应的指数值寄存器,读取相应指数值寄存器的当前指数值并输出。
通过轮转式指数值更新单元,使得输出结果在尾数(蝶形运算结果)的基础上增加了指数,相比于定点数增加了一个指数位,使得可表示的数据范围大大增加,同时通过多个数据共享一个指数位的方式减少存储器件并节省运算资源,提高了硬件资源的利用率,节省了运算成本,具有较高的实用价值。
本领域技术人员可以理解,实现上述实施例方法的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读存储介质中。其中,所述计算机可读存储介质为磁盘、光盘、只读存储记忆体或随机存储记忆体等。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
Claims (10)
1.一种用于FFT运算的块浮点处理方法,其特征在于,包括如下步骤:
对采集的多个FFT数据分别进行第1级蝶形运算,得到第1级蝶形运算结果;以及,
基于第n-1级蝶形运算结果,计算多个第n-1级蝶形运算的移位值;
基于所述第n-1级蝶形运算的移位值分别对相应的第n-1级蝶形运算结果进行移位;
对移位后的第n-1级蝶形运算结果分别进行第n级蝶形运算;直至得到第N级蝶形运算结果;
其中,2≤n≤N;N表示蝶形运算的级数,为大于等于2的自然数。
2.根据权利要求1所述的块浮点处理方法,其特征在于,所述移位值基于最小冗余位宽减去扩展位宽得到,其中,所述最小冗余位宽为蝶形运算结果的最小符号位数减1,所述扩展位宽为蝶形运算结果为了防止运算溢出而所需扩展位宽。
3.根据权利要求2所述的块浮点处理方法,其特征在于,得到第1级蝶形运算结果的同时,还包括:基于初始指数值减去所述第1级蝶形运算的移位值,得到第1级指数值,其中,所述初始指数值基于外部输入获得;
得到第n级蝶形运算结果的同时,还包括:由第n-1级指数值减去第n级蝶形运算的移位值,得到第n级指数值。
4.一种用于FFT运算的块浮点处理装置,其特征在于,包括:
存储模块,用于采集多个FFT数据并存储,以及用于缓存第n-1级蝶形运算结果;
输入缓存处理模块,用于对缓存的所述第n-1级蝶形运算结果基于移位值进行移位;
蝶形运算模块,用于分别对多个所述FFT数据进行第1级蝶形运算,得到第1级蝶形运算结果;并用于对移位后的所述第n-1级蝶形运算结果分别进行第n级蝶形运算,直至得到第N级蝶形运算结果;其中,2≤n≤N,N为大于等于2的自然数;
块浮点处理模块,用于基于第n-1级蝶形运算结果得到所述移位值。
5.根据权利要求4所述的装置,其特征在于,所述块浮点处理模块包括冗余计数单元、比较器、最小冗余寄存器和移位值计算单元;
所述冗余计数单元,用于获得冗余位宽;
所述比较器,用于比较冗余计数单元获得的所述冗余位宽与最小冗余寄存器中的当前冗余位宽,得到最小冗余位宽;
所述最小冗余寄存器,用于存储所述最小冗余位宽,所述最小冗余位宽为下一周期中的当前冗余位宽;
所述移位值计算单元,用于根据所述最小冗余位宽得到移位值。
6.根据权利要求5所述的装置,其特征在于,所述移位值基于最小冗余位宽减去扩展位宽得到,其中,所述扩展位宽为蝶形运算结果为了防止运算溢出而所需扩展位宽。
7.根据权利要求5所述的装置,其特征在于,所述块浮点处理模块还包括移位值更新单元,用于接收所述移位值计算单元输出的移位值并存储。
8.根据权利要求7所述的装置,其特征在于,所述移位值更新单元包括读写控制电路和移位值寄存器堆;
所述读写控制电路,用于根据当前输入的移位值选通移位值寄存器堆中相应的移位值寄存器;
所述移位值寄存器堆,用于存储移位值。
9.根据权利要求5所述的装置,其特征在于,所述块浮点处理模块还包括轮转式指数值更新单元,用于更新多个所述FFT数据的指数值。
10.根据权利要求9所述的装置,其特征在于,所述轮转式指数值更新单元执行下述流程更新多个所述FFT数据的指数值:
基于初始指数值减去第1级蝶形运算的移位值,得到第1级指数值,其中,所述初始指数值基于外部输入获得;以及,
基于第n-1级指数值减去第n级蝶形运算的移位值得到第n级指数值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010364700.4A CN111580867B (zh) | 2020-04-30 | 2020-04-30 | 一种用于fft运算的块浮点处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010364700.4A CN111580867B (zh) | 2020-04-30 | 2020-04-30 | 一种用于fft运算的块浮点处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111580867A true CN111580867A (zh) | 2020-08-25 |
CN111580867B CN111580867B (zh) | 2023-07-18 |
Family
ID=72127583
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010364700.4A Active CN111580867B (zh) | 2020-04-30 | 2020-04-30 | 一种用于fft运算的块浮点处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111580867B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112347413A (zh) * | 2020-11-06 | 2021-02-09 | 哲库科技(北京)有限公司 | 信号处理方法、信号处理器、设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5481488A (en) * | 1994-10-21 | 1996-01-02 | United Microelectronics Corporation | Block floating point mechanism for fast Fourier transform processor |
JP2001043067A (ja) * | 1999-07-30 | 2001-02-16 | Hitachi Ltd | 演算装置 |
US6366936B1 (en) * | 1999-01-12 | 2002-04-02 | Hyundai Electronics Industries Co., Ltd. | Pipelined fast fourier transform (FFT) processor having convergent block floating point (CBFP) algorithm |
CN102063411A (zh) * | 2009-11-17 | 2011-05-18 | 中国科学院微电子研究所 | 一种基于802.11n的FFT/IFFT处理器 |
CN102298570A (zh) * | 2011-09-13 | 2011-12-28 | 浙江大学 | 一种点数可变的混合基 fft/ifft实现装置及其方法 |
CN102611667A (zh) * | 2011-01-25 | 2012-07-25 | 中兴通讯股份有限公司 | 随机接入检测fft/ifft处理方法及装置 |
CN104679721A (zh) * | 2015-03-17 | 2015-06-03 | 成都金本华科技股份有限公司 | 一种fft处理器的运算方法 |
-
2020
- 2020-04-30 CN CN202010364700.4A patent/CN111580867B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5481488A (en) * | 1994-10-21 | 1996-01-02 | United Microelectronics Corporation | Block floating point mechanism for fast Fourier transform processor |
US6366936B1 (en) * | 1999-01-12 | 2002-04-02 | Hyundai Electronics Industries Co., Ltd. | Pipelined fast fourier transform (FFT) processor having convergent block floating point (CBFP) algorithm |
JP2001043067A (ja) * | 1999-07-30 | 2001-02-16 | Hitachi Ltd | 演算装置 |
CN102063411A (zh) * | 2009-11-17 | 2011-05-18 | 中国科学院微电子研究所 | 一种基于802.11n的FFT/IFFT处理器 |
CN102611667A (zh) * | 2011-01-25 | 2012-07-25 | 中兴通讯股份有限公司 | 随机接入检测fft/ifft处理方法及装置 |
CN102298570A (zh) * | 2011-09-13 | 2011-12-28 | 浙江大学 | 一种点数可变的混合基 fft/ifft实现装置及其方法 |
CN104679721A (zh) * | 2015-03-17 | 2015-06-03 | 成都金本华科技股份有限公司 | 一种fft处理器的运算方法 |
Non-Patent Citations (1)
Title |
---|
段小东;顾立志;: "高性能基4快速傅里叶变换处理器的设计", 计算机工程 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112347413A (zh) * | 2020-11-06 | 2021-02-09 | 哲库科技(北京)有限公司 | 信号处理方法、信号处理器、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111580867B (zh) | 2023-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5946361A (en) | Viterbi decoding method and circuit with accelerated back-tracing and efficient path metric calculation | |
WO2018063777A1 (en) | Low energy consumption mantissa multiplication for floating point multiply-add operations | |
US20180321912A1 (en) | Data accumulation apparatus and method, and digital signal processing device | |
JPH10107651A (ja) | ビタビ復号装置 | |
US10534576B2 (en) | Optimization apparatus and control method thereof | |
US9317481B2 (en) | Data access method and device for parallel FFT computation | |
CN104657285B (zh) | 一种数据缓存系统和方法 | |
WO2018129930A1 (zh) | 快速傅里叶变换处理方法、装置和计算机存储介质 | |
CN112307421B (zh) | 一种基4频率抽取快速傅里叶变换处理器 | |
JPH06250823A (ja) | ポピュレーション・カウントの計算装置 | |
US10303735B2 (en) | Systems, apparatuses, and methods for K nearest neighbor search | |
CN110837584A (zh) | 一种分块并行构造后缀数组的方法及系统 | |
US20140330880A1 (en) | Methods and devices for multi-granularity parallel fft butterfly computation | |
CN111580867B (zh) | 一种用于fft运算的块浮点处理方法及装置 | |
CN108228136A (zh) | 基于优化查找表法的对数函数计算的方法及装置 | |
CN113377332B (zh) | 一种基于线性分段的softmax硬件实现方法 | |
US20050172210A1 (en) | Add-compare-select accelerator using pre-compare-select-add operation | |
CN103984525B (zh) | 指令处理系统及方法 | |
CN113111300B (zh) | 具有优化资源消耗的定点fft实现系统 | |
CN112540946A (zh) | 可重构处理器及其上多种神经网络激活函数计算方法 | |
US9268744B2 (en) | Parallel bit reversal devices and methods | |
CN111783984A (zh) | 一种神经网络运算方法、装置、设备及存储介质 | |
JP2513139B2 (ja) | 信号処理プロセッサ | |
CN114996638A (zh) | 一种顺序架构的可配置快速傅里叶变换电路 | |
CN111124358B (zh) | 一种序列累加器的运算方法和设备 |
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 |