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