当前位置: 首页 > 专利查询>浙江大学专利>正文

一种点数可变的混合基FFT/IFFT实现装置及其方法制造方法及图纸

技术编号:3748458 阅读:348 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种点数可变的混合基FFT/IFFT实现装置及其方法。本发明专利技术为FFT和IFFT两用系统,实现了点数可配;在变换过程中使用两块RAM,一块只存储输入数据,在每一次运算完成其第一级蝶形运算时,该RAM可以用来接受下次运算的数据,在完成连续多次运算时,节省了时间;另外使用了基4和基2相结合的方法实现2的L次幂(L为大于或等于3的正整数)点数的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(Nlog2N),解决了数字信号处理实现和应用的瓶颈,具有很强的理论和工程意义。在目前数字信号处理的各个应用领域中,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与输出数据变换模块相连,移位模块与数据选择器相连;在控制模块控制下,将串行输入数据变换后存储到存储模块A,然后控制模块控制存储模块A中所有数据完成第一级蝶形运算,结果完成溢出检测,同时也存入存储模块B;当存储模块A中所有数据均完成了第一级蝶形运算后,控制模块向外给出存储模块A空闲可用的标志信号,预示着下一次运算数据可以输入,同时控制模块控制移位模块、存储模块B、蝶形运算模块以及溢出检测模块完成接下来的所有蝶形运算;当所有蝶形运算全部完成之后,控制模块控制存储模块B、输出数据变换模块,将存储模块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中所有数据完成蝶形运算,此时最大的溢出本文档来自技高网
...

【技术保护点】
一种点数可变的混合基FFT/IFFT实现装置,其特征在于,包括模块:输入数据变换模块、存储模块A、数据选择器、蝶形运算模块、溢出检测模块、存储模块B、移位模块、输出数据变换模块以及控制模块,输入数据变换模块与存储模块A、数据选择器、蝶形运算模块、溢出检测模块、存储模块B、移位模块依次连接,存储模块B与输出数据变换模块相连,移位模块与数据选择器相连;在控制模块控制下,将串行输入数据变换后存储到存储模块A,然后控制模块控制存储模块A中所有数据完成第一级蝶形运算,结果完成溢出检测,同时也存入存储模块B;当存储模块A中所有数据均完成了第一级蝶形运算后,控制模块向外给出存储模块A空闲可用的标志信号,预示着下一次运算数据可以输入,同时控制模块控制移位模块、存储模块B、蝶形运算模块以及溢出检测模块完成接下来的所有蝶形运算;当所有蝶形运算全部完成之后,控制模块控制存储模块B、输出数据变换模块,将存储模块B中的数据串行读出经过移位、实部虚部变换后输出最终的块浮点运算结果,当存储模块B中数据全部输出后,输出数据变换模块向控制模块给出存储模块B空闲可用标志信号,新一次FFT/IFFT运算开始进行。

【技术特征摘要】

【专利技术属性】
技术研发人员:李云飞赵民建王勇松侯维玮李立言王悦
申请(专利权)人:浙江大学
类型:发明
国别省市:86[中国|杭州]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1