mikrocontroller.net

Forum: FPGA, VHDL & Co. PLL-Takterzeugung


Autor: Someone-somewhere (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: FPGAküchle (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: someone-somewhere (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: FPGAküchle (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: TobiFlex (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: someone-somewhere (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: someone-somewhere (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Someone-somewhere (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)?

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Someone-somewhere (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

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

Gruß,

Dirk

Autor: SupaChris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.