陳富濤
(杭州士蘭微電子股份有限公司,江蘇無(wú)錫 214072)
隨著集成電路的發(fā)展,微控制器的功能越來(lái)越強(qiáng)大,MCU由于其優(yōu)異的性價(jià)比,在工業(yè)自動(dòng)化、智能儀表、醫(yī)療器械等多個(gè)領(lǐng)域的應(yīng)用越來(lái)越廣泛和深入,有效地提高了生產(chǎn)效率和經(jīng)濟(jì)效益。然而,調(diào)試完成的MCU系統(tǒng)將其置入應(yīng)用現(xiàn)場(chǎng)后,往往出現(xiàn)這樣或那樣的問(wèn)題,系統(tǒng)變得不可靠、無(wú)法正常工作。產(chǎn)生這種情況的原因主要是由于現(xiàn)場(chǎng)環(huán)境復(fù)雜、各種各樣的干擾造成的,這些干擾入侵計(jì)算機(jī),使得MCU控制的可靠性和穩(wěn)定性大大下降,嚴(yán)重時(shí)會(huì)使整個(gè)測(cè)控系統(tǒng)運(yùn)行失常甚至癱瘓。可靠性是工業(yè)生產(chǎn)的生命,如何經(jīng)濟(jì)、有效地增強(qiáng)微控系統(tǒng)的抗干擾能力,提高系統(tǒng)運(yùn)行的可靠性、穩(wěn)定性始終是MCU應(yīng)用中一個(gè)重要的研究課題。
早期設(shè)計(jì)如參考文獻(xiàn)[3]一般在源頭消除干擾,如制作一些RC濾波結(jié)構(gòu)來(lái)消除一定頻段的干擾,但是由于干擾的多樣性,單純的濾波并不能完全將干擾擋在系統(tǒng)之外;干擾一定影響到系統(tǒng)內(nèi)部,可能導(dǎo)致系統(tǒng)功能紊亂或直接進(jìn)入死機(jī)狀態(tài)。參考文獻(xiàn)[5]就采用了這類(lèi)設(shè)計(jì)方法,通過(guò)對(duì)直流變頻空調(diào)室外機(jī)控制特性和電磁環(huán)境的分析,從硬件PCB設(shè)計(jì)、元器件選擇、關(guān)鍵信號(hào)走線和屏蔽、看門(mén)狗復(fù)位等進(jìn)行控制器抗干擾設(shè)計(jì),這些方法都是通用的方法,無(wú)法針對(duì)干擾信號(hào)檢測(cè)并做出針對(duì)性措施。參考文獻(xiàn)[6]采用了指令冗余和數(shù)據(jù)冗余等技術(shù)來(lái)處理干擾問(wèn)題,增加了MCU電路的成本。
本文從干擾原理和干擾途徑入手,在干擾進(jìn)入系統(tǒng)時(shí),對(duì)干擾造成的內(nèi)部異常進(jìn)行檢測(cè)與判斷,進(jìn)入特定等待狀態(tài),在干擾消失后再恢復(fù)正常工作,這樣可以大大降低系統(tǒng)在受干擾情況下功能出錯(cuò)的幾率,提高系統(tǒng)運(yùn)行的可靠性和穩(wěn)定性。
當(dāng)干擾進(jìn)入系統(tǒng)后,系統(tǒng)中進(jìn)入等待狀態(tài),直至干擾消除后重新恢復(fù)正常工作,即避開(kāi)干擾狀態(tài)工作,其基本工作原理如圖1所示。
圖1 干擾檢測(cè)與消除工作原理
此機(jī)制涉及以下模塊的設(shè)計(jì)與考慮。
原則上考慮選取系統(tǒng)中最敏感的信號(hào),即一旦受干擾,狀態(tài)會(huì)馬上發(fā)生變化,系統(tǒng)則可以避過(guò)所有干擾;但這樣會(huì)影響系統(tǒng)工作效率——即系統(tǒng)在某些干擾下仍然能正常工作,但是由于最敏感信號(hào)狀態(tài)的變化,系統(tǒng)會(huì)進(jìn)入等待狀態(tài)直至干擾解除。也可以考慮系統(tǒng)中的關(guān)鍵信號(hào),如此關(guān)鍵信號(hào)受干擾出錯(cuò)后,系統(tǒng)會(huì)等待其恢復(fù)正常后再繼續(xù)工作,這樣系統(tǒng)的效率相對(duì)來(lái)說(shuō)有所提高,即只有在干擾到系統(tǒng)關(guān)鍵信號(hào)出錯(cuò)后,系統(tǒng)才進(jìn)行響應(yīng);但是這樣的設(shè)計(jì)不能保證其他信號(hào)在干擾下都可以正常工作。所以在實(shí)際選擇檢測(cè)信號(hào)時(shí),需要權(quán)衡以上兩個(gè)因素,根據(jù)實(shí)際需要選擇最佳檢測(cè)信號(hào)。
此模塊設(shè)計(jì)要求能夠?qū)崿F(xiàn)全程監(jiān)控,比如整個(gè)正常工作過(guò)程的監(jiān)控,或整個(gè)復(fù)位過(guò)程的監(jiān)控。模塊必須能對(duì)檢測(cè)信號(hào)不斷地進(jìn)行判斷處理,并且能輸出一個(gè)穩(wěn)定的信號(hào),來(lái)告訴下一級(jí)響應(yīng)裝置檢測(cè)到的系統(tǒng)狀態(tài)。
此模塊必須能對(duì)檢測(cè)模塊輸出的信號(hào)進(jìn)行一個(gè)判斷,并且能輸出相應(yīng)的控制信號(hào)來(lái)實(shí)現(xiàn)系統(tǒng)正常模式與等待模式的切換。此模塊也需要能夠全程工作,不斷刷新前級(jí)的檢測(cè)信號(hào)來(lái)決定當(dāng)前系統(tǒng)的狀態(tài)。
系統(tǒng)等待狀態(tài)的定義可以很廣泛,如時(shí)鐘停振、系統(tǒng)休眠、插入等待時(shí)間、復(fù)位等,在使用過(guò)程中可以通過(guò)實(shí)際需要進(jìn)行選擇,在等待狀態(tài)以及系統(tǒng)狀態(tài)的切換條件下,都應(yīng)該能正常工作。
干擾檢測(cè)與響應(yīng)的主要思路為監(jiān)測(cè)復(fù)位過(guò)程,如與預(yù)期不符,重新復(fù)位直至與預(yù)期相符,再完成復(fù)位。系統(tǒng)收到復(fù)位信號(hào)后開(kāi)始進(jìn)入復(fù)位進(jìn)程,整個(gè)過(guò)程主要是系統(tǒng)寄存器的復(fù)位和預(yù)熱計(jì)數(shù)器的計(jì)數(shù)過(guò)程,在計(jì)數(shù)過(guò)程中會(huì)選擇3個(gè)計(jì)數(shù)點(diǎn)來(lái)分別完成:
(1)ROM的復(fù)位——ROMRST;
(2)系統(tǒng)配置字OPT1的讀入 (從ROM中特定區(qū)域讀取,對(duì)應(yīng)地址為1)——OPT1_WR;
(3)系統(tǒng)配置字OPT2的讀入 (從ROM中特定區(qū)域讀取,對(duì)應(yīng)地址為2)——OPT2_WR。
計(jì)數(shù)到一定數(shù)值后,系統(tǒng)就會(huì)結(jié)束整個(gè)復(fù)位。整個(gè)過(guò)程如圖2所示。
圖2 系統(tǒng)復(fù)位過(guò)程示意圖
針對(duì)此復(fù)位結(jié)構(gòu)的特點(diǎn),干擾檢測(cè)與響應(yīng)機(jī)制可以按如下思路進(jìn)行:
選擇系統(tǒng)中的關(guān)鍵信號(hào)——此設(shè)計(jì)中復(fù)位過(guò)程主要是涉及兩個(gè)系統(tǒng)配置字的寫(xiě)入,試想如果在整個(gè)復(fù)位過(guò)程中系統(tǒng)配置字的寫(xiě)入出現(xiàn)了錯(cuò)誤,則整個(gè)復(fù)位過(guò)程是不可靠的。如果可以檢測(cè)系統(tǒng)配置字中的內(nèi)容,就可以有效地判斷復(fù)位過(guò)程是否可靠,即配置字寫(xiě)入是否正確。這樣最直接的方法是在配置字中設(shè)定檢測(cè)位,作為干擾檢測(cè)信號(hào),如果與預(yù)設(shè)值相同,則復(fù)位過(guò)程有效。否則復(fù)位過(guò)程不可靠。干擾檢測(cè)模塊的設(shè)計(jì)主要考慮有:
(1)檢測(cè)的時(shí)機(jī),由于檢測(cè)的內(nèi)容是系統(tǒng)配置字中的檢測(cè)位,所以其檢測(cè)時(shí)機(jī)必須選擇在系統(tǒng)配置字寫(xiě)入后SYS_DEC;
(2)檢測(cè)結(jié)果的更新,在響應(yīng)裝置起作用后,調(diào)整當(dāng)前輸出結(jié)果。
響應(yīng)設(shè)計(jì)可以復(fù)用復(fù)位信號(hào)檢測(cè)裝置,即如果系統(tǒng)復(fù)位不可靠就重新復(fù)位,直至可靠復(fù)位。實(shí)際實(shí)施只要對(duì)其進(jìn)行改良,加入檢測(cè)結(jié)果信號(hào)的復(fù)位控制功能即可。
圖3 具有干擾檢測(cè)的系統(tǒng)復(fù)位過(guò)程示意圖
圖4顯示了一個(gè)正常復(fù)位的過(guò)程,在檢測(cè)時(shí)機(jī)來(lái)臨時(shí) (SYS_DEC高電平),系統(tǒng)配置字中的預(yù)設(shè)值SYSDEC1,SYSDEC2 與預(yù)設(shè)值相符(SYSDEC1=1’b1,SYSDEC2=1’b0),干擾檢測(cè)模塊輸出高電平SYS_DEC_RESULT,同時(shí)系統(tǒng)復(fù)位信號(hào)檢測(cè)裝置輸出復(fù)位信號(hào)SYS_RST_SIGNAL(為低電平時(shí)系統(tǒng)復(fù)位),系統(tǒng)正常復(fù)位結(jié)束后,標(biāo)志信號(hào)SYSRST拉高。
圖4 正常復(fù)位仿真結(jié)果
圖5為仿真系統(tǒng)受干擾后無(wú)法正確讀入SYSDEC2的情況,此時(shí)干擾檢測(cè)模塊會(huì)在SYS_DEC到來(lái)后判斷,并輸出一個(gè)低電平信號(hào)(SYS_DEC_RESULT)來(lái)通知響應(yīng)系統(tǒng)做出響應(yīng),此時(shí)系統(tǒng)復(fù)位信號(hào)SYS_RST_SIGNAL也會(huì)輸出一個(gè)低電平,對(duì)系統(tǒng)進(jìn)行復(fù)位,此時(shí)干擾檢測(cè)模塊會(huì)更新當(dāng)前的輸出SYS_DEC_RESULT為高電平,來(lái)等待下一次檢測(cè)的到來(lái)。
圖5 干擾導(dǎo)致系統(tǒng)無(wú)法復(fù)位
如系統(tǒng)沒(méi)有完成正常復(fù)位(跳過(guò)配置字寫(xiě)入等過(guò)程),而復(fù)位結(jié)束標(biāo)志SYSRST已完成了設(shè)置,那么系統(tǒng)此時(shí)是不可靠的,很可能出現(xiàn)功能紊亂。試想如果可以在系統(tǒng)復(fù)位結(jié)束——復(fù)位結(jié)束標(biāo)志SYSRST置高——后增加對(duì)系統(tǒng)狀態(tài)的判斷:如果系統(tǒng)處于復(fù)位結(jié)束狀態(tài),則系統(tǒng)開(kāi)始正常工作;如果系統(tǒng)為復(fù)位未結(jié)束狀態(tài),則系統(tǒng)重新進(jìn)入復(fù)位進(jìn)程狀態(tài)。這里系統(tǒng)狀態(tài)的判斷同樣可以借助配置字中的內(nèi)容進(jìn)行判斷,在未寫(xiě)入正確配置字前,系統(tǒng)的狀態(tài)被認(rèn)為復(fù)位未結(jié)束,寫(xiě)入正確的配置字后,系統(tǒng)的狀態(tài)被認(rèn)為是復(fù)位結(jié)束狀態(tài)。
圖6 異常狀態(tài)判斷流程圖
圖7為系統(tǒng)受到異常干擾后的仿真示例,系統(tǒng)復(fù)位結(jié)束標(biāo)志SYSRST變?yōu)楦唠娖?,但是此時(shí)系統(tǒng)還沒(méi)有正確寫(xiě)入配置字信息,即使復(fù)位后能工作,也是不正確的狀態(tài)。
圖7 異常狀態(tài)仿真示例
由于系統(tǒng)中加入了系統(tǒng)狀態(tài)檢測(cè)的結(jié)構(gòu),雖然SYSRST已變?yōu)楦唠娖剑窍到y(tǒng)狀態(tài)判斷信號(hào)SYS_DEC1仍為低電平(系統(tǒng)未結(jié)束復(fù)位狀態(tài)),此時(shí)系統(tǒng)時(shí)鐘SYSCK不能輸出,而且會(huì)重新進(jìn)入復(fù)位進(jìn)程,直至系統(tǒng)正確寫(xiě)入配置字信息,系統(tǒng)狀態(tài)判斷信號(hào)SYS_DEC1被設(shè)置為高電平(系統(tǒng)復(fù)位結(jié)束狀態(tài)),達(dá)到復(fù)位時(shí)間后SYSRST被設(shè)置為高電平,此時(shí)系統(tǒng)復(fù)位真正結(jié)束,系統(tǒng)時(shí)鐘SYSCK開(kāi)始輸出,系統(tǒng)進(jìn)入正常工作狀態(tài)。在這個(gè)實(shí)例中,SYS_DEC1(配置字檢測(cè)位)是干擾檢測(cè)信號(hào),系統(tǒng)時(shí)鐘不輸出與復(fù)位是設(shè)計(jì)中的系統(tǒng)等待狀態(tài)。
監(jiān)測(cè)正常工作狀態(tài)下芯片供電的穩(wěn)定性,如果供電上出現(xiàn)尖鋒干擾(系統(tǒng)又沒(méi)有復(fù)位)超過(guò)一定幅值,將會(huì)讓系統(tǒng)進(jìn)入等待狀態(tài),直至供電穩(wěn)定后重新恢復(fù)正常工作。流水線設(shè)計(jì),取指與譯碼分別在兩個(gè)指令周期完成,同一指令周期內(nèi)完成當(dāng)前地址的取指和上一地址的譯碼,有效提高指令執(zhí)行效率。系統(tǒng)在正常工作狀態(tài)下如果系統(tǒng)供電不斷受到干擾,內(nèi)部數(shù)字邏輯(工作頻率較高)的工作狀態(tài)勢(shì)必受到影響,甚至導(dǎo)致功能的紊亂。
通過(guò)檢測(cè)系統(tǒng)供電的波動(dòng)情況來(lái)決定系統(tǒng)的工作狀態(tài),避免系統(tǒng)在持續(xù)干擾狀態(tài)下工作。干擾檢測(cè)信號(hào)選擇系統(tǒng)電源。設(shè)計(jì)時(shí)需要注意此檢測(cè)機(jī)制要近電源放置,保證干擾在源頭就能被檢測(cè)到。干擾檢測(cè)模塊設(shè)計(jì)要求能對(duì)系統(tǒng)電源上的尖鋒變化作出響應(yīng),并能不斷刷新當(dāng)前結(jié)果為下一次檢測(cè)做準(zhǔn)備,結(jié)合以上特點(diǎn),此模塊設(shè)計(jì)如圖8所示。
圖8 干擾檢測(cè)模塊邏輯圖
在刷新信號(hào)(REFRESH)無(wú)效(置低)的情況下,當(dāng)電源上有尖鋒干擾時(shí)(設(shè)計(jì)指標(biāo):正尖峰干擾>1.4 VDD,1 ns以上;負(fù)尖峰干擾 <0.2 VDD,1 ns以上),系統(tǒng)檢測(cè)信號(hào)將被拉低,直至刷新信號(hào)(REFRESH)有效(置高),系統(tǒng)檢測(cè)信號(hào)再恢復(fù)高電平。
響應(yīng)模塊能在正常狀態(tài)下不斷刷新干擾檢測(cè)模塊輸出的信號(hào),并作出相應(yīng)的判斷,使得系統(tǒng)能在有干擾的情況下暫停工作,等待干擾解除后再恢復(fù)正常工作。此設(shè)計(jì)中系統(tǒng)暫停工作表現(xiàn)為指令指針停止計(jì)數(shù),系統(tǒng)進(jìn)入空操作狀態(tài)。綜上所述,此干擾檢測(cè)與響應(yīng)結(jié)構(gòu)如圖9所示。
圖9 干擾響應(yīng)流程圖
圖10顯示當(dāng)檢測(cè)信號(hào)(dectec_signal)置低后,系統(tǒng)指令指針(PC)將保持當(dāng)前值,同時(shí)系統(tǒng)執(zhí)行空操作(內(nèi)部指令數(shù)據(jù)保持全零)。
圖10 干擾響應(yīng)仿真示例
圖11顯示了檢測(cè)系統(tǒng)刷新信號(hào)(PC_LAT_CK2)無(wú)效(低電平)時(shí),系統(tǒng)源上出現(xiàn)負(fù)尖峰干擾(不引起系統(tǒng)復(fù)位的前提下),檢測(cè)裝置觸發(fā),檢測(cè)信號(hào)(eft_dec)被置低,響應(yīng)裝置收到檢測(cè)信號(hào)后,控制系統(tǒng)指令指針(PC)將保持當(dāng)前值,同時(shí)系統(tǒng)執(zhí)行空操作(內(nèi)部指令數(shù)據(jù)ROM_DATA保持全零),直到系統(tǒng)干擾檢測(cè)裝置中刷新信號(hào)(PC_LAT_CK2)有效后,檢測(cè)信號(hào)(eft_dec)被置高,若在下一個(gè)指令周期內(nèi)系統(tǒng)沒(méi)有受到干擾,將恢復(fù)正常工作。
圖11 干擾響應(yīng)和恢復(fù)仿真示例
MCU電路的可靠性不僅依賴于軟件的抗干擾性能,還要以硬件本身的正確設(shè)計(jì)和可運(yùn)行性為基礎(chǔ),以保證系統(tǒng)可靠運(yùn)行。本文針對(duì)微控制器(MCU)電路的抗干擾設(shè)計(jì)所提出的干擾檢測(cè)與響應(yīng)設(shè)計(jì),專(zhuān)門(mén)針對(duì)進(jìn)入系統(tǒng)內(nèi)部的干擾來(lái)實(shí)現(xiàn)監(jiān)控和響應(yīng),針對(duì)復(fù)位信號(hào)和系統(tǒng)內(nèi)部敏感信號(hào)進(jìn)行異常檢查,檢測(cè)到異常后進(jìn)入系統(tǒng)等待狀態(tài),干擾消失后再進(jìn)入正常工作狀態(tài),從而保證系統(tǒng)可靠穩(wěn)定地工作。利用本文提出的干擾檢測(cè)與響應(yīng)機(jī)制作為抗干擾設(shè)計(jì)的一個(gè)重要手段,大大降低了系統(tǒng)受持續(xù)干擾的幾率,提高了系統(tǒng)的可靠性,同時(shí)也可以應(yīng)用到大規(guī)模SoC中。