汪浩+管國云+陳學英
摘 要: 針對當前測井儀器接收電路多通道、小體積、低功耗、高效率的設計要求,提出了一種基于FPGA的DPSD算法實現(xiàn)新方法。該方法采用一種簡化的正交DPSD處理方法,方便電路和算法的實現(xiàn);串行ADC采樣數(shù)據(jù)直接進入運算,無需串并轉(zhuǎn)換,在節(jié)省FPGA引腳的同時保證了算法效率;用移位累加操作代替乘法操作,極大地降低了算法對FPGA邏輯資源的消耗。在具體FPGA器件上的實現(xiàn)結(jié)果表明,該方法能夠在不影響算法效率的情況下減少對FPGA引腳占用和近一半的邏輯資源消耗,滿足預先的設計要求。
關鍵詞: 測井儀器; DPSD; FPGA資源消耗; 串行ADC; 移位累加
中圖分類號: TN402?34 文獻標識碼: A 文章編號: 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ī)療、軍事、測井等諸多領域都需要對微弱信號進行測量[1?3]。對微弱信號測量的核心問題是在高噪聲背景下,當待測信號有可能已被淹沒在噪聲中時,提取待測信號的幅度、相位等信息。以電法測井應用為例,測井儀器通常需要通過信號的激勵發(fā)射、信號在地層中的響應、響應信號的檢波接收等3個過程,完成對地層信息的初步采集。受限于地層響應的固有特性和儀器的發(fā)射功率,儀器接收到的響應信號往往十分微弱,有時甚至會低至幾nV。此時,一般的檢波方式難以精確提取接收信號中的幅度、相位等信息。
相敏檢波利用互相關原理,能夠十分有效地從噪聲中提取出與參考信號具有相關性的待測信號的幅度和相位信息,同時忽略不相關的背景噪聲的干擾[4]。數(shù)字相敏檢波(DPSD)通過數(shù)字方式實現(xiàn)相敏檢波,避免了由乘法器和積分器組成的模擬相敏檢波器件的非線性和過載現(xiàn)象[5]。DPSD算法利用FPGA,DSP等數(shù)字器件實現(xiàn)互相關算法,因而具有無誤差、正交性好、諧波抑制能力強等優(yōu)點;且電法測井儀器中發(fā)射端的激勵信號一般為幾個固定頻點[6],非常適合通過互相關算法對接收信號進行檢波。鑒于上述諸多優(yōu)點,DPSD算法目前在國內(nèi)外諸多測井儀器中都得到了廣泛的應用[7]。
FPGA具有并行性、速度快、穩(wěn)定性高等優(yōu)點,是實現(xiàn)DPSD算法的優(yōu)選平臺。DSP具有強大的浮點運算能力和系統(tǒng)控制能力,與FPGA結(jié)合往往能夠最大限度地發(fā)揮兩者的優(yōu)勢,實現(xiàn)高效、高精度的DPSD算法。目前普遍的設計方式是采用并行或串行模/數(shù)轉(zhuǎn)換器(ADC)完成信號采樣,在FPGA中利用通用乘法器和累加器完成乘法和累加(乘累加)運算,再在DSP中完成浮點數(shù)運算和系統(tǒng)控制等操作。陳洋等提出了2種基于FPGA的DPSD算法架構(gòu)[8],能夠大大降低對DSP運算能力的要求,具有較高的靈活性。然而隨著電法測井技術的不斷發(fā)展,測井儀器往往會面臨更高的測量速度和精度,更多的測量信號通道,以及更加嚴格的功耗控制等問題。以三分量感應測井儀為例,由于線圈系結(jié)構(gòu)復雜,儀器往往需要同時對多路線圈信號進行測量。當面臨多路信號的運算時,并行ADC勢必會帶來FPGA引腳資源的極大消耗,而更高引腳數(shù)的FPGA芯片封裝往往又意味著更大的功耗;串行ADC需要在FPGA內(nèi)部完成串/并轉(zhuǎn)換操作,這會占用FPGA時鐘資源,降低數(shù)據(jù)吞吐速率;并且FPGA實現(xiàn)多路通用乘法器會造成較大的邏輯資源消耗,分時復用同樣會對數(shù)據(jù)吞吐速率造成不良影響。為此,本文提出了一種基于FPGA的DPSD算法實現(xiàn)新方法。該算法采用移位累加器取代乘法器,無需對AD數(shù)據(jù)進行串/并轉(zhuǎn)換,因而可以在獲得較高的數(shù)據(jù)吞吐率的同時大大減少對FPGA引腳和內(nèi)部邏輯等資源的消耗。endprint
1 DPSD算法原理
1.1 相敏檢波原理
傳統(tǒng)的模擬相敏檢波利用模擬乘法器和積分器實現(xiàn)待測信號和參考信號的互相關算法,如圖1所示。
圖1 相敏檢波流程圖
圖1中,[xt]為待測信號[st]與系統(tǒng)噪聲[nt]的疊加,表達式為:
[x(t)=s(t)+n(t)=Ascos(ωt+θ)+n(t);]
[rt]為與待測信號[st]同頻率的參考信號,在[rt]與[st]的相位關系不明確的情況下,欲測得[st]的幅度[As]和相位差[θ],需要采用兩組正交的參考信號[r1t]和[r2t]同時完成圖1中相敏檢波流程。這里假設參考信號幅度為1,相位為0,即:
[r1(t)=cos(ωt), r2(t)=sin(ωt)]
[xt]與[r1t]進行互相關運算,即:
[R1=1T0Tx(t)r1(t)dt=1T0Ts(t)r1(t)+n(t)r1(t)dt]
若認為噪聲為隨機噪聲,與參考信號無相關性,則只要積分時間T足夠長,上式中系統(tǒng)噪聲[nt]的影響可以被消除,得:
[R1=limT→∞1T0Ts(t)r1(t)dt=As2cosθ]
同理,得:
[R2=limT→∞1T0Ts(t)r2(t)dt=-As2sinθ]
顯然,結(jié)合[R1]和[R2]即可求得待測信號的幅度[As]與相位[θ]。
1.2 DPSD算法實現(xiàn)
DPSD是上述模擬相敏檢波的數(shù)字實現(xiàn)方式。用數(shù)字方式描述互相關算法的表達式為:
[R=1Nn=1Nxnrn]
從式中可以看出,DPSD算法需要對待測信號進行模/數(shù)(A/D)轉(zhuǎn)換后再完成兩者的乘法和累加操作。在這個過程中,諸多因素都可能對DPSD算法的精度造成影響。張新發(fā)等分析了測量時間對DPSD算法精度的影響[5],得出的結(jié)論為算法輸出信噪比與測量時間成正比,且在滿足乃奎斯特采樣率的前提下,采樣頻率對信噪比無直接影響。但若考慮到電路中帶通濾波器性能和采樣率不足可能帶來頻譜混疊,和高采樣率對抑制ADC量化誤差的積極作用[9],適當提高采樣率對DPSD算法精度不無裨益;同樣地,更大的A/D轉(zhuǎn)換位寬也能降低量化噪聲,有助于提高算法精度。
綜合上述因素,本設計采用16倍待測信號頻率的采樣率實現(xiàn)算法設計,待測信號頻率為20 kHz,ADC有效量化位寬為14 b。
2 基于FPGA的DPSD新算法實現(xiàn)
和模擬相敏檢波一樣,DPSD算法通常也需要采用正交化的實現(xiàn)方式來測得待測信號的幅度值和相位差?;贔PGA的正交DPSD算法的實現(xiàn)方式雖然有多種[2,10?11],但其無一例外地均需要在FPGA內(nèi)部采用乘法器和累加器來實現(xiàn)DPSD算法的乘累加操作。本節(jié)著重分析了一般DPSD算法中乘累加操作實現(xiàn)方式的不足,并提出了一種改進的實現(xiàn)方式。
2.1 基于通用乘法器、累加器的DPSD算法實現(xiàn)
如前所述,一般基于FPGA的DPSD算法都是采用在FPGA內(nèi)部實現(xiàn)通用乘法器和累加器的方式來進行乘累加操作。
圖2分別給出了在使用并行和串行ADC時,F(xiàn)PGA內(nèi)部實現(xiàn)乘累加算法的原理框圖。不難看出采用并行ADC時,算法的效率更高,但會占用更多的FPGA引腳資源。尤其是當需要實現(xiàn)多路信號的測量時;并行ADC接口對FPGA引腳的占用量往往是電路難以承受的。若采用更多引腳的FPGA芯片又可能會導致電路體積、功耗的增加等問題。串行ADC能夠大大減少對FPGA引腳資源的消耗,但FPGA內(nèi)部的串/并轉(zhuǎn)換過程會占用系統(tǒng)時鐘周期,影響算法效率。最主要的是,上述兩種實現(xiàn)方式都需要在FPGA內(nèi)部采用通用乘法器實現(xiàn)采樣數(shù)據(jù)的乘法操作,而在FPGA中綜合通用乘法器會消耗較多的邏輯資源。如何兼顧并行A/D算法效率高和串行A/D引腳占用少的優(yōu)點,同時減少對FPGA邏輯資源的消耗,正是接下來要解決的問題。
圖2 并/串行AD接口乘累加框圖
2.2 改進的串行乘累加算法
本文提出了一種新的串行正交DPSD算法,并著重對采用串行ADC接口是FPGA內(nèi)部的乘累加算法進行了改進。具體地:
(1) 待測信號和參考信號直接與FPGA內(nèi)部正、余弦函數(shù)表完成正交的DPSD算法,計算結(jié)果再通過DSP等浮點運算設備完成信號幅度值和相位差的計算;
(2) 在上一點的基礎上,采用查找表結(jié)合移位累加算法替代通用乘法器完成乘法運算,減少了FPGA邏輯資源的消耗;
(3) 每一位A/D串行數(shù)據(jù)都可以獨立參與運算,無需對串行A/D數(shù)據(jù)進行串/并轉(zhuǎn)換,在節(jié)省FPGA引腳占用的同時提高了算法效率。
如圖3所示,A/D采樣數(shù)據(jù)x[n]高位在前,串行輸入FPGA內(nèi)部移位累加器模塊,完成與內(nèi)部sin(正弦)和cos(余弦)函數(shù)表的乘法運算。具體實現(xiàn)方式為:x[n]當前某一位數(shù)據(jù)對sin和cos系數(shù)進行選擇,x[n]當前位為0則忽略,為1則按當前位數(shù)對sin和cos系數(shù)進行加權處理(移位);不同位數(shù)權值不同,加權處理后的sin和cos系數(shù)相加,當最后一位x[n]的串行數(shù)據(jù)輸入完成后即得到完整結(jié)果(累加)。上述過程可表示為:
[xn×sin=D13D12???D0×sin=i=130Di×sin×2i]
圖3 算法結(jié)構(gòu)框圖
本設計采用ACTEL公司型號為A3P250的FPGA作為算法實現(xiàn)平臺。該FPGA芯片基于FLASH架構(gòu),具有掉電不易失、功耗低、上電啟動速度快等優(yōu)點。并且FLASH架構(gòu)較SRAM架構(gòu)而言在高溫和復雜電磁環(huán)境下具有更高的可靠性,因而被廣泛地應用于軍工、航天、測井等領域。
A3P250內(nèi)部具有大小為1 Kb的FLASHROM可供用戶自行配置。本設計將sin和cos函數(shù)表存儲在內(nèi)部FLASHROM中,有利于充分利用FPGA硬件資源,進一步減少對可編程邏輯資源的消耗。具體實現(xiàn)時,AD轉(zhuǎn)換時鐘CNVST在FPGA內(nèi)部經(jīng)過計數(shù)后,其計數(shù)結(jié)果對FLASHROM進行尋址;FLASHROM輸出對應的sin和cos系數(shù)到移位累加模塊,進而完成與A/D串行數(shù)據(jù)的乘法運算。SCLK為ADC轉(zhuǎn)換數(shù)據(jù)的串行輸出時鐘,可以通過系統(tǒng)時鐘分頻得到。圖4描述了更加具體的移位累加模塊內(nèi)部流程圖。
圖4 移位累加模塊流程圖
圖4中,移位累加模塊同時完成x[n]與sin,cos系數(shù)的移位乘法,SCLK同時作為時鐘信號輸入到移位累加模塊。data_sec模塊為同步數(shù)據(jù)選擇模塊,當x[n]當前位為1時,模塊將對應的sin和cos系數(shù)鎖存到模塊輸出端;反之,輸出為零。數(shù)據(jù)選擇模塊結(jié)果輸入到同步加法模塊,加法模塊與一位左移模塊完成圖中所示的迭代結(jié)構(gòu)。SCLK同時輸入SCLK_CNT模塊進行計數(shù),當計數(shù)值達到ADC串行數(shù)據(jù)位數(shù)時,模塊輸出“移位累加完成”信號shift_done,此時加法器的相加結(jié)構(gòu)即為多次移位累計運算的完整結(jié)果。圖4中,x[n]分別與sin,cos系數(shù)完成上述移位乘法,得到兩組正交的運算結(jié)果I和Q。在圖3中可以看到,I和Q分別送入累加器,最終完成正交DPSD算法中的乘累加操作。如前所述,DSP具有強大的浮點運算能力,與FPGA結(jié)合可以同時發(fā)揮兩者的優(yōu)勢,提高算法效率。本設計中的I和Q數(shù)據(jù)送入DSP中完成浮點運算,最終計算出待測信號的幅值和相位。
3 實驗結(jié)果
本算法結(jié)構(gòu)最大的優(yōu)勢在于大大減少DPSD算法了對FPGA邏輯資源的消耗;并且由于不需要先完成ADC數(shù)據(jù)的串并轉(zhuǎn)換再進行乘累加運算,理論上算法的吞吐率可以達到ADC串行時鐘速率和FPGA系統(tǒng)時鐘速率兩者之間的較大值。本設計在A3P250上分別用第2.1節(jié)“通用乘法器+累加器”的實現(xiàn)方式和第2.2節(jié)中改進的串行移位累加法實現(xiàn)了一路正交的DPSD運算,軟件設計平臺為Libero IDE v9.1,并著重對比了兩者對FPGA邏輯資源的消耗情況,如表1所示。
表1 FPGA實現(xiàn)結(jié)果
從表1中可以看出,同樣實現(xiàn)一路正交的DPSD運算,本文提出的實現(xiàn)方法較傳統(tǒng)在FPGA邏輯資源消耗方面具有很大優(yōu)勢,節(jié)省了近一半的邏輯資源。在某三分量感應測井儀的實際應用中,測控電路中FPGA芯片為上述A3P250,改儀器需要同時完成5路ADC數(shù)據(jù)的DPSD算法。此時,采用傳統(tǒng)方式實現(xiàn)方式的FPGA邏輯資源已經(jīng)無法滿足設計需求,而采用本文提出的實現(xiàn)方式則可很好地應對這種情況。
4 結(jié) 語
本文結(jié)合當前電法測井儀器的發(fā)展現(xiàn)狀,有針對性地提出了一種基于FPGA的DPSD算法實現(xiàn)新方法。該方法可以對串行ADC的輸出數(shù)據(jù)直接進行運算,無需在FPGA內(nèi)部完成串/并轉(zhuǎn)換,提高了算法效率;采用移位累加的處理方式實現(xiàn)乘法操作,省去了通用乘法器,使得FPGA邏輯資源消耗節(jié)省了近一半;使用內(nèi)部FLASHROM存儲sin和cos函數(shù)表,充分利用FPGA芯片硬件資源的同時進一步減少了邏輯資源的消耗。
需要指出的是,本設計采用的sin和cos系數(shù)為數(shù)值范圍從-1~+1的有符號數(shù),這使得移位累加的過程實際上較圖4所示更為復雜。如對sin和cos函數(shù)表添加直流偏置,使得系數(shù)為全正的無符號數(shù),運算過程可得到簡化。由DPSD算法原理可知,這樣并不會影響運算結(jié)果,并且算法的資源消耗應該會較表1有進一步減少。
綜上所述,本文提出新方法能夠在提高測井儀器接收電路DPSD算法效率的同時節(jié)省FPGA引腳和內(nèi)部邏輯等資源,對其他涉及基于FPGA的DPSD算法實現(xiàn)的領域同樣具有借鑒意義。
參考文獻
[1] 王曉俊,周杏鵬,王毅.精密阻抗分析儀中數(shù)字相敏檢波技術研究與實現(xiàn)[J].儀器儀表學報,2006,27(6):592?595.
[2] 何為,何傳紅,劉斌.電阻抗成像中高速高精度數(shù)字相敏檢波器設計[J].重慶大學學報:自然科學版,2009,32(11):1274?1290.
[3] 劉升虎,邢亞敏.DPSD技術再隨鉆電阻率測井中的應用[J].測井技術,2008,32(1):69?71.
[4] 孫志斌,陳佳佳.鎖相放大器的新進展[J].實驗技術,2006,35(10):879?884.
[5] 張新發(fā).DPSD算法性能研究及參數(shù)選擇[J].吉林工業(yè)大學學報,1998,28(3):40?45.
[6] 盧濤,朱柯斌,孫向陽.隨鉆電磁波測井寬帶信號設計和測井響應分析[J].測井技術,2014,38(1):80?85.
[7] 管國云,汪浩,聶在平,等.一種消除感應測井直耦信號的自動調(diào)節(jié)裝置:中國,103885090[P].2014?06?25.
[8] 陳陽,聶在平.DPSD算法的FPGA高效實現(xiàn)[J].測井技術,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ù)字相敏檢波算法實現(xiàn)[J].自動化儀表,2013,34(11):13?16.