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


von Johann (Gast)


Angehängte Dateien:

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.

von Simon D. (simon86)


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...

von Johann (Gast)


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

von Johann (Gast)


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.

von Simon D. (simon86)


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?

von Weltbester FPGA Pongo (Gast)


Lesenswert?

man kann auch ohne Taktteilung arbeiten, wenn sich die beiden Takte 
gegenseitig absampeln

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