基于MCU+FPGA的CCB測試盒實現(xiàn)方法
引言
在石油測井行業(yè),csu系統(tǒng)中的地面系統(tǒng)先通過電纜遙測系統(tǒng)(CTS)與遙測儀通信,遙測儀再通過電纜傳輸系統(tǒng)(CCS)與井下儀進行通信。CTS—般采用經(jīng)過調(diào)制的雙相差分編碼實現(xiàn)通信,而CCS則使用3根信號傳輸線來實現(xiàn)通信,俗稱三總線。CCB測試盒則可以模擬地面系統(tǒng),它工作于兩種模式下,分別對遙測儀和井下儀進行檢測。
CCB測試盒通過預置撥碼開關(guān)的值來實現(xiàn)命令下發(fā),然后從遙測儀或井下儀獲取數(shù)據(jù),最后顯示在數(shù)碼管上。由于設計的比較早,原先的CCB測試盒里面通過使用大量的分離元器件來實現(xiàn)時序控制功能,這直接造成了測試盒體積龐大、設備笨重的缺點。而現(xiàn)在使用高度集成的FPGA芯片來實現(xiàn)電路中的邏輯控制功能,可大大簡化電路設計、降低設備成本。此外,釆用MCU+鍵盤+液晶顯示屏來實現(xiàn)人機交互,顯示的信息也更為豐富,輸入的方式更加靈活。
1 MCU+FPGA構(gòu)架
新的CCB測試盒方案采用的MCU+FPGA構(gòu)架系統(tǒng)框圖如圖1所示。本系統(tǒng)中的FPGA專注于邏輯控制和通信的編解碼,而MCU負責人機交互部分。MCU通過8位并口總線來訪問FPGA,可向FPGA中的DDATA存儲區(qū)寫入下發(fā)命令字,并向FrmLen存儲區(qū)寫入“幀長”,然后從UDATA存儲區(qū)讀取上行解碼數(shù)據(jù)。
為實現(xiàn)上述功能,MCU選擇帶有外部存儲器擴展接口的51類型處理器C8O51F5OO,該處理器采用流水線結(jié)構(gòu),時鐘頻率最高可達50MHz。由于該器件的大部分指令僅需要1?2個機器周期就可執(zhí)行,故該處理器的運算速度相對于標準的MCS51處理器提高了幾十倍。FPGA選擇ACTEL公司的現(xiàn)場可編程器件A3P060,它內(nèi)部包含約1500個通用邏輯單元,帶有4塊RAM(每塊4kb),釆用FLASH結(jié)構(gòu),故可省去外接配置芯片,也簡化了應用復雜性。
MCU與FPGA之間連接方式框圖見圖2所示。其中FPGA中各個存儲區(qū)塊的地址分配如下:
2 三總線接口
三總線接口有3根總線,分別是下行命令傳輸線DSIGNAL、上行時鐘傳輸線UCK、上行數(shù)據(jù)傳輸線UDATAGOo
DSIGNAL下行命令傳輸線是用于控制井下儀器工作狀態(tài)的信號線。該線傳輸?shù)氖蔷哂?00KBPS控制信號與100kHz時鐘信號的DCK混合信號。信號電平為0V,+1.2V,—1.2V三種。
UCK上行時鐘傳輸線可作為數(shù)據(jù)上傳的標準時鐘,其頻率為100kHz,電平為0V和十1.2V,在不進行數(shù)據(jù)傳輸時,此信號線為高電平。
UDADAGO為啟動信號和數(shù)據(jù)信號傳輸線,這是雙向傳輸?shù)男盘柧€。首先由地面下發(fā)啟動信號GO脈沖,接下來由井下儀將數(shù)據(jù)準備好,在GO脈沖后400”,地面下發(fā)出的UCK時鐘作用下,井下數(shù)據(jù)通過UDATAGO信號線上傳。GO的電平為3.6V,脈寬為10”,周期為20ms;UDATA的電平是0V?﹢1.2V。此波形圖如圖3所示。
由于DSIGNAL信號是雙極性信號,需要由兩路 數(shù)字信號分別控制正負電源導通來實現(xiàn),這里使用DSigP和DSigN來分別控制正、負電源的導通。下面是用Verilog語言編寫的、可產(chǎn)生DSigP、DSigN 的FPGA程序代碼:
UCK信號的產(chǎn)生比較簡單,使用100kHz的時鐘進行門控就可以產(chǎn)生,只是要注意門控信號應該在主時鐘的下降沿產(chǎn)生,否則會產(chǎn)生毛刺。
考慮到篇幅限制,這里就不列出UCK生成和UDATA數(shù)據(jù)接收的代碼和仿真波形了。
3 雙相碼接口
當CCB測試盒掛接井下遙測儀進行檢測工作的時候,測試盒與遙測儀之間可通過電纜調(diào)制信號進行通信,這種調(diào)制信號進行解調(diào)就變成了雙相編碼信號。測試盒掛接遙測儀和測試盒掛接井下儀采用的是一樣的工作方式,而僅僅是通信方式不一樣。雙相碼的編碼特征是:比特邊界信號跳變,比特中間“1”變“0”不變,圖5所示是其雙相碼的編碼特征波形。
雙向碼解碼過程的具體代碼如下:
雙相碼接口的仿真結(jié)果如圖6所示。
4 測試盒人機界面
原先的測試盒采用6段數(shù)碼管來顯示命令和接收的數(shù)據(jù),并采用撥輪來預置命令。采用這種方式不光電路中的連接線十分繁瑣,而且功能上也不夠靈活。現(xiàn)在采用液晶顯示模塊,可以同時顯示很多內(nèi)容,而使用矩陣鍵盤不光可以輸入命令字,而且可以用多余的碼字組合實現(xiàn)特殊的功能,鍵盤和液晶顯示屏的組合可以在實現(xiàn)原有功能的基礎上使測試盒增添許多新的特色。
測試盒中的顯示屏可選用金鵬電子有限公司的OCMJ5X10B液晶模塊,該模塊的點陣大小為160X80,模塊內(nèi)部含有GB231215X15中文字庫,并支持光標功能,可通過并口與主機通信。
按鍵可采用4X4矩陣鍵盤直接將鍵盤的8個輸出端連接到MCU的一個并行端口上(需要加上拉電阻),在有鍵按下時,相應的行與列端口會變成低電平,這樣,通過查找鍵碼表格,就可以判斷出按鍵的值,按鍵的編碼如表1所列。
由于按鍵過程中,不可避免地會產(chǎn)生抖動。為了避免由于按鍵抖動產(chǎn)生誤判的現(xiàn)象,本設計使用了一種軟件消抖的方法。
一般情況下,鍵按下過程中都會產(chǎn)生幾到十幾毫秒的抖動,而鍵維持按下的狀態(tài)時間至少大于20ms,所以,可以利用MCU的20ms定時中斷去檢測按鍵的狀態(tài)。操作時可以設置4個變量,即上一個周期的按鍵狀態(tài)Key_before、這個周期的按鍵狀態(tài)Key_now、先前有效按鍵狀態(tài)Key_N-l和當前判定的有效的按鍵狀態(tài)Key_N,這4者之間的關(guān)系如下:
在定時中斷程序中實現(xiàn)上面3個公式,便可以通過程序檢測出有效的按鍵狀態(tài),然后再進入按鍵處理程序中去進行相應的功能處理。以往人們消除按鍵抖動時,主要是通過RS觸發(fā)電路的方法,但那樣會增加很多額外的硬件成本,而本文所介紹的這種軟件定時消抖,不僅消抖可靠,而且效率高,容易實現(xiàn)。
5 結(jié)語
本文給出了一種基于MCU+FPGA設計的CCB測試盒,詳細地闡述了測試盒中的三總線接口、雙相碼接口的FPGA實現(xiàn)方法,然后介紹了測試盒的人機交互部分,其中重點分析了鍵盤按鍵軟件定時消抖的原理。這種新型的測試盒不僅具有體積小巧、外形美觀的特點,而且成本也得到很大的降低,同時它還具有可升級更新功能的特點,具有很大的靈活性。