Hallo,
Ich würde gern eine Platine machen, bei der ich einen CPLD (MAXII) bei
einem 20MHz-Clock betreibe...
Ist es auch bei solch "langsamen" Clocks wichtig auf Leitungsverlegung
und Wellenwiderstände zu achten, oder benötigt man dies nur bei höheren
Clocks?
> Ist es auch bei solch "langsamen" Clocks wichtig auf Leitungsverlegung> und Wellenwiderstände zu achten...
Ausschlaggebend ist nicht (nur) die Grundfrequenz, sondern die
Flankensteilheit der Signale. Wenn du ein Rechteck mit 20MHz übertragen
willst, hast du auch die ungeraden Harmonischen mit 60MHz, 100MHz,
140MHz usw. Und das ist dann schon einen Blick aufs Layout wert... ;-)
Am einfachsten sind die Regeln:
- Fasse dich kurz.
Keine unnötigen Schlenker in der Leiterbahn, keine unnötigen Vias.
- Strom fliesst im Kreis.
Wo ein Strom hinfließt fließt auch einer zurück. Gib dem Rückstrom
(z.B. auf einer Masselage/-leiterbahn) einen möglichst kurzen Weg.
Gut das ganze klein zu halten habe ich sowieso vor...
Aber spielt es eine Rolle welche Form die Leiterbahnen haben (Rund oder
Eckig)?
Da ich von dem MAXII sowieso nur ca 20 Pins brauche habe ich eigentlich
vor die einzelnen pins immer so weit wie möglich voneinander zu trennen
und die dazwischen auf Masse zu legen... ist das denn überhaupt
sinnvoll?
Also bei 20MHz würde ich sagen nein, insbesondere weil es sich ja hier
um digitale Signale und nicht analoge. Man sollte drauf achten wenn die
Leitungslänge nahe an die Wellenlänge rankommt. Bei 20 MHz ist die
Wellenlänge 15m, da bist du mit einem Platinenlayout noch weit davon
entfernt. Selbst bei 200 MHz würde ich den Wellenwiderstand nicht
beachten, hier muss du jedoch schon auf Laufzeiten achten, insbesondere
wenn du Speicher (DDR etc) ansteuern willst.
> Also bei 20MHz würde ich sagen nein, insbesondere weil es sich ja> hier um digitale Signale und nicht analoge.
Das stimmt nicht. Es kommt nicht darauf an wie hoch die Taktfrequenz
ist sondern wie schnell sie sein koennte, also wie schnell die
Taktflanken sind. Ausserdem kann man bei CPLDs auch schnell freude
haben weil die Eingaenge sehr fix sind. Ich hatte z.B Probleme
mit einem I2C im inneren eines CPLD obwohl der Clock da nur 10khz
betraegt und die Leitungslaenge etwa 15cm war.
Man kann es natuerlich hin bekommen, aber ein programmierter PCF8574 in
einem CPLD war auf jedenfall deutlich kritischer als ein echter!
Olaf
Bei 10 kHz kann ich mir nun wirklich nicht vorstellen. Bei 10 kHz liegt
der Pegel ja 0,1ms an. Selbst wenn du die Datenleitung doppelt so lang
machst wie die CLK Leitung geht das immernoch, das sind ja nur etwas
mehr als 1/2 ns Verzögerung. Es geht hier ja um die externe und nicht um
die interne "Verdrahtung". Was man im CPLD mach ist erstmal unerheblich.
> Bei 20 MHz ist die Wellenlänge 15m, da bist du mit einem Platinenlayout> noch weit davon entfernt.
Der gute alte PCI-Bus hatte "nur" 33MHz und da gab es schon recht rigide
Anforderungen fürs Layout :-/
> Bei 10 kHz kann ich mir nun wirklich nicht vorstellen.
Ja, wenn die Flanke in 2ns hochknallt, dann gibt das mit dem passenden
Layout hübsche Überschwinger. Und wenn der Baustein darauf etwas
sensibel reagiert... :-o
Also ich seh bei 20 MHz auch noch kein Problem.. einfach die Leitung
nicht unnötig lange machen und die Masse ebenso gut und kurz verbinden.
Der CPLD ist jetzt auch an seinem Clock-Eingang nicht soo empfindlich,
dass er auf nen Überschwinger etc. gleich beleidigt reagiert.
Timmo H. wrote:
> Bei 10 kHz kann ich mir nun wirklich nicht vorstellen. Bei 10 kHz liegt> der Pegel ja 0,1ms an.
Auch wenn du dir es nicht vorstellen kannst, ist es so. Man kann sich
massive Probleme einhandeln. Gerade die CoolRunner II CPLD schalten
dermaßen schnell ihre IOs, dass man sich locker Frequenzen im Bereich
von einigen hundert MHz erzeugen kann. Und dabei ist es völlig
unerheblich, wie oft die schalten. Denn die Flanke ist das
entscheidende, nicht die Häufigkeit. Wir hatten hier schon CPLD-Designs,
die die verrücktesten Sachen gemacht haben, selbst bei quasi-statischer
Ansteuerung. Wo es geht, setzen wir aktive Terminatoren ein, z.B. die
Pericom Chips.
ahh okay, ich bezog meine Angabe nur auf die Verdrahtung
Oszillator-FPGA.
Was die Signale generell angeht, ist es natürlich sicher so, dass die
Flankensteilheit das entscheidende ist und nicht die Frequenz. Und wenn
die Ausgänge schalten, dann ist es unahbängig von der Frequenz mit der
sie schalten, sondern die Flankensteilheit spielt die entscheidende
Rolle. Und diese wird von der Treiberleistung des Ausgangs bestimmt.
Daher ist es natürlich richtig, dass es zu sehr hochfrequenten Anteilen
im Signal kommen kann.
Man muss sich aber generell fragen, WAS in dem umliegenden Bereich
negativ beeinflusst werden kann: Hat man z.B. auf dem System ein
empfindliches Messystem, dann muss man natürlich drauf achten, dass sie
die Frequenzen nicht störend in die Schaltung einkoppen. Lässt man nur
ein paar LEDs blinken, ist es völlig wurscht, wenn da Störungen auf der
Leitung sind.
Ich weiss nicht, ob du die slew-rate an dem CPLD einstellen kannst. Wenn
ja, dann stell sie so langsam, wie möglich. Weiterhin könntest du mit
Widerständen und/oder kleinen Kapazitäten uf den Leitungen die Flanken
ein wenig "plattklopfen".