Quanto è importante la sorgente di clock del microcontrollore?

Mark Harris
|  Creato: October 19, 2023  |  Aggiornato: November 7, 2023
Quanto è importante la sorgente di clock del microcontrollore

I microcontrollori dipendono dalla loro sorgente di clock. Il processore, il bus e le periferiche utilizzano il clock per sincronizzare le loro operazioni. Il clock determina la velocità con cui il processore esegue le istruzioni, quindi è fondamentale per le prestazioni. Ma quanto è importante la sorgente di clock? Che cos'è la frequenza di clock in un microcontrollore? È importante la sua precisione? In parole povere, dipende da cosa fa il microcontrollore e dalle sue interfacce.

Bisogna tener conto di due considerazioni: la velocità del clock, che determina la velocità con cui avvengono le cose, e la sua precisione, che determina la coerenza del periodo tra ciascun movimento del clock e come la sua velocità può variare nel tempo.

Perché la sorgente di clock è importante

Il processore centrale del microcontrollore può essere considerato come una catena sincronizzata di blocchi logici che svolgono una funzione specifica. Se il clock del microcontrollore del sistema è troppo lento, l'elaborazione richiede più tempo. Se l'orologio è troppo veloce, potrebbe non esserci abbastanza tempo per completare le operazioni richieste prima dell'inizio della serie successiva: il processore si interfaccia con una serie di blocchi di componenti diversi, dalla memoria dinamica ai pin di interfaccia. Qualsiasi errore significativo nella velocità di clock avrà conseguenze imprevedibili sulle operazioni interne del microcontrollore.

Campionamento dei dati

Il segnale di clock del microcontrollore regolerà la velocità di conversione di qualsiasi operazione da analogico a digitale. La velocità del clock determinerà la velocità massima di campionamento del segnale analogico; la precisione del clock determinerà la precisione della frequenza di campionamento. Supponiamo di registrare un campione due volte al secondo con un timestamp. In questo caso, non ci vorrà molto prima che un errore dell'1% nella frequenza di clock (non raro con gli oscillatori interni) elimini qualsiasi correlazione tra il timestamp del campione e l'ora indicata dall'orologio a muro. Con un offset costante dell'1% della sorgente di clock, il timestamp del campione sarà sfasato di oltre 14 minuti ogni giorno.

Generazione di forme d'onda

Quanto al campionamento dei dati, il segnale di clock del microcontrollore regolerà la velocità di conversione di qualsiasi operazione da digitale ad analogico. La velocità di clock determinerà le frequenze massime che possono essere generate per il segnale analogico. La precisione del clock determinerà la precisione della forma d'onda generata.

Comunicazioni seriali asincrone

Un'applicazione fondamentale per il segnale di clock del microcontrollore sarà la gestione delle comunicazioni asincrone in cui il segnale di clock determina il momento in cui il flusso di dati in entrata viene campionato, una volta ricevuto il bit di inizio, e la forma dell'onda del flusso di dati in uscita, in termini di transizioni tra ogni bit di dati.

Nelle comunicazioni asincrone, il trasmettitore e il ricevitore devono avere la stessa velocità di clock per codificare e decodificare i flussi di dati. Tuttavia, questi clock non devono essere sincronizzati; devono solo avere frequenze di clock sufficientemente uguali. Questo perché il ricevitore inizia a elaborare il flusso di dati in entrata quando rileva il primo fronte sulla linea del segnale. Deve quindi mantenere la velocità di clock corretta per la durata del flusso di dati per campionare i bit di dati agli orari corretti. L'accuratezza richiesta dipende dalla finestra temporale in cui i dati devono essere campionati. Ogni bit di dati avrà potenzialmente un fronte di salita e un fronte di discesa del suo segnale in cui il valore dei dati è indeterminato. Questo lascia il periodo tra i bordi in cui i dati sono validi e possono essere campionati.

Questo periodo di campionamento dipenderà dal tipo e dalla lunghezza del collegamento delle comunicazioni. Lunghe distanze di trasmissione e cavi ad alta capacità aumenteranno i tempi di salita e discesa. Anche la presenza di rumore può aumentare il tempo necessario alla stabilizzazione del segnale.

Il periodo di campionamento dipende anche dalla velocità di clock e dal formato del messaggio. In caso di brevi flussi di dati i requisiti di precisione possono essere piuttosto vaghi poiché il clock di campionamento si azzera ogni volta che viene ricevuto un nuovo flusso di dati. Tuttavia, per le comunicazioni seriali ad alta velocità con flussi di dati lunghi, può essere necessaria una precisione maggiore. Ad esempio, il protocollo del bus CAN lo rende molto sensibile alla distorsione del clock di sistema al punto che l'uso di qualsiasi sorgente di segnale di clock non basata su cristalli può essere problematico.

Prendendo come esempio i dispositivi UART, possiamo notare che la frequenza di clock assoluta non è importante perché il ricevitore UART si sincronizza all'inizio di ogni frame. La questione semplifica le differenze che possono essere tollerate tra i clock UART di trasmissione e ricezione.

Opzioni di sorgente di clock

Di solito ci sono diverse opzioni tra cui scegliere quando si seleziona una sorgente di clock per un particolare microcontrollore. Le opzioni specifiche dipenderanno dalla marca e dal modello di microcontrollore che utilizzerai, quindi in questa sede parleremo di tutte le opzioni standard.

Le diverse opzioni si differenziano principalmente per la precisione, il costo e il numero di componenti. L'utilizzo di una sorgente di clock interna che tutti i buoni microcontrollori includono, sarà l'opzione meno costosa e meno complicata, ma di solito sarà anche la meno accurata. Al contrario, una sorgente di clock esterna fornirà una maggiore precisione, ma al costo di aggiungere ulteriori componenti al PCB e aumentare la complessità del progetto.

La scelta dell'opzione dipende dalle prestazioni desiderate e dai vincoli in termini di spazio sulla scheda e di budget. Dato che esistono sempre diverse opzioni alternative per generare un segnale di clock per un determinato microcontrollore, studia la scheda tecnica del tuo dispositivo. Di solito questa ti fornirà informazioni utili sui tipi di sorgenti di clock che puoi usare e su come implementarle al meglio.

Oscillatori interni

Generalmente, i microcontrollori sono dotati di un oscillatore resistore-condensatore interno, per generare un segnale di clock di base, e di un anello ad aggancio di fase, per fornire una funzione di moltiplicazione della frequenza. Il problema dell'utilizzo di un oscillatore interno è che è molto meno preciso degli oscillatori esterni, con una scarsa stabilità di frequenza. L'interno del chip di un microcontrollore è, per definizione, un luogo tutt'altro che ideale per collocare un circuito RC. Ciò è dovuto all'elevata dipendenza dalla temperatura dei circuiti RC e alle tolleranze intrinsecamente ampie dei componenti. In genere, un microcontrollore con una buona gestione termica può fornire un segnale di clock con una precisione compresa tra l'1% e il 5%. Ciò può essere sufficiente per alcuni bus di comunicazione asincroni più lenti e per gestire l'elaborazione del segnale analogico a bassa frequenza. Tuttavia, nella maggior parte delle applicazioni tipiche, sarà troppo impreciso.

Probabilmente vale la pena ricordare brevemente che le prestazioni dell'oscillatore interno possono essere migliorate utilizzando un anello ad aggancio di fase per consentire a un segnale di clock esterno più preciso di correggere il segnale di clock interno. Tuttavia, se è disponibile un segnale di clock esterno, è opportuno utilizzarlo al posto del clock interno, a meno che il microcontrollore non abbia vincoli specifici che lo impediscano.

Oscillatori esterni

Le sorgenti di clock per i microcontrollori sono di due tipi principali: dispositivi meccanici risonanti, tra cui cristalli e risonatori in ceramica, e oscillatori RC passivi.

La forma più elementare dell'oscillatore è il circuito RC, che emula il circuito dell'oscillatore interno ma utilizza componenti con valori di precisione più elevati e tecniche di gestione termica per isolare i componenti dal calore generato dal clock del microcontrollore e da qualsiasi altro elemento caldo del circuito. Sebbene ciò possa migliorare la precisione di almeno un ordine di grandezza, è di gran lunga l'opzione meno precisa per un oscillatore esterno e sono disponibili soluzioni migliori per costi e dimensioni di ingombro relativamente simili. Il clock generato dal circuito RC sarà influenzato anche dalle fluttuazioni dei livelli di alimentazione e sarà suscettibile alle interferenze elettriche, cosa che limiterà la sua utilità nella maggior parte delle applicazioni tipiche.

Oscillatori a cristallo

Gli oscillatori a cristallo sono la forma più comune di oscillatori esterni quando è richiesto un segnale di clock di precisione. Un cristallo di quarzo e i circuiti di supporto offrono una stabilità e una precisione eccellenti. Un tipico oscillatore a cristallo a basso costo può avere una precisione migliore di un milionesimo di punto percentuale, più che sufficiente per tutte le applicazioni tranne quelle più sensibili al fattore tempo. Tuttavia, il cristallo di quarzo può essere influenzato da fattori ambientali che possono richiedere una protezione aggiuntiva. Il circuito di supporto per il cristallo di quarzo può anche produrre un'uscita ad alta impedenza che richiede un ulteriore adattamento dell'impedenza per integrarsi con il resto del circuito. L'uso di un modulo di oscillatore a cristallo standard, piuttosto che di componenti discreti può ridurre la suscettibilità agli effetti ambientali e rendere il progetto della scheda più semplice, se il budget lo consente. Generalmente, essi forniscono un'uscita a onda quadra a bassa impedenza che semplifica l'integrazione con il resto del progetto del circuito, con una precisione molto simile a quella di un cristallo discreto.

Oscillatori al silicio

Un'altra opzione è quella di utilizzare un oscillatore al silicio basato su un circuito risonatore IC che è semplice da implementare con una precisione di circa 0,05%. Leggermente più efficiente di un circuito RC esterno, ma neanche lontanamente paragonabile a un oscillatore a cristallo. Tuttavia, gli oscillatori di silicio sono più robusti e affidabili di quelli al cristallo, e risultano ideali per ambienti operativi in cui il dispositivo potrebbe essere soggetto a forti vibrazioni meccaniche.

Risonatori in ceramica

Infine, sono disponibili risonatori in ceramica che, per quanto non siano precisi come un oscillatore a cristallo, lo sono più di un oscillatore al silicio. Basati su un materiale ceramico piezoelettrico, utilizzano vibrazioni meccaniche risonanti per generare un segnale di clock. Il loro vantaggio principale è che sono disponibili in un semplice pacchetto integrato con un ingombro inferiore a quello di un oscillatore a cristallo e dei suoi componenti di supporto. Tuttavia, come gli oscillatori a cristallo, sono sensibili ai fattori ambientali, tra cui: temperatura, umidità, vibrazioni e interferenze elettriche.

Quando si sceglie un oscillatore esterno, il consumo energetico delle opzioni può essere un fattore decisivo. Il consumo energetico dei circuiti dell'oscillatore discreto è determinato principalmente dalla corrente di alimentazione dell'amplificatore di retroazione e dai suoi valori di capacità. Un tipico circuito oscillatore a cristallo assorbirà decine di mA. I circuiti con risonatori in ceramica richiedono in genere valori di capacità di carico maggiori rispetto a quelli necessari per gli oscillatori a cristallo, il che implica un maggiore consumo energetico. Il consumo energetico degli oscillatori al silicio è prevalentemente proporzionale alla frequenza operativa. Tuttavia, sono disponibili in una vasta gamma di opzioni, da dispositivi a basso consumo che assorbono pochi mA a dispositivi standard che assorbono decine di mA.

Conclusione

Per riassumere, il tipo di segnale di clock da utilizzare per il tuo microcontrollore dipenderà principalmente dalla natura del dispositivo in cui è incorporato e dal suo ambiente operativo. Le interfacce con bus di comunicazione asincroni ad alta velocità e segnali analogici ad alta frequenza renderanno necessario un segnale di clock preciso. Supponiamo che il dispositivo debba funzionare in un ambiente difficile, ad esempio in un ampio intervallo di temperature, con livelli elevati di interferenza elettromagnetica o con esposizione a vibrazioni meccaniche. Tutti questi vincoli possono limitare le scelte disponibili. Un clock di microcontrollore che non è soggetto a tali vincoli temporali o ambientali può, invece, accontentarsi di una soluzione meno costosa.

Visita la pagina prodotto di Altium Designer per studiare nei dettagli le sue funzionalità e strumenti, oppure fai clic qui per parlare con un esperto.

Sull'Autore

Sull'Autore

Mark Harris è un ingegnere eccezionale con oltre 12 anni di esperienza diversificata nel settore dell'elettronica, che va dai contratti aerospaziali e di difesa ai prodotti start-up, passatempi, ecc. Prima di trasferirsi nel Regno Unito, Mark ha lavorato per uno dei più grandi istituti di ricerca del Canada. Ogni giorno portava con sé un progetto o una sfida diversa che coinvolgeva l'elettronica, la meccanica e il software. È responsabile della pubblicazione della “Celestial Database Library”, la più grande libreria di componenti di database open source per Altium Designer. Mark è attratto dall'hardware e dal software open source, nonché a trovare soluzioni innovative per le sfide quotidiane di questi progetti. L'elettronica è pura passione: seguire la trasformazione di un'idea in realtà e interagire con il mondo è fonte di infinito piacere.
Puoi contattare Mark direttamente a: mark@originalcircuit.com

Risorse correlate

Tornare alla Pagina Iniziale
Thank you, you are now subscribed to updates.