王文梁 仇 傲
(中海油田服務(wù)股份有限公司油田技術(shù)事業(yè)部,河北 三河065201)
隨著大規(guī)模集成電路和計(jì)算機(jī)技術(shù)的迅速發(fā)展,數(shù)字技術(shù)滲透到各個(gè)技術(shù)領(lǐng)域,以此為基礎(chǔ)的各種裝置層出不窮,傳統(tǒng)的外設(shè)一般基于PCI總線、PC-232總線或USB總線。USB總線的即插即用、真正的熱插拔、可總線供電、高性能和系統(tǒng)造價(jià)低等一系列優(yōu)點(diǎn)使得USB接口得到了廣泛的應(yīng)用[1]。
本文介紹了基于USB技術(shù)的便攜式石油測(cè)井測(cè)試系統(tǒng),該系統(tǒng)可用于對(duì)測(cè)井儀器進(jìn)行實(shí)驗(yàn)室測(cè)試、維修,保養(yǎng)。通常,也可以在新測(cè)井儀器研發(fā)階段用于調(diào)試。一般來說,石油測(cè)井系統(tǒng)包括地面采集系統(tǒng)、長(zhǎng)距離井下電纜、井下輔助通信設(shè)備和測(cè)井儀器。當(dāng)需要對(duì)測(cè)井儀器進(jìn)行測(cè)試、檢修時(shí),需要整個(gè)測(cè)井系統(tǒng),缺一不可。而通過該便攜式測(cè)試系統(tǒng),就可以直接對(duì)測(cè)井儀器直接進(jìn)行控制、數(shù)據(jù)通信和測(cè)試,省去了地面采集系統(tǒng)和井下電纜等設(shè)備,節(jié)省了設(shè)備資源。
該測(cè)試系統(tǒng)模擬油田井場(chǎng)測(cè)井作業(yè),實(shí)時(shí)給測(cè)井儀器發(fā)送指令,并接收測(cè)井儀器的信號(hào)數(shù)據(jù),并將數(shù)據(jù)通過USB接口輸出到PC機(jī),通過PC機(jī)的控制軟件顯示、存儲(chǔ)采集數(shù)據(jù)測(cè)試,用于測(cè)井儀器的研發(fā),實(shí)驗(yàn)室模擬調(diào)試。該測(cè)試系統(tǒng)主要有三個(gè)部分組成:USB2.0傳輸接口、DSP控制單元和測(cè)井總線接口單元,其總體框圖如圖1所示。
圖1 測(cè)試系統(tǒng)總體框圖
USB傳輸接口采用FTDI公司的第二代USB FIFO芯片F(xiàn)T245BM,它在片內(nèi)集成完整的USB協(xié)議功能,控制單元主要采用DSP芯片TMS320F2812實(shí)現(xiàn),控制邏輯電路在FPGA中完成。測(cè)井設(shè)備中線接口采用EDIB總線,該總線是中海油田服務(wù)股份有限公司自主研制的一種井下測(cè)井儀器總線,該總線采用主從結(jié)構(gòu),可以同時(shí)掛接多種測(cè)井儀器。
測(cè)試系統(tǒng)的工作流程是:PC機(jī)通過USB接口發(fā)送測(cè)井儀器命令,DSP控制單元對(duì)USB2.0功能設(shè)備接口進(jìn)行實(shí)時(shí)檢測(cè),當(dāng)檢測(cè)到PC機(jī)有命令下發(fā)時(shí),對(duì)下發(fā)的命令數(shù)據(jù)及參數(shù)進(jìn)行曼切斯特編碼,發(fā)給井下儀器。當(dāng)井下儀器要傳送數(shù)據(jù)給PC機(jī)時(shí),DSP控制單元對(duì)EDIB總線通道進(jìn)行檢測(cè),將檢測(cè)到的數(shù)據(jù)進(jìn)行曼切斯特解碼,并將解碼后的數(shù)據(jù)打包通過USB2.0接口傳給PC機(jī)。PC機(jī)通過儀器測(cè)試軟件來檢測(cè)井下儀器的各種功能。
在USB數(shù)據(jù)傳輸通信中,分USB主機(jī)設(shè)備和USB功能設(shè)備,USB系統(tǒng)的數(shù)據(jù)和命令的傳輸都是有USB主機(jī)來啟動(dòng)的,在整個(gè)數(shù)據(jù)通信中占主導(dǎo)地位,在同一時(shí)刻USB系統(tǒng)中只存在一個(gè)USB主機(jī)。USB功能設(shè)備通常是一個(gè)獨(dú)立的外部設(shè)備,可以和USB主機(jī)進(jìn)行數(shù)據(jù)和控制信息的交互,并未主機(jī)提供額外的功能,每個(gè)USB設(shè)備內(nèi)部都包含有描述器功能和資源需求的配置信息[2]。對(duì)于我們的測(cè)試系統(tǒng)來說,PC機(jī)是USB主機(jī)設(shè)備,測(cè)試系統(tǒng)是USB功能設(shè)備。
FT245BM是一款USB FIFO芯片,兼容USB1.1和USB2.0協(xié)議,具有塊傳輸和同步傳輸兩種傳輸方式,片內(nèi)具有384字節(jié)FIFO的發(fā)送緩沖器和128字節(jié)FIFO的接收緩沖器[3]??梢詫SB總線轉(zhuǎn)化為8位的處理器并口輸出,工作原理如圖2所示。
圖2 USB接口工作原理框圖
串行接口引擎(SIE)負(fù)責(zé)完成串行數(shù)據(jù)的解碼、差錯(cuò)控制、位填充與USB協(xié)議有關(guān)的功能。USB協(xié)議引擎管理USB設(shè)備控制端點(diǎn)的數(shù)據(jù)流,處理底層USB協(xié)議。
當(dāng)主機(jī)向USB設(shè)備發(fā)送數(shù)據(jù)時(shí),EMPTY信號(hào)為低,通知USB設(shè)備已有數(shù)據(jù)接收到,這時(shí)DSP可以從FT245BL中讀取主機(jī)發(fā)來的數(shù)據(jù),當(dāng)所有數(shù)據(jù)都讀完后,EMPTY信號(hào)變?yōu)楦唠娖健?/p>
當(dāng)USB設(shè)備向主機(jī)發(fā)送數(shù)據(jù)時(shí),如果FULL信號(hào)為低電平,數(shù)據(jù)被寫進(jìn)發(fā)送FIFO,如果發(fā)送FIFO已滿,F(xiàn)ULL信號(hào)變?yōu)楦唠娖剑@時(shí)禁止向FIFO寫數(shù)據(jù),待FIFO中的數(shù)據(jù)通過USB接口傳到主機(jī)之后,F(xiàn)ULL信號(hào)變?yōu)榈?,這時(shí)USB可以繼續(xù)向主機(jī)發(fā)送數(shù)據(jù)。FT245BL通過EEPROM接口外擴(kuò)一塊EEPROM,EEPROM用來存儲(chǔ)USB VID、PID、串行碼、產(chǎn)品描述符,還用來設(shè)置USB傳輸模式、遠(yuǎn)程喚醒模式。本設(shè)計(jì)中選用16位寬的EEPROM 93c46。
控制電路主要有DSP芯片和FPGA芯片構(gòu)成,DSP使用TI公司的TI公司的DSP芯片TMS320F2812,它是高性能的32位定點(diǎn)DSP,具有哈佛總線結(jié)構(gòu),統(tǒng)一的存儲(chǔ)器規(guī)劃,4M的線性程序地址,4M的線性數(shù)據(jù)地址,高效的代碼(C/C++和匯編語言)。片內(nèi)集成128K×16的Flash空間,可以反復(fù)擦寫,重復(fù)編程,用于存放程序代碼和數(shù)據(jù),在產(chǎn)品開發(fā)階段使用起來非常方便。
TMS320F2812內(nèi)部有18K×16的數(shù)據(jù)存儲(chǔ)空間,考慮到TMS320F2812的內(nèi)部數(shù)據(jù)存儲(chǔ)空間較小,為未來研發(fā)的更大數(shù)據(jù)量?jī)x器保留余量,DSP外擴(kuò)了512K×16的SRAM芯片,型號(hào)為IS61LV52116,用于存放井下傳送數(shù)據(jù)。DSP地址空間分配如下:
內(nèi)部資源分配:DSP內(nèi)部具有128K×16的Flash,占用空間是0x3D8000——0x3F7FFF,其中,0x3F6000——0x3F7F80作為用戶的程序代碼存放空間,0x3F7FF6——0x3F7FF8為引導(dǎo)到閃存的進(jìn)入點(diǎn)(這里有程序跳轉(zhuǎn)指令)。0x3F8000——0x3F8FFF為內(nèi)部RAM空間,作為程序代碼的運(yùn)行空間。
外部資源分配:F2812的外部接口可分為5個(gè)存儲(chǔ)器映射區(qū),本次設(shè)計(jì)使用了兩個(gè)存儲(chǔ)映射區(qū)。0x004000——0x005FFF為Zone1映射區(qū),實(shí)際中只使用了前16個(gè)地址單元作為USB模塊和曼碼編、解碼模塊的外部控制寄存器。0x080000——0x0FFFFF為Zone2映射區(qū),作為DSP外部擴(kuò)展數(shù)據(jù)區(qū),用于存放從井下儀器收到的采集數(shù)據(jù)。
DSP與FT245BM之間的通信主要靠8位數(shù)據(jù)線D0~D7以及讀寫控制線(RW、RD、EMPTY、FULL)來完成,這是USB芯片F(xiàn)T245BM作為DSP的一個(gè)外部設(shè)備,當(dāng)USB接口接收主機(jī)數(shù)據(jù)的時(shí)候,對(duì)于DSP來說就是一個(gè)讀外部FIFO數(shù)據(jù)的過程;當(dāng)USB接口向主機(jī)發(fā)送數(shù)據(jù)的時(shí)候,對(duì)于DSP來說就是一個(gè)向外部FIFO寫數(shù)據(jù)的過程。
FPGA芯片采用了ACTEL公司的APA600。它具有158個(gè)用戶I/0引腳,3.3 V的I/O電壓,內(nèi)核電壓2.5V,可生成同步/異步FIFO和SRAM。APA600可以產(chǎn)生不同頻率時(shí)鐘信號(hào),具有較大的存儲(chǔ)空間和豐富的I/O資源,可以完全滿足本項(xiàng)目對(duì)時(shí)鐘產(chǎn)生,邏輯控制和數(shù)據(jù)緩存的要求。
FPGA作用有兩個(gè),一是完成測(cè)井設(shè)備總線接口的邏輯控制,測(cè)井設(shè)備數(shù)據(jù)的編碼、解碼,用于和測(cè)井儀器進(jìn)行通信,二是完成DSP于USB接口之前的邏輯控制。
系統(tǒng)的軟件設(shè)計(jì)包括固件程序設(shè)計(jì)、驅(qū)動(dòng)程序設(shè)計(jì)和主機(jī)應(yīng)用程序設(shè)計(jì)。
USB固件程序主要完成USB協(xié)議處理和固件交換,目的是讓W(xué)INDOWS檢測(cè)和識(shí)別設(shè)備建立起正確的通信連接[4]。由于USB設(shè)備芯片F(xiàn)T245內(nèi)完全集成了USB協(xié)議引擎,不需要專門設(shè)計(jì)USB固件程序。
DSP固件程序主要用去檢測(cè)USB芯片內(nèi)FIFO標(biāo)志的狀態(tài),完成USB接口與測(cè)井儀器的通信,編程步驟如下。
(1)初始化,等待PC控制命令。
(2)檢測(cè)USB的接收FIFO是否為空,當(dāng)FIFO為非空時(shí),說明接收到PC機(jī)下發(fā)命令。
(3)對(duì)PC機(jī)下發(fā)命令進(jìn)行測(cè)井?dāng)?shù)據(jù)命令格式編碼,并下發(fā)給測(cè)井設(shè)備。
(4)等待接收測(cè)井設(shè)備的回傳數(shù)據(jù)。
(5)對(duì)測(cè)井設(shè)備回傳的數(shù)據(jù)進(jìn)行格式解碼。
(6)將測(cè)井設(shè)備數(shù)據(jù)通過USB發(fā)送到PC機(jī),當(dāng)USB設(shè)備的發(fā)送FIFO為非滿時(shí),向USB發(fā)送FIFO寫入測(cè)試設(shè)備的數(shù)據(jù)。USB接口芯片將自動(dòng)將數(shù)據(jù)發(fā)送給PC機(jī)。
USB芯片F(xiàn)T245BL的廠家提供兩種驅(qū)動(dòng)程序:VCP和D2XX驅(qū)動(dòng)程序。VCP驅(qū)動(dòng)程序?yàn)樘摂M串口程序,它將USB接口包裝成一個(gè)虛擬的232串口,最高傳輸速率為2.4Mbps。D2XX驅(qū)動(dòng)程序是標(biāo)準(zhǔn)的USB接口驅(qū)動(dòng)程序,最高傳輸速率為8Mbps。本設(shè)計(jì)中使用的是D2XX驅(qū)動(dòng)程序。
主機(jī)應(yīng)用程序采用LabWindows/CVI設(shè)計(jì)。安裝USB設(shè)備驅(qū)動(dòng)程序后,直接調(diào)用動(dòng)態(tài)連接庫函數(shù)可實(shí)現(xiàn)BUS端口的識(shí)別、打開、關(guān)閉和數(shù)據(jù)通信在驅(qū)動(dòng)程序的動(dòng)態(tài)連接庫中常用的函數(shù)如下:
(1)int OpenDevice(int device_num),用于連接USB設(shè)備,num表示所連接的USB設(shè)備個(gè)數(shù)。
(2)int CloseDevice(int device_num),用于關(guān)閉USB設(shè)備,num表示所連接的USB設(shè)備個(gè)數(shù)。
(3)int ReadDevice(int device_num,char*RdBuffer;unsigned long num),用于接收來自USB接口的數(shù)據(jù)
(4)void WriteDevice(int device_num,char*wrbuffer,ULONG num),用于向USB設(shè)備發(fā)送數(shù)據(jù)。
(5)void SetDevideTimeout(int device_num,ULONG R),用于設(shè)置USB設(shè)備的接收、發(fā)送超時(shí)時(shí)間。
(6)FT_Purge(FTHandle1,Mask),用于USB設(shè)備發(fā)送、接收數(shù)據(jù)緩沖的清空。
通過上述方法實(shí)現(xiàn)了主機(jī)軟件和測(cè)井儀器之間的通信,并使用測(cè)井儀器對(duì)該測(cè)試系統(tǒng)進(jìn)行了實(shí)驗(yàn)驗(yàn)證。圖3為基于USB接口的測(cè)井儀器測(cè)試系統(tǒng)裝置與采集波形,USB接口與PC主機(jī)連接,測(cè)井?dāng)?shù)據(jù)總線接口與測(cè)井儀器連接,測(cè)試系統(tǒng)在試驗(yàn)時(shí)掛接的測(cè)井儀器為數(shù)字聲波測(cè)井儀,圖中顯示的四道波形為數(shù)字聲波測(cè)井儀上傳的波形數(shù)據(jù),地面軟件采用將儀器采集的四道正弦波顯示出來。四組波形正確顯示了測(cè)井儀器采集的波形情況,實(shí)驗(yàn)表明該測(cè)試系統(tǒng)滿足了儀器測(cè)試的需要。
圖3 測(cè)試系統(tǒng)裝置與采集波形
[1]羅偉林,王立欣,毛遠(yuǎn).USB數(shù)據(jù)采集系統(tǒng)中DMA數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)[J].電子測(cè)量技術(shù),2008,31(6):121
[2]李英偉USB2.0原理與工程開發(fā)[M].北京:國(guó)防工業(yè)出版社,2007:7-8.
[3]Future Technology Devices International Ltd.DS245BL Version1.7[DB/OL].http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT245BL.pdf,2005
[4]張建鵬,解國(guó)明,李剛.基于ISP1581型接口電路的USB2.0接口設(shè)計(jì)[J].國(guó)外電子元器件,2005(9):7-10.