Forum: FPGA, VHDL & Co. Signale mit unterschiedlichen clks einsynchronisieren


von Scheuer (Gast)


Lesenswert?

Hallo,

ich habe ein FPGA an den insgesamt 8 Quellen die jeweils über 3 
Datenleitungen Signale schicken. Leider haben die Datenquellen alle eine 
eigene clock. Sie laufen zwar alle mit der selben Frequenz, haben aber 
natürlich kleine Offsets zueinander.

Was wäre hier die beste Methode um die Daten auf den Master clock auf 
dem Board einzusynchronisieren?
Ich würde gerne auf Fifos verzichten.

Vielen Dank

von Marius W. (mw1987)


Lesenswert?

Was sind "kleine Offsets"? Wenn die Offsets wirklich klein im Vergleich 
zur Periodenlänge des Signals sind, dann kannste einfach eine 
Abtastphase nehmen, die für alle Signale passt.

Gruß
Marius

von Scheuer (Gast)


Lesenswert?

Hallo,

ich weiss noch nicht genau wie klein aber auf alle Fälle klein im 
Vergleich zur Periodenlänge.

Wie genau meinst du das mit der Abtastphase die für alle passt? Und wie 
würde ich mir diese erzeugen?

Gruß

von Marius W. (mw1987)


Lesenswert?

Du nimmst dann einfach den Takt einer Quelle und schiebst mit einer 
PLL/DCM den Abtastzeitpunkt da hin, wo alle Werte stabil anliegen.

Gruß
Marius

von Klaus (Gast)


Lesenswert?

Die Frage ist, haben die Quellen (und das FPGA!) wirklich alle den 
selben Takt? Also eine gemeinsame Taktquelle? Oder haben die alle eine 
eigene Taktquelle, die mehr oder weniger die gleiche Frequenz haben? 
Wenn zweiteres, würde das bedeuten, dass die Phasenverschiebung zwischen 
den Takten nicht konstant ist.

Wie sind denn die Datenraten? Wie hoch ist die Taktfrequenz der 
Datenquellen? Hat das FPGA die selbe Frequenz? Wenn nein, welche dann?

von Marius W. (mw1987)


Lesenswert?

Ok, das sollte der TO vielleicht klären, ob die wirklich alle aus einer 
Taktquelle kommen. Wenn nicht, dann hat er aber immer noch die 
Möglichkeit eine automatische Adaption der Phasenlage zu machen. Xilinx 
hat dazu sogar mal eine Application Note verfasst:

http://www.xilinx.com/support/documentation/application_notes/xapp225.pdf

Ist zwar für den Virtex-II geschrieben. Funktioniert aber sicherlich auf 
neueren FPGAs (evtl mit leichten Anpassungen).

Gruß
Marius

von Scheuer (Gast)


Lesenswert?

Hallo,

vielen Dank schon mal für die Antworten.

Alle Quellen haben die gleiche Taktquelle. Allerdings tritt bis die 
Daten am FPGA ankommen eben eine kleine Phasenverschiebung auf.

Ist für diesen Fall die Lösung mit der PLL die beste Lösung oder gibt es 
noch andere Möglichkeiten?

Grüße

von Achim S. (Gast)


Lesenswert?

wenn das Datenauge wirklich klein wäre, könntest du mit IODElays die 
einzelnen Signale individuell so verschieben, dass sie die optimale Lage 
relativ zur Clock haben. Aber wenn das Datenauge groß genug ist, ist die 
Verschiebung der Clock die einfachere Lösung.

von Klaus (Gast)


Lesenswert?

Dann solltest du als nächstes die maximale und minimale 
Phasenverschiebung aller deinen Eingangssignale berechnen. Wenn du die 
Werte hast, kannst du über mögliche Strategien nachdenken. Wie: Einen 
Abtastzeitpunkt, der für alle Signal passt, oder dynamische 
Phasenanpassung, oder IO-Delays oder was auch immer. Dazu muss man aber 
die Voraussetzungen kennen die groß die Phasenverschiebung zum FPGA Takt 
und der einzelnen Signale untereinander ist.

von Schlumpf (Gast)


Lesenswert?

Vor allem muss man auch wissen, ob der FPGA den gleichen Takt wie die 
Quellen hat. Oder ist der deutlich flotter? Wie sieht dein Telegramm 
aus? Sind Synchronisationsstellen möglich. Also z.B. eine Startkennung?
Wenn ja, dann kannst du ja von der Startkennung weg eine bestimmte Zeit 
über eine counter warten und dann abtasten.

von Freddy (Gast)


Angehängte Dateien:

Lesenswert?

Wie sieht das denn mit zwei Synchronisations-Flipflops aus?

von Marius W. (mw1987)


Lesenswert?

Wozu Synchronisations-Flipflops für synchrone Signale? Das ist doch 
total überflüssig. Man muss halt nur die Phase der Abtastung passend 
wählen. Außerdem kann es dir passieren, dass du IMMER während des 
Flankenwechsels abtastest. Dann kannste auch ne Münze werfen... Ist 
genauso effektiv.

Gruß
Marius

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.