基于FPGA的級聯結構FFT處理器的優化設計
3 存儲器單元
傳統的級聯結構的FFT處理器的緩沖存儲器都是采用乒乓結構,基本思想就是用兩塊相同的RAM交替讀出或寫入數據。即其中一塊RAM在寫入數據時,另一塊RAM用于讀出數據。當用于寫入數據的RAM寫滿時交換讀寫功能。將乒乓結構中RAM的內部存儲單元地址用二進制數a9a8a7a6a5a4a3a2a1a0表示。以寫滿其中以塊RAM為一個周期,用一個二進制計數器m9m8m7m6m5m4m3m2m1m0生成的順序寫入,混序讀取的乒乓結構RAM的操作地址如表1所示。本文引用地址:http://www.104case.com/article/191838.htm
表1中第一,二,四塊存儲器的寫操作地址和讀操作地址是可以互換的,也就是將數據混序寫入,順序讀取。因此,根據這個規律采用一塊可同時讀寫的雙端口RAM來實現第一,二,四塊存儲器。其基本思想就是對同一個地址進行讀和寫。以用一塊雙端口RAM實現第一塊存儲器的為例,在第一個周期內雙端口RAM按照地址m9msm7m6m5mdm3m2m1m0進行寫操作,即數據是按照自然順序儲存的。在第二個周期按照地址m0m1m2m3m4m5m6m7msm9同時進行讀寫操作,讀出的數據按照倒位序排列,寫入的數據按照倒位序儲存的。 在第三個周期按照地址m9msm7m6m5m4m3m2m1m0同時進行讀寫操作,讀出的數據按照倒位序排列,寫入的數據是按照自然順序儲存的。依次類推下去,讀出的數據都是按照倒位序排列。同樣第二塊和第四塊存儲器的存儲地址也具有這樣類似的循環規律。因此只有第三塊存儲器需要用乒乓結構的RAM實現,與傳統所有存儲器都用乒乓結構RAM實現相比,節省了3/8的存儲單元。設計中用Matlab軟件直接生成旋轉因子,并將其轉化為16位有符號定點數寫入MIF文件。然后用ROM直接調用MIF文件,將旋轉因子預置在ROM中。
4 仿真結果
選用Altera公司生產的Cyclone Ⅱ的EP2C35F484C7芯片上進行驗證,在QuartyusⅡ7.2軟件中進行編譯和仿真。通過對高基核的優化處理,該設計對邏輯單元消耗量和傳統用基-4算法實現相近,僅為4 399,但由于本文采用了高基低基組合的混合基算法,在處理1 024點的離散數列時,處理器所分的級數僅為3級,相對傳統的低基數算法,其實現減少了對緩沖存儲器塊數的需求;并通過對緩沖存儲器的優化設計,又比全部用乒乓結構RAM實現的傳統方法節省了3/8的存儲單元,因此占用的存儲資源僅為154 048 b。仿真波形如圖5所示,該仿真結果和Matlab計算結果基本一致,存在一定的誤差是由于有限字長效應引起的。
5 結 語
在100 MHz的時鐘下工作,完成一次1 024點的FFT從輸入初始數據到運算結果完全輸出僅需要54.48μs,且連續運算時,處理一組1 024點FFT的時間僅為10.24 μs,達到了高速信號處理的要求。
評論