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.