Dlaczego procesor marnuje energię? Oto jest pytanie…

Pytanie:

Dlaczego mój procesor pobiera więcej mocy, niż podano w karcie katalogowej?

Odpowiedź:

W moim poprzednim artykule opisałem problem urządzenia pobierającego zbyt małą moc (tak, to możliwe), co było przyczyną problemów. To jednak rzadko spotykana sytuacja. Częstszym problemem, z którym borykają się klienci, jest pobieranie przez elementy większej mocy, niż jest podane w ich karcie katalogowej.

Pamiętam, jak klient wszedł do mojego biura z płytką i procesorem, oznajmiając, że pobierają one zbyt dużą moc i wyczerpują baterię. Ponieważ my reklamowaliśmy ten procesor jako energooszczędny (ultra low power), musieliśmy udowodnić, że jest taki w istocie. Przygotowałem się do typowego badania polegającego na odcinaniu zasilania kolejnych układów w poszukiwaniu tego, który był przyczyną problemów. Jakiś czas wcześniej w podobnym przypadku winna była dioda włączona beztrosko między szynę zasilania i masę bez jakiegokolwiek rezystora ograniczającego prąd. Prawdopodobnie  zbyt wysoki pobór prądu doprowadził do spalenia tej samotnej diody – ale to już dygresja.

Mając w pamięci ten przypadek, w pierwszym momencie poszukałem diody LED świecącej intensywnie gdzieś na płytce. Jednak tym razem przyczyna nie była tak jasno widoczna – prawdę mówiąc, nie było żadnego innego układu, na który można by zrzucić winę. Sytuację pogorszyła informacja od klienta: pobór mocy i zużycie baterii było zgodne z oczekiwaniami podczas testów w laboratorium, natomiast baterie szybko się wyczerpywały po zainstalowaniu systemu w terenie. Tego rodzaju problemy są najtrudniejsze do rozwiązania, ponieważ kłopot stanowi już samo odtworzenie takiego zachowania. Tego rodzaju nieprzewidywalność najczęściej jest kojarzona z układami analogowymi i stanowi dodatkowe wyzwanie w przypadku układy cyfrowego, który zazwyczaj przetwarza bardzo przewidywalne wartości zer i jedynek.

W najprostszym ujęciu procesor składa się z dwóch domen pobierających prąd: w rdzenia oraz układów wejścia/wyjścia. Gdy zachodzi potrzeba sprawdzenia poboru mocy rdzenia, można zbadać takie rzeczy, jak konfigurację PLL i szybkość zegara, napięcia na szynie zasilania oraz czas, jaki procesor poświęca na obliczenia. Zawsze istnieją sposoby na minimalizację poboru mocy rdzenia – na przykład poprzez obniżenie częstotliwości zegara lub wykorzystanie specjalnych instrukcji, które zatrzymują pracę rdzenia czy też powodują przejście w tryb uśpienia lub hibernacji. Natomiast jeśli wysoki pobór mocy jest powodowany przez wejścia, warto zwrócić uwagę na zasilenia układów I/O, szybkość ich pracy oraz dołączone do nich obciążenie.

To były jedyne dwa obszary, które mogłem zbadać. Okazało się, że w rdzeniu nie było niczego podejrzanego. Zatem problem musiał tkwić w wyjściach I/O. W tym momencie klient wyjawił, że wykorzystywał procesor wyłączenie do obliczeń, a aktywność wyjść była minimalna. W praktyce nie wykorzystywał większości interfejsów I/O dostępnych w układzie.

  • „Zaraz! Nie używasz niektórych wejść. Zatem nie są one używane. Jak je podłączyłeś?”
  • „Oczywiście nie podłączyłem ich do niczego.”
  • „Aha!”

W tym momencie powinienem raczej krzyknąć „Eureka!”. Po chwili entuzjazmu zabrałem się za wyjaśnienie problemu.

Typowe cyfrowe wejście CMOS wygląda następująco:

Rys. 1. Typowy obwód wejścia cyfrowego CMOS (po lewej) i stany logiczne CMOS (po prawej)

Jeśli to wejście jest wysterowane wymaganym poziomem 0 lub 1, tylko jeden z tranzystorów MOSFET (PMOS lub NMOS) jest włączony – ale nigdy oba naraz. Występuje jednak pewna nieokreśloność napięcia wejściowego w zakresie progowym – dla takiego napięcia jednocześnie oba tranzystory NMOS i PMOS są częściowo włączone, co prowadzi do przepływu prądu między linią zasilania a masą. Takie zjawisko może wystąpić, jeśli wejście nie jest do niczego podłączone i zbiera szumy otoczenia. To tłumaczy wysoki pobór mocy płytki klienta oraz losowe występowanie tego problemu.

Rys. 2. Oba tranzystory PMOS i NMOS są częściowo włączone, powodując przepływ prądu między zasilaniem a masą

W pewnych sytuacjach może to doprowadzić do zjawiska znanego jako latch-up, w wyniku którego układ stale pobiera wysoki prąd i w rezultacie ulega spaleniu. Mogłoby się wydawać, że problem ten łatwo zidentyfikować i zdebugować, jeśli układ zaczyna dymić na twoich oczach. Jednak w praktyce problemy zgłaszane przez klientów były znacznie trudniejsze – często niezauważalne podczas testów w laboratoriach, natomiast powodujące duże kłopoty podczas pracy w terenie.

Rozumiejąc już pierwotną przyczynę problemu, możemy zdecydować się wysterowanie wszystkich nieużywanych wejść prawidłowym poziomem logicznym – niskim lub wysokim. Pozostaje tu jednak pewne niebezpieczeństwo. Przyjrzyjmy się kilku innym scenariuszom, w których niepoprawnie obsłużone wejścia CMOS powodują wystąpienie problemów. Jest to możliwe nie tylko w sytuacjach, w których wejścia są zupełnie do niczego nie podłączone, ale także, gdy wydaje się, że zostały podłączone do prawidłowego poziomu logicznego.

W przypadku prostego połączenia pinu z linią zasilania lub masą za pomocą rezystora należy zwracać uwagę na wartość tego ostatniego. Pod wpływem prądu płynącego przez wyprowadzenie mogłaby nastąpić zmiana napięcia widzianego przez pin do niepożądanego poziomu. Krótko mówiąc, wartość rezystora podciągającego lub zwierającego musi być odpowiednio duża.

W przypadku aktywnego wysterowania pinu należy z kolei upewnić się, że moc tego wysterowania jest wystarczająca do obciążenia CMOS. Jeśli ten warunek nie zostanie spełniony, przypadkowe szumy mogą okazać się silniejsze od sygnału i przełączyć pin w niepożądany stan.

Przyjrzyjmy się kilku przykładom:

1. Procesor pracujący poprawnie w laboratorium zaczyna się resetować podczas pracy w terenie pod wpływem szumu sprzęgającego się z linią RESET, która nie miała wystarczająco dużego rezystora podciągającego.

Rys. 3. Szum sprzęgający się z wejściem RESET podłączonego do małego rezystora podciągającego powoduje restart procesora

2. Można sobie wyobrazić sytuację, w której wejście CMOS jest podłączone do sterownika bramki MOSFET / IGBT dużej mocy, który w efekcie także włącza się w nieodpowiednich momentach.

Rys. 4. Szum silniejszy od słabego wysterowania wejścia CMOS powoduje zwarcie na linii wysokiego napięcia

Innym podobnym, choć nie tak oczywistym scenariuszem jest sytuacja, w której sygnały sterujące mają bardzo długie czasy narastania i opadania. Wówczas wejście może przez pewien czas znaleźć się w przejściowym zakresie napięcia, co prowadzi do najróżniejszych problemów.

Rys. 5. Długie czasy narastania i opadania na wejściach CMOS powodują chwilowe zwarcie obwodu w okresie przejściowym

Po zapoznaniu się z pewnymi potencjalnymi problemami na wejściach CMOS wszelkiego rodzaju, warto przypomnieć, że wiele układów dobrze sobie z nimi radzi dzięki samej zasadzie działania. Na przykład układy z przerzutnikami Schmitta na wejściach z natury lepiej obsługują sygnały zaszumione lub te o powolnych zboczach.

Niektóre z najnowszych procesorów w ofercie ADI uwzględniają te problemy i są wyposażone w specjalne środki zabezpieczające lub dostarczają bezpośrednich wskazówek projektowych, które gwarantują poprawne działanie. Na przykład karta katalogowa modelu ADSP-SC58x/2158x jasno określa, które piny mają wewnętrzną terminację lub układ logiczny gwarantujący, że stan pinu nie pozostanie nigdy nieustalony.

Rys. 6. Fragment specyfikacji układu ADSP-SC58x/2158x

Reasumując, w przypadku cyfrowych wejść CMOS zawsze dobrze jest zadbać o podłączenie niepodłączonych wyprowadzeń.

O autorze

Abhinay Patil, Analog Devices
Abhinay Patil dołączył do Analog Devices w roku 2003.Obecnie pracuje jako inżynier aplikacyjny w Bengaluru w Indiach.