一種FFT處理器的製作方法
2023-09-10 05:00:10 1

本實用新型涉及電子通信技術領域,尤其涉及一種FFT處理器。
背景技術:
快速離散傅立葉變換(FFT)/快速反傅立葉變換(IFFT)是離散傅立葉變換(DFT)/離散反傅立葉變換(IDFT)的快速實現方式,是數位訊號處理中常用的技術。由於DFT/FFT運算和IDFT/IFFT運算過程基本一致,因此FFT和IFFT可以採用相同的電路實現方法。
Cooley和Tukey實用新型了FFT算法,FFT的的基本思想是將原有N點序列分解成兩個或更多的較短序列並重新組合成原序列的DFT,使間接算法的運算次數比直接計算DFT的運算次數少得多,從而提高DFT的計算速度。
一方面,FFT/IFFT的分解運算基本可分為兩類:一類是將時間序列x(n)進行逐次分解,稱為按時間抽取算法(Decimation In Time,DIT);另一類將傅立葉變換序列X(k)進行分解,稱為按頻率抽取算法(Decimation In Frequency,DIF)。而按照FFT分解的短序列的個數M,可以將FFT/IFFT算法可以分為若干種,一般稱為基-M算法。例如,基2FFT算法可以將N點DFT運算分解成 個2點DFT運算過程;基4FFT算法可以將N點DFT運算分解成個4點DFT運算過程;基8FFT算法可以將N點DFT運算分解成個8點DFT運算過程。
另一方面,當前FFT處理器的硬體實現結構包括遞歸結構、流水線結構和全並行結構。遞歸結構又叫共享內存結構,所佔硬體資源最少,只有一個運算處理單元,但所需運算時間較長,不能連續處理FFT計算請求,只適應於偶爾需要FFT運算的場合;流水線結構採用多級運算單元,前一級運算單元將結果送入下一級運算單元後可計算下一次FFT而無需等待FFT運算完成,流水線結構可連續計算前後數據不重疊的N點FFT;對於前後數據重疊的連續FFT計算,只能採用全並行結構,該結構每一級運算針對點數N設置對應的運算單元,每一級運算時延可低至單個系統時鐘周期,可實現任意N點FFT的連續計算,但佔用硬體資源巨大。實際應用中需要作任意N點FFT連續計算的場合非常少,因此採用流水線設計FFT處理器最為普遍。
上述FFT處理器的流水線結構主要有3類:單路延時轉接器結構(Single-path Delay Commutator, SDC)、多路延時轉接器結構(Multi-path Delay Commutator, MDC)和單路延時反饋轉接器結構(Single-path Delay Feedback, SDF)。因為基2SDC(R2SDC)結構在基2 蝶形分解運算時與R2SDF相比沒有優勢,所以基2FFT處理器主要採用基2MDC(R2MDC)和基2SDF(R2SDF)結構。
基2MDC和基2SDF結構都具有控制簡單易於實現的特點,佔用的電路資源也相差不大,其中基2SDF結構需要的存儲器少一點,而基2MDC結構的計算時延更短一些。但基2MDC和基2SDF結構的複數乘法器的利用率較低(只有50%),因此整個FFT處理器需要的乘法器數量較多。
由於FFT/IFFT運算由複數乘法和複數加法運算構成,乘法運算遠比加法運算複雜,因此FFT處理器的電路規模主要由複數乘法器決定。基2MDC和基2SDF結構會因為複數乘法器利用率過低導致電路資源佔用較大。
又一方面,FFT處理器的數據格式目前主要有定點格式、浮點格式和塊浮點格式。定點格式計算簡單,但是需要考慮數據溢出檢測和處理機制,數據動態範圍小;浮點格式計算精度高,能處理的數據動態範圍大,還能有效減少計算的累積誤差,但佔用的電路資源巨大且功耗較高。常用的塊浮點結構由於利用共享指數,因此可以基於定點運算模塊處理較大的數據動態範圍,但是每一級運算需要塊浮點整理單元調整共享指數,而塊浮點整理單元需要作統計運算處理,其數據格式並不適合流水式的電路結構。
因此,現有技術還有待發展。
技術實現要素:
鑑於上述現有技術的不足之處,本實用新型的目的在於提供一種FFT處理器,旨在解決現有FFT處理器佔用電路資源大,數據格式與流水式電路結構不匹配的問題。
為了達到上述目的,本實用新型採取了以下技術方案:
一種FFT處理器,包括輸入模塊、運算模塊以及輸出模塊,所述運算模塊包括基2蝶式運算單元,其中,所述基2蝶式運算單元至少包括一個用於統一浮點輸入數據指數的指數對齊電路、用於執行定點數據運算的運算單元以及用於執行指數規格化處理的規格化電路;
所述指數對齊電路將指數對齊後的浮點輸入數據的統一的指數部分傳輸至所述規格化電路;所述運算單元接收指數對齊後的浮點輸入數據的基數部分並執行對應的FFT運算;
所述規格化電路根據所述指數部分,對所述運算單元的運算結果執行指數規格化處理以生成浮點輸出數據;
所述運算單元包括一個或多個定點加法器、定點乘法器和/或定點減法器。
所述的FFT處理器,其中,所述運算模塊包括:輸入級運算模塊和若干遞歸運算模塊;
所述遞歸運算模塊至少包括延時單元、用於替換轉接器的緩存單元以及所述基2蝶式運算單元;
所述緩存單元在預定的時鐘周期內,根據對應的控制信號,輸入第一輸入信號或第二輸入信號至所述基2蝶式運算單元中;所述第一輸入信號為原始輸入信號,所述第二輸入信號為原始輸入信號經過第一階段的基2蝶式運算的運算結果。
所述的FFT處理器,其中,所述運算模塊包括:第一輸入級運算模塊;
所述第一輸入級運算模塊包括至少一個延時單元、用於保存參與第一級基2蝶式運算的旋轉因子的旋轉因子保存單元以及所述基2蝶式運算單元;
所述第一輸入級運算模塊接收輸入模塊的輸入信號,執行FFT運算的第一級基2蝶式運算。
所述的FFT處理器,其中,所述緩存單元包括:數據選擇器、輸入控制電路、輸出控制電路以及至少兩個雙接口RAM;
所述數據選擇器根據預定的切換控制信號,輸入對應的輸入信號至所述輸入控制電路;所述輸入控制電路將數據緩存在所述雙接口RAM中,並由所述輸出控制電路調用存儲在所述雙接口RAM中的緩存數據。
所述的FFT處理器,其中,所述輸入控制電路包括至少一個第一計數器;
所述輸入控制電路接收緩存數據並通過所述第一計數器,令遞歸運算模塊執行對應的第一級蝶式運算或第二級蝶式運算。
所述的FFT處理器,其中,所述輸出控制電路至少包括一個第二計數器;所述第二計數器根據輸入信號,輸出控制所述遞歸運算模塊執行對應的蝶式運算的浮點信號。
所述的FFT處理器,其中,所述輸入模塊為串並轉換模塊;所述串並轉換模塊包括兩個延時器;
至少一個所述延時器用於並行輸出FFT運算的時域輸入數據以及與所述時域輸入數據延遲對應個採樣點的延時信號。
所述的FFT處理器,其中,所述運算模塊還包括:第二輸入級運算模塊;
所述第二輸入級運算模塊至少包括一個延時轉換器和數據選擇器;所述第二輸入級運算模塊通過所述數據選擇器,在預定的時鐘周期,控制所述基2蝶式運算單元執行第一級基2蝶式運算或第二級基2蝶式運算。
所述的FFT處理器,其中,通過如下算式計算判斷值:
;其中,L為判斷值,N為FFT運算的採樣點數量,為向上取整函數;
在判斷值為奇數時,通過第一輸入級運算模塊執行輸入級運算;
在判斷值為偶數時,通過第二輸入級運算模塊執行輸入級運算。
所述的FFT處理器,其中,根據如下算式計算所述遞歸運算模塊的數量:
在判斷值為奇數時,;其中,L為判斷值,S為遞歸運算模塊的數量;
在判斷值為偶數時,;其中,L為判斷值,S為遞歸運算模塊的數量。
有益效果:本實用新型提供的一種FFT處理器,通過偽浮點運算的方式來取代現有的塊浮點結構,可以通過定點運算單元實現FFT運算的同時,令輸入和輸出數據均為浮點數據。該偽浮點運算結構,不需要多個數據共享指數欄位,計算的精度較高,而且前置的對齊運算的顆粒度較小,運算的規模和時間延遲均遠小於現有的塊浮點結構,更適合應用於流水結構實現。
附圖說明
圖1為本實用新型實施例提供的FFT處理器的輸入/輸出接口示意圖。
圖2為本實用新型實施例提供的FFT處理器的示意圖。
圖3為本實用新型實施例提供的FFT處理器的輸入模塊的示意圖。
圖4為本實用新型實施例提供的FFT處理器的輸出模塊的示意圖。
圖5為本實用新型實施例提供的FFT處理器的第一輸入級運算模塊的示意圖。
圖6為本實用新型實施例提供的FFT處理器的第二輸入級運算模塊的示意圖。
圖7為本實用新型實施例提供的FFT處理器的遞歸運算模塊的示意圖。
圖8為本實用新型實施例提供的FFT處理器的緩存單元的示意圖。
圖9為本實用新型實施例提供的FFT處理器的輸入控制電路的示意圖。
圖10本實用新型實施例提供的FFT處理器的輸出控制電路的示意圖。
圖11本實用新型實施例提供的FFT處理器的輸入控制電路的基2蝶式運算單元的示意圖。
具體實施方式
本實用新型提供一種FFT處理器。為使本實用新型的目的、技術方案及效果更加清楚、明確,以下參照附圖並舉實施例對本實用新型進一步詳細說明。應當理解,此處所描述的具體實施例僅用以解釋本實用新型,並不用於限定本實用新型。
如圖1所示,為本實用新型具體實施例的一種FFT處理器的外部接口示意圖。在本實用新型實施例提供的FFT處理器的外部接口包括:第一輸入接口(輸入數據以In_Frame表示)、第二輸入接口(輸入數據以In_Enable表示)以及第三輸入接口(輸入數據以In_Data表示)。其中,第一輸入接口的數據(如In_Data)是串行輸入數據,指參與N點FFT運算的N個時域輸入數據,其每個數據均包括實部(I分部)和虛部(Q分部)。第二輸入接口的數據(如In_Enable)是數據使能信號。只有當In_Enable為有效時,輸入的In_Data才是有效的;第三輸入接口的數據(如In_Frame)是幀同步信號,對於N個FFT數據組成的數據幀,In_Frame只在幀數據的第一個數據輸入時有效,其他時候In_Frame均無效。
除輸入接口外,還包括第一輸出接口(輸出數據以Out_Frame表示)、第二輸出接口(輸出數據以Out_Valid表示)以及第三輸出接口(輸出數據以Out_Data表示),其中第一輸出接口的輸出數據(如Out_Data)是串行輸出結果,即N點FFT運算的頻域輸出結果。相對應地,該輸出結果也是N個數據,每個數據包括實部(I分部)和虛部(Q分部)。第二輸出接口的輸出數據(如Out_Valid)是數據輸出有效信號,只有當Out_Valid為有效時,輸出結果的Out_Data才是有效的。
在本實施例中提供的FFT處理器採取串行連續輸出結果的方式。這樣的,在FFT處理器輸出一幀計算結果的過程中,Out_Valid是連續有效的。而第三輸出接口的輸出數據(如Out_Frame)是幀同步信號,在輸出N點FFT運算結果組成的數據幀的時候,Out_Frame只在幀數據的第一個數據輸出時有效,其他時候In_Frame均無效。
如圖2所示,該FFT處理器包括:輸入模塊10、運算模塊20以及輸出模塊30。所述運算模塊20包括若干基2蝶式運算單元200。
在本實例中,所述運算模塊20可以包括:第一輸入級運算模塊21,第二輸入級運算模塊22以及若干個遞歸運算模塊23。該FFT處理器具體使用的運算模塊20以及所需要的使用的遞歸運算模塊23具體可以通過如下算式計算判斷值:
(1)
其中,L為判斷值,是一個正整數參數值;N為FFT運算的採樣點數量,為向上取整函數。在判斷值為奇數時,通過第一輸入級運算模塊21執行輸入級運算。而在判斷值為偶數時,通過第二輸入級運算模塊22執行輸入級運算。
具體的,所述需要使用的遞歸運算模塊的數量根據如下算式計算:在判斷值為奇數時,;其中,L為判斷值,S為遞歸運算模塊的數量。而在判斷值為偶數時,;其中,L為判斷值,S為遞歸運算模塊的數量。
如圖5所示,所述第一輸入級運算模塊21包括至少一個延時單元211、用於保存參與第一級基2蝶式運算的旋轉因子的旋轉因子保存單元212以及所述基2蝶式運算單元213。其中,所述第一輸入級運算模塊21接收輸入模塊的輸入信號,執行FFT運算的第一級基2蝶式運算。
以下進一步的闡述該第一輸入級運算模塊21的工作過程。如圖5所示,該第一輸入級運算模塊21的輸入信號包括2路並行輸入的基2運算數據DataA和DataBase、數據使能信號Ena和幀同步信號Sync。其輸出信號包括:2路並行輸出的基2運算結果DataA和DataBase、輸出結果使能信號Ena和輸出幀同步信號Sync。
在本實施例中,第一輸入級運算模塊21用於完成FFT運算的第一級基2蝶形運算。如圖5所示,第一輸入級運算模塊21由延時單元211、旋轉因子保存單元212和基2蝶式運算單元213組成。旋轉因子保存單元212用於保存參與第一級基2蝶形運算的旋轉因子,並依次送入基2蝶式運算單元213中,供蝶式運算使用。
該基2蝶式運算單元213用於基2蝶形運算,其輸入信號包括並行輸入運算數據DataA和DataBase、幀同步信號Sync、數據使能信號Ena和用於基2蝶形運算的旋轉因子。
延時單元211將輸入Sync和Ena信號延時輸出,保證輸出信號Sync和Ena與基2蝶式運算單元213的輸出結果DataA和DataB配合使用。
如圖6所示,所述第二輸入級運算模塊22至少包括一個延時轉換器221、數據選擇器222和所述基2蝶式運算單元223。在運算過程中,所述第二輸入級運算模塊22通過所述數據選擇器,在預定的時鐘周期,控制所述基2蝶式運算單元223執行第一級基2蝶式運算或第二級基2蝶式運算。
以下進一步的闡述該第二輸入級運算模塊22的工作過程。如圖6所示,該第二輸入級運算模塊22的輸入信號包括:2路並行輸入的基2運算數據DataA和DataBase、數據使能信號Ena和幀同步信號Sync。其輸出信號包括2路並行輸出的基2運算結果DataA和DataBase、輸出結果使能信號Ena和輸出幀同步信號Sync。
該第二輸入級運算模塊22可以用於執行FFT運算的第一級和第二級的基2蝶形運算。如圖6所示,第二輸入級運算模塊22具體可以由延時單元220、旋轉因子存儲單元225、數據選擇器222、計數器224、延時轉接器221和基2蝶式運算單元223組成。
基2蝶式運算單元223用於執行基2蝶形運算,其輸入信號包括並行輸入運算數據DataA和DataB、幀同步信號Sync、數據使能信號Ena和用於基2蝶形運算的旋轉因子。
該第二輸入級運算模塊相對於上述第一輸入級運算模塊,除相類似地運算結構外,還包含了一個由延時轉接器221和數據選擇器222構成的反饋環路。
在輸入幀同步信號Sync有效之後的N/2個時鐘周期(N為N點的FFT運算,即採樣點數量),數據選擇器222選擇輸入信號DataA和DataB作為運算數據送入基2蝶式運算單元223,完成FFT運算的第一級基2蝶形運算。
而在與其連續的N/2個時鐘周期內,數據選擇器222選擇延時轉接器221的反饋支路數據作為運算數據送入基2蝶式運算單元223,完成FFT運算的第二級基2蝶形運算。L位計數器224受到輸入數據使能信號Ena和輸入幀同步信號Sync控制。該計數器224輸出CNT[L-1:0]的最高位CNT[L-1]作為數據選擇器222的切換控制信號,控制數據選擇器選擇輸入信號或者反饋支路信號送入基2蝶式運算單元223。
與第一輸入級運算模塊相類似地,旋轉因子保存單元225用於保存參與參與第一級和第二級基2蝶形運算的旋轉因子,並依次送入基2蝶式運算單元223中,供蝶式運算使用。延時單元220將輸入Sync和Ena信號延時輸出,保證輸出信號Sync和Ena與基2蝶式運算單元223在第二個N/2個時鐘周期的計算輸出結果DataA和DataB配合使用。
如圖7所示,所述遞歸運算模塊23至少包括延時單元231、用於替換轉接器的緩存單元232以及所述基2蝶式運算單元233。所述緩存單元232在預定的時鐘周期內,根據對應的控制信號,輸入第一輸入信號或第二輸入信號至所述基2蝶式運算單元中。所述第一輸入信號為原始輸入信號,所述第二輸入信號為原始輸入信號經過第一階段的基2蝶式運算的運算結果。由此,結合使用的存儲器,結合了遞歸運算的優點,有效的節省了運算電路的資源,提高了利用率。
本實用新型實施例提供的FFT處理器可以包含有S個具有多路延時緩存結構的遞歸運算模塊(編號從1到S)。各個遞歸運算模塊可用於實現級聯的兩級基2蝶形運算。相比於傳統的單路延時反饋結構和多路延時轉接器結構的基2蝶形運算電路,該遞歸運算模塊在不影響流水線結構的情況下,結合遞歸方法的優點,使得電路的資源利用率可以提高100%(一倍),即在實現相同計算規模的情況下可以節省大約一半的電路資源。
遞歸運算模塊輸入信號包括:並行輸入運算數據A和B、幀同步信號Sync、數據使能信號Ena和用於基2蝶形運算的旋轉因子。該多路延時緩存結構具體實現方法如下:
第一階段,在輸入幀同步信號Sync有效之後的N/2個時鐘周期,緩存單元232打開直通數據通道選擇輸入信號DataA和DataB作為運算數據送入基2蝶式運算單元233,完成N/2組的基2蝶形運算。所述基2蝶式運算單元233的輸出結果通過反饋支路送入緩存單元232暫存。
第二階段,在緊接著的N/2個時鐘周期,緩存單元232關閉直通數據通道選擇緩存單元232暫時保存的反饋支路數據作為運算數據送入基2蝶式運算單元233,完成第二階段的N/2組的基2蝶形運算。
L位計數器受到輸入數據使能信號Ena和輸入幀同步信號Sync控制,計數器輸出CNT[L-1:0]的最高位CNT[L-1]作為遞歸緩存單元的切換控制信號,控制緩存單元232選擇輸入信號或者反饋支路信號送入基2蝶式運算單元233。
參與第一和第二共計兩個階段(每階段N/2組的基2蝶形運算)的基2蝶形運算的旋轉因子可以保存在對應的存儲單元中,並依次送入基2蝶式運算單元233執行運算。
延時單元231將輸入Sync和Ena信號延時輸出,保證輸出信號Sync和Ena與基2蝶式運算單元233第二階段的N/2個時鐘周期的計算輸出結果OutA和OutB配合使用。
更具體的,如圖8所示,所述緩存單元的輸入信號包括2組輸入數據、切換控制信號Ctrl、數據使能信號Ena和幀同步信號Sync;輸出信號包括2路並行輸出數據A和B、輸出數據使能信號Ena和輸出幀同步信號Sync。
在2組輸入數據中,一組來自於反饋支路,包括2路並行的基2運算結果OutA和OutB;另外一組來自於遞歸運算模塊外部,包括2路並行輸入的基2運算數據DataA和DataB。
緩存單元是上述遞歸運算模塊內部的核心控制單元,其能夠通過控制基2蝶式運算單元233的輸入數據時序,協調各電路單元實現2個階段的基2蝶形運算。如圖8所示,該緩存單元232由數據選擇器(Mux)2321、輸入控制電路2322、雙口RAM2323、輸出控制電路2324和延時單元2325組成。
具體的,所述輸入控制電路2322接收緩存數據並通過所述遞歸運算模塊,執行對應的第一級蝶式運算或第二級蝶式運算。
以如下具體實例對所述輸入控制電路2322的工作流程進行詳細描述。如圖9所示,輸入控制電路的輸入信號包括2路並行輸入的緩存數據MuxA和MuxB、數據使能信號Ena和幀同步信號Sync;輸出信號包括2路並行輸出的數據DataA/DataB以及對應的雙口RAM寫入地址Addr/AddrB、輸出結果使能信號Ena和輸出幀同步信號Sync。
輸入控制電路負責待緩存數據流MuxA和MuxB的存儲寫入時序控制,包括交換2322A、計數器2322B、按位異或2322C、延時2322D四個電路單元。在該輸入控制電路中,核心單元是一個L位計數器2322B。該計數器受到輸入數據使能信號Ena和輸入幀同步信號Sync控制,計數器的輸出信號是CNT[L-1:0];計數器的低L-1位輸出,即CNT[L-2:0]直接輸出作為L-1位的雙口RAM寫入地址信號AddrA;CNT[L-2:0]與參數P做按位異或運算,運算結果作為L-1位的雙口RAM寫入地址信號AddrB;CNT[L-1:0]中的第q位,即CNT[q]作為交換電路的控制信號,當CNT[q]為低電平時,數據MuxA和MuxB直通,即DataA=MuxA且DataB=MuxB;當CNT[q]為高電平時,數據MuxA和MuxB交叉,即DataA=MuxB且DataB=MuxA。
參數P和q是兩個與輸入控制電路所在的遞歸運算模塊的位置編號有關的重要參數,其中參數q的具體計算方法如下:
FFT處理器共計有S個遞歸運算模塊,每個運算模塊的編號為s,s的取值範圍是[1,S]。當L為奇數時,遞歸運算模塊做第一階段運算時參數q=L-2s,遞歸運算模塊做第二階段運算時,參數q=L-2s-1。
當L為偶數時,遞歸運算模塊做第一階段運算時參數q=L-2s-1,遞歸運算模塊做第二階段運算時參數q=L-2s-2。參數P由參數q決定,具體計算公式為:P=2^(q+1)。
延時單元2322D將Sync和Ena信號延時輸出,保證輸出信號Sync和Ena與雙口RAM的寫入數據DataA/DataB、寫入地址Addr/AddrB配合使用。
另外,如圖10所示,所述輸出控制電路2324至少包括一個計數器;所述計數器根據輸入信號,輸出控制所述遞歸運算模塊執行對應的蝶式運算的浮點信號。
以如下具體實例對所述輸出控制電路2324的工作流程進行詳細描述。如圖10所示,輸出控制電路的輸入信號包括2路並行輸入的雙口RAM讀取數據DataA/DataB、數據使能信號Ena和幀同步信號Sync;輸出信號包括2路並行的輸出數據A/B和雙口RAM讀取地址Addr/AddrB、輸出結果使能信號Ena和輸出幀同步信號Sync。
輸出控制電路負責雙口RAM的緩存數據的讀取時序控制,包括交換2324A、計數器2324B、D觸發器組(DFFs)2324C、延時2324D四個電路單元。相類似地,輸出控制電路的核心單元是一個L位計數器2324B。該計數器受到輸入數據使能信號Ena和輸入幀同步信號Sync控制,計數器的輸出信號是CNT[L-1:0];計數器的低L-1位輸出,經過D觸發器組(DFFs)延時一個時鐘周期後,即CNT[L-2:0]輸出作為L-1位的雙口RAM讀取地址信號AddrA和AddrB; CNT[L-1:0]中的第q位,即CNT[q]作為交換電路的控制信號,當CNT[q]為低電平時,數據DataA和DataB直通,即A=DataA且B=DataB;當CNT[q]為高電平時,數據DataA和DataB交叉,即A=DataB且B=DataA。
參數q是與輸入控制電路所在的遞歸運算模塊的位置編號有關的重要參數,參數q的具體計算方法如下:
FFT處理器共計有S個遞歸運算模塊,每個運算模塊的編號為s,s的取值範圍是[1,S]。當L為奇數時,遞歸運算模塊做第一階段運算時參數q=L-2s,遞歸運算模塊做第二階段運算時,參數q=L-2s-1。
當L為偶數時,遞歸運算模塊做第一階段運算時參數q=L-2s-1,多路延時緩存結構的遞歸運算模塊做第二階段運算時參數q=L-2s-2。
延時單元2324D將Sync和Ena信號延時輸出,保證輸出信號Sync和Ena與控制輸出電路的輸出數據A/B配合使用。
數據選擇器(Mux)在切換控制信號Ctrl的控制下實現兩個階段的基2蝶形運算輸入數據控制。
其中,第一階段,Ctrl為低電平的N/2個時鐘周期,Mux選擇輸入信號DataA和DataB作為MuxA和MuxB送給下一級的輸入控制電路;第二階段,Ctrl為高電平的N/2個時鐘周期,Mux選擇輸入信號OutA和OutB作為MuxA和MuxB送給下一級的輸入控制電路。
雙口RAM_A和雙口RAM_B是緩存單元的數據存儲電路,每塊雙口RAM可以存儲N/2個數據,負責緩存調整其中一路的輸入數據。
輸入控制電路2322負責依次接收數據流MuxA和MuxB,根據相關參數產生數據流DataA和DataB以及對應的雙口RAM寫入地址信號AddrA和AddrB,然後將數據流DataA和DataB存入雙口RAM_A和雙口RAM_B。輸出控制電路2324負責產生雙口RAM的讀取地址信號AddrA和AddrB,從雙口RAM的讀取數據後調整輸出。
延時單元2324D將Sync和Ena信號延時輸出,保證輸出信號Sync和Ena與雙口RAM的輸出結果DataA和DataB配合使用。
其中,所述輸入模塊10為串並轉換模塊。所述串並轉換模塊包括兩個延時器100。具體的,如圖3所示,該輸入模塊10包括兩個延時器100。其中一個延時器100用於並行輸出FFT運算的時域輸入數據以及與所述時域輸入數據延遲對應個採樣點的延時信號(如圖3所示,分別對應於DataB和DataA)。而另一個延時器可以用於使能信號和幀同步信號的延時輸出(In_Frame延遲後輸出的信號是Sync,信號In_Enable延遲後輸出的信號是Ena)。當然,應當說明的是,Ena、DataA和DataB都只有在Sync之後的N/2個點有效,再之後的N/2個點會被後續電路忽略。
其中,所述輸出模塊30亦為串並轉換模塊。具體的,如圖4所示,輸出並串轉換模塊30可以包括2個雙口RAM(31A和31B)、2個計數器(32A和32B)、2個延時器33和1個數據選擇器34(Mux)。
其中,2個雙口RAM分別31用於緩存2路並行輸入的數據OutA/OutB,計數器32A在輸入信號Ena和Sync的同步下順序產生2個雙口RAM的數據寫入地址。L位計數器32B在輸入信號Ena和Sync的延時信號同步下循環計數,計數器的輸出為CNT[L-1:0],其中CNT的最高位CNT[L-1]用於控制數據選擇器的切換,當CNT[L-1]為低電平時,Mux選擇雙口RAM_A的讀取數據作為串行輸出結果Out_Data;當CNT[L-1]為高電平時,Mux選擇雙口RAM_B的讀取數據作為串行輸出結果Out_Data。CNT的低位CNT[L-1:0]經過高位低位逆序反轉後得到CNT[0:L-1],用於驅動2個雙口RAM的讀取地址AddrA/AddrB。
2個延時器33用於輸入Sync和Ena信號的延時,保證Sync和Ena的延時信號可用於控制計數器32A和計數器32B正確的產生雙口RAM的寫入地址和讀取地址。Sync和Ena經過2級延時後的輸出信號就是輸出結果信號Out_Valid和輸出幀同步信號Out_Frame,與本電路模塊輸出的FFT運算結果Out_Data配合,供後端使用。
在本實用新型的另一實施例中,如圖3所示,所述基2蝶式運算單元200至少包括一個用於統一浮點輸入數據指數的指數對齊電路210、用於執行定點數據運算的運算單元220以及用於執行指數規格化處理的規格化電路230。
所述指數對齊電路將指數對齊後的浮點輸入數據的統一的指數部分傳輸至所述規格化電路;所述運算單元接收指數對齊後的浮點輸入數據的基數部分並執行對應的FFT運算;
所述規格化電路根據所述指數部分,對所述運算單元的運算結果執行指數規格化處理以生成浮點輸出數據;所述運算單元包括一個或多個定點加法器、定點乘法器和/或定點減法器。
以下結合圖11所示的實施例,具體陳述該基2蝶式運算單元200的具體工作原理。如圖11所示,輸入信號包括2路並行輸入的運算數據A/B、旋轉因子、數據使能信號Ena和幀同步信號Sync。
輸出信號包括2路並行輸出的運算結果OutA/OutB、輸出結果使能信號Ena和輸出幀同步信號Sync。
基2蝶式運算單元200採用按頻率抽取的FFT算法計算R2蝶形運算,即:OutA=A+B,OutB=(A-B)*旋轉因子。在該基2蝶式運算單元200,所有運算數據和計算結果都採用浮點數據類型,所有浮點運算數據在進入基2蝶式運算單元200後首先通過指數對齊電路210,將所有輸入浮點數據的指數都向指數最大的輸入數據對齊。這樣,經過指數對齊後的所有輸入運算數據的指數部分相同並將相同的指數部分統一送至指數規格化電路230。基數部分送至對應的定點加法器、定點減法器和定點乘法器(即運算單元220部分),完成FFT算法中的基2蝶形運算。最後的運算結果通過指數規格化電路結合之前的統一指數,針對每一個基2蝶形運算結果作指數規格化處理。
由此,基2蝶式運算單元200的輸出結果OutA/OutB是浮點數據類型。進一步通過延時單元將Sync和Ena信號延時輸出,保證輸出信號Sync和Ena與輸出的計算結果OutA/OutB配合使用。
上述基2蝶式運算單元200的輸入運算數據和輸出運算結果都是浮點數據類型,而運算單元本身採用定點加法器、定點減法器和定點乘法器完成數據運算過程,由此採用「偽浮點」這樣的術語來表示這一特定的運算數據結構。
一方面,該數據運算結構與傳統浮點R2蝶形運算單元相比,該蝶形運算單元採用定點運算電路,因此電路規模要小得多,能為大多數應用場合所接受。
另一方面,與塊浮點R2蝶形運算單元相比,該運算單元的每一個中間計算結果都採用獨立的指數存儲,而且指數對齊過程所導致的數據精度損失要小得多,因此其計算精度要明顯優於塊浮點R2蝶形運算單元。另外,該運算單元的指數對齊和指數規格化電路由於處理的數據量遠遠少於塊浮點R2蝶形運算單元的類似電路,因此該運算單元200的電路規模、計算時延等方面也要優於塊浮點R2蝶形運算單元。
相對於傳統的定點型R2蝶形運算單元不能滿足計算精度需求,而浮點型R2蝶形運算單元需要過多的電路資源以及塊浮點型運算單元需要統一N點中間運算結果的指數,存在不利於流水線結構實現的缺點,本實用新型實施例提供的基2蝶式運算單元200能夠很好的克服上述問題,在兼顧準確度和電路資源的同時,滿足流水線結構的實現特點,具有良好的應用前景。
可以理解的是,對本領域普通技術人員來說,可以根據本實用新型的技術方案及本實用新型構思加以等同替換或改變,而所有這些改變或替換都應屬於本實用新型所附的權利要求的保護範圍。