CN101706770B - 包含四条指令的支持快速傅里叶变换运算的方法 - Google Patents

包含四条指令的支持快速傅里叶变换运算的方法 Download PDF

Info

Publication number
CN101706770B
CN101706770B CN2009102370572A CN200910237057A CN101706770B CN 101706770 B CN101706770 B CN 101706770B CN 2009102370572 A CN2009102370572 A CN 2009102370572A CN 200910237057 A CN200910237057 A CN 200910237057A CN 101706770 B CN101706770 B CN 101706770B
Authority
CN
China
Prior art keywords
register
instruction
combined command
result
fast fourier
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.)
Active
Application number
CN2009102370572A
Other languages
English (en)
Other versions
CN101706770A (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.)
BEIJING TIANTONG XINYUAN TECHNOLOGY Co Ltd
Original Assignee
BEIJING TIANTONG XINYUAN TECHNOLOGY Co Ltd
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 BEIJING TIANTONG XINYUAN TECHNOLOGY Co Ltd filed Critical BEIJING TIANTONG XINYUAN TECHNOLOGY Co Ltd
Priority to CN2009102370572A priority Critical patent/CN101706770B/zh
Publication of CN101706770A publication Critical patent/CN101706770A/zh
Application granted granted Critical
Publication of CN101706770B publication Critical patent/CN101706770B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Complex Calculations (AREA)

Abstract

包含四条指令的支持快速傅里叶变换运算的方法,第一组合指令步骤和第二组合指令步骤,其分别包括两条先后执行的指令步骤,每条所述指令步骤均包括有操作数定义、寄存器内数据的运算关系和存储顺序;每条组合指令步骤中的前一条指令步骤的操作结果为后一条指令步骤的源操作数,执行一次两条指令组合步骤完成快速傅里叶变换的一级蝶形运算,之后将一级碟形运算的输出寄存器折叠,使用同样的该两条组合指令步骤进行下一级的蝶形运算,直到FFT运算结束。通过组合使用上述同时具备了运算和移位的功能四条指令步骤,可以省去FFT中的移位指令,并且可以在不降低浮点运算部件效率的情况下,完成快速傅里叶变换运算,减少了数据相关。

Description

包含四条指令的支持快速傅里叶变换运算的方法
技术领域
本发明属于计算机处理器设计技术领域,特别涉及一种支持快速傅里叶变换运算的方法。
背景技术
按时间抽取(Decimation In Time,DIT)的基2FFT算法(Cooley-Tukey算法)推导过程如下:
快速傅里叶变换是离散傅里叶变换(DFT)的快速算法。变换的输入是一系列复数点,输出是相同数目的复数点。
对N点序列x(n),其DFT变换定义为:
X ( k ) = DFT [ x ( n ) ] = Σ n = 0 N - 1 x ( n ) W N nk k=0,1,...,N-1,
W N = e - j · 2 π N = cos ( 2 π N ) - sin ( 2 π N ) ,
x ( n ) = IDFT [ X ( k ) ] = 1 N Σ k = 0 N - 1 X ( k ) W N - nk n=0,1,...,N-1(公式1)
其中,WN nk为旋转因子。从公式1可知,直接计算N个样本点的DFT需要0(N2)次复数乘法和复数加法,运算量非常大,所以快速算法显得尤其重要。
对于公式1,若N=2M,M为正整数。可以将x(n)按奇、偶分成两组,对于偶数可表示为n=2r,奇数可以表示为n=2r+1,于是可以将DFT化为:
X ( k ) = Σ neven x [ n ] W N nk + Σ nodd x [ n ] W N nk
= Σ r = 0 N / 2 - 1 x ( 2 r ) W N 2 rk + Σ r = 0 N / 2 - 1 x ( 2 r + 1 ) W N ( 2 r + 1 ) k
= Σ r = 0 N / 2 - 1 x 1 ( r ) ( W N 2 ) rk + W N k Σ r = 0 N / 2 - 1 x 2 ( r ) ( W N 2 ) rk (公式2)
由于旋转因子WN nk具有公式3所显示的可约性,可以将公式2转换为公式4。
W N nk = W mN mnk , W N nk = W N / m nk / m (公式3)
X ( k ) = Σ r = 0 N / 2 - 1 x 1 ( r ) W N / 2 rk + W N k Σ r = 0 N / 2 - 1 x 2 ( r ) W N / 2 rk (公式4)
式中, W N / 2 = e - j · 2 π ( N / 2 ) = e - j · 4 π / N ,
A ( k ) = Σ r = 0 N / 2 - 1 x 1 ( r ) W N / 2 rk = Σ r = 0 N / 2 - 1 x ( 2 r ) W N 2 rk , k = 0,1 , . . . , N 2 - 1 (公式5)
B ( k ) = Σ r = 0 N / 2 - 1 x 2 ( r ) W N / 2 rk = Σ r = 0 N / 2 - 1 x ( 2 r + 1 ) W N 2 rk , k = 0,1 , . . . , N 2 - 1 (公式6)
那么
X ( k ) = A ( k ) + W N k B ( k ) , k = 0,1 , . . . , N 2 - 1 (公式7)
X ( k + N / 2 ) = A ( k ) - W N k B ( k ) , k = 0,1 , . . . , N 2 - 1 (公式8)
由此可以将一个N点DFT分成两个N/2点的DFT,按照上述方法继续给以分解,就可以大大减少计算量。这种方法的每一步分解都是按输入序列在时间上的次序是偶数还是奇数来分解为2个更短的子序列,所以称之为“按时间抽选”的FFT。按照上面的分析,可以推导出8点DFT,如图1所示的8点的基2DIT的FFT算法蝶形图。
FFT具有如下的一般性规律:
级的概念。上述过程,将N点DFT先分成两个N/2点DFT,再是四个N/4点DFT,进而八个N/8点DFT,直至N/2个两点DFT。每分一次,称为一级运算。可以简单计算出N点的FFT需要L=log2N级计算。比如,8点FFT共有3级运算。
蝶形计算单元如图1所示。j,k是参与本蝶形运算单元的上、下节点的序号。很明显,第m-1级序号为j,k的两点只参与这一个蝶形单元的运算,其输出在第m级。且这一蝶形单元也不再涉及别的点。由于这一特点,在计算机编程时,可以将蝶形单元的输出仍放在输入数组中,这一特点称为“原位运算”。
倒位序规律。由图1可以看出,变换后的输出序列X(K)依照顺序排列,但输入序列x(n)的次序不再是原来的自然顺序,虽然看起来好像杂乱无章,但实际上是有规律可循的。造成倒位序的原因是因为不断对输入序列x(n)做奇偶分组。通过如下表1可以清晰的看到倒位序实现过程。
自然顺序(n)   二进制数   倒位序二进制数   倒位序数
0   000   000   0
1   001   100   4
2   010   010   2
3   011   110   6
4   100   001   1
5   101   101   5
6   110   011   3
7   111   111   7
表1N=8的倒位序数
最后一列即为按奇、偶抽取所得到的顺序。
现有的支持快速傅里叶变换运算的方法,通常需要执行复杂的移位指令操作等,并且在使用相应软件算法进行编程时,需要进行大量的数据相关操作,计算复杂度高。
发明内容
本发明的目的在于,提供一种包含四条指令的支持快速傅里叶变换运算的方法,以省去进行快速傅里叶变换运算时额外的移位指令,减少数据相关。
为实现上述目的,本发明采用如下技术方案:
一种包含四条指令的支持快速傅里叶变换运算的方法,包括:
第一组合指令步骤和第二组合指令步骤,所述第一组合指令步骤和第二组合指令步骤分别包括两条先后执行的指令步骤,每条所述指令步骤均包括有操作数定义、寄存器内数据的运算关系和存储顺序;每条组合指令步骤中的前一条指令步骤的操作结果为后一条指令步骤的源操作数,执行一次两条指令组合步骤完成快速傅里叶变换的一级蝶形运算,之后将一级碟形运算的输出寄存器折叠,使用同样的该两条组合指令步骤进行下一级的蝶形运算,直到快速傅里叶变换运算结束。
所述第一组合指令步骤和第二组合指令步骤均采用第一寄存器、第二寄存器、第三寄存器和目的结果寄存器进行蝶形运算,使用中间结果操作数寄存器保存中间结果。
所述第一寄存器、第二寄存器、第三寄存器、中间结果操作数寄存器中间结果操作数寄存器和目的结果寄存器均为N位的寄存器。N的取值可以根据计算的工作量及处理器的硬件条件设置,例如可以是32位、128位、256位、512位、1024位等。并且寄存器中计算所使用相应位也可以根据实际需求灵活设定。
其中,所述第一组合指令步骤优选采用所述第一寄存器、第二寄存器、第三寄存器和目的结果寄存器的高N/2位或低N/2位进行蝶形运算;
相应地,所述第二组合指令步骤优选采用所述第一寄存器、第二寄存器、第三寄存器和目的结果寄存器的低N/2位或高N/2位进行蝶形运算。
进一步地,所述N的值优选为256,所述第一组合指令步骤和第一组合指令步骤分别得到4个复数点数据。
进一步地,所述第一组合指令步骤包括依次执行的以下两步骤:
第一指令步骤:使用中间结果操作数寄存器的0-255位来保存指令结果,使用第一寄存器、第二寄存器、第三寄存器的0-127位来参与运算;
第三指令步骤:使用目的结果寄存器的0-255位来保存指令结果,使用中间结果操作数寄存器的0-255位、第二寄存器和第三寄存器的0-127位来参与运算;
所述第二组合指令步骤包括依次执行的以下两步骤:
第二指令步骤:使用中间结果操作数寄存器的0-255位来保存指令结果,使用第一寄存器、第二寄存器、第三寄存器的128-255位来参与运算;
第四指令步骤:使用目的结果寄存器的0-255位来保存指令结果,使用中间结果操作数寄存器的0-255位、第二寄存器和第三寄存器的128-255位来参与运算。
进一步地,所述第一组合指令步骤和第二组合指令步骤之间的运行顺序可以为串行。串行执行这两个组合指令步骤可以节省运算空间,例如所述第一组合指令步骤和第二组合指令步骤可共用中间结果操作数寄存器。
进一步地,所述第一组合指令步骤和第二组合指令步骤之间的运行顺序可以为并行。并行执行这两个组合指令步骤可以节省计算时间,特别适合于针对多核处理器的快速傅里叶变换运算的程序设计。
本发明提供的进行快速傅里叶变换运算的组合的指令集合,其同时具备了运算和移位的功能,省去了额外的移位指令。并且可以在不降低浮点运算部件效率的情况下,完成快速傅里叶变换运算,并且在使用相应软件算法进行编程时可以减少数据相关。
附图说明
图1为蝶形计算单元;
图2为本发明包含四条指令的支持快速傅里叶变换运算的方法实施例的流程图;
图3为本发明实施例中第一指令步骤操作示意图;
图4为本发明实施例中第二指令步骤操作示意图;
图5为本发明实施例中第三指令步骤操作示意图;
图6为本发明实施例中第四指令步骤操作示意图;
图7为基2的8点FFT编程使用寄存器示意图。
具体实施方式
如图2所示,一种包含四条指令的支持快速傅里叶变换运算的方法,依次包括:
步骤1:准备快速傅里叶变换运算;
步骤2:蝶形运算步骤,包括第一组合指令步骤21和第二组合指令步骤22,所述第一组合指令步骤21)和第二组合指令步骤22分别包括两条先后执行的指令步骤,每条所述指令步骤均包括有操作数定义、寄存器内数据的运算关系和存储顺序;每条组合指令步骤中的前一条指令步骤的操作结果为后一条指令步骤的源操作数,执行一次两条指令组合步骤完成快速傅里叶变换的一级蝶形运算,之后将一级碟形运算的输出寄存器折叠;所述第一组合指令步骤和第二组合指令步骤之间的运行顺序为可以根据微处理器的性能设定为串行或并行;
步骤3:判断是否存在下一级的蝶形运算,如果存在,则转步骤2,即使用同样的该两条组合指令步骤进行下一级的蝶形运算;
步骤4:完成直到快速傅里叶变换运算。
其中,对输出寄存器进行折叠是一种现有的变换技术,该技术设计一种控制单元,在该控制单元的控制下可以分时复用电路结构中的功能单元,从而达到减少所使用的功能单元数目的目的。
本实施例以基2的8点FFT为例进行说明,在此需要说明的是,同样16点的基2算法,以及2的正整数次幂的点的FFT,都可以通过本发明这种指令组合和中间目标寄存器的折叠来完成,本实施例只是用于说明本发明,并非对本发明的保护范围进行限制。
如图1所示的蝶形运算是基2算法的基本单元。基2的基本运算为如下两个复数运算:
一、A+B*W:复数乘加运算:
A+B*W
=(ar+j*aj)+(br+j*bj)*(wr+j*wj)
=(ar+j*aj)+(br*wr+j*br*wj+j*bj*wr+j*j*bj*wj)
=(ar+br*wr-bj*wj)+j*(aj+br*wj+bj*wr)
=[(ar+br*wr)-bj*wj]+j*[(aj+br*wj)+bj*wr]
这个复数乘加运算分解成两次完成,前一次完成(ar+br*wr)和(aj+br*wj),后一次在前一次的基础上完成:[(ar+br*wr)-bj*wj]和[(aj+br*wj)+bj*wr]。
二、A-B*W:复数乘减运算:
A-B*W可以用同样的方法拆成两次操作完成。
A-B*W
=(ar+j*aj)-(br+j*bj)*(wr+j*wj)
=(ar+j*aj)-(br*wr+j*br*wj+j*bj*wr+j*j*bj*wj)
=(ar-br*wr+bj*wj)+j*(aj-br*wj-bj*wr)
=[(ar-br*wr)+bj*wj]+j*[(aj-br*wj)-bj*wr]
同样将这个复数乘减运算分解为两次基本操作完成,前一次操作完成(ar-br*wr)和(aj-br*wj)。后一次操作在前一次操作的基础上,完成[(ar-br*wr)+bj*wj]和[(aj-br*wj)-bj*wr]。
在具体实现基2的8点FFT时,同一复数点的格式是实部和虚部在一起,总共占64位,其中实部占据高32位,虚部占据低32位。各点顺序输入,依次放到向量寄存器中,每个向量寄存器可以容纳4个点。旋转因子也要占据部分的向量寄存器。然后使用相应指令组合,进行每一级的碟形运算。在完成一级蝶形运算后,将输出寄存器进行折叠,又可以使用同样的指令组合进行下一级的蝶形运算,直到计算结束。输出结果在寄存器中倒序存放。
本实施例中,所述第一组合指令步骤21和第二组合指令步骤22均采用256位的第一寄存器61、第二寄存器62、第三寄存器63、中间结果操作数寄存器64和目的结果寄存器65进行蝶形运算。
具体地,所述第一组合指令步骤21包括依次执行的以下两步骤:
第一指令步骤10:使用中间结果操作数寄存器64的0-255位来保存指令结果,使用第一寄存器61、第二寄存器62、第三寄存器63的0-127位来参与运算;
第三指令步骤30:使用目的结果寄存器的0-255位来保存指令结果,使用中间结果操作数寄存器64的0-255位、第二寄存器62和第三寄存器63的0-127位来参与运算;
通过第一指令步骤10和第三指令步骤30的组合,实现第一寄存器61和第二寄存器62中,低128位数据总共4个点的基2的蝶形运算,并将输出数据依次存放到一个目的寄存器F中,E中存放的是对应的旋转因子。
所述第二组合指令步骤22包括依次执行的以下两步骤:
第二指令步骤20:使用中间结果操作数寄存器64的0-255位来保存指令结果,使用第一寄存器61、第二寄存器62、第三寄存器63的128-255位来参与运算;
第四指令步骤40:使用目的结果寄存器的0-255位来保存指令结果,使用中间结果操作数寄存器64的0-255位、第二寄存器62和第三寄存器63的128-255位来参与运算。
而通过所述第二指令步骤20和第四指令步骤40的组合,可以实现第一寄存器61和第二寄存器62中,高128位数据总共4个点的基2的蝶形运算,并将输出数据依次存放到一个目的寄存器65中,第三寄存器63中存放的同样是对应的旋转因子。
图3至6分别为第一指令步骤10至第四指令步骤40操作示意图。每幅图中以八个格子组成的一排表示一个寄存器,每个格子代表32位数据,地址从左至右为从大到小排列,即从255至0。寄存器之间的连线与指令步骤描述的运算一一对应的。具体地:
所述第一指令步骤10如图3所示,图3中第一寄存器61和第二寄存器62中均为源操作数,第三寄存器63中为旋转因子,中间结果操作数寄存器64中为中间结果,具体依次包括如下步骤:
步骤11:M[0:31]<-C[0:31]+D[32:63]*E[0:31]
步骤12:M[32:63]<-C[32:63]+D[32:63]*E[32:63]
步骤13:M[64:95]<-C[0:31]-D[32:63]*E[0:31]
步骤14:M[96:127]<-C[32:63]-D[32:63]*E[32:63]
步骤15:M[128:159]<-C[64:95]+D[96:127]*E[64:95]
步骤16:M[160:191]<-C[96:127]+D[96:127]*E[96:127]
步骤17:M[192:223]<-C[64:95]-D[96:127]*E[64:95]
步骤18:M[224:255]<-C[96:127]-D[96:127]*E[96:127]
所述第二指令步骤20如图4所示,与第三指令步骤30类似地,第一寄存器61和第二寄存器62中均为源操作数,第三寄存器63中为旋转因子,中间结果操作数寄存器64中为中间结果,具体依次包括如下步骤:
步骤21:M[0:31]<-C[128:159]+D[160:191]*E[128:159]
步骤22:M[32:63]<-C[160:191]+D[160:191]*E[160:191]
步骤23:M[64:95]<-C[128:159]-D[160:191]*E[128:159]
步骤24:M[96:127]<-C[160:191]-D[160:191]*E[160:191]
步骤25:M[128:159]<-C[192:223]+D[224:255]*E[192:223]
步骤26:M[160:191]<-C[224:255]+D[224:255]*E[224:255]
步骤27:M[192:223]<-C[192:223]-D[224:255]*E[192:223]
步骤28:M[224:255]<-C[224:255]-D[224:255]*E[224:255]
所述第三指令步骤30如图5所示,图5中的中间结果操作数寄存器64中为第一指令步骤10的中间结果,第二寄存器62中为源操作数,第三寄存器63中为旋转因子,目的结果寄存器65中为一级碟形运算的最终结果,具体依次包括如下步骤:
步骤31:F[0:31]<-M[0:31]+D[0:31]*E[32:63]
步骤32:F[32:63]<-M[32:63]-D[0:31]*E[0:31]
步骤33:F[64:95]<-M[64:95]-D[0:31]*E[32:63]
步骤34:F[96:127]<-M[96:127]+D[0:31]*E[0:31]
步骤35:F[128:159]<-M[128:159]+D[64:95]*E[96:127]
步骤36:F[160:191]<-M[160:191]-D[64:95]*E[64:95]
步骤37:F[192:223]<-M[192:223]-D[64:95]*E[96:127]
步骤38:F[224:255]<-M[224:255]+D[64:95]*E[64:95]
所述第四指令步骤40如图6所示,与第三指令步骤30类似地,图6中的中间结果操作数寄存器64中为第二指令步骤20的中间结果,第二寄存器62中为源操作数,第三寄存器63中为旋转因子,目的结果寄存器65中为一级碟形运算的最终结果,具体依次包括如下步骤:
步骤41:F[0:31]<-M[0:31]+D[128:159]*E[160:191]
步骤42;F[32:63]<-M[32:63]-D[128:159]*E[128:159]
步骤43:F[64:95]<-M[64:95]-D[128:159]*E[160:191]
步骤44:F[96:127]<-M[96:127]+D[128:159]*E[128:159]
步骤45:F[128:159]<-M[128:159]+D[192:223]*E[224:255]
步骤46:F[160:191]<-M[160:191]-D[192:223]*E[192:223]
步骤47:F[192:223]<-M[192:223]-D[192:223]*E[224:255]
步骤48:F[224:255]<-M[224:255]+D[192:223]*E[192:223]
上述第一指令步骤10至第四指令步骤40中,字母C、D、E、M和F分别代表第一寄存器61、第二寄存器62、第三寄存器63、中间结果操作数寄存器64和目的结果寄存器65,方括号内的数字范围对应寄存器的位范围,且图3至图7中的字母C、D、E、M和F后的(0)、(1)、(2)、(3)、(4)、(5)、(6)、(7)分别依次对应寄存器的位范围[0:31]、[32:63]、[64:95]、[96:127]、[128:159]、[160:191]、[192:223]、[224:255]。“<-”表示右侧表达式运算出的结果存入左侧寄存器相应位中,“*”为乘法运算,“+”为加法运算,“-”为减法运算,右侧表达式运算优先级为先算乘法再算加减法。第一指令步骤10至第四指令步骤40中的三个源操作数为单精度浮点。
通过组合使用上述同时具备了运算和移位的功能四条指令步骤,可以省去FFT中的移位指令,高效地实现基2算法的FFT。
图7为基2的8点FFT编程使用寄存器的示意图。图中每列的四个方格组成一个256位寄存器。对于基2的8点FFT,第一列71、第二列72、第三列73构成第一级蝶形运算,8个复数点顺序输入第一列71和第二列72中,每个复数点占据64位,虚部占据低32位,实部占据高32位。旋转因子占据第三列73。8个复数点的第一级运算完成后,得到的中间结果占据由两个256位寄存器组成的第四列74;此时,将第四列74的寄存器折叠,形成第五列75,旋转因子占据第六列76,类似地,使用相同的指令组合,完成第二级蝶形运算,得到的中间结果占据由两个256位寄存器组成的第七列77;然后再将第七列77的寄存器折叠,形成第八列78,旋转因子占据第九列79,使用相同的指令组合,完成第三级蝶形运算,最后的结果在第10列的两个256位寄存器中,然后倒序输出,完成基2的8点FFT。
图7中,在编程时只需要五个256位的寄存器即可高效地实现基2的8点FFT,整个运算过程中不需要FFT移位指令。这五个寄存器对应所述第一寄存器61、第二寄存器62、第三寄存器63、中间结果操作数寄存器64和目的结果寄存器65,实际编程时可以灵活设置和使用。

Claims (6)

1.一种包含四条指令的支持快速傅里叶变换运算的方法,其特征在于包括:
第一组合指令步骤(21)和第二组合指令步骤(22),所述第一组合指令步骤(21)和第二组合指令步骤(22)分别包括两条先后执行的指令步骤,每条所述指令步骤均包括有操作数定义、寄存器内数据的运算关系和存储顺序;每条组合指令步骤中的前一条指令步骤的操作结果为后一条指令步骤的源操作数,执行一次两条指令组合步骤完成快速傅里叶变换的一级蝶形运算,之后将一级碟形运算的输出寄存器折叠,使用同样的该两条组合指令步骤进行下一级的蝶形运算,直到快速傅里叶变换运算结束;
所述第一组合指令步骤(21)和第二组合指令步骤(22)均采用第一寄存器(61)、第二寄存器(62)、第三寄存器(63)和目的结果寄存器(65)进行蝶形运算,使用中间结果操作数寄存器(64)保存中间结果;
所述第一寄存器(61)、第二寄存器(62)、第三寄存器(63)、中间结果操作数寄存器(64)和目的结果寄存器(65)均为N位的寄存器;
所述第一组合指令步骤(21)采用所述第一寄存器(61)、第二寄存器(62)、第三寄存器(63)和目的结果寄存器(65)的高N/2位或低N/2位进行蝶形运算;
相应地,所述第二组合指令步骤(22)采用所述第一寄存器(61)、第二寄存器(62)、第三寄存器(63)和目的结果寄存器(65)的低N/2位或高N/2位进行蝶形运算。
2.根据权利要求1所述的包含四条指令的支持快速傅里叶变换运算的方法,其特征在于:
所述N的值为256,所述第一组合指令步骤(21)和第二组合指令步骤(22)分别得到4个复数点数据。
3.根据权利要求2所述的包含四条指令的支持快速傅里叶变换运算的方法,其特征在于:
所述第一组合指令步骤(21)包括依次执行的以下两步骤:
第一指令步骤(10):使用中间结果操作数寄存器(64)的0-255位来保存指令结果,使用第一寄存器(61)、第二寄存器(62)、第三寄存器(63)的0-127位来参与运算;
第三指令步骤(30):使用目的结果寄存器的0-255位来保存指令结果,使用中间结果操作数寄存器(64)的0-255位、第二寄存器(62)和第三寄存器(63)的0-127位来参与运算;
所述第二组合指令步骤(22)包括依次执行的以下两步骤:
第二指令步骤(20):使用中间结果操作数寄存器(64)的0-255位来保存指令结果,使用第一寄存器(61)、第二寄存器(62)、第三寄存器(63)的128-255位来参与运算;
第四指令步骤(40):使用目的结果寄存器的0-255位来保存指令结果,使用中间结果操作数寄存器(64)的0-255位、第二寄存器(62)和第三寄存器(63)的128-255位来参与运算。
4.根据权利要求3所述的包含四条指令的支持快速傅里叶变换运算的方法,其特征在于:
所述第一指令步骤(10)依次包括:
步骤(11):M[0:31]<-C[0:31]+D[32:63]*E[0:31]
步骤(12):M[32:63]<-C[32:63]+D[32:63]*E[32:63]
步骤(13):M[64:95]<-C[0:31]-D[32:63]*E[0:31]
步骤(14):M[96:127]<-C[32:63]-D[32:63]*E[32:63]
步骤(15):M[128:159]<-C[64:95]+D[96:127]*E[64:95]
步骤(16):M[160:191]<-C[96:127]+D[96:127]*E[96:127]
步骤(17):M[192:223]<-C[64:95]-D[96:127]*E[64:95]
步骤(18):M[224:255]<-C[96:127]-D[96:127]*E[96:127]
所述第二指令步骤(20)依次包括:
步骤(21):M[0:31]<-C[128:159]+D[160:191]*E[128:159]
步骤(22):M[32:63]<-C[160:191]+D[160:191]*E[160:191]
步骤(23):M[64:95]<-C[128:159]-D[160:191]*E[128:159]
步骤(24):M[96:127]<-C[160:191]-D[160:191]*E[160:191]
步骤(25):M[128:159]<-C[192:223]+D[224:255]*E[192:223]
步骤(26):M[160:191]<-C[224:255]+D[224:255]*E[224:255]
步骤(27):M[192:223]<-C[192:223]-D[224:255]*E[192:223]
步骤(28):M[224:255]<-C[224:255]-D[224:255]*E[224:255]
所述第三指令步骤(30)依次包括:
步骤(31):F[0:31]<-M[0:31]+D[0:31]*E[32:63]
步骤(32):F[32:63]<-M[32:63]-D[0:31]*E[0:31]
步骤(33):F[64:95]<-M[64:95]-D[0:31]*E[32:63]
步骤(34):F[96:127]<-M[96:127]+D[0:31]*E[0:31]
步骤(35):F[128:159]<-M[128:159]+D[64:95]*E[96:127]
步骤(36):F[160:191]<-M[160:191]-D[64:95]*E[64:95]
步骤(37):F[192:223]<-M[192:223]-D[64:95]*E[96:127]
步骤(38):F[224:255]<-M[224:255]+D[64:95]*E[64:95]
所述第四指令步骤(40)依次包括:
步骤(41):F[0:31]<-M[0:31]+D[128:159]*E[160:191]
步骤(42):F[32:63]<-M[32:63]-D[128:159]*E[128:159]
步骤(43):F[64:95]<-M[64:95]-D[128:159]*E[160:191]
步骤(44):F[96:127]<-M[96:127]+D[128:159]*E[128:159]
步骤(45):F[128:159]<-M[128:159]+D[192:223]*E[224:255]
步骤(46):F[160:191]<-M[160:191]-D[192:223]*E[192:223]
步骤(47):F[192:223]<-M[192:223]-D[192:223]*E[224:255]
步骤(48):F[224:255]<-M[224:255]+D[192:223]*E[192:223]
其中,字母C、D、E、M和F分别代表第一寄存器(61)、第二寄存器(62)、第三寄存器(63)、中间结果操作数寄存器(64)和目的结果寄存器(65),方括号内的数字范围对应寄存器的位范围,“<-”表示右侧表达式运算出的结果存入左侧寄存器相应位中,“*”为乘法运算,“+”为加法运算,“-”为减法运算,右侧表达式运算优先级为先算乘法再算加减法。
5.根据权利要求1至4中任一权利要求所述的包含四条指令的支持快速傅里叶变换运算的方法,其特征在于:
所述第一组合指令步骤(21)和第二组合指令步骤(22)之间的运行顺序为串行。
6.根据权利要求1至4中任一权利要求所述的包含四条指令的支持快速傅里叶变换运算的方法,其特征在于:
所述第一组合指令步骤(21)和第二组合指令步骤(22)之间的运行顺序为并行。
CN2009102370572A 2009-11-03 2009-11-03 包含四条指令的支持快速傅里叶变换运算的方法 Active CN101706770B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009102370572A CN101706770B (zh) 2009-11-03 2009-11-03 包含四条指令的支持快速傅里叶变换运算的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009102370572A CN101706770B (zh) 2009-11-03 2009-11-03 包含四条指令的支持快速傅里叶变换运算的方法

Publications (2)

Publication Number Publication Date
CN101706770A CN101706770A (zh) 2010-05-12
CN101706770B true CN101706770B (zh) 2011-10-26

Family

ID=42376996

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009102370572A Active CN101706770B (zh) 2009-11-03 2009-11-03 包含四条指令的支持快速傅里叶变换运算的方法

Country Status (1)

Country Link
CN (1) CN101706770B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102929837B (zh) * 2012-09-18 2015-06-17 西安电子科技大学 基于fpga的高速定点fft处理器及其处理方法
CN107632292B (zh) * 2017-09-21 2021-07-30 北京工业大学 一种对雷达信号进行调频傅立叶变换的方法
CN110008436B (zh) * 2019-03-07 2021-03-26 中国科学院计算技术研究所 基于数据流架构的快速傅里叶变换方法、系统和存储介质
CN113591022A (zh) * 2021-07-02 2021-11-02 星思连接(上海)半导体有限公司 一种可分解数据的读写调度处理方法和装置

Also Published As

Publication number Publication date
CN101706770A (zh) 2010-05-12

Similar Documents

Publication Publication Date Title
CN110765709B (zh) 一种基于fpga的基2-2快速傅里叶变换硬件设计方法
CN102043761B (zh) 一种基于可重构技术的傅立叶变换的实现方法
CN103440121B (zh) 一种面向向量处理器的三角矩阵乘法向量化方法
CN102135951B (zh) 基于运行时重构的ls-svm算法fpga实现方法
CN105426345A (zh) 一种矩阵求逆运算方法
CN103927290A (zh) 一种任意阶下三角复矩阵求逆运算方法
CN101706770B (zh) 包含四条指令的支持快速傅里叶变换运算的方法
CN101763338A (zh) 一种点数可变的混合基fft/ifft实现装置及其方法
CN101847137B (zh) 一种实现基2fft计算的fft处理器
CN100594490C (zh) 存储器控制方法及运算装置
CN102129420A (zh) 基于Cholesky分解解决最小二乘问题的FPGA实现装置
CN106933777B (zh) 基于国产申威26010处理器的基2一维fft的高性能实现方法
CN103034621B (zh) 基2×k并行fft架构的地址映射方法及系统
Choudhary et al. CORDIC based implementation of Fast Fourier Transform
CN102799564A (zh) 基于多核dsp平台的fft并行方法
CN102637124A (zh) 一种基4fft算法的并行处理装置及方法
CN103493039A (zh) 数据处理方法和相关装置
Fonseca et al. Design of pipelined butterflies from Radix-2 FFT with Decimation in Time algorithm using efficient adder compressors
CN102541813A (zh) 一种多粒度并行fft蝶形计算的方法及相应的装置
CN101833540B (zh) 信号处理方法和装置
Bansal et al. Memory-efficient Radix-2 FFT processor using CORDIC algorithm
CN103902506A (zh) 一种基于龙芯3b的fftw3优化方法
Kumar et al. Implementation of Area Efficient Pipelined R2 2 SDF FFT Architecture
CN102880592A (zh) 一种顺序输出的高精度3780点fft处理装置和方法
CN103677735B (zh) 一种数据处理装置及数字信号处理器

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