Gast
#4197589
Hallo, ich will die Zeit zwischen 2 fallenden Taktflanken messen. Wie geht sowas in VHDL, sodass es auch Synthetisierbar ist? Danke
|
Anzeige
|
Zeitmessung in VHDL - synthetisierbar
Gast
#4197589
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?
Gast
#4197601
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)?
Gast
#4197606
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...
Gast
#4197656
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,
Gast
#4197668
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:
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...
Gast
#4198433
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.
Gast
#4198998
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 ;-) Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|