井下儀器總線轉(zhuǎn)換功能模塊設(shè)計(jì)
引言
中國(guó)石油集團(tuán)測(cè)井有限公司在近幾年相繼開發(fā)了基于DTB和CAN這2套通訊協(xié)議方式的測(cè)井系統(tǒng),使7芯電纜傳輸速率分別達(dá)到了100 kbit/s和430 kbit/sc。由于目前這2套系統(tǒng)及相關(guān)儀器并存,必然增加儀器生產(chǎn)、使用環(huán)節(jié)的復(fù)雜度。因此.有必要開發(fā)一套綜合測(cè)試設(shè)備,能同時(shí)配接2套系統(tǒng)的井下儀器,用于測(cè)井儀器的自檢、維修和新產(chǎn)品的開發(fā),提高工作效率。
本文使用DSP和FPGA高集成度數(shù)字芯片構(gòu)成核心電路,通過DSP軟件開發(fā)和FPGA邏輯設(shè)計(jì),設(shè)計(jì)并實(shí)現(xiàn)了1個(gè)可用于DTB和CAN這2套通訊協(xié)議方式測(cè)井系統(tǒng)的井下儀器綜合測(cè)試設(shè)備。
1 系統(tǒng)設(shè)計(jì)
綜合測(cè)試設(shè)備系統(tǒng)架構(gòu)見圖1。該測(cè)試設(shè)備共提供了3個(gè)總線接口,分別為CAN總線接口、DTB總線接口和USB總線接口,CAN總線用于掛接430 kbit/s傳輸速率的儀器,DTB總線掛接100kbit/s傳輸速率的儀器,USB則是測(cè)試設(shè)備與計(jì)算機(jī)之間的接口。這些總線接口之間數(shù)據(jù)格式轉(zhuǎn)換分別由USB/CAN轉(zhuǎn)換模塊和CAN/DTB轉(zhuǎn)換模塊完成。
CAN/DTB轉(zhuǎn)換模塊用于實(shí)現(xiàn)CAN總線和DTB總線轉(zhuǎn)換。CAN總線上為該模塊分配1個(gè)m,使該模塊作為一個(gè)虛擬的430 kbit/s傳輸速率的井下儀器,掛接在CAN總線上。USB/CAN轉(zhuǎn)換模塊則是對(duì)CAN總線上掛接的430 kbit/s傳輸速率儀器的數(shù)據(jù)進(jìn)行轉(zhuǎn)換后,由USB總線送往計(jì)算機(jī),計(jì)算機(jī)中運(yùn)行儀器的測(cè)試軟件,可存儲(chǔ)、顯示、打印接收的數(shù)據(jù)。因此,DTB總線上掛接100 kbit/s傳輸速率的井下儀器數(shù)據(jù),需要先轉(zhuǎn)換到CAN總線,再轉(zhuǎn)換為USB總線后送人計(jì)算機(jī)。2個(gè)總線轉(zhuǎn)換模塊中,USB/CAN轉(zhuǎn)換模塊應(yīng)用很廣,而CAN/DTB轉(zhuǎn)換模塊則成為該測(cè)試設(shè)備開發(fā)的主要工作。
為能夠滿足上述CAN/DTB轉(zhuǎn)換功能需求,該接口轉(zhuǎn)換模塊的硬件采用DSP+FPGA的電路架構(gòu).由FPGA提供邏輯資源,實(shí)現(xiàn)DTB接口信號(hào)之間的時(shí)序關(guān)系。DSP則具有高速的軟件處理能力,可用于實(shí)現(xiàn)程序流程控制、數(shù)據(jù)緩存和CAN總線接口。兩者均為高集成度器件,都具備完善的開發(fā)手段,內(nèi)部程序可方便地進(jìn)行修改,設(shè)計(jì)上具有較大靈活性。在此核心電路的基礎(chǔ)上,配合其他外部電路,如RAM、DTB電平轉(zhuǎn)換模塊、CAN驅(qū)動(dòng)器等芯片,構(gòu)成完整的接口轉(zhuǎn)換模塊,其結(jié)構(gòu)見圖2。
圖1 綜合測(cè)試設(shè)備應(yīng)用架構(gòu)
圖2 CAN/DTB轉(zhuǎn)換模塊框圖
轉(zhuǎn)換模塊的數(shù)字電路部分均可由FPGA和DSP實(shí)現(xiàn),DTB電平變換部分主要通過模擬開關(guān)、三極管等模擬元件,將FPGA輸出的+3.3 V的數(shù)字信號(hào)轉(zhuǎn)換為符合DTB總線標(biāo)準(zhǔn)的信號(hào)形式,并提供一定的電流驅(qū)動(dòng)能力,其電路原理相對(duì)比較簡(jiǎn)單。DSP內(nèi)嵌的CAN控制器接口與CAN驅(qū)動(dòng)器MAX3050配合,可方便實(shí)現(xiàn)CAN總線數(shù)據(jù)的發(fā)送、接收。
2 FPGA的內(nèi)部邏輯功能設(shè)計(jì)
FPGA內(nèi)部邏輯主要用于實(shí)現(xiàn)DTB接口信號(hào)的產(chǎn)生和串行數(shù)據(jù)的接收工作,由DSIG信號(hào)發(fā)送單元、UCLK及GO信號(hào)發(fā)送單元、IJlDATA信號(hào)接收單元和存儲(chǔ)器接口單元等4個(gè)相對(duì)獨(dú)立的單元構(gòu)成(見圖3)。
圖3 FPGA內(nèi)部邏輯設(shè)計(jì)
DTB總線由3根56Ω同軸電纜線組成,用于井下遙測(cè)單元與井下儀器之間進(jìn)行雙向數(shù)據(jù)傳輸。這3根信號(hào)線分別是DSIG(向下信號(hào)線)、UCLK(上行時(shí)鐘線)和UDATA/GO(上行數(shù)據(jù)/啟動(dòng)線)。DSIG用于遙測(cè)單元給井下儀器發(fā)送命令,采用雙極性歸零碼,有3個(gè)電平:+1.2 V表示“1”,一1.2 V表示“0”,無信號(hào)時(shí)為0 V。UCLK為上傳時(shí)鐘線.信號(hào)幅度為十1.2 V,周期為10μs.井下儀器的數(shù)據(jù)是在UCLK的作用下,串行地將數(shù)據(jù)發(fā)送至上行數(shù)據(jù)線上。UDATA/GO是雙向信號(hào)線,每幀開始時(shí),井下遙測(cè)單元通過發(fā)送1個(gè)幅度為+3.6V的GO脈沖.通知井下儀器準(zhǔn)備開始傳送數(shù)據(jù)。320μS后,井下儀器在UCLK的上升沿,將采集的數(shù)據(jù)通過該信號(hào)線發(fā)送至遙測(cè)單元。
DSIG信號(hào)發(fā)送單元中.命令寄存器用于存放要送往井下儀器的命令和接收該命令的儀器的ID。然后將命令和儀器lD按照一定的幀格式進(jìn)行組織,加上幀頭幀尾以及校驗(yàn)等數(shù)據(jù)后,通過并/串轉(zhuǎn)換電路。將DSIG信號(hào)串行發(fā)送出去。
UCLK和GO信號(hào)發(fā)送單元按照DTB數(shù)據(jù)傳輸?shù)男盘?hào)時(shí)序要求產(chǎn)生UCLK和GO信號(hào)。DTB總線上掛接的井下儀器的數(shù)據(jù)傳輸均是按幀進(jìn)行,幀周期為80 ms。因此可以設(shè)計(jì)1個(gè)模為8 000、輸入時(shí)鐘頻率為100 kHz的計(jì)數(shù)器實(shí)現(xiàn)。在每幀的開始,即計(jì)數(shù)器為0時(shí)產(chǎn)生GO信號(hào),作為1幀數(shù)據(jù)傳輸?shù)拈_始,啟動(dòng)井下儀器的數(shù)據(jù)傳輸。時(shí)鐘寄存器由DSP寫入,存放每幀發(fā)往井下儀器的UCLK時(shí)鐘脈沖的數(shù)目,計(jì)數(shù)器依據(jù)該寄存器的值,產(chǎn)生UCLK的使能信號(hào)。
井下儀器在UCLK的上升沿時(shí)將采集的數(shù)據(jù)串行送人UDATA,UDATA信號(hào)接收單元?jiǎng)t在UCLK的下降沿對(duì)UDATA信號(hào)進(jìn)行采樣,并每8bit進(jìn)行1次串/并轉(zhuǎn)換,將數(shù)據(jù)并行輸入FIFO。具體設(shè)計(jì)時(shí),F(xiàn)IFO無需占用FPGA的內(nèi)部邏輯資源,而是由器件內(nèi)部提供的可配置存儲(chǔ)器實(shí)現(xiàn)。引出FIFO的半滿指示信號(hào)送往DSP的硬件中斷管腳,并通過地址譯碼電路,將FIFO映射到DSP的外部I/0讀地址。當(dāng)FIFO中的數(shù)據(jù)達(dá)到容量的一半時(shí),對(duì)DSP產(chǎn)生硬件中斷,使DSP進(jìn)入硬件中斷程序,DSP可循環(huán)讀取FIFO的I/o映射地址,即可將FIFO中的數(shù)據(jù)全部讀出。
需要注意的是,所有的FPGA產(chǎn)生或輸入的信號(hào)均需經(jīng)過電平變換后,才能送往DTB總線。存儲(chǔ)器接口單元利用DSP提供的總線信號(hào),實(shí)現(xiàn)FPGA與DSP之間并行的雙向數(shù)據(jù)傳輸。其基本方法是利用地址譯碼電路,將FPGA中實(shí)現(xiàn)的命令寄存器、狀態(tài)寄存器和FIFO等具有數(shù)據(jù)存儲(chǔ)功能的部件映射到DSP的外部I/O地址上,DSP通過讀寫I/O地址,可以對(duì)FPGA中存儲(chǔ)的數(shù)據(jù)進(jìn)行訪問。
評(píng)論