基于FPGA的數字脈沖壓縮系統(tǒng)實現
采樣數據首先存入FIFO中進行全局緩存,然后FFT單元從FIFO中讀取采樣數據,緊接著進行FFT運算,結果在流水輸出時直接與匹配濾波器系數相乘,并將運算結果寫入塊RAMl中,最后IFFT單元從塊RAMl中讀取復乘后的數據進行IFFT(復用FFT運算IP核)運算,結果寫入塊RAMl后發(fā)送中斷信號,等待DSP讀取。
2.2.1 FFT處理單元的硬件復用
在系統(tǒng)中FFT處理單元通過使用軟核Fast Fourier Transform v3.O來實現的。該IP核提供3種結構選擇。
(1)管線級,數據流水I/0。這種結構將若干基-2蝶形單元級聯起來,使得數據的輸入、計算、輸出可以流水進行,從而可以達到很高的處理速度,但資源消耗較大;
(2)基-2,最少資源消耗。這種結構采用單個基-2蝶形單元對輸入數據進行變換,運算消耗的時間較長;
(3)基-4,突發(fā)I/O;這種結構采用單個基-4蝶形單元對輸入數據進行變換,并利用塊RAM來存儲旋轉因子,占用系統(tǒng)資源較少,在1個PRT內可以完成脈壓結果的輸出,從而在資源和速度這兩者之間達到很好的平衡,也是設計中實際采用的結構。
FFT處理單元主要包括2個過程:數據I/O和運算過程,但兩者不是流水執(zhí)行的。FFT啟動信號有效后,數據開始進行裝載,裝載完成后開始進行FFT運算;等待運算結束后,結果才可以輸出。在運算過程中,不發(fā)生數據的裝載或輸出。
在數字設計中,FFT和IFFT處理單元時可以采用相同的結構來實現的。具體的方法是:在做IFFT運算前,先交換輸入數據的實部和虛部,然后送入FFT處理單元按照FFT的結構進行運算,并交換FFT運算結果的實部和虛部,最后除以運算點數N,就可以得到IFFT的運算結果。
該IP核基于上面的方法同時具有進行IFFT運算的功能,通過實時配置端口FWD INV上的電平可以實現復用,分別完成FFT和IFFT運算。在FPGA設計中,利用結構復用減少邏輯單元塊,不僅可以節(jié)約系統(tǒng)資源,而且能夠減少結構間的硬連線及傳輸線時延,有利于提高系統(tǒng)的工作頻率。
2.2.2 脈沖壓縮模塊的時序設計
由于FFT和IFFT的邏輯運算功能已經在IP核中實現,因此時序設計便顯得尤為重要。在FFT(或IFFT)運算單元中,主要的狀態(tài)與時序控制信號及其功能描述如表1所示。
在采樣距離門有效期間,將樣本數據寫入FIFO中進行緩存。采樣結束后,通過FFT單元的寫使能信號(NFFT_WE和FWD_INV_WE)將NFFT=010 10及FWD_INV_WE=1寫入狀態(tài)控制寄存器設定工作模式,接著啟動START信號進行FFT運算,寫使能信號與sTART之間僅差1個時鐘周期。運算結束后,DONE信號有效1個時鐘周期,輸出使能信號UNLOAD與DONE同步,經過7個時鐘周期后數據有效信號DV開始有效,FFT運算結果開始流水輸出,同時與匹配濾波器的系數相乘,并存入RAM中。由于乘法運算的固有延遲,寫使能RAM_EN延遲DV信號2個時鐘周期。存儲結束時,IFFT單元的寫使能信號同時有效,并設定NFFT=01010及FWD_INV_WE=0,接著啟動START信號進行IFFT運算。運算結束后,DONE信號(與UNLOAD同步)再次有效,IFFT運算輸出結果在DV信號有效期間直接寫入RAM中。單個PRT內各控制信號的具體時序說明如圖4所示。
評論