Taktphasenverschiebung funktioniert nicht auf FPGA

Ich habe ein Projekt, bei dem ich zwei Uhren mit der gleichen Frequenz verwende, von denen eine eine Phasenverschiebung von -90 Grad hat. Das FPGA-Board, das ich verwende, ist ein Nexys A7-100T, das mit Vivado in VHDL konfiguriert ist.

Ich habe die interne Uhr auf der Platine mit einer Beschränkungsdatei verwendet, die Pin E3 bei 100 MHz ist. Ich habe dann mit dem Taktassistenten auf Vivado eine Komponente erstellt, die den eingegebenen 100-MHz-Takt nimmt und zwei 5-MHz-Takte ausgeben sollte; Clock1 und Clock2, wobei Clock2 die Phasenverschiebung hat.

Als ich jetzt mein Design testete, funktionierte es nicht, also entschied ich mich, die beiden Taktsignale zu testen, indem ich Taktteilerzähler durchlief und sie auf einer separaten LED auf der FPGA-Platine herausbrachte.

Wenn ich das Design ausführe, gibt es keine Phasenverschiebung auf den Uhren, da beide LEDs gleichzeitig blinken, was erklärt, warum mein Design nicht funktioniert.

Meine Frage ist, hat jemand schon mal ein solches Problem gehabt? Was sind die einzigen Informationen, die ich in die Bilder unten eingeben muss, um eine so einfache Uhreinstellung vorzunehmen?

Ich habe derzeit keinen Zugriff auf Vivado, um Bilder meiner Einrichtung des Uhrassistenten bereitzustellen, aber ich zeige ein Google-Bild des Assistenten und ich habe alle oben genannten Informationen korrekt eingegeben.

Danke für jede Hilfe, ich bin mir nicht sicher, was ich tun soll.

BEARBEITEN

Hier sind Screenshots meiner Uhr-Assistenten-Einstellungen:

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Hier ist mein Screenshot der Oszilloskopmessungen unten. Die Uhren zeigen die 90-Grad-Phasenverschiebung, aber ich bin mir nicht sicher, warum sie "gerundet" erscheinen. Ist dies ein Problem mit meinen Messungen auf dem Oszilloskop?

Geben Sie hier die Bildbeschreibung ein

Wie in Nipos Antwort erwähnt, liefert Ihr Test keine ausreichende Überprüfung des 5-MHz-Phasenversatzes. Können Sie näher darauf eingehen, „dass mein Design beim Testen nicht funktioniert hat“?
Ich erstelle einen RISC-Prozessor auf einem FPGA. Diese zwei Takte werden verwendet, um Daten von Registern auf einen Datenbus freizugeben, und der andere Takt mit der Phasenverschiebung dient dazu, Daten in Registern von dem Datenbus zu speichern. Beide Szenarien verwenden die ansteigende Flanke jedes Takts. Ich habe es während der Simulation getestet und es funktioniert perfekt, aber auf dem FPGA scheint es nicht zu funktionieren. Ich würde die Uhren gerne zuerst testen, bevor ich weiter gehe, aber ich bin offen für Ratschläge :)
Wie wäre es mit einer einzigen Uhr, bei der der Sender bei der positiven Flanke Daten auf den Bus legt und der Empfänger die Daten bei der negativen Flanke speichert? Dies würde eine Phasenverschiebung von 180° ergeben. Muss es 90° sein oder sind 180° akzeptabel?
@tim Ich habe nie darüber nachgedacht, als ich den Prozessor mit den beiden um 90 Grad verschobenen Uhren entworfen habe und es perfekt simuliert hat. Tatsächlich werden die Daten während des gesamten hohen Teils des ersten Takts auf den Bus freigegeben, und die Daten werden nur während der ansteigenden Flanke des verschobenen Takts gespeichert.
Ich habe die Spuren bei 5 MHz gemessen und das Bild in der obigen Frage gepostet. Ich kann die Phasenverschiebung sehen, bin mir aber nicht sicher, warum sie "gerundet" erscheinen. Muss es ein Messproblem mit meinem Oszilloskop-Setup sein?
Die Wellenform ist eine Funktion vieler Faktoren: die Eigenschaften des Treibers, die Art der Last an diesem Pin, die Bandbreite des Oszilloskops, die Bandbreite der Oszilloskopsonden, die verwendete Erdungsmethode, wobei die Oszilloskopsonden die Haupteinflussfaktoren sind. Diese Signale sehen für mich OK aus, monotone Steigung durch die Grauzone. Sie können kleine Ausläufer auf jeder Wellenform sehen, die dem Beginn des Übergangs auf dem anderen Kanal entsprechen. Dies könnte mit der Erdung der Oszilloskopsonde zusammenhängen.
@Troutdog Ich habe die Sondendämpfung auf 10x eingestellt und die Wellen erschienen viel quadratischer, mit nur wenig Klingeln im hohen Teil der Wellenform.

Antworten (1)

Wenn zwischen zwei 5-MHz-Takten eine Phasenverschiebung von 90 ° besteht, bedeutet dies, dass zwischen ihnen ein Zeitversatz von 50 ns besteht.

Wenn Sie diese beiden Takte durch 5000000 teilen, indem Sie zwei Instanzen derselben Zählerstruktur verwenden, erhalten Sie zwei 1-Hz-Signale mit einem Versatz von 50 ns dazwischen (was ungefähr 0 ° bei 1 Hz entspricht). Ich bezweifle, dass Sie das mit bloßen Augen sehen können.

Für mich gibt dieser Test also keinen Hinweis auf den tatsächlichen Versatz zwischen Ihren beiden 5-MHz-Takten.

Es könnte weitaus interessanter sein, die beiden 5-MHz-Takte auf IOs (über ODDR-Blöcke) weiterzuleiten und ein Oszilloskop zu verwenden.

Ok, ich werde das Oszilloskop an einige FPGA-Pins anschließen und den Skew anzeigen.
Ich habe das Oszilloskopbild in meinen Fragetext eingefügt. Es scheint keine Phasenverschiebung zu geben.
@ David777 Ihr Scope-Bild zeigt eine Ausgangsfrequenz von 0,25 Hz. Sie scheinen immer noch Ihre 5-MHz-Signale zu teilen, so dass Sie die Phasenverschiebung aus dem von Nipo erklärten Grund immer noch nicht sehen werden. "Die Uhren werden durch Trennblöcke geführt, um sie zu verlangsamen, da sie auf meinem Zielfernrohr gekrümmt erschienen." Sie haben ein 50-MHz-Oszilloskop, das perfekt in der Lage sein sollte, eine 90 ° -Phasenverschiebung auf einem Paar von 5-MHz-Rechteckwellen anzuzeigen. Sie sollten untersuchen, warum Sie keine guten Bereichsspuren erhalten, anstatt Teiler hinzuzufügen, die die Informationen zerstören, die Sie sehen möchten.
@ David777 Wie hast du die 5-MHz-Signale angeschlossen? Haben Sie eine 10:1-Sonde verwendet, ohne die Anweisungen zur Anpassung der Sondenkompensation im Handbuch des Oszilloskops (oder anderswo) zu befolgen?
@GrahamNye Ok, ich werde die Taktteiler entfernen und die 5-MHz-Rechteckwellen direkt messen. Ich habe gerade eine normale passive Sonde verwendet, die auf 1x Dämpfung eingestellt ist.