Forum: FPGA, VHDL & Co. Kleine Zeitdifferenzen messen(CPLD)


von Thorsten (Gast)


Angehängte Dateien:

Lesenswert?

Ich möchte die Zeitdifferenz zweier Signale messen. Es soll nichts super 
genaues werden, es kommt mir nur darauf an zu sehen, ob die Signale 
annähernd
gleichzeitig eintreffen, oder mit größere Zeitdifferenz.

Der Messbereich soll um die 100 Nanosekunden liegen. Das ganze natürlich 
möglichst einfach.
In meiner Bastelkiste habe ich noch ein CPLD(Xilinx 9572) gefunden und 
mir überlegt, ob man nicht die Gatterlaufzeiten nutzen kann. Die liegen 
laut Datenblatt so um die 5 Nanosekunden.

Die Schaltung (siehe Anhang) besteht aus einem XOR-Glied, dass beim 
Eintreffen des Startimpuls den Enable-Eingang der D-Latches freigibt. 
Die Latches übernehmen nun das am Dateneingang anliegende Signal, 
solange bis das Stoppsignal eintrifft, beide Eingänge liegen nun auf 
logisch 1, das XOR
geht auf logisch 0 und deaktiviert die Enable-Eingänge der D-Latches.

Ich habe jetzt nur 2 Latches eingezeichnet, es sollen dann für die 100 
Nanosekunden 20 Latches(5 Nanosekunden) mit jeweils einer LED 
angeschlossen werden. Je größer die Zeitdifferenz, desto mehr Leds 
würden dann leuchten.

Ist das prinzipiell so möglich? Gibt es andere (bessere) Möglichkeiten 
einer Zeitmessung über die Gatterlaufzeiten?

Gruß

von Duke Scarring (Gast)


Lesenswert?

Thorsten schrieb:
> Ist das prinzipiell so möglich?
Deine Idee klingt einigermaßen plausibel.

> Gibt es andere (bessere) Möglichkeiten
> einer Zeitmessung über die Gatterlaufzeiten?
Ich würde einen Zähler nehmen und die Takte zählen.
Bei 100 MHz Zähltakt hast Du eine Auflösung von 10 ns.
Bei 150 MHz Zähltakt kommst Du auf 7.5 ns.
Die 150 MHz Taktfrequenz sollte der CPLD verkraften.

Duke

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


Lesenswert?

Thorsten schrieb:
> In meiner Bastelkiste habe ich noch ein CPLD(Xilinx 9572) gefunden und
> mir überlegt, ob man nicht die Gatterlaufzeiten nutzen kann. Die liegen
> laut Datenblatt so um die 5 Nanosekunden.
Aber eben nur der Maximalwert. "Bestenfalls" ist das Ding signifikant 
schneller...

Duke Scarring schrieb:
> Ich würde einen Zähler nehmen und die Takte zählen.
Man könnte statt eines Zählers auch ein Schieberegister mit hoher 
Frequenz takten.

@ Thorsten:
Wie lange sind die Signale aktiv?

von Thorsten (Gast)


Lesenswert?

Duke Scarring schrieb:
> Ich würde einen Zähler nehmen und die Takte zählen.
> Bei 100 MHz Zähltakt hast Du eine Auflösung von 10 ns.
> Bei 150 MHz Zähltakt kommst Du auf 7.5 ns.
> Die 150 MHz Taktfrequenz sollte der CPLD verkraften.
>
> Duke

Leider habe ich keinen externen Takt zur Verfügung, deshalb ja die Idee 
mit den Gatterlaufzeiten.

Lothar Miller schrieb:
> @ Thorsten:
> Wie lange sind die Signale aktiv?

So lange bis ich eine neuen Messung starte. Also erst beide auf logisch 
0.
Wenn ein Sensor eine logische 1 liefert beginnt die Messung, wenn beide 
auf logisch 1 sind, stoppt sie.
Danach müsste ich die Schaltung resetten.

Noch eine andere Frage, sind die Ausgänge "gebuffert"? Wenn jetzt die 
LEDS bei logisch 0 brennen sollen, dann liegt ja über die Dioden VCC an 
den Dateneingängen an, falls diese nicht gebuffert sind. Ansonsten 
müsste ich noch einen Buffer oder ähnliches zwischenschalten.

Lothar Miller schrieb:
> Aber eben nur der Maximalwert. "Bestenfalls" ist das Ding signifikant
> schneller...

Also wenn es nicht um den Faktor 100 geht, ist das nicht schlimm, dann 
verdopple oder verdreifache die Anzahl der D-Latsches und schließe die 
LEDS nur an jeden n-ten an.

Gruß

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


Lesenswert?

Thorsten schrieb:
> dann liegt ja über die Dioden VCC an den Dateneingängen an
Ähm, die Sache mit den Vorwiderständen in Reihe zu den LEDs hast du da 
aber schon beachtet?

> dann liegt ja über die Dioden VCC an den Dateneingängen an
Das ist in der Praxis nicht so. Sieh dir mal die Beschaltung eines 
IO-Pins an. Und auch, wie interne Signale wieder auf die Makrozellen 
geroutet werden. Du wirst erkennen, dass die internen Pegel der 
Flipflops mit dem IO-Pegel nichts direkt gemeinsam haben. Du könntest 
einen Zähler aufbauen und alle Ausgänge nach GND kurzschliessen, der 
Zähler würde intern trotzdem zählen...

von Uwe (Gast)


Lesenswert?

> Leider habe ich keinen externen Takt zur Verfügung
Ist zwar auch nicht sauber aber du kannst dir aus nem NOT bzw. nem NAND 
einen Oszillator basteln, indem du den output auf den input 
zurückkoppelst.
Eventuel mußt du drei hintereinander schalten und die Optimierung 
abschalten damit das Ding schwingt. Damit kannst du nen Zähler takten 
oder nen Schieberegister. Gleichzeitig wird der Takt in der Nähe der 
Maximal möglichen Frequenz liegen (wenn ich mich nicht Irre).

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


Lesenswert?

Uwe schrieb:
> einen Oszillator basteln, indem du den output auf den input
> zurückkoppelst.
> Eventuel mußt du drei hintereinander schalten
Nennt sich Ringoszillator:
http://www.lothar-miller.de/s9y/categories/29-Ringoszillator

von Thorsten (Gast)


Lesenswert?

Lothar Miller schrieb:
> Thorsten schrieb:
>> dann liegt ja über die Dioden VCC an den Dateneingängen an
> Ähm, die Sache mit den Vorwiderständen in Reihe zu den LEDs hast du da
> aber schon beachtet?

Ähm, ja...


>> dann liegt ja über die Dioden VCC an den Dateneingängen an
> Das ist in der Praxis nicht so. Sieh dir mal die Beschaltung eines
> IO-Pins an. Und auch, wie interne Signale wieder auf die Makrozellen
> geroutet werden. Du wirst erkennen, dass die internen Pegel der
> Flipflops mit dem IO-Pegel nichts direkt gemeinsam haben. Du könntest
> einen Zähler aufbauen und alle Ausgänge nach GND kurzschliessen, der
> Zähler würde intern trotzdem zählen...


Ok, das wollte ich wissen. Da bin ich nicht mehr so ganz fit.
Der Ringoszillator ist auch eine gute Idee, mal schauen wie ich es 
umsetze.
Vielen Dank für die guten Ideen.

Gruß

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.