基于FPGA的信號頻譜分析系統(tǒng)
輸入待測模擬信號經(jīng)過調(diào)理電路之后滿足AD7655模擬輸入電平的要求,AD7655采用模擬5 V,數(shù)字5 V與接口3.3 V供電,由FPGA的主控制模塊控制AD7655進(jìn)行A/D轉(zhuǎn)換。模數(shù)轉(zhuǎn)換部分如圖3所示。本文引用地址:http://m.butianyuan.cn/article/190196.htm
2.2 FIFO模塊
FIFO是一種先進(jìn)先出的數(shù)據(jù)緩存器,他與普通存儲器的區(qū)別在于沒有外部讀寫地址線,使用簡便,缺點是只能順序?qū)懭霐?shù)據(jù),順序的讀出數(shù)據(jù),其數(shù)據(jù)地址由內(nèi)部讀寫指針自動加1完成,不能像普通存儲器那樣,由地址線決定讀取或?qū)懭肽硞€指定的地址,F(xiàn)IFO一般用于不同時鐘域之間的數(shù)據(jù)傳輸。
FPGA將經(jīng)過A/D轉(zhuǎn)換后的16位數(shù)據(jù)存儲到FPGA內(nèi)部的FIFO存儲器中,之所以選擇FIFO而沒有選擇雙端口,RAM作為緩沖器是因為FIFO不需要地址信號。當(dāng)FIFO的狀態(tài)為“滿”時會向FPGA內(nèi)部的主控制模塊發(fā)出請求,主控制模塊允許之后將數(shù)據(jù)寫入FFT運算模塊用于存儲實部的雙口RAM中作為FFT運算的初始數(shù)據(jù)。FIFO的數(shù)據(jù)寬度與A/DC的輸出數(shù)據(jù)寬度一致,其深度是進(jìn)行FFT運算的點數(shù)。系統(tǒng)中每次采樣1 000點進(jìn)行頻域分析,為避免產(chǎn)生時域混疊現(xiàn)象需滿足頻域采樣點數(shù)N≥1 000,設(shè)計取頻域采樣點數(shù)N=1 024。所以FIFO緩沖器的寬度為16位,深度為1 024,結(jié)構(gòu)如圖4所示。
2.3 FFT運算模塊
離散傅里葉變換(DFT)開辟了頻域離散化的道路,使得數(shù)字信號處理可以在頻域采用數(shù)字運算方法進(jìn)行??焖俑道锶~變換(FFT)是DFT的快速算法,F(xiàn)FT運算模塊是本系統(tǒng)的核心模塊。在基2快速算法中,頻域抽取法FFT是一種常用的快速算法,即DIF—FFT。其數(shù)學(xué)模型為
系統(tǒng)采用按頻率抽選的順序輸入,倒序輸出結(jié)構(gòu),這種結(jié)構(gòu)中的每一級運算都是固定的,便于尋址,適合于在FPGA上實現(xiàn),其運算流圖結(jié)構(gòu)如圖5所示。
FFT運算模塊主要由乒乓RAM、蝶形運算單元、存儲單元、地址產(chǎn)生單元、控制單元等組成。FFT運算模塊的設(shè)計采用了乒乓操作,系統(tǒng)有兩塊乒乓RAM,每一塊由兩塊完全相同的雙口RAM組成。在具體計算過程中,A乒乓RAM中的一塊參加運算,另一塊從外部接收下一次FFT運算的數(shù)據(jù)。B乒乓RAM中也有一塊參加運算,另一塊向外部輸出上一次運算的結(jié)果。一次FFT運算完成后,兩塊乒乓RAM做一次乒乓,如此反復(fù),直到FFT運算結(jié)束并將結(jié)果求模輸出到結(jié)果存儲器。采用乒乓操作主要是為了保證運算模塊不會為了數(shù)據(jù)的載入而停止運算可以有效提高運算速度。
評論