有一次,客戶走進我的辦公室并帶著處理器電路板,并說它消耗了太多的電力,并耗盡了電池。由于我們自豪地宣稱處理器是超低功耗組件,因此舉證責任在我們這邊。我準備按照慣例一一切斷電路板上不同組件的電源,直到找到真正的電路板。那么不久之前我會想到類似的情況。這種情況的“罪魁禍首”是懸掛在電源軌道上并接地。在LED的末端之間,沒有限流電阻。 LED的最終故障是由于過流,或者僅僅因為它很無聊。我不完全確定,但這是一個離題。我們暫時不要談論它。
從經驗的角度來看,我做的第一件事是檢查電路板上閃亮的LED。但不幸的是,這一次沒有類似的希望表現出問題。另外,我發現處理器是主板上唯一的組件,沒有其他組件可以指責我。消費者投擲到最后的信息之一使我的情緒變得更糟:通過實驗室測試,他發現電力消耗和電池壽命達到預期水平,但在系統部署到現場后,電池電量迅速耗盡。這類問題是最難解決的問題,因為這些問題很難再現“發現的第一種情況”。這增加了數字世界中“模擬”的不可預測性和挑戰性,數字世界通常只是一個可預測,簡單的1和0世界。
從最簡單的意義上講,處理器功耗主要有兩個方面:內核和I / O。在抑制核心功耗時,我會檢查如下內容:PLL配置/頻率速度,核心電源軌和核心計算。有幾種降低核心功耗的方法,例如:降低核心頻率速度,或執行某些指令來迫使核心停止運行或進入睡眠/休眠狀態。如果您懷疑I / O會消耗所有功耗,那么我將重點關注I / O電源,I / O開關頻率以及它驅動的負載。
只有兩個方面,我可以探索。因此,這個問題與核心方面無關,所以它必須與I / O相關。此時,客戶表示他純粹使用處理器進行計算,并且I / O活動非常少。實際上,組件上的大多數可用I / O接口都未使用。
“等等!一些I / O沒有被使用,你的意思是這些I / O引腳”沒有使用“,你如何連接它們?”
“當然,我沒有把它們連接到任何地方!”
“就是這個!”
這是一個欣喜若狂的時刻,我終于找到了問題。盡管我沒有一路吶喊,但花了我一段時間來保持興奮,然后坐下來向他解釋。
典型的CMOS數字輸入與下圖相似:
006ednc20180420圖1典型的CMOS輸入電路(左)和CMOS電平邏輯(右)。
當此輸入以推薦的高電平(1)或低電平(0)電平驅動時,PMOS和NMOS FET一次導通一次,而不會同時導通。輸入驅動電壓具有稱為“閾值區域”的不確定區域,其中PMOS和NMOS可能同時部分導通,從而在電源軌和地之間形成泄漏路徑。當輸入處于浮動狀態并遇到寄生噪聲時,可能會發生這種情況。這解釋了客戶電路板上的功耗很高以及隨機發生高功耗的原因。
007ednc20180420圖2 PMOS和NMOS都部分導通,從而在電源和地之間形成漏電路徑。
在某些情況下,這可能會導致諸如“閉鎖”等情況,在這種情況下,組件會繼續吸收過量電流并最終導致灼傷??梢哉f,這個問題更容易找到和解決,因為直接的組成部分是“煙霧”,證據是確鑿的??蛻魣蟾娴膯栴}更難以處理,因為當您在實驗室的涼爽環境中進行測試時,這不是問題,但是當您將它發送到現場時,會造成很大的麻煩。
現在我們知道問題的根源了,很明顯,解決方案是將所有未使用的輸入驅動為有效邏輯電平(高電平或低電平)。但是,有一些小問題要注意??紤]到幾個CMOS輸入處理不當的情況,有必要擴大范圍,不僅要考慮完全斷開/浮動輸入,還要考慮似乎連接到適當邏輯電平的輸入。
如果只通過電阻將引腳連接到電源軌或地,請注意所使用的上拉或下拉電阻的大小。連同引腳的吸入/吸收電流一起,它可能會將引腳的實際電壓轉換到不合需要的電平。換句話說,有必要