mikrocontroller.net

Forum: FPGA, VHDL & Co. Phasenbeziehung zwischen 2 Clocks ermitteln


Autor: Johann (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Simon D. (simon86)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: Johann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Johann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Simon D. (simon86)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Weltbester FPGA Pongo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
man kann auch ohne Taktteilung arbeiten, wenn sich die beiden Takte 
gegenseitig absampeln

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.