Dobbiamo inoltre considerare il rumore irradiato o condotto proveniente da fonti interne ed esterne. Le scariche elettrostatiche e le sovratensioni da fulmine possono interrompere o addirittura distruggere i sistemi, mentre lo stress termico, lo stress meccanico e l'invecchiamento dei componenti possono causare guasti al sistema. In questo articolo, esamineremo alcuni di questi problemi e le misure che possiamo applicare ai nostri progetti per eliminarli o almeno minimizzarli. Vedremo anche come alcune delle funzionalità che implementiamo nei nostri microcontrollori possono mitigare molti di questi problemi.
Venticinque anni fa, progettavamo con microcontrollori implementati su tecnologia CMOS a 1,0 μm o addirittura a 0,8 μm. I dispositivi odierni utilizzano tecnologie di processo significativamente più avanzate, con larghezze di linea di ordini di grandezza inferiori. Gli ultimi microcontrollori della famiglia RA di Renesas sono implementati sulle più recenti geometrie di processo a 40 nm e 22 nm.
Man mano che le dimensioni dei transistor nei dispositivi più recenti si riducono e la frequenza di commutazione aumenta, il rumore diventa una preoccupazione sempre maggiore.

Diagramma 1: Segnale vs. Rumore
Il diagramma 1 mostra un confronto semplificato tra un dispositivo da 1,0 µm operante a 8 MHz e un dispositivo moderno operante a 100 MHz con un processo a 40 nm. È evidente che il tempo di commutazione del dispositivo a 40 nm è molto più rapido e che i segnali che gestiamo possono essere più veloci del tipico segnale di rumore. Il rumore diventa un problema sempre più rilevante man mano che ci si sposta verso geometrie di processo più piccole. Renesas ha compiuto diversi passi avanti nello sviluppo dei propri dispositivi, progettandoli con caratteristiche che ne facilitano il funzionamento in tali ambienti, con circuiti di alimentazione attentamente progettati, buffer I/O ottimizzati e circuiti di protezione specializzati, ma rimane fondamentale ridurre al minimo qualsiasi effetto sui nostri progetti. Dopotutto, una volta che il rumore entra nel dispositivo, è molto più difficile eliminarlo.
Le sorgenti di rumore esterne sono spesso una delle maggiori minacce al funzionamento affidabile. Ad esempio, il rumore di commutazione di un alimentatore, il rumore delle scintille nei macchinari industriali, nei motori, ecc. Altre fonti includono il rumore induttivo di relè, trasformatori, cicalini, lampade fluorescenti, ecc., nonché le scariche elettrostatiche, solitamente provenienti dal corpo dell'utente, ma anche da altre posizioni e, naturalmente, i fulmini.
Il rumore interno può provenire da un'ampia varietà di fonti. I circuiti di corrente su un circuito stampato possono essere una fonte significativa di rumore irradiato. Se la corrente scorre in un circuito chiuso formato dalla MCU e dai suoi segnali di I/O, come mostrato nel Diagramma 2, questo circuito di corrente può agire come un'antenna e può essere irradiato un rumore significativo, soprattutto se la corrente è elevata.

Diagramma 2: Circuiti di corrente sul PCB
Con un piano di massa progettato in modo inadeguato, dove esiste una differenza di potenziale tra la massa in diversi punti del PCB, la corrente può fluire tra questi punti, comportandosi come un'antenna. Anche i circuiti oscillatori progettati in modo inadeguato possono irradiare rumore. Consigliamo sempre agli utenti di attenersi ai parametri del circuito e al piano di massa raccomandati. Ciò è particolarmente importante perché un oscillatore progettato in modo inadeguato può proiettare rumore su molte parti del circuito e può anche guastarsi.
Un altro aspetto fondamentale è il sistema di I/O, soprattutto con più dispositivi ad alta velocità su un bus esterno. Un sistema di I/O progettato in modo inadeguato, in cui si verificano sovraelongazioni o sottoelongazioni, può causare il superamento delle specifiche elettriche dei dispositivi. Ciò può danneggiare i dispositivi nel tempo e portare a guasti, nonché a un aumento del consumo energetico e all'irradiazione di rumore.
Il rumore può interessare qualsiasi pin di un microcontrollore. Tuttavia, i pin di sistema del microcontrollore sono particolarmente sensibili al rumore, poiché spesso controllano il funzionamento fondamentale del dispositivo e un guasto indotto dal rumore potrebbe causare il malfunzionamento del dispositivo. Pertanto, occorre prestare particolare attenzione affinché la possibilità che il rumore interferisca con il normale funzionamento dei pin del sistema sia ridotta al minimo.

Diagramma 3: Pin del sistema del microcontrollore
I pin di sistema di un tipico microcontrollore possono includere il pin di reset, i pin di alimentazione, i pin dell'oscillatore e i pin per modalità o funzioni speciali. Per ridurre al minimo la possibilità che il rumore influisca su questi pin, è necessario prestare particolare attenzione, assicurandosi che i pin di alimentazione abbiano livelli di tensione stabili con il filtraggio necessario e che il piano di massa non presenti anelli di corrente. Bisogna inoltre assicurarsi che l'oscillatore sia posizionato il più vicino possibile al chip, che il layout del circuito stampato segua le raccomandazioni del produttore e che il pin di reset sia protetto da segnali transitori veloci.
Esistono alcune regole utili che possiamo applicare nei nostri progetti per minimizzare gli effetti del rumore.
- Proteggere le tracce di memoria/clock da altri segnali.
- Valutare la possibilità di filtrare e/o bufferizzare le connessioni esterne.
- Utilizzare sempre condensatori di bypass Vcc/Vss ad alta frequenza in prossimità di ciascun dispositivo.
- Utilizzare sempre Vcc/Vss in parallelo e il più vicino possibile per minimizzare i loop di corrente.
- Utilizzare tracce di segnale/ritorno parallele sul circuito stampato, soprattutto per segnali veloci o tracce che trasportano molta corrente.
- Valutare l'utilizzo di un circuito stampato multistrato con piani Vss/Vcc dedicati e ininterrotti.
- Non utilizzare una frequenza superiore al necessario; questo non solo contribuisce a minimizzare il rumore, ma anche il consumo energetico.
Analizziamo alcuni di questi punti più nel dettaglio.

Diagramma 4: Relazione tra il microcontrollore e il PCB
Dovremmo cercare di mantenere l'area tra le linee di alimentazione il più piccola possibile per minimizzare la potenziale antenna. Dovremmo anche minimizzare il flusso di corrente verso questa antenna per ridurre al minimo il rumore irradiato.
L'alimentatore del sistema è spesso una delle maggiori fonti di rumore interno. Dovremmo progettare un sistema di distribuzione dell'alimentazione efficace utilizzando condensatori di bypass e filtri EMI. Dovremmo anche mantenere l'area del diagramma di radiazione dell'antenna tra le tracce di alimentazione sul PCB il più piccola possibile in modo da minimizzare l'area del loop di corrente circostante (S0, S1, S2). Il modo più efficace per farlo è utilizzare tracce parallele per le linee Vcc e Vss.
Un condensatore di bypass collegato in parallelo alle linee di alimentazione di ciascun circuito integrato ridurrà significativamente il rumore, quindi dovremmo cercare di posizionarli il più vicino possibile a ciascun dispositivo. In genere, i valori di condensatore più efficaci sono compresi tra 0,01 µF e 0,1 µF. In un sistema particolarmente rumoroso, potrebbe essere utile combinare diversi valori di condensatore per cercare di migliorare le prestazioni in termini di rumore.
A causa delle differenze nelle caratteristiche ad alta frequenza dei vari tipi di condensatori di bypass, gli utenti dovrebbero scegliere il condensatore più adatto con l'impedenza più bassa in base alla gamma di frequenza del rumore. Per la maggior parte dei microcontrollori, i condensatori ceramici e al tantalio sono generalmente adeguati. Un condensatore elettrolitico può essere utilizzato per il filtraggio all'ingresso dell'alimentazione del PCB.
È opportuno cercare di ridurre al minimo il numero di tracce tra i dispositivi e mantenere la lunghezza di ciascuna traccia il più breve possibile. Le tracce tra la MCU e gli altri dispositivi agiscono come antenne, generando rumore. Gli utenti potrebbero considerare l'utilizzo di un bus seriale, come I2C o SPI, per comunicare con i dispositivi esterni anziché un bus completamente parallelo. Ciò riduce al minimo il rumore, nonché il consumo energetico e lo spazio occupato sul PCB. Queste connessioni sono tipicamente ad alta frequenza, quindi gli utenti devono assicurarsi che le tracce siano corte.
Le tracce che trasportano correnti elevate in un progetto richiedono particolare attenzione. Per questo motivo, le tracce che trasportano correnti elevate non devono essere posizionate vicino all'oscillatore o ad altri pin di sistema, come il pin di modalità o di reset. Questi potrebbero essere facilmente soggetti a interferenze da rumore.
È necessario prestare particolare attenzione a qualsiasi circuito oscillatore esterno, soprattutto se il progetto utilizza un cristallo a bassa potenza da 32 kHz per il funzionamento a basso consumo. Gli utenti devono assicurarsi di seguire il layout del circuito oscillatore nel manuale hardware, attenersi alle raccomandazioni del fornitore dell'oscillatore e utilizzare il servizio di specifica dell'oscillatore, se disponibile (in particolare per un progetto con oscillatore a 32 kHz). Le altre linee di segnale non devono incrociare le tracce dell'oscillatore per evitare diafonia.
È importante mantenere le tracce di segnale e di alimentazione il più lontano possibile dall'oscillatore ed evitare la messa a terra tra i pin del microcontrollore. Un circuito oscillatore stabile con un ampio margine operativo ha molte meno probabilità di causare problemi. L'utilizzo di un oscillatore interno risolve anche molti di questi problemi.
Altre buone pratiche di progettazione per i sistemi a microcontrollore includono:
- Utilizzare tracce larghe e corte per Vcc/Vss quando possibile.
- Ridurre l'impedenza dell'alimentazione per ridurre i problemi di rumore induttivo.
- Utilizzare piani Vss/Vcc quando possibile. Alle frequenze più elevate, tipicamente superiori a 4 MHz, la corrente di ritorno segue il percorso del segnale il più fedelmente possibile. Pertanto, gli utenti devono pianificare attentamente i percorsi di ritorno del segnale, soprattutto per i segnali con correnti elevate.
Il piano di massa non deve essere interrotto, poiché ciò aumenta l'impedenza del percorso del segnale.
- Gli utenti dovrebbero valutare l'utilizzo di resistori limitatori di corrente sui pin di I/O.
Renesas ha impiegato un'ampia gamma di tecniche di progettazione nei suoi microcontrollori RA per minimizzare i problemi causati dal rumore esterno. In genere utilizziamo tecniche come la separazione del bus della CPU (con memoria) dal bus delle periferiche, che può ridurre al minimo le interferenze al funzionamento della CPU, un sistema di clock distribuito e una funzione di arresto del modulo su ciascuna periferica. Utilizziamo anche filtri antirumore on-chip su alcuni degli ingressi più sensibili, come gli ingressi di reset e degli oscillatori, oltre a ottimizzare i buffer di I/O e la progettazione dell'alimentazione.
L'integrazione di diversi componenti che altrimenti dovrebbero essere esterni, grazie all'avanzata tecnologia di processo che utilizziamo, contribuisce anche a migliorare l'affidabilità eliminando la necessità di circuiti esterni come oscillatori e dispositivi di gestione dell'alimentazione. L'integrazione on-chip di oscillatori, POR/LVD (sistemi di riduzione della caduta di tensione) e timer watchdog può contribuire notevolmente a ridurre l'impatto del rumore.
Gli utenti dovrebbero anche considerare la velocità di clock necessaria per far funzionare la CPU. La velocità di clock massima può essere determinata dalla velocità di trasmissione richiesta per la UART o dal tempo necessario per completare una funzione di filtro della Trasformata di Fourier Veloce (FFT). Tuttavia, nella maggior parte dei casi e per molti progetti, non è necessario utilizzare il dispositivo alla sua massima velocità potenziale. È sufficiente farlo funzionare alla velocità necessaria per svolgere tutte le funzioni richieste, senza superare tale velocità. Maggiore è la frequenza di clock, più veloci saranno i segnali e maggiori saranno i problemi che potrebbero insorgere. Una velocità inferiore riduce il consumo di corrente e la quantità di rumore generata dall'alimentatore. Per alcune applicazioni, una velocità inferiore è quasi sempre preferibile.
I microcontrollori RA hanno la capacità di "limitare" la propria velocità. Gli utenti possono modificare dinamicamente i divisori di clock in base alle necessità per accelerare o rallentare il dispositivo. Questo può talvolta aggiungere molta complessità a un'applicazione, poiché gli utenti devono gestire i clock delle periferiche, ma vale sempre la pena valutare se la frequenza di clock può essere ridotta.
Gli utenti devono assicurarsi che le dimensioni dell'alimentatore siano corrette per il loro progetto e non devono tentare di riutilizzare lo stesso circuito di alimentazione. Devono inoltre accertarsi che sia in grado di erogare la corrente massima richiesta. Se l'alimentazione subisce cali occasionali, può causare problemi di rumore e altri malfunzionamenti del sistema.
Molti pin di ingresso delle periferiche dispongono anche di filtri antirumore programmabili. Questi filtri si trovano comunemente su periferiche di comunicazione come interfacce UART, SPI e I2C, nonché su molti ingressi timer. La scelta del corretto clock di filtro è importante per ottenere prestazioni ottimali. Spesso, è necessario procedere per tentativi ed errori per raggiungere questo obiettivo.
Le interfacce di comunicazione sono connesse al mondo esterno e spesso introducono segnali ad alta velocità nel sistema, quindi è necessario prestare attenzione alla loro progettazione. L'utilizzo di circuiti di protezione esterni è spesso consigliabile a seconda della natura dell'ambiente esterno.
I timer watchdog sono un ottimo metodo per ripristinare un'applicazione quando un rumore causa il blocco del sistema. Tuttavia, è importante capire come utilizzarli correttamente.
Nei microcontrollori AR, i timer watchdog si presentano in due forme. La prima è il timer watchdog standard, che può essere sincronizzato da diverse sorgenti di clock standard del microcontrollore. Questo watchdog viene tipicamente utilizzato per monitorare l'esecuzione del codice dell'applicazione e rilevare eventuali malfunzionamenti o comportamenti imprevisti. Di solito è disabilitato durante le applicazioni a basso consumo. Questo watchdog può generare un RESET o un interrupt.
Il secondo timer watchdog è il timer watchdog intelligente (iWDT). Questo WDT utilizza un oscillatore on-chip dedicato a bassa velocità come sorgente di clock, consentendo un timeout lungo e un funzionamento indipendente dai normali clock della CPU. Anche se il clock della CPU si guasta, l'iWDT attiverà un reset o un interrupt allo scadere del suo timeout. Ogni watchdog può operare con una funzione "finestra", in cui un "tickling" che si verifica troppo presto, così come il timeout del watchdog, può causare un riavvio. Ciascun watchdog può essere selezionato per avviarsi automaticamente dopo un riavvio impostando i bit corrispondenti nel registro di selezione della funzione opzionale, un registro basato su memoria flash che contiene i dati di inizializzazione per il dispositivo.
Un errore comune che riscontriamo spesso è quello di inserire il "tick" del watchdog all'interno di una routine di gestione degli interrupt, poiché questo è considerato efficiente dato che di solito è necessaria una sola istanza. Tuttavia, ciò può essere pericoloso, perché mentre l'applicazione principale potrebbe bloccarsi, la routine di gestione degli interrupt potrebbe continuare a funzionare, sovrascrivendo così il watchdog.
Una volta completata l'applicazione, gli utenti dovrebbero analizzare tutti i possibili percorsi di esecuzione. Questo può risultare difficile per applicazioni complesse che utilizzano un sistema operativo, ma i moderni strumenti di analisi del codice integrati negli strumenti di sviluppo possono essere d'aiuto.
Successivamente, è consigliabile inserire più istanze del watchdog timer in punti strategici dell'applicazione. Ciò renderà l'applicazione molto più affidabile e offrirà il vantaggio aggiuntivo di rilevare eventuali percorsi di esecuzione imprevisti. Questo è solitamente indice di un problema grave, come un crash di sistema o un overflow dei puntatori.
Abbiamo già accennato alle applicazioni a basso consumo energetico, e l'utilizzo dei watchdog timer anche in questo caso richiede particolare attenzione. Gli utenti dovrebbero valutare attentamente cosa accade quando il sistema entra in modalità a basso consumo.
In qualsiasi sistema, il modo migliore per evitare problemi di rumore è considerare la riduzione del rumore fin dalle prime fasi della progettazione. È importante comprendere l'ambiente in cui il sistema opererà, quali fonti di rumore saranno presenti e quali misure possono essere adottate per mitigarle.
È sempre opportuno dedicare del tempo alla valutazione di questi problemi nelle prime fasi della progettazione, poiché è molto più semplice progettare soluzioni per la riduzione del rumore fin dall'inizio piuttosto che aggiungerle in un secondo momento o, peggio ancora, modificare un progetto quando i problemi di rumore vengono scoperti sul campo.
Questo articolo analizza alcuni dei problemi legati al rumore nei sistemi a microcontrollore e descrive alcune delle caratteristiche dei microcontrollori Renesas RA progettate per aumentare l'affidabilità del sistema. Spero che questo articolo abbia suscitato qualche riflessione sulla necessità per gli utenti di considerare i problemi legati al rumore in tutti i loro progetti fin dalle prime fasi.
Autore: Graeme Clark, ingegnere capo, Renesas Electronics
