Forum: FPGA, VHDL & Co. Frage zur Takterzeugung


von Micha (Gast)


Lesenswert?

Bin gerade dabei, meine ersten kleinen Schritte in die Wunderwelt der 
FPGAs und deren Programmierung zu gehen. Immerhin hab ich schon irgendwo 
aufgeschnappt dass es zu den "Todsünden" der FPGA Programmierung gehört, 
wenn man sich den Takt für seine Schaltung selber mit einem Zähler 
bastelt. Stattdessen immer eine PLL für ein sauberes Taktsignal...

Nun hab ich allerdings zwei Sonderfälle, wo mir die Antwort nicht ganz 
klar ist:
1) ich bin mit genau dem Takt zufrieden wie er vom externen Oszillator 
reinkommt. Bin ich dann auf der sicheren Seite, wenn ich trotzdem ganz 
vorne eine PLL dransetze, eben mit 1:1 Teilung, oder kann ich die in dem 
Fall weglassen?
2) ich brauch eine wesentlich niedrigere Taktfrequenz, als die PLL 
hergibt. Konkret Altera Cyclone II, ext. Oszi mit 50MHz, komme ich max. 
auf 12,5 MHz runter, ich möchte aber was um 2 MHz. Möchte einen 
altmodischen Prozessor nachbasteln. Ist das Kaskadieren zweier PLLs 
möglich bzw. empfehlenswert? Ausserdem hoffe ich, dass dann in den 
niedrigeren Frequenzbereichen eventuell doch ein Zähler gut genug ist?

von Christian R. (supachris)


Lesenswert?

Wenn du den Takt von Oszillator an einem der dedizierten Takteingänge 
des FPGA (die das gesamte Taktnetz erreichen) einspeist, ist das genauso 
gut, wie der Ausgang einer PLL, u.U. sogar besser, weil dann der Jitter 
nur vom Oszillator abhängt. Intern erzeugte bzw. vom externen Takt 
abgeleitete Takte sollte man nur mit den Clock Managern bereitstellen. 
Oder aber mit Clock Enable arbeiten.

von J. S. (engineer) Benutzerseite


Lesenswert?

Bei 2MHz muss Du entweder ohne PLL arbeiten, weil die meistens mehr 
sehen wollen (Xilinx um die 5MHz, Altera um die 10MHz), oder mit einem 
Takt um die 10-50MHz ins FPGA und dort eine PLL nutzen.

Christian R. schrieb:
> wie der Ausgang einer PLL, u.U. sogar besser, weil dann der Jitter
> nur vom Oszillator abhängt.
... es aber ein Taktrevrveproblem (skwe) geben kann, dass die PLL mit 
SYSTEM_SYNCH Einstellung lösen kann.

Interne PLLs in FPGAs sind heute erheblich besser, als früher, vor allem 
aber sind sie a) von ausreichender Güte für die Applikationen, weil 
sonst täte nichts funktionieren und b) berechenbar und einstellbar 
(s.o.)

Ob es dann weniger jitter ist, als eingespeist, muss man sehen: Einen 
schlechten Takt von Aussen können PLLs auch glätten, wenn man sie träge 
stellt, was bei guten FPGAs geht.

Den Takt von aussen nimmt man nur direkt, wenn er an weitere Daten 
gekoppelt ist und der Bezug durch die PLL verloren ginge wie bei guten 
AD-Wandlern mit eigener PLL.

von Duke Scarring (Gast)


Lesenswert?

Hallo Micha!

Hast Du das Problem mit den Pinzuweisungen auf dem Alteraboard schon 
lösen können?! (Wenn nicht, dann mach hier nochmal einen neuen Beitrag 
auf.)

Micha schrieb:
> 1) ich bin mit genau dem Takt zufrieden wie er vom externen Oszillator
> reinkommt. Bin ich dann auf der sicheren Seite, wenn ich trotzdem ganz
> vorne eine PLL dransetze, eben mit 1:1 Teilung, oder kann ich die in dem
> Fall weglassen?
Du kannst den externen Takt auch direkt verwenden.

> Ist das Kaskadieren zweier PLLs
> möglich bzw. empfehlenswert?
Ist möglich, aber die untere Grenzfrequenz dürfte trotzdem noch ein 
limitierender Faktor sein.

> Ausserdem hoffe ich, dass dann in den
> niedrigeren Frequenzbereichen eventuell doch ein Zähler gut genug ist?
Zur Not geht das auch.
Wenn Du Dein Design komplett im Griff hast, ist es günstiger das Design 
um ein clk_en erweitern. Da läuft dann das Design z.B. mit 10 MHz und 
alle 10 Takte geht das clk_en mal kurz auf '1' um den Takt von 1 MHz zu 
emulieren.

Duke

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.