Domanda:
Qual è lo scopo del PLL in un microcontrollore generale
KMC
2020-07-31 07:02:20 UTC
view on stackexchange narkive permalink

Un microcontrollore basato su ARM Cortex-M4 come TM4C123GH6PM è progettato con più sorgenti di clock con un core del processore con clock a 80 MHz fornito dal PLL, che, da quello che ho letto in NI-What is a PLL? e All About Circuit - Cos'è esattamente un PLL?, è una sorta di circuito di feedback x oscillatore che rileva lo sfasamento e stabilizza le frequenze di ingresso attraverso il feedback. Non capisco come PLL si relaziona al microcontrollore. Non sento alcun cambiamento di fase o cerco di stabilizzare alcun segnale qui, e non capisco come il PLL produca magicamente un clock a 400 MHz.

Perché questo PLL è incorporato nel microcontrollore? Se voglio che il mio processore abbia un clock massimo di 80 MHz come scritto nelle specifiche, allora utilizzo solo un cristallo esterno da 80 MHz. Se alcune periferiche come l'USB richiedono sorgenti di clock più veloci, utilizzo un cristallo più veloce e divido il clock per fornire multipli di clock più lenti ad altri dispositivi. I cristalli esterni sono comunque più precisi degli oscillatori interni, quindi perché preoccuparsi di inserire un PLL tra un cristallo esterno accurato e il processore, soprattutto quando non ho a che fare con nessuna applicazione ad alta frequenza o RF?

TM4C123 clock source

Ebbene, PLL è una tecnica di controllo del ritorno che non ha nulla a che fare con MPU.Come puoi leggere da Wikipedia, PLL è utilizzato in molte aree, incluso l'oscillatore.Ciclo ad aggancio di fase - Wikipedia https://en.wikipedia.org/wiki/Phase-locked_loop.
Ho passato in rassegna i tuoi due articoli e li ho trovati che spiegavano come funziona PLL.Come ho detto, se capisci che PLL viene utilizzato nei circuiti degli oscillatori, non c'è dubbio sul motivo per cui viene utilizzato in MCU, SBC o qualsiasi altro sistema che utilizza un oscillatore.Ma ovviamente c'è un'eccezione, PLL non è un quarzo / cristallo altrettanto buono, che è più preciso, ma più ingombrante e più costoso.
Un PLL a 400 MHz pilotato da un Xtal a 50 MHz (o giù di lì) non è preciso come un Xtal a 400 MHz (come sottolinea anche tlfong01) ma per molte applicazioni, tra cui MCU e RF consumer, va benissimo.La sua versatilità è un grande vantaggio, così come la facilità del routing scheda / PCB che fornisce, come DKNguyen sottolinea di seguito nella sua risposta.
Dai anche un'occhiata a questo articolo su https://www.analog.com/en/analog-dialogue/articles/phase-locked-loop-pll-fundamentals.html# che trovo più informativo per l'applicazione di moltiplicazione dell'orologio in, perinstamce, FPGA
@P2000 ringrazia, ma l'articolo insieme alla pagina wiki va oltre il mio livello per capire come hobbista leggere libri introduttivi ed elaborare esempi di led lampeggianti.Quindi, in una prospettiva da principiante, posso trattare il PLL come una scatola nera che genera un clock a 400 MHz internamente e molto probabilmente configurerò i registri RCC / RCC2 per utilizzare direttamente un cristallo esterno e posso semplicemente ignorare completamente il PLL poiché ho vinto "t avere bisogno di quella frequenza di clock superiore a pochi MHz.È un approccio corretto?
Oh si, certamente.Trattalo come una scatola nera, orologio o ingresso sinusoide, clock a frequenza diversa (superiore, inferiore) o uscita sinusoidale.Puoi saltarlo del tutto se tutto ciò di cui hai bisogno è un clock da circa 50 MHz.Quando si applica il clock esterno all'ingresso di clock dell'FPGA, i buffer di clock interni lo ripuliranno per assicurarsi che sia un'onda quadra pulita e che i suoi bordi arrivino in tempo in tutti gli angoli dell'FPGA.Buona programmazione!
Progettare un oscillatore a cristallo in grado di funzionare nell'intervallo 4-8 Mhz e un moltiplicatore di frequenza in grado di moltiplicare una frequenza in tale intervallo per qualsiasi valore 1-16 (con un massimo di 80 Mhz) è più facile che progettare un oscillatore a cristallo che può funzionare in modo efficiente atutte le frequenze nella gamma 4-80 Mhz.
Sei risposte:
DKNguyen
2020-07-31 07:25:53 UTC
view on stackexchange narkive permalink

Il PLL ti consente di essere flessibile con la velocità di clock anche dopo aver costruito la scheda e, naturalmente, ti consente di generare molte frequenze diverse dall'oscillatore a bordo.

Onestamente, il solo fatto di avere un PLL in modo da poter generare molte frequenze dall'oscillatore RC integrato fa valere la pena avere un PLL. In questo modo puoi operare in modo flessibile senza alcun oscillatore esterno se non ne hai bisogno. Da lì, non è molto più difficile farlo in modo da poter anche reindirizzare quel PLL a un oscillatore esterno.

Il PLL ti consente di produrre orologi più velocemente di quanto sia possibile in un cristallo di quarzo. Anche se sono disponibili oscillatori MEMS che possono oscillare a frequenze molto più alte del quarzo, potresti comunque non voler operare direttamente da uno di essi poiché un oscillatore esterno a 400 MHz richiede di instradare una traccia a 400 MHz.

Per quanto riguarda il funzionamento del PLL. Sai qualcosa di musica? Sai come ascoltare una canzone e battere le mani a tempo? Devi solo mantenere un tempo uguale tra ogni battito di mani e regolare il tempo fino a quando ogni battito si ferma su un battito. Facile, vero?

Ora, sai come potresti fare due o anche quattro applausi per battuta? Un PLL fa la stessa cosa. Conti i tuoi battiti e assicurati che il tempo tra ogni battito di mani sia uguale, ma regoli il tempo tra i battiti fino a quando ogni quarto battito di mani si ferma sul ritmo che senti nella canzone, a quel punto smetti di regolare. In questo modo, puoi produrre un applauso quattro volte più veloce anche se il ritmo della canzone è quattro volte più lento.

Mi piace molto il [MSP430's DCO] (https://www.ti.com/lit/ds/slas504g/slas504g.pdf?ts=1596166158508&ref_url=https%253A%252F%252Fwww.google.com%252F#%5B%7B% 22num% 22% 3A301% 2C% 22gen% 22% 3A0% 7D% 2C% 7B% 22name% 22% 3A% 22XYZ% 22% 7D% 2C0% 2C585.6% 2C0% 5D).È possibile eseguire il dithering della frequenza per diffondere l'EMI, se necessario, o utilizzarlo per un'ampia gamma di frequenze di clock medie.La parte superiore della pagina 7-5 [qui] (https://www.ti.com/sc/docs/products/micro/msp430/userguid/ag_07.pdf) è una bella descrizione di alcuni vantaggi di un DCO basato su FLL.Inoltre: * il DCO è assolutamente monotono. * Bello.Mi è piaciuta la tua descrizione, a prescindere.
Pensando lungo questa analogia, il circuito PLL insegue la frequenza di ingresso e produce una frequenza di 400 MHz costante.Quindi, se gli do un cristallo esterno da 10 MHz, il PLL "batterà" 80 volte per periodo di onda quadra del cristallo, e se è un 25 MHz, il PLL "applaudirà" 16 volte per periodo.Questa analogia è corretta per visualizzare l'uscita PLL costante?
@KMC Sì.All'interno del PLL c'è un VCO.Se sono passati troppi pochi cicli nel tempo di un ciclo di clock di riferimento, velocizza un po 'il VCO.Se sono passati troppi cicli diminuisce leggermente la frequenza diminuendo l'ingresso di controllo.Continua a regolare finché non si verifica il giusto numero di cicli entro un ciclo dell'orologio di riferimento.Teoricamente, se il PLL perde improvvisamente la frequenza di clock, potrebbe essere progettato per continuare a contare da solo, ma perderà gradualmente la precisione nello stesso modo in cui puoi continuare a battere le mani dopo che la canzone finisce o il ritmo scompare poiché il VCO non è un buon sé-riferimento
@KMC Nota che ci sono PLL analogici che possono lavorare su onde sinusoidali e PLL digitali che funzionano su onde quadre.Il VCO è sempre analogico in entrambe le versioni.È il rilevatore di fase che può essere digitale o analogico.
Sono abbastanza sicuro che i processori utilizzino rilevatori di fase digitali, ma cose come le radio utilizzerebbero rilevatori di fase analogici.Il digitale è più facile da immaginare poiché il bordo e lo zero cross sono la stessa cosa su un'onda quadra e puoi semplicemente contarli, ma non puoi dire dove ti trovi nell'onda quadra una volta che sei lontano da un bordo poiché è soloun valore costante.I rilevatori di fase analogici sono più strani e penso che possano tracciare le cose anche lontano dallo zero-cross poiché è un'onda sinusoidale.Anche i divisori di frequenza in analogico (la cosa che conta quanti applausi avvengono per ciclo di riferimento) sono anche più strani.
@DKNguyen, in realtà lo slittamento di fase tra due segnali di clock è una quantità continua: prendi XOR (clock1, clock2), se si allineano perfettamente l'uscita è zero.Ora quando li allineate male, l'uscita XOR mostra impulsi che diventano più ampi (non più alti) per differenza di fase crescente.Filtro passa basso che (pesantemente) e hai una quantità analogica proporzionata alla differenza di fase.Questo va nel VCO per aumentare / diminuire la sua frequenza.
AilinglcpzCMT vedo ...
Questa è un'ottima analogia!
user1850479
2020-07-31 07:24:53 UTC
view on stackexchange narkive permalink

Non capisco come PLL si relaziona al microcontrollore. Non sento alcun cambiamento di fase o cerco di stabilizzare alcun segnale qui e non riesco a capire come il PLL produca magicamente un clock a 400 MHz.

Dal punto di vista di un microcontrollore, un PLL è solo un moltiplicatore di frequenza. Prende una certa frequenza di riferimento come da un oscillatore da 10 MHz e genera tutte le altre frequenze di clock di cui un microcontrollore ha bisogno.

Perché questo PLL è incorporato nel microcontrollore? Se voglio che il mio processore abbia un clock massimo di 80 MHz come scritto nelle specifiche, allora utilizzo solo un cristallo esterno da 80 MHz. Se alcune periferiche come l'USB richiedono sorgenti di clock più veloci, utilizzo un cristallo più veloce e divido il clock per fornire multipli di clock più lenti ad altri dispositivi.

A meno che tu non sia in grado di trovare un singolo oscillatore che può essere suddiviso esattamente in tutte le varie frequenze di cui hai bisogno, questo di solito non è pratico. Invece, prendi un orologio di riferimento e moltiplicalo per aumentare (o diminuire) secondo necessità. Ho visto dispositivi economici che cercano di suddividere un singolo orologio e di solito funziona davvero male. Tendono ad avere strani difetti, come la produzione di audio a 48 kHz che suona bene ma a 44,1 kHz che funziona velocemente poiché l'LCM di 48000 e 44100 è un numero elevato.

I cristalli esterni sono comunque più precisi degli oscillatori interni, quindi perché preoccuparsi di inserire un PLL tra un cristallo esterno accurato e il processore, soprattutto quando non ho a che fare con nessuna applicazione ad alta frequenza o RF?

In questo caso, il PLL utilizza un oscillatore esterno, quindi a condizione che non sia implementato in modo incompetente, sarà molto preciso.

Steve Melnikoff
2020-07-31 20:35:40 UTC
view on stackexchange narkive permalink

Per aggiungere alle altre risposte, ci sono un paio di altri motivi per cui un PLL può essere utile:

Ter ridurre le emissioni EMC (risparmiando anche denaro e riducendo la possibilità di problemi tecnici)

Per citare la nota applicativa ST AN1709:

Alcuni microcontrollori hanno un generatore di clock PLL programmabile incorporato che consente il utilizzo di cristalli standard da 3 a 25 MHz per ottenere un'ampia gamma di frequenze interne (fino a poche centinaia di MHz). Con questi mezzi, il microcontrollore può funzionare con meno, cristalli a media frequenza, pur fornendo un clock interno ad alta frequenza per il massimo prestazione del sistema. La sorgente ad alta frequenza di clock è contenuta all'interno del chip e lo fa non passare attraverso le piste PCB (Printed Circuit Board) e componenti esterni. Questo riduce la potenziale emissione di rumore dell'applicazione.

L'uso della rete PLL filtra anche il clock della CPU da disturbi esterni sporadici (glitch).

Ter risparmiare energia

In un prodotto a basso consumo, può essere molto utile avere la possibilità di far funzionare il processore (e le sue periferiche) a velocità diverse a seconda di ciò che deve fare in qualsiasi momento, o di generare clock assortiti in alcune volte, ma non altre.

Quindi questo può comportare l'aumento della velocità di clock quando necessario, ma diminuirlo (o disattivare del tutto il PLL) altre volte.

Per fare un esempio concreto: ho lavorato su un prodotto alimentato a batteria che normalmente funzionava a 8 MHz, con PLL spento. Tuttavia, periodicamente, dovevamo generare clock molto più veloci per abilitare lo streaming I2S da un chip audio esterno. Quindi, abbiamo attivato il PLL solo per i pochi secondi in cui avevamo bisogno di quegli orologi, quindi lo abbiamo spento quando abbiamo finito.

Justme
2020-07-31 10:09:55 UTC
view on stackexchange narkive permalink

Un PLL permette di moltiplicare la frequenza ad un livello più alto di quello ottenibile con altri mezzi.

Ad esempio, se è necessario eseguire un MCU STM32 a 400 MHz, non è possibile collegare un oscillatore a cristallo o onda quadra da 400 MHz direttamente a un MCU.

È possibile utilizzare un cristallo da 4 MHz e il PLL all'interno dell'MCU può essere impostato per moltiplicare il riferimento di 4 MHz per 100 per ottenere un clock di 400 MHz per l'MCU.

Può anche essere utilizzato runtime per cambiare la frequenza, se necessario, per risparmiare energia, ecc.

old_timer
2020-07-31 22:56:49 UTC
view on stackexchange narkive permalink

Questa non è una cosa da microcontrollore. I processori lo fanno, vari altri prodotti lo fanno. Da un lato perché sprecare soldi per un oscillatore costoso quando non è necessario. Un altro aspetto come accennato è che questo ti dà flessibilità. Ciò che mcus è arrivato a sviluppare è un oscillatore RC interno, aggiungi a ciò il PLL e ottieni ancora più flessibilità a un costo ridotto se la precisione rientra nella tua tolleranza.

Quando pensi a un chip basato su X86 o ARM o qualsiasi altra cosa in parte risparmi sui costi, ma puoi anche mantenere le cose veloci per lo più stampate e avere le cose esterne più lente, quindi questi chip sono pieni di PLL, sicuramente il riferimento clock a 4Ghz o qualunque sia il clock principale del tuo chip, ma per dram, pcie, network, ecc hai plls che generano i vari clock per quelle varie periferiche poiché non tutti funzionano alla stessa velocità. A volte hai orologi di riferimento separati per i vari elementi (rete, pcie, ecc.). Quindi più oscillatori / cristalli a seconda.

Come crea magicamente un orologio più alto. È un ciclo ad aggancio di fase che puoi google. È fondamentalmente un circuito analogico instabile che oscilla, prende un po 'di logica TTL, un numero dispari di inverter e li lega in un anello, se capita di oscillare quando sono alimentati, continuerà a oscillare. C'è una quantità di tempo diversa da zero per il segnale in arrivo da un lato per invertirsi ed uscire dall'altro lato, moltiplicare quel tempo utilizzando più componenti, abbassando la frequenza di oscillazione in un punto qualsiasi (beh un inverter e un mucchio di non inverter). Acquista scatole di componenti e cablare più configurazioni a causa di variazioni nel processo, le connessioni, l'alimentazione, ecc.Nessun set sarà identico, se sono momentaneamente uno si sposterà rispetto all'altro. Ora sfruttalo, crea intenzionalmente un circuito instabile come questo (forse non fatto di inverter ma qualcosa che oscilla) avere un controllo libero poiché varia la tensione a cui scorre e fallo andare più veloce e più lento, quindi conta le oscillazioni. Se ho un orologio di riferimento da 100 Mhz e voglio fare 400 Mhz, allora devo creare un sistema di controllo attorno all'oscillatore schifoso per tenerlo contato 4 volte per ogni 1 volta che l'orologio di riferimento ticchetta. quindi utilizzare l'uscita dell'oscillatore instabile come il mio clock a 400 Mhz. Molte volte si desidera avere il VCO (oscillatore controllato in tensione) o il DCO, l'uscita deve essere una frequenza più alta, quindi dividerla per ottenere il clock del sistema / periferica. Ad esempio, è più facile dire moltiplicare per 100 e poi se ottieni un conteggio di 99 accelera e un conteggio di 101 rallenta. Invece di dire 2, se ottieni un conteggio di 1, accelera, un conteggio di 3 rallenta e il jitter è significativamente maggiore. Alla fine non c'è magia.

C'era un tempo e c'erano alcuni prodotti su cui dovevi mettere un oscillatore.Oggi non ha molto senso, molti casi d'uso vanno bene con l'oscillatore interno e la sua precisione limitata combinata con il pll per fornire varie scelte all'interno di un prodotto e non richiedere componenti esterni non liberi.Se è richiesta una maggiore precisione, molto spesso ci sono scelte di cristallo e oscillatore per lo stesso prodotto, che non richiedono al fornitore di generare più chip che sono altrimenti gli stessi solo per affrontare le possibili scelte di clock.

Tony Stewart Sunnyskyguy EE75
2020-07-31 08:03:22 UTC
view on stackexchange narkive permalink

A uC ha accesso a molti registri e contatori configurabili che sono utili per sintetizzare un'ampia gamma di frequenze per molti scopi.

Un mixer di frequenza confronta 2 clock attraverso un filtro passa-basso per controllare un VCO che viene utilizzato per derivare uno dei clock.L'altro proviene da un oscillatore RC interno o da un risonatore esterno molto stabile con un alto Q. Può essere un diapason da 32 kHz, MEM, risonatore in ceramica o cristallo di quarzo.I contatori vengono utilizzati per ridimensionare il VCO ma configurati per moltiplicare o dividere per ottenere il risultato.

Quando i contatori VCO vengono utilizzati come feedback al mixer, il VCO moltiplica il clock di riferimento fisso, ma quando viene utilizzato per feed-forward e dividere produce un'uscita f inferiore.I sintetizzatori a N frazionario utilizzano una combinazione di entrambi.

Gli scopi di ogni orologio sono comunemente noti.Core della CPU, UART, I2C, Timer, ecc.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 4.0 con cui è distribuito.
Loading...