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ß
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
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?
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ß
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...
> 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).
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.