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?
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
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
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.
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
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.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.