Precyzyjne pomiary temperatury w systemach bazujących na układach SoC
Ciepło generowane przez zaawansowane, wielordzeniowe układy SoC (System-On-Chip) oraz przez układy programowalne stało się poważnym problemem w projektowaniu elektroniki. O ile napięcia wymagane przez te układy scalone do poprawnej pracy spadły już poniżej 1 V, pobory prądu są wciąż wysokie w sytuacjach, gdy wbudowane jednostki obliczeniowe działają z pełną szybkością.
Moc rozpraszana przez poszczególne układy SoC może znacząco się różnić, jako że poszczególne rdzenie aktywowane są w różnych momentach, a także z uwagi na zmiany w zapotrzebowaniu na wydajność obliczeniową na przestrzeni czasu. Rdzeń układu SoC może przejść od stanu chłodnego do gorącego w dosłownie kilka sekund, wraz ze wzrostem obciążenia wymuszonym przez oprogramowanie. Jeśli podzespół ten pracuje z dużymi prądami przez długi czas, temperatura krzemu wewnątrz obudowy może lokalnie dojść do poziomu, który spowoduje zadziałanie zabezpieczenia nadtemperaturowego i wyłączenie układu, a ponadto może wpłynąć na działanie i niezawodność komponentów znajdujących się w okolicy.
Monitorując temperatury rdzeni wrażliwych komponentów można uniknąć problemów spowodowanych przegrzaniem się, a to za sprawą zwiększania szybkości obrotów wentylatorów chłodzących lub poprzez ograniczenie częstotliwości taktowania, co spowoduje zmniejszenie się temperatury nagrzanego podzespołu. Oznacza to, że precyzyjne monitorowanie temperatury stało się niezbędne w urządzeniach korzystających z zaawansowanych układów SoC i FPGA (Field Programmable Gate Array). Natomiast to właśnie wbudowane w tym samym fragmencie krzemu sensory pozwalają precyzyjnie badać warunki temperaturowe, panujące w otoczeniu krytycznie ważnych rdzeni.
Czujniki temperatury wbudowane w rdzeń
Czujniki temperatury, zintegrowane z płytkami krzemowymi, na których wytworzony został dany układ scalony, korzystają ze specyfiki półprzewodnikowych złączy P-N. Dla dowolnego złącza P-N w danym miejscu, napięcie, jakie wytworzy się w poprzek złącza będzie miało wartość zależną od przepływającego prądu oraz od temperatury. Podatność na wpływ temperatury wynika z obecności w półprzewodniku nośników, które powstają właśnie z jej wzrostem. Przy stałym prądzie, wszelkie zmiany w napięciu będą wynikały ze zmian temperatury samego złącza. Zazwyczaj w półprzewodnikach napięcie na złączu spada wraz z temperaturą. Jednakże, jeśli przez złącze przepuści się dwa różne prądy, jeden po drugim, i w trakcie obu tych chwil zmierzy się napięcia, jakie wytworzą się na złączu, będzie można policzyć niewielką różnicę pomiędzy nimi. Różnica ta jest wprost i niemal liniowo proporcjonalna do bezwzględnej wartości temperatury złącza. Oznacza to, że może stanowić niezawodny sposób tworzenia półprzewodnikowych czujników temperatury.
W nowoczesnych procesach CMOS, w jakich wytwarza się złożone układy SoC, bardzo łatwo jest stworzyć także odpowiednie złącza P-N. W typowym przypadku czujnik temperatury jest wykonany w postaci bipolarnego tranzystora, w którym złącze baza-emiter stanowi potrzebną diodę P-N, a kolektor jest bezpośrednio przytwierdzony do płytki podłożowej.
Konieczność systemowego zarządzania temperaturą
O ile wiele komponentów, a szczególnie układy programowalne, może monitorować swoje własne temperatury, wiele problemów termicznych wymaga rozwiązań na poziomie systemowym. Przykładowo, regulacja prędkości obrotowej wentylatorów w obudowie powoduje zmiany w wydajności chłodzenia wszystkich komponentów systemu. Aby móc faktycznie kontrolować to wszystko z poziomu systemu, konieczne jest zdalne monitorowanie temperatur wielu różnych podzespołów.
W teorii, wbudowanie czujnika temperatury w układ SoC jest bardzo proste. Wystarczy stworzyć złącze stanowiące podstawę sensora, tak by było zlokalizowane w pobliżu obwodów, których temperatura nas interesuje. Następnie do tego złącza należy podłączyć dwa różne źródła prądowe, generujące prądy o innych wartościach. Przed i po przełączeniu pomiędzy poszczególnymi źródłami trzeba wykonać pomiary napięć, których wyniki należy podać na wejścia przetwornika analogowo-cyfrowego (A/C) i skorzystać z odpowiednich układów cyfrowych, które przeliczą wskazania na oszacowaną wartość temperatury.
Rysunek 1. Schemat blokowy zdalnego czujnika temperatury układu SoC
W praktyce wielu projektantów woli stosować zdalne czujniki, które mogą być bardziej niezawodne i dokładne. W przypadku wbudowywania czujnika w rdzeń SoC, konieczne jest bardzo precyzyjne dobranie parametrów dwóch różnych źródeł prądowych na każdy czujnik. Niestety, w wielu z obecnie stosowanych komercyjnie procesów technologicznych, używanych w produkcji układów cyfrowych, jest to niezwykle trudne do osiągnięcia. Znacznie lepszą dokładność da się uzyskać korzystając z precyzyjnego procesu produkcji układów dla sygnałów analogowych i cyfrowych. Co więcej, w takiej sytuacji potrzeba mniejszej liczby wyprowadzeń z układu SoC, gdyż wystarczy tylko dostęp do jednego z tranzystorów w okolicy, zamiast do dwóch.
Inną zaletą zdalnego mierzenia temperatury jest fakt, że da się monitorować więcej niż jeden gorący punkt za pomocą pojedynczego układu scalonego i automatycznie wyzwalać alarmy. Prosty, pojedynczy cyfrowy czujnik tego typu, taki jak układ MAX6642, pozwala na monitorowanej dwóch temperatur – własnej oraz znajdującego się w pobliżu układu SoC lub FPGA. Inne, podobne czujniki mogą mierzyć trzy czy nawet więcej zewnętrznych temperatur. Przykładowo układ MAX31730 oprócz swojej własnej temperatury, jest w stanie także dokonywać odczytów z trzech zewnętrznych miejsc. Jeśli wskazanie z któregokolwiek z tych miejsc przekroczy zaprogramowaną wartość graniczną, układ zmienia swój rejestr stanu oraz zapisuje najwyższą z odczytywanych w danej chwili temperatur. Następnie przekazuje informacje na ten temat za pomocą magistrali SMBus do głównego procesora kontrolującego pracę całego urządzenia.
Jeśli potrzebne jest monitorowanie jeszcze większej liczby punktów, projektant może sięgnąć po taki układ jak np. MAX6681, który pozwala na odczyty z nawet 7 zdalnych miejsc. W ten sposób można badać np. temperaturę pary układów FPGA ze zintegrowanymi diodami, czterech miejsc na płytce – poprzez zastosowanie osobnych tranzystorów – oraz temperaturę płytki w miejscu, w którym układ MAX6681 jest zamontowany. Alternatywnie można np. podłączyć do ośmiu układów MAX31730, komunikujących się jako jednostki podrzędne na wspólnej magistrali SMBus.
Rysunek 2. Przykład układu zdalnego pomiaru temperatury z dokumentacji MAX31730
Zapewnienie dokładności pomiarów temperatur rdzeni
O ile samo zdalne monitorowanie temperatury przynosi wiele korzyści z punktu widzenia projektu systemu, wiąże się też z pewnymi błędami i niedokładnościami, których źródła powinny być wzięte pod uwagę przez inżynierski zespół projektowy.
Szeregowa rezystancja pasożytnicza jest nie do uniknięcia w jakimkolwiek układzie i wpłynie na wskazania temperatury pobierane z czujnika, o ile nie zostanie zastosowany żaden mechanizm kompensujący. Weźmy za przykład konfigurację, w której pierwsze źródło prądowe podaje na złącze P-N 100 µA, a drugie 10 µA. Różnica pomiędzy napięciami, jakie wytworzą się dla jednego i drugiego prądu będzie proporcjonalna do logarytmu naturalnego z ilorazu pierwszego i drugiego z napięć. Faktyczna, bezwzględna wartość temperatury będzie wymagała przemnożenia przez stałą (która określa na ile zależność jest bliska idealnej i która normalnie przyjmuje wartość bliską 1) oraz pomnożenia przez współczynnik kT/q, gdzie k to stała Boltzmanna, a q to ładunek elektronu. Jeśli pasożytnicza rezystancja szeregowa wynosi 1 Ω, spadek napięcia na większym z prądów wyniesie dodatkowe 100 µV, a na mniejszym będzie to 10 µV. Oznacza to, że przesunięcie temperaturowe względem prawidłowego odczytu wyniesie 0,45 °C.
Jeśli rezystancja szeregowa jest znana, a często da się ją policzyć w oparciu o długości i szerokości ścieżek oraz parametry płytki drukowanej, wtedy można skorygować odczyt. Niektóre z czujników, takie jak MAX31730 i inne, produkowane przez firmę MAXIM, mają wbudowane automatyczne mechanizmy redukcji wpływu rezystancji, dzięki czemu nie ma potrzeby ręcznego kompensowania tego wpływu na odczyty.
Druga kwestia to stałą idealności zależności. Zazwyczaj jest ona bardzo bliska 1,01, ale jej dokładna wartość będzie zależeć od zastosowanego procesu technologicznego i budowy tranzystora, w związku z czym może stanowić potencjalne dodatkowe źródło błędów. Większość z układów scalonych, przystosowanych do zdalnych pomiarów temperatury, została zoptymalizowana pod kątem specyficznych wartości stałych idealności zależności. Maxim ma w swojej ofercie kilka układów, które zostały dostrojone dla wartości w okolicy 1,008, z jaką typowo mamy do czynienia w przypadku zaawansowanych procesów technologicznych, jakie najczęściej stosuje się do produkcji złożonych układów FPGA i SoC. Jeśli natomiast wiemy, że w danym układzie stała ta będzie miała inną wartość, można to we względnie prosty sposób uwzględnić w firmwarze, pod kontrolą którego pracuje główny procesor urządzenia.
Kolejnym źródłem błędów może być wbudowany w układ SoC tranzystor, służący jako element czujnika temperatury i cechujący się niewielkim wzmocnieniem prądowym lub niską wartością współczynnika beta. Jeśli wzmocnienie prądowe tranzystora jest bardzo niskie, stosunek prądu kolektora do prądu bazy może być zbyt odległy od stosunku prądu emitera względem prądu bazy. Spowoduje to błędy w odczytach temperatury – przykładowo, gdy stosunki te różnią się od siebie o 10 procent, błąd wskazań temperatury wyniesie około 12 °C.
W normalnej sytuacji, gdy czujnik temperatury jest zdalny, wykonany w specjalnie przystosowanym do tego procesie, zapewniającym wysokie wzmocnienia prądowe tranzystorów, nie będzie to stanowiło problemu. Jednakże tranzystory układów SoC są produkowane w procesach zoptymalizowanych pod kątem tranzystorów MOS, a nie bipolarnych, w związku z czym nie można zagwarantować, że pożądane wzmocnienie prądowe będzie faktycznie duże. W takich sytuacjach faktycznie lepiej sięgnąć po zewnętrzne układy scalone, monitorujące temperaturę, które wyposażone są w dodatkowe obwody kompensujące wartość współczynnika beta.
Rysunek 3. Błąd pomiaru w funkcji temperatury dla układu MAX6692Y i tranzystora o parametrze beta 0,3
Jeśli wartość współczynnika beta jest względnie stała dla przewidywanego zakresu prądów i temperatur, jego wpływ na dokładność pomiaru może być na tyle niewielki, że da się go pominąć. Podczas testów trzech przykładowych mikroprocesorów, wytworzonych w procesie technologicznym o wymiarze charakterystycznym 45 nm, w którym wartość współczynnika beta powstałych tranzystorów bipolarnych wynosiła około 0,3, błąd odczytu nie przekraczał ±1°C. Jednakże, jeśli niska wartość współczynnika beta będzie prowadzić do większych błędów, lepiej użyć układów monitorujących temperaturę zdalnie, takich jak MAX31730, MAX6693 lub MAX6581, które kompensują wpływ wartości współczynnika beta.
Dzięki układom z oferty firmy Maxim, które zostały opracowane i dostrojone do pracy w różnych scenariuszach wymagających zdalnego mierzenia temperatury, projektanci urządzeń elektronicznych mogą mieć pewność, że tworzone przez nich systemy zarządzania temperaturą reagują na faktyczne, rzeczywiste zmiany temperatury wewnątrz obudowy. A to wszystko prowadzi do uzyskania większej niezawodności, dłuższej żywotności produktu i zmniejszenia ryzyka niepożądanych wyłączeń systemu, spowodowanych nadmierną temperaturą.