胡永建, 孫成芹, 胡奕然
(1.中國石油集團工程技術(shù)研究院 北京石油機械有限公司,北京 102206;2.北京市八一學(xué)校,北京 100080)
在石油鉆井領(lǐng)域,井下信號的短距離無線傳輸技術(shù)不僅有利于在高頻磁耦合信道中使用常規(guī)鉆具代替造價昂貴的特殊有纜鉆具[1],也有利于實現(xiàn)跨越螺桿鉆具的近鉆頭參數(shù)測量[2]。井下無線信道由鉆井液、鉆柱、地層等共同組成。與水聲信道類似[3],該信道也具有時間變化大、衰減大、頻率低、傳播路徑豐富等特性[4]。不同信道條件需要不同通訊方式,軟件無線電(software defined radio, SDR)適合在同一硬件平臺實現(xiàn)不同頻段、不同調(diào)制方式的通訊[5]。對于井下無線通訊SDR發(fā)射機研制而言,需要盡可能地通過軟件方式實現(xiàn)除模擬前端(analog front-end,AFE)和數(shù)模轉(zhuǎn)換器(digital-to-analog converter,DAC)外的所有功能。
井下SDR發(fā)射機研制的常規(guī)技術(shù)路線是利用上位機(如兼容機)設(shè)計信號調(diào)制等算法,然后將算法移植到微控制器(microcontroller unit,MCU)、現(xiàn)場可編程邏輯陣列(field programmable gate array,F(xiàn)PGA)、數(shù)字信號處理器(digital signal processing,DSP)等嵌入式硬件中,隨后通過高集成度發(fā)射機輸出功率信號。使用任意波信號發(fā)生器(arbitrary wave generator,AWG)可以驗證算法,如Keysight 81150A脈沖函數(shù)任意噪聲發(fā)生器可以輸出14位、512 k采樣深度、2 GSa/s采樣率的任意波形信號[6]。由于輸出功率限制,該信號發(fā)生器即便在增加高電壓選件后輸出功率也僅有0.25 W,不能滿足井下SDR發(fā)射機的功率需求;使用附加的獨立放大器又無法滿足高集成度一次性硬件開發(fā)驗證的需求。
本文設(shè)計的USB接口功率任意波發(fā)生器的核心硬件與井下SDR發(fā)射機完全相同,避免了硬件的二次開發(fā)驗證。上位機通過USB接口寫入設(shè)計好的波形數(shù)據(jù),功率任意波發(fā)生器通過單個高集成度芯片實現(xiàn)DAC、功率放大器(power amplifier,PA)、濾波器等功能,輸出功率高達6 W。使用該功率任意波發(fā)生器能夠縮短井下SDR發(fā)射機的研制周期。
井下高溫高壓環(huán)境對電子儀器的可靠性是一個挑戰(zhàn),井下SDR發(fā)射機的可靠性可以通過高溫元器件選型和高集成度設(shè)計來提升。
美國德州儀器公司(TI)設(shè)計的AFE031電力線模擬前端芯片[7-9]耐溫達125℃,內(nèi)部集成了DAC、PA、可編程增益放大器(programmable gain amplifier,PGA)、濾波器等多種部件,是專為電力載波通訊設(shè)計的高集成度芯片。其頻率范圍滿足EN50065 CENELEC A、B、C、D波段的需求,支持頻移鍵控(frequency shift keying,F(xiàn)SK)、擴擴頻型頻移鍵控(spread frequency shift keying,S-FSK)及正交頻分復(fù)用(orthogonal frequency division multiplexing,OFDM)等調(diào)制方式,在1.5 A輸出時擺幅高達12 Vpp,特別適合驅(qū)動低阻抗線路。本文設(shè)計的USB接口功率任意波發(fā)生器的核心硬件就基于該芯片,與井下SDR發(fā)射機結(jié)構(gòu)一致。外部設(shè)備通過串行外設(shè)接口(serial peripheral interface,SPI)接口與AFE031內(nèi)部寄存器和DAC通訊。
美國芯科實驗室(Silicon Labs)設(shè)計的CP2130橋接芯片[10]允許上位機通過通用串行總線(universal serial bus,USB)接口與AFE031芯片的SPI接口通訊。廠家提供了Windows兼容的應(yīng)用程序編程接口(application programming interface,API)庫,對于Linux等平臺則提供了LibUSB庫。
以150 kHz作為井下SDR發(fā)射機的最高發(fā)射頻率,根據(jù)奈奎斯特采樣定理,采樣頻率不能低于300 kHz。由于上位機并非實時操作系統(tǒng),通過CP2130 UAB-SPI橋接芯片直接向AFE031的DAC寫入數(shù)據(jù)無法滿足任意波形發(fā)生器對速率和時鐘同步的需求。經(jīng)過實測,使用Windows10操作系統(tǒng)的主流商用計算機通過USB接口向CP2130連續(xù)發(fā)送指令,一條SPI輸出指令更新一次DAC的數(shù)據(jù),指令最小時間間隔約為50 μs,即此時任意波形發(fā)生器的更新頻率(采樣頻率)低于20 kHz,并且時鐘頻率無法保持恒定。為了解決該難題,USB接口功率任意波發(fā)生器創(chuàng)新性地使用大容量同步高速先進-先出存儲器(first input first output,F(xiàn)IFO)作為SPI接口數(shù)據(jù)緩沖區(qū),實現(xiàn)了:1)USB接口下載波形數(shù)據(jù);2)FIFO以SPI協(xié)議格式存儲波形數(shù)據(jù);3)FIFO通過SPI接口控制DAC回放波形數(shù)據(jù)的過程,該過程通過上位機控制,無需任何嵌入式編程控制。系統(tǒng)結(jié)構(gòu)如圖1所示,F(xiàn)IFO將低速的SPI輸入指令轉(zhuǎn)換成高速的SPI輸出指令,控制AFE031內(nèi)部的DAC產(chǎn)生信號并經(jīng)過PA放大輸出。AFE031及其外圍電路組成了與井下SDR發(fā)射機相同的核心硬件部分。
圖1 系統(tǒng)結(jié)構(gòu)圖
FIFO選用了美國IDT公司的IDT72V2111芯片,該同步FIFO芯片存儲深度為512 k,允許級聯(lián)擴展存儲深度,支持可擴展的9位數(shù)據(jù)存儲[11]。選用其中的3位數(shù)據(jù)來存儲所需的SPI通訊的過程信號。
上位機通過CP2130從USB接口轉(zhuǎn)換為SPI接口,通過FIFO與SPI接口的AFE031通訊。AFE031具有兩種通訊模式:一種內(nèi)部控制寄存器的讀寫操作;另一種是DAC輸出的只寫操作。對于功率任意波發(fā)生器來說,可以通過多次寫入內(nèi)部控制寄存器的操作來保證寫入正確,無需讀取操作。這樣從CP2130到AFE031的SPI操作就是單向數(shù)據(jù)流動,只需要CS、CLK及MOSI共計3條通訊線,滿足FIFO的先進先出的使用條件。上位機發(fā)來的非實時SPI指令先存儲在FIFO中,然后按照所需的時鐘頻率實時發(fā)送給AFE031,以此來設(shè)定AFE031內(nèi)部DAC特定的數(shù)據(jù)更新頻率,也即信號的采樣頻率。
CP2130具有多達11個輸出引腳,除了用于SPI操作外,部分引腳作為通用型輸入輸出引腳(general-purpose input/output,GPIO)控制FIFO的操作,其中GPIO.5可以復(fù)用為CLKOUT時鐘信號輸出,為FIFO提供穩(wěn)定的讀寫時鐘。
圖2給出了USB接口功率任意波發(fā)生器電路示意圖。
圖2 電路示意圖
CP2130內(nèi)部的穩(wěn)壓器將USB接口的5 VVBUS總線電壓降壓為3.45 V的VCC輸出,為所有數(shù)字電路供電。使用默認的輸出端口復(fù)用設(shè)置,GPIO.1和GPIO.1分別控制FIFO的寫入使能及讀出使能,可以通過分頻器設(shè)定輸出頻率的內(nèi)部振蕩器CLKOUT為FIFO提供讀寫時鐘,F(xiàn)IFO在該時鐘的上升沿完成讀寫操作。另外GPIO.6控制AFE031的DAC引腳,選擇確定SPI接口的通訊對象:AFE031的控制寄存器或DAC。
IDT72V2111的D0-2是FIFO的3位輸入,Q0-2是FIFO的3位輸出。FWFT/SI引腳接地選擇標準FIFO模式,OE引腳接地使能FIFO輸出。
AFE031的內(nèi)部PA由外部15 V的VPA供電。其內(nèi)部相關(guān)模塊如圖3所示。
圖3 AFE031相關(guān)功能模塊圖
當DAC引腳為高電平時,通過SPI數(shù)字接口可以讀寫控制寄存器;為低電平時,SPI接口直接同DAC通訊??刂萍拇嫫骺捎脕碓O(shè)定PA、Tx各部件的啟用與否等功能。
AFE031支持兩種工作模式:DAC及脈沖寬度調(diào)制(pulse width modulation,PWM)。前者使用內(nèi)置的10位DAC,后者通過PWM方式輸出模擬信號。當Enable1控制寄存器的第5位(DAC)設(shè)定為1時,DAC的輸出端與TxPGA的輸入端相連,此時使用信號失真度更低的DAC模式。對井下SDR發(fā)射機的低頻載波頻率,10位精度的DAC可以滿足需求。
Tx低通濾波器的截止頻率通過Control1寄存器設(shè)定為CENELEC B、C、D波段,其最高截止頻率為150 kHz左右[12]。濾波器的Tx_F_IN2引腳需要接地,輸出通過電容CIN直接與PA輸入端相連,也可以視需要使用外部低通濾波器。電容CIN為功放的傳輸函數(shù)引入了單極點的高通特性,其截止頻率fHP與由CIN和PA的輸入阻抗RPA(20 kΩ)共同確定。
(1)
其中:CIN單位為nF,RPA單位為kΩ,fHP單位為kHz。當CIN設(shè)定為3.3 nF時,高通截止頻率為2.4 kHz。
功放是高電壓、大電流的反相放大器,電壓增益固定為6.5 V/V,滿功率帶寬為300 kHz,將Enable1寄存器的第0位(PA)設(shè)定為1可以使能輸出,其輸出可以通過RSET電阻來設(shè)定電流限制。限定電流ILIM由下式確定:
(2)
其中:RSET單位為kΩ,ILIM單位為A。
DAC的輸出電壓需要與功放匹配,通過GAIN SELECT寄存器可以將TxPGA的增益設(shè)定為0.25、0.5、0.707及1 V/V。TxPGA的輸出與Tx濾波器的Tx_F_IN1引腳相連。
AFE031內(nèi)部的發(fā)射機PGA(TxPGA)、發(fā)射機濾波器(Tx濾波器)以及功放等均是通過運算放大器實現(xiàn)的,運放所需的偏置電路在圖3中未畫出。
IDT72V2111的FIFO讀寫頻率最高可達100 MHz,選用50 MHz的IDT72V211L20即可滿足需求。AFE031的SPI時鐘頻率最高20 MHz,內(nèi)部DAC的數(shù)據(jù)更新速率為1.5 MSa/s。CP2130內(nèi)部的SPI控制器時鐘頻率最高12 MHz;內(nèi)部USB控制器支持最高12 Mbps的USB2.0全速模式。
AFE031的DAC更新只需10位數(shù)據(jù),但CP2130的API庫僅支持字節(jié)發(fā)送。圖4給出了上位機連續(xù)發(fā)送2字節(jié)16位數(shù)據(jù)(0xFF、0x00)時CP2130 SPI輸出接口的波形示意圖,時鐘相位上升沿有效(CPHA=0),時鐘極性高電平有效(CPOL=0),AFE031會自動忽略多余的發(fā)送位。
圖4 連續(xù)2字節(jié)SPI寫入指令
CS信號低電平啟動SPI傳輸,在SCLK時鐘上升沿讀入MOSI數(shù)據(jù),發(fā)送2字節(jié)數(shù)據(jù)后CS重新拉高。其中:Tt是CS低電平時間,Ti是兩條連續(xù)指令的時間間隔,Tb、Tm與Ta是2字節(jié)數(shù)據(jù)的前、中及后的時間間隔。由于無法得到CP2130的內(nèi)部邏輯及時序關(guān)系,對CP2130允許的7種速率f,使用上位機連續(xù)發(fā)送指令,不使用SPI延遲,測得各個時間間隔如表1所示。
表1 不同速率的時間間隔測量
如果將CP2130 SPI的輸出直接與AFE031相連,在CS信號拉高的上升沿,AFE031的DAC完成數(shù)據(jù)更新。此時DAC的更新頻率fupdate由下式確定:
(3)
由此得到不同SPI時鐘速率的DAC更新頻率如圖5所示。
圖5 不同SPI時鐘速率的DAC更新頻率
由于Ti及Ta的限制,隨著SPI時鐘速率f的增加,DAC的更新速率增加變緩,在測量中發(fā)現(xiàn)Tt的測量值也愈發(fā)不穩(wěn)定(即指令周期不穩(wěn)定),意味著DAC更新速率的穩(wěn)定性變差。該結(jié)論與上文分析相同。作為緩沖的FIFO的引入解決了該問題。
首先,F(xiàn)IFO作為低速寫入與高速讀出的緩沖。將CP2130的SPI接口數(shù)據(jù)按照與SPI時鐘速率相匹配的較慢的寫入時鐘送入FIFO,然后以更快地讀取時鐘發(fā)送給AFE031以保證正常的DAC更新頻率。FIFO的讀取與寫入時鐘均選用復(fù)用為CLKOUT的CP2130 GPIO.5。需要注意的是,該時鐘是獨立的,與SPI的SCK并不同步。
其次,F(xiàn)IFO可以消除指令周期不穩(wěn)定的影響。選用最低的SPI時鐘速率93.75 kHz,F(xiàn)IFO的寫入時鐘CLKOUT為其4倍頻(375 kHz),這樣可以消除1/4周期內(nèi)的指令周期的抖動,體現(xiàn)在寫入FIFO的CS信號上升沿數(shù)據(jù)(DAC更新點)具有穩(wěn)定的重復(fù)周期,在FIFO數(shù)據(jù)回放時,只要保證讀取時鐘穩(wěn)定就能保證穩(wěn)定的DAC更新頻率。
美國芯科實驗室提供了上位機軟件所需的CP2130驅(qū)動及鏈接庫。對于Windows應(yīng)用,提供了SLAB_USB_SPI.dll API庫及C#演示程序,后者提供了大多數(shù)函數(shù)操作的示例代碼[13-14]。函數(shù)分為數(shù)據(jù)傳輸及控制傳輸兩類。
本設(shè)計使用VB.NET完成了功率任意波發(fā)生器的上位機軟件。對于SPI通訊設(shè)置,API庫提供了CP213x_SetSpiControlByte控制傳輸函數(shù)來設(shè)定SpiControlWord控制字,其功能如表2所示。
表2 SpiControlWord控制字
使用推拉輸出模式,電路中無需上拉電阻。
對于SPI寫入操作,API庫提供了CP213x_TransferWrite數(shù)據(jù)傳輸函數(shù),按照字節(jié)寫入。寫入成功則返回USB_SPI_ERRCODE_SUCCESS。
CP2130的GPIO引腳可以通過配置其內(nèi)部的一次性可編程只讀存儲器(OTP ROM)來配置,本設(shè)計使用默認配置。通過CP213x_SetGpioModeAndLevel函數(shù)設(shè)定引腳功能(輸入、開漏輸出及推拉輸出)和狀態(tài);通過CP213x_SetClockDivider函數(shù)設(shè)定CLKOUT的輸出頻率,由于設(shè)定的是分頻系數(shù),不能保證時鐘輸出的步長恒定,同時在USB接口掛起時無輸出。
功率任意波發(fā)生器的程序就是對FIFO的讀寫控制,讀寫時鐘都是CLKOUT,GPIO.1作為寫入使能(WEN),GPIO.2作為讀取使能。使能后就可以寫入或讀取3條SPI信號線的過程數(shù)據(jù)了。圖6給出了上位機軟件工作流程圖。
圖6 軟件流程圖
對于周期或重復(fù)信號,無需輸入完整的波形數(shù)據(jù),可以通過IDT72V2111的RT引腳(使用CP2130的其它空閑GPIO引腳)使FIFO中的單周期數(shù)據(jù)指令重新發(fā)送。作為FIFO讀出時鐘的CP2130內(nèi)部振蕩器CLKOUT的輸出頻率是通過分頻器設(shè)定的,為了實現(xiàn)任意輸出周期,需要在寫入波形指令前預(yù)先設(shè)定單周期波形數(shù)據(jù)的采樣率。IDT72V2111的重新發(fā)送響應(yīng)時間是確定且滿足設(shè)計參數(shù)要求的。
通過芯片選型及程序設(shè)計,本USB接口功率任意波發(fā)生器實現(xiàn)的最大輸出功率為6W,輸出精度10位,具有512 k的采樣深度,最高采樣頻率為500 kSa/s,滿足井下SDR發(fā)射機設(shè)計需求。
使用本USB接口功率任意波發(fā)生器可以產(chǎn)生所需的高達6 W的輸出波形,輸出功率由設(shè)定的輸出信號幅度確定。對于周期性信號,其周期可以通過CLKOUT的輸出頻率和每周期采樣點來確定。輸出頻率越高、每周期采樣點越低則輸出頻率越高。
通過預(yù)設(shè)不同的波形,使用示波器測量輸出,其輸出精度與設(shè)計一致,達到了設(shè)計要求。圖7給出了100 kHz正弦波整形后的輸出信號,輸出10 V峰峰值,負載50 Ω。
圖7 100 kHz正弦波信號輸出測量
該任意波發(fā)生器已經(jīng)用于高頻磁耦合有纜鉆桿系統(tǒng)研制,在井下信號的短距離無線傳輸?shù)腟DR大功率發(fā)射機設(shè)計中,實現(xiàn)了高集成度一次性硬件開發(fā)驗證的目的,縮短了研發(fā)時間,帶來較大的經(jīng)濟效益。
USB接口功率任意波發(fā)生器設(shè)計基于美國芯科實驗室的CP2130 USB-SPI橋接芯片、美國IDT公司的IDT72V2111同步FIFO芯片和美國德州儀器公司的AFE031電力線模擬前端芯片,無需嵌入式編程控制,能夠?qū)崿F(xiàn)上位機通過USB接口下載波形數(shù)據(jù)并通過功率放大器輸出波形信號的功能。CP2130橋接芯片實現(xiàn)了上位機USB接口與功率任意波發(fā)生器的通訊,F(xiàn)IFO芯片起到了匹配SPI通訊速度和穩(wěn)定DAC更新速率的作用。AFE031芯片及其外圍電路組成的高集成度核心硬件與井下SDR發(fā)射機完全一致,輸出功率高達6 W。該功率任意波發(fā)生器實現(xiàn)了一次性硬件開發(fā)驗證,縮短了井下SDR發(fā)射機的研發(fā)時間。