Forum: FPGA, VHDL & Co. Please Help with Clock-Divider


von Abi06 (Gast)


Lesenswert?

Hallo,

ich schreibe gerade mein erstes Programm in VHDL. Ich verstehe die
Funktionsweise der Syntheseumsetzung noch nicht 100% genau. Ich habe
auf meinem Board einen Takt von 50 Mhz. Ich möchte einen Clock-Divider
haben, der mir von diesem Takt abgeleitet einen zwei Takte zur
Verfügung stellt. Einen 100Khz und einen 1Hz Takt.

Zudem habe ich noch ne Frage: Wenn ich ein Modul in VHDL starte, der
auf ein Aeingangssignal reagierend mir ein Ausgangssignal liefert..
Wie kann ich erreichen, dass ich am Ausgang nur einen kurzen Impuls
erhalte, der sofort wieder auf Low geht, auch wenn das Einganssignal
längere Zeit auf High steht?

Danke

von Jörn K. (joern)


Lesenswert?

zu 1)
indem du einen Zähler verwendest, der dir den Takt runterteilt. für den
100 kHz durch 500 teilt und für den 1Hz durch 50*10^6 teilt.

zu 2)
am einfachstn dürfte eine Flankenerkennung mit zwei D-FFs und ein
bißchen Logik umzusetzen sein. Sobald ein 0->1 oder 1->0 Übergang
erkannt wird, bekommst du jede nach Logik, einen Impuls der 1
Taktzyklus lang aktiv ist.

Gruß Jörn

von Abi06 (Gast)


Lesenswert?

kann mir hier jemand einen Code senden, der dies praktisch zeigt?

Danke

von Jörn K. (joern)


Lesenswert?


von Stief (Gast)


Lesenswert?

@Jörn:

Eigentlich muss man durch 250 teilen, um einen 100kHz Takt zu bekommen
und 25*10^6 für den 1Hz Takt. Ansonsten bekommt man die doppelte
Frequenz, weil ja das FlipFlop nur auf die ansteigende Flanke triggern
kann.

von Jörn K. (joern)


Lesenswert?

Kommt drauf an. Wenn nur Enable Signale für die nachfolgenden Logik
generiert werden sollen, die mit der steigenden Flanke des langsamenen
Taktes läuft, muss man durch die doppelten Werte teilen.

Wenn der Takt nach Außen gelegt werden soll, dann gebe ich dir recht.

Gruß Jörn

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.