一種fft并行處理裝置和方法
【專利摘要】本發(fā)明提供一種FFT并行處理裝置和方法,該裝置支持一種或多種基數(shù)的蝶形運(yùn)算,包括FFT控制器和蝶形運(yùn)算器。其中,F(xiàn)FT控制器用于根據(jù)并行度將FFT運(yùn)算分解為一級或多級蝶形運(yùn)算,所述并行度是所述裝置支持的一種或多種基數(shù)的倍數(shù)。蝶形運(yùn)算器用于順序執(zhí)行每一級蝶形運(yùn)算,其中在每一級蝶形運(yùn)算中執(zhí)行一次或多次蝶形運(yùn)算,并且每一次蝶形運(yùn)算的基數(shù)是所述裝置支持的基數(shù)。利用本發(fā)明提供的裝置和方法,可在保持訪存并行度與系統(tǒng)并行度一致的情況下,通過簡單的地址運(yùn)算來避免訪存沖突問題。此外,還可以支持較高的FFT并行化程度,在提高運(yùn)算速度的同時(shí)將硬件資源保持在較低的水平。
【專利說明】一種FFT并行處理裝置和方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于數(shù)字信號處理領(lǐng)域,尤其涉及快速傅里葉變換(Fast Four ierTransform, FFT)領(lǐng)域,更具體地,涉及一種FFT并行處理裝置和方法。
【背景技術(shù)】
[0002]離散傅里葉變換(DiscreteFourier Transform, DFT)及其逆變換(InverseDiscrete Fourier Transform, IDFT)常被運(yùn)用于數(shù)字信號處理領(lǐng)域,它們是將信號的時(shí)域和頻域聯(lián)系起來的橋梁。然而由于DFT的復(fù)雜度過大,導(dǎo)致其實(shí)用性受到了限制。隨著DFT的各種快速算法FFT的出現(xiàn),將DFT算法的復(fù)雜度從O (η2)下降到了 O (nlogn),從而加速了將DFT從理論運(yùn)用到實(shí)踐。
[0003]目前,在現(xiàn)代通信技術(shù)和數(shù)字信號處理領(lǐng)域,F(xiàn)FT的應(yīng)用非常廣泛。在正交頻分復(fù)用系統(tǒng)(Orthogonal Frequency Division Multiplexing, OFDM)中,可以根據(jù)多載波的特性利用IFFT或FFT變換對一個(gè)OFDM符號進(jìn)行調(diào)制或解調(diào)。基于IFFT/FFT的多載波調(diào)制技術(shù)已被大大擴(kuò)展到不同類型的通信系統(tǒng)中,如數(shù)字音頻廣播、數(shù)字視頻廣播、無線局域網(wǎng)等。在最新的第四代(4th Generation,4G)移動(dòng)通信系統(tǒng)中,也采用了 OFDM技術(shù)。由于4G對數(shù)據(jù)的吞吐量要求比較高,所以O(shè)FDM符號的周期設(shè)計(jì)得比較短。例如,在20MHz帶寬的LTE (Long Term Evolution,長期演進(jìn))系統(tǒng)中,一個(gè)OFDM符號的周期為71.3微秒,這對FFT的處理速度提出了更高的要求。另外,LTE系統(tǒng)中還必須支持從128到2048的5種長度為2n的FFT,因此,提高FFT處理效率以及靈活性具有很高的實(shí)際應(yīng)用價(jià)值。
[0004]FFT算法一般采用庫里一圖基算法,利用分治的思想將長的數(shù)據(jù)序列轉(zhuǎn)化為短的數(shù)據(jù)序列再進(jìn)行變換。在轉(zhuǎn)化的過程中,由于較長的序列可以重復(fù)利用較短序列計(jì)算出的結(jié)果,從而可以減少乘法和加法的次數(shù)。以一個(gè)長度為16點(diǎn)的序列為例,假設(shè)短序列的長度為4并滿足16=42。這里短序列的長度“4”代表一個(gè)基/基數(shù)(Radix),即一個(gè)基4的蝶形運(yùn)算;上標(biāo)“2”代表長序列可以劃分為這類短序列的級數(shù),即這個(gè)16點(diǎn)的序列可以劃分為兩級的基4蝶形運(yùn)算。又如對于一個(gè)長度為2048點(diǎn)的序列,2048=162X 8,即長度為2048的序列可以劃分為兩級基16的蝶形運(yùn)算以及一級基8的蝶形運(yùn)算。從上述兩個(gè)例子中可以看到,雖然級與級之間的蝶形運(yùn)算有所不同,但是每一級中的蝶形運(yùn)算對數(shù)據(jù)的操作卻具有高度的相似性,因此可以通過并行化的方式來提高FFT的處理效率。
[0005]基于庫里一圖基的FFT算法有一個(gè)特點(diǎn),即級與級之間的數(shù)據(jù)具有高度的依賴關(guān)系,下一級蝶形運(yùn)算必須等到上一級蝶形運(yùn)算完成之后才能進(jìn)行。因此,大部分FFT裝置采用的方式是使各級蝶形運(yùn)算串行執(zhí)行并最大化每級蝶形運(yùn)算的并行度。然而,傳統(tǒng)FFT裝置在實(shí)現(xiàn)時(shí)存在兩個(gè)問題。一個(gè)問題是前一級數(shù)據(jù)在送到下一級進(jìn)行運(yùn)算前往往需要進(jìn)行數(shù)據(jù)倒換,在倒換的過程中常常存在訪存沖突的問題。解決這個(gè)問題的方法目前有兩種:一種是不進(jìn)行數(shù)據(jù)倒換,直接利用復(fù)雜的地址產(chǎn)生單元來產(chǎn)生下一級蝶形運(yùn)算需要的數(shù)據(jù)所在的地址,并直接將數(shù)據(jù)從存儲器中讀出;另一種方法是提高存儲器的訪存端口并利用結(jié)構(gòu)化的存儲結(jié)構(gòu)來避免訪存沖突。在前一種方法中,數(shù)據(jù)仍然是以串行的方式從存儲器中取出,訪存的并行度低;后一種方案可以在不損失并行度的情況下解決訪存沖突,但是帶來了巨大的硬件開銷。另外一個(gè)問題是系統(tǒng)并行度設(shè)計(jì)過大會造成較大的硬件復(fù)雜度。傳統(tǒng)FFT裝置使用的蝶形運(yùn)算單元支持的基與裝置的并行度相同,即如果裝置的并行度為4,那么裝置就支持基4的蝶形運(yùn)算。裝置并行度越高,蝶形運(yùn)算的硬件資源消耗也就越大。
【發(fā)明內(nèi)容】
[0006]為解決上述問題,根據(jù)本發(fā)明的一個(gè)實(shí)施例,提供一種FFT并行處理裝置,其支持一種或多種基數(shù)的蝶形運(yùn)算,該裝置包括:
[0007]FFT控制器,用于根據(jù)并行度將FFT運(yùn)算分解為一級或多級蝶形運(yùn)算;其中,所述并行度是所述裝置支持的一種或多種基數(shù)的倍數(shù);
[0008]蝶形運(yùn)算器,用于順序執(zhí)行每一級蝶形運(yùn)算;其中,在每一級蝶形運(yùn)算中執(zhí)行一次或多次蝶形運(yùn)算,并且每一次蝶形運(yùn)算的基數(shù)是所述裝置支持的基數(shù)。
[0009]在一個(gè)實(shí)施例中,所述FFT控制器用于根據(jù)下式將N點(diǎn)FFT運(yùn)算分解為m級點(diǎn)數(shù)為η或η’的蝶形運(yùn)算:
[0010]N=N1XN2X …XNni
[0011]其中,N1, N2,…N^^n, Nm=n,,m為正整數(shù),η為并行度,η’小于等于η且為所述裝
置支持的一種或多種基數(shù)的倍數(shù)。
[0012]在一個(gè)實(shí)施例中,所述FFT控制器還用于確定每一級蝶形運(yùn)算中執(zhí)行蝶形運(yùn)算的次數(shù)以及每一次蝶形運(yùn)算的基 數(shù);其中,每一級蝶形運(yùn)算的點(diǎn)數(shù)等于該級蝶形運(yùn)算中每一次蝶形運(yùn)算的基數(shù)的乘積。
[0013]在一個(gè)實(shí)施例中,所述裝置還包括:
[0014]向量數(shù)據(jù)存儲器,用于在執(zhí)行每一級蝶形運(yùn)算前對參與該級蝶形運(yùn)算的數(shù)據(jù)進(jìn)行處理,使其符合該級蝶形運(yùn)算的輸入順序,并且將處理后的數(shù)據(jù)按順序發(fā)送到所述蝶形運(yùn)算器。
[0015]在進(jìn)一步的實(shí)施例中,所述向量數(shù)據(jù)存儲器還包括:數(shù)量為并行度η的存儲單元,其中,每個(gè)存儲單元的每一行依次存儲序號相差為η的輸入數(shù)據(jù);
[0016]其中,在執(zhí)行每一級蝶形運(yùn)算前,所述向量數(shù)據(jù)存儲器每次重排η個(gè)數(shù)據(jù)直到所有輸入數(shù)據(jù)均被重排,使得重排后參與每一級蝶形運(yùn)算的一組數(shù)據(jù)存放在每個(gè)存儲單元的同一行;
[0017]所述向量數(shù)據(jù)存儲器按行取出每個(gè)存儲單元的同一行數(shù)據(jù),將每個(gè)存儲單元的同一行數(shù)據(jù)存儲到其另一塊空間。
[0018]在進(jìn)一步的實(shí)施例中,所述向量數(shù)據(jù)存儲器將每個(gè)存儲單元的同一行數(shù)據(jù)存儲到其另一塊空間之前,還對所述每個(gè)存儲單元的同一行數(shù)據(jù)進(jìn)行數(shù)據(jù)移位。
[0019]在一個(gè)實(shí)施例中,所述向量數(shù)據(jù)存儲器還用于在所述蝶形運(yùn)算器執(zhí)行最后一級蝶形運(yùn)算后對所述蝶形運(yùn)算器輸出的數(shù)據(jù)進(jìn)行倒換,并且存儲倒換后的數(shù)據(jù)。
[0020]在一個(gè)實(shí)施例中,所述蝶形運(yùn)算器包括:
[0021]數(shù)據(jù)重排單元,用于在執(zhí)行每一次蝶形運(yùn)算之前,對參與該次蝶形運(yùn)算的數(shù)據(jù)進(jìn)行重排,并且在執(zhí)行最后一次蝶形運(yùn)算之后,對運(yùn)算后的數(shù)據(jù)進(jìn)行重排;以及
[0022]蝶形運(yùn)算單元,用于執(zhí)行一次蝶形運(yùn)算。[0023]在進(jìn)一步的實(shí)施例中,所述FFT控制器還用于根據(jù)對FFT運(yùn)算所作的分解確定每一次蝶形運(yùn)算的重排規(guī)則。
[0024]在一個(gè)實(shí)施例中,所述裝置還包括:旋轉(zhuǎn)因子存儲器,用于在執(zhí)行每一級蝶形運(yùn)算前將相應(yīng)的旋轉(zhuǎn)因子發(fā)送到所述蝶形運(yùn)算器。在另一個(gè)實(shí)施例中,所述裝置還包括:外部數(shù)據(jù)接口,用于所述向量數(shù)據(jù)存儲器和外部進(jìn)行數(shù)據(jù)交互。
[0025]根據(jù)本發(fā)明的一個(gè)實(shí)施例,還提供一種用于數(shù)字信號處理的FFT并行處理方法,其支持一種或多種基數(shù)的蝶形運(yùn)算,所述方法包括:
[0026]步驟I)、根據(jù)并行度將對于所述數(shù)字信號的FFT運(yùn)算分解為一級或多級蝶形運(yùn)算;其中,所述并行度是所述方法支持的一種或多種基數(shù)的倍數(shù);
[0027]步驟2)、順序執(zhí)行每一級蝶形運(yùn)算;其中,在每一級蝶形運(yùn)算中執(zhí)行一次或多次蝶形運(yùn)算,并且每一次蝶形運(yùn)算的基數(shù)是所述方法支持的基數(shù)。
[0028]在一個(gè)實(shí)施例中,在步驟I)中,根據(jù)下式將N點(diǎn)FFT運(yùn)算分解為m級點(diǎn)數(shù)為η或η’的蝶形運(yùn)算:
[0029]N=N1XN2X …XNni
[0030]其中,N1, N2,...Nlrt=Ii, Nm=n’,m為正整數(shù),η為并行度,η’小于等于η且為所述裝置支持的一種或多種基數(shù)的倍數(shù)。
[0031 ] 在一個(gè)實(shí)施例中,步驟I)還包括:
[0032]確定每一級蝶形運(yùn)算中執(zhí)行蝶形運(yùn)算的次數(shù)以及每一次蝶形運(yùn)算的基數(shù);其中,每一級蝶形運(yùn)算的點(diǎn)數(shù)等于該級蝶形運(yùn)算中每一次蝶形運(yùn)算的基數(shù)的乘積。
[0033]在一個(gè)實(shí)施例中,步驟2)還包括:在執(zhí)行每一級蝶形運(yùn)算前對參與該級蝶形運(yùn)算的數(shù)據(jù)進(jìn)行處理,使其符合該級蝶形運(yùn)算的輸入順序。
[0034]在進(jìn)一步的實(shí)施例中,在步驟2)之后,還包括:在執(zhí)彳丁最后一級蝶形運(yùn)算后對運(yùn)算后的數(shù)據(jù)進(jìn)行倒換,并且存儲倒換后的數(shù)據(jù)。[0035]在一個(gè)實(shí)施例中,步驟2)還包括:在執(zhí)行每一次蝶形運(yùn)算之前,對參與該次蝶形運(yùn)算的數(shù)據(jù)進(jìn)行重排,并且在執(zhí)行最后一次蝶形運(yùn)算之后,對輸出的數(shù)據(jù)進(jìn)行重排。
[0036]在進(jìn)一步的實(shí)施例中,步驟I)還包括:根據(jù)對FFT運(yùn)算所作的分解,確定每一次蝶形運(yùn)算的重排規(guī)則。
[0037]采用本發(fā)明可以達(dá)到如下的有益效果:
[0038]由蝶形運(yùn)算器在每一級蝶形運(yùn)算完成若干個(gè)基相同或不同的蝶形運(yùn)算,以支持較高的FFT并行化程度,在提高運(yùn)算速度的同時(shí)將硬件資源保持在較低的水平。此外,利用向量數(shù)據(jù)存儲器完成數(shù)據(jù)的倒換工作,在保持訪存并行度與裝置并行度一致的情況下,通過簡單的地址運(yùn)算避免了訪存沖突的問題。
【專利附圖】
【附圖說明】
[0039]圖1是根據(jù)本發(fā)明一個(gè)實(shí)施例的FFT并行處理裝置的框圖;
[0040]圖2是根據(jù)本發(fā)明一個(gè)實(shí)施例的FFT并行處理方法的流程圖;
[0041]圖3是使用本發(fā)明提供的FFT并行處理裝置和方法執(zhí)行2048點(diǎn)FFT并行處理的流程圖;
[0042]圖4是根據(jù)本發(fā)明一個(gè)實(shí)施例的倒換數(shù)據(jù)的示意圖;[0043]圖5是使用本發(fā)明提供的FFT并行處理裝置和方法執(zhí)行2048點(diǎn)FFT的第一級蝶形運(yùn)算的流程圖;
[0044]圖6是使用本發(fā)明提供的FFT并行處理裝置和方法執(zhí)行2048點(diǎn)FFT的第一級蝶形運(yùn)算的數(shù)據(jù)流示意圖;以及
[0045]圖7是使用本發(fā)明提供的FFT并行處理裝置和方法執(zhí)行2048點(diǎn)FFT的第三級蝶形運(yùn)算的數(shù)據(jù)流示意圖。
【具體實(shí)施方式】
[0046]下面結(jié)合附圖和【具體實(shí)施方式】對本發(fā)明加以說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0047]根據(jù)本發(fā)明的一個(gè)實(shí)施例,提供一種FFT并行處理裝置。如圖1所示,該裝置包括FFT控制器101、向量數(shù)據(jù)存儲器102、蝶形運(yùn)算器103、旋轉(zhuǎn)因子存儲器104和外部數(shù)據(jù)接口 105。該FFT并行處理的裝置可用于實(shí)現(xiàn)N點(diǎn)FFT的并行運(yùn)算,其中點(diǎn)數(shù)N取決于該裝置支持的基數(shù),如基數(shù)為2,則#21 ;如基數(shù)為3,則N=Si ;如基數(shù)同時(shí)有2和3,則#21 X 3j。下面,將對這五個(gè)模塊分別進(jìn)行描述:
[0048]一、FFT 控制器 101
[0049]FFT控制器101用于FFT執(zhí)行過程中的流程控制,包括數(shù)據(jù)的輸入和輸出、數(shù)據(jù)在模塊之間的交互、數(shù)據(jù)在向量存儲器中存放地址的計(jì)算、FFT分解級數(shù)的確定、每一級中蝶形運(yùn)算的次數(shù)和基數(shù)的確定、倒換規(guī)則的確定、每次蝶形運(yùn)算前重排規(guī)則的確定,以及旋轉(zhuǎn)因子的選取與導(dǎo)入控制等等。
[0050]在一個(gè)實(shí)施例中,F(xiàn)FT控制器101可根據(jù)裝置的并行化程度(簡稱并行度)η確定一個(gè)長度為N點(diǎn)的FFT所要分解的級數(shù)m,即N可以分解為:
[0051]N=nXnX...XnXn’
[0052]等式右邊共m項(xiàng)。其中,除最后一級外,每一級都可以看成一個(gè)基η的FFT蝶形運(yùn)算。由于FFT長度N不一定剛好是η的整次冪,因此最后一級可能是一個(gè)小于η的基η’且并行化程度為η的蝶形運(yùn)算。
[0053]二、向量數(shù)據(jù)存儲器102
[0054]向量數(shù)據(jù)存儲器102可與蝶形運(yùn)算器103以及外部數(shù)據(jù)接口 105交互,用于存儲每一級蝶形運(yùn)算的輸入和輸出數(shù)據(jù),并且還可以執(zhí)行數(shù)據(jù)在內(nèi)存中的倒換。
[0055]由FFT的分解規(guī)則可知,參與每一級蝶形運(yùn)算的數(shù)據(jù)在FFT的數(shù)據(jù)序列中不是連續(xù)排列的,因此需要在執(zhí)行每一級蝶形運(yùn)算前將參與蝶形運(yùn)算的每一組數(shù)據(jù)從FFT的數(shù)據(jù)序列中挑選出來并順序地存放在向量數(shù)據(jù)存儲器102中,以方便進(jìn)行后續(xù)的蝶形運(yùn)算。
[0056]在一個(gè)實(shí)施例中,可在向量數(shù)據(jù)存儲器102內(nèi)進(jìn)行數(shù)據(jù)倒換以實(shí)現(xiàn)將數(shù)據(jù)按順序輸入蝶形運(yùn)算器103。FFT控制器101在分解FFT后即可確定參與每一級蝶形運(yùn)算的數(shù)據(jù)在向量數(shù)據(jù)存儲器102中的倒換規(guī)則。例如,N點(diǎn)FFT可首先分解為N=N1Xn,其中η為并行化程度,則參與下一級蝶形運(yùn)算的數(shù)據(jù)需要從每N1個(gè)數(shù)據(jù)中挑出一個(gè)來且每次挑出η個(gè)送入蝶形運(yùn)算器103。
[0057]要實(shí)現(xiàn)上述倒換,在一個(gè)實(shí)施例中,可將向量數(shù)據(jù)存儲器102構(gòu)造為包括多個(gè)存儲單元,每個(gè)存儲單元可以存儲FFT數(shù)據(jù)序列中的多個(gè)數(shù)據(jù)。如圖4所示,可以將每個(gè)存儲單元(即bank)表示為列,每個(gè)存儲單元(每列)可以有多行,每行可存儲一個(gè)數(shù)據(jù)。所有的存儲單元可以在一個(gè)時(shí)鐘周期內(nèi)被同時(shí)訪問,但是同一個(gè)存儲單元內(nèi)部的不同地址不能在一個(gè)時(shí)鐘周期內(nèi)被同時(shí)訪問。存儲單元的個(gè)數(shù)等于裝置的并行化程度n,使得訪存并行度能夠與裝置的并行化程度一致。輸入(外部輸入或蝶形運(yùn)算單元輸出)的η個(gè)數(shù)據(jù)可以依次存儲在每個(gè)存儲單元中的一行,一行存儲完之后,后續(xù)數(shù)據(jù)可以依次存儲在每個(gè)存儲單元的下一行。例如,下標(biāo)(序號)為0-15的數(shù)據(jù)分別存儲在存儲單元0-15 (bank0-bankl5)的第O行,下標(biāo)為16-31的數(shù)據(jù)分別存儲在存儲單元0-15的第I行,以此類推。
[0058]利用上述向量數(shù)據(jù)存儲器102的存儲單元特性,可以以η為訪存并行度將外部輸入的FFT數(shù)據(jù)在向量數(shù)據(jù)存儲器102中進(jìn)行重排列,使得參與蝶形運(yùn)算的每組數(shù)據(jù)可以按行排列,其中所有存儲單元的每一行的數(shù)據(jù)是參與一級蝶形運(yùn)算的一組(或多組)數(shù)據(jù)。倒換后,接著可以從向量數(shù)據(jù)存儲器102中按行取出這些數(shù)據(jù),根據(jù)由FFT控制器101初始化的行指針將這些數(shù)據(jù)存儲到向量數(shù)據(jù)存儲器102中的另一塊空間。在輸出時(shí),可以從這塊空間按順序取出數(shù)據(jù)發(fā)送給蝶形運(yùn)算器103。
[0059]在一個(gè)實(shí)施例中,由于在一個(gè)時(shí)鐘周期只能將數(shù)據(jù)寫入不同的存儲單元。因此在倒換存儲單元中的η個(gè)數(shù)據(jù)時(shí),需要將η個(gè)數(shù)據(jù)寫入不同的存儲單元(即列),因此,倒換后的數(shù)據(jù)在每一行中的位置與參與蝶形運(yùn)算的排列規(guī)則不同。然而,在取數(shù)的時(shí)候只需要順序按行取出再進(jìn)行一定的數(shù)據(jù)移位即可保持一致。
[0060]在蝶形運(yùn)算器103執(zhí)行完所有蝶形運(yùn)算后,向量數(shù)據(jù)存儲器102還需要對從蝶形運(yùn)算器103發(fā)送來的數(shù)據(jù)進(jìn)行倒換并存儲,使得能夠按順序向外輸出這些數(shù)據(jù)。
[0061]這里的裝置并行化程度η是由該裝置支持的基數(shù)決定的,裝置的并行化程度通常是基數(shù)的倍數(shù)。在一個(gè)實(shí)施例中,如果裝置支持多種基,則裝置的并行化程度是基數(shù)的公倍數(shù)。例如,裝置支持基2和基3,則該裝置的并行化程度可以設(shè)計(jì)為6、12等等。
[0062]三、蝶形運(yùn)算器103
[0063]蝶形運(yùn)算器103可用于完成一個(gè)基數(shù)r由裝置確定的、點(diǎn)數(shù)由并行化程度確定的η點(diǎn)FFT運(yùn)算。由于裝置的并行化程度η是裝置所支持的基數(shù)的倍數(shù),因此在要在一級蝶形運(yùn)算中完成η點(diǎn)FFT運(yùn)算,需要將這η點(diǎn)運(yùn)算劃分為一次或多次基r的蝶形運(yùn)算,即:
[0064]n=rXrX...Xr
[0065]其中,r可以是單一的數(shù)值,也可以是多種基數(shù)。例如,對于并行度為16,且裝置支持基4和基2的蝶形運(yùn)算時(shí),可將一級16點(diǎn)的蝶形運(yùn)算分解為16=4X4、16=2X2X2X2或者其他組合方式??捎蒄FT控制器101來配置蝶形運(yùn)算器103得到每一級蝶形運(yùn)算的組合方式,即由FFT控制器101確定每一級蝶形運(yùn)算中調(diào)用蝶形運(yùn)算器103的次數(shù)、每次蝶形運(yùn)算的基以及重排規(guī)則,從而進(jìn)行每一級的蝶形運(yùn)算。
[0066]在一個(gè)實(shí)施例中,蝶形運(yùn)算器103可包括數(shù)據(jù)重排單元1031和蝶形運(yùn)算單元1032。其中,數(shù)據(jù)重排單元1031可以根據(jù)由FFT控制器101確定的重排規(guī)則對進(jìn)入蝶形運(yùn)算器103的一組數(shù)據(jù)的順序進(jìn)行重排列,它是對數(shù)據(jù)按照位反轉(zhuǎn)的規(guī)則進(jìn)行亂序排列的重要部件,表I示出了四位二進(jìn)制數(shù)進(jìn)行按位反轉(zhuǎn)的規(guī)則。在數(shù)據(jù)重排單元1031對數(shù)據(jù)進(jìn)行重排列之前,F(xiàn)FT控制器101需要先配置數(shù)據(jù)重排單元1031的重排規(guī)則,保證數(shù)據(jù)按照預(yù)定的方式進(jìn)行重排列。在確定了每一級蝶形運(yùn)算的次數(shù)后,數(shù)據(jù)重排單元1031在每一次蝶形運(yùn)算前進(jìn)行一次數(shù)據(jù)重排。并且在這一級的蝶形運(yùn)算完成后,在將數(shù)據(jù)輸出到向量數(shù)據(jù)存儲器102之前,還要進(jìn)行一次數(shù)據(jù)重排。由于數(shù)據(jù)重排單元1031的重排作用,從蝶形運(yùn)算器103的外部來看,數(shù)據(jù)是順序進(jìn)入蝶形運(yùn)算器103且按順序輸出的。
[0067]表1
【權(quán)利要求】
1.一種FFT并行處理裝置,其支持一種或多種基數(shù)的蝶形運(yùn)算,所述裝置包括: FFT控制器(101),用于根據(jù)并行度將FFT運(yùn)算分解為一級或多級蝶形運(yùn)算;其中,所述并行度是所述裝置支持的一種或多種基數(shù)的倍數(shù); 蝶形運(yùn)算器(103),用于順序執(zhí)行每一級蝶形運(yùn)算;其中,在每一級蝶形運(yùn)算中執(zhí)行一次或多次蝶形運(yùn)算,并且每一次蝶形運(yùn)算的基數(shù)是所述裝置支持的基數(shù)。
2.根據(jù)權(quán)利要求1所述的裝置,其中,所述FFT控制器(101)用于根據(jù)下式將N點(diǎn)FFT運(yùn)算分解為m級點(diǎn)數(shù)為n或n’的蝶形運(yùn)算: N=N1XN2X- XNm 其中,N1, N2,...Nm-l=n, Nm=n,,m為正整數(shù),n為并行度,n’小于等于n且為所述裝置支持的一種或多種基數(shù)的倍數(shù)。
3.根據(jù)權(quán)利要求1或2所述的裝置,其中,所述FFT控制器(101)還用于確定每一級蝶形運(yùn)算中執(zhí)行蝶形運(yùn)算的次數(shù)以及每一次蝶形運(yùn)算的基數(shù);其中,每一級蝶形運(yùn)算的點(diǎn)數(shù)等于該級蝶形運(yùn)算中每一次蝶形運(yùn)算的基數(shù)的乘積。
4.根據(jù)權(quán)利要求1或2所述的裝置,其中,所述裝置還包括: 向量數(shù)據(jù)存儲器(102),用于在執(zhí)行每一級蝶形運(yùn)算前對參與該級蝶形運(yùn)算的數(shù)據(jù)進(jìn)行處理,使其符合該級蝶形運(yùn)算的輸入順序,并且將處理后的數(shù)據(jù)按順序發(fā)送到所述蝶形運(yùn)算器(103)。
5.根據(jù)權(quán)利要求4所述的裝置,其中,所述向量數(shù)據(jù)存儲器(102)還包括: 數(shù)量為并行度η的存儲單元,其中,每個(gè)存儲單元的每一行依次存儲序號相差為η的輸入數(shù)據(jù); 其中,在執(zhí)行每一級蝶形運(yùn)算前,所述向量數(shù)據(jù)存儲器(102)每次重排η個(gè)數(shù)據(jù)直到所有輸入數(shù)據(jù)均被重排,使得重排后參與每一級蝶形運(yùn)算的一組數(shù)據(jù)存放在每個(gè)存儲單元的同一行; 所述向量數(shù)據(jù)存儲器(102 )按行取出每個(gè)存儲單元的同一行數(shù)據(jù),將每個(gè)存儲單元的同一行數(shù)據(jù)存儲到其另一塊空間。
6.根據(jù)權(quán)利要求5所述的裝置,其中,所述向量數(shù)據(jù)存儲器(102)將每個(gè)存儲單元的同一行數(shù)據(jù)存儲到其另一塊空間之前,還對所述每個(gè)存儲單元的同一行數(shù)據(jù)進(jìn)行數(shù)據(jù)移位。
7.根據(jù)權(quán)利要求4所述的裝置,其中,所述向量數(shù)據(jù)存儲器(102)還用于在所述蝶形運(yùn)算器(103)執(zhí)行最后一級蝶形運(yùn)算后對所述蝶形運(yùn)算器(103)輸出的數(shù)據(jù)進(jìn)行倒換,并且存儲倒換后的數(shù)據(jù)。
8.根據(jù)權(quán)利要求1或2所述的裝置,其中,所述蝶形運(yùn)算器(103)包括: 數(shù)據(jù)重排單元(1031),用于在執(zhí)行每一次蝶形運(yùn)算之前,對參與該次蝶形運(yùn)算的數(shù)據(jù)進(jìn)行重排,并且在執(zhí)行最后一次蝶形運(yùn)算之后,對運(yùn)算后的數(shù)據(jù)進(jìn)行重排;以及 蝶形運(yùn)算單元(1032 ),用于執(zhí)行一次蝶形運(yùn)算。
9.根據(jù)權(quán)利要求8所述的裝置,其中,所述FFT控制器(101)還用于根據(jù)對FFT運(yùn)算所作的分解,確定每一次蝶形運(yùn)算的重排規(guī)則。
10.根據(jù)權(quán)利要求1或2所述的裝置,還包括: 旋轉(zhuǎn)因子存儲器(104),用于在執(zhí)行每一級蝶形運(yùn)算前,將相應(yīng)的旋轉(zhuǎn)因子發(fā)送到所述蝶形運(yùn)算器(103)。
11.根據(jù)權(quán)利要求1或2所述的裝置,還包括: 外部數(shù)據(jù)接口(105),用于所述向量數(shù)據(jù)存儲器(102)和外部進(jìn)行數(shù)據(jù)交互。
12.一種用于數(shù)字信號處理的FFT并行處理方法,其支持一種或多種基數(shù)的蝶形運(yùn)算,所述方法包括: 步驟I)、根據(jù)并行度將對于所述數(shù)字信號的FFT運(yùn)算分解為一級或多級蝶形運(yùn)算;其中,所述并行度是所述方法支持的一種或多種基數(shù)的倍數(shù); 步驟2)、順序執(zhí)行每一級蝶形運(yùn)算;其中,在每一級蝶形運(yùn)算中執(zhí)行一次或多次蝶形運(yùn)算,并且每一次蝶形運(yùn)算的基數(shù)是所述方法支持的基數(shù)。
13.根據(jù)權(quán)利要求12所述的方法,在步驟I)中,根據(jù)下式將N點(diǎn)FFT運(yùn)算分解為m級點(diǎn)數(shù)為n或n’的蝶形運(yùn)算: N=N1XN2X- XNm 其中,N1, N2,...Nnrl=Ii, Nm=n,,m為正整數(shù),n為并行度,n’小于等于n且為所述裝置支持的一種或多種基數(shù)的倍數(shù)。
14.根據(jù)權(quán)利要求12所述的方法,其中,步驟I)還包括: 確定每一級蝶形運(yùn)算中執(zhí)行蝶形運(yùn)算的次數(shù)以及每一次蝶形運(yùn)算的基數(shù);其中,每一級蝶形運(yùn)算的點(diǎn)數(shù)等于該級蝶形運(yùn)算中每一次蝶形運(yùn)算的基數(shù)的乘積。
15.根據(jù)權(quán)利要求12所述的方法,其中,步驟2)還包括: 在執(zhí)行每一級蝶形運(yùn)算前對參與該級蝶形運(yùn)算的數(shù)據(jù)進(jìn)行處理,使其符合該級蝶形運(yùn)算的輸入順序。
16.根據(jù)權(quán)利要求15所述的方法,在步驟2)之后,還包括: 在執(zhí)行最后一級蝶形運(yùn)算后對運(yùn)算后的數(shù)據(jù)進(jìn)行倒換,并且存儲倒換后的數(shù)據(jù)。
17.根據(jù)權(quán)利要求12所述的方法,其中,步驟2)還包括: 在執(zhí)行每一次蝶形運(yùn)算之前,對參與該次蝶形運(yùn)算的數(shù)據(jù)進(jìn)行重排,并且在執(zhí)行最后一次蝶形運(yùn)算之后,對輸出的數(shù)據(jù)進(jìn)行重排。
18.根據(jù)權(quán)利要求17所述的方法,其中,步驟1)還包括: 根據(jù)對FFT運(yùn)算所作的分解,確定每一次蝶形運(yùn)算的重排規(guī)則。
【文檔編號】G06F17/14GK103699515SQ201310740883
【公開日】2014年4月2日 申請日期:2013年12月27日 優(yōu)先權(quán)日:2013年12月27日
【發(fā)明者】蘇永濤, 姚彥斌, 朱子元, 唐杉, 石晶林 申請人:中國科學(xué)院計(jì)算技術(shù)研究所