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