專利名稱:使用大小減半的存儲(chǔ)器的快速傅立葉變換處理器和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種有線/無(wú)線通信系統(tǒng),并尤其涉及一種用于在有線/無(wú)線通信的收發(fā)機(jī)中執(zhí)行調(diào)制或解調(diào)的快速傅立葉變換處理器。
背景技術(shù):
諸如無(wú)線LAN、非對(duì)稱數(shù)字用戶線(ADSL)、超高數(shù)據(jù)率數(shù)字用戶線(VDSL)、正交頻分多路復(fù)用(ODFM)、數(shù)字音頻廣播(DAB)、以及多載波調(diào)制(MCM)系統(tǒng)的技術(shù)和應(yīng)用需要能夠執(zhí)行快速傅立葉變換的處理器。快速傅立葉變換算法通過(guò)從離散傅立葉變換(如等式1的變換)中移除重復(fù)計(jì)算,而減少執(zhí)行的計(jì)算數(shù)目。在等式1中,n表示時(shí)間指數(shù)(time index),k表示頻率指數(shù)(frequency index),而N表示點(diǎn)數(shù),或輸入數(shù)據(jù)的數(shù)目。通常,在接收機(jī)中執(zhí)行的快速傅立葉變換將時(shí)域信號(hào)變換為頻域信號(hào)。在發(fā)射機(jī)中執(zhí)行的快速傅立葉逆變換將頻域信號(hào)變換為時(shí)域信號(hào)。在傅立葉逆變換中,執(zhí)行快速傅立葉變換的逆過(guò)程??焖俑盗⑷~變換將串行輸入的數(shù)據(jù)流x(n)變換為N點(diǎn)并行數(shù)據(jù),將并行變換的數(shù)據(jù)X(k)調(diào)制到副載波上并傳送,由此增加了數(shù)據(jù)傳輸率。
X(k)=Σn=0N-1x(n)e-j2πNnk,0≤k≤N-1]]>等式1為了執(zhí)行快速傅立葉變換,如果輸入數(shù)據(jù)的數(shù)目m用于基m蝶式(butterfly)運(yùn)算,則FFT運(yùn)算所需要的級(jí)數(shù)等于通過(guò)對(duì)輸入數(shù)據(jù)的總數(shù)N以m為底取對(duì)數(shù)而得到的值,并且,在每級(jí)執(zhí)行多次基m蝶式運(yùn)算。在每級(jí)中,作為用m來(lái)執(zhí)行蝶式運(yùn)算的結(jié)果,將m個(gè)新數(shù)據(jù)存儲(chǔ)在具有與輸入數(shù)據(jù)的地址相同的地址的不同存儲(chǔ)單元中。在快速傅立葉變換中,由于時(shí)域和頻域的屬性不同,所以,一般執(zhí)行數(shù)據(jù)校準(zhǔn)(data alignment)操作,如位混洗(bitshuffling)。使用存儲(chǔ)在存儲(chǔ)器的預(yù)定地址中的數(shù)據(jù)來(lái)執(zhí)行蝶式運(yùn)算,并且,通過(guò)復(fù)雜的硬件來(lái)實(shí)現(xiàn)存儲(chǔ)作為蝶式運(yùn)算的結(jié)果而改變的數(shù)據(jù)的位混洗操作。然而,當(dāng)使用了需要復(fù)雜硬件的序貫設(shè)計(jì)(sequential design)或流水線設(shè)計(jì)時(shí),由于復(fù)雜的硬件使得難以實(shí)現(xiàn)延遲轉(zhuǎn)換器(delay commutator)。延遲轉(zhuǎn)換器為在每級(jí)快速傅立葉變換中執(zhí)行數(shù)據(jù)校準(zhǔn)的單元。當(dāng)輸入數(shù)據(jù)的數(shù)目較小時(shí),通過(guò)移位寄存器來(lái)實(shí)現(xiàn)延遲轉(zhuǎn)換器。當(dāng)輸入數(shù)據(jù)的數(shù)目較大時(shí),會(huì)增加移位寄存器的制造成本和大小。因此,存儲(chǔ)器替代移位寄存器用于此操作。上述配置為確定硬件設(shè)計(jì)中需要的存儲(chǔ)器大小的重要因素。
通常,在蝶式運(yùn)算中,基2算法處理兩個(gè)輸入數(shù)據(jù)來(lái)生成兩個(gè)新數(shù)據(jù)?;?算法反復(fù)地讀取兩個(gè)數(shù)據(jù)、并將兩個(gè)運(yùn)算結(jié)果寫(xiě)入到不同存儲(chǔ)器的相同地址。為了增加硬件利用率和減少執(zhí)行運(yùn)算所需時(shí)間,最多同時(shí)執(zhí)行兩個(gè)數(shù)據(jù)讀取操作和兩個(gè)數(shù)據(jù)寫(xiě)入操作。為了通過(guò)硬件來(lái)實(shí)現(xiàn)最多四個(gè)同步數(shù)據(jù)操作,為此目的而使用由只讀存儲(chǔ)器和只寫(xiě)存儲(chǔ)器組成的兩個(gè)雙端口(dual-port)存儲(chǔ)器,或使用流水線架構(gòu)。
圖1為采用兩個(gè)雙端口存儲(chǔ)器的傳統(tǒng)快速傅立葉變換處理器100的方框圖。參照?qǐng)D1,快速傅立葉變換處理器100包括各自存儲(chǔ)16點(diǎn)數(shù)據(jù)的第一和第二存儲(chǔ)單元110和120、以及蝶式計(jì)算元件130。圖2為用于說(shuō)明圖1的快速傅立葉變換處理器100的基2算法的示意圖。在圖2中,假定輸入數(shù)據(jù)為16點(diǎn)數(shù)據(jù)。參照?qǐng)D1和2,在使用存儲(chǔ)16點(diǎn)數(shù)據(jù)的兩個(gè)雙端口存儲(chǔ)器的傳統(tǒng)快速傅立葉變換處理器100中,只讀存儲(chǔ)器和只寫(xiě)存儲(chǔ)器在每級(jí)運(yùn)算中分離,并且,最多同時(shí)執(zhí)行四個(gè)操作(兩個(gè)讀取操作和兩個(gè)寫(xiě)入操作)。由于將只讀存儲(chǔ)器改變?yōu)橹粚?xiě)存儲(chǔ)器,并且反之亦然,以前進(jìn)到下一級(jí)運(yùn)算,所以不出現(xiàn)數(shù)據(jù)沖突。例如,在第一級(jí)運(yùn)算中,第一存儲(chǔ)單元110用作只讀存儲(chǔ)器,并輸出16點(diǎn)輸入數(shù)據(jù),而第二存儲(chǔ)單元120為存儲(chǔ)基2蝶式運(yùn)算的結(jié)果的只寫(xiě)存儲(chǔ)器。在第二級(jí)運(yùn)算中,第二存儲(chǔ)單元120用作只讀存儲(chǔ)器,并輸出來(lái)自第一運(yùn)算級(jí)的結(jié)果,而第一存儲(chǔ)單元110被改變?yōu)榇鎯?chǔ)使用新系數(shù)的基2蝶式運(yùn)算的結(jié)果的只寫(xiě)存儲(chǔ)器。由于在下一級(jí)中只讀存儲(chǔ)器作為只寫(xiě)存儲(chǔ)器操作,并且反之亦然,所以,不產(chǎn)生輸入數(shù)據(jù)和輸出數(shù)據(jù)之間的沖突,并且,僅使用蝶式運(yùn)算的一個(gè)計(jì)算元件。然而,所需存儲(chǔ)器的大小為輸入數(shù)據(jù)的大小的兩倍。
圖3為具有流水線架構(gòu)的傳統(tǒng)快速傅立葉變換處理器300的方框圖。參照?qǐng)D3,快速傅立葉變換處理器300包括存儲(chǔ)16點(diǎn)數(shù)據(jù)的第一存儲(chǔ)器410、存儲(chǔ)16/2點(diǎn)數(shù)據(jù)的第二存儲(chǔ)器420、存儲(chǔ)16/4點(diǎn)數(shù)據(jù)的第三存儲(chǔ)器430、存儲(chǔ)16/8點(diǎn)數(shù)據(jù)的第四存儲(chǔ)器、第一蝶式計(jì)算元件411、第二蝶式計(jì)算元件421、第三蝶式計(jì)算元件431、第一延遲轉(zhuǎn)換器412、第二延遲轉(zhuǎn)換器422、以及第三延遲轉(zhuǎn)換器432。圖4為用于說(shuō)明圖3的快速傅立葉變換處理器的基2算法的示意圖。參照?qǐng)D3和4,具有流水線架構(gòu)的快速傅立葉變換處理器300在每級(jí)運(yùn)算中使用用于蝶式運(yùn)算的計(jì)算元件,并且,在每級(jí)運(yùn)算需要的存儲(chǔ)器和延遲轉(zhuǎn)換器的大小逐漸變小。參照?qǐng)D4,實(shí)際上不需要存儲(chǔ)區(qū)423、433到435、以及443到449,并且它們和存儲(chǔ)區(qū)420、430和440一樣在各級(jí)被共享。如上所述,在傳統(tǒng)的流水線架構(gòu)中,將所述區(qū)分類(lèi)為與在相同級(jí)執(zhí)行相同操作的地址對(duì)應(yīng)的區(qū),并在每級(jí)重復(fù)使用用于蝶式運(yùn)算的計(jì)算元件。在流水線架構(gòu)中,可在未完成前一級(jí)運(yùn)算的狀態(tài)下,開(kāi)始與在連續(xù)級(jí)之間沒(méi)有數(shù)據(jù)相關(guān)性的地址對(duì)應(yīng)的數(shù)據(jù)區(qū)的下一級(jí)蝶式運(yùn)算,由此減小了獲得最終變換結(jié)果FD需要的時(shí)間。然而,在每級(jí)運(yùn)算中,需要用于蝶式運(yùn)算的計(jì)算元件、延遲轉(zhuǎn)換器、以及存儲(chǔ)器N+N/2+N/4+N/8+...,由此增加了硬件成本。
如上所述,在基m運(yùn)算中,用于蝶式計(jì)算元件的硬件成本的增加僅和蝶式運(yùn)算中需要的輸入數(shù)據(jù)的數(shù)目m有關(guān),并且,用于蝶式計(jì)算元件的硬件成本并不和輸入數(shù)據(jù)的點(diǎn)大小N的增加相關(guān)地增加。由于存儲(chǔ)每級(jí)運(yùn)算的結(jié)果的存儲(chǔ)器的成本而導(dǎo)致大部分硬件成本,所以當(dāng)輸入數(shù)據(jù)的點(diǎn)大小N增加時(shí),成本顯著增加。
發(fā)明內(nèi)容
本發(fā)明提供一種執(zhí)行新快速傅立葉變換算法的處理器,其中,使用虛擬地址空間來(lái)變換每個(gè)蝶式運(yùn)算級(jí)中的數(shù)據(jù)數(shù)組運(yùn)算,以減小用于執(zhí)行該算法的存儲(chǔ)器的大小。
本發(fā)明還提供一種快速傅立葉變換處理方法,其中,使用優(yōu)化存儲(chǔ)器來(lái)執(zhí)行數(shù)據(jù)數(shù)組運(yùn)算。
根據(jù)本發(fā)明的一個(gè)方面,提供了一種快速傅立葉變換處理器,包括存儲(chǔ)單元,用于接收N點(diǎn)輸入數(shù)據(jù),存儲(chǔ)N點(diǎn)輸入數(shù)據(jù),在第一級(jí)運(yùn)算中存儲(chǔ)使用輸入數(shù)據(jù)而計(jì)算出的N點(diǎn)蝶式運(yùn)算結(jié)果,并在余下的(logmN)-1個(gè)運(yùn)算級(jí)的每級(jí)中存儲(chǔ)根據(jù)存儲(chǔ)的前一級(jí)運(yùn)算的蝶式運(yùn)算結(jié)果而計(jì)算出的N點(diǎn)蝶式運(yùn)算結(jié)果;以及蝶式計(jì)算元件,用于對(duì)存儲(chǔ)在存儲(chǔ)單元中的N點(diǎn)數(shù)據(jù)執(zhí)行基m運(yùn)算,以生成被存儲(chǔ)在存儲(chǔ)單元中的N點(diǎn)蝶式運(yùn)算結(jié)果。
在一個(gè)實(shí)施例中,該存儲(chǔ)單元包括第一存儲(chǔ)單元,用于存儲(chǔ)N點(diǎn)數(shù)據(jù)中的N/2點(diǎn)數(shù)據(jù);以及第二存儲(chǔ)單元,用于存儲(chǔ)N點(diǎn)數(shù)據(jù)中的另外N/2點(diǎn)數(shù)據(jù)。
在另一個(gè)實(shí)施例中,例如,蝶式運(yùn)算包括基2、基4、或基8運(yùn)算。第一存儲(chǔ)單元和第二存儲(chǔ)單元可包括雙端口存儲(chǔ)單元。
在另一個(gè)實(shí)施例中,蝶式計(jì)算元件從第一存儲(chǔ)單元和第二存儲(chǔ)單元中的每個(gè)接收m/2個(gè)數(shù)據(jù),以執(zhí)行基m運(yùn)算;將基m運(yùn)算結(jié)果劃分為m/2個(gè)數(shù)據(jù);以及將劃分為m/2個(gè)數(shù)據(jù)的基m運(yùn)算結(jié)果存儲(chǔ)在第一存儲(chǔ)單元和第二存儲(chǔ)單元的每個(gè)中。蝶式計(jì)算元件同時(shí)存儲(chǔ)基m運(yùn)算結(jié)果,并接收要在隨后的基m運(yùn)算中使用的m個(gè)數(shù)據(jù)。蝶式計(jì)算元件將基m運(yùn)算結(jié)果存儲(chǔ)到同步操作之前輸入的數(shù)據(jù)的地址。蝶式計(jì)算元件在兩個(gè)或更多周期期間執(zhí)行基m運(yùn)算,在一個(gè)周期期間執(zhí)行同步操作,并使用在同步操作之前輸入的數(shù)據(jù)而在同步操作期間執(zhí)行下一個(gè)基m運(yùn)算。
根據(jù)本發(fā)明的另一個(gè)方面,提供了一種快速傅立葉變換處理方法,包括接收并存儲(chǔ)N點(diǎn)輸入數(shù)據(jù);在logmN個(gè)運(yùn)算級(jí)中的第一運(yùn)算級(jí),存儲(chǔ)使用輸入數(shù)據(jù)而計(jì)算出的N點(diǎn)蝶式運(yùn)算結(jié)果;在余下的(logmN)-1個(gè)運(yùn)算級(jí)中的每級(jí),存儲(chǔ)根據(jù)存儲(chǔ)的前一級(jí)運(yùn)算的結(jié)果而計(jì)算出的N點(diǎn)蝶式運(yùn)算結(jié)果;以及分別在logmN個(gè)運(yùn)算級(jí)的每級(jí)中,利用存儲(chǔ)的N點(diǎn)數(shù)據(jù)來(lái)執(zhí)行基m蝶式運(yùn)算,以生成N點(diǎn)蝶式運(yùn)算結(jié)果。
在一個(gè)實(shí)施例中,存儲(chǔ)操作包括將N點(diǎn)數(shù)據(jù)中的N/2點(diǎn)數(shù)據(jù)存儲(chǔ)在第一存儲(chǔ)器中;以及將N點(diǎn)數(shù)據(jù)中的另外N/2點(diǎn)數(shù)據(jù)存儲(chǔ)在第二存儲(chǔ)器中。例如,運(yùn)算的基數(shù)可為基2、基4、或基8。第一存儲(chǔ)單元和第二存儲(chǔ)單元可包括雙端口存儲(chǔ)單元。
在另一個(gè)實(shí)施例中,生成蝶式運(yùn)算結(jié)果的操作包括對(duì)從第一存儲(chǔ)器接收的m/2個(gè)數(shù)據(jù)和從第二存儲(chǔ)器接收的m/2個(gè)數(shù)據(jù)執(zhí)行基m運(yùn)算;將基m運(yùn)算結(jié)果劃分為m/2個(gè)數(shù)據(jù);以及將劃分為m/2個(gè)數(shù)據(jù)的基m運(yùn)算結(jié)果存儲(chǔ)在第一存儲(chǔ)單元和第二存儲(chǔ)單元中??蛇x地,生成蝶式運(yùn)算結(jié)果的操作包括同時(shí)存儲(chǔ)基m運(yùn)算結(jié)果、并接收要在隨后的基m運(yùn)算中使用的m個(gè)數(shù)據(jù)。另外,生成蝶式運(yùn)算結(jié)果的操作還可選地包括將基m運(yùn)算結(jié)果存儲(chǔ)到同步操作之前輸入的數(shù)據(jù)的地址。生成蝶式運(yùn)算結(jié)果的操作還可選地包括在兩個(gè)或更多時(shí)鐘周期期間執(zhí)行基m運(yùn)算;在一個(gè)時(shí)鐘周期期間執(zhí)行同步操作;以及在同步操作期間,使用在同步操作之前輸入的數(shù)據(jù)來(lái)執(zhí)行隨后的基m運(yùn)算。
通過(guò)參照附圖來(lái)詳細(xì)描述本發(fā)明的示范實(shí)施例,本發(fā)明的以上和其它特征和優(yōu)點(diǎn)將變得更為清楚,其中圖1為使用兩個(gè)雙端口存儲(chǔ)器的傳統(tǒng)快速傅立葉變換處理器的方框圖;圖2為用于說(shuō)明圖1的快速傅立葉變換處理器的基2算法的示意圖;圖3為具有流水線架構(gòu)的傳統(tǒng)快速傅立葉變換處理器的方框圖;圖4為用于說(shuō)明圖3的快速傅立葉變換處理器的基2算法的示意圖;圖5為根據(jù)本發(fā)明的實(shí)施例的快速傅立葉變換處理器的方框圖;圖6為用于說(shuō)明圖5的快速傅立葉變換處理器的基2算法的示意圖;圖7為圖5的蝶式計(jì)算元件的方框圖;圖8為用于說(shuō)明圖5的快速傅立葉變換處理器的操作的時(shí)序圖;以及圖9為用于詳細(xì)說(shuō)明圖5的存儲(chǔ)單元的操作的示意圖。
具體實(shí)施例方式
參照用于圖解本發(fā)明的優(yōu)選實(shí)施例的附圖,以獲得對(duì)本發(fā)明及其優(yōu)點(diǎn)、以及通過(guò)實(shí)現(xiàn)本發(fā)明而達(dá)到的目的的足夠理解。
下面,將通過(guò)參照
本發(fā)明的優(yōu)選實(shí)施例,來(lái)詳細(xì)描述本發(fā)明。附圖中,相同的附圖標(biāo)記表示相同的元件。
如圖1所示,在使用存儲(chǔ)16點(diǎn)數(shù)據(jù)的兩個(gè)雙端口存儲(chǔ)器的傳統(tǒng)快速傅立葉變換處理器100中,作為只讀存儲(chǔ)器操作的存儲(chǔ)單元與作為只寫(xiě)存儲(chǔ)器操作的存儲(chǔ)單元分離,并且,在蝶式計(jì)算元件130的基運(yùn)算中,處理器100最多同時(shí)執(zhí)行兩個(gè)讀取操作和兩個(gè)寫(xiě)入操作。然而,在每級(jí)的基運(yùn)算中,需要各自具有容納數(shù)據(jù)寬度(即16點(diǎn))的大小的只讀存儲(chǔ)器和只寫(xiě)存儲(chǔ)器。因此,本發(fā)明的一個(gè)方面提供一種僅需要存儲(chǔ)器的一半數(shù)量的新快速傅立葉變換算法。使用兩個(gè)雙端口、一半大小的存儲(chǔ)器,即數(shù)據(jù)寬度的一半大小的存儲(chǔ)器,并且,將蝶式運(yùn)算中的數(shù)據(jù)數(shù)組運(yùn)算變換為作為流水線架構(gòu)操作,由此提供僅需要一個(gè)蝶式計(jì)算元件的新快速傅立葉變換系統(tǒng)和處理。
圖5為根據(jù)本發(fā)明的實(shí)施例的快速傅立葉變換處理器的方框圖。參照?qǐng)D5,快速傅立葉變換處理器500包括兩個(gè)分離的存儲(chǔ)單元510和520、以及蝶式計(jì)算元件530。存儲(chǔ)單元510和520包括第一雙端口存儲(chǔ)單元510和第二雙端口存儲(chǔ)單元520。
如所公知的,在快速傅立葉變換的數(shù)據(jù)數(shù)組運(yùn)算中,如果輸入數(shù)據(jù)數(shù)目m被用于基m蝶式運(yùn)算,則FFT運(yùn)算所需的級(jí)數(shù)等于通過(guò)對(duì)輸入數(shù)據(jù)的總數(shù)N以m為底取對(duì)數(shù)而得到的值,即logmN。下面,假定快速傅立葉變換的大小N為16,并且蝶式計(jì)算元件530執(zhí)行基2蝶式運(yùn)算。然而,根據(jù)本發(fā)明的實(shí)施例的快速傅立葉變換處理器500不限于上述內(nèi)容,而快速傅立葉變換的大小N可取決于系統(tǒng)大小而為任意數(shù),例如256、512、1024、或2048。蝶式計(jì)算元件530不僅執(zhí)行基2蝶式運(yùn)算,還根據(jù)系統(tǒng)大小而執(zhí)行基4、基8等蝶式運(yùn)算。
在上述假定下,第一存儲(chǔ)單元510存儲(chǔ)N(16)點(diǎn)輸入數(shù)據(jù)的N/2(8)點(diǎn)數(shù)據(jù)。第二存儲(chǔ)單元520存儲(chǔ)(16)點(diǎn)輸入數(shù)據(jù)的另外N/2(8)點(diǎn)數(shù)據(jù)。
圖6為用于說(shuō)明圖5的快速傅立葉變換處理器的基2算法的示意圖。
參照?qǐng)D6,第一存儲(chǔ)單元510和第二存儲(chǔ)單元520各自接收并存儲(chǔ)總共N(16)點(diǎn)輸入數(shù)據(jù)中的N/2(8)點(diǎn)。接下來(lái),存儲(chǔ)單元510和520存儲(chǔ)通過(guò)對(duì)輸入數(shù)據(jù)執(zhí)行第一級(jí)運(yùn)算而計(jì)算出的N(16)點(diǎn)的蝶式運(yùn)算結(jié)果。接下來(lái),在從第二運(yùn)算級(jí)到(logmN)-1運(yùn)算級(jí)(此例子中為第四運(yùn)算級(jí))的每級(jí)運(yùn)算中,存儲(chǔ)單元510和520存儲(chǔ)從所存儲(chǔ)的前一級(jí)運(yùn)算的結(jié)果而計(jì)算出的N(16)點(diǎn)的蝶式運(yùn)算結(jié)果。在此情況中,在任意給定時(shí)間,第一存儲(chǔ)單元510和第二存儲(chǔ)單元520不作為只讀存儲(chǔ)器或只寫(xiě)存儲(chǔ)器操作。在傳統(tǒng)的雙端口存儲(chǔ)器處理中,只讀存儲(chǔ)器和只寫(xiě)存儲(chǔ)器相互轉(zhuǎn)換。然而,根據(jù)本發(fā)明的實(shí)施例,參照?qǐng)D6,使用新的存儲(chǔ)器讀取尋址處理和新的存儲(chǔ)器寫(xiě)入尋址處理,以避免數(shù)據(jù)沖突。
通常,在傳統(tǒng)架構(gòu)中,在每級(jí)運(yùn)算中,對(duì)于基2運(yùn)算來(lái)說(shuō),將基2蝶式運(yùn)算結(jié)果存儲(chǔ)在與從只讀存儲(chǔ)器輸入的數(shù)據(jù)的地址相同的只寫(xiě)存儲(chǔ)器的地址中。并且,在基2蝶式運(yùn)算中使用只讀存儲(chǔ)器的所有數(shù)據(jù),將基2蝶式運(yùn)算的結(jié)果存儲(chǔ)在只寫(xiě)存儲(chǔ)器中,將只讀存儲(chǔ)器的內(nèi)容轉(zhuǎn)移到只寫(xiě)存儲(chǔ)器,并將只寫(xiě)存儲(chǔ)器的內(nèi)容轉(zhuǎn)移到只讀存儲(chǔ)器。相反,在本發(fā)明的實(shí)施例中,第一存儲(chǔ)單元510和第二存儲(chǔ)單元520不用作只讀存儲(chǔ)器或只寫(xiě)存儲(chǔ)器,并且在每級(jí)運(yùn)算中同時(shí)執(zhí)行讀取操作和寫(xiě)入操作。例如,參照?qǐng)D2,在第一級(jí)運(yùn)算中,將對(duì)第一存儲(chǔ)單元110的地址(0)的數(shù)據(jù)和地址(8)的數(shù)據(jù)執(zhí)行的傳統(tǒng)的基2蝶式運(yùn)算的結(jié)果存儲(chǔ)為第二存儲(chǔ)單元120的地址(8)的數(shù)據(jù)和地址(0)的數(shù)據(jù)。然而,參照?qǐng)D6,在本發(fā)明中,在第一級(jí)運(yùn)算中,將對(duì)第一存儲(chǔ)單元510的地址(0)的數(shù)據(jù)和第二存儲(chǔ)單元520的地址(8)的數(shù)據(jù)執(zhí)行的基2蝶式運(yùn)算的結(jié)果存儲(chǔ)為第一存儲(chǔ)單元510的地址(4)的數(shù)據(jù)和地址(0)的數(shù)據(jù)。并且,參照?qǐng)D6,在本發(fā)明中,在第一級(jí)運(yùn)算中,將對(duì)第一存儲(chǔ)單元510的地址(4)的數(shù)據(jù)和第二存儲(chǔ)單元520的地址(12)的數(shù)據(jù)執(zhí)行的基2蝶式運(yùn)算的結(jié)果存儲(chǔ)為第二存儲(chǔ)單元520的地址(12)的數(shù)據(jù)和地址(8)的數(shù)據(jù)。在此情況中,第一存儲(chǔ)單元510和第二存儲(chǔ)單元520不同時(shí)執(zhí)行兩個(gè)寫(xiě)入操作,而可通過(guò)以流水線傳遞操作的方式執(zhí)行尋址,來(lái)同時(shí)在一個(gè)存儲(chǔ)器中執(zhí)行讀取操作和寫(xiě)入操作。下面將通過(guò)參照?qǐng)D8和9來(lái)詳細(xì)描述尋址處理。
圖7為圖5的蝶式計(jì)算元件530的方框圖。
參照?qǐng)D7,蝶式計(jì)算元件530包括乘法器531、加法器532、以及減法器533。盡管圖解了用于基2運(yùn)算的蝶式計(jì)算元件530的結(jié)構(gòu),但可將根據(jù)本發(fā)明的實(shí)施例的快速傅立葉變換處理器500應(yīng)用到用于基4運(yùn)算或基8運(yùn)算等的蝶式計(jì)算元件的結(jié)構(gòu)。在logmN(4)個(gè)運(yùn)算級(jí)中的各級(jí)執(zhí)行基運(yùn)算8次,以相應(yīng)地得到離散傅立葉變換結(jié)果,如由等式1得到的結(jié)果,通過(guò)logmN(4)級(jí)運(yùn)算來(lái)完成數(shù)據(jù)數(shù)組運(yùn)算。在一般通信理論中充分描述了離散傅立葉變換和基運(yùn)算。
在logmN(4)級(jí)的各級(jí)運(yùn)算中,蝶式計(jì)算元件530為存儲(chǔ)在存儲(chǔ)單元510和520中的N(16)點(diǎn)數(shù)據(jù)執(zhí)行基m(2)運(yùn)算。將蝶式計(jì)算元件530計(jì)算出的N(16)點(diǎn)蝶式運(yùn)算的結(jié)果再次存儲(chǔ)在存儲(chǔ)單元510和520中。在每級(jí)中,蝶式計(jì)算元件530從第一存儲(chǔ)單元510和第二存儲(chǔ)單元520一個(gè)接一個(gè)地接收數(shù)據(jù),并將兩個(gè)運(yùn)算結(jié)果逐個(gè)存儲(chǔ)在第一存儲(chǔ)單元510和第二存儲(chǔ)單元520中。在每級(jí)利用N(16)個(gè)輸入數(shù)據(jù)來(lái)執(zhí)行蝶式運(yùn)算,并總共重復(fù)執(zhí)行8次。例如,參照?qǐng)D7,通過(guò)使用預(yù)定系數(shù)COEF來(lái)對(duì)第一存儲(chǔ)單元510的地址(0)的數(shù)據(jù)“0”和第二存儲(chǔ)單元520的地址(8)的數(shù)據(jù)“8”執(zhí)行基2蝶式運(yùn)算而獲得的結(jié)果在預(yù)定數(shù)目的系統(tǒng)時(shí)鐘周期之后又成為第一存儲(chǔ)單元510的地址(0)的數(shù)據(jù)“0”和地址(4)的數(shù)據(jù)“8”。這里,為了描述的方便,假定蝶式運(yùn)算的結(jié)果具有和輸入數(shù)據(jù)的值相同的值。也就是說(shuō),輸入到蝶式計(jì)算元件530的數(shù)據(jù)值“0”和“8”在運(yùn)算之后仍保持為值“0”和“8”。為了描述的方便,其它輸入數(shù)據(jù)值也產(chǎn)生具有和輸入數(shù)據(jù)值相同的值的結(jié)果。圖6中示出了上述輸入數(shù)據(jù)和蝶式運(yùn)算中的結(jié)果,并且在每級(jí)運(yùn)算中的全部關(guān)系相同。
圖8為用于說(shuō)明圖5的快速傅立葉變換處理器500的時(shí)序圖。
參照?qǐng)D8,假定地址生成器(未示出)生成第一讀取地址R1ADDR、第二讀取地址R2ADDR、第一寫(xiě)入地址W1ADDR、以及第二寫(xiě)入地址W2ADDR。地址生成器參考系統(tǒng)時(shí)鐘SCLK的計(jì)數(shù)值CNT和級(jí)設(shè)置信號(hào)STSET。級(jí)設(shè)置信號(hào)STSET在每個(gè)運(yùn)算級(jí)的開(kāi)始有效。蝶式計(jì)算元件530分別從第一讀取地址R1ADDR和第二地址R2ADDR中的每個(gè)接收第一輸入數(shù)據(jù)MRD1和第二輸入數(shù)據(jù)MRD2,并將第一運(yùn)算結(jié)果MWD1和第二運(yùn)算結(jié)果MWD2分別存儲(chǔ)在存儲(chǔ)單元510和520各自的第一寫(xiě)入地址W1ADDR和第二寫(xiě)入地址W2ADDR中。
參照?qǐng)D6和8,首先,在第一運(yùn)算級(jí)中,將第二存儲(chǔ)單元520的地址(8)的數(shù)據(jù)“8”和第一存儲(chǔ)器的地址(0)的數(shù)據(jù)“0”輸入到蝶式計(jì)算元件530。在與計(jì)數(shù)值CNT“5”和“4”相對(duì)應(yīng)的周期期間,生成通過(guò)對(duì)地址(8)的數(shù)據(jù)“8”和地址(0)的數(shù)據(jù)“0”執(zhí)行蝶式運(yùn)算而獲得的結(jié)果,并將其依次存儲(chǔ)為第一存儲(chǔ)單元510的地址(4)的數(shù)據(jù)“8”和地址(0)的數(shù)據(jù)“0”。接下來(lái),將第二存儲(chǔ)單元520的地址(12)的數(shù)據(jù)“12”和第一存儲(chǔ)單元510的地址(4)的數(shù)據(jù)“4”依次輸入到蝶式計(jì)算元件530。在與計(jì)數(shù)值CNT“6”和“5”相對(duì)應(yīng)的周期期間,生成通過(guò)對(duì)地址(12)的數(shù)據(jù)“12”和地址(4)的數(shù)據(jù)“4”執(zhí)行蝶式運(yùn)算而獲得的結(jié)果,并將其存儲(chǔ)為第二存儲(chǔ)單元520的地址(12)的數(shù)據(jù)“12”和地址(8)的數(shù)據(jù)“4”。圖8中詳細(xì)圖解了其它數(shù)據(jù)的讀取和寫(xiě)入操作。
在此情況中,由于第一存儲(chǔ)單元510和第二存儲(chǔ)單元520為雙端口型存儲(chǔ)器,所以不能同時(shí)執(zhí)行兩個(gè)寫(xiě)入操作。因此,為了防止在存儲(chǔ)單元510和520的讀取操作以及存儲(chǔ)單元510和520的寫(xiě)入操作之間發(fā)生數(shù)據(jù)沖突,根據(jù)圖8中圖解的尋址處理,在單個(gè)存儲(chǔ)器中,僅同時(shí)執(zhí)行一個(gè)讀取操作和一個(gè)寫(xiě)入操作。例如,在計(jì)數(shù)值CNT為“5”時(shí),第一和第二輸入數(shù)據(jù)MRD1和MRD2為“2”和“14”,而第一和第二運(yùn)算結(jié)果MWD1和MWD2為“4”和“8”。并且,第一和第二讀取地址R1ADDR和R2ADDR為(2)和(14),而第一和第二寫(xiě)入地址W1ADDR和W2ADDR為(8)和(4)。參照?qǐng)D9,當(dāng)計(jì)數(shù)值CNT為“5”時(shí),第一存儲(chǔ)單元510從地址(2)讀取“2”,并在地址(4)寫(xiě)入“8”。并且,當(dāng)計(jì)數(shù)值CNT為“5”時(shí),第二存儲(chǔ)單元520從地址(14)讀取“14”,并在地址(8)寫(xiě)入“4”。地址生成器參考與已從存儲(chǔ)單元510和520輸入到蝶式計(jì)算元件530的數(shù)據(jù)相對(duì)應(yīng)的地址來(lái)生成地址,以防止在存儲(chǔ)單元510和520中執(zhí)行同步讀取和寫(xiě)入操作時(shí)產(chǎn)生數(shù)據(jù)沖突。蝶式計(jì)算元件530將基m(2)運(yùn)算結(jié)果存儲(chǔ)到存儲(chǔ)單元510和520中的同步讀取和寫(xiě)入操作之前已輸入的數(shù)據(jù)地址。
當(dāng)計(jì)數(shù)值CNT為“6”時(shí),第一存儲(chǔ)單元510從地址(6)讀取數(shù)據(jù)“6”,并向地址(1)寫(xiě)入數(shù)據(jù)“1”。并且,在計(jì)數(shù)值CNT為“6”時(shí),第二存儲(chǔ)單元520從地址(11)讀取數(shù)據(jù)“11”,并向地址(12)寫(xiě)入數(shù)據(jù)“12”。如上所述,由于在計(jì)數(shù)值的每個(gè)計(jì)數(shù)期間,同步執(zhí)行一個(gè)讀取操作和一個(gè)寫(xiě)入操作,所以在第一和第二存儲(chǔ)單元510和520的每個(gè)中,使用可容納16點(diǎn)數(shù)據(jù)的存儲(chǔ)器來(lái)同時(shí)進(jìn)行四個(gè)存儲(chǔ)器存取是有可能的。如上所述的操作與第二運(yùn)算級(jí)的操作相同。例如,通過(guò)再次參照?qǐng)D8,在第二級(jí)運(yùn)算中,首先,將第二存儲(chǔ)單元520的地址(8)的數(shù)據(jù)“4”和第一存儲(chǔ)器的地址(0)的數(shù)據(jù)“0”依次輸入到蝶式計(jì)算元件530。在計(jì)數(shù)值CNT為“13”和“12”時(shí),生成對(duì)地址(8)的數(shù)據(jù)“4”和地址(0)的數(shù)據(jù)“0”執(zhí)行蝶式運(yùn)算的結(jié)果,并將其依次存儲(chǔ)為地址(2)的數(shù)據(jù)“4”和地址(0)的數(shù)據(jù)“0”。在第二運(yùn)算級(jí)中,根據(jù)和第一運(yùn)算級(jí)的處理相同的處理,在第一存儲(chǔ)單元510和第二存儲(chǔ)單元520的每個(gè)中同步執(zhí)行一個(gè)讀取操作和一個(gè)寫(xiě)入操作。
如上所述,執(zhí)行基m(2)蝶式運(yùn)算的蝶式計(jì)算元件530從第一存儲(chǔ)單元510和第二存儲(chǔ)單元520中的每個(gè)接收m/2(1)個(gè)數(shù)據(jù),以執(zhí)行蝶式運(yùn)算,將基2運(yùn)算結(jié)果劃分為m/2(1)個(gè)數(shù)據(jù),并將劃分為m/2(1)個(gè)數(shù)據(jù)的基2運(yùn)算結(jié)果存儲(chǔ)在第一存儲(chǔ)單元510和第二存儲(chǔ)單元520的每個(gè)中。參照?qǐng)D8,在兩個(gè)或更多周期期間執(zhí)行基m(2)蝶式運(yùn)算,而在一個(gè)周期期間執(zhí)行同步操作,其中所述同步操作同時(shí)執(zhí)行從兩個(gè)存儲(chǔ)單元510和520的數(shù)據(jù)讀取、以及向兩個(gè)存儲(chǔ)單元510和520的數(shù)據(jù)寫(xiě)入。蝶式計(jì)算元件530使用在同步讀取和寫(xiě)入操作之前已輸入的數(shù)據(jù),而執(zhí)行同步讀取和寫(xiě)入操作中的下一個(gè)基m運(yùn)算。
另一方面,當(dāng)?shù)接?jì)算元件530執(zhí)行基4或基8蝶式運(yùn)算時(shí),第一存儲(chǔ)單元510和第二存儲(chǔ)單元520接收2個(gè)或4個(gè)數(shù)據(jù)來(lái)執(zhí)行蝶式運(yùn)算,將運(yùn)算結(jié)果劃分為2個(gè)或4個(gè)數(shù)據(jù)值,并將運(yùn)算結(jié)果存儲(chǔ)在第一存儲(chǔ)單元510和第二存儲(chǔ)單元520的每個(gè)中。并且,將第一存儲(chǔ)單元510和第二存儲(chǔ)單元520中的每個(gè)分割為2個(gè)或4個(gè)雙類(lèi)型存儲(chǔ)器,并且,每個(gè)劃分的存儲(chǔ)器同時(shí)執(zhí)行一個(gè)讀取操作和一個(gè)寫(xiě)入操作,由此執(zhí)行相同處理。當(dāng)存儲(chǔ)基m運(yùn)算結(jié)果時(shí),蝶式計(jì)算元件530接收在下一個(gè)基m運(yùn)算中使用的m個(gè)數(shù)據(jù)。并且,蝶式計(jì)算元件530將基m運(yùn)算結(jié)果存儲(chǔ)到讀取和寫(xiě)入操作之前已輸入的數(shù)據(jù)的地址。
表1中相互比較并示出了當(dāng)用硬件實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的快速傅立葉變換算法和傳統(tǒng)算法時(shí)所需的晶體管的數(shù)目。表1包括與通過(guò)基2處理而實(shí)現(xiàn)在非對(duì)稱數(shù)字用戶線(ADSL)中使用的256點(diǎn)快速傅立葉變換處理器的例子相關(guān)的特定數(shù)據(jù)。在表1中,約需要10000個(gè)門(mén)來(lái)實(shí)現(xiàn)蝶式計(jì)算元件,并且,在數(shù)字邏輯中,一個(gè)門(mén)包括4個(gè)晶體管。并且,在靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)中,約需要6個(gè)晶體管來(lái)實(shí)現(xiàn)存儲(chǔ)器的1位。因此,通過(guò)本發(fā)明的建議方法和結(jié)構(gòu),用于實(shí)現(xiàn)256點(diǎn)快速傅立葉變換處理器的全部硬件成本減少了超過(guò)50%??赏ㄟ^(guò)使用諸如基4或基8的算法的傳統(tǒng)的流水線方法來(lái)實(shí)現(xiàn)蝶式計(jì)算元件的數(shù)目和存儲(chǔ)器的大小的減小,然而,這種減小不如通過(guò)本發(fā)明的建議方法和結(jié)構(gòu)而實(shí)現(xiàn)的減小那么大。
表1
如上所述,根據(jù)本發(fā)明的實(shí)施例的快速傅立葉變換處理器500利用傳統(tǒng)雙端口存儲(chǔ)器結(jié)構(gòu)和流水線架構(gòu)的優(yōu)點(diǎn),在每個(gè)蝶式運(yùn)算級(jí)中執(zhí)行數(shù)據(jù)數(shù)組運(yùn)算。假定容納N/2點(diǎn)數(shù)據(jù)的兩個(gè)存儲(chǔ)單元510和520的每個(gè)中有虛擬存儲(chǔ)空間,則快速傅立葉變換處理器500使用一個(gè)蝶式計(jì)算元件530,并在一個(gè)時(shí)鐘周期期間執(zhí)行一個(gè)寫(xiě)入操作和一個(gè)讀取操作。
如上所述,與使用容納N點(diǎn)數(shù)據(jù)的兩個(gè)存儲(chǔ)單元的傳統(tǒng)雙端口存儲(chǔ)器結(jié)構(gòu)或流水線架構(gòu)相比,在根據(jù)本發(fā)明的實(shí)施例的快速傅立葉變換處理器中,采用的存儲(chǔ)單元的大小可至少減小50%。并且,在本發(fā)明中使用一個(gè)蝶式計(jì)算元件。因此,存在這樣的效果,即在對(duì)數(shù)據(jù)延遲時(shí)間敏感的系統(tǒng)中使用最小硬件成本來(lái)實(shí)現(xiàn)快速傅立葉變換處理器。
盡管已通過(guò)參照示范實(shí)施例來(lái)具體示出并描述了本發(fā)明,但本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,其中可作出形式和細(xì)節(jié)上的各種改變,而不背離由所附權(quán)利要求限定的本發(fā)明的精髓和范圍。
權(quán)利要求
1.一種快速傅立葉變換處理器,包括存儲(chǔ)單元,用于接收N點(diǎn)輸入數(shù)據(jù),存儲(chǔ)N點(diǎn)輸入數(shù)據(jù),在第一級(jí)運(yùn)算中存儲(chǔ)使用輸入數(shù)據(jù)而計(jì)算出的N點(diǎn)蝶式運(yùn)算結(jié)果,以及在余下的(logmN)-1個(gè)運(yùn)算級(jí)的每級(jí)中存儲(chǔ)根據(jù)存儲(chǔ)的前一級(jí)運(yùn)算的蝶式運(yùn)算結(jié)果而計(jì)算出的N點(diǎn)蝶式運(yùn)算結(jié)果;以及蝶式計(jì)算元件,用于對(duì)存儲(chǔ)在存儲(chǔ)單元中的N點(diǎn)數(shù)據(jù)執(zhí)行基m運(yùn)算,以生成被存儲(chǔ)在存儲(chǔ)單元中的N點(diǎn)蝶式運(yùn)算結(jié)果。
2.如權(quán)利要求1所述的處理器,其中該存儲(chǔ)器包括第一存儲(chǔ)單元,用于存儲(chǔ)N點(diǎn)數(shù)據(jù)中的N/2點(diǎn)數(shù)據(jù);以及第二存儲(chǔ)單元,用于存儲(chǔ)N點(diǎn)數(shù)據(jù)中的另外N/2點(diǎn)數(shù)據(jù)。
3.如權(quán)利要求1所述的處理器,其中,m為2。
4.如權(quán)利要求1所述的處理器,其中,m為4。
5.如權(quán)利要求1所述的處理器,其中,m為8。
6.如權(quán)利要求2所述的處理器,其中,第一存儲(chǔ)單元和第二存儲(chǔ)單元為雙端口存儲(chǔ)單元。
7.如權(quán)利要求2所述的處理器,其中,蝶式計(jì)算元件從第一存儲(chǔ)單元和第二存儲(chǔ)單元中的每個(gè)接收m/2個(gè)數(shù)據(jù),以執(zhí)行基m運(yùn)算,將基m運(yùn)算結(jié)果劃分為m/2個(gè)數(shù)據(jù),并將劃分為m/2個(gè)數(shù)據(jù)的基m運(yùn)算結(jié)果存儲(chǔ)在第一存儲(chǔ)單元和第二存儲(chǔ)單元的每個(gè)中。
8.如權(quán)利要求7所述的處理器,其中,蝶式計(jì)算元件同時(shí)存儲(chǔ)基m運(yùn)算結(jié)果、并接收要在隨后的基m運(yùn)算中使用的m個(gè)數(shù)據(jù)。
9.如權(quán)利要求8所述的處理器,其中,蝶式計(jì)算元件將基m運(yùn)算結(jié)果存儲(chǔ)到同步操作之前輸入的數(shù)據(jù)的地址。
10.如權(quán)利要求8所述的處理器,其中,蝶式計(jì)算元件在兩個(gè)或更多周期期間執(zhí)行基m運(yùn)算,在一個(gè)周期期間執(zhí)行同步操作,并使用在同步操作之前輸入的數(shù)據(jù)而在同步操作期間執(zhí)行下一個(gè)基m運(yùn)算。
11.一種快速傅立葉變換處理方法,包括以下操作接收并存儲(chǔ)N點(diǎn)輸入數(shù)據(jù);在logmN個(gè)運(yùn)算級(jí)中的第一運(yùn)算級(jí),存儲(chǔ)使用輸入數(shù)據(jù)而計(jì)算出的N點(diǎn)蝶式運(yùn)算結(jié)果;在余下的(logmN)-1個(gè)運(yùn)算級(jí)中的每級(jí),存儲(chǔ)根據(jù)存儲(chǔ)的前一級(jí)運(yùn)算的結(jié)果而計(jì)算出的N點(diǎn)蝶式運(yùn)算結(jié)果;以及分別在logmN個(gè)運(yùn)算級(jí)中的每級(jí),利用存儲(chǔ)的N點(diǎn)數(shù)據(jù)來(lái)執(zhí)行基m蝶式運(yùn)算,以生成N點(diǎn)蝶式運(yùn)算結(jié)果。
12.如權(quán)利要求11所述的方法,其中,存儲(chǔ)操作中的每個(gè)包括將N點(diǎn)數(shù)據(jù)中的N/2點(diǎn)數(shù)據(jù)存儲(chǔ)在第一存儲(chǔ)單元中;以及將N點(diǎn)數(shù)據(jù)中的另外N/2點(diǎn)數(shù)據(jù)存儲(chǔ)在第二存儲(chǔ)單元中。
13.如權(quán)利要求11所述的方法,其中,m為2。
14.如權(quán)利要求11所述的方法,其中,m為4。
15.如權(quán)利要求11所述的方法,其中,m為8。
16.如權(quán)利要求12所述的方法,其中,第一存儲(chǔ)單元和第二存儲(chǔ)單元為雙端口存儲(chǔ)單元。
17.如權(quán)利要求12所述的方法,其中,生成蝶式運(yùn)算結(jié)果的操作包括對(duì)從第一存儲(chǔ)器接收的m/2個(gè)數(shù)據(jù)和從第二存儲(chǔ)器接收的m/2個(gè)數(shù)據(jù)執(zhí)行基m運(yùn)算,將基m運(yùn)算結(jié)果劃分為m/2個(gè)數(shù)據(jù),以及將劃分為m/2個(gè)數(shù)據(jù)的基m運(yùn)算結(jié)果存儲(chǔ)在第一存儲(chǔ)單元和第二存儲(chǔ)單元中。
18.如權(quán)利要求17所述的方法,其中,生成蝶式運(yùn)算結(jié)果的操作包括同時(shí)存儲(chǔ)基m運(yùn)算結(jié)果、并接收要在隨后的基m運(yùn)算中使用的m個(gè)數(shù)據(jù)。
19.如權(quán)利要求18所述的方法,其中,生成蝶式運(yùn)算結(jié)果的操作包括將基m運(yùn)算結(jié)果存儲(chǔ)到同步操作之前輸入的數(shù)據(jù)的地址。
20.如權(quán)利要求18所述的方法,其中,生成蝶式運(yùn)算結(jié)果的操作包括在兩個(gè)或更多時(shí)鐘周期期間執(zhí)行基m運(yùn)算,在一個(gè)時(shí)鐘周期期間執(zhí)行同步操作,以及在同步操作期間使用在同步操作之前輸入的數(shù)據(jù)來(lái)執(zhí)行隨后的基m運(yùn)算。
全文摘要
在使用大小減半的存儲(chǔ)器的快速傅立葉變換處理器和快速傅立葉變換方法中,假定可容納N/2點(diǎn)數(shù)據(jù)的兩個(gè)存儲(chǔ)單元的每個(gè)中有虛擬存儲(chǔ)空間,則利用蝶式計(jì)算元件,并在一個(gè)時(shí)鐘周期期間執(zhí)行一個(gè)寫(xiě)入操作和一個(gè)讀取操作。
文檔編號(hào)H04L27/26GK1655143SQ200510008220
公開(kāi)日2005年8月17日 申請(qǐng)日期2005年2月6日 優(yōu)先權(quán)日2004年2月11日
發(fā)明者李廷周 申請(qǐng)人:三星電子株式會(huì)社