Forum: FPGA, VHDL & Co. Taktumschaltung für 6 Takte


von Paul B. (Gast)


Lesenswert?

Ich bekomme 6 verschiedene Datenströme, die statisch umgeschaltet werden 
sollen (und dürfen), womit Glitches erlaubt wären, weil sie nicht 
stören. Die Takte sind leider nicht gleichen Formats und müssen auf eine 
von 2 PLLs übersetzt werden. Dazu muss ich der einen PLL einen von 6 
Takten zuweisen und der anderen einen der ersten 3.

Wie mache ich das am Einfachsten? Bei 3 Takten hatte ich bisher 2 
BUFGMUX verwendet, die in Reihe liegen. (X,Y,Z) Für 6 Eingänge bräuchte 
ich aber 5 Stück!

X = A / B
Y = C / D
Z = E / F

U = X / Y
V = U / Z

Geht das einfacher?

von Paul B. (Gast)


Lesenswert?

Keine Taktumschaltspezis in the house?

von Duke Scarring (Gast)


Lesenswert?

Frank Petelka schrieb:
> Geht das einfacher?
Wahrscheinlich nicht.
Was für einen Chip verwendest Du?
Muß Dein FPGA-Design synchron zu den Taktquellen laufen?
Evtl. kannst Du mit einem asynchronen FIFO arbeiten und Dein Design auf 
einem festen Takt lassen?!

Duke

von Schlumpf (Gast)


Lesenswert?

Frank Petelka schrieb:
> Geht das einfacher?

Vermutlich ja.
Beschreibe mal dein eigentliches Problem und nicht schon die halbe 
Lösung.
Denn eventuell ist der Ansatz, Takte umschalten zu wollen/müssen, schon 
nicht gerade optimal

von Paul B. (Gast)


Lesenswert?

Leider müssen die Takte so umgeschaltet werden, weil es im Betrieb zu 
erfolgen hat.
Das Einsynchronisieren der Daten wird ohnehin gemacht, aber das Ausgeben 
muss eben mit dem Takt laufen, der von aussen gewählt wird.
Daher klappt es auch nicht, eine Ausgangs-PLL zu nehmen und diese 
umzuprogrammieren.

von Schlumpf (Gast)


Lesenswert?

Von welchen Frequenzen reden wir denn da bei den Takten?

von Duke Scarring (Gast)


Lesenswert?

Frank Petelka schrieb:
> aber das Ausgeben
> muss eben mit dem Takt laufen, der von aussen gewählt wird
Geht es, wenn Du für die Takte einen Multiplexer nimmst, dessen Ausgang 
auf einen BUFG und damit noch ein asynchronses FIFO für die 
Ausgangsdaten betreibst?

Duke

von Paul B. (Gast)


Lesenswert?

Duke Scarring schrieb:
> Frank Petelka schrieb:
>> aber das Ausgeben
>> muss eben mit dem Takt laufen, der von aussen gewählt wird
> Geht es, wenn Du für die Takte einen Multiplexer nimmst, dessen Ausgang
> auf einen BUFG und damit noch ein asynchronses FIFO für die
> Ausgangsdaten betreibst?
Sicher, das ginge von der Funktion her, warum? Wie sähe dann eine 
verbesserte Lösung aus?

Schlumpf schrieb:
> Von welchen Frequenzen reden wir denn da bei den Takten?
Bis 125 MHz, einmal auch 133MHz werden es wohl.

von Duke Scarring (Gast)


Lesenswert?

Frank Petelka schrieb:
> Sicher, das ginge von der Funktion her, warum?
Weil Du dann mit zwei Takten auskommst:
1. der interne Prozessingtakt
2. der extern Datentakt

Am Eingang und am Ausgang kommt ein asynchrones FIFO hin, welches 
zwischen den Takten wandelt. Deine verschiedenen externen Takte gehen 
auf einen einfachen Multiplexer und erst danach auf einen BUFG und damit 
in das globale Taktnetz.

Es entfällt der Aufwand die Taktumschaltung mit den Taktressourcen des 
FPGAs abzubilden.

Duke

von Schlumpf (Gast)


Lesenswert?

So wie ich es jetzt verstanden habe, liegen alle diese Takte im Chip 
vor, richtig? Oder werden diese von außen angelegt?

Falls sie intern vorliegen, dann würde ich den internen Teil deines 
Designs, welches mit einem fixen Systemtakt läuft, über einen FIFO mit 
dem Ausgabeteil verbinden. Den Takt für diesen Ausgabeteil kannst du 
über Multiplexer umschalten. Natürlich geht dabei die Phasenlage 
"verloren", aber das stört nicht, da dieser Teil sowieso vom Rest des 
Designs über einen FIFO entkoppelt ist. Sprich: Der FIFO sorgt eh dafür, 
dass sowohl Takt als auch Phase zwischen Eingang und Ausgang des FIFOs 
unerheblich ist.
Der Synthesizer sollte damit auch kein Problem haben.
Du musst halt dafür sorgen, dass das FIFO samt Steuerung so ausgelgt 
ist, dass es bei allen Takten der Ausgabeeinheit zuverlässig 
funktioniert.
Also Steuersignale lange genug anliegen, dass sie auf jeden Fall von 
jedem gewählten Ausgangstakt sicher abgetastet werden können und den 
FIFO so groß wählen, dass selbst bei ungünstigsten Verhältnissen 
zwischen Quell- und Ziel-Takt kein Over- oder Underrun auftreten kann.
Aber dann sollte das meines Erachtens zuverlässig funktionieren.

von Paul B. (Gast)


Lesenswert?

Schlumpf schrieb:
> So wie ich es jetzt verstanden habe, liegen alle diese Takte im Chip
> vor, richtig? Oder werden diese von außen angelegt?
Nein, die kommen von aussen und ich kann / muss mich darauf 
synchronisieren.


> Falls sie intern vorliegen, dann würde ich den internen Teil deines
> Designs, welches mit einem fixen Systemtakt läuft, über einen FIFO mit
> dem Ausgabeteil verbinden.
Sowas habe ich schon. Ich kann eigentlich an jeder Stelle auf den 
Zielausgangstakt überwechseln. Meistens brauche ich ein paar Register.

Das Problem ist der Takt selber, mit dem dann die Geschichte läuft:

Der kommt aus einer der inputs und es muss schaltbar sein, von wem.

Wenn ich die Schaltung das nächste mal überarbeite, mache ich einen 
externen Clock-MUX dran.

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.