基于DSP與FPGA的光柵地震檢波器的信號處理
其次是定義結(jié)構(gòu)體,包括定義內(nèi)部緩沖地址信號,并定義了一個容量為16字的Mem(存儲器類型)型變量。
最后是并發(fā)進(jìn)程的定義,包括寫進(jìn)程和讀進(jìn)程的定義,以時鐘的脈沖信號作為敏感信號來觸發(fā)進(jìn)程的啟動,每一個時鐘周期完成一次對RAM的讀寫,其中時鐘頻率由FPGA根據(jù)AD的采樣速度和DSP的處理速度來設(shè)定,要保證當(dāng)采集信號寫入尾地址的時刻,至少要保證首地址已經(jīng)被DSP所讀取。圖3為雙口RAM程序流程圖。本文引用地址:http://cafeforensic.com/article/152232.htm
2.3 雙口RAM的仿真結(jié)果
圖4為該進(jìn)程的仿真時序圖,由圖可見第一個時鐘的上升沿數(shù)據(jù)輸入端口data_in的值為4,這時寫選通端口write_address選通地址1,然后對應(yīng)著地址1的存儲器模塊ram_block1的內(nèi)的值在此刻刷新為4,這說明寫進(jìn)程正確。同時應(yīng)注意到讀地址選通信號read_address的值被傳遞到讀地址寄存器read_address_reg中,read_address_reg中的值被刷新為1。當(dāng)?shù)谝粋€時鐘的下降沿到來時,信號輸出端口data_out根據(jù)讀地址寄存器read_address_reg中的地址值1選通ram_block1,此時data_out的值刷新為4,這說明讀進(jìn)程也正確。
3 DSP的軟件細(xì)分
采用大數(shù)可逆計數(shù)與小數(shù)細(xì)分計數(shù)的軟件細(xì)分技術(shù)。其中大數(shù)計數(shù)是對莫爾條紋整周期數(shù)進(jìn)行可逆的加減計數(shù),這部分功能有采集模塊中的FPGA來完成,小數(shù)計數(shù)是對莫爾條紋不到一個周期信號細(xì)分結(jié)果進(jìn)行計數(shù),其功能由DSP來完成。運算的結(jié)果為大數(shù)計數(shù)結(jié)果乘以光柵柵距與小數(shù)計數(shù)結(jié)果乘以細(xì)分當(dāng)量之和,其中細(xì)分當(dāng)量為光柵柵距除以細(xì)分倍數(shù)。該模塊的硬件原理圖如圖5所示。
通過DSP的地址選通線依次選通讀取FPGA中三個數(shù)據(jù)緩存區(qū)中的數(shù)據(jù),緩存區(qū)分別存放兩路模擬信號的數(shù)字量與加減計數(shù)器的累加計數(shù)值,然后利用公式R=N*w+K*L求出任意一點諧振子的幅值并輸出。式中N為整周期的累加計數(shù)值,W為光柵柵距,K為細(xì)分計數(shù),L=W/M,M為細(xì)分倍數(shù)。該細(xì)分模塊主要是完成對細(xì)分計數(shù)K值、和幅值R值的求取,并完成對幅值的數(shù)字量轉(zhuǎn)換并輸出。
其中細(xì)分方法也就是對K值的求取采用了八卦限幅值分割法,根據(jù)上述方法設(shè)計了細(xì)分倍數(shù)可變的細(xì)分算法,利用DSP C語言的專用庫函數(shù)實現(xiàn)了純計算的算法。細(xì)分算法流程如圖6所示。
評論