Forum: FPGA, VHDL & Co. PLL-Takterzeugung


von Someone-somewhere (Gast)


Lesenswert?

Hallo,

ich würde gerne wissen, wie sich aus einem am FPGA angeschlossenen
Oszillator eine höhere Frequenz gewinnen lässt (PLL)!
Sind dann beide Frequenzen taktsynchron, oder hinkt der neue erzeugte
Takt dem alten hinterher?
Wenn ich aus 10 Mhz die doppelte Frequenz 20Mhz generiert haben will,
gehen die steigenden Flanken des 10Mhz mit der 20Mhz gleichzeitig hoch?

von FPGAküchle (Gast)


Lesenswert?

Hm klar das ist doch das Prinzip der PLL (Phase Locked Loop). Auf
deutsch:

  Phasengekoppelter Regelkreis

Also ein Regler der  Ist auf Soll so reglet, das die Phase (zeitliche
Abstand gemessen zw. Flanke Frequenz1 und Frequenz2) konstant ist.

Übrigens, viele FPGA's haben so was on-chip, da brauchts nix externes
PLL

von someone-somewhere (Gast)


Lesenswert?

Danke.

das mit der internen PLL wusste ich zwar, aber die Funktionsweise war
mir unklar.

Gut zu wissen :)

Ne andere Frage: Wenn ich mit einem Zähler eine externe Frequenz
herunterteile, mir eine andere Frequenz halber Periode erzeuge, wie
sieht es hier mit den Flanken aus? Sind diese nahezu taktsynchron, oder
kommt es aufgrund der Gatterlaufzeiten zu großen Abweichungen.

von FPGAküchle (Gast)


Lesenswert?

Hm ich nehme an du meinst doppelte Periode , der Zähler wird also zum
Toggle-FF. Da geht man von unbekannter Phase aus.
Mit Timingconstraints kann etwas drehen und eine obere Grenze für die
Phase festhalten. Aber hinsichtlich Temperatur- und Spannungsänderungen
ist die Phase variabel, da nicht geregelt. Und FF-Ausgänge können nicht
in allen FPGA als Treiber für (low Skew) Taktnetzwerke genutzt werden.

von TobiFlex (Gast)


Lesenswert?

"Übrigens, viele FPGA's haben so was on-chip, da brauchts nix
externes
PLL"

Das ist richtig! Aber bitte beachten, daß die PLL's in den FPGA's
eine Mindestfrequenz verlangen. Die Cyclones von ALTERA brauchen
mindestens 14MHz. Mit den angesprochenen 10MHz wird das dann wohl nicht
gehen.
Wie es bei den anderen FPGA-Familien aussieht weiß ich nicht - aber das
jeweilige Datenblatt gibt da sicher Auskunft.

Viele Grüße
TobiFlex

von Klaus F. (kfalser)


Lesenswert?

Zur "Gleichzeitigkeit" der Flanken :
Dies gilt nur im eingeschwungenen Zustand und auch nur dann wenn die
Eingangsfrequenz komplett stabil ist.
Die PLL kann leichte Schwankungen der Eingangsfrequenz wegfiltern.
Wenn man einfache und doppelte Frequenz gleichzeitig braucht, ist es
besser die Eingangsfrequenz nicht direkt zu verwenden, sondern eine
PLL, welche beide Frequenzen generiert, also eine Kopie der
Eingangsfrequenz und die doppelte. An den Ausgängen der PLL sind die
Flanken dann garantiert gleichzeitig (genug).
Dies gilt auch für die internen PLL's der FPGA's , z.B. der DCM von
Xilinx. Dieser hat mehrere Ausgänge mit den generierten Frequenzen.

Zum Zähler :
Wenn Du mit einem Zähler eine niederere Frequenz erzeugst, dann sollte
man das Ausgangs-signal nicht als Takt verwenden, sondern nur als
Freigabe (Enable)-Signal. Der langsamere Teil bekommt dann ebenfalls
den schnellen Takt, aber arbeitet nur alle x Takte.
Auf diese Weise vermeidet man das Problem der Gatter-Laufzeiten.
Nur wenn man wirklich Strom sparen muß, macht es Sinn Teile des Designs
 mit einem langsameren Takt zu versorgen.
Grüße
Klaus

von someone-somewhere (Gast)


Lesenswert?

ich arbeite gerade an einem Projekt, in dem Messdaten ausgewertet werden
sollen. Die Daten erhalte ich aus einem AD-Wandler. Der AD-Wandler
leifert mir alle 40Mhz neue Daten, die ich für die Auswertung
zwischenspeichere. Mein FPGA wird mit dem selben Takt des AD-Wandlers
versorgt.
Wie ist es am einfachsten, die Daten ohne Datenverlust komplett
abzuspeichern? Bisher kann ich nur die Hälfte der Daten speichern und
auswerten. Kann man dies auch ohne PLL hinbekommen?

von Klaus F. (kfalser)


Lesenswert?

Das hängt von der Datenmenge ab.
Wenn die Daten blockweise kommen, dann könntest Du die Daten mit dem 40
MHZ Eingangstakt in ein FIFO speichern und langsamer auslesen.

von someone-somewhere (Gast)


Lesenswert?

Die Daten kommen Blockweise alle 25 ns.
Mit nem Fifo kann ich hier leider nichts anfangen, da die Datenmenge
sehr groß ist, Da hilft nur ein schneller SRAM.

von Klaus F. (kfalser)


Lesenswert?

Was für ein FPGA verwendest Du? Hat es eine interne PLL?
Wie groß sind Deine Datenblöcke?

Vielleicht kannst Du einen 80 MHz Oszillator verwenden und den 40 MHz
Takt für den A/D Wandler im FPGA erzeugen.

von Someone-somewhere (Gast)


Lesenswert?

Die Datenblöcke sind 8 bit groß (parallel).
Es ist ein kleiner FPGA von Altera ohne PLL.

Die 40Mhz extern kann ich auch aus externen 80Mhz gewinnen. Dies ist
aber eine Hardware-Lösung! Schade, wird mir wohl vorerst nichts anderes
übrigbleiben.

Wie ist es aber mit PLL? Ist die intern generierte Frequenz(80Mhz) dazu
geeignet (taktsynchron) um die Aufgabe zu lösen (Timings des RAM
beachtend)?

von Klaus F. (kfalser)


Lesenswert?

Welche PLL? Dein FPGA hat ja keine.

Ob man das Timing hinbekommt, hängt von der Geschwindigkeit des SRAM's
ab. Bei 80 MHz kann man alle 12.5 ns ein Signal umschalten, das heisst
daß der WE-Puls im schnellsten Fall 12.5 ns (1 Taktzyklus) anliegt. Da
die Adressen länger anliegen sollen, müssen diese mindestens 2
Taktzyklen (= 25 ns) anliegen.
Ob das mit Deinem SRAM zusammenpasst, kannst nur Du wissen.

Mein Vorschlag wäre den 40 MHz Oszillator durch einen 80 MHz zu
ersetzen. Diese 80 MHz gehen in das FPGA und das FPGA erzeugt 40 MHz,
welche auch nach außen geführt werden, zum A/D Wandler als Takt. Dann
läuft dein A/D Wandler synchron mit dem FPGA, das FPGA aber doppelt so
schnell.

von Someone-somewhere (Gast)


Lesenswert?

>Welche PLL? Dein FPGA hat ja keine

stimmt! aber dies war ne Frage für den Fall, wenn ich ein anderes FPGA
benütze!

Danke für all die Antworten.

von Dirk (Gast)


Lesenswert?

Hi,

wenn das asynchrone SRAM zulangsam ist koennte man auch ein synchrones
SRAM mit Burst Mode benutzen.

Gruß,

Dirk

von SupaChris (Gast)


Lesenswert?

Einen von einer PLL erzeugten Takt sollte man eigentlich nicht für einen
ADC verwenden, wenn man sich nicht Rauschen durch den Jitter einhandeln
will. Besser einen externen Quarzoszillator für den ADC und daraus den
Takt fürs FPGA ableiten. Bei nem 8 Bit ADC mags noch gehn...da geht
eventuell das Rauschem im LSB unter...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.