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