專利名稱:一種可變點(diǎn)數(shù)流水線fft處理器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于信號處理技術(shù)領(lǐng)域,涉及一種信號處理器,特別是涉及 一種超長可變點(diǎn)數(shù)流水線FFT處理器,可應(yīng)用于通信或電子戰(zhàn)等各種輸 入序列長度實(shí)時(shí)可變且芯片面積約束較高的系統(tǒng)。
背景技術(shù):
在電子偵察中,雷達(dá)信號覆蓋了較寬的頻率范圍,為了能夠識(shí)別不同 的雷達(dá)信號,電子戰(zhàn)接收機(jī)必須在較寬的帶寬上具有較高的頻率分辨率。 離散傅立葉變換(DFT)理論指出,利用DFT進(jìn)行譜分析時(shí),頻率分辨率 等于X/W,其中乂為采樣頻率,N為數(shù)據(jù)總點(diǎn)數(shù)。因此,為使電子戰(zhàn)接收
機(jī)達(dá)到較高的頻率分辨率,要求FFT處理器能夠處理超長的輸入序列,如 1M點(diǎn)數(shù)的FFT。
在取得雷達(dá)信號的基本參數(shù)后,進(jìn)行FFT變換的序列長度應(yīng)該和雷達(dá) 信號的脈沖寬度相匹S己。因?yàn)槿绻杉臄?shù)據(jù)長度比輸入脈沖寬度大得多, 那么額外的數(shù)據(jù)就只包括噪聲。所以為了能夠處理具有不同參數(shù)的雷達(dá)信 號,要求FFT處理器能夠處理不同長度的序列,即FFT的點(diǎn)數(shù)是可變的。
另外,對以電子偵察為背景的應(yīng)用中,對于運(yùn)算速度有嚴(yán)格要求,要 求FFT處理器能夠?qū)崟r(shí)地對輸入數(shù)據(jù)進(jìn)行處理。
綜上所述,在電子戰(zhàn)領(lǐng)域需要FFT處理器能夠?qū)崟r(shí)地處理超長可變點(diǎn) 數(shù)序列,同樣在現(xiàn)代通信領(lǐng)域也有此要求。
超長可變點(diǎn)FFT的實(shí)現(xiàn)一直是人們致力解決的問題。數(shù)字信號處理 (DSP)芯片具有乘加單元,特別適合于完成FFT運(yùn)算,并且使用軟件編 程,具有較大的靈活性。但是也有其不足之處單個(gè)DSP芯片的計(jì)算能力 有限,不適合于實(shí)現(xiàn)超長點(diǎn)數(shù)的FFT;可以采用多個(gè)DSP芯片并行計(jì)算, 但這種方案增加了設(shè)計(jì)的復(fù)雜性,功耗大;數(shù)據(jù)倒序處理也花費(fèi)處理器的 大量時(shí)間;由于DSP芯片具有有限的帶寬,數(shù)據(jù)的輸入輸出可能成為其高 速運(yùn)行的瓶頸。與DSP芯片不同,專用集成電路(ASIC)或現(xiàn)場可編程門陣列(FPGA)實(shí)現(xiàn)FFT算法可以針對具體的應(yīng)用環(huán)境選擇使用與特定的 問題相適應(yīng)的結(jié)構(gòu),以利于資源優(yōu)化。
然而,在ASIC或FPGA上實(shí)現(xiàn)輸入序列長度超長或可變的實(shí)時(shí)FFT 還面臨著芯片資源有限、計(jì)算精度等問題。
對于大點(diǎn)數(shù)的FFT處理器, 一般使用遞歸或級聯(lián)等傳統(tǒng)結(jié)構(gòu)。在文獻(xiàn) "A modular pipelined implementation of large fast Fourier transforms"
(El-Khashab, A.M.; Swartzlander, E.E., Jr.; Signals, Systems and Computers, 2002. Conference Record of the Thirty-Sixth Asilomar Conference on,2002,vol.2:995-999)提出了一種改進(jìn)的流水線型結(jié)構(gòu),通過存儲(chǔ)器和加 權(quán)(乘以旋轉(zhuǎn)因子)單元連接兩個(gè)小點(diǎn)數(shù)的FFT單元,在計(jì)算大點(diǎn)數(shù)FFT 時(shí)可以減小系統(tǒng)對延時(shí)存儲(chǔ)單元和旋轉(zhuǎn)因子存儲(chǔ)器的需求,但其可計(jì)算的 FFT的長度是固定的。在文獻(xiàn)"A pipeline processor for mixed-size FFTs"
(Sayegh, S丄;Signal Processing, IEEE Trans on, 1992, Vol.40(8): 1892-1900.) 提出一種流水線型結(jié)構(gòu),可以同時(shí)計(jì)算不同點(diǎn)數(shù)的FFT,其缺點(diǎn)是點(diǎn)數(shù)較 大時(shí),電路規(guī)模過于龐大。在文獻(xiàn)"可變2"點(diǎn)流水線FFT處理器的設(shè)計(jì)與 實(shí)現(xiàn),,(高振斌,陳禾.北京理工大學(xué)學(xué)報(bào),2005年03期)提及了一種可以 連續(xù)計(jì)算2"點(diǎn)復(fù)數(shù)序列FFT的流水線結(jié)構(gòu)處理器,但其因采用傳統(tǒng)級耳關(guān)方 法實(shí)現(xiàn)流水線FFT處理,占用存儲(chǔ)資源高,難以于單芯片中實(shí)現(xiàn)。在文獻(xiàn) "A pipelined memory-efficient architecture for ultra-long variable-size FFT processors" ( Chen He;Wu Qiang;2008 International Conference on Computer Science and Information Technology, 2008,p357-61 )提及了 一種可以連續(xù)計(jì) 算4"點(diǎn)復(fù)數(shù)序列FFT的流水線結(jié)構(gòu)處理器,但其不能進(jìn)行任意2"點(diǎn)復(fù)數(shù) 序列FFT的流水線處理。
發(fā)明內(nèi)容
本發(fā)明的目的是為了克服已有技術(shù)的缺陷,解決如下問題可實(shí)時(shí)處 理最大1M點(diǎn)的FFT、在保證處理數(shù)據(jù)精度的前提下達(dá)到系統(tǒng)要求的處理 速度、可在單芯片ASIC或FPGA上實(shí)現(xiàn),提出一種可變點(diǎn)數(shù)FFT運(yùn)算處 理器。
本發(fā)明所基于的工作原理如下基-2快速傅里葉變換
設(shè)^ = 2〃 (/ >1),將輸入序列、分為下標(biāo)為偶數(shù)和奇數(shù)序列X2 , x2"+i,于是N點(diǎn)DFT就成為<formula>formula see original document page 6</formula>(公式1 )
這種方法稱為時(shí)間抽取法,按照上述方法可以繼續(xù)將序列分割成小序 列,直到每個(gè)序列只有兩個(gè)成員。
在應(yīng)用中,基-2快速傅里葉變換遞推算法可以更為直觀地體現(xiàn)出數(shù)據(jù) 尋址和旋轉(zhuǎn)因子尋址的規(guī)律,設(shè)被處理的數(shù)據(jù)長度為2、遞推算法為 <w」二 x~J +心<formula>formula see original document page 6</formula>
(公式2 )
其中
s為蝶型運(yùn)算所處的級數(shù),^0,1,2,3,……
6, =o,i,……,2' -l; 62 =o,i,……,2"-] - i;
對于旋轉(zhuǎn)因子『,,其含義為e—^',再做如下變換:
<formula>formula see original document page 6</formula>
(公式3)
一般的數(shù)據(jù)地址變換器以及旋轉(zhuǎn)因子地址變換全部是由這個(gè)遞推公式 演變出來的。
二維快速傅里葉變換
對于超長可變點(diǎn)實(shí)時(shí)FFT處理,如果直接采用級聯(lián)方式,用"乒乓" 存儲(chǔ)器構(gòu)成流水線結(jié)構(gòu),則每級均需要大量存儲(chǔ)器,系統(tǒng)規(guī)模過于龐大。 可以把一維傅里葉變換轉(zhuǎn)換為二維變換進(jìn)行,既提高了系統(tǒng)并行程度,又 減少了系統(tǒng)對存儲(chǔ)器容量的需求。假設(shè)7V是一復(fù)合數(shù),7V=M>^,則可將w和yt分別用下面的公式表示: 則有
柳
根據(jù)此式,可以得到將一維大點(diǎn)數(shù)FFT轉(zhuǎn)換為二維小點(diǎn)數(shù)子FFT處理 的方法對于iV=MxL點(diǎn)FFT,將數(shù)據(jù)排為i行M列,先對序列進(jìn)行M次 列變換點(diǎn)FFT),結(jié)果乘以旋轉(zhuǎn)因子^^。后,再進(jìn)行Z次行變換 點(diǎn)FFT)即可。
基于上述工作原理,本發(fā)明所采用的技術(shù)方案是
一種可變點(diǎn)數(shù)流水線FFT處理器,由下述模塊組成第一 1024點(diǎn)可 變FFT處理模塊、旋轉(zhuǎn)因子處理模塊、第二 1024點(diǎn)可變FFT處理模塊、 選擇與控制模塊。
(1 )第一、第二 1024點(diǎn)可變FFT處理模塊
用于實(shí)現(xiàn)大點(diǎn)數(shù)FFT的二維小點(diǎn)數(shù)處理,可實(shí)時(shí)地進(jìn)行1024可變點(diǎn) 的FFT處理。
兩個(gè)模塊的結(jié)構(gòu)組成相同,每一個(gè)1024點(diǎn)可變FFT處理模塊均包3舌 第一 32點(diǎn)可變FFT處理子模塊、第二 32點(diǎn)可變FFT處理子模塊、旋轉(zhuǎn)因 子處理子模塊、中間數(shù)據(jù)存儲(chǔ)子模塊、選擇與控制子模塊。
其中,32點(diǎn)可變FFT處理子才莫塊中每級基-2運(yùn)算單元加入輸出選4李電 路,通過控制可實(shí)現(xiàn)可變點(diǎn)FFT計(jì)算,且32點(diǎn)FFT處理采用塊浮點(diǎn)定標(biāo) 方式,獲得較高處理精度。
第一、第二32點(diǎn)可變FFT處理子模塊均用于進(jìn)行2點(diǎn)、4點(diǎn)、8點(diǎn)、 16點(diǎn)或32點(diǎn)可變實(shí)時(shí)FFT處理。
旋轉(zhuǎn)因子處理子模塊用于完成二維FFT處理的中間旋轉(zhuǎn)因子的產(chǎn)生, 并將中間旋轉(zhuǎn)因子同第一 32點(diǎn)可變FFT處理子模塊的處理結(jié)果相乘。
中間數(shù)椐存儲(chǔ)子模塊用于存儲(chǔ)第一 32點(diǎn)可變FFT處理子模塊的處理
其中<formula>formula see original document page 7</formula>
(公式4 )結(jié)果,并將其作為第二 32點(diǎn)可變FFT處理子模塊的輸入??赏ㄟ^兩個(gè)1024 點(diǎn)數(shù)據(jù)存儲(chǔ)器進(jìn)行"乒乓"存儲(chǔ)來實(shí)現(xiàn)。
選擇與控制子模塊用于產(chǎn)生第一和第二 32點(diǎn)可變FFT處理子模塊、 旋轉(zhuǎn)因子處理子模塊、中間數(shù)據(jù)存儲(chǔ)子模塊的選擇與控制信號。
連接關(guān)系為第一32點(diǎn)可變FFT處理子模塊、旋轉(zhuǎn)因子處理子模塊、 中間數(shù)據(jù)存儲(chǔ)子模塊、第二 32點(diǎn)可變FFT處理子模塊依次相連,選擇與 控制子模塊與上述各個(gè)模塊分別相連。
(2) 旋轉(zhuǎn)因子處理模塊
完成二維FFT處理的中間旋轉(zhuǎn)因子的產(chǎn)生,并將中間旋轉(zhuǎn)因子同第一 1024點(diǎn)可變FFT處理子模塊的處理結(jié)果相乘,以便進(jìn)行二維運(yùn)算。
(3) 選擇與控制模塊
用于產(chǎn)生各種控制信號,對各個(gè)模塊進(jìn)行控制與協(xié)調(diào),保證整個(gè)芯片 能夠正常工作。
上述組成模塊間的連接關(guān)系如下
第一 1024點(diǎn)可變FFT處理模塊中的第二 32點(diǎn)可變FFT處理子才莫塊和 旋轉(zhuǎn)因子處理模塊相連,旋轉(zhuǎn)因子處理模塊另一端與FFT處理器外部的中 間數(shù)椐存儲(chǔ)模塊相連,處理器外部的中間數(shù)據(jù)存儲(chǔ)模塊的另 一端與第二 1024點(diǎn)可變FFT處理模塊中的第一 32點(diǎn)可變FFT處理子模塊相連,選擇 與控制模塊分別與第一 1024點(diǎn)可變FFT處理模塊中的選擇與控制子模塊、 旋轉(zhuǎn)因子處理模塊、FFT處理器外部的中間數(shù)據(jù)存儲(chǔ)模塊、第二 1024點(diǎn)可 變FFT處理模塊中的選擇與控制子模塊相連。
上述模塊之間的信號轉(zhuǎn)換關(guān)系為
W點(diǎn)輸入序列進(jìn)入處理器的第一 1024點(diǎn)可變FFT處理^^莫塊進(jìn)^"小點(diǎn) 數(shù)FFT運(yùn)算。
其中,在第一 1024點(diǎn)可變FFT處理模塊內(nèi)部,先在第一 32點(diǎn)可變FFT 處理孚模塊內(nèi)進(jìn)行2"("S5)點(diǎn)FFT運(yùn)算,處理結(jié)果送入旋轉(zhuǎn)因子處理子模 塊中與旋轉(zhuǎn)因子相乘,以便進(jìn)行二維運(yùn)算處理。相乘后的結(jié)果送到中間數(shù) 據(jù)存儲(chǔ)子模塊進(jìn)行存儲(chǔ)。當(dāng)所有的點(diǎn)數(shù)據(jù)全部處理完畢之后,送入第二32 點(diǎn)可變FFT處理子模塊中再次進(jìn)行2"0 S 5)點(diǎn)FFT運(yùn)算。
若N小于等于1024時(shí),處理過程到此結(jié)束,第一 1024點(diǎn)可變FFT處理模塊的處理結(jié)果直接輸出。若N大于1024時(shí),則將第一 1024點(diǎn)可變FFT 處理模塊的處理結(jié)果送入旋轉(zhuǎn)因子處理模塊中,與此處的旋轉(zhuǎn)因子相乘。 相乘結(jié)果送到處理器外部的中間數(shù)據(jù)存儲(chǔ)模塊中進(jìn)行存儲(chǔ)。當(dāng)W點(diǎn)數(shù)據(jù)的 相乘結(jié)果全部到達(dá)后,將全部數(shù)據(jù)送入第二 1024點(diǎn)可變FFT處理模塊, 數(shù)據(jù)在第二 1024點(diǎn)可變FFT處理模塊中進(jìn)行2,'0 S 5)點(diǎn)FFT運(yùn)算。運(yùn)算 方法與第一 32點(diǎn)可變FFT處理子模塊內(nèi)的方法相同。運(yùn)算結(jié)束之后,將 第二 1024點(diǎn)可變FFT處理模塊結(jié)果輸出。 有益效果
本發(fā)明提出的一種可變點(diǎn)數(shù)流水線FFT處理器,對比已有技術(shù)
(1) 可實(shí)時(shí)流水處理輸入序列數(shù)據(jù),并實(shí)時(shí)更新輸出數(shù)據(jù);
(2) 處理器存儲(chǔ)資源大大降低,芯片面積減少,可在單片F(xiàn)PGA或 ASIC中實(shí)現(xiàn)。由于存儲(chǔ)資源的減少,對存儲(chǔ)器的操作減少,因此本發(fā)明的 運(yùn)算時(shí)間加快;
(3) 可實(shí)時(shí)實(shí)現(xiàn)W點(diǎn)(W=2P , Kp^20 )可變FFT處理;
(4) 采用塊浮點(diǎn)定標(biāo)方式,使得FFT處理器運(yùn)算結(jié)果的精度較高。
圖1 可變點(diǎn)FFT處理器結(jié)構(gòu)框圖2 1024點(diǎn)可變FFT處理器結(jié)構(gòu)框圖3 32點(diǎn)可變基-2流水線結(jié)構(gòu);
圖4 CORDIC算法實(shí)現(xiàn)旋轉(zhuǎn)因子處理。
具體實(shí)施例方式
下面結(jié)合附圖對本發(fā)明的優(yōu)選實(shí)施方式做詳細(xì)說明。 一種可變點(diǎn)數(shù)流水線FFT處理器,包括以下部分第一和第二 1024 點(diǎn)可變FFT處理模塊、旋轉(zhuǎn)因子處理模塊、選擇與控制模塊,如圖1所 示。處理器可在單芯片ASIC或FPGA內(nèi)完成處理器外的中間數(shù)據(jù)存^f諸 模塊為兩個(gè)1M點(diǎn)數(shù)據(jù)存儲(chǔ)器,數(shù)據(jù)存儲(chǔ)器的工作模式為"乒乓"存儲(chǔ), 有利于數(shù)據(jù)的實(shí)時(shí)處理。(1)第一、第二 1024點(diǎn)可變FFT處理模塊
為了降低存儲(chǔ)資源,第一、第二 1024點(diǎn)可變fft處理;漢塊均采用二維 處理方式。每個(gè)1024點(diǎn)可變fft處理模塊均由5個(gè)子模塊組成第一 32 點(diǎn)可變fft處理子模塊、第二32點(diǎn)可變fft處理子模塊、旋轉(zhuǎn)因子處理 子模塊、中間數(shù)據(jù)存儲(chǔ)子模塊、選擇與控制子模塊,如圖2所示。
其中,第一32點(diǎn)可變fft處理子模塊、旋轉(zhuǎn)因子處理子模塊、中間數(shù) 據(jù)存儲(chǔ)子模塊、第二32點(diǎn)可變fft處理子模塊依次相連。第一、第二32 點(diǎn)可變fft處理子模塊分別采用級聯(lián)流水線結(jié)構(gòu),如圖3所示。其它子模 塊均采用"乒乓,,存儲(chǔ)結(jié)構(gòu),以利于數(shù)據(jù)的實(shí)時(shí)4喿作。
第一、第二32點(diǎn)可變fft處理子模塊均用于進(jìn)行2點(diǎn)、4點(diǎn)、8點(diǎn)、 16點(diǎn)或32點(diǎn)的實(shí)時(shí)fft處理。當(dāng)進(jìn)行點(diǎn)數(shù)可變fft運(yùn)算時(shí),選擇與控制 子模塊首先根據(jù)該模塊所分配的點(diǎn)數(shù)來激活相應(yīng)的處理單元。當(dāng)進(jìn)行2點(diǎn)、 4點(diǎn)、8點(diǎn)、16點(diǎn)或32點(diǎn)fft運(yùn)算時(shí),只需激活第一 32點(diǎn)可變fft處理 子模塊。如果點(diǎn)數(shù)超過32,則再激活其他子模塊。
為采用基-2fft算法,32點(diǎn)fft的處理過程分為五級運(yùn)算單元,每級 基-2運(yùn)算單元均增加輸出選擇控制電路,根據(jù)電路輸入點(diǎn)數(shù)的不同,由選 擇與控制子模塊來控制數(shù)據(jù)由五級中的哪一級輸出,從而達(dá)到點(diǎn)數(shù)可變的 目的。在數(shù)據(jù)輸出之前,對輸出數(shù)據(jù)進(jìn)行塊浮點(diǎn)定標(biāo)處理,防止數(shù)據(jù)溢出, 具體方法是在每級運(yùn)算中,將輸入數(shù)據(jù)擴(kuò)充3位符號位,然后進(jìn)行蝶形 運(yùn)算。-之后,對運(yùn)算結(jié)果有效最高位的前4位進(jìn)行檢查,判斷其是否存在 溢出。根據(jù)溢出情況,確定下一級蝶形運(yùn)算輸入所需的右移位數(shù),以保證 在下一級蝶形運(yùn)算中不發(fā)生溢出。所需右移的位數(shù)被累計(jì)下來,以確定最 后結(jié)果的比例因子或冪指數(shù)。該比例因子或冪指數(shù)將用于數(shù)據(jù)的恢復(fù)。
例如
對于1024點(diǎn)的fft運(yùn)算,1024點(diǎn)數(shù)輸入數(shù)據(jù)首先按照 AT = a/xjl = 32x32進(jìn)行分解。然后使用第一 32點(diǎn)可變fft處理子才莫塊進(jìn) 行32次的32點(diǎn)fft運(yùn)算。運(yùn)算出的1024個(gè)結(jié)果在旋轉(zhuǎn)因子處理子才莫塊 中分別與1024個(gè)中間旋轉(zhuǎn)因子相乘,并將這1024個(gè)結(jié)果存儲(chǔ)在中間^:據(jù) 存儲(chǔ)子模塊中。使用第二 32點(diǎn)可變fft處埋子模塊對存儲(chǔ)數(shù)據(jù)再進(jìn)行32 次的32點(diǎn)fft運(yùn)算,最后將運(yùn)算結(jié)果輸出。(2)旋轉(zhuǎn)因子處理模塊
結(jié)構(gòu)如圖4所示,包括二進(jìn)制計(jì)數(shù)器、循環(huán)移位寄存器和CORDIC 處理器。
二進(jìn)制計(jì)數(shù)器用于輸入數(shù)據(jù)行序號和列序號的產(chǎn)生與計(jì)數(shù)。
循環(huán)移位寄存器用于確定旋轉(zhuǎn)因子的旋轉(zhuǎn)角度。二進(jìn)制計(jì)數(shù)器和循 環(huán)移位寄存器聯(lián)合用于旋轉(zhuǎn)因子的生成。
CORDIC處理器用于完成基于CORDIC算法的數(shù)據(jù)加、減法和移位, 由此完成旋轉(zhuǎn)因子與第一 1024點(diǎn)可變FFT處理模塊的處理結(jié)果相乘。
連接關(guān)系為二進(jìn)制計(jì)數(shù)器、循環(huán)移位寄存器和CORDIC處理器依 次連接。
旋轉(zhuǎn)因子處理模塊傳統(tǒng)的實(shí)現(xiàn)方法是包括一 個(gè)存放旋轉(zhuǎn)因子的存 儲(chǔ)器和一個(gè)復(fù)數(shù)乘法器,在進(jìn)行不同點(diǎn)數(shù)FFT運(yùn)算時(shí),旋轉(zhuǎn)因子存儲(chǔ)器 需要存儲(chǔ)最大點(diǎn)數(shù)時(shí)的值,其它值可以根據(jù)不同的情況進(jìn)行抽取。傳統(tǒng) 的中間旋轉(zhuǎn)因子處理實(shí)現(xiàn)方法占用較多芯片資源,不適合ASIC實(shí)現(xiàn)。 在本發(fā)明中,采用CORDIC算法進(jìn)行中間旋轉(zhuǎn)因子的處理,CORDIC 運(yùn)用于計(jì)算三角函數(shù)、雙曲函數(shù)及其它一些基本函數(shù)的運(yùn)算,采用迭代 的思想,不需乘法運(yùn)算和額外的存儲(chǔ)空間,同時(shí)該算法可以達(dá)到較高的 精度。
CORDIC算法的基本原理是初始向量旋轉(zhuǎn)角度6后得到所求向量。 運(yùn)算統(tǒng)一迭代公式為
廣 _,■
A+1 =(x, -a', 7,2 )
^ 乂+1 =(7, + Vx,'2一') 、z,+1=z,-v《 (公式5 )
式(5)中,、為平面直角坐標(biāo)系中某點(diǎn)的橫坐標(biāo)值;乂為平面直角坐 標(biāo)系中某點(diǎn)的縱坐標(biāo)值;^為旋轉(zhuǎn)模式;、為向量的旋轉(zhuǎn)方向;《為旋 轉(zhuǎn)角度。i=0,l, ...,n-l, n是總旋轉(zhuǎn)的級數(shù),^決定旋轉(zhuǎn)的方向
^4一1 z/ 2,<°這樣,運(yùn)算就只有加法、減法和移位。"次迭代后,得到如下結(jié)杲
\ = x0. cos z0 — yu. sin 20 <凡=jVC0S2G+XQ'sinA (/>式7)
公式7中,^代表"次迭代后橫坐標(biāo)值;X()代表迭代前橫坐標(biāo)初始值; >^代表w次迭代后縱坐標(biāo)值;J^o代表迭代前縱坐標(biāo)初始值;4代表 初始旋轉(zhuǎn)角度。
CORDIC算法的思想就是把旋轉(zhuǎn)一個(gè)任意角度6 ,分成若干步驟, 每步旋轉(zhuǎn)一個(gè)《.,同時(shí)把6>減掉一個(gè)《,然后判斷^的符號,根據(jù)6"的正 負(fù)來決定下一步旋轉(zhuǎn)角《的正負(fù)。依次循環(huán),直到e趨于零,即該向量 已》走轉(zhuǎn)了 ^角。
在本處理器中,需要進(jìn)行FFT處理模塊的處理結(jié)果與旋轉(zhuǎn)因子^相 乘的操作,其中W二 = exP(力'27^ Z = c。s(2W, — sin(2;n. / iV)。這個(gè)乘法才乘 作可以看成是把一個(gè)向量(復(fù)數(shù)數(shù)據(jù))旋轉(zhuǎn)了 9 = -^"〃W度。因此 CORDIC算法的思想和FFT中序列與旋轉(zhuǎn)因子^相乘的要求相符合,根 據(jù)公式(5)和公式(6),即可完成中間旋轉(zhuǎn)因子的產(chǎn)生與相乘。
通常的CORDIC算法需要存儲(chǔ)器來存儲(chǔ)公式(5)中的A,在循環(huán) 一位相加的操作中需要一些相應(yīng)的控制邏輯,對于FFT的乘以旋轉(zhuǎn)因子 運(yùn)算,可以避免使用存儲(chǔ)器。因?yàn)槿绻D(zhuǎn)因子的指數(shù)/已知,CORDIC 處理器的旋轉(zhuǎn)角度就確定了 。在兩級運(yùn)算之間的旋轉(zhuǎn)因子的指數(shù)等于行 的序號乘以列的序號。旋轉(zhuǎn)因子生成器可以很容易的使用二進(jìn)制計(jì)數(shù)器 和循環(huán)移位寄存器來實(shí)現(xiàn),如圖5所示。此種方法不僅減小了存儲(chǔ)器容 量,而且像地址譯碼器等相應(yīng)的一些硬件比常規(guī)方法也有所減少。 (3)選擇與控制模塊
本模塊根據(jù)系統(tǒng)要求,產(chǎn)生各種控制、選擇、地址等信號,控制處理
器中各個(gè)模塊協(xié)調(diào)工作。
第一 1024點(diǎn)可變FFT處理4莫塊中一的第二 32點(diǎn)可變FFT處理子沖莫塊和 旋轉(zhuǎn)因子處理模塊中CORDIC處理器的相連,CORDIC處理器的另一端 與FFT處理器外部的中間數(shù)據(jù)存儲(chǔ)模塊相連,處理器外部的中間數(shù)據(jù)存儲(chǔ) 模塊的另 一端與第二 1024點(diǎn)可變FFT處理模塊中的第一 32點(diǎn)可變FFT處
12理子模塊相連,選擇與控制模塊分別與第一 1024點(diǎn)可變FFT處理模塊中 的選擇與控制子模塊、旋轉(zhuǎn)因子處理模塊中的循環(huán)移位寄存器、FFT處理 器外部的中間數(shù)據(jù)存儲(chǔ)模塊、第二 1024點(diǎn)可變FFT處理模塊中的選擇與 控制子模塊相連。
上述模塊間的信號轉(zhuǎn)換關(guān)系如下
iV點(diǎn)輸入序列進(jìn)入處理器的第一 1024點(diǎn)可變FFT處理模塊進(jìn)行小點(diǎn) 數(shù)FFT運(yùn)算。
其中,在第一 1024點(diǎn)可變FFT處理模塊內(nèi)部,先在第一 32點(diǎn)可變FFT 處理子模塊內(nèi)進(jìn)行2"(" S 5)點(diǎn)FFT運(yùn)算,處理結(jié)果送入旋轉(zhuǎn)因子處理子模 塊中與旋轉(zhuǎn)因子相乘,以便進(jìn)行二維運(yùn)算處理。相乘后的結(jié)果送到中間數(shù) 據(jù)存儲(chǔ)子模塊進(jìn)行存儲(chǔ)。當(dāng)所有的點(diǎn)數(shù)據(jù)全部處理完畢之后,送入第二32 點(diǎn)可變FFT處理子模塊中再次進(jìn)行2"(" S 5)點(diǎn)FFT運(yùn)算。
若N小于等于1024時(shí),處理過程到此結(jié)束,第一 1024點(diǎn)可變FFT處 理模塊的處理結(jié)果直接輸出。若N大于1024時(shí),則將第一 1024點(diǎn)可變FFT 處理模塊的處理結(jié)果送入旋轉(zhuǎn)因子處理模塊的CORDIC處理器中,與循 環(huán)移位寄存器傳送過來的旋轉(zhuǎn)因子相乘。相乘結(jié)果送到處理器外部的中間 數(shù)據(jù)存儲(chǔ)模塊中進(jìn)行存儲(chǔ)。當(dāng)W點(diǎn)數(shù)據(jù)的相乘結(jié)果全部到達(dá)后,將全部數(shù) 據(jù)送入第二 1024點(diǎn)可變FFT處理模塊,數(shù)據(jù)在第二 1024點(diǎn)可變FFT處理 模塊中進(jìn)行2"(" S 5)點(diǎn)FFT運(yùn)算。運(yùn)算方法與第一 32點(diǎn)可變FFT處理子 模塊內(nèi)的方法相同。運(yùn)算結(jié)束之后,將第二 1024點(diǎn)可變FFT處理模塊結(jié) 果輸出。
實(shí)施例
當(dāng)實(shí)現(xiàn)超長點(diǎn)數(shù)的FFT時(shí),根據(jù)選擇與控制模塊將激活相應(yīng)的模塊來 實(shí)現(xiàn),例如實(shí)現(xiàn)512K點(diǎn)的FFT時(shí),根據(jù)iV = M x丄=1024 x 512進(jìn)行分解, 在第一 1024點(diǎn)可變FFT處理模塊中完成512次1024點(diǎn)FFT處理,經(jīng)過旋 轉(zhuǎn)因子處理模塊完成旋轉(zhuǎn)因子產(chǎn)生與復(fù)乘,之后數(shù)據(jù)送入處理器外部中間 數(shù)據(jù)存儲(chǔ)模塊進(jìn)行緩存,之后在第二 1024點(diǎn)可變FFT處理模塊中完成1024 次512點(diǎn)FFT處理,形成輸出序列。以在第二 1024點(diǎn)可變FFT處理模塊 中完成512點(diǎn)FFT處理為例,首先根據(jù)iV二A/x丄二32xl6進(jìn)行分解,數(shù) 據(jù)首先在第一 32點(diǎn)可變FFT處理子;f莫塊中完成16次32點(diǎn)FFT處理,結(jié)果經(jīng)過旋轉(zhuǎn)因子處理子模塊完成旋轉(zhuǎn)因子產(chǎn)生與復(fù)乘,之后數(shù)據(jù)送入中間
數(shù)據(jù)存儲(chǔ)子模塊進(jìn)行緩存,之后在第二 32點(diǎn)可變FFT處理子模塊中完成 32次16點(diǎn)FFT處理,結(jié)果輸出。
各功能模塊采用硬件描述語言編寫、仿真、調(diào)試后下載到FPGA器件 內(nèi),即可實(shí)現(xiàn)FFT芯片。代碼也可轉(zhuǎn)至ASIC i殳計(jì)流程,用單片ASIC實(shí) 現(xiàn)本FFT處理。
權(quán)利要求
1、一種可變點(diǎn)數(shù)流水線FFT處理器,其特征在于,包括第一1024點(diǎn)可變FFT處理模塊、旋轉(zhuǎn)因子處理模塊、第二1024點(diǎn)可變FFT處理模塊、選擇與控制模塊;(1)第一、第二1024點(diǎn)可變FFT處理模塊用于實(shí)現(xiàn)大點(diǎn)數(shù)FFT的二維小點(diǎn)數(shù)處理,可實(shí)時(shí)地進(jìn)行1024可變點(diǎn)的FFT處理;兩個(gè)模塊的結(jié)構(gòu)組成相同,每一個(gè)1024點(diǎn)可變FFT處理模塊均包括第一32點(diǎn)可變FFT處理子模塊、第二32點(diǎn)可變FFT處理子模塊、旋轉(zhuǎn)因子處理子模塊、中間數(shù)據(jù)存儲(chǔ)子模塊、選擇與控制子模塊;其中,32點(diǎn)可變FFT處理子模塊中每級基-2運(yùn)算單元加入輸出選擇電路,通過控制可實(shí)現(xiàn)可變點(diǎn)FFT計(jì)算,且32點(diǎn)FFT處理采用塊浮點(diǎn)定標(biāo)方式,獲得較高處理精度;旋轉(zhuǎn)因子處理子模塊用于完成二維FFT處理的中間旋轉(zhuǎn)因子的產(chǎn)生,并將中間旋轉(zhuǎn)因子同第一32點(diǎn)可變FFT處理子模塊的處理結(jié)果相乘;中間數(shù)據(jù)存儲(chǔ)子模塊用于存儲(chǔ)第一32點(diǎn)可變FFT處理子模塊的處理結(jié)果,并將其作為第二32點(diǎn)可變FFT處理子模塊的輸入;選擇與控制子模塊用于產(chǎn)生第一和第二32點(diǎn)可變FFT處理子模塊、旋轉(zhuǎn)因子處理子模塊、中間數(shù)據(jù)存儲(chǔ)子模塊的選擇與控制信號;連接關(guān)系為第一32點(diǎn)可變FFT處理子模塊、旋轉(zhuǎn)因子處理子模塊、中間數(shù)據(jù)存儲(chǔ)子模塊、第二32點(diǎn)可變FFT處理子模塊依次相連,選擇與控制子模塊與上述各個(gè)模塊分別相連;(2)旋轉(zhuǎn)因子處理模塊完成二維FFT處理的中間旋轉(zhuǎn)因子的產(chǎn)生,并將中間旋轉(zhuǎn)因子同第一1024點(diǎn)可變FFT處理子模塊的處理結(jié)果相乘,以便進(jìn)行二維運(yùn)算;(3)選擇與控制模塊用于產(chǎn)生各種控制信號,對各個(gè)模塊進(jìn)行控制與協(xié)調(diào),保證整個(gè)芯片能夠正常工作;上述組成模塊間的連接關(guān)系如下第一1024點(diǎn)可變FFT處理模塊中的第二32點(diǎn)可變FFT處理子模塊和旋轉(zhuǎn)因子處理模塊相連,旋轉(zhuǎn)因子處理模塊另一端與FFT處理器外部的中間數(shù)據(jù)存儲(chǔ)模塊相連,處理器外部的中間數(shù)據(jù)存儲(chǔ)模塊的另一端與第二1024點(diǎn)可變FFT處理模塊中的第一32點(diǎn)可變FFT處理子模塊相連,選擇與控制模塊分別與第一1024點(diǎn)可變FFT處理模塊中的選擇與控制子模塊、旋轉(zhuǎn)因子處理模塊、FFT處理器外部的中間數(shù)據(jù)存儲(chǔ)模塊、第二1024點(diǎn)可變FFT處理模塊中的選擇與控制子模塊相連;上述模塊之間的信號轉(zhuǎn)換關(guān)系為N點(diǎn)輸入序列進(jìn)入處理器的第一1024點(diǎn)可變FFT處理模塊進(jìn)行小點(diǎn)數(shù)FFT運(yùn)算;其中,在第一1024點(diǎn)可變FFT處理模塊內(nèi)部,先在第一32點(diǎn)可變FFT處理子模塊內(nèi)進(jìn)行2n點(diǎn)FFT運(yùn)算,n≤5,處理結(jié)果送入旋轉(zhuǎn)因子處理子模塊中與旋轉(zhuǎn)因子相乘,以便進(jìn)行二維運(yùn)算處理;相乘后的結(jié)果送到中間數(shù)據(jù)存儲(chǔ)子模塊進(jìn)行存儲(chǔ);當(dāng)所有的點(diǎn)數(shù)據(jù)全部處理完畢之后,送入第二32點(diǎn)可變FFT處理子模塊中再次進(jìn)行2n點(diǎn)FFT運(yùn)算;若N小于等于1024時(shí),處理過程到此結(jié)束,第一1024點(diǎn)可變FFT處理模塊的處理結(jié)果直接輸出;若N大于1024時(shí),則將第一1024點(diǎn)可變FFT處理模塊的處理結(jié)果送入旋轉(zhuǎn)因子處理模塊中,與此處的旋轉(zhuǎn)因子相乘;相乘結(jié)果送到處理器外部的中間數(shù)據(jù)存儲(chǔ)模塊中進(jìn)行存儲(chǔ);當(dāng)N點(diǎn)數(shù)據(jù)的相乘結(jié)果全部到達(dá)后,將全部數(shù)據(jù)送入第二1024點(diǎn)可變FFT處理模塊,數(shù)據(jù)在第二1024點(diǎn)可變FFT處理模塊中進(jìn)行2n點(diǎn)FFT運(yùn)算,運(yùn)算方法與第一32點(diǎn)可變FFT處理子模塊內(nèi)的方法相同;運(yùn)算結(jié)束之后,將第二1024點(diǎn)可變FFT處理模塊結(jié)果輸出。
2 所述的一種可變點(diǎn)數(shù)流水線FFT處理器,其特征在于中間數(shù)據(jù)存儲(chǔ)子模塊通過兩個(gè)1024點(diǎn)數(shù)據(jù)存儲(chǔ)器進(jìn)行"乒乓"存儲(chǔ)來 實(shí)現(xiàn)。
3、根據(jù)權(quán)利要求1所述的一種可變點(diǎn)數(shù)流水線FFT處理器,其特征 在于,旋轉(zhuǎn)因子處理模塊采用CORDIC算法,完成二維FFT處理的中間旋 轉(zhuǎn)因子產(chǎn)生與相乘。
全文摘要
本發(fā)明一種可變點(diǎn)數(shù)流水線FFT處理器,包括第一1024點(diǎn)可變FFT處理模塊、旋轉(zhuǎn)因子處理模塊、第二1024點(diǎn)可變FFT處理模塊、選擇與控制模塊。上述四個(gè)模塊與處理器外部的中間數(shù)據(jù)存儲(chǔ)模塊共同完成大點(diǎn)數(shù)FFT的二維處理。兩個(gè)1024點(diǎn)可變FFT處理模塊均包括第一、第二32點(diǎn)可變FFT處理子模塊、旋轉(zhuǎn)因子處理子塊、中間數(shù)據(jù)存儲(chǔ)子模塊、選擇與控制子模塊。通過32點(diǎn)可變FFT處理子模塊實(shí)現(xiàn)可變點(diǎn)FFT運(yùn)算;旋轉(zhuǎn)因子處理模塊產(chǎn)生中間旋轉(zhuǎn)因子,并與FFT運(yùn)算結(jié)果相乘;選擇與控制模塊實(shí)現(xiàn)對整個(gè)芯片的控制。本發(fā)明適于在單片F(xiàn)PGA或ASIC中實(shí)現(xiàn),同時(shí)可獲得高速、低功耗、高精度等特性。
文檔編號G06F17/14GK101504638SQ20091008047
公開日2009年8月12日 申請日期2009年3月19日 優(yōu)先權(quán)日2009年3月19日
發(fā)明者偉 劉, 峰 劉, 曾大治, 禾 陳, 騰 龍 申請人:北京理工大學(xué)