汪浩+管國(guó)云+陳學(xué)英
摘 要: 針對(duì)當(dāng)前測(cè)井儀器接收電路多通道、小體積、低功耗、高效率的設(shè)計(jì)要求,提出了一種基于FPGA的DPSD算法實(shí)現(xiàn)新方法。該方法采用一種簡(jiǎn)化的正交DPSD處理方法,方便電路和算法的實(shí)現(xiàn);串行ADC采樣數(shù)據(jù)直接進(jìn)入運(yùn)算,無(wú)需串并轉(zhuǎn)換,在節(jié)省FPGA引腳的同時(shí)保證了算法效率;用移位累加操作代替乘法操作,極大地降低了算法對(duì)FPGA邏輯資源的消耗。在具體FPGA器件上的實(shí)現(xiàn)結(jié)果表明,該方法能夠在不影響算法效率的情況下減少對(duì)FPGA引腳占用和近一半的邏輯資源消耗,滿足預(yù)先的設(shè)計(jì)要求。
關(guān)鍵詞: 測(cè)井儀器; DPSD; FPGA資源消耗; 串行ADC; 移位累加
中圖分類號(hào): TN402?34 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2015)16?0129?04
An new method for implementing of FPGA?based DPSD algorithm
WANG Hao, GUAN Guoyun, CHEN Xueying
(University of Electronic and Technology of China, Chengdu 610054, China)
Abstract: Aimed at the design requirements of multi?channel, small volume, low?power dissipation and high efficiency of the receiving circuits in logging instrument, an new method of implementing FPGA?based DPSD algorithm is proposed. A handling method of simplified orthorhombic DPSD algorithm is adopted in this method, which makes the implementation of circuit and algorithm easier. The serial ADC sampling data can be used in the operation directly and it is unnecessary to perform serial?parallel conversion, which guarantees the algorithm efficiency while taking less FPGA pins. The multiplication operation is replaced by the shift?accumulation operation, which greatly reduces the consumption of the logical resource in FPGA. The implementation result on a specific FPGA device shows that the method, keeping similar algorithm efficiency, can reduce the occupation of FPGA pins and save nearly half of the logical resource consumption, which satisfies the design requirements presented above.
Keywords: logging instrument; DPSD ; FPGA resource consumption; serial ADC; shift?accumulation
0 引 言
在醫(yī)療、軍事、測(cè)井等諸多領(lǐng)域都需要對(duì)微弱信號(hào)進(jìn)行測(cè)量[1?3]。對(duì)微弱信號(hào)測(cè)量的核心問題是在高噪聲背景下,當(dāng)待測(cè)信號(hào)有可能已被淹沒在噪聲中時(shí),提取待測(cè)信號(hào)的幅度、相位等信息。以電法測(cè)井應(yīng)用為例,測(cè)井儀器通常需要通過信號(hào)的激勵(lì)發(fā)射、信號(hào)在地層中的響應(yīng)、響應(yīng)信號(hào)的檢波接收等3個(gè)過程,完成對(duì)地層信息的初步采集。受限于地層響應(yīng)的固有特性和儀器的發(fā)射功率,儀器接收到的響應(yīng)信號(hào)往往十分微弱,有時(shí)甚至?xí)椭翈譶V。此時(shí),一般的檢波方式難以精確提取接收信號(hào)中的幅度、相位等信息。
相敏檢波利用互相關(guān)原理,能夠十分有效地從噪聲中提取出與參考信號(hào)具有相關(guān)性的待測(cè)信號(hào)的幅度和相位信息,同時(shí)忽略不相關(guān)的背景噪聲的干擾[4]。數(shù)字相敏檢波(DPSD)通過數(shù)字方式實(shí)現(xiàn)相敏檢波,避免了由乘法器和積分器組成的模擬相敏檢波器件的非線性和過載現(xiàn)象[5]。DPSD算法利用FPGA,DSP等數(shù)字器件實(shí)現(xiàn)互相關(guān)算法,因而具有無(wú)誤差、正交性好、諧波抑制能力強(qiáng)等優(yōu)點(diǎn);且電法測(cè)井儀器中發(fā)射端的激勵(lì)信號(hào)一般為幾個(gè)固定頻點(diǎn)[6],非常適合通過互相關(guān)算法對(duì)接收信號(hào)進(jìn)行檢波。鑒于上述諸多優(yōu)點(diǎn),DPSD算法目前在國(guó)內(nèi)外諸多測(cè)井儀器中都得到了廣泛的應(yīng)用[7]。
FPGA具有并行性、速度快、穩(wěn)定性高等優(yōu)點(diǎn),是實(shí)現(xiàn)DPSD算法的優(yōu)選平臺(tái)。DSP具有強(qiáng)大的浮點(diǎn)運(yùn)算能力和系統(tǒng)控制能力,與FPGA結(jié)合往往能夠最大限度地發(fā)揮兩者的優(yōu)勢(shì),實(shí)現(xiàn)高效、高精度的DPSD算法。目前普遍的設(shè)計(jì)方式是采用并行或串行模/數(shù)轉(zhuǎn)換器(ADC)完成信號(hào)采樣,在FPGA中利用通用乘法器和累加器完成乘法和累加(乘累加)運(yùn)算,再在DSP中完成浮點(diǎn)數(shù)運(yùn)算和系統(tǒng)控制等操作。陳洋等提出了2種基于FPGA的DPSD算法架構(gòu)[8],能夠大大降低對(duì)DSP運(yùn)算能力的要求,具有較高的靈活性。然而隨著電法測(cè)井技術(shù)的不斷發(fā)展,測(cè)井儀器往往會(huì)面臨更高的測(cè)量速度和精度,更多的測(cè)量信號(hào)通道,以及更加嚴(yán)格的功耗控制等問題。以三分量感應(yīng)測(cè)井儀為例,由于線圈系結(jié)構(gòu)復(fù)雜,儀器往往需要同時(shí)對(duì)多路線圈信號(hào)進(jìn)行測(cè)量。當(dāng)面臨多路信號(hào)的運(yùn)算時(shí),并行ADC勢(shì)必會(huì)帶來FPGA引腳資源的極大消耗,而更高引腳數(shù)的FPGA芯片封裝往往又意味著更大的功耗;串行ADC需要在FPGA內(nèi)部完成串/并轉(zhuǎn)換操作,這會(huì)占用FPGA時(shí)鐘資源,降低數(shù)據(jù)吞吐速率;并且FPGA實(shí)現(xiàn)多路通用乘法器會(huì)造成較大的邏輯資源消耗,分時(shí)復(fù)用同樣會(huì)對(duì)數(shù)據(jù)吞吐速率造成不良影響。為此,本文提出了一種基于FPGA的DPSD算法實(shí)現(xiàn)新方法。該算法采用移位累加器取代乘法器,無(wú)需對(duì)AD數(shù)據(jù)進(jìn)行串/并轉(zhuǎn)換,因而可以在獲得較高的數(shù)據(jù)吞吐率的同時(shí)大大減少對(duì)FPGA引腳和內(nèi)部邏輯等資源的消耗。endprint
1 DPSD算法原理
1.1 相敏檢波原理
傳統(tǒng)的模擬相敏檢波利用模擬乘法器和積分器實(shí)現(xiàn)待測(cè)信號(hào)和參考信號(hào)的互相關(guān)算法,如圖1所示。
圖1 相敏檢波流程圖
圖1中,[xt]為待測(cè)信號(hào)[st]與系統(tǒng)噪聲[nt]的疊加,表達(dá)式為:
[x(t)=s(t)+n(t)=Ascos(ωt+θ)+n(t);]
[rt]為與待測(cè)信號(hào)[st]同頻率的參考信號(hào),在[rt]與[st]的相位關(guān)系不明確的情況下,欲測(cè)得[st]的幅度[As]和相位差[θ],需要采用兩組正交的參考信號(hào)[r1t]和[r2t]同時(shí)完成圖1中相敏檢波流程。這里假設(shè)參考信號(hào)幅度為1,相位為0,即:
[r1(t)=cos(ωt), r2(t)=sin(ωt)]
[xt]與[r1t]進(jìn)行互相關(guān)運(yùn)算,即:
[R1=1T0Tx(t)r1(t)dt=1T0Ts(t)r1(t)+n(t)r1(t)dt]
若認(rèn)為噪聲為隨機(jī)噪聲,與參考信號(hào)無(wú)相關(guān)性,則只要積分時(shí)間T足夠長(zhǎng),上式中系統(tǒng)噪聲[nt]的影響可以被消除,得:
[R1=limT→∞1T0Ts(t)r1(t)dt=As2cosθ]
同理,得:
[R2=limT→∞1T0Ts(t)r2(t)dt=-As2sinθ]
顯然,結(jié)合[R1]和[R2]即可求得待測(cè)信號(hào)的幅度[As]與相位[θ]。
1.2 DPSD算法實(shí)現(xiàn)
DPSD是上述模擬相敏檢波的數(shù)字實(shí)現(xiàn)方式。用數(shù)字方式描述互相關(guān)算法的表達(dá)式為:
[R=1Nn=1Nxnrn]
從式中可以看出,DPSD算法需要對(duì)待測(cè)信號(hào)進(jìn)行模/數(shù)(A/D)轉(zhuǎn)換后再完成兩者的乘法和累加操作。在這個(gè)過程中,諸多因素都可能對(duì)DPSD算法的精度造成影響。張新發(fā)等分析了測(cè)量時(shí)間對(duì)DPSD算法精度的影響[5],得出的結(jié)論為算法輸出信噪比與測(cè)量時(shí)間成正比,且在滿足乃奎斯特采樣率的前提下,采樣頻率對(duì)信噪比無(wú)直接影響。但若考慮到電路中帶通濾波器性能和采樣率不足可能帶來頻譜混疊,和高采樣率對(duì)抑制ADC量化誤差的積極作用[9],適當(dāng)提高采樣率對(duì)DPSD算法精度不無(wú)裨益;同樣地,更大的A/D轉(zhuǎn)換位寬也能降低量化噪聲,有助于提高算法精度。
綜合上述因素,本設(shè)計(jì)采用16倍待測(cè)信號(hào)頻率的采樣率實(shí)現(xiàn)算法設(shè)計(jì),待測(cè)信號(hào)頻率為20 kHz,ADC有效量化位寬為14 b。
2 基于FPGA的DPSD新算法實(shí)現(xiàn)
和模擬相敏檢波一樣,DPSD算法通常也需要采用正交化的實(shí)現(xiàn)方式來測(cè)得待測(cè)信號(hào)的幅度值和相位差。基于FPGA的正交DPSD算法的實(shí)現(xiàn)方式雖然有多種[2,10?11],但其無(wú)一例外地均需要在FPGA內(nèi)部采用乘法器和累加器來實(shí)現(xiàn)DPSD算法的乘累加操作。本節(jié)著重分析了一般DPSD算法中乘累加操作實(shí)現(xiàn)方式的不足,并提出了一種改進(jìn)的實(shí)現(xiàn)方式。
2.1 基于通用乘法器、累加器的DPSD算法實(shí)現(xiàn)
如前所述,一般基于FPGA的DPSD算法都是采用在FPGA內(nèi)部實(shí)現(xiàn)通用乘法器和累加器的方式來進(jìn)行乘累加操作。
圖2分別給出了在使用并行和串行ADC時(shí),F(xiàn)PGA內(nèi)部實(shí)現(xiàn)乘累加算法的原理框圖。不難看出采用并行ADC時(shí),算法的效率更高,但會(huì)占用更多的FPGA引腳資源。尤其是當(dāng)需要實(shí)現(xiàn)多路信號(hào)的測(cè)量時(shí);并行ADC接口對(duì)FPGA引腳的占用量往往是電路難以承受的。若采用更多引腳的FPGA芯片又可能會(huì)導(dǎo)致電路體積、功耗的增加等問題。串行ADC能夠大大減少對(duì)FPGA引腳資源的消耗,但FPGA內(nèi)部的串/并轉(zhuǎn)換過程會(huì)占用系統(tǒng)時(shí)鐘周期,影響算法效率。最主要的是,上述兩種實(shí)現(xiàn)方式都需要在FPGA內(nèi)部采用通用乘法器實(shí)現(xiàn)采樣數(shù)據(jù)的乘法操作,而在FPGA中綜合通用乘法器會(huì)消耗較多的邏輯資源。如何兼顧并行A/D算法效率高和串行A/D引腳占用少的優(yōu)點(diǎn),同時(shí)減少對(duì)FPGA邏輯資源的消耗,正是接下來要解決的問題。
圖2 并/串行AD接口乘累加框圖
2.2 改進(jìn)的串行乘累加算法
本文提出了一種新的串行正交DPSD算法,并著重對(duì)采用串行ADC接口是FPGA內(nèi)部的乘累加算法進(jìn)行了改進(jìn)。具體地:
(1) 待測(cè)信號(hào)和參考信號(hào)直接與FPGA內(nèi)部正、余弦函數(shù)表完成正交的DPSD算法,計(jì)算結(jié)果再通過DSP等浮點(diǎn)運(yùn)算設(shè)備完成信號(hào)幅度值和相位差的計(jì)算;
(2) 在上一點(diǎn)的基礎(chǔ)上,采用查找表結(jié)合移位累加算法替代通用乘法器完成乘法運(yùn)算,減少了FPGA邏輯資源的消耗;
(3) 每一位A/D串行數(shù)據(jù)都可以獨(dú)立參與運(yùn)算,無(wú)需對(duì)串行A/D數(shù)據(jù)進(jìn)行串/并轉(zhuǎn)換,在節(jié)省FPGA引腳占用的同時(shí)提高了算法效率。
如圖3所示,A/D采樣數(shù)據(jù)x[n]高位在前,串行輸入FPGA內(nèi)部移位累加器模塊,完成與內(nèi)部sin(正弦)和cos(余弦)函數(shù)表的乘法運(yùn)算。具體實(shí)現(xiàn)方式為:x[n]當(dāng)前某一位數(shù)據(jù)對(duì)sin和cos系數(shù)進(jìn)行選擇,x[n]當(dāng)前位為0則忽略,為1則按當(dāng)前位數(shù)對(duì)sin和cos系數(shù)進(jìn)行加權(quán)處理(移位);不同位數(shù)權(quán)值不同,加權(quán)處理后的sin和cos系數(shù)相加,當(dāng)最后一位x[n]的串行數(shù)據(jù)輸入完成后即得到完整結(jié)果(累加)。上述過程可表示為:
[xn×sin=D13D12???D0×sin=i=130Di×sin×2i]
圖3 算法結(jié)構(gòu)框圖
本設(shè)計(jì)采用ACTEL公司型號(hào)為A3P250的FPGA作為算法實(shí)現(xiàn)平臺(tái)。該FPGA芯片基于FLASH架構(gòu),具有掉電不易失、功耗低、上電啟動(dòng)速度快等優(yōu)點(diǎn)。并且FLASH架構(gòu)較SRAM架構(gòu)而言在高溫和復(fù)雜電磁環(huán)境下具有更高的可靠性,因而被廣泛地應(yīng)用于軍工、航天、測(cè)井等領(lǐng)域。
A3P250內(nèi)部具有大小為1 Kb的FLASHROM可供用戶自行配置。本設(shè)計(jì)將sin和cos函數(shù)表存儲(chǔ)在內(nèi)部FLASHROM中,有利于充分利用FPGA硬件資源,進(jìn)一步減少對(duì)可編程邏輯資源的消耗。具體實(shí)現(xiàn)時(shí),AD轉(zhuǎn)換時(shí)鐘CNVST在FPGA內(nèi)部經(jīng)過計(jì)數(shù)后,其計(jì)數(shù)結(jié)果對(duì)FLASHROM進(jìn)行尋址;FLASHROM輸出對(duì)應(yīng)的sin和cos系數(shù)到移位累加模塊,進(jìn)而完成與A/D串行數(shù)據(jù)的乘法運(yùn)算。SCLK為ADC轉(zhuǎn)換數(shù)據(jù)的串行輸出時(shí)鐘,可以通過系統(tǒng)時(shí)鐘分頻得到。圖4描述了更加具體的移位累加模塊內(nèi)部流程圖。
圖4 移位累加模塊流程圖
圖4中,移位累加模塊同時(shí)完成x[n]與sin,cos系數(shù)的移位乘法,SCLK同時(shí)作為時(shí)鐘信號(hào)輸入到移位累加模塊。data_sec模塊為同步數(shù)據(jù)選擇模塊,當(dāng)x[n]當(dāng)前位為1時(shí),模塊將對(duì)應(yīng)的sin和cos系數(shù)鎖存到模塊輸出端;反之,輸出為零。數(shù)據(jù)選擇模塊結(jié)果輸入到同步加法模塊,加法模塊與一位左移模塊完成圖中所示的迭代結(jié)構(gòu)。SCLK同時(shí)輸入SCLK_CNT模塊進(jìn)行計(jì)數(shù),當(dāng)計(jì)數(shù)值達(dá)到ADC串行數(shù)據(jù)位數(shù)時(shí),模塊輸出“移位累加完成”信號(hào)shift_done,此時(shí)加法器的相加結(jié)構(gòu)即為多次移位累計(jì)運(yùn)算的完整結(jié)果。圖4中,x[n]分別與sin,cos系數(shù)完成上述移位乘法,得到兩組正交的運(yùn)算結(jié)果I和Q。在圖3中可以看到,I和Q分別送入累加器,最終完成正交DPSD算法中的乘累加操作。如前所述,DSP具有強(qiáng)大的浮點(diǎn)運(yùn)算能力,與FPGA結(jié)合可以同時(shí)發(fā)揮兩者的優(yōu)勢(shì),提高算法效率。本設(shè)計(jì)中的I和Q數(shù)據(jù)送入DSP中完成浮點(diǎn)運(yùn)算,最終計(jì)算出待測(cè)信號(hào)的幅值和相位。
3 實(shí)驗(yàn)結(jié)果
本算法結(jié)構(gòu)最大的優(yōu)勢(shì)在于大大減少DPSD算法了對(duì)FPGA邏輯資源的消耗;并且由于不需要先完成ADC數(shù)據(jù)的串并轉(zhuǎn)換再進(jìn)行乘累加運(yùn)算,理論上算法的吞吐率可以達(dá)到ADC串行時(shí)鐘速率和FPGA系統(tǒng)時(shí)鐘速率兩者之間的較大值。本設(shè)計(jì)在A3P250上分別用第2.1節(jié)“通用乘法器+累加器”的實(shí)現(xiàn)方式和第2.2節(jié)中改進(jìn)的串行移位累加法實(shí)現(xiàn)了一路正交的DPSD運(yùn)算,軟件設(shè)計(jì)平臺(tái)為L(zhǎng)ibero IDE v9.1,并著重對(duì)比了兩者對(duì)FPGA邏輯資源的消耗情況,如表1所示。
表1 FPGA實(shí)現(xiàn)結(jié)果
從表1中可以看出,同樣實(shí)現(xiàn)一路正交的DPSD運(yùn)算,本文提出的實(shí)現(xiàn)方法較傳統(tǒng)在FPGA邏輯資源消耗方面具有很大優(yōu)勢(shì),節(jié)省了近一半的邏輯資源。在某三分量感應(yīng)測(cè)井儀的實(shí)際應(yīng)用中,測(cè)控電路中FPGA芯片為上述A3P250,改儀器需要同時(shí)完成5路ADC數(shù)據(jù)的DPSD算法。此時(shí),采用傳統(tǒng)方式實(shí)現(xiàn)方式的FPGA邏輯資源已經(jīng)無(wú)法滿足設(shè)計(jì)需求,而采用本文提出的實(shí)現(xiàn)方式則可很好地應(yīng)對(duì)這種情況。
4 結(jié) 語(yǔ)
本文結(jié)合當(dāng)前電法測(cè)井儀器的發(fā)展現(xiàn)狀,有針對(duì)性地提出了一種基于FPGA的DPSD算法實(shí)現(xiàn)新方法。該方法可以對(duì)串行ADC的輸出數(shù)據(jù)直接進(jìn)行運(yùn)算,無(wú)需在FPGA內(nèi)部完成串/并轉(zhuǎn)換,提高了算法效率;采用移位累加的處理方式實(shí)現(xiàn)乘法操作,省去了通用乘法器,使得FPGA邏輯資源消耗節(jié)省了近一半;使用內(nèi)部FLASHROM存儲(chǔ)sin和cos函數(shù)表,充分利用FPGA芯片硬件資源的同時(shí)進(jìn)一步減少了邏輯資源的消耗。
需要指出的是,本設(shè)計(jì)采用的sin和cos系數(shù)為數(shù)值范圍從-1~+1的有符號(hào)數(shù),這使得移位累加的過程實(shí)際上較圖4所示更為復(fù)雜。如對(duì)sin和cos函數(shù)表添加直流偏置,使得系數(shù)為全正的無(wú)符號(hào)數(shù),運(yùn)算過程可得到簡(jiǎn)化。由DPSD算法原理可知,這樣并不會(huì)影響運(yùn)算結(jié)果,并且算法的資源消耗應(yīng)該會(huì)較表1有進(jìn)一步減少。
綜上所述,本文提出新方法能夠在提高測(cè)井儀器接收電路DPSD算法效率的同時(shí)節(jié)省FPGA引腳和內(nèi)部邏輯等資源,對(duì)其他涉及基于FPGA的DPSD算法實(shí)現(xiàn)的領(lǐng)域同樣具有借鑒意義。
參考文獻(xiàn)
[1] 王曉俊,周杏鵬,王毅.精密阻抗分析儀中數(shù)字相敏檢波技術(shù)研究與實(shí)現(xiàn)[J].儀器儀表學(xué)報(bào),2006,27(6):592?595.
[2] 何為,何傳紅,劉斌.電阻抗成像中高速高精度數(shù)字相敏檢波器設(shè)計(jì)[J].重慶大學(xué)學(xué)報(bào):自然科學(xué)版,2009,32(11):1274?1290.
[3] 劉升虎,邢亞敏.DPSD技術(shù)再隨鉆電阻率測(cè)井中的應(yīng)用[J].測(cè)井技術(shù),2008,32(1):69?71.
[4] 孫志斌,陳佳佳.鎖相放大器的新進(jìn)展[J].實(shí)驗(yàn)技術(shù),2006,35(10):879?884.
[5] 張新發(fā).DPSD算法性能研究及參數(shù)選擇[J].吉林工業(yè)大學(xué)學(xué)報(bào),1998,28(3):40?45.
[6] 盧濤,朱柯斌,孫向陽(yáng).隨鉆電磁波測(cè)井寬帶信號(hào)設(shè)計(jì)和測(cè)井響應(yīng)分析[J].測(cè)井技術(shù),2014,38(1):80?85.
[7] 管國(guó)云,汪浩,聶在平,等.一種消除感應(yīng)測(cè)井直耦信號(hào)的自動(dòng)調(diào)節(jié)裝置:中國(guó),103885090[P].2014?06?25.
[8] 陳陽(yáng),聶在平.DPSD算法的FPGA高效實(shí)現(xiàn)[J].測(cè)井技術(shù),2013,37(4):421?425.
[9] AZIZ P M, SORENSEN H V, VN DER SPIEGEL J. An overview of sigma?delta converters [J]. IEEE Journals & Magazines, 1996, 13(1): 61?84.
[10] 楊平.一種新的數(shù)字式正交相位檢波器[J].上海航天,1994(3):14?17.
[11] 梁世盛,喬鳳斌,張燕.基于FPGA的數(shù)字相敏檢波算法實(shí)現(xiàn)[J].自動(dòng)化儀表,2013,34(11):13?16.