吳 成
(大慶鉆探工程公司鉆井工程技術(shù)研究院鉆井儀器研究所,黑龍江 大慶 163413)
開發(fā)儀器設(shè)備需要大量的資金、時(shí)間和人力等資源。如果開發(fā)的儀器被競爭對手破解甚至復(fù)制,就會(huì)嚴(yán)重影響企業(yè)的市場競爭力。由此,企業(yè)的知識(shí)產(chǎn)權(quán)保護(hù)工作,不應(yīng)停留在法律層面上,還應(yīng)該在開發(fā)的儀器本身采取必要的措施,也就是提高儀器的逆向工程的成本。
因?yàn)殂@井儀器需要長時(shí)間工作在高溫、高壓、高震動(dòng)環(huán)境中,所以,儀器的處理器性能較常溫設(shè)備會(huì)差一些,儀器通訊設(shè)計(jì)也需要考慮從中斷恢復(fù)的問題。
本文將設(shè)計(jì)一種通訊協(xié)議,其時(shí)序、通訊格式和加密方式與通用的通訊協(xié)議不同。
本設(shè)計(jì)使用CPLD處理通訊時(shí)序,理由如下:
(1)CPLD 內(nèi)置配置電路的信息不易讀取,而FPGA的外接配置芯片可以直接讀取;
(2)通訊時(shí)序的實(shí)時(shí)性要求較高,單片機(jī)和DSP無法勝任;
(3)處理通訊時(shí)序所需的資源不多,CPLD 處理通訊時(shí)序時(shí),還可以同時(shí)完成其他任務(wù)。
主機(jī)和從機(jī)的通訊,是在同一條線上實(shí)現(xiàn)的半雙工通訊,通訊接口外圍電路如圖1所示。需要考慮的實(shí)際問題和解決方法有:
圖1 通訊接口外圍電路
(1)信號(hào)沖突:如果通訊雙方同時(shí)向總線發(fā)送數(shù)據(jù),就會(huì)使引腳的電流過大,造成損壞或燒毀芯片。電路設(shè)計(jì)時(shí),為通訊引腳串入限流電阻。
(2)通訊線破損:鉆井施工的長時(shí)間高震動(dòng),會(huì)破壞線纜絕緣保護(hù)層,導(dǎo)致總線接觸到殼體或其他線纜,導(dǎo)致引腳的電流過大。電路設(shè)計(jì)時(shí),為通訊引腳串入限流電阻。
(3)通訊線靠近其他大功率信號(hào)線:大功率信號(hào)通過容性耦合和感性耦合,在鄰近的其他線纜上產(chǎn)生干擾信號(hào)。電路設(shè)計(jì)時(shí),使用一階RC網(wǎng)絡(luò)對通訊信號(hào)進(jìn)行平滑濾波。考慮到RC網(wǎng)絡(luò)對信號(hào)的延遲,需要根據(jù)電路調(diào)試情況選擇電容。
(4)通訊中斷:鉆井施工的長時(shí)間高震動(dòng),導(dǎo)致通訊線瞬時(shí)接觸不良,將使正在進(jìn)行的通訊中斷。由于多數(shù)CPU要求芯片引腳不能懸空,所以需要為通訊引腳提供一個(gè)確定的狀態(tài)。電路設(shè)計(jì)時(shí),使用上拉電阻,使總線和通訊引腳提供默認(rèn)的高電平。
一些標(biāo)準(zhǔn)設(shè)備,如邏輯分析儀,可以很方便地分析和破解標(biāo)準(zhǔn)通訊協(xié)議,例如SCI、SPI和CAN等。儀器自定義通訊協(xié)議,迫使競爭對手投入人力解析,將提高破解成本。
設(shè)計(jì)實(shí)例中,通訊雙方使用CPLD作為接口芯片,CPLD 的時(shí)鐘頻率為12MHz,每50 個(gè)時(shí)鐘周期進(jìn)行一次總線信號(hào)采樣。通訊格式:
(1)幀起始標(biāo)志:所有的通訊均由主機(jī)發(fā)起,幀起始標(biāo)志的時(shí)序?yàn)?00*3個(gè)時(shí)鐘周期高電平-200*3個(gè)時(shí)鐘周期低電平-200*3 個(gè)時(shí)鐘周期高電平-200*3 個(gè)時(shí)鐘周期低電平;
(2)數(shù)據(jù)位格式:邏輯1的時(shí)序,為200個(gè)時(shí)鐘周期高電平-200 個(gè)時(shí)鐘周期低電平;邏輯0 的時(shí)序,為200個(gè)時(shí)鐘周期低電平-200個(gè)時(shí)鐘周期高電平;
(3)應(yīng)答標(biāo)志:僅邏輯1為有效應(yīng)答;
(4)主機(jī)向從機(jī)發(fā)送命令和數(shù)據(jù)的通訊格式(時(shí)序如圖2所示):
圖2 主機(jī)向從機(jī)傳送命令、數(shù)據(jù)的通訊格式時(shí)序圖
①Q(mào)uab1 主機(jī)向從機(jī)發(fā)送幀起始標(biāo)志,并等待從機(jī)應(yīng)答。若從機(jī)應(yīng)答超時(shí),則本次通訊失敗。
②從機(jī)檢測到有效的幀起始標(biāo)志后,向主機(jī)發(fā)送應(yīng)答標(biāo)志。
③主機(jī)在規(guī)定的時(shí)間內(nèi)檢測到有效的應(yīng)答標(biāo)志后,向從機(jī)發(fā)送數(shù)據(jù)。若主機(jī)應(yīng)答超時(shí),則本次通訊失敗。
④從機(jī)接收數(shù)據(jù),同時(shí)進(jìn)行數(shù)據(jù)位有效性檢查和生成校驗(yàn)數(shù)據(jù)。并在數(shù)據(jù)接收完成后,發(fā)送應(yīng)答標(biāo)志。
(5)從機(jī)向主機(jī)發(fā)送校驗(yàn)結(jié)果的通訊格式(時(shí)序如圖3所示):
圖3 從機(jī)向主機(jī)傳送數(shù)據(jù)校驗(yàn)結(jié)果的通訊格式時(shí)序圖
①從機(jī)檢測到有效的幀起始標(biāo)志后,向主機(jī)發(fā)送應(yīng)答標(biāo)志。
②從機(jī)向主機(jī)發(fā)送校驗(yàn)數(shù)據(jù)。
③主機(jī)接收校驗(yàn)數(shù)據(jù),并確認(rèn)校驗(yàn)數(shù)據(jù)有效后,發(fā)送應(yīng)答標(biāo)志。若主機(jī)應(yīng)答超時(shí),則本次通訊失敗。
④從機(jī)在規(guī)定的時(shí)間范圍內(nèi)檢測到有效的應(yīng)答標(biāo)志后,將執(zhí)行主機(jī)的命令,本次通訊成功完成。若主機(jī)應(yīng)答超時(shí),則本次通訊失敗。
(6)若雙方檢測到通訊失敗,將重新發(fā)起通訊。如果出現(xiàn)連續(xù)多次通訊失敗,就可以判定為儀器通訊穩(wěn)定性出現(xiàn)問題。在儀器起鉆后,應(yīng)檢查通訊線的可靠性。
數(shù)據(jù)加密,就是將明文通過密鑰轉(zhuǎn)換成無意義的密文,而接收方將密文解密還原成明文。鉆井儀器工作在高溫環(huán)境中,CPU的性能普遍不高。因此,在設(shè)計(jì)通訊協(xié)議時(shí),不能使用復(fù)雜的加密算法。
設(shè)計(jì)實(shí)例中,通訊加密的步驟如下:
(1)取得預(yù)設(shè)的密鑰:通訊加密預(yù)設(shè)的密鑰是一個(gè)字節(jié),8個(gè)字位不全為0或全為1,避免降低通訊協(xié)議的破解難度;
(2)加密明文第一個(gè)字節(jié):將明文的第一個(gè)字節(jié)與密鑰做異或,得到密文的第一個(gè)字節(jié);
(3)加密明文其他數(shù)據(jù):將明文的第二個(gè)字節(jié)與密文的第一個(gè)字節(jié)做異或,得到密文的第二個(gè)字節(jié)。與密文的第二個(gè)字節(jié)計(jì)算方法相同,即可得到密文之后的所有數(shù)據(jù)。
設(shè)計(jì)實(shí)例中,通訊解密的步驟如下:
(1)取得預(yù)設(shè)的密鑰:通訊解密的密鑰與加密的密鑰相同;
(2)解密密文第一個(gè)字節(jié):將密文的第一個(gè)字節(jié)與密鑰做異或,得到明文的第一個(gè)字節(jié);
(3)解密密文其他數(shù)據(jù):將密文的第二個(gè)字節(jié)與密文的第一個(gè)字節(jié)做異或,得到明文的第二個(gè)字節(jié)。與明文的第二個(gè)字節(jié)計(jì)算方法相同,即可得到明文之后的所有數(shù)據(jù)。
設(shè)計(jì)實(shí)例中,校驗(yàn)數(shù)據(jù)密文的生成步驟如下:
(1)取得預(yù)設(shè)的密鑰:校驗(yàn)數(shù)據(jù)使用的密鑰與數(shù)據(jù)加密和解密的密鑰不同。校驗(yàn)數(shù)據(jù)預(yù)設(shè)的密鑰的各數(shù)據(jù)不能是全0或全1,否則將降低通訊協(xié)議的破解難度;
(2)校驗(yàn)數(shù)據(jù)的明文:將明文逐字節(jié)進(jìn)行加和計(jì)算,將計(jì)算結(jié)果的最低字節(jié)作為校驗(yàn)數(shù)據(jù)的明文;
(3)校驗(yàn)數(shù)據(jù)的密文:將校驗(yàn)數(shù)據(jù)的明文與密鑰做異或,得到校驗(yàn)數(shù)據(jù)的密文。
設(shè)計(jì)實(shí)例中,校驗(yàn)數(shù)據(jù)明文是將密文與對應(yīng)的密鑰做異或得到的數(shù)據(jù)。
在調(diào)試過程中,內(nèi)部通訊在接線良好時(shí),通訊穩(wěn)定;在人工模擬通訊干擾時(shí),能很好地完成通訊任務(wù);在人工模擬通訊中斷時(shí),出現(xiàn)了總線沖突,未造成通訊引腳損壞和CPU工作不正常,并且成功地從錯(cuò)誤中恢復(fù)。
參考本文的設(shè)計(jì)思路,也可以設(shè)計(jì)出其他的通訊電路和通訊加密方法,為儀器的知識(shí)產(chǎn)權(quán)提供一個(gè)可行的保護(hù)方案。