Ich möchte einen Flip Flop im FPGA benutzen. Dies hat ja bekanntlich einen D-Eingang und einen Clock-Eingang. Auf den Clock-Eingang gebe ich einen Clock der so ca. 200MHz besitz. Auf den D-Eingang möchte ich ebenfalls einen Clock geben der auch 200MHz besitzt. Da sich die Phasenlage der beiden Clocks um 90° unterscheidet, erhalte ich folgendes 1 als Ergebnis: Wenn die Phasenlaege der beiden Clocks sich um 180° unterscheidet, dann erhalte ich als Ergebnis 0. Nun zu meiner Frage. Laut Datenblatt von Xilinx ist TIDOCK/TIOCKD --> D pin setup / Hold with respect to CLK without Delay 0,39ns (bei einem Virtex 5 Speedgrade -1) 1. Bedeutet dies nun das das Signal nur 0.39ns vor dem Clock stabiel anliegen muss und 0.39ns nach der ansteigenden Flanke gehalten werden muss? 2. Ich kann mir vorstellen das ISE eine Fehlermeldung ausgiebt, wenn ich den ClockBuffer direkt mit dem FlipFlop verbinde. Ich benötige dies um zu erkennen ob die Phasenlage 180° betrgägt oder 90° Die Daten habe ich aus der Tabelle 60 Seite 40.
> Wenn die Phasenlaege der beiden Clocks sich um 180° unterscheidet, dann > erhalte ich als Ergebnis 0. Wenn ich mich nicht irre, hast du bei 180° einen gleichzeitigen Signalwechsel an D und CLK des Registers... das wäre nicht gut.
Nachtrag: Du könntest stattdessen einen "normalen" Datenpfad aus zwei Registern hintereinander bauen, die mit den verschiedenen Clocks an CLK angesteuert werden. Evtl. eine "kurze" Verzögerung dazwischen (1 CLB oder nur Routing-Delay), um Ungenauigkeiten in der Phasenlage auszugleichen. Dann gibst du eine 1 auf den Eingang und schaust, wie schnell sie "durchwandert". Bei 90° sollte das schneller gehen als bei 180°. Da kann man auch dem Synthesetool sagen, dass es diesen Pfad bei der Timing-Analyse ignorieren soll.
Ich habe mich vertan ich meinte 90° und 270°. Ich habe jetzt folgendes gemacht: If(CLK_2 Event und ansteigend)then { If(CLK_1 = '1')then { Phase_90 = '1'; } else Phase_90 = '0'; } Jetzt habe ich halt den CLK_2 im Diagramm der untere Clock als Clocksignal. Den CLK_1 gebe ich auf den D-Eingag des Flip Flops. Nun habe ich jedoch bedenke das es da Probleme gibt, da das CLK_1 Signal ja auf der Clock Leitung liegt.
Johann schrieb: > Nun habe ich jedoch bedenke das es da Probleme gibt Warum erwartest du (speziell) da Probleme? Ich würde die Probleme eher in irgendwelchen Timing-Geschichten vermuten. Aber den skizzierten Ansatz bekommt du garantiert zum Laufen...
Es funktioniert ja auch. Nur liegen beide CLK-Signale auf Clockleitungen. Ich dachte diese Clockleitungen können nicht mit den D-Eingang eines FlipFlops verbunden werden, da dies physikalisch nicht möglich ist.
dann: SIGNAL1 <= CLK1 ; --nebenläufige anweisung If(CLK_2 Event und ansteigend)then { If(SIGNAL1 = '1')then { Phase_90 = '1'; } else Phase_90 = '0'; }
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.