Forum: FPGA, VHDL & Co. Phasen mit FPGA messen


von Owen S. (senmeis)


Lesenswert?

Servus,

man möchte die relative Phase zweier Signale mit dem FPGA auf einem 
Evaluationboard messen. Die beiden Signale stammen aus einem Generator 
aber laufen enlang verschiedenen Wegen. Die Signalfrequenz beträgt 300 
MHz. Der Signalpfad sieht wie folgt aus:

Signale -> ADC x 2 (mit Taktfreq. = 1,8 GSAS) -> FPGA

Bisher habe ich im Internet zwei Verfahren gefunden: Ring Oscillator und 
Time to Digital Conversion, die etwa Zeit messen sollen. Ich möchte nur 
Eure Vorschläge hören. Oder gibt’s bessere Methoden?

Gruss
Owen

von Peter X. (peter_x)


Lesenswert?

Owen Senmeis schrieb:
> aber laufen enlang verschiedenen Wegen.

Immigrant?
Better you tell us, where you come from, before expecting any solutions.

von Fitzebutze (Gast)


Lesenswert?

Moin,

wie soll deine Zeitauflösung aussehen? Willst du Phasenänderungen sehr 
schnell aber eher ungenau detektieren, oder genau und über einen 
längeren Zeitraum?
Mit gezielt plazierten Delays kann man auf dem FPGA gute Ergebnisse (im 
Bereich von picosekunden) bekommen, aber muss sich tief in die Materie 
und die Möglichkeiten der Tools reinbuddeln. Da gibts aus den Reihen 
CERN u.a. einige Papers zu TDC-Methoden. Aber von der Stange wird's 
wenig geben, das Thema ist - je nach verwendeter FPGA-Architektur - 
nicht so ohne und die Tricks werden tendentiell ungern verraten. Zudem 
bist du stark auf die verwendete Architektur oder sogar den Prozess 
angewiesen, portabel ist das also selten.

von Gerhard H. (ghf)


Lesenswert?

Owen Senmeis schrieb:

> man möchte die relative Phase zweier Signale mit dem FPGA auf einem
> Evaluationboard messen. Die beiden Signale stammen aus einem Generator
> aber laufen enlang verschiedenen Wegen. Die Signalfrequenz beträgt 300
> MHz. Der Signalpfad sieht wie folgt aus:
>
> Signale -> ADC x 2 (mit Taktfreq. = 1,8 GSAS) -> FPGA
>
> Bisher habe ich im Internet zwei Verfahren gefunden: Ring Oscillator und
> Time to Digital Conversion, die etwa Zeit messen sollen. Ich möchte nur
> Eure Vorschläge hören. Oder gibt’s bessere Methoden?

Wenn Du die Signale schon in digitalisierter, byte-breiter Form ins FPGA
bekommst, ist es für Experimente mit carry-chains und Ringoszillatoren 
eh zu spät.

Dafür kannst Du zwischen den Sample-Punkten die "virtuellen" Null-
durchgänge ausrechnen und bekommst so für 8/10/12 bit bessere
Aufloesung zwischen dem Clockraster.

Viel billiger wird es mit einem Dual Mixer Time Difference system.
Z.B. beide Signale von 300 auf 1 MHz runtermischen mit dem gleichen
299 MHz-Transferoszillator. Man erhält etwa 300fach bessere
Phasenauflösung. Der Jitter des Transferoszillators hebt sich in
erster Näherung raus. Die Wege zu/von den beiden Mischern müssen
überall schön gleich lang sein.

Als Einstieg:
< http://www.ko4bb.com/~bruce/DualMixerTimeDifferenceSystems.html >

Muss angesichts der Uhrzeit erst mal reichen.
Gruß, Gerhard

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.