Vraag:
Wat is het doel van PLL in een algemene microcontroller
KMC
2020-07-31 07:02:20 UTC
view on stackexchange narkive permalink

Een op ARM Cortex-M4 gebaseerde microcontroller zoals TM4C123GH6PM is ontworpen met meerdere klokbronnen met een processorkern geklokt op 80 MHz, geleverd door de PLL, die, op basis van wat ik heb gelezen in NI-Wat is een PLL? en Alles over circuit - Wat is precies een PLL?, is een soort feedback x oscillatorcircuit dat faseverschuiving detecteert en ingangsfrequenties stabiliseert door middel van feedback. Ik begrijp niet hoe PLL zich verhoudt tot microcontroller. Ik voel hier geen faseverschuiving of probeer geen signaal te stabiliseren, en ik snap niet hoe de PLL magisch een 400 MHz klok produceert.

Waarom is deze PLL in de microcontroller ingebed? Als ik wil dat mijn processor op max 80 MHz klokt, zoals beschreven in de specificaties, dan gebruik ik gewoon een extern kristal van 80 MHz. Als sommige randapparatuur zoals USB snellere klokbronnen nodig heeft, dan gebruik ik een sneller kristal en deel ik de klok om veelvouden van langzamere klokken aan andere apparaten te leveren. Externe kristallen zijn sowieso nauwkeuriger dan interne oscillatoren, dus waarom zou je een PLL tussen een nauwkeurig extern kristal en de processor stoppen, vooral als ik niet te maken heb met een hoogfrequente of RF-toepassing?

TM4C123 clock source

Welnu, PLL is een techniek voor feeback-besturing die niets te maken heeft met MPU.Zoals je kunt lezen op Wikipedia, wordt PLL op veel gebieden gebruikt, inclusief oscillator.Fasevergrendelde lus - Wikipedia https://en.wikipedia.org/wiki/Phase-locked_loop.
Ik heb uw twee artikelen doorgenomen en ze gevonden waarin werd uitgelegd hoe PLL werkt.Zoals ik al zei, als je begrijpt dat PLL wordt gebruikt in oscillatorcircuits, dan is er geen vraag waarom het wordt gebruikt in MCU, SBC of andere systemen die een oscillator gebruiken.Maar er is natuurlijk een uitzondering, PLL is niet zo goed een kwarts / kristal, wat nauwkeuriger is, maar omvangrijker en duurder.
Een 400 MHz PLL aangedreven door een 50 MHz (of zo) Xtal is niet zo nauwkeurig als een 400 MHz Xtal (zoals ook tlfong01 aangeeft), maar voor veel toepassingen, waaronder MCU en consumenten-RF, is het prima.Zijn veelzijdigheid is een groot pluspunt, evenals het gemak van board / PCB-routering die het biedt, zoals DKNguyen hieronder in zijn antwoord opmerkt.
Bekijk ook dit artikel op https://www.analog.com/en/analog-dialogue/articles/phase-locked-loop-pll-fundamentals.html# dat ik meer informatief vind voor de klokvermenigvuldigingstoepassing in, voorinstamce, FPGA's
@P2000 bedankt, maar het artikel samen met de wikipagina gaat mijn niveau te boven als een hobbyist die introboeken leest en knipperende led-voorbeelden uitwerkt.Dus in een beginnersperspectief kan ik de PLL behandelen als een blackbox die intern een 400 MHz klok genereert en hoogstwaarschijnlijk zal ik de RCC / RCC2-registers configureren om direct een extern kristal te gebruiken en kan ik de PLL gewoon volledig negeren sinds ik gewonnen heb 'Ik heb niet zo'n hoge kloksnelheid nodig van meer dan een paar MHz.Is dat een goede benadering?
Oh ja, natuurlijk.Behandel het gewoon als een zwarte doos, klok of sinusoïde in, verschillende frequentie (hoger, lager) klok of sinusoïde uit.Je kunt het helemaal overslaan als je maar één klok van 50 MHz of zo nodig hebt.Wanneer u uw externe klok op de klokingang van de FPGA toepast, zullen de interne klokbuffers deze opschonen om ervoor te zorgen dat het een nette blokgolf is en dat de randen op tijd in alle hoeken van de FPGA aankomen.Veel plezier met coderen!
Het ontwerpen van een kristaloscillator die kan werken in het bereik van 4-8Mhz en een frequentievermenigvuldiger die een frequentie in dat bereik kan vermenigvuldigen met elke waarde 1-16 (met een maximum van 80Mhz) is eenvoudiger dan het ontwerpen van een kristaloscillator die efficiënt kan werken metalle frequenties in het bereik van 4-80Mhz.
Zes antwoorden:
DKNguyen
2020-07-31 07:25:53 UTC
view on stackexchange narkive permalink

Met de PLL kun je flexibel zijn met kloksnelheid, zelfs nadat je het board hebt gebouwd, en natuurlijk kun je veel verschillende frequenties genereren met de ene ingebouwde oscillator.

Eerlijk gezegd, alleen al het hebben van een PLL, zodat je veel frequenties van de ingebouwde RC-oscillator kunt genereren, maakt het de moeite waard om een ​​PLL te hebben. Op die manier kunt u flexibel werken zonder externe oscillator als u er geen nodig heeft. Vanaf daar is het niet al te veel moeite om het te maken, zodat je die PLL ook kunt omleiden naar een externe oscillator.

Met de PLL kun je sneller klokken produceren dan mogelijk is in een kwartskristal. Hoewel er MEMS-oscillatoren beschikbaar zijn die kunnen oscilleren op veel hogere frequenties dan kwarts, wil je misschien toch niet direct op een oscillator werken, aangezien je voor een 400 MHz externe oscillator een 400 MHz-spoor moet routeren.

Wat betreft hoe de PLL werkt. Weet jij iets van muziek? Weet jij hoe je naar een liedje kunt luisteren en op de maat kunt klappen? Je houdt gewoon dezelfde timing tussen elke klap en past de timing aan totdat elke klap op een beat landt. Makkelijk toch?

Weet je nu hoe je twee of zelfs vier klappen per tel zou kunnen doen? Een PLL doet hetzelfde. Je telt je eigen klappen en zorgt ervoor dat de tijd tussen elke klap gelijk is, maar je past de tijd tussen de klappen aan totdat elke vierde klap landt op de beat die je in het nummer hoort, waarna je stopt met aanpassen. Op die manier kun je een klap produceren die vier keer zo snel is, ook al is de tel van het nummer vier keer langzamer.

Ik hou echt van de [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% 22naam% 22% 3A% 22XYZ% 22% 7D% 2C0% 2C585.6% 2C0% 5D).U kunt indien nodig de frequentie dithert om de EMI te spreiden of deze gebruiken voor een breed scala aan gemiddelde kloksnelheden.De bovenkant van pagina 7-5 [hier] (https://www.ti.com/sc/docs/products/micro/msp430/userguid/ag_07.pdf) is een mooie beschrijving van enkele voordelen van een op FLL gebaseerde DCO.Plus dit: * de DCO is absoluut monotoon. * Leuk.Vond je beschrijving leuk, hoe dan ook.
Als we deze analogie bekijken, jaagt het PLL-circuit de ingangsfrequentie na en voert een constante 400 MHz uit.Dus als ik het een extern kristal van 10 MHz geef, zal de PLL 80 keer per blokgolfperiode "klappen", en als het 25 MHz is, dan zal de PLL 16 keer per periode "klappen".Is deze analogie correct om de constante PLL-output te zien?
@KMC Ja.Binnen de PLL is een VCO.Als er te weinig cycli zijn verstreken in de tijd van één referentieklokcyclus, wordt de VCO een beetje versneld.Als er te veel cycli zijn verstreken, wordt de frequentie een beetje verlaagd door de stuuringang te verlagen.Het blijft zich aanpassen totdat het juiste aantal cycli optreedt binnen één cyclus van de referentieklok.Theoretisch gezien, als de PLL plotseling de klokfrequentie verliest, zou het kunnen worden ontworpen om nog steeds op zichzelf te blijven tellen, maar geleidelijk aan nauwkeurigheid te verliezen op dezelfde manier waarop je kunt blijven klappen nadat het nummer is afgelopen of de beat verdwijnt, aangezien de VCO geen goed zelf is-referentie
@KMC Merk op dat er analoge PLL's zijn die op sinusgolven kunnen werken en digitale PLL's die op blokgolven werken.De VCO is in beide versies altijd analoog.Het is de fasedetector die digitaal of analoog kan zijn.
Ik ben er vrij zeker van dat processors digitale fasedetectoren gebruiken, maar zaken als radio's zouden analoge fasedetectoren gebruiken.Digitaal is gemakkelijker voor te stellen, aangezien de rand en het nulkruis hetzelfde zijn op een blokgolf en je ze gewoon kunt tellen, maar je kunt niet zeggen waar je bent in de blokgolf als je eenmaal weg bent van een rand, omdat het gewoon iseen constante waarde.Analoge fasedetectoren zijn vreemder en ik denk dat ze de dingen zelfs vanaf de nuldoorgang kunnen volgen, aangezien het een sinusgolf is.Frequentiedelers in analoog (het ding dat telt hoeveel klappen er gebeuren per referentiecyclus) zijn ook vreemder.
@DKNguyen, eigenlijk is de faseverschuiving tussen twee kloksignalen een continue grootheid: neem XOR (klok1, klok2), als ze perfect zijn uitgelijnd, is de uitvoer helemaal nul.Als u ze nu verkeerd uitlijnt, vertoont de XOR-uitgang pulsen die breder (niet groter) worden per toenemend faseverschil.Laagdoorlaatfilter dat (zwaar) en je hebt een analoge hoeveelheid die evenredig is met het faseverschil.Dat gaat in de VCO om de frequentie te verhogen / verlagen.
@P2000 Ik snap het ....
Dit is een heel goede analogie!
user1850479
2020-07-31 07:24:53 UTC
view on stackexchange narkive permalink

Ik begrijp niet hoe PLL zich verhoudt tot microcontroller. Ik voel hier geen faseverschuiving of probeer geen signaal te stabiliseren, en ik snap niet hoe de PLL op magische wijze een 400 MHz-klok produceert.

Vanuit het oogpunt van een microcontroller is een PLL slechts een frequentievermenigvuldiger. Het vereist een referentiefrequentie, zoals van een 10 MHz-oscillator, en genereert alle andere klokfrequenties die een microcontroller nodig heeft.

Waarom is deze PLL in de microcontroller ingebed? Als ik wil dat mijn processor op max 80 MHz klokt, zoals beschreven in de specificaties, dan gebruik ik gewoon een extern kristal van 80 MHz. Als sommige randapparatuur, zoals USB, snellere klokbronnen nodig heeft, gebruik ik een sneller kristal en deel ik de klok om veelvouden van langzamere klokken aan andere apparaten te leveren.

Tenzij je toevallig een enkele oscillator kunt vinden die precies kan worden onderverdeeld in alle verschillende frequenties die je nodig hebt, is dit meestal niet praktisch. In plaats daarvan neem je een referentieklok en vermenigvuldig je deze naar wens met (of omlaag). Ik heb goedkope apparaten gezien die een enkele klok proberen te verdelen, en het werkt meestal erg slecht. Ze hebben de neiging om rare glitches te hebben, zoals het produceren van 48 kHz-audio die goed klinkt, maar 44,1 kHz die snel draait, aangezien de LCM van 48000 en 44100 een groot aantal is.

Externe kristallen zijn sowieso nauwkeuriger dan interne oscillatoren, dus waarom zou je een PLL tussen een nauwkeurig extern kristal en de processor stoppen, vooral als ik niet te maken heb met een hoogfrequente of RF-toepassing?

In dit geval gebruikt de PLL een externe oscillator, dus op voorwaarde dat deze niet incompetent geïmplementeerd is, zal hij zeer nauwkeurig zijn.

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

Om aan de andere antwoorden toe te voegen, zijn er een aantal andere redenen waarom een ​​PLL nuttig kan zijn:

om EMC-emissies te verminderen (terwijl ook geld wordt bespaard en de kans op storingen wordt verkleind)

Om te citeren uit ST-toepassingsnotitie AN1709:

Sommige microcontrollers hebben een ingebouwde programmeerbare PLL-klokgenerator waardoor de gebruik van standaard 3 tot 25 MHz kristallen om een ​​groot bereik aan interne frequenties te verkrijgen (tot een paar honderd MHz). Op deze manier kan de microcontroller werken met goedkopere, middenfrequente kristallen, terwijl ze toch een maximale interne klok met hoge frequentie bieden systeem prestatie. De bron met hoge klokfrequentie bevindt zich in de chip en doet dat ook ga niet door de PCB-sporen (Printed Circuit Board) en externe componenten. Dit vermindert de mogelijke geluidsemissie van de toepassing.

Het gebruik van een PLL-netwerk filtert ook de CPU-klok tegen externe sporadische storingen (glitches).

om energie te besparen

In een product met een laag stroomverbruik kan het erg handig zijn om de optie te hebben om de processor (en zijn randapparatuur) op verschillende snelheden te laten werken, afhankelijk van wat hij op een bepaald moment moet doen, of om op elk moment verschillende klokken te genereren. soms, maar andere niet.

Dit kan dus betekenen dat de kloksnelheid wordt verhoogd wanneer dat nodig is, maar deze moet worden verlaagd (of de PLL helemaal moet worden uitgeschakeld) op andere momenten.

Om een ​​concreet voorbeeld te geven: ik werkte aan een batterijgevoed product dat normaal gesproken op 8 MHz liep, met de PLL uit. Af en toe moesten we echter veel snellere klokken genereren om I2S-streaming vanaf een externe audiochip mogelijk te maken. Dus we draaiden de PLL alleen voor de paar seconden waarin we die klokken nodig hadden, en stopten hem toen we klaar waren.

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

Een PLL maakt het mogelijk om de frequentie te vermenigvuldigen naar een hoger niveau dan met andere middelen mogelijk is.

Als het bijvoorbeeld nodig is om een STM32 MCU op 400 MHz te laten draaien, is er geen manier om een 400 MHz kristal- of blokgolfoscillator rechtstreeks op een MCU aan te sluiten.

Een kristal van 4 MHz kan worden gebruikt en de PLL in de MCU kan worden ingesteld om de referentie 4 MHz met 100 te vermenigvuldigen om een 400 MHz-klok voor de MCU te bereiken.

Het kan ook runtime worden gebruikt om de frequentie te wijzigen indien nodig om energie te besparen, enz.

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

Dit is niet iets met een microcontroller. Processors doen dit, diverse andere producten doen dit. Aan de ene kant, waarom het geld verspillen aan een dure oscillator als dat niet nodig is. Een andere kant, zoals vermeld, is dat dit u flexibiliteit geeft. Wat mcus is gaan ontwikkelen is een interne RC-oscillator, voeg daar de PLL aan toe en je krijgt nog meer flexibiliteit tegen lagere kosten als de nauwkeurigheid binnen je tolerantie valt.

Als je denkt aan een X86 of een op ARM gebaseerde chip of wat dan ook, je kostenbesparingen, maar je kunt ook de snelle dingen meestal op de mat houden en de externe dingen langzamer maken, dus deze chips zitten vol met PLL's, zeker de referentie klok naar 4Ghz of wat de hoofdklok van je chip ook is, maar voor de dram, pcie, netwerk, enz. heb je plls die de verschillende klokken voor die verschillende randapparatuur genereren, omdat ze niet allemaal op dezelfde snelheid werken. Soms heb je aparte referentieklokken voor de verschillende items (netwerk, pcie, enz.). Dus meerdere oscillatoren / kristallen afhankelijk.

Hoe het op magische wijze een hogere klok maakt. Het is een fasevergrendelde lus die u kunt googlen. Het is in feite een onstabiel analoog circuit dat oscilleert, neem wat TTL-logica, een oneven aantal omvormers en bind ze in een lus, als het toevallig oscilleert wanneer ze worden aangedreven, blijft het gewoon oscilleren. Er is een niet-nul hoeveelheid tijd voor het signaal dat aan de ene kant binnenkomt om te omkeren en aan de andere kant weer uit te gaan, vermenigvuldig die tijd door meer componenten te gebruiken, waarbij de oscillatiefrequentie op een bepaald punt wordt verlaagd (nou ja, één omvormer en omvormers). Koop dozen met componenten en sluit meerdere opstellingen aan vanwege variaties in het proces, de verbindingen, het vermogen, enz. Geen twee sets zullen identiek zijn, als ze tijdelijk zijn, zal de ene ten opzichte van de andere afwijken. Gebruik dit nu, creëer opzettelijk een onstabiel circuit als dit (misschien niet gemaakt van omvormers maar iets dat zal oscilleren), heb een losse controle omdat het de spanning waarop het draait, varieert en het sneller en langzamer laat gaan, en tel dan oscillaties. Als ik een referentieklok van 100 MHz heb en 400 MHz wil maken, moet ik een controlesysteem rond de waardeloze oscillator maken om het 4 keer te laten tellen voor elke keer dat de referentieklok tikt. gebruik dan de output van de onstabiele oscillator als mijn 400Mhz-klok. Vaak wilt u de VCO (spanningsgestuurde oscillator) of DCO, output een hogere frequentie hebben en die dan verdelen om uw systeem / perifere klok te krijgen. Het is bijvoorbeeld gemakkelijker om te zeggen: vermenigvuldig met 100 en als u een telling van 99 krijgt, versnelt u en een telling van 101 vertraagt. In plaats van 2 te zeggen, als je een telling van 1 krijgt, versnelt een telling van 3 langzamer en wordt de jitter aanzienlijk groter. Uiteindelijk is er geen magie.

Er was een tijd en er waren enkele producten waarvoor je een oscillator moest opzetten.Tegenwoordig heeft het niet veel zin, veel use-cases zijn prima met de interne oscillator en de beperkte nauwkeurigheid in combinatie met de PLL om verschillende keuzes binnen één product te bieden en geen externe niet-vrije componenten nodig te hebben.Als een hogere nauwkeurigheid vereist is, zijn er vrij vaak kristal- en oscillatorkeuzes voor hetzelfde product, waardoor de verkoper niet meerdere chips hoeft te genereren die anders hetzelfde zijn, alleen om mogelijke klokkeuzes te kunnen afhandelen.

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

Een uC heeft toegang tot veel configureerbare registers en tellers die handig zijn voor het synthetiseren van een breed scala aan frequenties voor vele doeleinden.

Een frequentiemixer vergelijkt 2 klokken door een laagdoorlaatfilter om een VCO te regelen die wordt gebruikt om een van de klokken af te leiden.De andere is van een interne RC-oscillator of een externe zeer stabiele resonator met een hoge Q. Het kan een 32 kHz-stemvork zijn, MEM's, keramische of kwartskristalresonator.Tellers worden gebruikt om de VCO te schalen, maar zijn geconfigureerd om te vermenigvuldigen of te delen om het resultaat te bereiken.

Wanneer de VCO-tellers worden gebruikt als terugkoppeling naar de mixer, vermenigvuldigt de VCO de vaste referentieklok, maar wanneer deze wordt gebruikt om vooruit te koppelen en naar beneden te verdelen, wordt een lagere f-uitvoer geproduceerd.Fractional-N synthesizers gebruiken een combinatie van beide.

Het doel van elke klok is algemeen bekend.CPU-kern, UART, I2C, Timer, enz.



Deze Q&A is automatisch vertaald vanuit de Engelse taal.De originele inhoud is beschikbaar op stackexchange, waarvoor we bedanken voor de cc by-sa 4.0-licentie waaronder het wordt gedistribueerd.
Loading...