CN102929582A - 一种面向通用处理器的fft计算地址产生方法 - Google Patents
一种面向通用处理器的fft计算地址产生方法 Download PDFInfo
- Publication number
- CN102929582A CN102929582A CN2012103639361A CN201210363936A CN102929582A CN 102929582 A CN102929582 A CN 102929582A CN 2012103639361 A CN2012103639361 A CN 2012103639361A CN 201210363936 A CN201210363936 A CN 201210363936A CN 102929582 A CN102929582 A CN 102929582A
- Authority
- CN
- China
- Prior art keywords
- address
- fft
- operand
- butterfly computation
- addressing mode
- 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
Images
Landscapes
- Executing Machine-Instructions (AREA)
Abstract
本发明提供了一种面向通用处理器的FFT计算地址产生方法,首先优化FFT计算中蝶形运算操作数的选取顺序,然后扩展通用处理器的循环寻址模式,最后通过扩展的循环寻址模式产生每一级FFT计算操作数的地址。本发明优化了FFT计算中蝶形运算操作数对的选取顺序,扩展了通用处理器的循环寻址模式,使通用处理器可以连续、快速的产生FFT计算的操作数地址,提高了通用处理器进行所述复杂运算的执行效率,可应用于通用处理器的地址产生模块。
Description
技术领域
本发明属于计算机技术领域,涉及数字信号处理领域的算法实现。
背景技术
通用处理器通常都具有专门的地址产生模块,用于处理器访存操作时产生操作数的地址,地址产生模块支持多种寻址模式,可根据处理器指令中指定的寻址方式快速产生操作数的地址。
为了便于对一块存储区间进行循环操作,大多数通用处理器都支持循环寻址模式,地址产生模块根据循环寻址的范围产生一定区间的操作数地址。循环寻址需要关注两个信息:基地址和偏移地址,基地址通常指向一块存储体或存储区间,偏移地址表示操作数在指定存储区间内的相对位置。进行循环寻址时,地址产生模块根据循环区间的大小对偏移地址进行取模操作,并产生最终的操作数地址。
常用的取模循环操作可以满足大多数计算的寻址需求,但是在进行一些复杂计算时则显得不够灵活,比如进行数字信号处理时常用的FFT(Fast Fourier Transform:快速傅里叶变换)计算。
FFT计算通常被分解为M级的基2蝶形运算,级数由FFT计算的点数N确定:M=log2N-1;每一级FFT计算都选取N/2组操作数对进行蝶形运算。常用的基于时域抽取的基2 FFT算法,其蝶形运算的公式如下:
式中p、q为选取的一组操作数对,对于N点FFT计算,每一级计算都要选取N/2组操作数对进行公式1的计算,其p、q满足公式:
q-p=2m 公式2
以8点FFT计算为例,其进行第一级蝶形运算的操作数对为:(0、2)、(1、3)、(4、6)、(5、7);进行第二级蝶形运算的操作数对为:(0、4)、(1、5)、(2、6)、(3、7),可见其操作数地址的排列顺序不具备递增性。
正是由于每次选取的操作数对p、q不具备递增性,因此通用处理器在进行每一级FFT计算时,无法通过常用的取模循环寻址方式连续产生操作数的地址,而需要频繁插入寄存器赋值指令更改操作数地址,这就增加了通用处理器进行FFT计算的复杂度,降低了FFT计算的效率。
针对FFT计算的地址产生方法已经有很多方面的研究,例如将蝶形运算的操作数地址分为高位地址和低位地址,通过引入隐含位并增加移位计数器实现操作数地址的快速产生。这一类地址产生方法可应用于专用的FFT计算模块,但由于不能有效利用通用处理器地址产生模块已有的资源,在通用处理器中实现的代价比较大,因此有必要设计一种通用处理器进行FFT计算时的地址产生方法,使得通用处理器能够连续快速地产生FFT计算时的操作数地址。
发明内容
为了克服现有技术操作数地址产生比较复杂的不足,本发明提供一种面向通用处理器的FFT计算地址产生方法,能优化FFT计算时操作数的排列顺序,扩展通用处理器中常用的循环寻址模式,使得通用处理器可以连续产生FFT计算的操作数地址。
本发明解决其技术问题所采用的技术方案包括以下步骤:
1.优化FFT计算中蝶形运算操作数的选取顺序:
每一级FFT计算都要选取N/2组操作数对进行蝶形运算,每次选取的操作数对表示为(pt,qt),0≤t≤N/2-1;
第M级FFT计算的操作数对从地址0开始选取,即p0=0;
pt、qt满足qt-pt=2m;
操作数的选取满足公式:
2.扩展通用处理器的循环寻址模式:
增加循环超界地址加一、循环超界地址加二和循环超界地址加四;
3.通用处理器通过扩展的循环寻址模式产生每一级FFT计算操作数的地址:通用处理器进行第M级的N点FFT计算时都从地址0开始选取操作数对进行蝶形运算,并按照偏移量为2m、循环界限为N-1的循环超界地址加一模式顺序产生操作数地址。
本发明的有益效果是:本发明优化了FFT计算中蝶形运算操作数对的选取顺序,扩展了通用处理器的循环寻址模式,使通用处理器可以连续、快速的产生FFT计算的操作数地址,提高了通用处理器进行所述复杂运算的执行效率,可应用于通用处理器的地址产生模块。
附图说明
图1是进行基于时域抽取的8点FFT计算的流程图。
具体实施方式
本发明采用如下的技术解决方案:
1.优化FFT计算中蝶形运算操作数的选取顺序:
每一级FFT计算都要选取N/2组操作数对进行蝶形运算,每次选取的操作数对表示为(pt,qt),其中0≤t≤N/2-1。
第M级FFT计算的操作数对从地址0开始选取,即p0=0;
pt、qt的选取依然满足公式2:qt-pt=2m;
操作数的选取满足公式:
公式3说明每次选取的一组操作数中的pt+1由上一次选取的一组操作数中的qt决定,两者相差2m,如果qt+2m超过了FFT计算的点数N-1,则按照取模mod(N-1)加一的方法产生pt+1。
优化后的操作数p的地址由上一组操作数q的地址偏移加2m决定,而操作数q的地址由本组操作数p的地址偏移加2m产生,这就使每一级FFT计算操作数的排列顺序具备了一定的递增性。
2.扩展通用处理器常用的循环寻址模式:
通用处理器常用的循环寻址方式为取模循环,为了实现上述优化后的蝶形运算操作数对的选取顺序,便于通用处理器连续产生FFT计算操作数的地址,需要扩展通用处理器已有的循环寻址模式,增加循环超界地址加一、循环超界地址加二和循环超界地址加四这三种模式,其中后两种模式是为了实现基于频域抽取的FFT计算的地址产生。扩展的循环寻址模式如表1所示。
3.通用处理器通过扩展的循环寻址模式产生每一级FFT计算操作数的地址:
通用处理器进行第M级的N点FFT计算时都从‘0’地址开始选取操作数对进行蝶形运算,并按照偏移量为2m、循环界限为N-1的循环超界地址加一模式顺序产生操作数地址。
下面结合附图和实施例对本发明进一步说明。
图1是进行基于时域抽取的8点FFT计算的流程图。8点FFT计算分为三级(第0级、第1级、第2级),每一级FFT计算中蝶形运算操作数对的地址按照优化后的顺序选取,其中第0级的选取顺序为:(0、1)、(2、3)、(4、5)、(6、7);第1级的选取顺序为(0、2)、(4、6)、(1、3)、(5、7);第2级的选取顺序为(0、4)、(1、5)、(2、6)、(3、7)。
通用处理器在进行所述8点FFT计算时,地址产生模块按照循环超界地址加一的模式顺序产生操作数地址。地址产生模块通常维护三种与寻址相关的寄存器:地址寄存器(AR)、偏移量寄存器(IR)、循环寻址寄存器(IRM)。所述寄存器均可由处理器通过指令写入数据,地址寄存器(AR)还可由地址产生模块更新写入数据。
进行第0级FFT计算时,处理器通过指令设定起始地址AR为0、偏移量IR为20=1、循环界限IRM为8-1=7,并通过连续8次普通循环寻址顺序产生4对操作数的地址(0、1)、(2、3)、(4、5)、(6、7)。
在进行第1级FFT计算时,如表2所示,处理器通过指令设定起始地址AR为0、偏移量IR为21=2、循环界限IRM为8-1=7,并通过连续8次循环超界地址加一的寻址模式顺序产生优化后的4对操作数地址(0、2)、(4、6)、(1、3)、(5、7)。
在进行第2级FFT计算时,如表3所示,处理器通过指令设定起始地址AR为0、偏移量IR为22=4、循环界限IRM为8-1=7,并通过连续8次循环超界地址加一的寻址模式顺序产生优化后的4对操作数地址(0、4)、(1、5)、(2、6)、(3、7)。
通用处理器采用本发明设计的循环寻址方式进行N点FFT计算时,只需在每一级FFT计算之前通过指令设定一次寻址寄存器组,地址产生模块便可根据扩展的循环寻址模式顺序产生蝶形运算操作数对的地址。若不采用本发明设计的寻址方式,除第0级以外的其他各级FFT计算,由于操作数地址不具备递增性,处理器均无法通过普通的循环寻址模式顺序产生操作数地址,因此需要通过指令设定N/2次寄存器组,当进行点数较多(例:1024点)的FFT计算时,处理器的控制将更加复杂,计算效率大大降低。
表1
表2
(*)循环超界地址+1
表3
(*)循环超界地址+1
Claims (1)
1.一种面向通用处理器的FFT计算地址产生方法,其特征在于包括下述步骤:
1)优化FFT计算中蝶形运算操作数的选取顺序:
每一级FFT计算都要选取N/2组操作数对进行蝶形运算,每次选取的操作数对表示为(pt,qt),0≤t≤N/2-1;
第M级FFT计算的操作数对从地址0开始选取,即p0=0;
pt、qt满足qt-pt=2m;
操作数的选取满足公式:
2)扩展通用处理器的循环寻址模式:
增加循环超界地址加一、循环超界地址加二和循环超界地址加四;
3)通用处理器通过扩展的循环寻址模式产生每一级FFT计算操作数的地址:
通用处理器进行第M级的N点FFT计算时都从地址0开始选取操作数对进行蝶形运算,并按照偏移量为2m、循环界限为N-1的循环超界地址加一模式顺序产生操作数地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210363936.1A CN102929582B (zh) | 2012-09-26 | 2012-09-26 | 一种面向通用处理器的fft计算地址产生方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210363936.1A CN102929582B (zh) | 2012-09-26 | 2012-09-26 | 一种面向通用处理器的fft计算地址产生方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102929582A true CN102929582A (zh) | 2013-02-13 |
CN102929582B CN102929582B (zh) | 2015-04-08 |
Family
ID=47644396
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210363936.1A Active CN102929582B (zh) | 2012-09-26 | 2012-09-26 | 一种面向通用处理器的fft计算地址产生方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102929582B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109657192A (zh) * | 2018-12-10 | 2019-04-19 | 西安微电子技术研究所 | 一种用于fft中旋转因子乘运算的操作数地址生成方法 |
CN112231626A (zh) * | 2020-10-19 | 2021-01-15 | 南京宁麒智能计算芯片研究院有限公司 | 一种fft处理器 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5091875A (en) * | 1990-03-23 | 1992-02-25 | Texas Instruments Incorporated | Fast fourier transform (FFT) addressing apparatus and method |
CN101221555A (zh) * | 2008-01-24 | 2008-07-16 | 复旦大学 | 用于基-2快速傅立叶变换同址运算的地址产生方法 |
-
2012
- 2012-09-26 CN CN201210363936.1A patent/CN102929582B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5091875A (en) * | 1990-03-23 | 1992-02-25 | Texas Instruments Incorporated | Fast fourier transform (FFT) addressing apparatus and method |
CN101221555A (zh) * | 2008-01-24 | 2008-07-16 | 复旦大学 | 用于基-2快速傅立叶变换同址运算的地址产生方法 |
Non-Patent Citations (2)
Title |
---|
杨靓等: "一种高效的FFT处理器地址快速生成方法", 《信号处理》 * |
段来仓等: "DSP处理器循环寻址和位翻转寻址的设计", 《微电子学与计算机》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109657192A (zh) * | 2018-12-10 | 2019-04-19 | 西安微电子技术研究所 | 一种用于fft中旋转因子乘运算的操作数地址生成方法 |
CN109657192B (zh) * | 2018-12-10 | 2022-10-11 | 西安微电子技术研究所 | 一种用于fft中旋转因子乘运算的操作数地址生成方法 |
CN112231626A (zh) * | 2020-10-19 | 2021-01-15 | 南京宁麒智能计算芯片研究院有限公司 | 一种fft处理器 |
Also Published As
Publication number | Publication date |
---|---|
CN102929582B (zh) | 2015-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103970718B (zh) | 一种快速傅里叶变换实现装置及方法 | |
CN103955447B (zh) | 基于dsp芯片的fft加速器 | |
CN105701068B (zh) | 基于分时复用技术的cholesky矩阵求逆系统 | |
CN109522674A (zh) | 基2-2算法的快速傅里叶变换硬件设计方法 | |
CN103488459B (zh) | 一种改进的高基cordic方法及基于其的复数乘法运算单元 | |
WO2013187862A1 (en) | A FAST MECHANISM FOR ACCESSING 2n±1 INTERLEAVED MEMORY SYSTEM | |
CN101354700B (zh) | 一种蝶形运算fft处理器 | |
CN102571342B (zh) | 一种rsa算法数字签名方法 | |
CN103631759B (zh) | 一种实现快速傅立叶变换/离散傅立叶变换的装置及方法 | |
CN102929582B (zh) | 一种面向通用处理器的fft计算地址产生方法 | |
CN103034621B (zh) | 基2×k并行fft架构的地址映射方法及系统 | |
CN102637124B (zh) | 一种基4fft算法的并行处理装置及方法 | |
CN103020015A (zh) | 点数为非2次幂的离散傅里叶变换快速计算的实现方法 | |
US7693926B2 (en) | Modular multiplication acceleration circuit and method for data encryption/decryption | |
CN104657334B (zh) | 一种快速傅里叶变化的基2-4-8混合基蝶算器及其应用 | |
CN103262067B (zh) | 一种数据处理方法、数据处理装置和通信系统 | |
CN102541813B (zh) | 一种多粒度并行fft蝶形计算的方法及相应的装置 | |
CN101938329A (zh) | 产生lte prach基带信号的方法及其系统 | |
CN103902506B (zh) | 一种基于龙芯3b的fftw3优化方法 | |
CN102023963B (zh) | 高速多模式时频域变换方法 | |
CN101354701B (zh) | 一种实现基4fft/ifft计算的fft处理器 | |
CN102880592A (zh) | 一种顺序输出的高精度3780点fft处理装置和方法 | |
CN101833540A (zh) | 信号处理方法和装置 | |
CN202281998U (zh) | 一种标量浮点运算加速器 | |
CN115982527B (zh) | 一种基于fpga的时频域变换算法实现方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |