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