專利名稱:一種大點(diǎn)數(shù)fft的實現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域中進(jìn)行時頻轉(zhuǎn)換的FFT技術(shù)。
背景技術(shù):
快速傅里葉變換作為時域和頻域轉(zhuǎn)換的基本運(yùn)算,是頻譜分析的必要前提,在數(shù)字通信、語音信號分析、圖象處理、雷達(dá)、地震、生物醫(yī)學(xué)工程等數(shù)字信號處理領(lǐng)域有著極為廣泛的應(yīng)用。
傳統(tǒng)的FFT (傅里葉變換)變換分為三個階段,首先將輸入數(shù)據(jù)全部存入RAM,之后進(jìn)行各級蝶形運(yùn)算,蝶形運(yùn)算全部完成后再從RAM中輸出數(shù)據(jù),這樣運(yùn)算一組數(shù)據(jù)需要的時間即為(載入時間+運(yùn)算時間+輸出時間)。這樣在大點(diǎn)數(shù)FFT變換中,輸入輸出會占用大量時間,而此時運(yùn)算單元則處于空閑狀態(tài)?,F(xiàn)有技術(shù)的FFT電路,或采用乒乓存儲器來實現(xiàn)連續(xù)運(yùn)算,或在一組數(shù)據(jù)輸出后再運(yùn)算下一組數(shù)據(jù)。
因此我們需要一種合理的方法,使得FFT的運(yùn)算時間能夠縮短,并且在使用有限大小存儲器的條件下實現(xiàn)連續(xù)運(yùn)算。發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題就是縮短運(yùn)算時間和減少存儲器面積進(jìn)行連續(xù)FFT 運(yùn)算的方法,本發(fā)明根據(jù)FFT原理,通過合并運(yùn)算步驟與循環(huán)使用存儲器,使大點(diǎn)數(shù)FFT電路可以縮短運(yùn)算時間和減少存儲器面積。
本發(fā)明的目的是這樣實現(xiàn)的,它包括步驟
①將一組數(shù)據(jù)的N-n點(diǎn)數(shù)據(jù)載入至存儲器中,N為一組數(shù)據(jù)運(yùn)算的FFT總點(diǎn)數(shù),η 為一組數(shù)據(jù)中最后載入的數(shù)據(jù),點(diǎn)數(shù)η的值為Ν/χ,X為蝶形運(yùn)算基數(shù);
②將一組數(shù)據(jù)中最后載入的η點(diǎn)數(shù)據(jù),直接送至蝶形運(yùn)算單元,同時讀取存儲器中的已存入的數(shù)據(jù),進(jìn)行第一級蝶形運(yùn)算,運(yùn)算后將第一級蝶形運(yùn)算結(jié)果存回存儲器;
③讀取存儲器中的第一級蝶形運(yùn)算結(jié)果進(jìn)行下一級蝶形運(yùn)算,并將下一級蝶形運(yùn)算結(jié)果存回存儲器,如此進(jìn)行蝶形運(yùn)算和存儲M-1次,其中,M為log/ ;同時將外部繼續(xù)載入下一組數(shù)據(jù)至存儲器進(jìn)行存儲;
④在進(jìn)行第M級蝶形運(yùn)算時,將運(yùn)算結(jié)束的X個數(shù)據(jù)中的第一個數(shù)據(jù)直接輸出到外部,其余x-1個數(shù)據(jù)原位存回存儲器;同時,將外部繼續(xù)載入下一組數(shù)據(jù)至輸出數(shù)據(jù)的原存儲地址進(jìn)行存儲;
⑤在第一組數(shù)據(jù)的蝶形運(yùn)算結(jié)束后,返回步驟①進(jìn)行下一組數(shù)據(jù)的處理。
其中,第①步中所述存儲器的大小為N+m個字節(jié),其中m的值為第二級至第M-1級蝶形運(yùn)算所需要的時鐘周期數(shù)。
其中,第①步中所述載入數(shù)據(jù)為正序輸入,第④步 中所述輸出數(shù)據(jù)為逆序輸出。
本發(fā)明與背景技術(shù)相比,具有如下優(yōu)點(diǎn)
(I)本發(fā)明合并了運(yùn)算步驟,以此縮短轉(zhuǎn)換時間。
(2)本發(fā)明通過優(yōu)化數(shù)據(jù)存儲方式,使用少量緩沖存儲器,即可完成連續(xù)運(yùn)算。
圖1是運(yùn)算流程不意圖。
圖2是不同階段合并的變換示意圖。
圖3是載入時存儲器整體使用不意圖。
圖4是輸出時存儲器整體使用示意圖。
具體實施方式
本發(fā)明提供了一種大點(diǎn)數(shù)FFT的實現(xiàn)方法,如圖1所示。以下以一個采用基16的 65536點(diǎn)FFT為實例。
①將一組數(shù)據(jù)的N-n點(diǎn)數(shù)據(jù)載入至存儲器中,N為一組數(shù)據(jù)運(yùn)算的FFT總點(diǎn)數(shù),η 為一組數(shù)據(jù)中最后載入的數(shù)據(jù),點(diǎn)數(shù)η的值為Ν/χ,X為蝶形運(yùn)算基數(shù);
實例中,N為65536,χ為16,η為4096,第①步載入61440點(diǎn)數(shù)據(jù)至存儲器。
②將一組數(shù)據(jù)中最后載入的η點(diǎn)數(shù)據(jù),直接送至蝶形運(yùn)算單元,同時讀取 存儲器中的已存入的數(shù)據(jù),進(jìn)行第一級蝶形運(yùn)算,運(yùn)算后將第一級蝶形運(yùn)算結(jié)果存回存儲器;
實例中,輸入部分與第一級蝶算合并如圖2上部分所示,最后載入的4096點(diǎn)數(shù)據(jù)不再存入存儲器,直接進(jìn)行蝶形運(yùn)算。
存儲器使用方法如圖3,圖4所示。斜線表示未運(yùn)算數(shù)據(jù),方格表示正在進(jìn)行運(yùn)算的數(shù)據(jù),網(wǎng)格表示等待輸出的數(shù)據(jù),四個子圖中每個標(biāo)準(zhǔn)矩形表示I組4塊的4096x32的雙端口存儲器(RAM)。圖3表示載入時存儲器的使用方法。左上小圖表示第I次載入時,前 61440數(shù)據(jù)載入后RAM的使用情形,這時只有第4組RAM的后1/4 (也就是最后一塊RAM)是空的,并且沒有開始變換。右上小圖表示載入61440 65536數(shù)據(jù)的情形,這部分?jǐn)?shù)據(jù)沒有載入到第4組RAM的后1/4 (也就是最后一塊RAM),而是將直接進(jìn)行第I級變換,當(dāng)然,變換的結(jié)果需要存入這部分RAM。左下、右下兩小圖為第2、3級變換,在這段時間里,數(shù)據(jù)被載入到第5組進(jìn)行緩沖的RAM中。
③讀取存儲器中的第一級蝶形運(yùn)算結(jié)果進(jìn)行下一級蝶形運(yùn)算,并將下一級蝶形運(yùn)算結(jié)果存回存儲器,如此進(jìn)行蝶形運(yùn)算和存儲M-1次,其中,M為log/ ;同時將外部繼續(xù)載入下一組數(shù)據(jù)至存儲器進(jìn)行存儲;
實例中,M值為4,第③步需要進(jìn)行2級蝶形運(yùn)算。
④在進(jìn)行第M級蝶形運(yùn)算時,將運(yùn)算結(jié)束的χ個數(shù)據(jù)中的第一個數(shù)據(jù)直接輸出到外部,其余χ-1個數(shù)據(jù)原位存回存儲器;同時,將外部繼續(xù)載入下一組數(shù)據(jù)至輸出數(shù)據(jù)的原存儲地址進(jìn)行存儲;
實例中,輸出部分與最后一級蝶算合并如圖2下部分所示。圖4表示輸出時存儲器的使用方法。左上小圖表示第I塊RAM中的數(shù)據(jù)運(yùn)算后不再存回,直接輸出,以便新的數(shù)據(jù)可以載入。由于這4塊數(shù)據(jù)同時參與運(yùn)算,所以第2、3、4塊RAM的數(shù)據(jù)被寫回原地址保存。這4塊RAM運(yùn)算完成需要4096個時鐘周期。4塊RAM運(yùn)算完成后,第I塊RAM也完全空了,其它3塊RAM則裝滿了變換結(jié)果。如右上小圖所示。左下小圖表示第4級運(yùn)算正在進(jìn)行中,這些運(yùn)算和第一組的4塊RAM中數(shù)據(jù)的運(yùn)算同時進(jìn)行。這4塊RAM運(yùn)算完成也需要4096個時鐘周期。4塊RAM運(yùn)算完成后,都裝滿了變換結(jié)果,等待輸出。如右下小圖所/Jn ο
第4級運(yùn)算時,第I組(中的第I塊)RAM就可以同時輸出數(shù)據(jù),也能夠夠載入新 的數(shù)據(jù)。當(dāng)?shù)?級運(yùn)算結(jié)束后,第I組RAM開始純粹的輸出。第I組RAM輸出完畢后,依次 序是第2、3、4組RAM輸出。數(shù)據(jù)輸出的存儲單元就可以載入新的數(shù)據(jù)了。
⑤在第一組數(shù)據(jù)的蝶形運(yùn)算結(jié)束后,返回步驟①進(jìn)行下一組數(shù)據(jù)的處理。
權(quán)利要求
1.一種大點(diǎn)數(shù)FFT的實現(xiàn)方法,其特征在于包括步驟 ①將一組數(shù)據(jù)的N-n點(diǎn)數(shù)據(jù)載入至存儲器中,N為一組數(shù)據(jù)運(yùn)算的FFT總點(diǎn)數(shù),η為一組數(shù)據(jù)中最后載入的數(shù)據(jù),點(diǎn)數(shù)η的值為Ν/χ,X為蝶形運(yùn)算基數(shù); ②將一組數(shù)據(jù)中最后載入的η點(diǎn)數(shù)據(jù),直接送至蝶形運(yùn)算單元,同時讀取存儲器中的已存入的數(shù)據(jù),進(jìn)行第一級蝶形運(yùn)算,運(yùn)算后將第一級蝶形運(yùn)算結(jié)果存回存儲器; ③讀取存儲器中的第一級蝶形運(yùn)算結(jié)果進(jìn)行下一級蝶形運(yùn)算,并將下一級蝶形運(yùn)算結(jié)果存回存儲器,如此進(jìn)行蝶形運(yùn)算和存儲M-1次,其中,M為log/ ;同時將外部繼續(xù)載入下一組數(shù)據(jù)至存儲器進(jìn)行存儲; ④在進(jìn)行第M級蝶形運(yùn)算時,將運(yùn)算結(jié)束的X個數(shù)據(jù)中的第一個數(shù)據(jù)直接輸出到外部,其余x-1個數(shù)據(jù)原位存回存儲器;同時,將外部繼續(xù)載入下一組數(shù)據(jù)至輸出數(shù)據(jù)的原存儲地址進(jìn)行存儲; ⑤在第一組數(shù)據(jù)的蝶形運(yùn)算結(jié)束后,返回步驟①進(jìn)行下一組數(shù)據(jù)的處理。
2.根據(jù)權(quán)利要求1所述的一種大點(diǎn)數(shù)FFT的實現(xiàn)方法,其特征在于 存儲器的大小為N+m個字節(jié),其中m的值為第二級至第M-1級蝶形運(yùn)算所需要的時鐘周期數(shù)。
3.根據(jù)權(quán)利要求1所述的一種大點(diǎn)數(shù)FFT的實現(xiàn)方法,其特征在于 第①步中所述載入數(shù)據(jù)為正序輸入,第④步中所述輸出數(shù)據(jù)為逆序輸出。
全文摘要
本發(fā)明公開了一種大點(diǎn)數(shù)FFT的實現(xiàn)方法,適用于快速連續(xù)運(yùn)算的大點(diǎn)數(shù)FFT電路。本發(fā)明根據(jù)FFT運(yùn)算特點(diǎn),在載入數(shù)據(jù)的后期同時完成第一級蝶算,在進(jìn)行最后一級蝶算的同時輸出數(shù)據(jù),通過將數(shù)據(jù)的兩級運(yùn)算合并至載入與輸出來減少每組數(shù)據(jù)的運(yùn)算時間。在逆序輸出第一組數(shù)據(jù)時向同一塊存儲器寫入第二組數(shù)據(jù),并以此類推,循環(huán)使用雙端口存儲器實現(xiàn)連續(xù)運(yùn)算。應(yīng)用本方法,優(yōu)點(diǎn)是能夠有效減少電路面積,提高運(yùn)算速度。本發(fā)明適用于要求快速連續(xù)運(yùn)算的大點(diǎn)數(shù)的FFT電路。
文檔編號G06F17/14GK103020014SQ20121044878
公開日2013年4月3日 申請日期2012年11月12日 優(yōu)先權(quán)日2012年11月12日
發(fā)明者張勇, 孫雪晶, 常迎輝, 曹純, 杜克明 申請人:中國電子科技集團(tuán)公司第五十四研究所