《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于DSP+FPGA的光柵地震檢波器的信號(hào)處理
基于DSP+FPGA的光柵地震檢波器的信號(hào)處理
單片機(jī)與嵌入式系統(tǒng)
李淑清,李維斌 天津科技大學(xué)
摘要: 設(shè)計(jì)的光柵地震檢波器充分結(jié)合了FPGA的強(qiáng)大控制功能和DSP高速運(yùn)算處理功能,,實(shí)現(xiàn)了信號(hào)的同步采集、高倍細(xì)分和實(shí)時(shí)復(fù)現(xiàn)。減少了單一處理器的負(fù)荷,提高了系統(tǒng)的速度和穩(wěn)定性,為光柵震動(dòng)信號(hào)處理提出了一個(gè)新思路,。由于硬件雙口RAM接口時(shí)序復(fù)雜,成本高也會(huì)給系統(tǒng)帶來(lái)不穩(wěn)定性,因此本文在FPGA中設(shè)計(jì)了一軟RAM,。對(duì)于振動(dòng)信號(hào)幅值的計(jì)算則是在對(duì)整周期的莫爾條紋進(jìn)行計(jì)數(shù)的同時(shí),利用軟件細(xì)分法實(shí)時(shí)地計(jì)算出非整周期的莫爾條紋信號(hào)所代表的小數(shù)值,,并實(shí)時(shí)將二者相加后乘以莫爾條紋當(dāng)量(每個(gè)莫爾條紋所代表的位移量),,即可得到信號(hào)的實(shí)時(shí)振動(dòng)幅值。
關(guān)鍵詞: FPGA 光柵地震檢波器 DSP
Abstract:
Key words :


0 引 言
    在石油地震勘探中,,地震儀通過(guò)地震檢波器采集信號(hào),。地震檢波器是為了接收和記錄地震波而設(shè)計(jì)的一種精密的機(jī)械、電子組合裝置,,是地震勘探數(shù)據(jù)采集中的重要環(huán)節(jié),,其性能好壞直接影響地震記錄質(zhì)量和地震資料的解釋工作。光柵傳感技術(shù)的發(fā)展為檢波器的設(shè)計(jì)提供了有力的手段,。其光柵信號(hào)處理技術(shù)仍局限于低速度的信號(hào)處理,,雖然測(cè)量精度較高,但其動(dòng)態(tài)特性難以滿足振動(dòng)信號(hào)檢測(cè)等高速變化信號(hào)的處理要求,,本文設(shè)計(jì)了一種利用DSPFPGA結(jié)合的光柵振動(dòng)信號(hào)處理系統(tǒng),,它主要完成對(duì)光柵震動(dòng)傳感器輸出的兩路正交的正弦波信號(hào)的采集、計(jì)數(shù),、高倍細(xì)分等,,從而實(shí)現(xiàn)了對(duì)快速的振動(dòng)信號(hào)的復(fù)現(xiàn)。


1 光柵地震檢波器的工作原理
    光柵地震檢波器主要由光源(白光或單色光),、準(zhǔn)直鏡,、光電池、指示光柵(副光柵),、光柵諧振子(主光柵)組成,。光柵諧振子(主光柵)為檢波器的可動(dòng)部分,,由上彈簧片和下彈簧片支撐。工作時(shí),,檢波器外殼通過(guò)檢波器尾釘與大地連接并固定,,當(dāng)大地受到震源激發(fā)后,地震波傳至地面引起地面震動(dòng),,檢波器外殼也隨之震動(dòng),。而光柵振子由于彈簧片的彈性和本身的慣性,有保持絕對(duì)不動(dòng)的趨勢(shì),,從而產(chǎn)生了光柵振子與外殼的相對(duì)運(yùn)動(dòng),,也就是說(shuō)光柵副中的主光柵與裂向式指示光柵之間產(chǎn)生了相對(duì)運(yùn)動(dòng)。兩塊疊放在一起的光柵具有了相對(duì)運(yùn)動(dòng)也就會(huì)產(chǎn)生與之相對(duì)應(yīng)的莫爾條紋,,從而在相位差為90°的四個(gè)光電池上產(chǎn)生莫爾條紋的變化,,于是光信號(hào)被轉(zhuǎn)化為電信號(hào),再經(jīng)差分放大后形成兩路相位相差90°的正弦或余弦波信號(hào),。


2 光柵震動(dòng)信號(hào)的同步采集
    要保證整個(gè)系統(tǒng)對(duì)振動(dòng)信號(hào)的實(shí)時(shí)復(fù)現(xiàn),,關(guān)鍵是要保證對(duì)兩路模擬正弦波的同步采集。若使用DSP直接控制多通道的模數(shù)轉(zhuǎn)換器,,由于編程語(yǔ)言的順序結(jié)構(gòu)和單個(gè)模數(shù)轉(zhuǎn)換器不能同時(shí)采樣保持的限制,,對(duì)于多路信號(hào)的采集只能分時(shí)多通道順序采集,這樣對(duì)同一點(diǎn)的兩路模擬波的采集肯定會(huì)產(chǎn)生相位差,,這樣對(duì)復(fù)現(xiàn)出來(lái)的原振動(dòng)信號(hào)會(huì)造成相當(dāng)大的失真,。但是由于FPGA的編程語(yǔ)言VHDL執(zhí)行時(shí)是并發(fā)執(zhí)行的,并不受到它們?cè)谥鹘Y(jié)構(gòu)中的編寫順序的影響,。根據(jù)上述特點(diǎn),,對(duì)于本系統(tǒng)的設(shè)計(jì)可以分成三個(gè)并行進(jìn)程,分別是2個(gè)光柵信號(hào)采集的進(jìn)程和一個(gè)加減計(jì)數(shù)器的進(jìn)程,。
    AD轉(zhuǎn)換器選用的是LINEAR公司生產(chǎn)的LTC1606,,該器件是具有采樣保持功能的16位250kHzADC。該ADC分辨率高,,采樣速率高,、功耗小,,可在高精度的數(shù)據(jù)采集系統(tǒng)中廣泛應(yīng)用,。
    光柵振動(dòng)莫爾條紋的信號(hào)采集采用成直線排列的相位差為90°的四個(gè)光電池,分別記為1,、2,、3和4,如圖1所示,。它們接收由被測(cè)振動(dòng)信號(hào)調(diào)制的莫爾條紋,,并通過(guò)差動(dòng)放大器,、整形濾波器輸出兩路正交的正弦信號(hào)。這兩路信號(hào)分成兩組,,其中一組經(jīng)過(guò)鑒零比較電路轉(zhuǎn)換成方波送入辨向電路為FPGA中加減計(jì)數(shù)器提供計(jì)數(shù)累加值和辨向信號(hào),。另一組則直接將放大的模擬電壓信號(hào)送入兩路AD轉(zhuǎn)換器轉(zhuǎn)換成數(shù)字量并存入FPGA。在FPGA中開(kāi)辟3個(gè)雙口RAM存儲(chǔ)器用來(lái)順序存放每一點(diǎn)的整周期計(jì)數(shù)值和兩路波形的數(shù)字量,,為DSP進(jìn)行高倍細(xì)分提供基礎(chǔ)數(shù)據(jù),。

2.1 雙口RAM的設(shè)計(jì)
    雙口RAM是常見(jiàn)的共享式多端口存儲(chǔ)器,雙口RAM最大的特點(diǎn)是存儲(chǔ)數(shù)據(jù)共享,。一個(gè)存儲(chǔ)器配備兩套獨(dú)立的地址,、數(shù)據(jù)和控制線,允許兩個(gè)獨(dú)立的CPU或控制器同時(shí)異步地訪問(wèn)存儲(chǔ)單元,。由于硬件雙口RAM接口時(shí)序復(fù)雜,,成本高也會(huì)給系統(tǒng)帶來(lái)不穩(wěn)定性,因此本文在FPGA中設(shè)計(jì)了一軟RAM,,用來(lái)緩沖數(shù)據(jù)采集與處理之間產(chǎn)生的異步時(shí)差,。
    其工作原理如圖2所示,所設(shè)計(jì)的存儲(chǔ)空間為3個(gè)16字容量的雙口RAM,,當(dāng)信號(hào)采集部分向新地址寫入每一個(gè)振動(dòng)點(diǎn)的三個(gè)信息量時(shí)(圖中所示地址為15),,信號(hào)處理部分則讀取先前振動(dòng)點(diǎn)的三個(gè)信息量進(jìn)行細(xì)分等處理(圖中所示地址為0),當(dāng)雙口RAM寫滿數(shù)據(jù)后,,寫地址指針又會(huì)重新定位到首地址寫入新的數(shù)據(jù),,這種緩存結(jié)構(gòu)的設(shè)立不會(huì)丟失信息點(diǎn),保證了還原信號(hào)的連續(xù)性和可靠性,,雖然還原信號(hào)滯后源信號(hào)3到4個(gè)字的時(shí)間,,但保證了每一個(gè)點(diǎn)三個(gè)信息量的同步性,這是C語(yǔ)言等順序結(jié)構(gòu)語(yǔ)言所無(wú)法達(dá)到的,。

2.2 雙口RAM的流程圖設(shè)計(jì)
    首先是定義實(shí)體與外部端口,,包括時(shí)鐘、輸入輸出,、讀寫地址端口,。它們的作用分別是:
    1)時(shí)鐘端口:利用時(shí)鐘的脈沖邊沿來(lái)觸發(fā)讀寫進(jìn)程,使得新舊數(shù)據(jù)在雙口RAM中交替進(jìn)出,。
    2)輸入輸出端口:分別為16位的位矢量類型,,用來(lái)保證與16位AD和DSP的數(shù)據(jù)格式匹配。
    3)讀寫地址端口:2位的位矢量類型,,用來(lái)設(shè)置16位字的存儲(chǔ)器容量,,并在讀寫RAM操作時(shí)提供地址選址信號(hào)。
    其次是定義結(jié)構(gòu)體,包括定義內(nèi)部緩沖地址信號(hào),,并定義了一個(gè)容量為16字的Mem(存儲(chǔ)器類型)型變量,。
    最后是并發(fā)進(jìn)程的定義,包括寫進(jìn)程和讀進(jìn)程的定義,,以時(shí)鐘的脈沖信號(hào)作為敏感信號(hào)來(lái)觸發(fā)進(jìn)程的啟動(dòng),,每一個(gè)時(shí)鐘周期完成一次對(duì)RAM的讀寫,其中時(shí)鐘頻率由FPGA根據(jù)AD的采樣速度和DSP的處理速度來(lái)設(shè)定,,要保證當(dāng)采集信號(hào)寫入尾地址的時(shí)刻,,至少要保證首地址已經(jīng)被DSP所讀取。圖3為雙口RAM程序流程圖,。

2.3 雙口RAM的仿真結(jié)果
    圖4為該進(jìn)程的仿真時(shí)序圖,,由圖可見(jiàn)第一個(gè)時(shí)鐘的上升沿?cái)?shù)據(jù)輸入端口data_in的值為4,這時(shí)寫選通端口write_address選通地址1,,然后對(duì)應(yīng)著地址1的存儲(chǔ)器模塊ram_block1的內(nèi)的值在此刻刷新為4,,這說(shuō)明寫進(jìn)程正確。同時(shí)應(yīng)注意到讀地址選通信號(hào)read_address的值被傳遞到讀地址寄存器read_address_reg中,,read_address_reg中的值被刷新為1,。當(dāng)?shù)谝粋€(gè)時(shí)鐘的下降沿到來(lái)時(shí),信號(hào)輸出端口data_out根據(jù)讀地址寄存器read_address_reg中的地址值1選通ram_block1,,此時(shí)data_out的值刷新為4,,這說(shuō)明讀進(jìn)程也正確。

3 DSP的軟件細(xì)分
    采用大數(shù)可逆計(jì)數(shù)與小數(shù)細(xì)分計(jì)數(shù)的軟件細(xì)分技術(shù),。其中大數(shù)計(jì)數(shù)是對(duì)莫爾條紋整周期數(shù)進(jìn)行可逆的加減計(jì)數(shù),,這部分功能有采集模塊中的FPGA來(lái)完成,小數(shù)計(jì)數(shù)是對(duì)莫爾條紋不到一個(gè)周期信號(hào)細(xì)分結(jié)果進(jìn)行計(jì)數(shù),,其功能由DSP來(lái)完成,。運(yùn)算的結(jié)果為大數(shù)計(jì)數(shù)結(jié)果乘以光柵柵距與小數(shù)計(jì)數(shù)結(jié)果乘以細(xì)分當(dāng)量之和,其中細(xì)分當(dāng)量為光柵柵距除以細(xì)分倍數(shù),。該模塊的硬件原理圖如圖5所示,。

 

 

    通過(guò)DSP的地址選通線依次選通讀取FPGA中三個(gè)數(shù)據(jù)緩存區(qū)中的數(shù)據(jù),緩存區(qū)分別存放兩路模擬信號(hào)的數(shù)字量與加減計(jì)數(shù)器的累加計(jì)數(shù)值,,然后利用公式R=N*w+K*L求出任意一點(diǎn)諧振子的幅值并輸出,。式中N為整周期的累加計(jì)數(shù)值,W為光柵柵距,,K為細(xì)分計(jì)數(shù),,L=W/M,M為細(xì)分倍數(shù),。該細(xì)分模塊主要是完成對(duì)細(xì)分計(jì)數(shù)K值,、和幅值R值的求取,并完成對(duì)幅值的數(shù)字量轉(zhuǎn)換并輸出,。
    其中細(xì)分方法也就是對(duì)K值的求取采用了八卦限幅值分割法,,根據(jù)上述方法設(shè)計(jì)了細(xì)分倍數(shù)可變的細(xì)分算法,利用DSP C語(yǔ)言的專用庫(kù)函數(shù)實(shí)現(xiàn)了純計(jì)算的算法,。細(xì)分算法流程如圖6所示,。

 

    由幅值細(xì)分法可知,軟件細(xì)分算法設(shè)計(jì)的關(guān)鍵問(wèn)題是根據(jù)兩路信號(hào)的比值對(duì)該點(diǎn)的相位角的正確定位,。該點(diǎn)的位置有兩種情況,,一種是落在各象限的邊界上,另一種是落在各象限之中,。根據(jù)細(xì)分邊界條件判斷該點(diǎn)的采樣數(shù)據(jù)是否發(fā)生在四個(gè)象限的分界線上,,如果判斷此次換向發(fā)生在象限的分界線上,則細(xì)分?jǐn)?shù)為固定值,,并且通過(guò)象限的正負(fù)關(guān)系就可以確定具體細(xì)分?jǐn)?shù)值,,不需要進(jìn)行復(fù)雜的計(jì)算。如果該點(diǎn)不是發(fā)生在象限分界線上,,則需根據(jù)象限正負(fù)關(guān)系判斷換向發(fā)生的具體象限,,不同象限對(duì)應(yīng)不同計(jì)算公式。細(xì)分算法程序如下:
    static int subdiv(int*input,,int*input1)一設(shè)置指針形參用來(lái)讀取兩路波形采樣值
    {
    程序初始化,,定義各種變量標(biāo)志字。
    float ADSIN_X,,ADCOS_X,,ABSIN_X,ABCOS_X,;一定義存儲(chǔ)變量存放采樣值與絕對(duì)值
    int m=0,,n=0,k=0,,d=0,,i=0;一設(shè)置標(biāo)志字判斷采樣值正負(fù)

    ADSIN_X=*input,;-從緩存區(qū)讀取sin采樣值
    ADCOS_X=*input1,;-從緩存區(qū)讀取cos采樣值
    ABSIN_X=fabs(ADSIN_X);-求取sin絕對(duì)值
    ABCOS_X=fabs(ADCOS_X),;-求取COS絕對(duì)值
    根據(jù)采樣值,,寫標(biāo)志字
    if(ADSIN_X>0) m=1; else m=0,;
    if(ADCOS_X>0) n=1,; else n=0,;
    if((ABSIN_X-ABCOS_X)>0)k=1;else if((AB-SIN_X-ABCOS_X)    根據(jù)標(biāo)志字判斷相位點(diǎn)的位置,根據(jù)相應(yīng)位置不同公式求取細(xì)分值

 

 


    然后利用公式R=N×ω+d×L求出任意一點(diǎn)諧振子的幅值并輸出,。式中N為整周期的累加計(jì)數(shù)值,,W為光柵柵距,d為細(xì)分計(jì)數(shù),,L=ω/m,,m為細(xì)分倍數(shù)。


4 結(jié)束語(yǔ)
    設(shè)計(jì)的光柵地震檢波器充分結(jié)合了FPGA的強(qiáng)大控制功能和DSP高速運(yùn)算處理功能,,實(shí)現(xiàn)了信號(hào)的同步采集,、高倍細(xì)分和實(shí)時(shí)復(fù)現(xiàn)。減少了單一處理器的負(fù)荷,,提高了系統(tǒng)的速度和穩(wěn)定性,,為光柵震動(dòng)信號(hào)處理提出了一個(gè)新思路。由于硬件雙口RAM接口時(shí)序復(fù)雜,,成本高也會(huì)給系統(tǒng)帶來(lái)不穩(wěn)定性,,因此本文在FPGA中設(shè)計(jì)了一軟RAM。對(duì)于振動(dòng)信號(hào)幅值的計(jì)算則是在對(duì)整周期的莫爾條紋進(jìn)行計(jì)數(shù)的同時(shí),,利用軟件細(xì)分法實(shí)時(shí)地計(jì)算出非整周期的莫爾條紋信號(hào)所代表的小數(shù)值,,并實(shí)時(shí)將二者相加后乘以莫爾條紋當(dāng)量(每個(gè)莫爾條紋所代表的位移量),即可得到信號(hào)的實(shí)時(shí)振動(dòng)幅值,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。