Ich möchte gerne eine Frequenzmessung durchführen.
Kurze Erleuterung des Problems:
Ich habe 3 Spannung die ich messe und mit Hilfe von VCO's in eine Frequenz umwandele. Diese 3 Frequenzen will ich messen um mit diesen Werten im FPGA weiter zuarbeiten.
Wie kann ich die Messungen der Frequenzen am besten in VHDL realisieren?
Gruß Amre
Re: Frequenzmessung
Hi,
ich weiß nicht wie hoch die Frequenzen bei dir sind, aber wenn Sie nicht so hoch sind kannst du eine Impulsabstandsmessung machen.
D.h. du lässt einen Zähler mit hoher Frequenz hochzählen und wenn die positive Flanke deines Meßsignals kommt hälts du den Zähler an. Dieser Wert gibt dir dann auskunft darüber wie groß die Frequenz ist. Unter dem Beitrag "Impulsabstandsmessung" ist auch eine Lösung beigelegt.
Re: Frequenzmessung
Hallo Sven vielen Dank erstmal für den Tip.
Welche Frequenz hat dein digitales Signal?
Ich habe einen Frequenzbereich von 50kHz - 500Khz. Hast du das Programm (Impulsabstandmessung) mal simuliert?? Falls ja wie gut ist die Auflösung!
Gruß Amre
Re: Frequenzmessung
Hallo,
Flanken kann man eigentlich prima mit "rising_edge" oder "falling_edge" abfragen:
z.B:
if falling_edge(FREQ_IN) then .... end if;
wenn Du die Abfrage aber in einem getakteten Prozess laufen lässt, sollte man nicht zwei unterschiedliche Signale auf Flankenwechsel abfragen, damit haben die Synthesetools Probleme (weil die Flipflops im FPGA nur einen Takteingang haben).
Dann hilft eine Hilfssignal, das den alten Signalzustand speichert:
TEST_PROC process (RESET, SYSCLOCK) begin if RESET = '0' then ... elsif falling_edge(SYSCLOCK) then if OLD_FREQ_IN = '1' and FREQ_IN = '0' then .... end if; end if; end process TEST_PROC;
Mit diesem Code wird der Flankenwechsel auf den Systemtakt synchronisiert erkannt.