Forum: FPGA, VHDL & Co. Schmitt Trigger in VHDL


von Chris (Gast)


Lesenswert?

Hallo,

hab wieder mal ne Frage. Und zwar will ich einen Takt von 20 MHz ins 
FPGA einlesen. Wenn ich mir das Taktsignal mit dem Oszi anschaue ist 
dies ziemlich abgerundet, also kein sauberes Rechtecksignal mehr, eher 
ein Sinus. Ich will mich auf diesen Takt syncen. Würde es passen wenn 
ich mir eine einfache Flankenerkennung schreibe, die mir saubere 
Signalflanken detektiert, oder wie würdet ihr einen Schmitt Trigger 
realisieren?
Danke für Infos und Tips...

von Falk B. (falk)


Lesenswert?

@Chris (Gast)

>hab wieder mal ne Frage. Und zwar will ich einen Takt von 20 MHz ins
>FPGA einlesen.

naja, sagen wir den Takt anlegen. Einlesen tut man Daten.

> Wenn ich mir das Taktsignal mit dem Oszi anschaue ist
>dies ziemlich abgerundet, also kein sauberes Rechtecksignal mehr, eher
>ein Sinus.

Vielleicht ist die Quelle ja auch ein Sinusoszillator und kein 
Rechteckoszillator? Oder du hast einen Messfehler durch falschen 
Tastkopf etc. Ich hoffe du misst a) mit einem Oszi mit min. 100 MHz 
Bandbreite und b) mit einem 10:1 Tastkopf.

> Ich will mich auf diesen Takt syncen.

Syncen, yeahhh baby! Voll grass!

>Würde es passen wenn
>ich mir eine einfache Flankenerkennung schreibe, die mir saubere
>Signalflanken detektiert, oder wie würdet ihr einen Schmitt Trigger
>realisieren?

WENN das Signal WIRKLICH so rundgelutscht ist, nimmt man einen externen 
Schmitt-Trigger. Wenn nicht, dann einfach ans FPGA anlegen. Naja, 
mit solidem Layout und Masseführung versteht sich, siehe 
Wellenwiderstand.

MfG
Falk

von Chris (Gast)


Lesenswert?

Danke für die aufheiternde Antwort ;-)
Ja,  das Oszi packt 100 MHz und Tastkopf passt auch...sonst hätte ich 
auch nicht nachgefragt...Ne parasitäre Kapazität hat mir das 
Rechtecksignal abgeschliffen.

von Harald F. (hfl)


Lesenswert?

Sorry Chris, ich kann mir das auch nicht ganz verkneifen. Der Engländer 
sagt dazu "garbage in garbage out". Also sorge lieber dafür, dass die 
Signalintegrität auf der Leitung gewahrt ist, als dich um eine 
Symptombekämpfung innerhalb des FPGAs zu kümmern.

Having said this, kann ich dir ja verraten, dass ich neulich ein 
ähnliches Problem hatte. Das Oszilloskop zeigte keine Auffälligkeiten 
des Taktsignals aber durch eine Testschaltung im FPGA konnte ich 
nachweisen, dass im FPGA Taktflanken vorkamen, die "außen" nicht zu 
sehen waren. Wegen einer Reflexion an einer Stichleitung gab es bei 
jeder steigende Flanke de facto zwei Flanken, und bei der fallenden 
Flanke nochmals eine steigende. Allerdings konnte ich an der externen 
Beschaltung nichts ändern und musste daher wohl oder übel auch über eine 
Symptombekämpfung im FPGA nachdenken.

Meine Lösung sieht so aus, dass ich das externe Taktsignal mit einem 
deutlich schnelleren internen Takt abtaste und daraus ein neues 
Taktsignal ableite. Also z.B. erst wenn zwei aufeinander folgende 
Samples 1 sind wird der "neue Takt" auf 1 gesetzt, und erst bei zwei 
aufeinander folgenden Nullen wieder auf 0. Das führt zwar zu einem 
asymmetrischen Takt mit variablem Puls-Pause-Verhältnis, aber wenn dich 
das nicht stört, dann ist das ein gangbarer Ansatz. Denk bitte dran, 
andere Signale, die einen zeitlichen Bezug zu dem Originaltakt haben, 
ebenfalls zu verzögern, damit sich die Verzögerung zumindest teilweise 
kompensiert.

Viel Erfolg!
Harald

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.