Forum: FPGA, VHDL & Co. Zeitmessung in VHDL - synthetisierbar


von 123 (Gast)


Lesenswert?

Hallo,

ich will die Zeit zwischen 2 fallenden Taktflanken messen. Wie geht 
sowas in VHDL, sodass es auch Synthetisierbar ist?

Danke

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


Lesenswert?

123 schrieb:
> ich will die Zeit zwischen 2 fallenden Taktflanken messen. Wie geht
> sowas in VHDL, sodass es auch Synthetisierbar ist?
Zeiten kann man in VHDL nur mit Zählern messen. Du wirst also einen 
weiteren Takt brauchen, der deutlich schneller ist als der zu messende 
Takt.

> ich will die Zeit zwischen 2 fallenden Taktflanken messen.
Woher kommt das Signal? Welche Frequenz hat das Signal?

von 123 (Gast)


Lesenswert?

Eigentlich meinte ich sowas ja ;)
Wenn ich also z.B. einen ein Signal messen will, das von Taktflanke zu 
Taktflange 3µs hat, dann messe ich mit der mindestens doppelten Frequenz 
den Counterwert, wenn das Signal wieder eine fallende Flanke hat(bei der 
ersten fallenden Flanke starte ich den Counter)?

von Syliosha (Gast)


Lesenswert?

Nein du brauchts mehr als die doppelte Frequenz. Dafür bekommst du aber 
dann viele Fehler rein. Je schneller dein Takt für den Counter, umso 
genauer deine Messung.

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


Lesenswert?

123 schrieb:
> dann messe ich mit der mindestens doppelten Frequenz den Counterwert,
Mit der doppelten Taktfrequenz kann dein Zähler bestenfalls auf 2 
zählen. Wenn das ausreicht... :-/

Du solltest z.B. mindestens die 100-fache Taktfrequenz haben, wenn du 
eine 1% Auflösung für Frequenzabweichungen brauchst. Wenn du z.B. wissen 
willst, ob du 1µs oder 1,01µs oder 0,99µs Impulsdauer hast, dann musst 
du mit 100 MHz abtasten. Einfach mal auf ein Blatt Papier aufzeichnen...

von Alt wie Bart (Gast)


Lesenswert?

123 schrieb:
> Hallo,
>
> ich will die Zeit zwischen 2 fallenden Taktflanken messen. Wie geht
> sowas in VHDL, sodass es auch Synthetisierbar ist?
>
> Danke

In VHDL/FPGA stellt man (System)-Takte ein (PLL/DCM konfiguration); zur 
Messung ob man das richtige eingetellt hat nimmt man ein scope.

SCNR,

von Duke Scarring (Gast)


Lesenswert?

123 schrieb:
> ich will die Zeit zwischen 2 fallenden Taktflanken messen. Wie geht
> sowas in VHDL, sodass es auch Synthetisierbar ist?
Alternativ, wenn es schneller gehen muss, baut man sich einen TDC 
(time-to-digital-converter). Im Prinzip ein langes Schieberegister (ohne 
Takt, einfach nur durch die Gatterlaufzeit bestimmt), welches gelatcht 
wird. Anschließend muss eine mehr oder weniger komplexe Logik ran, um 
die Flanken daraus zu bestimmen:
1
000000000000000111111111111111100000000000011111111110000000000111111

Duke

von Lars R. (lrs)


Lesenswert?

Lothar M. schrieb:
> 123 schrieb:
>> dann messe ich mit der mindestens doppelten Frequenz den Counterwert,
> Du solltest z.B. mindestens die 100-fache Taktfrequenz haben, wenn du
> eine 1% Auflösung für Frequenzabweichungen brauchst.
Für Frequenzabweichungen reicht auch der Halbe oder weniger, wenn er nur 
genau genug ist. Allerdings geht es dann nicht mehr um die Zeitdauer 
zwischen zwei einzelnen Flanken.

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


Lesenswert?

Alternativ, wenn es keine Impulsauer, sondern eine Frequenz ist, die 
gemessen werden soll, dann kann man mit der schnellen Eingangsfrequenz 
einen Zähler hochzählen lassen und bei Erreichen von z.B. 1000 ein Flag 
setzen...

von Halbleiterstudent (Gast)


Lesenswert?

Man könnte mehrere Flanken messen z.B. 100 Stück und das Zählergebnis 
durch 100 teilen, wird genauer.

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


Lesenswert?

Halbleiterstudent schrieb:
> Man könnte mehrere Flanken messen z.B. 100
Das scheint so ziemlich die selbe Idee zu sein... ;-)
Nur ohne konkrete Hardwareumsetzung.

von Duke Scarring (Gast)


Lesenswert?

Halbleiterstudent schrieb:
> Man könnte mehrere Flanken messen z.B. 100 Stück und das Zählergebnis
> durch 100 teilen, wird genauer.
Mann könnte auch 256 Flanken zählen, dann wird die Division in Hardware 
trivial ;-)

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.