Forum: FPGA, VHDL & Co. Präzises Triggern (galvanisch getrennt)


von Tim (Gast)


Lesenswert?

Servus,
ich möchte gerne eine 50 MHz getaktete FSM auf einem FPGA-Board mit 
einer Genauigkeit von +-2ns durch ein externes galvanisch-getrenntes 
Signal triggern bzw. starten. Eine deterministische Latenz wäre kein 
Problem.

Ich hatte mir vorgestellt eine Taktleitung und synchron eine 
Signalleitung, die ich einfach runterziehe. So hätte es zumindest auf 
einer normalen Drahtverbindung funktioniert, jedoch was unternimmt man 
bei galvanischer Trennung? Optokoppler, Trafo oder Glasfaser? Hat jemand 
Erfahrung für eine elegante Lösung?

von Falk B. (falk)


Lesenswert?

@ Tim (Gast)

>ich möchte gerne eine 50 MHz getaktete FSM auf einem FPGA-Board mit
>einer Genauigkeit von +-2ns

Also +/-2ns Jitter.

> durch ein externes galvanisch-getrenntes
>Signal triggern bzw. starten. Eine deterministische Latenz wäre kein
>Problem.

Dann geht fast jeder etwas schnellere Optokoppler, wenn die Frequenz 
des Triggers nicht zu hoch ist. 6N137 & Co. Oder was neues von 
Ratiopharm, ähhh, Analog Devices.

>Ich hatte mir vorgestellt eine Taktleitung und synchron eine
>Signalleitung, die ich einfach runterziehe.

Wozu 2 Signale? Das Triggersignal reicht. Man muss es halt 
einsynchronisieren.

von Tim (Gast)


Lesenswert?

Danke für die ersten Hinweise. Ich bin jedoch noch nicht überzeugt :)

Falk B. schrieb:
> Dann geht fast jeder etwas schnellere Optokoppler, wenn die Frequenz
> des Triggers nicht zu hoch ist. 6N137 & Co. Oder was neues von
> Ratiopharm, ähhh, Analog Devices.

Der 6N137 hat eine Rise-Time von 50 ns. Ich kann mir nicht vorstellen da 
+-2ns Jitter zu erreichen. Oder seh ich das falsch?

Falk B. schrieb:
> Wozu 2 Signale? Das Triggersignal reicht. Man muss es halt
> einsynchronisieren.

Durch abtasten mit einem 200 MHz Takt (Periodendauer 5ns) hätte man 
immer noch +-5ns. Wie würde man das besser einsynchronisieren?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Eine 50MHz FSM kann man gar nicht mit +-2ns Jitter "triggern". Die hat 
in sich ja eine Zykluszeit bon 20ns, und somit muss unbedingt da etwas 
mit +-10ns oder schlechter herauskommen...

von Falk B. (falk)


Lesenswert?

@ Tim (Gast)

>Der 6N137 hat eine Rise-Time von 50 ns. Ich kann mir nicht vorstellen da
>+-2ns Jitter zu erreichen.

Stimmt, die Zahl hatte ich so nicht vor Augen.

> Oder seh ich das falsch?

Nein. Da muss man wohl einen deutlich besseren Optokoppler nutzen. Wobei 
die +/-2ns Jitter bei 20ns FSM-Takt akademisch sind. Ausserdem ist die 
fall time nur 12ns typisch, da kriegt man +/-5ns Jitter problemlos hin. 
Denn man kann durch einen Inverter (im FPGA) auf die schnelle Flanke 
triggern, anstatt auf die langsame.

>> Wozu 2 Signale? Das Triggersignal reicht. Man muss es halt
>> einsynchronisieren.

>Durch abtasten mit einem 200 MHz Takt (Periodendauer 5ns) hätte man
>immer noch +-5ns.

Wenn deine FSM sowieso nur mit 50 MHz (20ns) läuft, ist das doch OK! Ein 
Trigger ist im allgemeinen so oder so ASYNCRON zum Takt des Empfängers, 
da geht es so oder so nicht anders oder besser!

> Wie würde man das besser einsynchronisieren?

Keine Ahnung, IMO geht es nicht wirklich besser. Sonst müsste ja die 
Triggerquelle synchron zu deinem 50 MHz Takt arbeiten. Kann man machen, 
ist aber oft nicht möglich.

: Bearbeitet durch User
von Tim (Gast)


Lesenswert?

Falk B. schrieb:
> Keine Ahnung, IMO geht es nicht wirklich besser. Sonst müsste ja die
> Triggerquelle synchron zu deinem 50 MHz Takt arbeiten. Kann man machen,
> ist aber oft nicht möglich.

Richtig, arbeiten wir synchron zu Triggerquelle.
Scheint doch schon knifflig zu sein. Aber ja, das war mein Gedanke. Ich 
schleppe den Takt mit und erstelle per PLL den 50 MHz Takt. Damit kann 
ich source-synchron abtasten. Durch schieben der externen Taktphase 
erreicht man auch weit unter 20ns Genauigkeit. Schlimm ist nur, was man 
nicht rausjustieren kann.

Lothar M. schrieb:
> Eine 50MHz FSM kann man gar nicht mit +-2ns Jitter "triggern". Die
> hat
> in sich ja eine Zykluszeit bon 20ns, und somit muss unbedingt da etwas
> mit +-10ns oder schlechter herauskommen...

Dies gilt bei Überabtastung. Aber nicht bei synchroner Eintaktung. 
Natürlich kann das Datum in der Periode variieren. Falls man die Periode 
jedoch genau bestimmen kann, dann lässt sich das Event über die 
Taktphase feiner setzen.

Ich habe jetzt einen Optokoppler mit 2-4ns rise time gefunden. 
http://www.ti.com/lit/ds/symlink/iso7840.pdf

Sieht schon gut aus. Vom Gefühl her relativ knapp. Gibt es noch andere 
Ansätze/Verbesserungsvorschläge?

von Falk B. (falk)


Lesenswert?

@Tim (Gast)

>Richtig, arbeiten wir synchron zu Triggerquelle.
>Scheint doch schon knifflig zu sein. Aber ja, das war mein Gedanke. Ich
>schleppe den Takt mit und erstelle per PLL den 50 MHz Takt. Damit kann
>ich source-synchron abtasten. Durch schieben der externen Taktphase
>erreicht man auch weit unter 20ns Genauigkeit. Schlimm ist nur, was man
>nicht rausjustieren kann.

Dann braucht man aber keine +/-2ns Jitter. Da kann man sich ggf. mehr 
leisten.

>> in sich ja eine Zykluszeit bon 20ns, und somit muss unbedingt da etwas
>> mit +-10ns oder schlechter herauskommen...

>Dies gilt bei Überabtastung. Aber nicht bei synchroner Eintaktung.

Davon wußten wir bis jetzt nichts.

>Ich habe jetzt einen Optokoppler mit 2-4ns rise time gefunden.
>http://www.ti.com/lit/ds/symlink/iso7840.pdf

Isokoppler, kein Optokoppler. Den OPTISCH arbeitet der nicht.

von Tim (Gast)


Lesenswert?

Falk B. schrieb:
> Dann braucht man aber keine +/-2ns Jitter. Da kann man sich ggf. mehr
> leisten.

Gut, Jitter ist jetzt vielleicht wieder zu speziell. Ich meinte damit 
auch Schwankungen im Betrieb wie Temperatur (Raumtemperatur +-5°C) oder 
auch Alterung.

Mein Ziel wäre es einmal die absolute Latenz mit dem Oszi zu messen und 
abzulegen im Speicher. Alle Ungenauigkeiten sollten nur noch im Rahmen 
von +/-2 ns liegen.

Falk B. schrieb:
>>Ich habe jetzt einen Optokoppler mit 2-4ns rise time gefunden.
>>http://www.ti.com/lit/ds/symlink/iso7840.pdf
>
> Isokoppler, kein Optokoppler. Den OPTISCH arbeitet der nicht.

Das hatte ich übersehn. Nettes Prinzip jedoch. Bis jetzt mein Favorit.

Wäre auch eine Lösung mit Glasfaser denkbar? Wahrscheinlich müsste ich 
mich von niederfrequenten Steuersignalen trennen und dieses in 
verschiedene Bitfolgen modulieren. oder ist das aussichtslos?

von Falk B. (falk)


Lesenswert?

@ Tim (Gast)

>Gut, Jitter ist jetzt vielleicht wieder zu speziell. Ich meinte damit
>auch Schwankungen im Betrieb wie Temperatur (Raumtemperatur +-5°C) oder
>auch Alterung.

Dann sollte man das auch sagen.

>Mein Ziel wäre es einmal die absolute Latenz mit dem Oszi zu messen und
>abzulegen im Speicher. Alle Ungenauigkeiten sollten nur noch im Rahmen
>von +/-2 ns liegen.

>Wäre auch eine Lösung mit Glasfaser denkbar?

Denkbar schon, sinnvoll nein.

> Wahrscheinlich müsste ich
>mich von niederfrequenten Steuersignalen trennen und dieses in
>verschiedene Bitfolgen modulieren. oder ist das aussichtslos?

Was soll der Quark? Glasfaser nimmt man bestenfalls, wenn man in EXTREM 
gestörter Umgebung ein Signal über große Strecken (viele Meter!) 
übertragen muss.

von Tim (Gast)


Lesenswert?

Danke für die zahlreichen Anregungen, damit kann ich schonmal gut 
loslegen.

Falk B. schrieb:
> Was soll der Quark? Glasfaser nimmt man bestenfalls, wenn man in EXTREM
> gestörter Umgebung ein Signal über große Strecken (viele Meter!)
> übertragen muss.

Mit 5 bis 10m ist zu rechnen. Verzeihung, das war bis jetzt auch nicht 
zu ahnen. Trotzdem nochmal danke für die Tipps!

von Falk B. (falk)


Lesenswert?

@Tim (Gast)

>> Was soll der Quark? Glasfaser nimmt man bestenfalls, wenn man in EXTREM
>> gestörter Umgebung ein Signal über große Strecken (viele Meter!)
>> übertragen muss.

>Mit 5 bis 10m ist zu rechnen. Verzeihung, das war bis jetzt auch nicht
>zu ahnen. Trotzdem nochmal danke für die Tipps!

Denk dran, 10m Glasfaser haben allein schon ~50ns Laufzeit. Dazu kommen 
noch die Tranceiver.

von J. S. (engineer) Benutzerseite


Lesenswert?

Das Ganze dürfte nur dann funktionieren, wann man die FSM von aussen 
taktet, weil sie wie schon angeklungen, zu grob abtastet und komplett 
asynchron ist.

Um es mal informationstheoretisch zu formulieren, braucht die interne 
FSM eine Zeitinformation von aussen.

Gewöhnlich löst man solche Themen so, dass man mit einem time code 
arbeitet und Ereignisse in die Zukunft legt, oder das steuernde System 
von aussen muss entsprechend voraus denken, inklusive eventueller 
Latenzen bei Übertragung und Berechnung im Zielsystem.

von Schlumpf (Gast)


Lesenswert?

Wenn die FSM mit 50 MHz arbeitet, dann kann nur alle 20ns "was 
passieren"..
Und wenn du das Triggersignal synchron zum Takt der FSM erzeugst, dann 
muss doch nur gewährleistet sein, dass das Signal mit dem 
darauffolgenden Takt in die FSM übernommen wird.
Dazu kann das Signal eine Laufzeit von 0ns bis 20ns abzüglich der 
Setup-Zeit haben.
Ok, ggf muss der CLK-Skew zwischen Quelle und Senke noch mit betrachtet 
werden.
Aber letztendlich bringt dir doch so kleiner Jitter gar nichts.

von Tim (Gast)


Lesenswert?

Schlumpf schrieb:
> Wenn die FSM mit 50 MHz arbeitet, dann kann nur alle 20ns "was
> passieren"..
> Und wenn du das Triggersignal synchron zum Takt der FSM erzeugst, dann
> muss doch nur gewährleistet sein, dass das Signal mit dem
> darauffolgenden Takt in die FSM übernommen wird.
> Dazu kann das Signal eine Laufzeit von 0ns bis 20ns abzüglich der
> Setup-Zeit haben.
> Ok, ggf muss der CLK-Skew zwischen Quelle und Senke noch mit betrachtet
> werden.
> Aber letztendlich bringt dir doch so kleiner Jitter gar nichts.

Das stimmt so nicht. Die Vorredner liegen da schon richtig. Wenn du den 
Eingangstakt beispielsweise um 5 ns verschiebst, mit der auch die FSM 
getaktet ist, dann verschiebst du auch das Event um 5ns. Auch wenn das 
Raster 20ns ist, wird halt das ganze Raster verschoben.

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.