Phasenbeziehung zwischen 2 Clocks ermitteln

Gast #1834253
Hallo @ all

Ich habe 2 AD-Wandler. Jeder AD-Wandler erzeugt 1 Dataready-Signal. 
Diese beiden Datareadysignale sind  beim FPGA auf Clockbuffer gelegt.

Im normalen Fall ist die Phasenverschiebung zwischen den beiden Signalen 
90°. Jedoch kann es passieren das die Phasenverschiebung zwischen den 
beiden Datareadysignalen 180° beträgt.

Dies hängt damit zusammen das der Clock manchmal unterbroche wird und 
die AD-Wandler dadurch unterschiedlich starten.

Jetzt möchte ich im FPGA erkennen wie die Phasenlage der beiden 
Leitungen zueinander. Ich habe mir gedacht ich erzeuge erst einmal mit 
Hilfe eines FF den Takt mit der halben Freqeunz.

Dann muss ich aus dem einem Signal wieder einen Takt erzeugen und das 
andere Signal abfragen. z.B. so. Wenn eine ansteigende Flanke vom 
reduzierten CLK kommt und dann das reduzierte Signal den Zustand 1 
besitzt dann ist die Phasenlage 90° wenn nicht dann ist die Phasenlage 
180°


Jedoch halte ich diese Lösung nicht für besonders sinnvoll. Vielleicht 
gibt es bessere Vorschläge. Die Datareadyleitungen kann ich nicht auf 
einen DCM legen, da der Clock stark jittert.
Angehängte Dateien:
Hallo!

Erzeuge dir doch einen Abtastclock mit dem DCM und taste beide 
ADC-Clocks mit dem Abtastclock ab und zähle die Zeit zwischen den 
Flanken...

z.B. ADC-Clock beträgt 50 MHz -> lass dir mit dem DCM einen Takt von 250 
MHz erzeugen und taste damit beide Signale ab, Genauigkeit wäre dann 60 
Grad...
Gast
Das Datareadysignal hat leider schon eine Freuqenz von 200MHz Da ist 
nicht mehr viel Luft nach oben.

Auch wenn ich die Dataready Clock durch FFs vergeringere bleibt die 
Phasenlage konstant.

Ich verwende momentan einen einen Virtex 5 Speedgrade -3 will aber in 
Zukunft auf den Speedgrade -1 wechseln
Gast
Du hast recht Simon. Wenn ich den Takt der Datareadyleitung durch mehre 
in Reihe geschaltete FlipFlops vergeringere, dann kann ich mit einem 
schnellen Takt herausfinden wie die Phasenlage ist.

Jedoch habe ich momentan ein Konten im Gehirn, so das ich über ein 
Quellcodebeispiel dankbar wäre.
Johann schrieb:
> Wenn ich den Takt der Datareadyleitung durch mehre
> in Reihe geschaltete FlipFlops vergeringere, dann kann ich mit einem
> schnellen Takt herausfinden wie die Phasenlage ist.

also benötigst du zwei Taktdivider bzw. Zähler und dann kommt der 
Phasendetektor...

Das Takten des Detektors kann mit einem der ankommenden Datareadysignale 
geschehen... aber nich mit der runter gesetzten Frequenz sonder mit der 
vollen Frequenz...

Ich könnte dir nur ein Verilog Beispiel anbieten, ist das in Ordnung?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.