Forum: FPGA, VHDL & Co. [CPLD Design] Frequenzteiler


von Andreas Auer (Gast)


Lesenswert?

Hi.

Hab folgendes Problem.... ich hab einen CPLD von Xilinx (XC9500XL
Serie) und möchte darauf einen variablen Frequenzteiler
implementieren.
Der Frequenzteiler ansich ist kein Problem. Variable auf einen
bestimmten Wert setzen und diesen dann runterzählen. Wenn 0 erreicht
wird, toggelt der CLK_OUT Pin (geteilte Clock Frequenz).

Der Nachteil bei diesem Frequenzteiler besteht daran, dass er zumindest
schonmal durch 2 teilt. Und genau das will ich nicht.
Ich brauche einen Frequenzteiler, der die Quarzfrequenz auch ungeteilt,
also 1:1 auf einen Ausgang durchlassen kann!
Geht sowas, und wenn ja, wie (Beispiele bevorzugt in Verilog)?

mfg
Andreas

von Hagen (Gast)


Lesenswert?

Zählweise ändern, also VOR dem Dekrementieren auf 0 abfragen und Signal
geben. Wird nun der Counter auf 0 initialisert so wird im Grunde
niemals dekrementiert sondern immer der Clock 1:1 durchgereicht.

Gruß Hagen

von Andreas Auer (Gast)


Lesenswert?

Naja... das funktioniert ja auch nicht...
Ich zähle bzw. überprüfe ja nur bei jeder Taktflanke (posedge). Auch
wenn ich jetzt bei jedem mal den Ausgang toggle, wenn die Taktflanke
kommt, dann habe ich leider auch maximal die halbe Takfrequenz
erreicht.

original:  _____|^^^^^|_____|^^^^^|_____|^^^^^|_____
geteilt:   _____|^^^^^^^^^^^|___________|^^^^^^^^^^^

klar, oder?!

mfg
Andreas

von Jonas H. (Gast)


Lesenswert?

...mit einem MUX einfach die Quarzfrequenz/Teilerfrequenz nach Bedarf
zum CLK_OUT durchschalten.

von haki (Gast)


Lesenswert?

Nimm doch einfach einen Zähler mit restfunktion und prüfe die Ausgänge
mit einer Logik. Prüft die Logil auf 0x00, wird bei jedem Takt der
Zähler resettet. Das Signal, mit dem Du den Zäher resettest, ist
gleichzeitig Dein Ausgangssignal. Dann musst Du nur noch die Logik
variabe machen.

Mattias

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.