Wie läuft eine ARM-MCU schneller als der externe Quarz?

12

Vorher habe ich also nur mit einfachen 8-Bit-Atmel-MCUs gearbeitet und festgestellt, dass meine Entwicklungsplatine nur einen 12-MHz-Quarz enthält, die MCU jedoch mit bis zu 100 MHz arbeitet. (Ich denke, die Standardeinstellung ist 80 MHz. Ich habe sie nur aus Spaß einmal höher gesetzt. Es ist nur eine einfache Zeile im Code.)

Wie macht es das? Warum läuft beispielsweise ein Atmega328 mit der verwendeten Kristallgeschwindigkeit?

user3033693
quelle
5
1) mHz bedeutet Milli-Hertz, also 1/1000 Hertz. Verwenden Sie MHz (Großbuchstabe M), wenn Sie Mega-Hertz meinen. 2) Welche 8-Bit-MCU? 3) Welche Entwicklungsplatine? 4) Der ATMega 328 muss nicht mit der Geschwindigkeit des Kristalls laufen. Lesen Sie den Abschnitt zur Taktung im Datenblatt, um zu sehen, was möglich ist. 5) Einige ICs haben eine PLL, mit der die externe Taktfrequenz multipliziert werden kann.
Bimpelrekkie
1
@Bimpelrekkie: Der Großteil dieses Kommentars ist die Antwort. Möchten Sie eine Antwort darauf geben?
JRE
Der mit 12 MHz zu vergleichende VCO-Teiler multipliziert f. Das ist, was ein PLL-Freq-Synth macht.
Tony Stewart Sunnyskyguy EE75
@Bimpelrekkie sieht so aus, als hätte es schon jemand für mich repariert. Atmel und atmega328 habe ich schon erwähnt. aber es ist egal, das ist ein Beispiel. afaik atmega328p hat keine PPL? Ich war vor allem neugierig, wie man es einfach multiplizieren kann. Zum Glück hat es Marcus Müller schon sehr gut erklärt.
user3033693
Der Prozessor in dem Computer, auf dem Sie dies lesen, verwendet wahrscheinlich einen 100-MHz-Referenztakt oder langsamer, der Kern läuft jedoch im GHz-Bereich.
old_timer

Antworten:

28

Dies hat nichts damit zu tun, dass der Kern ein ARM-Prozessor ist. Es geht darum, wie die Taktschaltung funktioniert:

In vielen Systemen wie Mikrocontrollern, HF-Chips, Audio-Chips usw. müssen Sie einen schnelleren Takt erzeugen, der ein genaues Vielfaches eines Referenztakts ist (z. B. ein externer Kristall).

Dies erreichen Sie, indem Sie einen spannungsgesteuerten Oszillator (VCO) verwenden, dessen Frequenz Sie durch Ein- oder Verringern einer Steuerspannung einstellen können.

Jetzt können Sie durch Einstellen einer beliebigen Steuerspannung diese mit einer Frequenz in etwa im rechten "Baseball" schwingen lassen, jedoch nicht mit einem exakten Vielfachen der Eingangsfrequenz. Insbesondere VCOs können etwas driftig sein, so dass die Frequenz auch kontinuierlich über den gesamten Ort "wandert". Sie müssen diesen Oszillator steuern, indem Sie ihn mit dem Referenzoszillator vergleichen.

Der Weg dazu ist die Verwendung eines Phasenregelkreises . Die Idee ist einfach:

  1. Teilen Sie die Frequenz, die aus dem VCO kommt, durch einen Faktor N; Das ist der Faktor, den wir wollen, dass der VCO schneller als die Referenz ist. Das geht ganz einfach: Sie können beispielsweise einfach einen digitalen Zähler verwenden, der bis N zählt und erst dann den Ausgang ändert.
  2. Vergleichen Sie das fVCO/N Uhr mit der Referenzuhr um fref. Wenn einer schneller als der andere ist, stellen Sie die Frequenz entsprechend ein. Sie können dies auf digitale Weise tun, indem Sie einfach beide Uhren XOR-verknüpfen - idealerweise ist das Ergebnis, wenn sie identisch sind, eine konstante 0, aber wenn eine schneller als die andere ist, wird es immer häufiger vorkommen, wenn die XOR beider Uhren ist 1; Verlangsamen oder beschleunigen Sie den VCO entsprechend.

Das Obige ist ein Regelkreis, der an die Phase von - daher der Name - gebunden ist.

Für "reiche" Mikrocontroller, die viele Peripheriegeräte haben und daher von mehreren internen Takten profitieren, ist es üblich, mindestens 1 PLL zu haben. Das ATMega328 ist in dieser Hinsicht etwas seltsam: Es ist ein relativ leistungshungriger, relativ peripherer Mikrocontroller, der immer noch keine PLL hat.

Marcus Müller
quelle
1
Danke :) das erklärt es sehr gut! Anstatt Spaß zu haben oder mich auf meine dummen Fehler zu konzentrieren, hast du mir nur gesagt, wonach ich offensichtlich frage. Einige Dinge sind SEHR schwer für mich, bei meiner Legasthenie Aufmerksamkeit zu schenken. Selbst wenn ich meinen Post 2-3 mal durchlese, vermisse ich viele Marken oder setze versehentlich Großschreibung, wo ich nicht muss. Englisch ist nicht meine Muttersprache.
user3033693
7
@ AmyGamble Ihr Englisch ist jedoch sehr gut! Ich denke, der erste Kommentar, den Sie in Ihrem Beitrag erhalten haben, war, dass sehr viele junge Ingenieure die Großschreibung von Einheiten einfach vergessen haben - was später sehr problematisch werden kann :) Ich hoffe, Sie werden sich nie entmutigt fühlen!
Marcus Müller
9

Einige Geräte verfügen über eine PLL, die die Kristallfrequenz mit höheren Frequenzen multiplizieren kann. Der ATMega328 hat keine PLL, er nutzt den Kristall direkt.

Nur ich
quelle