CN102298570A - 一种点数可变的混合基 fft/ifft实现装置及其方法 - Google Patents

一种点数可变的混合基 fft/ifft实现装置及其方法 Download PDF

Info

Publication number
CN102298570A
CN102298570A CN2011102692126A CN201110269212A CN102298570A CN 102298570 A CN102298570 A CN 102298570A CN 2011102692126 A CN2011102692126 A CN 2011102692126A CN 201110269212 A CN201110269212 A CN 201110269212A CN 102298570 A CN102298570 A CN 102298570A
Authority
CN
China
Prior art keywords
module
data
memory module
fft
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.)
Pending
Application number
CN2011102692126A
Other languages
English (en)
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.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
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 Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CN2011102692126A priority Critical patent/CN102298570A/zh
Publication of CN102298570A publication Critical patent/CN102298570A/zh
Pending legal-status Critical Current

Links

Images

Abstract

本发明公开了一种点数可变的混合基FFT/IFFT实现装置及其方法。本发明为FFT和IFFT两用系统,实现了点数可配;在变换过程中使用两块RAM,一块只存储输入数据,在每一次运算完成其第一级蝶形运算时,该RAM可以用来接受下次运算的数据,在完成连续多次运算时,节省了时间;另外使用了基4和基2相结合的方法实现2的L次幂(L为大于或等于3的正整数)点数的FFT和IFFT运算,在蝶形运算时,使用块浮点运算,解决了蝶形运算过程中乘法和加法造成的数据位宽扩大,节省了存储空间,同时对该结果做原址存储操作,实现近似的级间流水。该方法和装置具有控制简单,实现高效,配置灵活,可扩展性良好等特点。

Description

一种点数可变的混合基 FFT/IFFT实现装置及其方法
技术领域
本发明涉及一种点数可变的混合基FFT/IFFT实现装置及其方法。 
背景技术
离散傅里叶变换(DFT)是数字信号处理领域最为基本也是最为常用的运算,我们可以利用DFT对信号做数字谱分析或者实现数字滤波,此外,在各种数字系统的设计和实现中也都会用到DFT。然而,在DFT运算提出初期,并没有一种很优的算法随之提出,因此,完成N点数据DFT的计算复杂度为O(N2);直到1965年,Cooley和Tukey在《Mathematics of Computation》上发表了“Analgorithm for the machine computation of complex Fourier series”一文,标志着快速傅里叶变换(FFT)算法的正式诞生。 
FFT算法的提出被视为数字信号处理发展史上一个重要的里程碑,它将DFT的计算复杂度由O(N2)降到了O(N log2 N),解决了数字信号处理实现和应用的瓶颈,具有很强的理论和工程意义。在目前数字信号处理的各个应用领域中,FFT算法仍然起着举足轻重的作用:例如,FFT算法作为时域和频域转换的基本算法,是我们进行数字谱分析的必备前提,在数字通信、语音信号分析、图像处理、雷达以及生物医学工程等方面都有着极其广泛的应用;又如,在数字语音编码、数字滤波、射电干涉阵等情况下,都需要使用专用的FFT设备来处理这种实时快速的运算;特别是,近年来由于现场可编程门阵列(FPGA)的飞速发展,使得FPGA非常适合用来实现FFT算法,如FPGA厂商Altera和Xlinx都开发了相应的FFT IP核,且价格非常昂贵,无法广泛应用,因此在实际工程应用中,开发一个基于FGPA的FFT实现方法显得尤为重要。 
目前,已有的各种各样的DFT计算快速算法大致可以分为两类:一类是将DFT转变为卷积,利用计算卷积的方法计算,其代表是Winograd算法和素因子算法;另一类是递归型算法,是将一维DFT转化为容易计算的二维或者多维DFT,且这个过程可以重复,具有代表性的算法有Cooley-Tukey算法、Rader-Brenner算法和分裂基算法。上述两类算法相比较而言,前者在运算量上占优,乘法器的使用比后者少,但是控制逻辑较复杂,控制单元实现起来相对较为麻烦。 
发明内容
本发明的目的是克服现有技术的不足,提供一种点数可变的混合基FFT/IFFT实现装置及其方法。 
点数可变的混合基FFT/IFFT实现装置包括模块:输入数据变换模块、存储模块A、数据选择器、蝶形运算模块、溢出检测模块、存储模块B、移位模块、输出数据变换模块以及控制模块,输入数据变换模块与存储模块A、数据选择 器、蝶形运算模块、溢出检测模块、存储模块B、移位模块依次连接,存储模块B与输出数据变换模块相连,移位模块与数据选择器相连;在控制模块控制下,根据本次运算为FFT或IFFT,将串行输入数据经过实部虚部变换后存储到存储模块A,然后控制模块控制存储模块A中所有数据完成第一级蝶形运算,蝶形运算结果经过溢出检测模块完成溢出检测,同时将蝶形运算结果存入存储模块B;当存储模块A中所有数据均完成了第一级蝶形运算后,控制模块向外给出存储模块A空闲可用的标志信号,预示着下一次运算数据可以输入,同时控制模块控制移位模块、存储模块B、蝶形运算模块以及溢出检测模块完成接下来的所有蝶形运算;当所有蝶形运算全部完成之后,控制模块控制存储模块B、输出数据变换模块,根据本次运算为FFT或IFFT,将存储模块B中的数据串行读出、进行实部虚部变换,然后经过移位得到最终的块浮点运算结果,当存储模块B中数据全部输出后,输出数据变换模块向控制模块给出存储模块B空闲可用标志信号,新一次FFT/IFFT运算开始进行。 
所述的蝶形运算模块包括相连接的旋转因子存储模块、乘法器模块和加法器模块。 
点数可变的混合基FFT/IFFT实现方法包括如下步骤: 
1)根据本次运算为FFT或者IFFT,在控制模块的控制下,将串行输入数据经过实部虚部变换后按照分块倒序方式存入存储模块A; 
2)串行输入数据经过实部虚部变换并全部写入存储模块A后,控制模块控制存储模块A、蝶形运算模块、和溢出检测模块,从存储模块A中读取四个数据完成一次基-4蝶形运算;对蝶形运算结果数据做溢出检测后,按原址存储到存储模块B中,当存储模块A中的所有数据均完成第一级蝶形运算,控制模块向外给出信号,下一次FFT或者IFFT运算的数据流进入存储模块A; 
3)将FFT或者IFFT运算的点数记为N,且N=2L,L为大于或等于3的正整数:若L为偶数,则蝶形运算级数为L/2;若L为奇数,则蝶形运算级数为(L+1)/2,在控制模块的控制下,L为偶数情况下的第二级到第L/2级或者L为奇数情况下的第二级到第(L-1)/2级的每一次蝶形运算均从存储模块B中读取四个数据,经过移位模块移位之后完成一次基-4蝶形运算,结果经过溢出检测后按原址存入存储模块B;当L为奇数时,第(L+1)/2级蝶形运算按照每次从存储模块B中读取两个数据,在控制模块下进行基-2蝶形运算,结果经过溢出检测后按原址存入存储模块B中; 
4)所有蝶形运算完成之后,在控制模块控制下,根据本次运算为FFT或者IFFT,将存储模块B中的数据串行读出,经过移位和实部虚部变换后得到输入数据的FFT或者IFFT块浮点运算结果,将该结果与最后输出的块浮点指数组合即为实际FFT或者IFFT结果。 
所述的根据本次运算为FFT或者IFFT,在控制模块的控制下,将串行输入数据经过实部虚部变换后按照分块倒序方式存入存储模块A的步骤包括: 
1)FFT/IFFT变换的输入数据为复数,点数为N,N=2L,L为大于或等于3的正整数,若输入数据要求进行FFT运算,则输入复数数据不需做处理;若输入数据要求进行IFFT运算,则输入复数数据实部不变,虚部取反; 
2)存储模块A包括四个大小相同的子存储模块,分别为A1、A2、A3、A4,每个子存储模块的大小为2×b×N/4比特,b为输入复数的实部或者虚部的位宽比特数,串行输入的N点处理后数据为x(n),其中n=0,1,2,……,N-1,将x(0)~x(N/4-1)、x(N/4)~x(2N/4-1)、x(2N/4)~x(3N/4-1)和x(3N/4)~x(N-1)分别按照倒序存入A1、A2、A3、A4中; 
3)当输入数据点数达到N时,控制模块给出FFT/IFFT运算启动信号。 
所述的串行输入数据经过实部虚部变换并全部写入存储模块A后,控制模块控制存储模块A、蝶形运算模块和溢出检测模块,从存储模块A中读取四个数据完成一次基-4蝶形运算;对蝶形运算结果数据做溢出检测后,按原址存储到存储模块B中,当存储模块A中的所有数据均完成第一级蝶形运算,控制模块向外给出信号,下一次FFT或者IFFT运算的数据流可以进入存储模块A的步骤包括: 
1)从子存储模块A1、A2、A3、A4中分别读出一个数据,经过三次复数乘法和八次复数加法,完成一次基-4蝶形运算; 
2)对每次蝶形运算的结果做溢出检测,记下该运算结果中最大值的溢出比特数; 
3)存储模块B也由四个子存储模块组成,分别为子存储模块B1、B2、B3、B4,每次蝶形运算结束将四个数据写入子存储模块B1、B2、B3、B4,写地址等于子存储模块A1、A2、A3、A4的读地址; 
4)重复上述三个步骤,直至存储模块A中所有数据完成蝶形运算,此时最大的溢出比特数即为该级蝶形运算结果最终的溢出比特数; 
5)当存储模块A中所有数据完成第一级蝶形运算后,控制模块向外给出标志信号,表明下一次FFT/IFFT的数据流串行进入存储模块A等待。 
所述的将FFT或者IFFT运算的点数记为N,且N=2L,L为大于或等于3的正整数:若L为偶数,则蝶形运算级数为L/2;若L为奇数,则蝶形运算级数为(L+1)/2。在控制模块的控制下,L为偶数情况下的第二级到第L/2级或者L为奇数情况下的第二级到第(L-1)/2级的每一次蝶形运算均从存储模块B中读取 四个数据,经过移位模块移位之后完成一次基-4蝶形运算,结果经过溢出检测后按原址存入存储模块B;当L为奇数时,第(L+1)/2级蝶形运算按照每次从存储模块B中读取两个数据,在控制模块下进行基-2蝶形运算,结果经过溢出检测后按原址存入存储模块B中的步骤包括: 
1)L为偶数情况下的第二级到第L/2级或者L为奇数情况下的第二级到第(L-1)/2级蝶形运算,在控制模块的控制下,每次分别从子存储模块B1、B2、B3、B4中各读取一个数据,移位模块按照前一级蝶形运算后溢出检测结果进行移位,移位结果完成一次基-4蝶形运算,结果经过溢出检测同时按照原址写入子存储模块B1、B2、B3、B4; 
2)当L为奇数时,第(L+1)/2级蝶形运算为基-2蝶形运算,在控制模块的控制下,首先从子存储模块B1和B3中分别读出一个数据,移位之后完成一次基-2蝶形运算,结果经溢出检测后按原址存入子存储模块B1和B3,如此循环直至子存储模块B1、B3中所有数据均完成蝶形运算;之后,将子存储模块B2和B4组合,完成与子存储模块B1和B3相同的操作; 
3)此时,我们就顺利完成了N点数据FFT/IFFT运算的所有蝶形运算,结果存储在子存储模块B1、B2、B3、B4中。 
所述的所有蝶形运算完成之后,在控制模块控制下,根据本次运算为FFT或者IFFT,将存储模块B中的数据串行读出,经过移位和实部虚部变换后得到输入数据的FFT或者IFFT块浮点运算结果,将该结果与最后输出的块浮点指数组合即为实际FFT或者IFFT结果的步骤包括: 
1)在控制模块控制下,将数据从子存储模块B1、B2、B3、B4中按照一定的顺序串行输出,并根据本次运算为FFT或者IFFT作如下处理:若为FFT,则实部和虚部均不变;若为IFFT,则实部不变,虚部取反; 
2)完成实部和虚部转换后,按照最后一级蝶形运算的溢出检测结果,将串行输出数据做相应移位后即可输出,输出的结果即为输入N点复数数据的FFT/IFFT块浮点运算结果,当N点数据全部输出后,向控制模块给出标志信号,表明存储模块B可用,可以进行新一次的FFT/IFFT运算; 
3)实际的FFT/IFFT结果为:,X(k)=X′(k)*2-exp,k=0,1,…,N-1,N为输入数据点数,其中X(k)为实际FFT/IFFT结果,X′(k)为FFT/IFFT块浮点运算结果,exp为块浮点指数。 
所述的实际的FFT/IFFT结果为:X(k)=X′(k)*2-exp,k=0,1,…,N-1,N为输入数据点数,其中X(k)为实际FFT/IFFT结果,X′(k)为FFT/IFFT块浮点运 算结果,exp为块浮点指数的步骤包括: 
1)当运算类型为FFT时,exp初值为0,当运算类型为IFFT时,exp初值为log2N; 
2)每一级蝶形运算之后,exp等于在该级蝶形运算开始之前的值减去本级蝶形运算的溢出比特数,当所有蝶形运算完成之后,所得到的exp即为最终的块浮点指数; 
3)通过最后的块浮点结果X′(k)和块浮点指数exp即可得到实际的FFT/IFFT结果X(k),X(k)=X′(k)*2-exp,k=0,1,…,N-1,N为输入数据点数。 
本发明为FFT和IFFT两用系统,将欲完成变换数据的点数送给控制器,可以实现点数可配;在变换过程中使用两块存储RAM,其中一块用来存储输入数据,这样在每一次FFT/IFFT运算完成其第一级蝶形运算时,该RAM可以用来接受下次运算的数据,在实现连续多次FFT/IFFT运算时,节省了时间;另外使用了基-4和基-2相结合的方法实现任意2的L次幂(L为大于或等于3的正整数)点数的FFT和IFFT运算,在蝶形运算时,使用块浮点运算,即对蝶形运算的结果做溢出检测判断处理,解决了蝶形运算过程中乘法和加法造成的数据位宽的扩大,节省了存储空间,同时对该结果做原址存储操作,实现近似的蝶形运算级间流水。 
附图说明
图1是本发明的全部模块以及连接框图; 
图2是本发明中蝶形运算模块的电路框图; 
图3是本发明中块浮点机制的比特数变化图; 
图4是本发明中块浮点操作流程图。 
具体实施方式
如图1所示,点数可变的混合基FFT/IFFT实现装置包括模块:输入数据变换模块、存储模块A、数据选择器、蝶形运算模块、溢出检测模块、存储模块B、移位模块、输出数据变换模块以及控制模块,输入数据变换模块与存储模块A、数据选择器、蝶形运算模块、溢出检测模块、存储模块B、移位模块依次连接,存储模块B与输出数据变换模块相连,移位模块与数据选择器相连;在控制模块控制下,根据本次运算为FFT或IFFT,将串行输入数据经过实部虚部变换后存储到存储模块A,然后控制模块控制存储模块A中所有数据完成第一级蝶形运算,蝶形运算结果经过溢出检测模块完成溢出检测,同时将蝶形运算结果存入存储模块B;当存储模块A中所有数据均完成了第一级蝶形运算后,控制模块向外给出存储模块A空闲可用的标志信号,预示着下一次运算数据可以输入,同时控制模块控制移位模块、存储模块B、蝶形运算模块以及溢出检测模块完成接下来的所有蝶形运算;当所有蝶形运算全部完成之后,控制模块控制存储模 块B、输出数据变换模块,根据本次运算为FFT或IFFT,将存储模块B中的数据串行读出、进行实部虚部变换,然后经过移位得到最终的块浮点运算结果,当存储模块B中数据全部输出后,输出数据变换模块向控制模块给出存储模块B空闲可用标志信号,新一次FFT/IFFT运算开始进行。 
如图2所示,蝶形运算模块包括相连接的旋转因子存储模块、乘法器模块和加法器模块。 
点数可变的混合基FFT/IFFT实现方法包括如下步骤: 
1)根据本次运算为FFT或者IFFT,在控制模块的控制下,将串行输入数据经过实部虚部变换按照分块倒序方式存入存储模块A; 
2)串行输入数据经过实部虚部变换并全部写入存储模块A后,控制模块控制存储模块A、蝶形运算模块、和溢出检测模块,从存储模块A中读取四个数据完成一次基-4蝶形运算;对蝶形运算结果数据做溢出检测后,按原址存储到存储模块B中,当存储模块A中的所有数据均完成第一级蝶形运算,控制模块向外给出信号,下一次FFT或者IFFT运算的数据流进入存储模块A; 
3)将FFT或者IFFT运算的点数记为N,且N=2L,L为大于或等于3的正整数:若L为偶数,则蝶形运算级数为L/2;若L为奇数,则蝶形运算级数为(L+1)/2,在控制模块的控制下,L为偶数情况下的第二级到第L/2级或者L为奇数情况下的第二级到第(L-1)/2级的每一次蝶形运算均从存储模块B中读取四个数据,经过移位模块移位之后完成一次基-4蝶形运算,结果经过溢出检测后按原址存入存储模块B;当L为奇数时,第(L+1)/2级蝶形运算按照每次从存储模块B中读取两个数据,在控制模块下进行基-2蝶形运算,结果经过溢出检测后按原址存入存储模块B中; 
4)所有蝶形运算完成之后,在控制模块控制下,根据本次运算为FFT或者IFFT,将存储模块B中的数据串行读出,经过移位和实部虚部变换后得到输入数据的FFT或者IFFT块浮点运算结果,将该结果与最后输出的块浮点指数组合即为实际FFT或者IFFT结果。 
所述的根据本次运算为FFT或者IFFT,在控制模块的控制下,将串行输入数据经过实部虚部变换后按照分块倒序方式存入存储模块A的步骤包括: 
1)FFT/IFFT变换的输入数据为复数,点数为N,N=2L,L为大于或等于3的正整数,若输入数据要求进行FFT运算,则输入复数数据不需做处理;若输入数据要求进行IFFT运算,则输入复数数据实部不变,虚部取反; 
在实施例中,我们根据实际应用的需求,L的取值范围设定为5~14,即点数N的范围为32~16384之间为2的正整数次幂的数,输入的N点复数数据为:x(n)=I(n)+jQ(n)n=0,1,2,…,N-1    (1) 
式(1)中的I(n)为输入数据的实部,Q(n)为输入数据的虚部, 
N点输入数据的FFT和IFFT运算的表达式分别为: 
X FFT ( k ) = Σ n = 0 N - 1 x ( n ) e - j 2 π N nk = Σ n = 0 N - 1 [ I ( n ) + jQ ( n ) ] [ cos ( 2 π N nk ) - j sin ( 2 π N nk ) ]
= Re { X FFT ( k ) } + jIm { X FFT ( k ) } k=0,1,2,…,N-1    (2) 
式(2)中, Re { X FFT ( k ) } = Σ n = 0 N - 1 [ I ( n ) cos ( 2 π N nk ) + Q ( n ) sin ( 2 π N nk ) ]
Im { X FFT ( k ) } = Σ n = 0 N - 1 [ Q ( n ) cos ( 2 π N nk ) - I ( n ) sin ( 2 π N nk ) ]
X IFFT ( k ) = 1 N Σ n = 0 N - 1 x ( n ) e j 2 π N nk
= 1 N Σ n = 0 N - 1 [ I ( n ) + jQ ( n ) ] [ cos ( 2 π N nk ) + j sin ( 2 π N nk ) ]
= Re { X IFFT ( k ) } + jIm { X IFFT ( k ) } k=0,1,2,…,N-1    (3) 
式(3)中, Re { X IFFT ( k ) } = 1 N Σ n = 0 N - 1 [ I ( n ) cos ( 2 π N nk ) + ( - Q ( n ) ) sin ( 2 π N nk ) ]
Im { X IFFT ( k ) } = - 1 N Σ n = 0 N - 1 [ ( - Q ( n ) ) cos ( 2 π N nk ) - I ( n ) sin ( 2 π N nk ) ]
本发明中,FFT和IFFT采用相同的旋转因子值,因此,我们以FFT为标准,由式(2)和(3)可以看出,在完成IFFT运算时,我们将输入复数数据的虚部取反之后进行FFT运算,并将最后结果的虚部再取反后输出,这样就可以做到使用与FFT相同的控制方式就可以实现IFFT,简化了中间蝶形计算的控制逻辑; 
2)存储模块A包括四个大小相同的子存储模块,分别为A1、A2、A3、A4,每个子存储模块的大小为2×b×N/4比特,b为输入复数的实部或者虚部的位宽比特数,串行输入的N点处理后数据为x(n),其中n=0,1,2,……,N-1,将x(0)~x(N/4-1)、x(N/4)~x(2N/4-1)、x(2N/4)~x(3N/4-1)和x(3N/4)~x(N-1)分别按照倒序存入A1、A2、A3、A4中; 
3)当输入数据点数达到N时,控制模块给出FFT/IFFT运算启动信号。 
所述的串行输入数据经过实部虚部变换并全部写入存储模块A后,控制模块控制存储模块A、蝶形运算模块和溢出检测模块,从存储模块A中读取四个数据完成一次基-4蝶形运算;对蝶形运算结果数据做溢出检测后,按原址存储到存储模块B中,当存储模块A中的所有数据均完成第一级蝶形运算,控制模 块向外给出信号,下一次FFT或者IFFT运算的数据流可以进入存储模块A的步骤包括: 
1)从子存储模块A1、A2、A3、A4中分别读出一个数据,经过三次复数乘法和八次复数加法,完成一次基-4蝶形运算; 
假定从A1、A2、A3、A4中读出的数据分别为A、B、C、D,基-4蝶形运算表达式为: 
A′=A+BWP+CW2P+DW3P=(A+CW2P)+(BWP+DW3P)    (4.1) 
B′=A-jBWP-CW2P+jDW3P=(A-CW2P)-j(BWP-DW3P) (4.2) 
C′=A-BWP+CW2P-DW3P=(A+CW2P)-(BWP+DW3P)    (4.3) 
D′=A+jBWP-CW2P-jDW3P=(A-CW2P)+j(BWP-DW3P) (4.4) 
式(4.1)~(4.4)中, W P = W N k = e - j 2 π N k ,
由式(4.1)~(4.4)可知,完成一次基-4蝶形运算所需的三次复乘分别为:BWP、CW2P、DW3P,八次复加分别为:A+CW2P、BWP+DW3P、A-CW2P、BWP-DW3P、前两者的和、差以及后两者的和、差; 
2)对每次蝶形运算的结果做溢出检测,记下该运算结果中最大值的溢出比特数; 
3)存储模块B也由四个子存储模块组成,分别为子存储模块B1、B2、B3、B4,每次蝶形运算结束将四个数据写入子存储模块B1、B2、B3、B4,写地址等于子存储模块A1、A2、A3、A4的读地址; 
4)重复上述三个步骤,直至存储模块A中所有数据完成蝶形运算,此时最大的溢出比特数即为该级蝶形运算结果最终的溢出比特数; 
5)当存储模块A中所有数据完成第一级蝶形运算后,控制模块向外给出标志信号,表明下一次FFT/IFFT的数据流串行进入存储模块A等待。 
本发明中使用两块大小相同的存储模块A和B,存储模块A只用来存储输入的数据,而存储模块B用来存储蝶形运算结果,这样做的目的是,在连续完成多次FFT或者IFFT运算时,本次运算在完成了第一级的蝶形运算后,存储模块A就可以空闲以接受下次运算的串行输入数据,这样在进行本次运算后面若干级蝶形运算时,下次运算的输入数据可以同时串行进入存储模块A,等到本次运算结束且最终结果从存储模块B中完全输出后,若下次运算的输入数据准备完成,则可以立刻进行下次运算,节省了数据串行写入存储模块A的时间。 
所述的将FFT或者IFFT运算的点数记为N,且N=2L,L为大于或等于3的正整数:若L为偶数,则蝶形运算级数为L/2;若L为奇数,则蝶形运算级数为(L+1)/2。在控制模块的控制下,L为偶数情况下的第二级到第L/2级或者L为奇数情况下的第二级到第(L-1)/2级的每一次蝶形运算均从存储模块B中读取四个数据,经过移位模块移位之后完成一次基-4蝶形运算,结果经过溢出检测后按原址存入存储模块B;当L为奇数时,第(L+1)/2级蝶形运算按照每次从存储模块B中读取两个数据,在控制模块下进行基-2蝶形运算,结果经过溢出检测后按原址存入存储模块B中的步骤包括: 
1)L为偶数情况下的第二级到第L/2级或者L为奇数情况下的第二级到第(L-1)/2级蝶形运算,在控制模块的控制下,每次分别从子存储模块B1、B2、B3、B4中各读取一个数据,数据移位模块按照前一级蝶形运算后溢出检测判断结果进行移位,移位结果完成一次基-4蝶形运算,结果经过溢出检测判断同时按照原址写入子存储模块B1、B2、B3、B4; 
若L为偶数,则N=2L=4L/2;若L为奇数,则N=2L=4(L-1)/2×2。因此,L为偶数时,所有的蝶形运算均为基-4蝶形运算;L为奇数时,第一级到第(L-1)/2级蝶形运算为基-4蝶形运算,最后一级为基-2蝶形运算。由于第一级蝶形运算是从存储模块A中读取数据进行,因此,从存储模块B中读取数据进行蝶形运算应该从第二级开始。 
2)当L为奇数时,第(L+1)/2级蝶形运算为基-2蝶形运算,在控制模块的控制下,首先从子存储模块B1和B3中分别读出一个数据,移位之后完成一次基-2蝶形运算,结果经溢出检测判断后按原址存入子存储模块B1和B3,如此循环直至子存储模块B1、B3中所有数据均完成蝶形运算;之后,将子存储模块B2和B4组合,完成与子存储模块B1和B3相同的操作; 
3)此时,我们就顺利完成了N点数据FFT/IFFT运算的所有蝶形运算,结果存储在子存储模块B1、B2、B3、B4中。 
所述的所有蝶形运算完成之后,在控制模块控制下,根据本次运算为FFT或者IFFT,将存储模块B中的数据串行读出,经过移位和实部虚部变换后得到输入数据的FFT或者IFFT块浮点运算结果,将该结果与最后输出的块浮点指数组合即为实际FFT或者IFFT结果的步骤包括: 
1)在控制模块控制下,将数据从子存储模块B1、B2、B3、B4中按照一定的顺序串行输出,并根据本次运算为FFT或者IFFT作如下处理:若为FFT,则实部和虚部均不变;若为IFFT,则实部不变,虚部取反; 
通过上述对式(2)和(3)的分析可以得到,在完成IFFT运算时,在数据输入时,对虚部取反,在最终结果输出时再对虚部取反,就可以做到IFFT运算和FFT运算使用相同的旋转因子值,使控制逻辑简化。 
2)完成实部和虚部转换后,按照最后一级蝶形运算的溢出检测结果,将串行输出数据做相应移位后即可输出,输出的结果即为输入N点复数数据的FFT/IFFT块浮点运算结果,当N点数据全部输出后,向控制模块给出标志信号,表明存储模块B可用,可以进行新一次的FFT/IFFT运算; 
3)实际的FFT/IFFT结果为:X(k)=X′(k)*2-exp,k=0,1,…,N-1,N为输入数据点数,其中X(k)为实际FFT/IFFT结果,X′(k)为FFT/IFFT块浮点运算结果,exp为块浮点指数。 
所述的实际的FFT/IFFT结果为:X(k)=X′(k)*2-exp,k=0,1,…,N-1,N为输入数据点数,其中X(k)为实际FFT/IFFT结果,X′(k)为FFT/IFFT块浮点运算结果,exp为块浮点指数的步骤包括: 
1)当运算类型为FFT时,exp初值为0,当运算类型为IFFT时,exp初值为log2 N; 
由式(2)和(3)可以看出,IFFT与FFT相比较,需要在前面乘以一个系数 所以,在完成IFFT运算时,exp的初值为log2 N。 
2)每一级蝶形运算之后,exp等于在该级蝶形运算开始之前的值减去本级蝶形运算的溢出比特数,当所有蝶形运算完成之后,所得到的exp即为最终的块浮点指数; 
如图3所示,假设输入的数据实部和虚部位宽均为m,以实部或者虚部之一为例,存储器的位宽大小为该位宽为m的数据经过一次基-4运算后最大的可能位宽m+3,现在经过第一次蝶形运算之后,位宽扩展为m+M1(M1≤3),为了第二次蝶形运算之后,位宽仍然能够被限制在m+3内,我们在读出第一级的蝶形运算结果后进行第二级的蝶形运算之前,需要将其右移M1;以此类推,第三级蝶形运算开始之前需要将第二级蝶形运算结果右移M2位,……,第k+1级蝶形运算开始之前需要将第k级蝶形运算结果右移Mk位,……;如图4所示的即为第k+1级蝶形运算过程中块浮点的操作流程图,包括从存储器读取数据、右移Mk位、蝶形运算、溢出比特数检测以及蝶形运算结果写入存储器; 
经过上述右移过程,最终的蝶形结果右移了M1+M2+……+Mk+……位,因此,块浮点指数为: 
exp=expini-(M1+M2+…+Mk+…)    (5) 
expini为exp的初值,FFT运算为0,IFFT运算为log2 N; 
3)通过最后的块浮点结果X′(k)和块浮点指数exp即可得到实际的FFT/IFFT结果X(k),X(k)=X′(k)*2-exp,k=0,1,…,N-1,N为输入数据点数。 
由式(5)可知,实际的FFT/IFFT结果X(k)和最后输出的块浮点结果的关系表达式为: 
X ( k ) = X ′ ( k ) * 2 - exp ini + ( M 1 + M 2 + . . . + M k + . . . ) = X ′ ( k ) * 2 - exp - - - ( 6 )

Claims (8)

1.一种点数可变的混合基FFT/IFFT实现装置,其特征在于,包括模块:输入数据变换模块、存储模块A、数据选择器、蝶形运算模块、溢出检测模块、存储模块B、移位模块、输出数据变换模块以及控制模块,输入数据变换模块与存储模块A、数据选择器、蝶形运算模块、溢出检测模块、存储模块B、移位模块依次连接,存储模块B与输出数据变换模块相连,移位模块与数据选择器相连;在控制模块控制下,根据本次运算为FFT或IFFT,将串行输入数据经过实部虚部变换后存储到存储模块A,然后控制模块控制存储模块A中所有数据完成第一级蝶形运算,蝶形运算结果经过溢出检测模块完成溢出检测,同时将蝶形运算结果存入存储模块B;当存储模块A中所有数据均完成了第一级蝶形运算后,控制模块向外给出存储模块A空闲可用的标志信号,预示着下一次运算数据可以输入,同时控制模块控制移位模块、存储模块B、蝶形运算模块以及溢出检测模块完成接下来的所有蝶形运算;当所有蝶形运算全部完成之后,控制模块控制存储模块B、输出数据变换模块,根据本次运算为FFT或IFFT,将存储模块B中的数据串行读出进行实部虚部变换,然后经过移位得到最终的块浮点运算结果,当存储模块B中数据全部输出后,输出数据变换模块向控制模块给出存储模块B空闲可用标志信号,新一次FFT/IFFT运算开始进行。
2.根据权利要求1所述的一种点数可变的混合基FFT/IFFT实现装置,其特征在于,所述的蝶形运算模块包括相连接的旋转因子存储模块、乘法器模块和加法器模块。
3.一种使用如权利要求1所述装置的点数可变的混合基FFT/IFFT实现方法,其特征在于包括如下步骤:
1)根据本次运算为FFT或者IFFT,在控制模块的控制下,将串行输入数据经过实部虚部变换后按照分块倒序方式存入存储模块A;
2)串行输入数据经过实部虚部变换并全部写入存储模块A后,控制模块控制存储模块A、蝶形运算模块、和溢出检测模块,从存储模块A中读取四个数据完成一次基-4蝶形运算;对蝶形运算结果数据做溢出检测后,按原址存储到存储模块B中,当存储模块A中的所有数据均完成第一级蝶形运算,控制模块向外给出信号,下一次FFT或者IFFT运算的数据流进入存储模块A;
3)将FFT或者IFFT运算的点数记为N,且N=2L,L为大于或等于3的正整数:若L为偶数,则蝶形运算级数为L/2;若L为奇数,则蝶形运算级数为(L+1)/2,在控制模块的控制下,L为偶数情况下的第二级到第L/2级或者L为奇数情况下的第二级到第(L-1)/2级的每一次蝶形运算均从存储模块B中读取四个数据,经过移位模块移位之后完成一次基-4蝶形运算,结果经过溢出检测后按原址存入存储模块B;当L为奇数时,第(L+1)/2级蝶形运算按照每次从存储模块B中读取两个数据,在控制模块下进行基-2蝶形运算,结果经过溢出检测后按原址存入存储模块B中;
4)所有蝶形运算完成之后,在控制模块控制下,根据本次运算为FFT或者IFFT,将存储模块B中的数据串行读出,经过移位和实部虚部变换后得到输入数据的FFT或者IFFT块浮点运算结果,将该结果与最后输出的块浮点指数组合即为实际FFT或者IFFT结果。
4.根据权利要求3所述的一种点数可变的混合基FFT/IFFT实现方法,其特征在于,所述的根据本次运算为FFT或者IFFT,在控制模块的控制下,将串行输入数据经过实部虚部变换后按照分块倒序方式存入存储模块A的步骤包括:
1)FFT/IFFT变换的输入数据为复数,点数为N,N=2L,L为大于或等于3的正整数,若输入数据要求进行FFT运算,则输入复数数据不需做处理;若输入数据要求进行IFFT运算,则输入复数数据实部不变,虚部取反;
2)存储模块A包括四个大小相同的子存储模块,分别为A1、A2、A3、A4,每个子存储模块的大小为2×b×N/4比特,b为输入复数的实部或者虚部的位宽比特数,串行输入的N点处理后数据为x(n),其中n=0,1,2,……,N-1,将x(0)~x(N/4-1)、x(N/4)~x(2N/4-1)、x(2N/4)~x(3N/4-1)和x(3N/4)~x(N-1)分别按照倒序存入A1、A2、A3、A4中;
3)当输入数据点数达到N时,控制模块给出FFT/IFFT运算启动信号。
5.根据权利要求3所述的一种点数可变的混合基FFT/IFFT实现方法,其特征在于,所述的串行输入数据经过实部虚部变换并全部写入存储模块A后,控制模块控制存储模块A、蝶形运算模块和溢出检测模块,从存储模块A中读取四个数据完成一次基-4蝶形运算;对蝶形运算结果数据做溢出检测后,按原址存储到存储模块B中,当存储模块A中的所有数据均完成第一级蝶形运算,控制模块向外给出信号,下一次FFT或者IFFT运算的数据流可以进入存储模块A的步骤包括:
1)从子存储模块A1、A2、A3、A4中分别读出一个数据,经过三次复数乘法和八次复数加法,完成一次基-4蝶形运算;
2)对每次蝶形运算的结果做溢出检测,记下该运算结果中最大值的溢出比特数;
3)存储模块B也由四个子存储模块组成,分别为子存储模块B1、B2、B3、B4,每次蝶形运算结束将四个数据写入子存储模块B1、B2、B3、B4,写地址等于子存储模块A1、A2、A3、A4的读地址;
4)重复上述三个步骤,直至存储模块A中所有数据完成蝶形运算,此时最大的溢出比特数即为该级蝶形运算结果最终的溢出比特数;
5)当存储模块A中所有数据完成第一级蝶形运算后,控制模块向外给出标志信号,表明下一次FFT/IFFT的数据流串行进入存储模块A等待。
6.根据权利要求3所述的一种点数可变的混合基FFT/IFFT实现方法,其特征在于,所述的将FFT或者IFFT运算的点数记为N,且N=2L,L为大于或等于3的正整数:若L为偶数,则蝶形运算级数为L/2;若L为奇数,则蝶形运算级数为(L+1)/2。在控制模块的控制下,L为偶数情况下的第二级到第L/2级或者L为奇数情况下的第二级到第(L-1)/2级的每一次蝶形运算均从存储模块B中读取四个数据,经过移位模块移位之后完成一次基-4蝶形运算,结果经过溢出检测后按原址存入存储模块B;当L为奇数时,第(L+1)/2级蝶形运算按照每次从存储模块B中读取两个数据,在控制模块下进行基-2蝶形运算,结果经过溢出检测后按原址存入存储模块B中的步骤包括:
1)L为偶数情况下的第二级到第L/2级或者L为奇数情况下的第二级到第(L-1)/2级蝶形运算,在控制模块的控制下,每次分别从子存储模块B1、B2、B3、B4中各读取一个数据,移位模块按照前一级蝶形运算后溢出检测结果进行移位,移位结果完成一次基-4蝶形运算,结果经过溢出检测同时按照原址写入子存储模块B1、B2、B3、B4;
2)当L为奇数时,第(L+1)/2级蝶形运算为基-2蝶形运算,在控制模块的控制下,首先从子存储模块B1和B3中分别读出一个数据,移位之后完成一次基-2蝶形运算,结果经溢出检测后按原址存入子存储模块B1和B3,如此循环直至子存储模块B1、B3中所有数据均完成蝶形运算;之后,将子存储模块B2和B4组合,完成与子存储模块B1和B3相同的操作;
3)此时,我们就顺利完成了N点数据FFT/IFFT运算的所有蝶形运算,结果存储在子存储模块B1、B2、B3、B4中。
7.根据权利要求3所述的一种点数可变的混合基FFT/IFFT实现方法,其特征在于,所述的所有蝶形运算完成之后,在控制模块控制下,根据本次运算为FFT或者IFFT,将存储模块B中的数据串行读出,经过移位和实部虚部变换后得到输入数据的FFT或者IFFT块浮点运算结果,将该结果与最后输出的块浮点指数组合即为实际FFT或者IFFT结果的步骤包括:
1)在控制模块控制下,将数据从子存储模块B1、B2、B3、B4中按照一定的顺序串行输出,并根据本次运算为FFT或者IFFT作如下处理:若为FFT,则实部和虚部均不变;若为IFFT,则实部不变,虚部取反;
2)完成实部和虚部转换后,按照最后一级蝶形运算的溢出检测结果,将串行输出数据做相应移位后即可输出,输出的结果即为输入N点复数数据的FFT/IFFT块浮点运算结果,当N点数据全部输出后,向控制模块给出标志信号,表明存储模块B可用,可以进行新一次的FFT/IFFT运算;
3)实际的FFT/IFFT结果为:X(k)=X′(k)*2-exp,k=0,1,…,N-1,N为输入数据点数,其中X(k)为实际FFT/IFFT结果,X′(k)为FFT/IFFT块浮点运算结果,exp为块浮点指数。
8.根据权利要求7所述的一种点数可变的混合基FFT/IFFT实现方法,其特征在于,所述的实际的FFT/IFFT结果为:X(k)=X′(k)*2-exp,k=0,1,…,N-1,N为输入数据点数,其中X(k)为实际FFT/IFFT结果,X′(k)为FFT/IFFT块浮点运算结果,exp为块浮点指数的步骤包括:
1)当运算类型为FFT时,exp初值为0,当运算类型为IFFT时,exp初值为log2N;
2)每一级蝶形运算之后,exp等于在该级蝶形运算开始之前的值减去本级蝶形运算的溢出比特数,当所有蝶形运算完成之后,所得到的exp即为最终的块浮点指数;
3)通过最后的块浮点结果X′(k)和块浮点指数exp即可得到实际的FFT/IFFT结果X(k),X(k)=X′(k)*2-exp,k=0,1,…,N-1,N为输入数据点数。
CN2011102692126A 2011-09-13 2011-09-13 一种点数可变的混合基 fft/ifft实现装置及其方法 Pending CN102298570A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2011102692126A CN102298570A (zh) 2011-09-13 2011-09-13 一种点数可变的混合基 fft/ifft实现装置及其方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2011102692126A CN102298570A (zh) 2011-09-13 2011-09-13 一种点数可变的混合基 fft/ifft实现装置及其方法

Publications (1)

Publication Number Publication Date
CN102298570A true CN102298570A (zh) 2011-12-28

Family

ID=45358994

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2011102692126A Pending CN102298570A (zh) 2011-09-13 2011-09-13 一种点数可变的混合基 fft/ifft实现装置及其方法

Country Status (1)

Country Link
CN (1) CN102298570A (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103440228A (zh) * 2013-08-20 2013-12-11 中国人民解放军国防科学技术大学 一种基于融合乘加指令加速fft计算的方法
CN104679719A (zh) * 2015-03-17 2015-06-03 成都金本华科技股份有限公司 一种基于fpga的浮点运算方法
CN104679721A (zh) * 2015-03-17 2015-06-03 成都金本华科技股份有限公司 一种fft处理器的运算方法
CN104679720A (zh) * 2015-03-17 2015-06-03 成都金本华科技股份有限公司 一种实现fft的运算方法
CN106339353A (zh) * 2015-07-13 2017-01-18 无锡华润矽科微电子有限公司 一种支持4375点和3780点fft/ifft的方法及其处理器
CN107133194A (zh) * 2017-04-11 2017-09-05 西安电子科技大学 基于混合基底的可配置fft/ifft协处理器
CN109039416A (zh) * 2018-09-20 2018-12-18 东南大学 基于矩阵分块的大规模mimo高效检测方法和架构
CN111506294A (zh) * 2020-04-13 2020-08-07 中国科学院自动化研究所 基于块浮点的fblms算法的fpga实现装置及方法
CN111580867A (zh) * 2020-04-30 2020-08-25 中国科学院微电子研究所 一种用于fft运算的块浮点处理方法及装置
CN111754393A (zh) * 2020-06-28 2020-10-09 展讯通信(上海)有限公司 图像处理方法、系统、电子设备和介质
CN112487750A (zh) * 2020-11-30 2021-03-12 西安微电子技术研究所 一种基于存内计算的卷积加速计算系统及方法
CN113111300A (zh) * 2020-01-13 2021-07-13 上海大学 具有优化资源消耗的定点fft实现架构
CN117389946A (zh) * 2023-11-09 2024-01-12 合肥灿芯科技有限公司 一种可动态扩展点数的fft实现结构

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1426872A2 (en) * 2002-12-03 2004-06-09 STMicroelectronics Ltd. Linear scalable FFT/IFFT computation in a multi-processor system
CN1663208A (zh) * 2002-06-27 2005-08-31 三星电子株式会社 利用混合基数快速付里叶变换的调制设备
CN101083643A (zh) * 2006-05-31 2007-12-05 中国科学院微电子研究所 一种低存储器开销的混合基fft处理器及其方法
CN101763338A (zh) * 2010-01-08 2010-06-30 浙江大学 一种点数可变的混合基fft/ifft实现装置及其方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1663208A (zh) * 2002-06-27 2005-08-31 三星电子株式会社 利用混合基数快速付里叶变换的调制设备
EP1426872A2 (en) * 2002-12-03 2004-06-09 STMicroelectronics Ltd. Linear scalable FFT/IFFT computation in a multi-processor system
CN101083643A (zh) * 2006-05-31 2007-12-05 中国科学院微电子研究所 一种低存储器开销的混合基fft处理器及其方法
CN101763338A (zh) * 2010-01-08 2010-06-30 浙江大学 一种点数可变的混合基fft/ifft实现装置及其方法

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103440228B (zh) * 2013-08-20 2017-12-22 中国人民解放军国防科学技术大学 一种基于融合乘加指令加速fft计算的方法
CN103440228A (zh) * 2013-08-20 2013-12-11 中国人民解放军国防科学技术大学 一种基于融合乘加指令加速fft计算的方法
CN104679719A (zh) * 2015-03-17 2015-06-03 成都金本华科技股份有限公司 一种基于fpga的浮点运算方法
CN104679721A (zh) * 2015-03-17 2015-06-03 成都金本华科技股份有限公司 一种fft处理器的运算方法
CN104679720A (zh) * 2015-03-17 2015-06-03 成都金本华科技股份有限公司 一种实现fft的运算方法
CN104679719B (zh) * 2015-03-17 2017-11-10 成都金本华科技股份有限公司 一种基于fpga的浮点运算方法
CN104679721B (zh) * 2015-03-17 2017-12-19 成都金本华科技股份有限公司 一种fft处理器的运算方法
CN106339353A (zh) * 2015-07-13 2017-01-18 无锡华润矽科微电子有限公司 一种支持4375点和3780点fft/ifft的方法及其处理器
CN107133194B (zh) * 2017-04-11 2019-11-26 西安电子科技大学 基于混合基底的可配置fft/ifft协处理器
CN107133194A (zh) * 2017-04-11 2017-09-05 西安电子科技大学 基于混合基底的可配置fft/ifft协处理器
CN109039416A (zh) * 2018-09-20 2018-12-18 东南大学 基于矩阵分块的大规模mimo高效检测方法和架构
CN109039416B (zh) * 2018-09-20 2021-06-01 东南大学 基于矩阵分块的大规模mimo高效检测方法和架构
CN113111300A (zh) * 2020-01-13 2021-07-13 上海大学 具有优化资源消耗的定点fft实现架构
CN111506294A (zh) * 2020-04-13 2020-08-07 中国科学院自动化研究所 基于块浮点的fblms算法的fpga实现装置及方法
CN111506294B (zh) * 2020-04-13 2022-07-29 中国科学院自动化研究所 基于块浮点的fblms算法的fpga实现装置及方法
CN111580867A (zh) * 2020-04-30 2020-08-25 中国科学院微电子研究所 一种用于fft运算的块浮点处理方法及装置
CN111580867B (zh) * 2020-04-30 2023-07-18 中国科学院微电子研究所 一种用于fft运算的块浮点处理方法及装置
CN111754393A (zh) * 2020-06-28 2020-10-09 展讯通信(上海)有限公司 图像处理方法、系统、电子设备和介质
CN112487750A (zh) * 2020-11-30 2021-03-12 西安微电子技术研究所 一种基于存内计算的卷积加速计算系统及方法
CN112487750B (zh) * 2020-11-30 2023-06-16 西安微电子技术研究所 一种基于存内计算的卷积加速计算系统及方法
CN117389946A (zh) * 2023-11-09 2024-01-12 合肥灿芯科技有限公司 一种可动态扩展点数的fft实现结构

Similar Documents

Publication Publication Date Title
CN101763338B (zh) 一种点数可变的混合基fft/ifft实现装置及其方法
CN102298570A (zh) 一种点数可变的混合基 fft/ifft实现装置及其方法
CN105701068B (zh) 基于分时复用技术的cholesky矩阵求逆系统
CN101504637B (zh) 一种点数可变实时fft处理芯片
CN103870438B (zh) 一种利用数论变换计算循环卷积的电路结构
CN103927290A (zh) 一种任意阶下三角复矩阵求逆运算方法
CN102043760B (zh) 数据处理方法及系统
CN103955447B (zh) 基于dsp芯片的fft加速器
CN108897716B (zh) 通过存储器读写操作来缩减计算量的数据处理装置及方法
CN101154216B (zh) 用于ofdm载波的调制解调的快速傅立叶变换电路及变换方法
CN109710213A (zh) 一种稀疏矩阵加速计算方法、装置、设备及其系统
CN101937424A (zh) 基于fpga实现高速fft处理的方法
Athalye et al. Generic hardware architectures for sampling and resampling in particle filters
CN108021781A (zh) 一种可参数化的fft ip核设计和优化方法
WO2018027706A1 (zh) Fft处理器及运算方法
CN115133953B (zh) 一种基于pmf-fft算法在fpga上实现信号捕获的方法
CN101650706A (zh) Fft分支计算方法及装置
CN105630741A (zh) 一种改进的按位替换法求矩阵逆矩阵模块
CN108563421A (zh) Fpga运算电路和斯皮尔曼秩次相关系数的求解方法
CN109740740A (zh) 卷积计算的定点加速方法及装置
CN105955896A (zh) 一种可重构dbf算法硬件加速器及控制方法
CN113222129A (zh) 一种基于多级缓存循环利用的卷积运算处理单元及系统
US20150095390A1 (en) Determining a Product Vector for Performing Dynamic Time Warping
CN104268124A (zh) 一种fft实现装置和方法
CN103493039A (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
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20111228