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