Tällä ei ole mitään tekemistä sen kanssa, että ydin on ARM-prosessori; kyse on siitä, kuinka kellopiiri toimii:
Monissa järjestelmissä, kuten mikro-ohjaimissa, RF-siruissa, äänisiruissa,… sinun on luotava nopeampi kello, joka on tarkalleen jonkin verran viitekelloa (esimerkiksi ulkoinen kide).
Teet sen hankkimalla jänniteohjatun oskillaattorin (VCO), jonka taajuutta voidaan säätää syöttämällä tai pienentämällä ohjausjännitettä.
Nyt vain asettamalla mikä tahansa ohjausjännite, voit saada sen värähtelemään taajuudella karkeasti oikealla "pallokentällä", mutta ei tarkalla tulotaajuuden kerrannaisella. Erityisesti VCO: t voivat olla vähän kuivia, joten myös taajuus "vaeltaa" jatkuvasti kaikkialle. Sinun on ohjattava oskillaattoria vertaamalla sitä vertailuoskillaattoriin.
Se voidaan tehdä käyttämällä vaihelukittua silmukkaa . Idea on yksinkertainen:
- Jaa VCO: sta tuleva taajuus kertoimella \ $ N \ $ ; se on tekijä, jonka haluamme VCO: n olevan nopeampi kuin vertailu. Se on helppoa: Voit esimerkiksi käyttää vain digitaalista laskuria, joka laskee N: n ja muuttaa vasta sitten lähtöä.
- Vertaa \ $ f_ \ text {VCO} / N \ $ -kelloa viitekelloon \ $ f_ \ text {ref} \ $ .
Jos toinen on nopeampi kuin toinen, säädä taajuus vastaavasti. Voit tehdä sen digitaalisella tavalla vain XOR'uttamalla molempia kelloja - ihannetapauksessa, jos ne ovat identtiset, tulos on vakio 0, mutta jos toinen on nopeampi kuin toinen, niin kasvaa määrä kertoja, jolloin Molempien kellojen XOR on 1; hidasta tai nopeuta VCO: ta vastaavasti.
Edellä on ohjauspiiri, joka on lukittu vaiheeseen - tästä syystä nimi.
"Rikkaille" mikro-ohjaimille, joilla on paljon oheislaitteita ja jotka hyötyvät siten siitä, että niissä on useita kelloja sisäisesti, on yleensä vähintään 1 PLL.ATMega328 on tässä suhteessa hieman outo: Se on suhteellisen voimanhimoinen, suhteellisen ohut oheislaitteiden mikrokontrolleri, jolla ei vieläkään ole PLL: ää.