一种大点数fft的实现方法

文档序号:6381034阅读:1849来源:国知局
专利名称:一种大点数fft的实现方法
技术领域
本发明涉及通信领域中进行时频转换的FFT技术。
背景技术
快速傅里叶变换作为时域和频域转换的基本运算,是频谱分析的必要前提,在数字通信、语音信号分析、图象处理、雷达、地震、生物医学工程等数字信号处理领域有着极为广泛的应用。
传统的FFT (傅里叶变换)变换分为三个阶段,首先将输入数据全部存入RAM,之后进行各级蝶形运算,蝶形运算全部完成后再从RAM中输出数据,这样运算一组数据需要的时间即为(载入时间+运算时间+输出时间)。这样在大点数FFT变换中,输入输出会占用大量时间,而此时运算单元则处于空闲状态。现有技术的FFT电路,或采用乒乓存储器来实现连续运算,或在一组数据输出后再运算下一组数据。
因此我们需要一种合理的方法,使得FFT的运算时间能够缩短,并且在使用有限大小存储器的条件下实现连续运算。发明内容
本发明所要解决的技术问题就是缩短运算时间和减少存储器面积进行连续FFT 运算的方法,本发明根据FFT原理,通过合并运算步骤与循环使用存储器,使大点数FFT电路可以缩短运算时间和减少存储器面积。
本发明的目的是这样实现的,它包括步骤
①将一组数据的N-n点数据载入至存储器中,N为一组数据运算的FFT总点数,η 为一组数据中最后载入的数据,点数η的值为Ν/χ,X为蝶形运算基数;
②将一组数据中最后载入的η点数据,直接送至蝶形运算单元,同时读取存储器中的已存入的数据,进行第一级蝶形运算,运算后将第一级蝶形运算结果存回存储器;
③读取存储器中的第一级蝶形运算结果进行下一级蝶形运算,并将下一级蝶形运算结果存回存储器,如此进行蝶形运算和存储M-1次,其中,M为log/ ;同时将外部继续载入下一组数据至存储器进行存储;
④在进行第M级蝶形运算时,将运算结束的X个数据中的第一个数据直接输出到外部,其余x-1个数据原位存回存储器;同时,将外部继续载入下一组数据至输出数据的原存储地址进行存储;
⑤在第一组数据的蝶形运算结束后,返回步骤①进行下一组数据的处理。
其中,第①步中所述存储器的大小为N+m个字节,其中m的值为第二级至第M-1级蝶形运算所需要的时钟周期数。
其中,第①步中所述载入数据为正序输入,第④步 中所述输出数据为逆序输出。
本发明与背景技术相比,具有如下优点
(I)本发明合并了运算步骤,以此缩短转换时间。
(2)本发明通过优化数据存储方式,使用少量缓冲存储器,即可完成连续运算。


图1是运算流程不意图。
图2是不同阶段合并的变换示意图。
图3是载入时存储器整体使用不意图。
图4是输出时存储器整体使用示意图。
具体实施方式
本发明提供了一种大点数FFT的实现方法,如图1所示。以下以一个采用基16的 65536点FFT为实例。
①将一组数据的N-n点数据载入至存储器中,N为一组数据运算的FFT总点数,η 为一组数据中最后载入的数据,点数η的值为Ν/χ,X为蝶形运算基数;
实例中,N为65536,χ为16,η为4096,第①步载入61440点数据至存储器。
②将一组数据中最后载入的η点数据,直接送至蝶形运算单元,同时读取 存储器中的已存入的数据,进行第一级蝶形运算,运算后将第一级蝶形运算结果存回存储器;
实例中,输入部分与第一级蝶算合并如图2上部分所示,最后载入的4096点数据不再存入存储器,直接进行蝶形运算。
存储器使用方法如图3,图4所示。斜线表示未运算数据,方格表示正在进行运算的数据,网格表示等待输出的数据,四个子图中每个标准矩形表示I组4块的4096x32的双端口存储器(RAM)。图3表示载入时存储器的使用方法。左上小图表示第I次载入时,前 61440数据载入后RAM的使用情形,这时只有第4组RAM的后1/4 (也就是最后一块RAM)是空的,并且没有开始变换。右上小图表示载入61440 65536数据的情形,这部分数据没有载入到第4组RAM的后1/4 (也就是最后一块RAM),而是将直接进行第I级变换,当然,变换的结果需要存入这部分RAM。左下、右下两小图为第2、3级变换,在这段时间里,数据被载入到第5组进行缓冲的RAM中。
③读取存储器中的第一级蝶形运算结果进行下一级蝶形运算,并将下一级蝶形运算结果存回存储器,如此进行蝶形运算和存储M-1次,其中,M为log/ ;同时将外部继续载入下一组数据至存储器进行存储;
实例中,M值为4,第③步需要进行2级蝶形运算。
④在进行第M级蝶形运算时,将运算结束的χ个数据中的第一个数据直接输出到外部,其余χ-1个数据原位存回存储器;同时,将外部继续载入下一组数据至输出数据的原存储地址进行存储;
实例中,输出部分与最后一级蝶算合并如图2下部分所示。图4表示输出时存储器的使用方法。左上小图表示第I块RAM中的数据运算后不再存回,直接输出,以便新的数据可以载入。由于这4块数据同时参与运算,所以第2、3、4块RAM的数据被写回原地址保存。这4块RAM运算完成需要4096个时钟周期。4块RAM运算完成后,第I块RAM也完全空了,其它3块RAM则装满了变换结果。如右上小图所示。左下小图表示第4级运算正在进行中,这些运算和第一组的4块RAM中数据的运算同时进行。这4块RAM运算完成也需要4096个时钟周期。4块RAM运算完成后,都装满了变换结果,等待输出。如右下小图所/Jn ο
第4级运算时,第I组(中的第I块)RAM就可以同时输出数据,也能够够载入新 的数据。当第4级运算结束后,第I组RAM开始纯粹的输出。第I组RAM输出完毕后,依次 序是第2、3、4组RAM输出。数据输出的存储单元就可以载入新的数据了。
⑤在第一组数据的蝶形运算结束后,返回步骤①进行下一组数据的处理。
权利要求
1.一种大点数FFT的实现方法,其特征在于包括步骤 ①将一组数据的N-n点数据载入至存储器中,N为一组数据运算的FFT总点数,η为一组数据中最后载入的数据,点数η的值为Ν/χ,X为蝶形运算基数; ②将一组数据中最后载入的η点数据,直接送至蝶形运算单元,同时读取存储器中的已存入的数据,进行第一级蝶形运算,运算后将第一级蝶形运算结果存回存储器; ③读取存储器中的第一级蝶形运算结果进行下一级蝶形运算,并将下一级蝶形运算结果存回存储器,如此进行蝶形运算和存储M-1次,其中,M为log/ ;同时将外部继续载入下一组数据至存储器进行存储; ④在进行第M级蝶形运算时,将运算结束的X个数据中的第一个数据直接输出到外部,其余x-1个数据原位存回存储器;同时,将外部继续载入下一组数据至输出数据的原存储地址进行存储; ⑤在第一组数据的蝶形运算结束后,返回步骤①进行下一组数据的处理。
2.根据权利要求1所述的一种大点数FFT的实现方法,其特征在于 存储器的大小为N+m个字节,其中m的值为第二级至第M-1级蝶形运算所需要的时钟周期数。
3.根据权利要求1所述的一种大点数FFT的实现方法,其特征在于 第①步中所述载入数据为正序输入,第④步中所述输出数据为逆序输出。
全文摘要
本发明公开了一种大点数FFT的实现方法,适用于快速连续运算的大点数FFT电路。本发明根据FFT运算特点,在载入数据的后期同时完成第一级蝶算,在进行最后一级蝶算的同时输出数据,通过将数据的两级运算合并至载入与输出来减少每组数据的运算时间。在逆序输出第一组数据时向同一块存储器写入第二组数据,并以此类推,循环使用双端口存储器实现连续运算。应用本方法,优点是能够有效减少电路面积,提高运算速度。本发明适用于要求快速连续运算的大点数的FFT电路。
文档编号G06F17/14GK103020014SQ20121044878
公开日2013年4月3日 申请日期2012年11月12日 优先权日2012年11月12日
发明者张勇, 孙雪晶, 常迎辉, 曹纯, 杜克明 申请人:中国电子科技集团公司第五十四研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1