Hallo,
ich habe für ein grösseres Bastelprojekt ein FPGA-Board entworfen,
respektive erstmal Schema gezeichnet und das ganze gelayoutet. Es ist
nun eine 6lagige Platine geworden, und nun habe ich dazu noch ein paar
layouttechnische Fragen.
Ich habe übrigens folgenden Lagenaufbau:
Top Layer
Ground Plane
Signal Layer 1
Signal Layer 2
VCC Plane (3.3V)
Bottom Layer
1. Da der FPGA mehrere Versorgungsspannungen benötigt (nämlich 3.3V und
1.2V), und ich die VCC- oder GND-Fläche nur ungern unterbrechen möchte,
habe ich einen Trick angewandt, den ich schon anderswo gesehen habe. Ich
habe auf dem Bottom Layer unter dem FPGA einen Kupferring gemacht, der
mit diesen 1.8V verbunden wird. Bei den entsprechenden Pins des FPGAs
kann nun recht einfach mit einem Via auf diesen Ring zugegriffen werden.
Die Abblock-Cs habe ich einfach direkt auf diesen 1.8V-Ring gesetzt.
Frage: ist das schlecht, oder kann man das so machen? Ich habe rein
zufällig vorhin hier was über diese Technik gelesen, aber die Aussagen
waren etwas widersprüchlich.
2. Auf dem Bottom-Layer habe ich recht viele recht breite Datenbusse mit
vielen parallel verlaufenden Leitungen. Dennoch habe ich recht viel
Platz frei. Ich habe nun über die ganze Unterseite der Leiterplatte eine
einzige grosse Massefläche gelegt. Macht das Sinn, oder wird mir das
eher Probleme bereiten? Meine zu erwartenden Taktfrequenzen sind <= 100
MHz.
Jetzt sind alle Leitungen ringsherum mit Masseflächen umgeben.
Soll ich das auf der Oberseite wenn möglich vielleicht auch gleich
machen?
Wow! Ich kann dir zwar nicht deine Frgaen beantworten aber darf ich
dafür fragen, wie lang du dafür gebraucht hast und welches
Layoutprogramm du verwendet hast? Das sieht alles so professionell aus !
Gerhard schrieb:> 2. Auf dem Bottom-Layer habe ich recht viele recht breite Datenbusse mit> vielen parallel verlaufenden Leitungen. Dennoch habe ich recht viel> Platz frei. Ich habe nun über die ganze Unterseite der Leiterplatte eine> einzige grosse Massefläche gelegt. Macht das Sinn, oder wird mir das> eher Probleme bereiten? Meine zu erwartenden Taktfrequenzen sind <= 100> MHz.
Hallo,
elektrisch ist das ok, aber es ist möglich, dass sich deine Platinen
verziehen, weil die Cu-Verteilung nicht symmetrisch ist. Kann man
auspropieren oder den Hersteller fragen, ob er das hinkriegt. Eine
Möglichkeit wäre auch den Top Layer zu fluten, da ist ja auch viel
freier Platz. Zuviel GND schadet nie.
Gruss Reinhard
Hallo Leute,
danke erstmal für eure Beiträge!
Allerdings muss ich noch anmerken, dass ich wohl keine Angst haben muss,
dass sich die Platine verzieht. Ich werde sie von Hand bestücken, da
denke ich sollte es keine Probleme geben. Später, wenn dann mehrere
solche Teile hergestellt werden, werde ich es zwar schon bei einem
Bestücker machen, aber erfahrungsgemäss haben die
Leiterplattenhersteller mittlerweile den Prozess so im Griff, dass
dieses Problem kaum mehr auftritt. Jedenfalls hatte ich in der Firma
erst vor kurzem eine 500 x 500 mm grosse Leiterplatte gemacht, wo
ähnlich viel Kupfer drauf war. Wellenlöten und im Reflow-Ofen war kein
Problem, es hat sich nix verzogen.
@Roger:
Split Planes habe ich bereits; allerdings, wie gesagt, nicht für die
1.8V für den FPGA.
@Hendi:
Roger hat recht, die Leiterplatte wurde mit Altium Designer erstellt. Am
Layout selber hatte ich ca. 3 Wochen (ich kann nur jeweils Samstags
etwas daran arbeiten). Für das zugehörige Schema etwas länger.
@Alle:
Also, meint ihr, man kann das mehr oder weniger Problemlos so anfertigen
und es funktioniert dann auch ungefähr erwartungsgemäss?
Erwähnen möchte ich noch folgendes: Auf dem Top Layer seht ihr unten den
Stecker X4, welches ein LAN Anschluss ist. Dessen Zuleitungen sind
natürlich impedanzkontrolliert! Frage: Wenn ich nun diese zusätzliche
Massefläche auf der Unterseite habe - hat das einen Einfluss?
Noch was: ihr seht auf dem Top und auf dem Bottom Layer jeweils oben
links zwei bzw. eine Leitung, welche mäanderartig verlegt sind. Das sind
Taktleitungen, welche ich so verlegt habe, dass sie exakt gleich lang
sind. Bekomme ich keine Probleme, wenn rund um diese Taktleitungen herum
so viele Masseflächen sind? Schliesslich bildet sich ja aufgrund der
Isolation zwischen der Taktleitung und der Massefläche eine Kapazität,
die ja doch schon recht gross werden dürfte, da die Leitungen eine
gewisse Länge haben.
Ich hoffe ihr könnt mir noch ein paar Tipps geben! Vielen Dank :-)
Du hast viele Leitungen auch über längere Strecken sehr nahe zueinander
gelegt. Mein Layouter würde sich schütteln ob des potentiellen
Crosstalks. Meist hast Du viel Platz, da kann man die Leitungen durchaus
mit mehr Abstand legen. Wenn Deine Altium Version eine Crosstalkanalyse
erlaubt, würde ich die mal durchführen.
Hi Rudolph,
ja stimmt schon, dass da recht viele Leitungen beieinander sind.
Allerdings muss ich auch sagen: Schau mal ein PC-Mainboard oder eine
Grafikkarte an. Da sind auch ganze Adressbusse parallel verlegt, und
offensichtlich funktioniert es. Ich habe bereits einen Prototypen dieser
Leiterplatte hier (allerdings mit einigen Designfehlern, ausserdem ist
nur ca. die Hälfte der ganzen Schaltung drauf). Dort habe ich den
Adress-/Datenbus ähnlich gelayoutet, und es funktioniert.
Ich werde deinen Einwand beachten, jedoch kann ich leider keine
Crosstalk-Analyse durchführen :-(
Mein erstes FPGA, ein ACEX mit 100MHz bei 3.3V. Ein 2 Lagiger ... unten
auch der Ring mit C's fuer die Speisung, der Rest GND.
Wie schnell ist denn dein FPGA ?
Hi,
mein FPGA ist ein Cyclone II von Altera (Genauer: Ein EP2C8, Speedgrade
8, also der langsamste). Der kann, laut Datenblatt, glaube ich max. 400
MHz, aber ich werde diese maximale Geschwindigkeit sowieso nicht
ausnützen, schon nur wegen des Stromverbrauchs (ich denke, bei 400 MHz
reicht der 1A Spannungsregler für die 1.8V nicht mehr).
Aha. Schoen wenn man sich die Geschwindigkeit fuer die Anwendung
aussuchen kann... Da sollte man auch auf das feingedruckte bei Altera
hinweisen. Der Stromverbrauch fuer eine Frequenz bezieht sich auf 10%
schaltende Gatter. Falls es denn mehr % sich, braucht es mehr Strom.
Der Altium Designer sollte aber Kopplungen von Leitungen rechnen
koennen...
Wie viel Strom braucht denn dein ACEX?
Ich besitze das DE2-Eval Board von Altera, und dort ist für VCCINT ein
LM1117-Spannngsregler (800 mA max.) vorgesehen. Und es funktioniert
problemlos. Deshalb habe ich bei meinem Design dann auch diesen LM1117
übernommen. Für VCCIO, also 3.3V, habe ich eine wesentlich stärkere
Stromversorgung, denn die 3.3V werden auch anderweitig benötigt.
Insgesamt stehen auf den 3.3V 3A zur Verfügung, was wohl reichen sollte.
VCCINT wird mit dem erwähnten LM1117 aus VCCIO erzeugt.
Der Acex ist kaum gefuellt. Er war vor 10 Jahren der einzige, der
bezahlbar war und diese Geschwindigkeit aufwies.
Ich lief aber spaeter mal in dieses Problem mit der zu knappen Speisung.
Das laesst sich zum Glueck mit tieferem Clock beheben.
Was auch noch zu beachten ist, sind die offenen Eingaenge. Offene
Eingaenge gehen in die Mitte floating und ziehen unsinning viel Strom
aus der Speisung. Wenn man die Speisespannung in der Folge nicht mehr
erreicht, wird umprogrammieren etwas schwierig. Daher sollte man einen
externen Speisungsanschluss, zB ein Pad vorsehen.
@ Gerhard (Gast)
>8, also der langsamste). Der kann, laut Datenblatt, glaube ich max. 400>MHz, aber ich werde diese maximale Geschwindigkeit sowieso nicht>ausnützen, schon nur wegen des Stromverbrauchs (ich denke, bei 400 MHz>reicht der 1A Spannungsregler für die 1.8V nicht mehr).
Schon, aber das hat auf die HF-Entkopplung absolut KEINEN Einfluß! Denn
die Gatter schalten IMMER mit voller Geschwindigkeit. Wenn dann das
Layout zu schlecht ist, weil die Zuleitungen zuviel Induktivität und die
Cs zuwenig Kapazität haben, kommt es zu Fehlfunktionen. Auch bei 1kHz
Takt! Siehe Wellenwiderstand.
MfG
Falk
Hi Falk,
ich habe schon auf diesen Kommentar gewartet ;-)
Das ist mir absolut klar. Ich habe an jedem VCC-Pin einen
Abblock-Kondensator. Ausserdem werde ich im Quartus II die "Drive
Strength" oder wie das schon wieder heisst, auf "minimum" stellen,
sodass die Flankensteilheit der Signale reduziert wird.
Mir ist bewusst, dass für die max. Leitungslänge etc. die
Flankensteilheit massgebend ist, und nicht die Frequenz.
Erwähnen möchte ich allerdings noch, dass die Distanz zwischen dem
Signallayer (Top oder Bottom) und dem Ground Layer 0.2mm beträgt und die
Leitebahnen eine breite von 6 mils haben. Daraus resultiert, laut meinem
CAD, ein Wellenwiderstand von 70 Ohm. Wenn ich jetzt noch auf dem Bottom
Layer diese ganze Masse habe, wird der Wellenwiderstand wohl noch etwas
sinken. Auf meinem Testboard hatte ich jedenfalls auch bei ca. 8 cm
Leitungslänge keine Probleme (oder hatte ich einfach Glück?). Was meinst
du denn zu dem Layout?
@hacky
Beim Cyclone II kann man in der Quartus-Software glücklicherweise im
Menü "Unused Pins" auf "Configure as output, driving ground" einstellen.
Unbenutzte Pins werden intern dann mit GND verbunden, wodurch man sich
wohl die Pulldowns sparen kann.
Hallo Gerhard,
> Wenn ich jetzt noch auf dem Bottom Layer diese ganze Masse habe, wird der> Wellenwiderstand wohl noch etwas sinken.
Ja, aber das gilt nur für die Leitungen, die direkt neben der GND-Fläche
liegen -> Coplanare Impedanz.
Ansonsten sieht dein Layout gar nicht schlecht aus.
Gruss Uwe
>Beim Cyclone II kann man in der Quartus-Software glücklicherweise im
Menü "Unused Pins" auf "Configure as output, driving ground" einstellen.
Unbenutzte Pins werden intern dann mit GND verbunden, wodurch man sich
wohl die Pulldowns sparen kann.
Und wie stehen diese Pins vor der ersten Programmierung ?
Hi hacky,
solange der FPGA noch nicht konfiguriert ist, haben alle Pins einen
internen Pulldown-Widerstand. Nach der Programmierung wird dieser
Pulldown ausgeschaltet, und die Pins verhalten sich gemäss der
FPGA-Konfiguration. Leider kann man nicht festlegen, dass Eingänge
automatisch einen Pulldown kriegen, deshalb muss man halt drauf achten,
dass unbenutzte Pins als "Output, driving ground" konfiguriert werden,
und Eingänge immer ein definiertes Potential haben (was ja aber so oder
so immer der Fall sein sollte).
@ Gerhard (Gast)
>Das ist mir absolut klar. Ich habe an jedem VCC-Pin einen>Abblock-Kondensator.
Schon mal gut.
> Ausserdem werde ich im Quartus II die "Drive>Strength" oder wie das schon wieder heisst, auf "minimum" stellen,>sodass die Flankensteilheit der Signale reduziert wird.
Auch gut. Aber den Kern kannst du nicht beeinflussen, dort wird immer
SAUSCHNELL geschaltet. Und dafür muss deine Stromversorgung HF-mäßig
geeignet sein.
>Erwähnen möchte ich allerdings noch, dass die Distanz zwischen dem>Signallayer (Top oder Bottom) und dem Ground Layer 0.2mm beträgt und die>Leitebahnen eine breite von 6 mils haben. Daraus resultiert, laut meinem>CAD, ein Wellenwiderstand von 70 Ohm.
Naja, mein Verweis auf den Wellenwiderstand ist etwas irreführend.
Bei der Stromversorgung will man den niedrigstmöglichen Widerstand
haben, auch bezüglich Wellenwiderstand. Also eher was in Richtung 1 Ohm
und weniger! Und das bitte von 0..1GHz++, möglichst ohne größere
Resonanzen.
>sinken. Auf meinem Testboard hatte ich jedenfalls auch bei ca. 8 cm>Leitungslänge keine Probleme (oder hatte ich einfach Glück?). Was meinst>du denn zu dem Layout?
Sieht ziehmlich gut aus ;-)
MFG
Falk
Falk Brunner schrieb:> Naja, mein Verweis auf den Wellenwiderstand ist etwas irreführend.> Bei der Stromversorgung will man den niedrigstmöglichen Widerstand> haben, auch bezüglich Wellenwiderstand. Also eher was in Richtung 1 Ohm> und weniger!
Stimmt. Dieser Wert wird bedingt durch den Lagenaufbau (grosser Abstand
GND-Vcc)aber sicherlich nicht erreicht werden. Das Board sollte denoch
prima funktionieren, wenn auch nicht mit Vmax :-)
Gruss Uwe
P.S. Du hast Passermarken auf deinem Board - lässt du Bestücken ?
@Falk
okay, wie gut meine Stromversorgung HF-Mässig ist, weiss ich nicht.
Anbei findest du das Schema, wie ich den Regler beschaltet habe. Beide
Elkos sind Low-ESR Tantal Elkos. Kannst du dazu vllt. mal ein Statement
abgeben?
@Uwe
was meinst du mit Vmax? Oder ist das ein Tippfehler, und du meintest
fmax? :D
Aber 100 MHz liegen wohl noch drin, oder. Würde es ansonsten genügen,
wenn ich einfach einen dickeren Spannungsregler montiere?
Das mit den Passermarken habe ich einfach vorsorglich mal so gemacht.
Evtl. werde ich das Teil bestücken lassen, da ich u.U. noch einige davon
brauchen werde.
@ Gerhard (Gast)
>Elkos sind Low-ESR Tantal Elkos. Kannst du dazu vllt. mal ein Statement>abgeben?
C8 und C9 sind zu klein, wenn der Kern mal schlagartig Strom ziehen
will. Da braucht man eher 100µF, ggf. mehr. Ich muss mir mal wieder
etwas Webspace beschaffen, dann stell ich meinen Kram mal wieder Online,
dort ist u.a. eine Messung für die Stromversorgung von FPGAs drin.
MFG
Falk
Falk,
ich denke, dein "Kram", wie du das so abschätzig nennst, interessiert
viele Leute. Ich würde dir von meinem Webspace was abgeben, wenn du
willst (kostenlos). Oder noch besser: stell es doch im Wiki rein, damit
es jeder anschauen kann.
@ Gerhard (Gast)
>willst (kostenlos). Oder noch besser: stell es doch im Wiki rein, damit>es jeder anschauen kann.
Jetzt wo du es sagst, klingt das eigentlich einleuchtend. Werd ich
gleich mal machen!
MFG
Falk
Hi Falk,
Die Artikel sind sehr interessant und durchaus lehrreich.
Ich habe jetzt deine Tipps und das, was ich in deinen Artikeln gelesen
habe, wie folgt umgesetzt:
- Für C9 habe ich einen Super Low ESR Alu-Elko mit 100 uF genommen.
- Bei dem Kupferring, der VCCINT für den FPGA bereitstellt, habe ich
rinsherum noch 1 uF Keramikkondensatoren verteilt, zusätzlich zu den 100
nF, die ja eh schon da sind.
Guck dir mal das Bild an:
N2 ist, wie gehabt, der LM1117. Der ist mittels einer relativ grossen
Fläche mit dem C106 verbunden, also der Ausgangs-Elko von 100 uF. Über
eine ganze Reihe von Vias ist die Ausgangsspannung des Reglers nun mit
den inneren beiden Signallayern verbunden, wo ich wieder relativ
grossflächig versucht habe, zum VCCINT-Ring zu verbinden. Das auch
wieder über eine ganze Reihe von Vias.
Unter dem FPGA habe ich dann bei jedem Pin einen 100 nF
Abblockkondensator platziert, und zwar habe ich den, wie bereits
angedeutet, einfach auf die Fläche drauf gelegt.
Als Masse dient die das ganze Board bedeckende Massefläche.
Na, was meinst du? so könnte es, glaube ich, schon funktionieren. Oder
ist das ganze Murks?
@ Gerhard (Gast)
>- Bei dem Kupferring, der VCCINT für den FPGA bereitstellt, habe ich>rinsherum noch 1 uF Keramikkondensatoren verteilt, zusätzlich zu den 100>nF, die ja eh schon da sind.
Kann man machen, ob es viel bringt weiß ich nicht. Schadet aber auch
nicht.
>N2 ist, wie gehabt, der LM1117. Der ist mittels einer relativ grossen>Fläche mit dem C106 verbunden, also der Ausgangs-Elko von 100 uF. Über>eine ganze Reihe von Vias ist die Ausgangsspannung des Reglers nun mit>den inneren beiden Signallayern verbunden, wo ich wieder relativ>grossflächig versucht habe, zum VCCINT-Ring zu verbinden. Das auch>wieder über eine ganze Reihe von Vias.
Alles sehr reichlich dimensioniert, passt schon. Die Hälfte der VIAs am
Regler und Elko würde es aber auch tun ;-)
>Unter dem FPGA habe ich dann bei jedem Pin einen 100 nF>Abblockkondensator platziert, und zwar habe ich den, wie bereits>angedeutet, einfach auf die Fläche drauf gelegt.>Als Masse dient die das ganze Board bedeckende Massefläche.
Ist OK, aber die Kondensatoren würde ich über Thermals an die Flächen
koppeln, sonst hast du ziemliche Probleme beim Löten, erst recht bei
maschinellem Löten im Reflow (Tombstone effect).
>Na, was meinst du? so könnte es, glaube ich, schon funktionieren.
Sieht sehr gut aus.
> Oder ist das ganze Murks?
Nein, keinesfalls.
MfG
Falk
Hi Falk,
danke für deine Kompetente Hilfe!
Noch zu den Vias. Ich bin mir nicht sicher, wie viele es davon wirklich
benötigt. Immerhin haben sie nur 24 mil Durchmesser und 12 mil Bohrung,
sind also schon recht klein. Ich könnte mir vorstellen, dass die dann
schon eine gewisse Induktivität aufweisen, deshalb habe ich immer
möglichst viele genommen, um den Effekt zu minimieren. Auch bin ich mir
über die Strombelastbarkeit nicht ganz sicher; Immerhin fällt über
diesen Vias dann ja auch was ab, wenn der FPGA richtig Strom zieht.
@ Gerhard (Gast)
>Noch zu den Vias. Ich bin mir nicht sicher, wie viele es davon wirklich>benötigt.
Weniger als du jetzt hast.
>möglichst viele genommen, um den Effekt zu minimieren. Auch bin ich mir>über die Strombelastbarkeit nicht ganz sicher; Immerhin fällt über>diesen Vias dann ja auch was ab, wenn der FPGA richtig Strom zieht.
Soviel Strom kann es gar nicht ziehen, denn der LM1117 bringt nur 800mA
;-)
Siehe Leiterbahnbreite und
http://www.fs-leiterplatten.de/html/el__bemessung.html
MFG
Falk