專利名稱:一種實(shí)現(xiàn)基2fft計(jì)算的fft處理器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于信號處理領(lǐng)域,涉及FFT處理器結(jié)構(gòu),具體涉及基2FFT處理器的硬件 實(shí)現(xiàn)方法。
背景技術(shù):
快速傅立葉變換FFT在圖形處理,信號分析,數(shù)字信號處理,GPS衛(wèi)星定位,醫(yī)學(xué)圖 象處理,物理學(xué)、數(shù)論、組合數(shù)學(xué)、信號處理、概率論、統(tǒng)計(jì)學(xué)、密碼學(xué)、聲學(xué)、光學(xué)、海洋學(xué)、結(jié) 構(gòu)動力學(xué)等領(lǐng)域都有著廣泛的應(yīng)用。由于用硬件實(shí)現(xiàn)FFT有軟件不可比擬的速度優(yōu)勢。通 常,用基2FFT算法來處理長度為2n信號的FFT運(yùn)算。N點(diǎn)基2的快速傅立葉變換因?yàn)槠鋸V 泛的用途和自身的特殊性,要求其硬件實(shí)現(xiàn)的運(yùn)算速度快,并且要兼顧硬件面積,兩者之間 必須有良好的均衡。為解決上述技術(shù)問題,現(xiàn)有技術(shù)中,如2009年1月28日公開的,公開號為 200810046075. 8,名稱為“ 一種蝶形運(yùn)算FFT處理器”的中國發(fā)明專利,公開了 一種用 C0RDIC旋轉(zhuǎn)算法實(shí)現(xiàn)的基4FFT運(yùn)算方法。該方法通過12階旋轉(zhuǎn)運(yùn)算才能完成一次復(fù)數(shù)乘 法運(yùn)算。如果再加上此后進(jìn)行的復(fù)數(shù)加減法運(yùn)算,需要13個時鐘周期才能完成一次蝶形運(yùn) 算,這很難滿足FFT處理器工作頻率較高的要求。該發(fā)明方法為了避免復(fù)數(shù)乘法運(yùn)算而采 用復(fù)雜的控制邏輯,用于硬件實(shí)施復(fù)雜的控制邏輯必然要增加額外的硬件成本,從而導(dǎo)致 該電路結(jié)構(gòu)的IC芯片面積加大。
發(fā)明內(nèi)容
本發(fā)明的目的是為了克服現(xiàn)有技術(shù)的缺陷,在分析算法特點(diǎn)的基礎(chǔ)上作了研究和 改進(jìn),提出一種基2FFT算法的FFT處理硬件電路結(jié)構(gòu)及其實(shí)現(xiàn)方法,實(shí)現(xiàn)了運(yùn)算速度和硬 件面積的有效均衡,并將蝶形運(yùn)算單元的電路結(jié)構(gòu)移植到其他2n點(diǎn)的多點(diǎn)FFT運(yùn)算硬件結(jié) 構(gòu)中,一一得以實(shí)現(xiàn)。本發(fā)明目的是通過以下的技術(shù)方案來實(shí)現(xiàn)。一種實(shí)現(xiàn)基2FFT計(jì)算的FFT處理器,包括地址映射單元,其在于還包括(1)基2的N點(diǎn)的FFT處理器由1 lo&N級組成,N為FFT運(yùn)算點(diǎn)數(shù);(2)第1、2級為單列的一類復(fù)用模塊,第1、第2兩級復(fù)用單列的一類復(fù)用模塊;(3)單列的一類復(fù)用模塊中包含有一個簡化型碟形運(yùn)算單元;(4)第3 第lo&N級的{(lo&N)-2}級復(fù)用的另一類復(fù)用模塊;(5)另一類復(fù)用模塊中包含有一個改進(jìn)型碟形運(yùn)算單元;(6)每級采用一種同址運(yùn)算結(jié)構(gòu)。所述第1、2級單列的一類復(fù)用模塊中的簡化型碟形運(yùn)算單元,其蝶形運(yùn)算僅為加 法運(yùn)算。第1、2級旋轉(zhuǎn)因子簡單,不用復(fù)數(shù)乘法運(yùn)算,將第1、2兩級獨(dú)立出來,僅用加法運(yùn) 算即可以完成蝶形運(yùn)算,而且第1、2級復(fù)用該單列的一類復(fù)用模塊,和不單列、不復(fù)用的碟 形運(yùn)算單元相比,減少了硬件芯片面積,并能提高工作頻率。與已有技術(shù)將第1、2級與第3、……、lo&N作為一類進(jìn)行復(fù)用相比,減少了完成FFT運(yùn)算所需的時鐘周期。所述第1、2級單列的復(fù)用結(jié)構(gòu)為復(fù)用模塊,該復(fù)用模塊的電路結(jié)構(gòu)是一個碟形運(yùn) 算單元,它包括兩個加法器、兩個寄存器以及一個多路選擇器;兩個輸入信號端與兩個加法 器的一個輸入端相連接,每個加法器的輸出端連接到對應(yīng)的一個寄存器,并使各寄存器的 輸出通過一個多路選擇器反饋到對應(yīng)加法器的另一個輸入端,該單列的一類復(fù)用模塊的電 路結(jié)構(gòu)能夠?qū)崿F(xiàn)加法運(yùn)算和碟形運(yùn)算相結(jié)合的運(yùn)算,與將加法和碟形運(yùn)算的加減法分開運(yùn) 算相比,能使硬件電路芯片的面積縮小。所述第3 第丨呢力級復(fù)用的另一類復(fù)用模塊,該復(fù)用模塊為一個獨(dú)立的硬件;第 3 log2N級的每一級的旋轉(zhuǎn)因子為復(fù)數(shù),各級的碟形運(yùn)算都有復(fù)數(shù)乘法運(yùn)算,每級所需的 硬件電路結(jié)構(gòu)相同,各級碟形運(yùn)算都復(fù)用這一級獨(dú)立的硬件,第3 第log2N級的每一級復(fù) 用該另一類復(fù)用模塊是通過狀態(tài)機(jī)控制多路選擇器來實(shí)現(xiàn)數(shù)據(jù)輸入和旋轉(zhuǎn)因子的選擇控 制,從而完成第3 第log2N各級的運(yùn)算,該復(fù)用結(jié)構(gòu)和不復(fù)用相比,簡化了地址映射單元 的結(jié)構(gòu),減少了硬件芯片面積。所述另一類復(fù)用模塊中的改進(jìn)型碟形運(yùn)算單元的電路結(jié)構(gòu)包括一個乘法器、兩個 加法器、兩個寄存器以及一個多路選擇器;乘法器的輸出和兩個加法器的一個輸入端相連 接,每個加法器的輸出端連接到對應(yīng)的一個寄存器,并使各寄存器的輸出通過一個多路選 擇器反饋到對應(yīng)加法器的另一個輸入端;該復(fù)用模塊結(jié)構(gòu)實(shí)現(xiàn)復(fù)數(shù)乘法和碟形運(yùn)算相結(jié)合 的運(yùn)算,與將復(fù)數(shù)乘法和碟形運(yùn)算的加減法分開的其他算法相比,能使硬件電路芯片的面 積成倍縮小。所述同址運(yùn)算結(jié)構(gòu)為在輸入數(shù)據(jù)進(jìn)行一次地址映射變換之后,以后同類各級結(jié)構(gòu) 相同,通過簡單的復(fù)用完成地址映射的運(yùn)算結(jié)構(gòu);第一、二級一類的每級和第3、……、log2N 級一類的每級采用一種同址運(yùn)算結(jié)構(gòu),其優(yōu)勢在于每級結(jié)構(gòu)相同,硬件的復(fù)雜度得以降低 和簡化。所述同址運(yùn)算結(jié)構(gòu)為采用按時間抽取算法的通用性運(yùn)算結(jié)構(gòu),蝶形運(yùn)算采用包括 一個乘法器、兩個加法器、兩個寄存器以及一個多路選擇器的改進(jìn)型碟形運(yùn)算單元作流水 運(yùn)算,得到規(guī)格化的運(yùn)算結(jié)果,完成一次蝶形運(yùn)算花費(fèi)6個系統(tǒng)時鐘周期,增加或減少運(yùn)算 點(diǎn)數(shù)N只需要增加存儲空間和地址發(fā)生器位數(shù)。由按時間抽區(qū)(DIT)FFT基本運(yùn)算可知,基2的N點(diǎn)的FFT由log2N級組成,而且 每級會有N/2個的蝶形運(yùn)算單元。FFT第1級的旋轉(zhuǎn)因子由WN°= 1構(gòu)成,第2級旋轉(zhuǎn)因子 由=1和= -i組成。前兩級運(yùn)算為一般乘法,無須進(jìn)行復(fù)數(shù)乘法運(yùn)算,可以直接使 用加法器完成整個碟形運(yùn)算。將第一級和第二級獨(dú)立單列為作加法運(yùn)算,而將其他級另列 為作復(fù)數(shù)乘法運(yùn)算。第3........lo&N各級的蝶形運(yùn)算中都有較復(fù)雜的復(fù)數(shù)乘法,本發(fā)明提出一種同
址運(yùn)算結(jié)構(gòu),第3........lo&N各級的蝶形運(yùn)算中的復(fù)數(shù)乘法,各級采用同址運(yùn)算結(jié)構(gòu),統(tǒng)
一用一級電路對各級進(jìn)行復(fù)用,使該電路結(jié)構(gòu)的IC芯片面積得以減少。每級采用一種同址運(yùn)算結(jié)構(gòu),該同址運(yùn)算結(jié)構(gòu)是由最基本的FFT運(yùn)算變換而來, 以8點(diǎn)基2FFT運(yùn)算為例,最基本FFT運(yùn)算結(jié)構(gòu)和經(jīng)變換后的同址運(yùn)算結(jié)構(gòu)如圖10所示。第3........log2N級的復(fù)用結(jié)構(gòu)中包含了一種改進(jìn)型碟形運(yùn)算單元。改進(jìn)型碟
形運(yùn)算單元包括一個碟形運(yùn)算單元、一個復(fù)數(shù)加法器、一個復(fù)數(shù)減法器。最基本FFT運(yùn)算的蝶形運(yùn)算模式為如圖6所示,一個碟形運(yùn)算單元是由一個復(fù)數(shù)乘法器完成圖6中603所示 的運(yùn)算,一個復(fù)數(shù)加法器完成圖6中602所示的運(yùn)算,一個復(fù)數(shù)減法器完成圖6中的604所 示的運(yùn)算構(gòu)成。已有技術(shù)復(fù)數(shù)乘法器包含四個實(shí)數(shù)乘法器和三個實(shí)數(shù)加法器,結(jié)構(gòu)尤顯復(fù) 雜。本方案提出一種改進(jìn)型蝶形運(yùn)算單元,其結(jié)構(gòu)是將復(fù)數(shù)乘法內(nèi)部的加法器和碟形運(yùn)算 的加法器合二為一,在碟形運(yùn)算外部狀態(tài)機(jī)的控制下將復(fù)數(shù)乘法和碟形運(yùn)算的元件進(jìn)行公 用,從而,有效的減少芯片面積。如圖7所示為改進(jìn)型碟形運(yùn)算單元。本發(fā)明的實(shí)質(zhì)性效果1、本發(fā)明采用第1、2級單列和第3、……、lo&N級復(fù)用模塊和改進(jìn)型碟形運(yùn)算單 元電路結(jié)構(gòu),IC芯片面積成倍的減小。2、本發(fā)明的各級結(jié)構(gòu)采用相同的同址運(yùn)算結(jié)構(gòu),輸入數(shù)據(jù)進(jìn)行一次地址映射變 換,以后通過簡單的復(fù)用完成地址映射,使硬件的復(fù)雜度得以降低。3、本發(fā)明構(gòu)成的硬件電路實(shí)現(xiàn)了運(yùn)算速度快,兼顧硬件面積小,兩者之間得到了 良好的均衡。4、新型蝶形運(yùn)算單元的電路結(jié)構(gòu)可以移植到其他2n點(diǎn)的多點(diǎn)FFT運(yùn)算硬件結(jié)構(gòu) 中,具有良好的應(yīng)用前景。
圖1是以32點(diǎn)基2FFT為例的現(xiàn)有技術(shù)基2FFT處理器結(jié)構(gòu)。圖2是以32點(diǎn)基2FFT為例的本發(fā)明改進(jìn)的基2FFT處理器結(jié)構(gòu)。圖3是以32點(diǎn)基2FFT為例的本發(fā)明中第1、2級獨(dú)立分列的復(fù)用結(jié)構(gòu)圖。圖4是以32點(diǎn)基2FFT為例的本發(fā)明使用的地址映射單元的地址映射示意圖。圖5是以32點(diǎn)基2FFT為例的本發(fā)明中第3、4、5級的復(fù)用模塊結(jié)構(gòu)組成框圖。圖6是現(xiàn)有技術(shù)碟形運(yùn)算單元的碟形運(yùn)算模式示意圖。圖7是本發(fā)明實(shí)施例的改進(jìn)型碟形運(yùn)算單元電路結(jié)構(gòu)組成框圖。圖8是本發(fā)明中完成一級碟形運(yùn)算的時序數(shù)據(jù)流示意圖。圖9是本發(fā)明基2FFT處理器結(jié)構(gòu)組成框圖。圖10a為以8點(diǎn)基2FFT為現(xiàn)有技術(shù)采用的碟形運(yùn)算圖。圖10b為以8點(diǎn)基2FFT為實(shí)施例的本發(fā)明采用的碟形運(yùn)算圖。
具體實(shí)施例方式為更好的理解和更清晰的闡述本發(fā)明,下面以32點(diǎn)基2FFT為例,結(jié)合具體實(shí)施方 式對本發(fā)明進(jìn)行更為詳細(xì)的描述。圖1是現(xiàn)有技術(shù)基2FFT處理器結(jié)構(gòu),該結(jié)構(gòu)采用decimation-in-timeradix-2FFT 算法,其計(jì)算公式如下 式中X(k)為離散傅立葉變換前N/2點(diǎn)的值A(chǔ)R + y)為離散傅立葉變換后N/2 點(diǎn)的值;k= 1,2,…,N/2-1 ;n為基2數(shù)據(jù)的比特值。圖2是本發(fā)明所采用的改進(jìn)型基2FFT處理器結(jié)構(gòu)。以32點(diǎn)基2FFT為例,將32 位輸入數(shù)據(jù)進(jìn)行重新排序的過程,采用bit-reversal方法。32 = 25,對于0 < n < 31的 數(shù)據(jù)可以用5比特的二進(jìn)制數(shù)來表示n = (b4 b3 b2 b0)三 b424+b323+b222+b121+b02°,參見表一。顯然,采用 bit-reversal將原32位輸入數(shù)據(jù)重新排序后,形成地址映射。在本實(shí)施例中采用五級結(jié)構(gòu),各級結(jié)構(gòu)相同,即各級的相臨x(n),x(n+l)進(jìn)行 蝶形運(yùn)算(n = 1,3,5……31),輸出結(jié)果按照以下規(guī)則執(zhí)行若X (K),K為偶數(shù),則發(fā)送到 x(K/2)的下級;若K為奇數(shù),則發(fā)送到x(16+(k-l)/2),進(jìn)行下一級的碟形運(yùn)算。改規(guī)則簡 單,而且各級情況相同,避免了圖1中所示現(xiàn)有技術(shù)基2FFT處理器的復(fù)雜的數(shù)據(jù)交替和旋 轉(zhuǎn)系數(shù)選擇。圖3所示的第一、二兩級結(jié)構(gòu)是獨(dú)立單列的復(fù)用模塊結(jié)構(gòu),地址映射單元輸出301 連接多路選擇器302的輸入端,外部狀態(tài)機(jī)303的控制輸出連接多路選擇器302的控制端, 多路選擇器302的輸出端連接到碟形運(yùn)算單元的輸入端304,數(shù)據(jù)輸入后(參見304)、進(jìn)行 數(shù)據(jù)運(yùn)算取得中間結(jié)果(參見305)以及和映射地址(參見306);形成映射地址的輸出連接 判斷器307,判斷是否是第二級?若是第二級,由308線接到第三級輸入端;若不是第二級, 發(fā)送到309,將虛數(shù)部分取其補(bǔ)并與實(shí)數(shù)交換位置,同時,將交換位置后的輸出部分,經(jīng)310 線反饋到多路選擇器302。外部狀態(tài)機(jī)是本復(fù)用模塊之外的部件,其輸出的控制信號由時鐘 信號CLK提供。經(jīng)過地址映射之后的初始輸入數(shù)據(jù)301加到多路選擇器302,在外部狀態(tài)機(jī)303 的控制下,控制多路選擇器302對地址映射單元輸出301送來的輸入數(shù)據(jù)進(jìn)行選擇,多路選 擇器302將輸入數(shù)據(jù)排列為304形式,由308形成數(shù)據(jù)運(yùn)算的中間結(jié)果,中間結(jié)果的排列為 305形式,再對中間結(jié)果進(jìn)行地址映射,地址映射后的數(shù)據(jù)重排為306形式,數(shù)據(jù)運(yùn)算結(jié)果 從306輸出,經(jīng)過307判斷,如果是第1級的數(shù)據(jù)運(yùn)算完成,則把數(shù)據(jù)的虛部取其補(bǔ)碼與實(shí) 部交換位置后,經(jīng)由310傳輸?shù)?02進(jìn)行第2級運(yùn)算數(shù)據(jù)處理。如果307判斷,為第2級數(shù) 據(jù)運(yùn)算完成,則把數(shù)據(jù)輸出經(jīng)由308送到第3級。前兩級旋轉(zhuǎn)因子簡單,可以獨(dú)立出來進(jìn)行 運(yùn)算,避免采用復(fù)雜的復(fù)數(shù)乘法。而且,第1和第2兩級結(jié)構(gòu)相同,用一個多路選擇器302 對第1、2級進(jìn)行復(fù)用。第1級系數(shù)為1,第2級系數(shù)為1和-i,對第2級中系數(shù)為-i的運(yùn) 算用將其虛部取補(bǔ)再與實(shí)部交換位置的方法進(jìn)行。顯而易見,整個第1、第2兩級的運(yùn)算完 全避免采用復(fù)數(shù)乘法的運(yùn)算。圖4為以32點(diǎn)基2FFT為例的地址映射單元示意圖,32點(diǎn)基2FFT的地址映射關(guān)系 如圖4所示。輸入數(shù)據(jù)的排列為401形式,進(jìn)行地址變換后,輸出部分?jǐn)?shù)據(jù)的排列如402所 示,其地址映射關(guān)系表達(dá)式r = bitrev(n) = n = (b0 b, b2 b3 b4) = b024+b123+b222+b321+b420o
7
圖5所示為本發(fā)明中第3、4、5級復(fù)用模塊的結(jié)構(gòu)。該復(fù)用模塊的結(jié)構(gòu)包括第3級 輸入501、多路選擇器502、外部狀態(tài)機(jī)503、碟形運(yùn)算單元504、旋轉(zhuǎn)因子存儲單元505、數(shù)據(jù) 地址變換映射器506和數(shù)據(jù)寄存器507。復(fù)用模塊結(jié)構(gòu)中的碟形運(yùn)算單元504,是復(fù)用結(jié)構(gòu) 中最關(guān)鍵的單元。多路選擇器502連接第3級運(yùn)算的數(shù)據(jù)輸入501、外部狀態(tài)機(jī)503控制輸 出端和數(shù)據(jù)寄存器507的輸出端,碟形運(yùn)算單元504連接多路選擇器502輸出端和旋轉(zhuǎn)因 子存儲單元505讀數(shù)端,碟形運(yùn)算單元504輸出端連接數(shù)據(jù)地址變換映射器506,數(shù)據(jù)地址 變換映射器506輸出端連接數(shù)據(jù)寄存器507?,F(xiàn)有技術(shù)中的碟形運(yùn)算單元的結(jié)構(gòu),通常包括1個復(fù)數(shù)乘法器即4個實(shí)數(shù)乘法器, 2個復(fù)數(shù)加法器即6個實(shí)數(shù)加法器。圖6為現(xiàn)有技術(shù)碟形運(yùn)算單元的碟形運(yùn)算模式示意 圖。參見圖6,601表示為一個輸入數(shù)據(jù)4什]^603表示為另一個輸入信號肚+」81與旋轉(zhuǎn)
因子fFi相乘結(jié)果,它是用復(fù)數(shù)乘法器來完成,602表示為蝶形運(yùn)算單元的一個分支輸出數(shù)
據(jù)(Ar+jAi)+(Br+jBi) * yi和604表示為碟形運(yùn)算單元的另一個分支輸出(ArfjAi)-
(Br+jBi)*^,它們都是用一個復(fù)數(shù)加法器來完成,605 “_1”表示為604和602輸出不同 之處在于602用復(fù)數(shù)加法運(yùn)算,而604用復(fù)數(shù)減法運(yùn)算。本發(fā)明中的改進(jìn)型蝶行運(yùn)算單元的結(jié)構(gòu)組成如圖7所示,它是一種改進(jìn)型蝶行運(yùn) 算單元電路結(jié)構(gòu)。該電路結(jié)構(gòu)利用了蝶形運(yùn)算中復(fù)數(shù)乘法必須比復(fù)數(shù)加法先完成這個特 點(diǎn),將復(fù)數(shù)乘法中的加法器在復(fù)數(shù)乘法完成之后復(fù)用給復(fù)數(shù)加法運(yùn)算,這樣僅用1個實(shí)數(shù) 乘法器,2個實(shí)數(shù)加法器就可全部完成整個蝶形運(yùn)算。改進(jìn)型蝶行運(yùn)算單元由A信號端口 701和B信號端口 702,實(shí)數(shù)乘法器703,實(shí)數(shù)加法器704和705,多路選擇器706、711和714, 寄存器707、708組成,其運(yùn)算部件還包括寄存器712、713、715、716以及內(nèi)部狀態(tài)機(jī)709組 成,其中712、713、715、716是外部寄存器R3、R4、R5、R6,內(nèi)部狀態(tài)機(jī)709為各多路選擇器提 供狀態(tài)控制信號。A信號端口 701和B信號端口 702的數(shù)據(jù)加到實(shí)數(shù)乘法器703進(jìn)行乘法 運(yùn)算,實(shí)數(shù)乘法器703的輸出分兩路分別連接加法器704和705的一個輸入端,加法器704 和705的另一個輸入端連接多路選擇器706的選擇輸出,而多路選擇器706的三個輸入端 一個是由加法器704經(jīng)過R1寄存器707輸出的反饋信號,另一個是由加法器705經(jīng)過R2 寄存器708輸出的反饋信號,第三個輸入端“0”是STATE狀態(tài)復(fù)位信號710。加法器704的 輸出同時加到多路選擇器711的輸入端,加法器705的輸出同時加到多路選擇器714的輸 入端,內(nèi)部狀態(tài)機(jī)709控制輸出端連接多路選擇器711和714的控制端,為多路選擇器711 和714提供的狀態(tài)控制信號,控制多路選擇器711選擇輸出到R3外部寄存器712或R4外 部寄存器713,同樣,控制多路選擇器714選擇輸出到R5外部寄存器715或R6外部寄存器 716。顯而易見,改進(jìn)型蝶行運(yùn)算單元的電路僅有一個實(shí)數(shù)乘法器703,二個加法器704和 705,二個寄存器707和708,以及多路選擇器706、711和714,改進(jìn)后的電路構(gòu)成十分簡單。圖8示出了改進(jìn)型碟形運(yùn)算單元的時序流程圖。參見圖8,改進(jìn)型蝶行運(yùn)算單元 的工作過程按整體數(shù)據(jù)流簡述如下圖8中的801和802所示為二個蝶行運(yùn)算周期之始, 蝶行運(yùn)算是以CLK時鐘周期為數(shù)據(jù)流的控制信號,以32點(diǎn)基2FFT蝶行運(yùn)算為例,狀態(tài)機(jī) 提供括從0到5共6個狀態(tài)控制。0狀態(tài)時,輸入數(shù)據(jù)Br,Wr分別經(jīng)過A端口 701和B端 口 702輸入。1狀態(tài)時,數(shù)據(jù)Br,Wr完成乘法運(yùn)算,運(yùn)算結(jié)果為Br*Wr,并存儲到R1寄存器 707和R2寄存器708,在此狀態(tài),多路選擇器706選擇的是0輸入,即不進(jìn)行加法運(yùn)算, 口A、B輸入數(shù)據(jù)變?yōu)锽i、Wi。2狀態(tài)時,端口 A的輸入變?yōu)锳r,端口 B的輸入變?yōu)?,多路選擇 器706選擇輸出R1和R2中的值分別輸出到加法器704和705,在加法器704和705中與 已經(jīng)完成乘法運(yùn)算的Bi*Wi值取補(bǔ),進(jìn)行加法運(yùn)算,所得結(jié)果存回Rl,R2中。3狀態(tài)時,端 口 A,B的輸入數(shù)據(jù)變?yōu)锽r,Wi,多路選擇器706選擇輸出Rl,R2中的值,其中R1的值為加 法器704的一個輸入,加法器704的另一個輸入為Ar,在加法器704完成Ar+Br*Wr_Bi*Wi 的運(yùn)算;R2的值取補(bǔ)之后為加法器705的一個輸入,R2的另一個值為Ar,在加法器705完 成Ar-(Br*Wr-Bi*Wi)的運(yùn)算。4狀態(tài)時,端口 A,B的輸入數(shù)據(jù)變?yōu)閃r,Bi,運(yùn)算Br*Wi的 結(jié)果存入R1寄存器707,R2寄存器708中,同時將上一狀態(tài)的結(jié)果分別輸出到R3外部寄 存器710,R5外部寄存器712中。5狀態(tài)時,輸入端口 A,B的輸入數(shù)據(jù)值分別為Ai,1,多路 選擇器706選擇輸出Rl、R2中的值分別輸出到加法器704,705中和已經(jīng)完成的乘法運(yùn)算 的Br*Wi進(jìn)行加法運(yùn)算,運(yùn)算結(jié)果Bi*Wr+Br*Wi返回存入R1、R2中。在下一級的0狀態(tài)時, 把R5外部寄存器712中的數(shù)據(jù)當(dāng)作端口 A的輸入,端口 B的輸入為下一級碟形運(yùn)算所需的 旋轉(zhuǎn)因子的實(shí)數(shù)部分Wr,此時多路選擇器706選擇輸出R1,R2中的值,其中Rl的值為加法 器704的一個輸入,加法器704的另一個輸入為Ar,在加法器704完成Ai+Br*Wi+Bi*Wr的 運(yùn)算;R2的值取補(bǔ)之后為加法器705的一個輸入,R2的另一個值為Ar,在加法器705完成 Ai-(Br*ffi+Bi*ffr)的運(yùn)算,然后將運(yùn)算所得數(shù)據(jù)分別存入外部寄存器R4、R6中。這樣一級 碟形運(yùn)算全部結(jié)束,而且為下一級碟形運(yùn)算端口也準(zhǔn)備好數(shù)據(jù),可以繼續(xù)進(jìn)行下一級碟形 運(yùn)算。 本發(fā)明實(shí)施例基2FFT處理器結(jié)構(gòu)組成如圖9所示?;?FFT處理器由依次連接的 地址映射單元902,第1、2級復(fù)用模塊903和第3 log2N級復(fù)用模塊904組成,地址映射 單元902的輸入端連接N點(diǎn)數(shù)據(jù)輸入901,第3 級復(fù)用模塊904的輸出為FFT運(yùn)算 結(jié)果輸出。參見圖7,復(fù)用模塊整個碟形運(yùn)算是由內(nèi)部狀態(tài)機(jī)709控制信號進(jìn)行控制,按照 圖6所示的碟形運(yùn)算模式進(jìn)行碟形運(yùn)算。在初始狀態(tài)801,碟形運(yùn)算開始,狀態(tài)機(jī)控制信號 709為STATE = 0,各端口和寄存器值為初值,A端口 701輸入數(shù)據(jù)Br,B端口 702輸入數(shù) 據(jù)Wr,各寄存器值為0。狀態(tài)機(jī)控制信號709為STATE = 1,進(jìn)入狀態(tài)1,乘法器703輸出為 Br^ffr,多路選擇器706控制將一個加數(shù)為Br*Wr和另一個加數(shù)為“0”分別送到加法器704 和705的輸入端,加法器704和705把輸出的Br*Wr值分別存入寄存器R1和寄存器R2中, 同時變化輸入,在A端口輸入數(shù)據(jù)為Bi,在B端口的輸入數(shù)據(jù)為Wi。在進(jìn)入狀態(tài)2 (STATE = 2)后,在A端口輸入為Ar,在B端口輸入為1,多路選擇器706受控制分別將一個加數(shù)為寄 存器R1、R2中的值和另一個加數(shù)為Bi*Wi的補(bǔ)碼,送到加法器704和705,加法器704和705 將得到的結(jié)果Br*Wr-Bi*Wi寄存到寄存器R1、R2中。在進(jìn)入狀態(tài)3 (STATE = 3)后,A端口 輸入為Br,端口 B輸入為Wi,多路選擇器706控制送到加法器704的一個加數(shù)為Ar,另一個 加數(shù)為寄存器R1中的Rr*Wr-Bi*Wi,于是加法器704得到結(jié)果為Ar+(Rr*Wr_Bi*Wi)的值, 存到寄存器R1。同時,多路選擇器706控制送到加法器705的一個加數(shù)為Ar,另一個加數(shù) 為R2中的Rr*Wr-Bi*Wi的補(bǔ)碼值,這樣加法器705輸出得到Ar- (Rr*Wr_Bi*Wi)的值,存到 寄存器R2。進(jìn)入狀態(tài)4(STATE = 4)后,A端口輸入為Bi,B端口輸入為Wr,將寄存器Rl中 的數(shù)據(jù)Ar+(Rr*Wr-Bi*Wi)轉(zhuǎn)存到外部寄存器R3,將寄存器R2中的數(shù)據(jù)Ar-(Rr*Wr_Bi*Wi) 轉(zhuǎn)存到外部寄存器R5,并將Wi*Br再存入寄存器Rl和R2中。進(jìn)入狀態(tài)5 (STATE = 5)后, A端口的輸入為Ai,B端口的輸入為1,同時運(yùn)算Br*Wi+Bi*Wr,并分別存入寄存器R1和R2中,進(jìn)入狀態(tài)5 (STATE = 5)后,運(yùn)算Ai+(Wi*Br+Bi*Wr)存入寄存器R1中,因?yàn)檠a(bǔ)碼的加法 運(yùn)算與原碼的減法運(yùn)算相同,所以可以用加法器得到Ai-(Wi*Br+Wr*Bi)的結(jié)果存入寄存 器R2中,一個蝶形運(yùn)算完成。接下來,進(jìn)入802,第二個碟形運(yùn)算開始,(請修改)狀態(tài)機(jī) 控制信號709又為STATE = 0,將寄存器R5中的Ai_ (Wi*Br+Wr*Bi)數(shù)據(jù)送到A端口,B端 口的輸入數(shù)據(jù)Wr,,各外部寄存器值又為0,運(yùn)算Ai+(Wi*Br+Bi*Wr)存入寄存器R1中,運(yùn)算 Ai-(Wi*Br+Wr*Bi)存入寄存器R2中。狀態(tài)機(jī)控制信號709為STATE = 1,進(jìn)入狀態(tài)1,同時 變化輸入,在A端口輸入數(shù)據(jù)為Wr,,將寄存器R2中Ai- (Wi*Br+Wr*Bi)數(shù)據(jù)加到B端口,寄 存器R1中Ai+(Wi*Br+Bi*Wr)存入寄存器R4中,寄存器R2中的Ai-(Wi*Br+Wr*Bi)存入寄 存器R6中。以此類推,完成一個個蝶形運(yùn)算。當(dāng)A端口和B端口的輸入信號為0,不再進(jìn)行 下一個蝶形運(yùn)算,則整個蝶形運(yùn)算完成。以8點(diǎn)基2FFT運(yùn)算為例,最基本FFT運(yùn)算結(jié)構(gòu)參見圖10a,經(jīng)變換后本發(fā)明的同 址運(yùn)算結(jié)構(gòu)如圖10b所示。圖10a中1001所示為現(xiàn)有技術(shù)中FFT運(yùn)算采用的整體結(jié)構(gòu)圖, 圖10b中1003所示為本發(fā)明采用的FFT同址運(yùn)算整體結(jié)構(gòu)圖,兩者運(yùn)算結(jié)構(gòu)不同,但是運(yùn) 算結(jié)果圖10a中1002和圖10b中1004所示的運(yùn)算結(jié)果完全相同。現(xiàn)有技術(shù)中不采用復(fù)用 的碟形運(yùn)算圖和本發(fā)明采用復(fù)用的碟形運(yùn)算圖對比,由于本發(fā)明將第1、2級獨(dú)立出來進(jìn)行 復(fù)用,這樣和現(xiàn)有技術(shù)不把1、2級獨(dú)立出來復(fù)用相比會帶來工作頻率的提高,將第3、……、 log2N獨(dú)立出來進(jìn)行復(fù)用,這樣和現(xiàn)有技術(shù)沒有進(jìn)行復(fù)用的相比會帶所用的硬件芯片面積 減少。本發(fā)明的蝶形運(yùn)算單元的電路結(jié)構(gòu)移植到其他2n點(diǎn)的多點(diǎn)FFT運(yùn)算硬件結(jié)構(gòu)中, 可應(yīng)用于任何包含基2的碟形運(yùn)算,如混合基中同時有基4,基8,基2的FFT運(yùn)算。盡管上面對本發(fā)明的具體實(shí)施方式
進(jìn)行描述,但本發(fā)明不限具體實(shí)施方式
范圍, 對本技術(shù)領(lǐng)域的普通技術(shù)人員來講,只要各種變化在權(quán)利要求所限定和確定的本發(fā)明的構(gòu) 思和技術(shù)方案范圍內(nèi),這些變化是顯而易見的,一切利用本發(fā)明構(gòu)思的發(fā)明創(chuàng)造均在保護(hù) 之列。表一
權(quán)利要求
一種實(shí)現(xiàn)基2FFT計(jì)算的FFT處理器包括地址映射單元,其特征在于,還包括(1)基2的N點(diǎn)的FFT處理器由1~log2N級組成,N為FFT運(yùn)算點(diǎn)數(shù);(2)第1、2級為單列的一類復(fù)用模塊,第1、第2兩級復(fù)用單列的一類復(fù)用模塊;(3)單列的一類復(fù)用模塊中包含有一個簡化型碟形運(yùn)算單元;(4)第3~第log2N級的{(log2N)-2}級復(fù)用的另一類復(fù)用模塊;(5)另一類復(fù)用模塊中包含有一個改進(jìn)型碟形運(yùn)算單元;(6)每級采用一種同址運(yùn)算結(jié)構(gòu)。
2.根據(jù)權(quán)利要求書1所述的一種實(shí)現(xiàn)基2FFT計(jì)算的FFT處理器,其特征在于,所述第 1、2級單列的一類復(fù)用模塊中的簡化型碟形運(yùn)算單元,其蝶形運(yùn)算僅為加法運(yùn)算;第1、2級旋轉(zhuǎn)因子簡單,不用復(fù)數(shù)乘法運(yùn)算,將第1、2兩級獨(dú)立出來,僅用加法運(yùn)算就 能完成蝶形運(yùn)算,而且第1、2級復(fù)用該單列的一類復(fù)用模塊,和不單列、不復(fù)用的碟形運(yùn)算 單元相比,減少了硬件芯片面積,并能提高工作頻率。
3.根據(jù)權(quán)利要求書1或2所述的一種實(shí)現(xiàn)基2FFT計(jì)算的FFT處理器,其特征還在于, 所述單列的的一類復(fù)用模塊中的簡化型碟形運(yùn)算單元的電路結(jié)構(gòu)包括兩個加法器、兩個寄 存器以及一個多路選擇器;兩個輸入信號端與兩個加法器的一個輸入端相連接,每個加法 器的輸出端連接到對應(yīng)的一個寄存器,并使各寄存器的輸出通過一個多路選擇器反饋到對 應(yīng)加法器的另一個輸入端;該單列的一類復(fù)用模塊的電路結(jié)構(gòu)能夠?qū)崿F(xiàn)加法運(yùn)算和碟形運(yùn) 算相結(jié)合的運(yùn)算,與將加法和碟形運(yùn)算的加減法分開運(yùn)算相比,能使硬件電路芯片的面積 縮小。
4.根據(jù)權(quán)利要求書1所述的一種實(shí)現(xiàn)基2FFT計(jì)算的FFT處理器,其特征還在于,所述 第3 第Iog2N級復(fù)用的另一類復(fù)用模塊,該復(fù)用模塊為一個獨(dú)立的硬件;第3 Iog2N級 的每一級的旋轉(zhuǎn)因子為復(fù)數(shù),各級的碟形運(yùn)算都有復(fù)數(shù)乘法運(yùn)算,每級所需的硬件電路結(jié) 構(gòu)相同,各級碟形運(yùn)算都復(fù)用這一級獨(dú)立的硬件,第3 第Iog2N級的每一級復(fù)用該另一類 復(fù)用模塊是通過狀態(tài)機(jī)控制多路選擇器來實(shí)現(xiàn)數(shù)據(jù)輸入和旋轉(zhuǎn)因子的選擇控制,從而完成 第3 第Iog2N各級的運(yùn)算,該復(fù)用結(jié)構(gòu)和不復(fù)用相比,簡化了地址映射單元的結(jié)構(gòu),減少 了硬件芯片面積。
5.根據(jù)權(quán)利要求書1或4所述的一種實(shí)現(xiàn)基2FFT計(jì)算的FFT處理器,其特征還在于, 所述另一類復(fù)用模塊中的改進(jìn)型碟形運(yùn)算單元的電路結(jié)構(gòu)包括一個乘法器、兩個加法器、 兩個寄存器以及一個多路選擇器;乘法器的輸出和兩個加法器的一個輸入端相連接,每個 加法器的輸出端連接到對應(yīng)的一個寄存器,并使各寄存器的輸出通過一個多路選擇器反饋 到對應(yīng)加法器的另一個輸入端;該復(fù)用模塊結(jié)構(gòu)實(shí)現(xiàn)復(fù)數(shù)乘法和碟形運(yùn)算相結(jié)合的運(yùn)算, 與將復(fù)數(shù)乘法和碟形運(yùn)算的加減法分開的其他算法相比,能使硬件電路芯片的面積成倍縮 小。
6.根據(jù)權(quán)利要求書1或2或3或4所述的一種實(shí)現(xiàn)基2FFT計(jì)算的FFT處理器,其特征 還在于,所述同址運(yùn)算結(jié)構(gòu)是在輸入數(shù)據(jù)進(jìn)行一次地址映射變換之后,以后同類各級結(jié)構(gòu) 相同,通過簡單的復(fù)用完成地址映射的運(yùn)算結(jié)構(gòu);同類每級采用一種同址運(yùn)算結(jié)構(gòu),其優(yōu)勢 在于每級結(jié)構(gòu)相同,硬件的復(fù)雜度得以降低。
7.根據(jù)權(quán)利要求書5所述的一種實(shí)現(xiàn)基2FFT計(jì)算的FFT處理器,其特征還在于,所述 同址運(yùn)算結(jié)構(gòu)是在輸入數(shù)據(jù)進(jìn)行一次地址映射變換之后,以后同類各級結(jié)構(gòu)相同,通過簡單的復(fù)用完成地址映射的運(yùn)算結(jié)構(gòu);同類每級采用一種同址運(yùn)算結(jié)構(gòu),其優(yōu)勢在于每級結(jié) 構(gòu)相同,硬件的復(fù)雜度得以降低。
8.根據(jù)權(quán)利要求書1或7所述的一種實(shí)現(xiàn)基2FFT計(jì)算的FFT處理器,其特征還在于, 所述同址運(yùn)算結(jié)構(gòu)為采用按時間抽取算法的通用性運(yùn)算結(jié)構(gòu),蝶形運(yùn)算采用包括一個乘法 器、兩個加法器、兩個寄存器以及一個多路選擇器的改進(jìn)型碟形運(yùn)算單元作流水運(yùn)算,得到 規(guī)格化的運(yùn)算結(jié)果,完成一次蝶形運(yùn)算花費(fèi)6個系統(tǒng)時鐘周期,增加或減少運(yùn)算點(diǎn)數(shù)N只需 要增加存儲空間和地址發(fā)生器位數(shù)。
全文摘要
公開一種實(shí)現(xiàn)基2FFT計(jì)算的FFT處理器,對于Nn點(diǎn)的基2FFT處理器,包括地址映射模塊,第一、二級復(fù)用模塊,第三、……、log2N級復(fù)用模塊,N為2的整數(shù)次冪。該實(shí)現(xiàn)方法采用一種同址運(yùn)算結(jié)構(gòu),其優(yōu)勢在于每級復(fù)用模塊結(jié)構(gòu)相同,在第一級復(fù)用模塊輸入數(shù)據(jù)進(jìn)行一次地址映射變換,以后各級通過簡單復(fù)用完成地址映射,降低硬件的復(fù)雜度,第一、二級為單列復(fù)用,既減少硬件面積,又提高FFT工作頻率,第三至第log2N級復(fù)用模塊采用一種改進(jìn)型碟形運(yùn)算單元。本發(fā)明的改進(jìn)型碟形運(yùn)算單元僅用1個乘法器和2個加法器在6個時鐘周期內(nèi)完成一級復(fù)用模塊的整個碟形運(yùn)算。與已有技術(shù)的基2-FFT中一級模塊碟形運(yùn)算單元結(jié)構(gòu)配置了4個乘法器和6個加法器相比,增加4個時鐘周期,但硬件電路和芯片面積以及器件功耗均可大幅度減小。
文檔編號G06F17/14GK101847137SQ20091009723
公開日2010年9月29日 申請日期2009年3月27日 優(yōu)先權(quán)日2009年3月27日
發(fā)明者何文濤, 李曉江, 桂瓊, 韓少男 申請人:杭州中科微電子有限公司