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 !
Mache Split Planes. Das mit dem Ring ist ganz gut! mfg Roger PS: Ist Altium Designer!
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
>Druckfrisch und auf Deutsch übersetzt. Njoy.
Ein sehr schöner Artikel!
MfG Benni
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.