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