Sistemi di supervisione dell’alimentazione

Il controllo della tensione di alimentazione nei sistemi digitali è diventato un aspetto molto importante che il progettista deve considerare con attenzione, soprattutto con gli attuali componenti elettronici, come FPGA e processori, che necessitano di più tensioni di alimentazione. Nel presente articolo verranno presentati i principali parametri che devono guidare il progettista nella corretta scelta del sistema di supervisione.

La funzione primaria di un circuito di supervisione è quella di assicurare che la tensione di alimentazione di un microprocessore, di un DSP o di una FPGA sia compreso all’interno dei valori corretti durante la fase di avvio, spegnimento e di normale funzionamento. Se tale tensione è inferiore rispetto al range operativo, si possono verificare errori nell’esecuzione del codice, danneggiamento della memoria e problemi di latch-up. Il supervisore ha il compito di monitorare costantemente la tensione di alimentazione del microprocessore e se tale valore scende sotto una certa soglia, provvederà al reset tramite un’uscita dedicata. Solo quando il valore di tensione rientra nel range di corretto funzionamento il  microprocessore riprenderà l’esecuzione del codice. In questi ultimi anni sono stati sviluppati sistemi con differenti tensioni di alimentazione (5V, 3.3V, 2.5V, 1.8V); spesso uno stesso sistema dispone di una tensione per il core ed un’altra per la logica integrata; all’avvio è importante che tali valori variino con un certo criterio (sequencing o tracking). Anche i  sistemi di supervisione hanno seguito questa evoluzione, di seguito verranno analizzati i principali parametri  che devono guidare  il progettista nella corretta scelta e dimensionamento del sistema di supervisione della tensione di alimentazione del proprio sistema.

Supervisori  multi-tensione

Il modo più semplice per generare un segnale di PoR (Power on Reset) è quello di monitorare una singola tensione (ad esempio, 3.3V oppure 5V), con lo svantaggio, nei sistemi dotati di più tensioni di alimentazione, di non aver sotto controllo l’intero sistema. Gli attuali circuiti permettono la supervisione di 2, 3 o anche 4 tensioni di alimentazione, sia con soglie preimpostare che programmabili tramite resistori esterni. La prima tipologia è generalmente disponibile con incrementi di soglia tra i 50mV ed i 100mV al di sotto della tensione nominale; quindi se si opta per una soluzione di questo tipo è importante prestare attenzione al part number dove viene indicato tale valore. Questi supervisori hanno il vantaggio  di non richiedere resistori esterni per programmare la tensione di soglia e quindi si risparmia anche in potenza dissipata. Se il valore da monitorare non rientra in quelli standard, allora è necessario ricorrere ai supervisori programmabili, che tramite il dimensionamento  di una o due resistenze esterne permettono di generare il valore di soglia desiderato; gli svantaggi di questa soluzione sono la maggiore superficie occupata sul PCB ed un maggior consumo di potenza. La figura 1 riporta lo schema di un supervisore singolo, mentre la figura 2 quello di un supervisore triplo.

Figura 1: schema di principio di un supervisore di tensione singola.

Figura 1: schema di principio di un supervisore di tensione singola.

 

Figura 2: schema di principio per la supervisione di tre differenti tensioni di alimentazione.

Figura 2: schema  di principio per la supervisione di tredifferenti tensioni di alimentazione.

Parametri caratteristici

Quando si analizza il datasheet  di un voltage supervisor è molto importante saper individuare i parametri fondamentali,  di seguito descritti.

Reset period

Il periodo di reset (reset period) è quel ritardo introdotto dal supervisore dopo che tutti i valori di alimentazione hanno superato le soglie impostate. Il valore tipico è 140ms. Durante questo tempo, il processore è tenuto in reset (quindi non esegue alcuna operazione). Sulla base delle specifiche del processore, tale valore può essere aumentato oppure diminuito. Il range da utilizzare è compreso tra 1ms e 1.2s. Terminato questo periodo il processore riprende ad eseguire il codice da una ben precisa locazione di memoria. Il reset period ha il compito di stabilizzare la tensione di alimentazione,  il quarzo e il phase-locked  loop (PLL) se presente. Ad esempio, per un processore con un quarzo 20MHz senza un PLL può essere utilizzato il valore di 140ms, mentre la presenza del PLL richiede necessariamente un aumento di tale un valore.

Reset  output

Si tratta della linea di uscita del supervisor che consente di effettuare il  reset del processore. Generalmente si tratta di un push-pull attivo basso e questo è adatto per la maggior parte dei dispositivi. In questo caso è necessario prestare attenzione al livello di tensione del pin reset output che deve essere compatibile con quello del micro. Un’altra possibilità è rappresentata da un uscita di tipo open-drain. Si tratta di una soluzione più flessibile rispetto alla precedente, che consente di effettuare il monitoraggio di più sorgenti di alimentazioni mettendo in OR il loro stato: se almeno una sorgente scende al di sotto del valore di soglia, allora sarà generato un segnale di reset. Lo svantaggio in questo caso è la necessità del resistore di pull-up, ma non si pone il problema del livello di tensione del pin reset del micro.

Negative-going transient immunity

Un aspetto chiave da considerare quando si procede alla progettazione di un sistema di supervisione dell’alimentazione è quello di evitare falsi riavvii del processore che potrebbero causare interruzioni dell’applicazione e quindi compromettere il normale funzionamento  dell’intero sistema. Questi falsi reset potrebbero essere causati da un’elevata precisione del supervisore. Questo problema è particolarmente sentito in ambienti altamente rumorosi. Per prevenirlo la maggior parte dei chip integra un sistema per filtrare le variazioni rapide della tensione di alimentazione, che verosimilmente possono ricondursi a glitch di rumore. La figura 3 riporta un grafico in cui è rappresentata la durata massima del transitorio (che non causa il riavvio) in funzione dell’entità (variazione al di sotto della soglia) della transizione stessa; tutti i valori oltre la curva rappresentata comportano un riavvio del sistema, mentre i punti inferiori sono considerati delle variazioni transitorie (quindi senza reset).

Figura 3 dettaglio del pin di reset di un tipico microcontrollore serie PICMicro (Un valore basso su questo pin provoca il riavvio del codice).

Figura 3: dettaglio del pin di reset di un tipico microcontrollore serie PICMicro (Un valore basso su questo pin
provoca il riavvio del codice).

Se, ad esempio, il valore della tensione di alimentazione scende di 10mV rispetto alla soglia (VTH) per meno di 100ms, allora il supervisore  non riavvierà il dispositivo  controllato. Da notare che i supervisori  con un alto livello di reiezioni dei transitori permettono di utilizzare alimentatori ad più basso costo (ovviamente, nell’ipotesi che il processore possa tollerare tali variazioni sull’alimentazione).

Watchdog  Timer

Il watchdog, spesso anche integrato all’interno del processore, ha il compito di controllare la corretta esecuzione del codice. Se il firmware si blocca in un loop causato da un bug o da un guasto hardware, il watchdog timer riavvia il processore, facendolo ripartire da uno stato noto. Questo, ovviamente, richiede anche una gestione firmware; è necessario, infatti, generare una transizione del pin di ingresso prima che il watchdog vada in timeout: questo indica che il processore non ha subito alcun blocco. La figura 4 riporta un esempio di interconnessione tra un µP ed un supervisor singolo con integrata la funzionalità di  watchdog (MAX6864).

Figura 4: tipica durata del transitorio in funzione della variazione rispetto al valore di soglia. Il grafico si riferisce al supervisore MAX6381.

Figura 4: tipica durata del transitorio in funzione della variazione rispetto al valore di soglia. Il grafico si riferisce al supervisore MAX6381.

La figura 5 chiarisce meglio il funzionamento del pin WDI.

Figura 5: il MAX6864 è supervisore con integrata la funzionalità di watchdog.

Figura 5: il MAX6864 è supervisore con integrata la funzionalità di watchdog.

Se il pin WDI rimane al valore alto oppure basso per un periodo oltre il timeout (tWD), allora il chip provvede a resettare il processore.  Per indicare che tutto è regolare, è necessario che il µP produca delle variazioni (fronte di salita oppure di discesa). Nel caso del MAX6864 è presente anche la funzionalità di reset manuale, tramite il pin MR (Manual Reset). Alcuni processori richiedono un tempo di inizializzazione più elevato di quello tipico, questo porterebbe il watchdog sempre in timeout ed il sistema  non riuscirebbe ad avviarsi. Per questo motivo sono disponibili alcune versioni di supervisori con un tempo iniziale prolungato.

Overvoltage monitor

In tutte le applicazioni mediche o in apparecchiature ad elevato grado di sicurezza è importante controllare anche condizioni di sovra tensioni, oltre che di sotto tensioni. Questi modelli di supervisori possono essere programmati (mediante resistori) in modo da generare un segnale di reset se il valore di tensione supera un certa soglia. Spesso si pone il problema di monitorare anche le tensioni negative, questo obiettivo può essere ottenuto sempre tramite l’overvoltage monitor, come illustrato nello schema in figura 6.

Figura 6: diagramma temporale del supervisore MAX6864.

Figura 6: diagramma temporale del supervisore MAX6864.

 

Figura 7: overvoltage supervisor utilizzato come controllo di tensioni negative.

Figura 7: overvoltage supervisor utilizzato come controllo di tensioni negative.

Power  sequencing

Per prevenire fenomeni di latch-up o per massimizzare l’affidabilità all’avvio, i sistemi multi tensione spesso richiedono che sia effettuato il sequencing  o il tracking delle tensioni del core (Vcore) e della logica di I/O (VI/O). Con il termine tracking si intende che le tensioni VI/O e Vcore devono aumentare insieme, mentre il se quencing indica che le tensioni VI/O devono stabilizzarsi prima della tensione del core. Quello riportato in figura 8 è un esempio di sequencing per un sistema con 2 tensioni di alimentazione (VI/O = 3.3V e Vcore = 2.5V).

Figura 8: schema a blocchi del MAX6864.

Figura 8: schema a blocchi del MAX6864.

In questo caso si utilizza un supervisore a tensione singola (3.3V). Quando la tensione sale oltre la soglia impostata, viene introdotto un ritardo e quindi abilitato il MOSFET a canale p (ad es. MAX6305 ÷ MAX6313). In altri casi, soprattutto quando le correnti in gioco sono elevate, è indispensabile prevedere un sequencer dedicato per ogni linea di alimentazione, come quello riportato in figura 9.

Figura 9: esempio di sequencing con controllo dedicato di ogni linea di alimentazione.

Figura 9: esempio di sequencing con controllo dedicato di ogni linea di alimentazione.

In questo caso, la stabilizzazione della tensione 5.0V provoca l’attivazione della tensione 3.3V che a sua volta attiva la 1.8V.

Voltage  detection

Un’altra possibilità per monitorare la tensione di alimentazione è quella di usare un rilevatore di tensione (voltage detection). Esso fornisce maggiori informazioni rispetto ad un supervisore, poiché indica anche su quale tensione si è verificato  il problema. I supervisori, invece, fornisco un OR di tutti gli stati, generando un singolo segnale di reset. I voltage  detector forniscono un’uscita indipendente per lo stato di ogni tensione di alimentazione (generalmente, di tipo open-drain). Un esempio è rappresentato dal MAX16029,  il cui schema interno è riportato in figura 10.

Figura 10: esempio di rilevatore di tensione.

Figura 10: esempio di rilevatore di tensione.

 

 

Scrivi un commento