Hallo, ich will die Zeit zwischen 2 fallenden Taktflanken messen. Wie geht sowas in VHDL, sodass es auch Synthetisierbar ist? Danke
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?
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)?
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.
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...
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,
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
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.
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...
Man könnte mehrere Flanken messen z.B. 100 Stück und das Zählergebnis durch 100 teilen, wird genauer.
Halbleiterstudent schrieb: > Man könnte mehrere Flanken messen z.B. 100 Das scheint so ziemlich die selbe Idee zu sein... ;-) Nur ohne konkrete Hardwareumsetzung.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.