Utilizarea microcontrolerelor pentru a oferi un management economic sistemelor mari de calcul

18 DECEMBRIE 2007

Un sistem mare de calcul se bazează tipic pe unul sau mai multe procesoare avansate, o matrice poartă şi un procesor de semnal digital (DSP) sau un SOC (system-on-a-chip) potrivite aplicaţiei. Aceste dispozitive necesită adesea o infrastructură de suport complex: alimentarea cu tensiune trebuie să înceapă şi să se oprească în secvenţe; temperatura trebuie controlată; procesorul trebuie monitorizat pentru detectarea unor posibile erori sau excepţii. În figura 1 puteţi observa un sistem tipic.
La ora actuală sunt utilizate două abordări diferite pentru a oferi aceste periferice şi funcţii suport, selectabile în funcţie de volumul producţiei sistemelor. Pentru producţie în cantităţi mici, proiectanţii utilizează componente individuale. Acestea pot include dispozitive de secvenţiere a alimentării, un ceas de timp real, senzori de temperatură, dispozitive de management termic, EEPROM-uri seriale, convertoare analog-digitale (ADC), dispozitive de reiniţializare, temporizatoare de siguranţă watchdog şi multe altele. Acestea sunt adesea conectate la sistem printr-o magistrală serială, precum I2C™ sau SMBus™. Pentru o producţie de sisteme în cantităţi mai mari, dezvoltatorii lucrează adesea cu companii ASIC sau furnizori de semiconductoare pentru proiectarea unui dispozitiv dedicat.
Aceste abordări conduc din păcate la probleme din punct de vedere al versatilităţii sistemului, complexităţii şi costului. Prima metodă poate fi foarte complexă în ceea ce priveşte interconectarea dispozitivelor şi comunicaţia dintre acestea. Suplimentar, poate fi dificilă proiectarea unor interacţiuni certe între componente. De exemplu, în timpul unei închideri cauzate de motive termice, posibilitatea de a stoca în EEPROM parametrii de diagnostic, necesită ca procesorul principal să scrie pe EEPROM printr-o interfaţă I2C, înainte de închidere. Din punct de vedere al costului, această metodă solicită procurarea unei varietăţi de componente diferite.
A doua metodă este aplicabilă numai dacă numărul sistemelor vândute justifică timpul suplimentar consumat cu dezvoltarea dispozitivelor dedicate. De asemenea, astfel de dispozitive se bucură de versatilitate în adăugarea de caracteristici sau în schimbarea unor funcţionalităţi fără o reproiectare pe siliciu.
O alternativă la aceste două abordări este utilizarea unui mic microcontroler, care să realizeze şi să integreze unele dintre sarcinile anterior analizate. Multe microcontrolere pe 8 biţi nu necesită aproape nici o componentă externă pentru implementarea multor funcţii de sistem. Numeroase soluţii curente utilizează componente discrete pentru stabilirea parametrilor de operare, precum întârzieri sau nivele de tensiune. Cu un microcontroler, aceste opţiuni sunt cu adevărat programabile.
Acest lucru facilitează adaptarea la cerinţe de schimbări de sistem. Suplimentar, legarea împreună a unor secvenţe de evenimente devine foarte simplă. De exemplu, o condiţie de supracurent poate fi relaxată pe parcursul primelor câteva milisecunde, în care condensatoarele de bypass se încarcă, şi apoi poate fi reglată pentru operare normală. Microcontrolerul permite de asemenea implementarea unor algoritmi de control mai complecşi, precum o buclă de control PID (Proportional Integral Derivate) digital pentru îmbunătăţirea răspunsului dinamic al unui ventilator de răcire.

Managementul energetic

Figura 1
Un sistem de calcul tipic, incluzând periferice şi dispozitive de support

Creşterea performanţelor procesoarelor avansate aduce cu ea o complexitate mai mare a sistemului energetic. Aceasta implică mai multe nivele de tensiune ce trebuie gestionate în mod activ.

Figura 2 Conectarea unui controler mic la componentele de putere

Pornirea este un moment de solicitare intensă a secţiunii de comandă a unei surse de tensiune în comutaţie. Tensiunea de ieşire este iniţial zero, astfel încât eroarea de feedback este la nivel maxim. Aceasta conduce filtrul buclei la limită, care comandă tranzistoarele de comutaţie din secţiunea de comandă a sursei, în regimul maxim. Acest lucru continuă până când tensiunea de ieşire a sursei atinge valoarea sa nominală. Cu o sarcină capacitivă tipică în sisteme mari, problema este mai gravă datorită curenţilor tranzitorii mari necesari pentru încărcarea sarcinii.
Problema poate fi cu uşurinţă gestionată cu un circuit de pornire lină. În orice caz, cu câteva nivele de tensiune necesare pentru diferite componente, asigurarea că sursa porneşte în secvenţa corectă, iar creşterea se face cu viteza dorită, poate fi o sarcină dificilă. Există câteva modalităţi prin care un microcontroler poate fi interfaţat cu un convertor tipic DC-DC (Figura 2). Cea mai simplă variantă este legarea pe intrarea de shutdown disponibilă pe majoritatea dispozitivelor de acest fel. Prin aplicarea unui semnal PWM rampă pe pinul de shutdown al convertorului, microcontrolerul poate fi programat să controleze cât de repede porneşte sursa de alimentare. Acest lucru poate fi uşor reprodus pentru mai mult de o sursă, astfel încât microcontrolerul poate controla orice secvenţă sau viteză de creştere, inclusiv condiţii de rampă neliniare complexe. O alternativă o reprezintă trecerea semnalului PWM printr-un filtru trece jos pentru a genera o referinţă de tensiune analogică programabilă şi a regla nivelele de tensiune prin schimbarea tensiuni de referinţă.
Suplimentar condiţiilor de gestionare activă, precum pornirea soft a sursei de tensiune, un microcontroler poate monitoriza şi starea sistemului de alimentare şi poate raporta periodic rezultatele către procesorul central. Acest lucru este tipic realizat prin conectarea la un ADC onboard pentru funcţii generale de monitorizare, sau la comparatoare onboard pentru stabilirea unor nivele de declanşare sigure.
Rapoartele şi actualizările cu privire la stare sunt realizate prin protocoale de comunicaţie seriale. De aceea, procesorul principal poate primi din timp avertizări cu privire la erori potenţiale, indicând dacă trebuie începută o secvenţă de închidere, închidere a unor porţiuni de placă pentru a economisi energie şi pentru a putea realiza multe alte funcţii.

Management termic
Aproape toate sistemele calcul de înaltă performanţă necesită forme de management termic. Aceasta implică măsurarea temperaturii în diferite locaţii în carcasă, pe placă sau pe procesor şi ventilatoarele de răcire ale sistemului.
Interfaţa către ventilator are tipic 2-, 3- sau 4-fire, constând din tensiune, masă, comandă a vitezei şi reacţie de la senzorul de rotaţie. Controlul vitezei pentru ventilatoarele cu 2 fire este realizat prin variaţia puterii DC. Ventilatorul cu 3-fire acceptă un semnal PWM, unde factorul de umplere controlează viteza ventilatorului, sau oferă o ieşire de senzor de rotaţie cu control similar ventilatorului cu 2 fire.

Figura 3 Un microcontroler oferă un control mai bun al ventilatoarelor

Provocarea asociată cu ventilatoarele de răcire este datorată faptului că răspunsul în viteză al acestora la diferite metode de control este neliniar. De exemplu, comanda unui ventilator cu trei fire poate avea un factor de umplere de 50%, indicând faptul că ventilatorul trebuie să ruleze la 50% din viteza maximă RPM. Realitatea este însă că ventilatorul poate rula la 80% din viteza maximă RPM, rezultând un zgomot nedorit.
Pentru ventilatoare cu 4-fire, linia suplimentară oferă o reacţie de senzor cu efect Hall, care permite un control în buclă închisă a vitezei ventilatorului. Acesta permite un mai bun control al ventilatorului, dar tot necesită un dispozitiv de management termic pentru controlul ventilatorului.
Microcontrolerele mici oferă o soluţie eficientă de control a temperaturii şi vitezei ventilatorului. Capacitatea de programare şi modificare a algoritmilor de control termic, permit optimizarea procesului pentru diferite carcase şi plăci, fără modificarea hardware. Proiectanţii pot implementa bucle de control PID digitale cu scopul îmbunătăţirii răspunsului dinamic pentru controlul vitezei ventilatorului, precum şi controlul temperaturii. Figura 3 arată ce poate fi obţinut. Mai multe noduri de temperatură pot fi aduse către acelaşi microcontroler, iar el poate calcula răspunsul potrivit pentru multiple ventilatoare.
Interfaţarea cu un senzor de temperatură poate fi realizată analogic sau digital – ambele modalităţi fiind uşor de adaptat de către un microcontroler mic. Ieşirea unui termistor sau a unui senzor de temperatură cu ieşire analogică poate fi conectată direct la un ADC onboard. Senzorii de temperatură cu ieşire digitală pot fi conectaţi la un port serial onboard sau orice port de intrare standard al microcontrolerului. Interfaţarea cu un ventilator cu 3 sau 4 fire este uşor obţinută prin conectarea comenzii PWM de viteză la ieşirea PWM a microcontrolerului, sau o linie de I/O standard care poate fi programată să genereze un semnal PWM. Semnalul de reacţie de la traductorul de rotaţie este conectat direct la o intrare a microcontrolerului, precum o linie de I/O standard.

Funcţii periferice
Cele mai semnificative economii asociate cu utilizarea microcontrolerelor mici în această aplicaţie sunt date de capacitatea de a integra funcţii periferice suplimentare cu un cost suplimentar foarte redus.
De exemplu, multe microcontrolere au integrat EEPROM, care poate înlocui memoriile de sine stătătoare, adesea utilizate pentru memorarea numerelor seriale, datelor de diagnosticare şi a altor date relevante din sistemele mari. Microcontrolerul poate fi programat pentru emularea unui dispozitiv standard I2C sau SPI EEPROM, astfel încât interfaţarea software la EEPROM să nu necesite modificări.
O altă componentă comună în sistemele mari este ceasul de timp real. El poate fi de asemenea integrat în microcontroler pentru a emula dispozitive de ceas de timp real existente, fără schimbarea software-ului de interfaţare la ceas. Aici, plaja largă a tensiunii de operare a microcontrolerului oferă şi alt avantaj – el poate rula alimentat direct de la o baterie Litiu de 3V, ca sursă de alimentare de rezervă.
Microcontrolerul poate detecta căderea sursei de alimentare principale şi poate comuta pe un mod de operare de joasă putere. Acest lucru poate fi obţinut păstrând în funcţiune temporizatorul ce interfaţează un oscilator de 32 kHz, în timp ce microcontrolerul trece într-un mod inactiv (sleep) de joasă putere. Microcontrolerul se activează în fiecare secundă pentru câteva microsecunde pentru a actualiza temporizatorul, după care trece din nou în modul inactiv.
Printre funcţiile periferice care pot fi integrate pe un microcontroler pot fi menţionate blocuri de detecţie intruziune şi alte blocuri de uz general precum: convertoare analog-digitale, funcţii de interfaţare, funcţii de reiniţializare şi temporizatoare watchdog.

Proiectare software
În vreme ce programabilitatea microcontrolerului oferă numeroase avantaje, ea sporeşte sarcina ce revine proiectantului. Un firmware sigur este cheia pentru un sistem de încredere, datorită faptului că microcontrolerul în arhitectura sistemului alternativ va fi adesea singurul dispozitiv funcţional, şi trebuie să funcţioneze pe întreaga durată de viaţă a produsului (dacă este implementat un ceas de timp real cu baterie de rezervă).
Este recomandată planificarea minuţioasă a firmware-ului şi a resurselor pentru fiecare sarcină. Obiectivul este integrarea mai multor sarcini într-un singur dispozitiv. Aceasta necesită un firmware capabil de a gestiona multiple sarcini, aparent simultan, cu temporizare predictibilă şi repetabilă. Prima tendinţă este de a căuta un sistem de operare de timp real, dar obiectivul fiind reducerea costurilor, memoria program trebuie păstrată la un minim.

Figura 4 Sistemul revizuit, cu un microcontroler ce gestionează funcţii termice, energetice şi periferice

Problema poate fi rezolvată de un sistem simplu, bazat pe dispozitive de stare. Funcţii software compatibile sunt grupate şi codate împreună. Ele sunt apoi apelate secvenţial din interiorul unei bucle infinite. Timpul de pornire al buclei este fixat la un ceas hardware, astfel încât dispozitive de stare individuale pot implementa temporizatoare software bazate pe numărul de apelări ale dispozitivului de stare.
Comunicaţia dintre diferite dispozitive de stare şi periferice este gestionată de variabile RAM şi protocoale simple. Nivelele de prioritate solicitate de sistem sunt realizate de funcţii simple de întârziere sau amânare a execuţiei unor dispozitive de stare de prioritate redusă, în favoarea unora cu prioritate ridicată.
Pot fi de asemenea implementate cu uşurinţă funcţii de mare siguranţă. De exemplu, configurarea temporizatorului watchdog pentru a furniza o valoare un pic mai lungă decât durata buclei, va permite sistemului să răspundă rapid la un numărător de probleme în program, precum şi să identifice la reiniţializare dispozitivele de stare corupte. Suplimentar, aceasta permite sistemului să repornească orice dispozitiv de stare care nu are probleme la timpii de verificare. Natura multi-tasking a acestui sistem înseamnă, de asemenea, că trebuie făcute verificări periodice şi transparente (CRC) pe RAM-ul de date al sistemului, pentru a asigura detecţia rapidă a oricăror date corupte. Sarcinile de detecţie a erorilor şi de recuperare pot fi chiar incluse, pentru a permite detectarea şi recuperarea coordonată în urma condiţiilor de eroare.
Capacitatea microcontrolerului de a scrie pe memoria sa program, permite sistemului să descarce actualizări pe microcontroler, dacă este descoperită o problemă sau dacă este necesară actualizarea unor funcţii.
Figura 4 este o diagramă bloc, în care un microcontroler înlocuieşte multe dintre funcţiile prezentate în figura 1. Se poate observa singura conexiune I2C către microcontroler care emulează multe dintre celelalte componente, fără ca procesorul avansat să sesizeze diferenţa. În funcţie de sistem, interfaţa cu utilizatorul poate uneori fi integrată în microcontroler. În acest exemplu, interfaţa cu utilizatorul este încă externă.

Concluzie
Abordarea prezentată în acest articol nu va fi capabilă să realizeze toate funcţiile periferice în orice moment. S-ar putea să fie necesare încă dispozitive specializate. Oricum, utilizarea unui microcontroler în sisteme mari poate oferi o alternativă la soluţiile curente, generând costuri reduse, funcţionalitate incrementală şi o soluţie programabilă.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile necesare sunt marcate *

  • Folosim datele dumneavoastră cu caracter personal NUMAI pentru a răspunde comentariilor/solicitărilor dumneavoastră.
  • Pentru a primi raspunsuri adecvate solicitărilor dumneavoastră, este posibil să transferăm adresa de email și numele dumneavoastră către autorul articolului.
  • Pentru mai multe informații privind politica noastră de confidențialitate și de prelucrare a datelor cu caracter personal, accesați link-ul Politica de prelucrare a datelor (GDPR) si Cookie-uri.
  • Dacă aveți întrebări sau nelămuriri cu privire la modul în care noi prelucrăm datele dumneavoastră cu caracter personal, puteți contacta responsabilul nostru cu protecția datelor la adresa de email: gdpr@esp2000.ro
  • Abonați-vă la newsletter-ul revistei noastre