專利名稱:一種適用于cmmb和dvb-h/t的fft運(yùn)算電路結(jié)構(gòu)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于無線數(shù)字通信技術(shù)領(lǐng)域,具體涉及一種同時支持CMMB和DVB-H兩種移 動多媒體標(biāo)準(zhǔn)的FFT運(yùn)算電路結(jié)構(gòu)。
背景技術(shù):
移動多媒體技術(shù)如今已經(jīng)得到越來越廣泛的應(yīng)用。隨著中國移動多媒體標(biāo)準(zhǔn)CMMB 的頒布實施,移動多媒體得到了進(jìn)一步的普及。多模多標(biāo)準(zhǔn)是當(dāng)今移動多媒體技術(shù)發(fā)展的 趨勢,以同一套終端在不同地域?qū)崿F(xiàn)對不同標(biāo)準(zhǔn)下的節(jié)目接收也是多模多標(biāo)準(zhǔn)發(fā)展的要 求。同步技術(shù)作為接收終端中一個重要的部分,其在多模接收終端中的研究應(yīng)用也具有非 常重要的意義。研究目前主要的移動多媒體標(biāo)準(zhǔn)如歐洲標(biāo)準(zhǔn)DVB-H,中國標(biāo)準(zhǔn)CMMB,發(fā)現(xiàn)它們在 OFDM符號結(jié)構(gòu)上具有一定的共性。即都采用了多載波0FDM(正交頻分復(fù)用)調(diào)制方式,每 個OFDM符號的子載波數(shù)為2K/4K/8K,因此這些共性決定了可以尋求到一種融合的同步方 案來支持各個標(biāo)準(zhǔn)的各種模式?;诙嗄6鄻?biāo)準(zhǔn)的需求以及各個移動多媒體標(biāo)準(zhǔn)在OFDM符號結(jié)構(gòu)上的共性,本 發(fā)明提出了一種融合的硬件結(jié)構(gòu),能夠同時支持目前兩種主流的移動多媒體標(biāo)準(zhǔn)CMMB和 DVB-H的FFT運(yùn)算,實現(xiàn)最大程度的硬件復(fù)用。
發(fā)明內(nèi)容
本發(fā)明目的在于提供一種同時支持CMMB和DVB-H兩種標(biāo)準(zhǔn)的FFT運(yùn)算電路結(jié)構(gòu), 實現(xiàn)最大程度的硬件復(fù)用。本發(fā)明提供的同時支持CMMB和DVB-H兩種標(biāo)準(zhǔn)的FFT運(yùn)算電路結(jié)構(gòu),是一 種基于存儲器結(jié)構(gòu)的迭代算法的2048/4096/8192點快速傅里葉變換(fast Fourier transformation, FFT)處理器。所謂基于存儲器的迭代結(jié)構(gòu)的是一種遞歸形式的結(jié)構(gòu),一 般指包含一個蝶形單元,由它迭代數(shù)次來完成整個FFT運(yùn)算。這種結(jié)構(gòu)采用的運(yùn)算單元少, 所以它的芯片面積相比流水線結(jié)構(gòu)更有優(yōu)勢。但它采用迭代處理運(yùn)算時間要長一些。本發(fā) 明在存儲器的迭代結(jié)構(gòu)基礎(chǔ)上提出一種新的FFT處理器電路結(jié)構(gòu),并設(shè)計了一個高效的控 制方案,減少了硬件資源。并且改進(jìn)了蝶形單元的結(jié)構(gòu),可以處理任意的2n點的FFT運(yùn)算。本發(fā)明根據(jù)CMMB和DVB-H兩種標(biāo)準(zhǔn)在OFDM符號結(jié)構(gòu)上的共性,提出了一種融合 的硬件結(jié)構(gòu),實現(xiàn)同時對兩種標(biāo)準(zhǔn)FFT運(yùn)算的支持。本發(fā)明的提出的FFT運(yùn)算電路結(jié)構(gòu),由 控制信號發(fā)生器,輸入信號重新排序模塊,存儲器Single Port RAM模塊,存儲器讀/寫地 址產(chǎn)生器模塊,2/4/8點蝶形運(yùn)算單元,復(fù)數(shù)乘法器模塊,旋轉(zhuǎn)因子數(shù)據(jù)存儲器和旋轉(zhuǎn)因子 存儲地址發(fā)生器模塊,控制數(shù)據(jù)繼續(xù)計算or輸出選擇模塊構(gòu)成。每一個模塊都考慮了兩種 標(biāo)準(zhǔn)在OFDM符號構(gòu)成上的共性,從而實現(xiàn)硬件融合,并且通過控制信號控制不同模塊的工 作模式。數(shù)據(jù)通路是FFT處理器的核心。本發(fā)明提出雙路并行流水處理的數(shù)據(jù)通路,如圖1所示。該結(jié)構(gòu)由2個蝶形運(yùn)算單元和2個復(fù)數(shù)乘法器各組成一條獨立的數(shù)據(jù)通路,RAM中 的數(shù)據(jù)經(jīng)該通路處理后即完成一級基-R操作,結(jié)果再存回RAM中,而最后一級的蝶形運(yùn)算 結(jié)果就是整個FFT的計算結(jié)果,直接輸出。下面分別介紹各個模塊和功能。輸入數(shù)據(jù)初始排列模塊,當(dāng)輸入一個待FFT計算的OFDM Symbol數(shù)據(jù)的時候,首 先進(jìn)行輸入數(shù)據(jù)的重新排序存儲。若當(dāng)前模式為CMMB標(biāo)準(zhǔn)的2K模式,則輸入的一個OFDM Symbol中的2048個數(shù)據(jù),平均分成4份,每份512個數(shù)據(jù),分別存儲于存儲器RAMI,RAM2, RAM3, RAM4 ;若當(dāng)前模式為CMMB標(biāo)準(zhǔn)的4K模式,則平均分成4份,每份1024個數(shù)據(jù)進(jìn)行存 儲;若當(dāng)前模式為DVB-H標(biāo)準(zhǔn)的4K模式,則平均分成4份,每份1024個數(shù)據(jù)進(jìn)行存儲;若當(dāng) 前模式為DVB-H標(biāo)準(zhǔn)的8K模式,則平均分成4份,每份2048個數(shù)據(jù)進(jìn)行存儲。輸入輸出說 明如表2所示。存儲器Single Port RAM模塊,用于存儲需要計算的一個OFDM Symbol,緩存各級 運(yùn)算的結(jié)果。由4塊位寬為26bits深度為2048的single port RAM組成。輸入輸出說明 如表3所示??刂菩盘柊l(fā)生器,輸入輸出信號如表4所示。產(chǎn)生模式選擇信號MODE SEL決定其 他模塊的電路工作的當(dāng)前模式(是CMMB的2K/4K,還是DVB-H的2K/4K/8K模式),選擇內(nèi) 容有(1)數(shù)據(jù)存儲器的初始緩存內(nèi)容,若是CMMB標(biāo)準(zhǔn)的2K模式,則輸入的一個OFDM Symbol中的2048個數(shù)據(jù),平均分成4份,每份512個數(shù)據(jù),分別存儲于RAMI,RAM2, RAM3, RAM4 ;若當(dāng)前模式為CMMB標(biāo)準(zhǔn)的4K模式,則平均分成4份,每份1024個數(shù)據(jù)進(jìn)行存儲;若 當(dāng)前模式為DVB-H標(biāo)準(zhǔn)的4K模式,則平均分成4份,每份1024個數(shù)據(jù)進(jìn)行存儲;若當(dāng)前模 式為DVB-H標(biāo)準(zhǔn)的8K模式,則平均分成4份,每份2048個數(shù)據(jù)進(jìn)行存儲。(2)數(shù)據(jù)存儲器的讀/寫地址控制,模式選擇M0DE_SEL[1:0] = 00:CMMB的2K模 式或 DVB-H 的 2K 模式;M0DE_SEL[1:0] = 01: CMMB 的 4K 模式或 DVB-H 的 4K 模式;M0DE_ SEL [1:0] = 10: DVB-H 的 8k 模式。(3)蝶形運(yùn)算單元的工作模式。蝶形運(yùn)算單元的工作模式分為RadiX-2、RadiX-4、 Radix-8,三種。按照2048點、4096點、8192點FFT運(yùn)算分為4級運(yùn)算,按照算法選擇當(dāng)前 使用RadiX-2、RadiX-4、或者Radix-8點蝶形運(yùn)算的模式。存儲器讀/寫地址產(chǎn)生模塊,完成對存儲器的讀寫的控制,為數(shù)據(jù)的初始存儲,和 每一級FFT運(yùn)算的數(shù)據(jù)的讀取和該級運(yùn)算結(jié)果的存儲提供地址。輸入輸出說明如表5所示。Radix-2/4/8點蝶形運(yùn)算單元模塊,具體結(jié)構(gòu)如圖2所示,輸入輸出說明如表6所示。蝶形運(yùn)算單元的工作模式分為Radix-2、Radix-4、Radix-8,三種。按照FFT運(yùn)算 的分裂基運(yùn)算法則,若是CMMB標(biāo)準(zhǔn)的2K模式,2048點數(shù)據(jù)的運(yùn)算分為,第一級的Radix-4 點蝶形運(yùn)算和后面三級的Radix-8點蝶形運(yùn)算;4096 (4K)點FFT運(yùn)算被分解為迭代的四級 的Radix-8點蝶形運(yùn)算;8192(8K)點FFT分解為迭代的第一級的Radix-2點蝶形運(yùn)算和后 面四級的8點蝶形運(yùn)算。Radix-2/4/8點蝶形運(yùn)算單元由三級Radix-2的蝶形運(yùn)算,延遲單元和多路選擇 器組成。其中,第一級有一個Radix-2點蝶形運(yùn)算單元和1個寄存器,第二級有1個Radix-2 蝶形運(yùn)算單元和2個寄存器,第三級有Radix-2個蝶形運(yùn)算單元和4個寄存器。多路選擇器MUX用來選擇,輸入模式選擇信號RADIX_M0DE[1:0] =00時,選通路線R-2,進(jìn)行Radix-2 點的蝶形運(yùn)算;當(dāng)RADIX_M0DE[1:0] = 01時,選通路線R-4,進(jìn)行Radix-4點的蝶形運(yùn)算; RADIX_M0DE[1:0] = 11時,進(jìn)行Radix-8點的蝶形運(yùn)算。當(dāng)選擇路線R-2的時候,只有第一 級的Radix-2點蝶形運(yùn)算單元,后面兩級的蝶形運(yùn)算單元被旁路,不進(jìn)行計算;當(dāng)選擇路線 R-4的時候,只有第一級和第二級的Radix-2點蝶形運(yùn)算單元,最后一級的蝶形運(yùn)算單元被 旁路,不進(jìn)行計算;選擇路線R-8的時候,三級的Radix-2點蝶形運(yùn)算單元都進(jìn)行運(yùn)算。該 蝶形運(yùn)算單元的特點是以流水線實現(xiàn)的,每個周期讀入一個數(shù)據(jù),完成計算時每個周期輸 出一個數(shù)據(jù)。例如,進(jìn)行Radix-8點的FFT運(yùn)算的時候,開始的8個周期,依次讀入8個需 要計算的數(shù)據(jù),在完成所有需要運(yùn)算的數(shù)讀入完畢的下一個時鐘周期開始,按照每個周期 輸出一個數(shù)據(jù)的方式,依次輸出8個運(yùn)算結(jié)果,并且,在可以輸出運(yùn)算結(jié)果的同時,可以開 始讀取下一次Radix-8點的FFT運(yùn)算的8個輸入數(shù)據(jù)。具體結(jié)構(gòu)如圖2所示,輸入輸出說 明如表2所示。復(fù)數(shù)乘法器模塊,復(fù)數(shù)乘法器由4個實數(shù)乘法器構(gòu)成,完成對輸入的兩個復(fù)數(shù)的 實部和虛部進(jìn)行計算。輸入的reall和imagl為被乘數(shù)的實部和虛部,real2和image2為 乘數(shù)的實部和虛部。經(jīng)過4個乘法器完成。復(fù)數(shù)乘法器模塊的輸入輸出如表7所示。旋轉(zhuǎn)因子存儲器和旋轉(zhuǎn)因子地址選擇器模塊。旋轉(zhuǎn)因子存儲器使用ROM來存儲旋 轉(zhuǎn)因子。根據(jù)由旋轉(zhuǎn)因子地址選擇器提供的地址輸出相應(yīng)的旋轉(zhuǎn)因子,經(jīng)過旋轉(zhuǎn)因子映射 后,轉(zhuǎn)換為對應(yīng)的旋轉(zhuǎn)因子與Radix-2. /4/8蝶形運(yùn)算單元的輸出數(shù)據(jù)相乘。該旋轉(zhuǎn)因子存 儲器和旋轉(zhuǎn)因子地址選擇器模塊的輸入輸出信號如表8所示。本發(fā)明提出的2048/4096/8192點快速傅里葉變換(FFT)處理器中,2048點(2K 點)快速傅里葉變換(FFT)根據(jù)素因子算法分解為迭代的第一級的Radix-4點蝶形運(yùn)算 和后面三級的Radix-8點蝶形運(yùn)算;4096(4K)點FFT運(yùn)算被分解為迭代的4級的Radix-8 點蝶形運(yùn)算;8192(8K)點FFT分解為迭代的第一級的Radix-2點蝶形運(yùn)算和后面四級的8 點蝶形運(yùn)算。迭代運(yùn)算的時候,初始的運(yùn)算數(shù)據(jù),存儲在存儲器中,進(jìn)入蝶形運(yùn)算單元并且 完成該級的Radix-2、Radix-4或者Radix-8運(yùn)算后,該級的運(yùn)算結(jié)果存回存儲器中,等待 所有的數(shù)據(jù)都完成了該級的運(yùn)算的時候,再開始下一級的運(yùn)算,從存儲器中依次將所有的 數(shù)據(jù)讀出,輸入蝶形運(yùn)算單元開始計算,運(yùn)算結(jié)果輸出的時候再存回存儲器。直到所有的 2048/4096/8192點運(yùn)算完成,最后FFT處理器結(jié)果再輸出。本發(fā)明提出的2048/4096/8192點快速傅里葉變換(FFT)處理器中,將 2048/4096/8192 點 FFT 運(yùn)算用分解基的 FFT 算法。其中 Radix-2,Radix-4, Radix-8 點蝶 形運(yùn)算單元,使用同一種結(jié)構(gòu)的運(yùn)算單元,即Radix-2/4/8點蝶形運(yùn)算單元完成。其中將 Radix-2、Radix-4、Radix-8點FFT運(yùn)算分裂為以2為基,即Radix-2點蝶形運(yùn)算為基的算 法。其特征是使用流水線的方式計算每一級運(yùn)算中的基2的FFT運(yùn)算,第一級選用1個存 儲單元,第二級使用2個存儲單元,第三級使用4個存儲單元存放運(yùn)算數(shù)據(jù),模式選擇信號 通過選擇工作的級數(shù)來選擇工作的模式。使用一個Radix-2/4/8點FFT蝶形運(yùn)算單元,使 整個2048/4096/8192點FFT運(yùn)算可以以迭代的方式進(jìn)行,其結(jié)構(gòu)如圖2所示。本發(fā)明中,所述的Radix-2/4/8點蝶形運(yùn)算單元,使用兩個Radix-2/4/8點蝶形運(yùn) 算單元,形成兩路數(shù)據(jù)并行計算,以達(dá)到CMMB或者DVB-H的OFDM Symbol的FFT運(yùn)算速率 的要求。
本發(fā)明中,利用4塊深度為2048的Single Port RAM模塊存儲器,和其相應(yīng) 的存取地址讀/寫地址產(chǎn)生器,配合Radix-2/4/8點蝶形運(yùn)算單元,進(jìn)行迭代,實現(xiàn) 2048/4096/8192點FFT運(yùn)算。在一個OFDM的Symbol的FFT運(yùn)算初始化的時候,將一個 OFDM Symbol中的數(shù)據(jù)分4路,將正序輸入的數(shù)據(jù),按照倒序,存入4塊數(shù)據(jù)深度為2048點 的single portRAM之中。當(dāng)運(yùn)算的OFDM Symbol中的數(shù)據(jù)為2048個即2K點的時候,每塊 single port RAM中存放的數(shù)據(jù)為512個;當(dāng)運(yùn)算的OFDM Symbol中的數(shù)據(jù)為4096個即4K 點的時候,每塊single port RAM中存放的數(shù)據(jù)為1024個;當(dāng)運(yùn)算的OFDM Symbol中的數(shù) 據(jù)為8192個即8K點的時候,每塊single port RAM中存放的數(shù)據(jù)為2048個。本發(fā)明中,存儲器讀寫的控制由存儲器讀/寫地址發(fā)生器完成,該存儲器讀/寫地 址發(fā)生器為數(shù)據(jù)的初始存儲,和每一級FFT運(yùn)算的數(shù)據(jù)的讀取和該級運(yùn)算結(jié)果的存儲提供 地址。初始存儲數(shù)據(jù)的地址順序選擇有一定的規(guī)律,使得兩路運(yùn)行中的Radix-2/4/8點蝶 形運(yùn)算單元,在讀取一塊RAM的時候,能在其中取到當(dāng)前計算所使用的數(shù)據(jù);在完成該蝶形 運(yùn)算并流水地輸出運(yùn)算結(jié)果的時候,將結(jié)果存入同一塊RAM的這些地址之中。在迭代運(yùn)算 中,每一級的Radix-2/4/8點蝶形運(yùn)算,都滿足此要求。本發(fā)明中,兩個Radix-2/4/8點蝶形運(yùn)算單元同時并行計算,第一個Radix-2/4/8 點蝶形運(yùn)算單元讀寫RAMI和RAM2,第二個Radix-2/4/8點蝶形運(yùn)算單元讀寫RAM3和RAM4。 周而復(fù)始,直到完成該級的FFT運(yùn)算,再開始下一級的FFT運(yùn)算。本發(fā)明能夠很好地滿足對CMMB及DVB-H兩種標(biāo)準(zhǔn)的FFT運(yùn)算,以一套硬件結(jié)構(gòu)實 現(xiàn)了兩種標(biāo)準(zhǔn)的FFT運(yùn)算電路的融合,同時提高硬件利用率,實現(xiàn)最大程度的硬件復(fù)用。
圖1適用于CMMB及DVB-H的FFT運(yùn)算硬件結(jié)構(gòu)圖。圖2Radix-2/4/8點蝶形模塊結(jié)構(gòu)圖。圖3存儲器模塊硬件結(jié)構(gòu)圖。圖4Radix-2/4/8點蝶形模塊讀/寫存儲器流程圖。
具體實施例方式整個電路的具體結(jié)構(gòu)如圖1所示,輸入輸出說明如表1所示。模式選擇信號MODE SEL控制當(dāng)前工作模式(是CMMB的2K/4K,還是DVB-H的2K/4K/8K模式),模塊送入不同的
參數(shù)值。數(shù)據(jù)通路是FFT處理器的核心。本設(shè)計提出了一種如圖1所示的雙路并行流水處 理的數(shù)據(jù)通路。該結(jié)構(gòu)由2個蝶形運(yùn)算單元和2個復(fù)數(shù)乘法器各組成一條獨立的數(shù)據(jù)通 路,RAM中的數(shù)據(jù)經(jīng)該通路處理后即完成一級基-R操作,結(jié)果再存回RAM中,而最后一級的 蝶形運(yùn)算結(jié)果就是整個FFT的計算結(jié)果,直接輸出。下面分別介紹各個模塊和功能。輸入數(shù)據(jù)初始排列模塊,當(dāng)輸入一個待FFT計算的OFDM Symbol數(shù)據(jù)的時候,首 先進(jìn)行輸入數(shù)據(jù)的重新排序存儲。若當(dāng)前模式為CMMB標(biāo)準(zhǔn)的2K模式,則輸入的一個OFDM Symbol中的2048個數(shù)據(jù),平均分成4份,每份512個數(shù)據(jù),分別存儲于RAMI,RAM2, RAM3, RAM4 ;若當(dāng)前模式為CMMB標(biāo)準(zhǔn)的4K模式,則平均分成4份,每份1024個數(shù)據(jù)進(jìn)行存儲;若 當(dāng)前模式為DVB-H標(biāo)準(zhǔn)的4K模式,則平均分成4份,每份1024個數(shù)據(jù)進(jìn)行存儲;若當(dāng)前模
8式為DVB-H標(biāo)準(zhǔn)的8K模式,則平均分成4份,每份2048個數(shù)據(jù)進(jìn)行存儲。輸入輸出說明如 表2所示。存儲器Single Port RAM模塊,用于存儲需要計算的一個OFDM Symbol,緩存各級 運(yùn)算的結(jié)果。由4塊位寬為26bits深度為2048的single port RAM組成。輸入輸出說明 如表3所示??刂菩盘柊l(fā)生器,輸入輸出信號如表4所示。產(chǎn)生模式選擇信號MODE SEL決定其 他模塊的電路工作的當(dāng)前模式(是CMMB的2K/4K,還是DVB-H的2K/4K/8K模式),選擇內(nèi) 容有(1)數(shù)據(jù)存儲器的初始緩存內(nèi)容,若是CMMB標(biāo)準(zhǔn)的2K模式,則輸入的一個OFDM Symbol中的2048個數(shù)據(jù),平均分成4份,每份512個數(shù)據(jù),分別存儲于RAMI,RAM2, RAM3, RAM4 ;若當(dāng)前模式為CMMB標(biāo)準(zhǔn)的4K模式,則平均分成4份,每份1024個數(shù)據(jù)進(jìn)行存儲;若 當(dāng)前模式為DVB-H標(biāo)準(zhǔn)的4K模式,則平均分成4份,每份1024個數(shù)據(jù)進(jìn)行存儲;若當(dāng)前模 式為DVB-H標(biāo)準(zhǔn)的8K模式,則平均分成4份,每份2048個數(shù)據(jù)進(jìn)行存儲。(2)數(shù)據(jù)存儲器的讀/寫地址控制,模式選擇M0DE_SEL[1:0] = 00:CMMB的2K模 式或 DVB-H 的 2K 模式;M0DE_SEL[1:0] = 01: CMMB 的 4K 模式或 DVB-H 的 4K 模式;M0DE_ SEL [1:0] = 10: DVB-H 的 8k 模式。(3)蝶形運(yùn)算單元的工作模式。蝶形運(yùn)算單元的工作模式分為RadiX-2、RadiX-4、 Radix-8,三種。按照2048點、4096點、8192點FFT運(yùn)算分為4級運(yùn)算,按照算法選擇當(dāng)前 使用RadiX-2、RadiX-4、或者Radix-8點蝶形運(yùn)算的模式。存儲器讀/寫地址產(chǎn)生模塊,完成對存儲器的讀寫的控制,為數(shù)據(jù)的初始存儲,和 每一級FFT運(yùn)算的數(shù)據(jù)的讀取和該級運(yùn)算結(jié)果的存儲提供地址。輸入輸出說明如表5所示。Radix-2/4/8點蝶形運(yùn)算單元模塊,具體結(jié)構(gòu)如圖2所示,輸入輸出說明如表6所
7J\ ο蝶形運(yùn)算單元的工作模式分為Radix-2、Radix-4、Radix-8,三種。按照FFT運(yùn)算 的分裂基運(yùn)算法則,若是CMMB標(biāo)準(zhǔn)的2K模式,2048點數(shù)據(jù)的運(yùn)算分為,第一級的Radix-4 點蝶形運(yùn)算和后面三級的Radix-8點蝶形運(yùn)算;4096 (4K)點FFT運(yùn)算被分解為迭代的四級 的Radix-8點蝶形運(yùn)算;8192(8K)點FFT分解為迭代的第一級的Radix-2點蝶形運(yùn)算和后 面四級的8點蝶形運(yùn)算。Radix-2/4/8點蝶形運(yùn)算單元由三級Radix-2的蝶形運(yùn)算,延遲單元和多路選擇 器組成。其中,第一級有一個Radix-2點蝶形運(yùn)算單元和1個寄存器,第二級有1個Radix-2 蝶形運(yùn)算單元和2個寄存器,第三級有Radix-2個蝶形運(yùn)算單元和4個寄存器。多路選擇 器MUX用來選擇,輸入模式選擇信號RADIX_M0DE[1:0] =00時,選通路線R-2,進(jìn)行Radix-2 點的蝶形運(yùn)算;當(dāng)RADIX_M0DE[1:0] = 01時,選通路線R-4,進(jìn)行Radix-4點的蝶形運(yùn)算; RADIX_M0DE[1:0] = 11時,進(jìn)行Radix-8點的蝶形運(yùn)算。當(dāng)選擇路線R-2的時候,只有第一 級的Radix-2點蝶形運(yùn)算單元,后面兩級的蝶形運(yùn)算單元被旁路,不進(jìn)行計算;當(dāng)選擇路線 R-4的時候,只有第一級和第二級的Radix-2點蝶形運(yùn)算單元,最后一級的蝶形運(yùn)算單元被 旁路,不進(jìn)行計算;選擇路線R-8的時候,三級的Radix-2點蝶形運(yùn)算單元都進(jìn)行運(yùn)算。該 蝶形運(yùn)算單元的特點是以流水線實現(xiàn)的,每個周期讀入一個數(shù)據(jù),完成計算時每個周期輸 出一個數(shù)據(jù)。例如,進(jìn)行Radix-8點的FFT運(yùn)算的時候,開始的8個周期,依次讀入8個需要計算的數(shù)據(jù),在完成所有需要運(yùn)算的數(shù)讀入完畢的下一個時鐘周期開始,按照每個周期 輸出一個數(shù)據(jù)的方式,依次輸出8個運(yùn)算結(jié)果,并且,在可以輸出運(yùn)算結(jié)果的同時,可以開 始讀取下一次Radix-8點的FFT運(yùn)算的8個輸入數(shù)據(jù)。具體結(jié)構(gòu)如圖2所示,輸入輸出說 明如表2所示。復(fù)數(shù)乘法器模塊,復(fù)數(shù)乘法器由4個實數(shù)乘法器構(gòu)成,完成對輸入的兩個復(fù)數(shù)的 實部和虛部進(jìn)行計算。輸入的reall和imagl為被乘數(shù)的實部和虛部,real2和image2為 乘數(shù)的實部和虛部。經(jīng)過4個乘法器完成。復(fù)數(shù)乘法器模塊的輸入輸出如表7所示。數(shù)據(jù)通路和控制方式按照FFT的分裂基的分級運(yùn)算規(guī)則,對于各級運(yùn)算的不同階段給出存儲數(shù)據(jù)的讀 /寫地址信號,控制RAMI,RAM2, RAM3, RAM4這4個存儲器的數(shù)據(jù)存儲和讀出。數(shù)據(jù)的初始 存儲時,若是CMMB標(biāo)準(zhǔn)的2K模式,則讀/寫地址控制信號產(chǎn)生的RAMI,RAM2,RAM3,RAM4這 4個存儲器的地址信號深度為512 ;若當(dāng)前模式為CMMB標(biāo)準(zhǔn)的4K模式,則數(shù)據(jù)地址深度為 1024 ;若當(dāng)前模式為DVB-H標(biāo)準(zhǔn)的4K模式,則數(shù)據(jù)地址深度為1024 ;若當(dāng)前模式為DVB-H 標(biāo)準(zhǔn)的8K模式,則數(shù)據(jù)地址深度為2048。在各級計算的時候,存儲器讀/寫地址產(chǎn)生模塊控制讀出進(jìn)行當(dāng)前級蝶形運(yùn)算的 輸入數(shù)據(jù)的地址,計算完成后將數(shù)據(jù)存回存儲器中。為了使這2條數(shù)據(jù)通路同事工作而不產(chǎn)生讀寫沖突,本設(shè)計采用了一種有效的控 制方案,2個蝶形運(yùn)算單元讀寫4個存儲器的時序如圖4所示。以2048點FFT運(yùn)算為例, 輸入正序數(shù)據(jù)按照倒序地址分別存入4快RAM中,每塊存512個數(shù)據(jù),征集計算分解為一級 基_4和三級基-8運(yùn)算。在第1級到底3級(stage 1,Stage2,stage3)運(yùn)算中,猶豫每次進(jìn) 行計算的R(R_4或者8)個數(shù)的間隔大于4,所以他們都位于同一塊RAM中,其讀寫時序如圖 4所示。各級的FFT運(yùn)算,由存儲器讀/寫地址產(chǎn)生模塊,對兩個Radix-2/4/8點蝶形運(yùn)算 單元控制來完成。由如圖3所示,第一級運(yùn)算為stageO,第二級運(yùn)算為stagel,第二級為 Stage2,第三級為Stage3,第四級為Stage4。每個時鐘周期,Radix-2/4/8點蝶形運(yùn)算單元 可以從存儲器RAM中讀出一個數(shù)據(jù),每個時鐘周期,可以將一個數(shù)據(jù)寫回存儲器。第一個 Radix-2/4/8點蝶形運(yùn)算單元讀取RAMI中的數(shù)據(jù),然后將從RAMI中取得的數(shù)據(jù)的運(yùn)算結(jié) 果流水輸出寫回RAMI相同地址,在輸出結(jié)果的同時,該Radix-2/4/8點蝶形運(yùn)算單元讀取 RAM2中的數(shù)據(jù),在RAM2中取得的數(shù)據(jù)的運(yùn)算結(jié)果流水輸出寫回RAM2相同地址的同時讀寫 RAMI。第二個Radix-2/4/8點蝶形運(yùn)算單元讀取RAM3中的數(shù)據(jù),然后將從RAM3中取得的 數(shù)據(jù)的運(yùn)算結(jié)果流水輸出寫回RAM3相同地址,在輸出結(jié)果的同時,該Radix-2/4/8點蝶形 運(yùn)算單元讀取RAM4中的數(shù)據(jù),在RAM4中取得的數(shù)據(jù)的運(yùn)算結(jié)果流水輸出寫回RAM4相同地 址的同時讀寫RAMI。通路1先從RAMI中一次讀取R個數(shù)進(jìn)行基-R運(yùn)算,R個時鐘周期后這組基-R運(yùn) 算的記過開始輸出,并被寫回RAMI中,即圖中的第二個大括號處。由于Radix-2/4/8點蝶 形運(yùn)算單元是以流水線方式工作的,在寫RAMI時,通路1同時也在讀取RAM2中的另一組 基-R操作數(shù),即圖中RAMI和RAM2對應(yīng)的讀時段是交疊的。通過這種方法,通路1交替的 讀寫RAMI和RAM2,而通路2也以相同的方式交替的讀寫RAM3和RAM4,同時由于通路1和 通路2每次讀寫的是不同的RAM,因此2條數(shù)據(jù)通路不會產(chǎn)生地址沖突。在2K模式下的最后一級基_8運(yùn)算中,由于蝶形單元的運(yùn)算結(jié)果直接輸出而不需要寫回,所以通路1和通路 2只要依次從4塊RAM中讀取相應(yīng)的數(shù)據(jù)即可。如圖4,顯示了第一個Radix-2/4/8點蝶形運(yùn)算單元讀寫存儲器的流程狀態(tài)。以第 一級為Radix-8點運(yùn)算模式為例,第一個Radix-2/4/8點蝶形運(yùn)算單元,進(jìn)行Radix-8點蝶 形運(yùn)算,依次從RAMI中讀取當(dāng)前8點FFT運(yùn)算所需要的8個數(shù)據(jù)和它們的計算結(jié)果定義為 Group 1,下一次8點FFT運(yùn)算所需要的8個數(shù)據(jù)和它們的計算結(jié)果定義為GroUp2。如圖所 示的stagel中,開始的8個時鐘周期,從RAMI中依次從RAMI中讀取當(dāng)前8點FFT運(yùn)算所 需要的8個數(shù)據(jù)(地址0,1,2,3,4,5,6,7的數(shù)據(jù)),第9個時鐘周期開始的8個時鐘周期, 將8個運(yùn)算結(jié)果依次輸出,存入RAMI相應(yīng)的地址中(此為Groupl的運(yùn)算完成),同時,從這 第9個時鐘周期開始的8個時鐘周期,從RAM2中讀取下一次8點FFT運(yùn)算所需要的8個數(shù) 據(jù)(GroUp2的運(yùn)算開始)。第二個Radix-8點蝶形運(yùn)算單元,和第一個Radix-8點蝶形運(yùn)算 單元同時并行工作,按照同樣的順序,讀寫RAM3和RAM4。周而復(fù)始,直到兩個Radix-8點 蝶形運(yùn)算單元完成該級的FFT分裂基運(yùn)算。在下一級開始的Radix-8點蝶形運(yùn)算,第一個 Radix-2/4/8點蝶形運(yùn)算單元,開始的8個時鐘周期,依次從RAMI中讀取當(dāng)前8點FFT運(yùn)算 所需要的8個數(shù)據(jù)(如圖所示的stage2中,從RAMI中讀取地址0,8,16,24,32,40,48,56 的數(shù)據(jù)),第9個時鐘周期開始的8個時鐘周期,將8個運(yùn)算結(jié)果依次輸出,存入RAMI中,同 時,從這第9個時鐘周期開始的8個時鐘周期,從RAM2中讀取下一次8點FFT運(yùn)算所需要 的8個數(shù)據(jù)。第二個Radix-2/4/8點蝶形運(yùn)算單元進(jìn)行的第該級的Radix-8點蝶形運(yùn)算和 第一個單元同時進(jìn)行,按照同樣的順序。旋轉(zhuǎn)因子存儲器和旋轉(zhuǎn)因子地址選擇器模塊。旋轉(zhuǎn)因子存儲器使用ROM來存儲旋 轉(zhuǎn)因子。根據(jù)由旋轉(zhuǎn)因子地址選擇器提供的地址輸出相應(yīng)的旋轉(zhuǎn)因子,經(jīng)過旋轉(zhuǎn)因子映射 后,轉(zhuǎn)換為對應(yīng)的旋轉(zhuǎn)因子與Radix-2. /4/8蝶形運(yùn)算單元的輸出數(shù)據(jù)相乘。該旋轉(zhuǎn)因子存 儲器和旋轉(zhuǎn)因子地址選擇器模塊的輸入輸出信號如表8所示。表1.整體硬件結(jié)構(gòu)圖輸入輸出說明 表2.輸入數(shù)據(jù)初始排列模塊輸入輸出說明 表3.存儲器Single Port RAM模塊輸入輸出說明 表4.控制信號發(fā)生器模塊輸入輸出說明 表5.存儲器讀/寫地址產(chǎn)生器模塊輸入輸出說明
13 表6. Radix-2/4/8點蝶形運(yùn)算單元 表7.復(fù)數(shù)乘法器模塊
表8.旋轉(zhuǎn)因子存儲器和旋轉(zhuǎn)因子地址選擇器模塊
權(quán)利要求
一種適用于CMMB和DVB H/T的FFT運(yùn)算電路結(jié)構(gòu),其特征在于該電路結(jié)構(gòu)由控制信號發(fā)生器,輸入信號重新排序模塊,存儲器Single Port RAM模塊,存儲器讀/寫地址產(chǎn)生器模塊,2/4/8點蝶形運(yùn)算單元,復(fù)數(shù)乘法器模塊,旋轉(zhuǎn)因子數(shù)據(jù)存儲器和旋轉(zhuǎn)因子存儲地址發(fā)生器模塊,控制數(shù)據(jù)繼續(xù)計算or輸出選擇模塊構(gòu)成;每一個模塊都有CMMB和DVB H/T兩種標(biāo)準(zhǔn)的工作模式,并且通過控制信號控制不同模塊的工作模式;數(shù)據(jù)通路采用雙路并行流水處理的數(shù)據(jù)通路,由2個蝶形運(yùn)算單元和2個復(fù)數(shù)乘法器各組成一條獨立的數(shù)據(jù)通路,RAM中的數(shù)據(jù)經(jīng)該通路處理后即完成一級基 R操作,結(jié)果再存回RAM中,最后一級的蝶形運(yùn)算結(jié)果就是整個FFT的計算結(jié)果,直接輸出;其中輸入數(shù)據(jù)初始排列模塊,當(dāng)輸入一個待FFT計算的OFDM Symbol數(shù)據(jù)的時候,由輸入數(shù)據(jù)初始排列模塊首先進(jìn)行輸入數(shù)據(jù)的重新排序存儲;若當(dāng)前模式為CMMB標(biāo)準(zhǔn)的2K模式,則輸入的一個OFDM Symbol中的2048個數(shù)據(jù),平均分成4份,每份512個數(shù)據(jù),分別存儲于存儲器RAM1,RAM2,RAM3,RAM4;若當(dāng)前模式為CMMB標(biāo)準(zhǔn)的4K模式,則平均分成4份,每份1024個數(shù)據(jù)進(jìn)行存儲;若當(dāng)前模式為DVB H標(biāo)準(zhǔn)的4K模式,則平均分成4份,每份1024個數(shù)據(jù)進(jìn)行存儲;若當(dāng)前模式為DVB H標(biāo)準(zhǔn)的8K模式,則平均分成4份,每份2048個數(shù)據(jù)進(jìn)行存儲;存儲器Single Port RAM模塊,用于存儲需要計算的一個OFDM Symbol,緩存各級運(yùn)算的結(jié)果,由4塊位寬為26bits深度為2048的single port RAM組成;控制信號發(fā)生器,產(chǎn)生模式選擇信號MODE_SEL決定其他模塊的電路工作的當(dāng)前模式是CMMB的2K/4K,還是DVB H的2K/4K/8K模式,選擇內(nèi)容有(1)數(shù)據(jù)存儲器的初始緩存內(nèi)容,若是CMMB標(biāo)準(zhǔn)的2K模式,則輸入的一個OFDM Symbol中的2048個數(shù)據(jù),平均分成4份,每份512個數(shù)據(jù),分別存儲于存儲器RAM1,RAM2,RAM3,RAM4;若當(dāng)前模式為CMMB標(biāo)準(zhǔn)的4K模式,則平均分成4份,每份1024個數(shù)據(jù)進(jìn)行存儲;若當(dāng)前模式為DVB H標(biāo)準(zhǔn)的4K模式,則平均分成4份,每份1024個數(shù)據(jù)進(jìn)行存儲;若當(dāng)前模式為DVB H標(biāo)準(zhǔn)的8K模式,則平均分成4份,每份2048個數(shù)據(jù)進(jìn)行存儲;(2)數(shù)據(jù)存儲器的讀/寫地址控制,模式選擇MODE_SEL[1:0]=00:CMMB的2K模式或DVB H的2K模式;MODE_SEL[1:0]=01:CMMB的4K模式或DVB H的4K模式;MODE_SEL[1:0]=10:DVB H的8k模式;(3)蝶形運(yùn)算單元的工作模式,蝶形運(yùn)算單元的工作模式分為Radix 2、Radix 4、Radix 8,三種,按照2048點、4096點、8192點FFT運(yùn)算分為4級運(yùn)算,按照算法選擇當(dāng)前使用Radix 2、Radix 4、或者Radix 8點蝶形運(yùn)算的模式;存儲器讀/寫地址產(chǎn)生模塊,完成對存儲器的讀寫的控制,為數(shù)據(jù)的初始存儲,和每一級FFT運(yùn)算的數(shù)據(jù)的讀取和該級運(yùn)算結(jié)果的存儲提供地址;Radix 2/4/8點蝶形運(yùn)算單元模塊,蝶形運(yùn)算單元的工作模式分為Radix 2、Radix 4、Radix 8,三種;按照FFT運(yùn)算的分裂基運(yùn)算法則,若是CMMB標(biāo)準(zhǔn)的2K模式,2048點數(shù)據(jù)的運(yùn)算分為,第一級的Radix 4點蝶形運(yùn)算和后面三級的Radix 8點蝶形運(yùn)算;4096點FFT運(yùn)算被分解為迭代的四級的Radix 8點蝶形運(yùn)算;8192點FFT分解為迭代的第一級的Radix 2點蝶形運(yùn)算和后面四級的8點蝶形運(yùn)算;Radix 2/4/8點蝶形運(yùn)算單元由三級Radix 2的蝶形運(yùn)算,延遲單元和多路選擇器組成;其中,第一級有一個Radix 2點蝶形運(yùn)算單元和1個寄存器,第二級有1個Radix 2蝶形運(yùn)算單元和2個寄存器,第三級有Radix 2個蝶形運(yùn)算單元和4個寄存器;多路選擇器MUX用來選擇,輸入模式選擇信號RADIX_MODE[1:0]=00時,選通路線R 2,進(jìn)行Radix 2點的蝶形運(yùn)算;當(dāng)RADIX_MODE[1:0]=01時,選通路線R 4,進(jìn)行Radix 4點的蝶形運(yùn)算;RADIX_MODE[1:0]=11時,進(jìn)行Radix 8點的蝶形運(yùn)算;當(dāng)選擇路線R 2的時候,只有第一級的Radix 2點蝶形運(yùn)算單元,后面兩級的蝶形運(yùn)算單元被旁路,不進(jìn)行計算;當(dāng)選擇路線R 4的時候,只有第一級和第二級的Radix 2點蝶形運(yùn)算單元,最后一級的蝶形運(yùn)算單元被旁路,不進(jìn)行計算;選擇路線R 8的時候,三級的Radix 2點蝶形運(yùn)算單元都進(jìn)行運(yùn)算;復(fù)數(shù)乘法器模塊,由4個實數(shù)乘法器構(gòu)成,完成對輸入的兩個復(fù)數(shù)的實部和虛部進(jìn)行計算;旋轉(zhuǎn)因子存儲器和旋轉(zhuǎn)因子地址選擇器模塊,旋轉(zhuǎn)因子存儲器使用ROM來存儲旋轉(zhuǎn)因子;根據(jù)由旋轉(zhuǎn)因子地址選擇器提供的地址輸出相應(yīng)的旋轉(zhuǎn)因子,經(jīng)過旋轉(zhuǎn)因子映射后,轉(zhuǎn)換為對應(yīng)的旋轉(zhuǎn)因子與Radix 2./4/8蝶形運(yùn)算單元的輸出數(shù)據(jù)相乘。
2.根據(jù)權(quán)利要求1所述的FFT運(yùn)算電路結(jié)構(gòu),其特征在于2048點快速傅里葉變換根 據(jù)素因子算法分解為迭代的第一級的Radix-4點蝶形運(yùn)算和后面三級的Radix-8點蝶形運(yùn) 算;4096點FFT運(yùn)算被分解為迭代的4級的Radix-8點蝶形運(yùn)算;8192點FFT分解為迭代 的第一級的Radix-2點蝶形運(yùn)算和后面四級的8點蝶形運(yùn)算;迭代運(yùn)算的時候,初始的運(yùn)算 數(shù)據(jù),存儲在存儲器中,進(jìn)入蝶形運(yùn)算單元并且完成該級的RadiX-2、RadiX-4或者Radix-8 運(yùn)算后,該級的運(yùn)算結(jié)果存回存儲器中,等待所有的數(shù)據(jù)都完成了該級的運(yùn)算的時候,再開 始下一級的運(yùn)算,從存儲器中依次將所有的數(shù)據(jù)讀出,輸入蝶形運(yùn)算單元開始計算,運(yùn)算結(jié) 果輸出的時候再存回存儲器;直到所有的2048/4096/8192點運(yùn)算完成,最后FFT處理器結(jié) 果再輸出。
3.根據(jù)權(quán)利要求2所述的所述的FFT運(yùn)算電路結(jié)構(gòu),其特征在于將2048/4096/8192 點FFT運(yùn)算用分解基的FFT算法,其中Radix-2,Radix-4, Radix-8點蝶形運(yùn)算單元,使用 同一種結(jié)構(gòu)的運(yùn)算單元,即Radix-2/4/8點蝶形運(yùn)算單元完成,其中將Radix-2、Radix-4、 Radix-8點FFT運(yùn)算分裂為以2為基,即Radix-2點蝶形運(yùn)算為基的算法;其中,使用流水 線的方式計算每一級運(yùn)算中的基2的FFT運(yùn)算,第一級選用1個存儲單元,第二級使用2個 存儲單元,第三級使用4個存儲單元存放運(yùn)算數(shù)據(jù),模式選擇信號通過選擇工作的級數(shù)來 選擇工作的模式;使用一個Radix-2/4/8點FFT蝶形運(yùn)算單元,使整個2048/4096/8192點 FFT運(yùn)算以迭代的方式進(jìn)行。
4.根據(jù)權(quán)利要求3所述的所述的FFT運(yùn)算電路結(jié)構(gòu),其特征在于所述的Radix-2/4/8 點蝶形運(yùn)算單元,使用兩個Radix-2/4/8點蝶形運(yùn)算單元,形成兩路數(shù)據(jù)并行計算,以達(dá)到 CMMB或者DVB-H的OFDM Symbol的FFT運(yùn)算速率的要求。
5.根據(jù)權(quán)利要求2、3或4所述的所述的FFT運(yùn)算電路結(jié)構(gòu),其特征在于利用4塊深 度為2048的Single Port RAM模塊存儲器,和相應(yīng)的存取地址讀/寫地址產(chǎn)生器,配合 Radix-2/4/8點蝶形運(yùn)算單元,進(jìn)行迭代,實現(xiàn)2048/4096/8192點FFT運(yùn)算;在一個OFDM的 Symbol的FFT運(yùn)算初始化的時候,將一個OFDM Symbol中的數(shù)據(jù)分4路,將正序輸入的數(shù) 據(jù),按照倒序,存入4塊數(shù)據(jù)深度為2048點的single port RAM之中;當(dāng)運(yùn)算的OFDMSymbol 中的數(shù)據(jù)為2048個即2K點的時候,每塊single port RAM中存放的數(shù)據(jù)為512個;當(dāng)運(yùn) 算的OFDM Symbol中的數(shù)據(jù)為4096個即4K點的時候,每塊single port RAM中存放的數(shù)據(jù)為1024個;當(dāng)運(yùn)算的OFDM Symbol中的數(shù)據(jù)為8192個即8K點的時候,每塊singl印ort RAM中存放的數(shù)據(jù)為2048個。
6.根據(jù)權(quán)利要求5所述的所述的FFT運(yùn)算電路結(jié)構(gòu),其特征在于存儲器的讀寫的控 制由存儲器讀/寫地址發(fā)生器完成,該存儲器讀/寫地址發(fā)生器為數(shù)據(jù)的初始存儲,和每一 級FFT運(yùn)算的數(shù)據(jù)的讀取和該級運(yùn)算結(jié)果的存儲提供地址;初始存儲數(shù)據(jù)的地址順序選擇 有一定的規(guī)律,使得兩路運(yùn)行中的Radix-2/4/8點蝶形運(yùn)算單元,在讀取一塊RAM的時候, 能在其中取到當(dāng)前計算所使用的數(shù)據(jù);在完成該蝶形運(yùn)算并流水地輸出運(yùn)算結(jié)果的時候, 將結(jié)果存入同一塊MM的這些地址之中。
7.根據(jù)權(quán)利要求6所述的所述的FFT運(yùn)算電路結(jié)構(gòu),其特征在于兩個Radix-2/4/8 點蝶形運(yùn)算同時并行計算,第一個Radix-2/4/8點蝶形運(yùn)算單元讀寫RAMI和RAM2,第二個 Radix-2/4/8點蝶形運(yùn)算單元讀寫RAM3和RAM4 ;周而復(fù)始,直到完成該級的FFT運(yùn)算,再開 始下一級的FFT運(yùn)算。
全文摘要
本發(fā)明屬于無線數(shù)字通信技術(shù)領(lǐng)域,具體為一種適用于CMMB和DVB-H/T的FFT運(yùn)算電路結(jié)構(gòu)。該FFT運(yùn)算電路結(jié)構(gòu),由控制信號發(fā)生器,輸入信號重新排序模塊,存儲器SinglePort RAM模塊,存儲器讀/寫地址產(chǎn)生器模塊,2/4/8點蝶形運(yùn)算單元,復(fù)數(shù)乘法器模塊,旋轉(zhuǎn)因子數(shù)據(jù)存儲器和旋轉(zhuǎn)因子存儲地址發(fā)生器模塊等構(gòu)成。本發(fā)明采用雙路并行流水處理的數(shù)據(jù)通路,由2個蝶形運(yùn)算單元和2個復(fù)數(shù)乘法器各組成一條獨立的數(shù)據(jù)通路。每一個模塊都考慮了兩種標(biāo)準(zhǔn)在OFDM符號構(gòu)成上的共性,從而實現(xiàn)硬件融合,并且通過控制信號控制不同模塊的工作模式。
文檔編號G06F17/14GK101894096SQ201010209118
公開日2010年11月24日 申請日期2010年6月24日 優(yōu)先權(quán)日2010年6月24日
發(fā)明者曾曉洋, 李斯夢, 樊文華, 陳赟 申請人:復(fù)旦大學(xué)