Hallo,
ich entwickle grade ein Board, welches einen uC und einen FPGA enthalten
soll. Als uC will ich einen LPC2478 benutzen, da ich diesen bei der
NXP-Sample-Aktion bekommen konnte. Als FPGA habe ich mir jetzt einfach
mal den kleinsten Cyclone II herausgesucht.
So, nun habe ich mal einen Schaltplan gezeichnet, und wollte die
passende LP dazu routen; aber ich verzweifle schier am Layout, und das,
obwohl ich 4 Lagen zur Verfügung habe. Denn am Controller sind SDRAM und
FLASH angeschlossen, sowie der FPGA, und Ethernet und MCI.
Ich wollte mal in die Runde fragen:
1. könnt ihr mir Tipps geben, wie ich das angehen könnte? Ich leide ein
bisschen an Platzmangel. Braucht es wirklich an jedem VCC Pin einen 100n
Kerko?
2. kennt ihr vielleicht ein Board, was bereits ungefähr die genannten
Komponenten enthält (also uC + FPGA + SDRAM + Ethernet + SD-Slot). Dort
könnte man vielleicht mal schauen, wie das so gemacht ist.
Grüsse André
@ André (Gast)
>bisschen an Platzmangel. Braucht es wirklich an jedem VCC Pin einen 100n>Kerko?
Da würde ich nicht allzuviel sparen. Die FPGAs sind SAUSCHNELL, und
wollen demzufolge SEHR gut entkoppelt werden.
Mit 0603 oder gar 0402 sollte das aber machbar sei. 4 Lagen sind aber
für das Unternehmen schon recht sportlich, vor allem wenn es alles auf
kleiner Fläche konzentriert sein soll.
MFG
Falk
Hallo,
wenn Du eine Power- und eine GND Plane hast brauchst Du nicht an jedem
Pin einen Kondensator. 100nF erscheinen mir auch immer etwas groß obwohl
die in den letzen Jahren wohl besser geworden sind. Ich verwende
trotzdem lieber 47nF.
Wegen des Routen - es ist bei zwei freien Lagen, von der eine noch
bestückt ist, schwierig und ich überlasse solche Sachen gerne dem
Autorouter der nach ein paar Stunden und den richtigen Einstellungen und
ggf. ein paar Optimierungen alles entflochten hat. Aber das setzt
natürlich vorraus, dass man einen brauchbaren Autorouter hat. Und nein -
der von Eagle gehört nicht dazu.
Ansonsten halt die Regel auf einer Lage horizontal und der anderen
Vertikal routen. Davon abgesehen - der Preisunterschied zwischen 4 und 6
Lagig ist nicht mehr so hoch. Überlege lieber, ob Du eine 6-Lagig
Platine machst. Da kannst Du dann auch das Horizontal/Vertikal Schema
einigermaßen Problemlos anwenden weil Du zwei (bzw drei) komplett freie
Lagen hast. (Von den Vias mal abgesehen.)
Viele Grüße,
Martin L.
Hallo,
vielen Dank erstmal. Ich werde mal schauen, was die 6 lagige Platine
kostet, und wenn sie nicht allzu viel teurer ist, werde ich es mit 6
Lagen machen.
Dann aber doch noch eine Frage:
Der Daten- und Adressbus muss zu recht vielen Chips. 2 SDRAMs, ein
FLASH, sowie zum FPGA. Dadurch werden die Leitungen recht lang - gibt
das sicher keine Probleme mit dem Datenbustreiber des 2478? mag der
circa 7 cm lange Leitungen noch problemlos treiben? Schliesslich soll
der Rechner mit 72 MHz laufen.
Ausserdem stellt sich mir noch die Frage, ob es Probleme gibt, wenn die
Clockleitungen und Adressleitungen unterschiedlich lang sind. Immerhin
habe ich bei 72 MHz nur noch 13 ns pro Takt, und es müssen ja auch
Setup- und Holdzeiten eingehalten werden (?).
Hallo André,
wenn du auch das Schematic selbst erstellst, dann versuche die Signale
so miteinander zu verbinden, das möglichst wenige Kreuzungen (im
Layout)entstehen und du die Pins ohne Vias direkt verbinden kannst
(zumindest beim FPGA hast du die meisten Möglichkeiten).
Zu deinen Abblock Cs: naja, 100nF ist ein Wert, der nicht totzukriegen
ist.
Dabei handelt es sich um ein Relikt aus "alten" Zeiten (die berühmten
TTL-Gräber), dort funktionierten die noch.
Um die Cs wirst du nicht herumkommen, aber 100nF ist wahrscheinlich zu
viel. Welcher Wert genau lässt sich von hier aus nicht sagen, ist wohl
u.a. abhängig vom Takt und Trise/ Tfall (AFAIK).
Ich denke mal, wenn du an jedem zweiten Vcc Anschluss ein C setzt,
sollte es immer noch funktionieren. Man kann auch mehrere grössere Cs
(4.7µF-10µF Low ESR) in die Nähe der ICs setzen, diese dienen als
Ladungsreserve (hier aber direkt und ohne Umwege direkt in die
Powerplane kontaktieren !).
Du könntest dir mal das Layout vom NGW100 (Atmel) anschauen, da ist zwar
kein FPGA drauf, wohl aber Flash, SD-Card, Ethernet, RS232 und SDRAM.
Wobei ich das Layout entsetzlich finde, hier "riecht" es streng nach
Autorouter ... (aber es funktioniert, sicher gibt es bessere Beispiele)
Dieses Board hat übrigens 6 Lagen. Ich kenn zwar dein Schematic nicht
und kann die komplexität deines Projektes nicht wirklich einstufen,
befürchte aber, das 4 Lagen nicht reichen werden.
Zumal du die inneren Lagen nicht als Signallagen benutzen solltest
(ausschliesslich als Power-Lagen).
Ist der FPGA ein BGA oder noch Handlötbar ? Impedanzen ?
Gruss Uwe
> Der Daten- und Adressbus muss zu recht vielen Chips. 2 SDRAMs, ein> FLASH, sowie zum FPGA. Dadurch werden die Leitungen recht lang - gibt> das sicher keine Probleme mit dem Datenbustreiber des 2478? mag der> circa 7 cm lange Leitungen noch problemlos treiben? Schliesslich soll> der Rechner mit 72 MHz laufen.
Wenn die Signal impedanzgeführt sind Nein. Eventuell Terminierung
vorsehen.
> Ausserdem stellt sich mir noch die Frage, ob es Probleme gibt, wenn die> Clockleitungen und Adressleitungen unterschiedlich lang sind. Immerhin> habe ich bei 72 MHz nur noch 13 ns pro Takt, und es müssen ja auch> Setup- und Holdzeiten eingehalten werden (?).
Wenn sie nicht extrem voneinander abweichen (mehr als 3cm) sollte es
funzen.
Gruss Uwe
Nur mal so - in den 14ns wandert das Signal 4m - selbst im FR4 sind es
noch 2m. Nun bitte mal überlegen wie viel 3cm ausmachen. (Genau - 0.1ns)
Und in Anbetracht dieser Werte möge man nun nochmal über die
Leitungsführung bei diesen Frequenzen nachdenken.
Viele Grüße,
Martin L.
Hi Uwe,
okay das mit den 100 nF werde ich sicher noch überdenken. Das war
eigentlich auch klar, dass dieser Wert vom ganzen Design her abhängt.
Ich denke, 10..47 nF sind eher besser, aber das muss dann durch
probieren ermittelt werden.
Ich habe leider kein NGW100, kann man das Layout irgendwo runterladen?
Hmm, wie ist denn das beim Multilayer. Ich hätte jetzt mal gesagt: 1
Lage GND, 1 Lage VCC, der rest kann zum routen von Signalen benutzt
werden. Ist dem nicht so?
Der FPGA sitzt in einem QFP144 Gehäuse, was sich noch sehr gut handlöten
lässt.
Auf die Impedanzen wollte ich beim Routen eigentlich schon acht geben,
aber das Problem ist: die Leitungen müssen (sollten) ja die gleiche
Imedanz haben wie die Eingangspins der ICs. Und hier wird es knifflig:
wie gross ist die Eingangsimpedanz eines SDRAMs? Im Datenblatt steht
nichts. Jemand hier hat mal behauptet, die sei immer 50 Ohm, das kann
ich aber nicht wirklich glauben. Wie meinst du, könnte man die Signale
gut "impedanzgeführt" verlegen?
> Hmm, wie ist denn das beim Multilayer. Ich hätte jetzt mal gesagt: 1> Lage GND, 1 Lage VCC, der rest kann zum routen von Signalen benutzt> werden. Ist dem nicht so?
Das ist schon korrekt. Der Hinweis "nicht die inneren Lagen zum
Signal-Routen" nutzen bezog sich nur auf deinen 4 Lageaufbau.
Selbstverständlich kann man die inneren Lagen zum Signalrouting
verwenden, aber immer schön getrennt: Signale haben nix in
Versorgungslagen zu suchen (naja, nur im wirklichen Notfall :(
Hier der Link zum Board:
http://www.atmel.com/dyn/products/tools_card.asp?tool_id=4102
Wobei ich gerade die Gerber-Daten vermisse, ein Kumpel hat sich das Teil
zugelegt, und in der beiliegenden Doku war es wohl enthalten.
> Auf die Impedanzen wollte ich beim Routen eigentlich schon acht geben,> aber das Problem ist: die Leitungen müssen (sollten) ja die gleiche> Imedanz haben wie die Eingangspins der ICs. Und hier wird es knifflig:> wie gross ist die Eingangsimpedanz eines SDRAMs? Im Datenblatt steht> nichts. Jemand hier hat mal behauptet, die sei immer 50 Ohm, das kann> ich aber nicht wirklich glauben.
Mit Eingangsimpedanz der Ics ist wohl sowas wie eine eingebaute
Terminierung (manche haben sowas) gemeint und die ist bei Single Ended
Signals gleich 50 Ohm (meistens, Ausnahmen sind i.d.R. Video
Applikationen, dort hat man wohl 75 Ohm). Bei Differentiellen Signalen
sind es 100 Ohm. Die Behauptung stimmt also.
> Wie meinst du, könnte man die Signale gut "impedanzgeführt" verlegen?
Indem du die richtigen Geometrien und den korrekten Lagenaufbau benutzt.
Zu den Geometrien der Leiterbahnen kann ich dir später ein paar konkrete
Angaben machen, allerdings setzt dies einen Lagenaufbau vorraus.
Ich vermute, du lässt die Platine bei einem Pool-Fertiger machen (nein,
nicht im Swimmingpool ...), hier kannst du leider nicht über den
Lagenaufbau selbst endscheiden. Informier dich und uns über den
LP-Hersteller deiner Wahl und den Multilayer-Bautypen. Dann kann man
sich die Geometrien ausrechnen (das kann ich für dich machen).
Gruss Uwe
Hi Uwe,
okay dann schaue ich mir mal dieses NGW100 an. Die Gerberdaten wären
zwar interessant gewesen, aber wenn man sie halt nicht runterladen kann
werde ich mich mit einem Photo sowie dem Schaltplan begnügen müssen.
Wegen der Eingangsimpedanz der ICs: Ich glaube nicht, dass mein Flash,
das ich verwenden möchte, eine definierte Eingangsimpedanz hat (also
eingebaute Widerstände). Es steht nichts davon im Datenblatt...
Ebensowenig beim SDRAM. Es steht nur, wie viele pF Kapazität ein Pin
hat, ansonsten nichts, was über die Eingangspins auskunft gibt.
Muss man da wirklich bei jedem Signal einen 25 Ohm Widerstand als
Terminierung einfügen? Das ist irgendwie auch nicht so der Hit. Ich
dachte, es reicht, wenn man beim Clock und den wichtigen Steuersignalen
Seriewiderstände einbaut, aber anscheinend muss man das auch beim Daten-
und Adressbus, wenn man impedanzgeführt routen möchte?
Hmm ja, die Leiterplatte werde ich wohl beim Conrad Leiterplattenservice
machen lassen (ich kenne sonst nichts anderes, was für Einzelstücke
bezahlbar ist).
Ich hab auch kein Problem damit, 6 Layer zu verwenden, im Gegenteil, das
gefällt mir besser. Ist zwar teuer, aber es soll ja auch einigermassen
zuverlässig funktionieren und nicht irgend ein hässliches gebastel
werden...
Gruss & danke!
> Ich dachte, es reicht, wenn man beim Clock und den wichtigen> Steuersignalen Seriewiderstände einbaut, aber anscheinend muss man das> auch beim Daten- und Adressbus, wenn man impedanzgeführt routen möchte?
Wenn man sowas wie du im Bus verschaltet (also am SD Ram hängt noch ein
Flash, daran hängt nochwas etc.) ist es AFAIK besser, überall Serien Rs
einzubauen. Optimal ist es, so eine Konfiguration in einer Simulation zu
testen (Hyperlynx z.B.) - wenn man weiß, was man hier tut.
Ja, Ja ich weiß, sauteuer und früher gings auch ohne ... .
Leider habe ich sowas auch nicht, diese Art Terminierung (bei High Speed
Busen)sehe ich aber häufig bei den Schematics, die ich Layouten darf.
Vielleicht gibt es hier ein paar Experten, die das nicht wie ich nur aus
dem Bauchgefühl heraus beantworten können.
Gruss Uwe
Hi Uwe,
puuh, das mit den Serienwiderständen überall.... das ist ja ein riesen
Aufwand.
Wenn ich mir z.B. ein PC-Mainboard anschaue, dann hat das ja auch nicht
in jeder Leitung einen Seriewiderstand. ?
Es ist verwirrend - die einen Leute sagen einem, dass man
Seriewiderstände braucht, andere sagen das sei unnötig. Nicht einmal die
Literatur ist sich einig.
Simulieren kann ich es leider nicht, da ich das passende Programm nicht
besitze....
Wie siehst du das:
1. Beim SDRAM - unterschiedlich lange Adressleitungen.
2. Wie lang darf die SDRAM-Clockleitung maximal sein? 2cm? 5cm? 10cm?
3. Dasselbe beim Ethernet. Da braucht man einen 50 MHz Quarzoszillator,
welcher mit dem Phy-Chip und dem MAC verbunden ist. Wie unterschiedlich
dürfen diese beiden Leitungen in der Länge sein?
> Braucht es wirklich an jedem VCC Pin einen 100n Kerko?
Es geht dabei nicht nur um die Vcc-Pins :-o
Sieh dir mal meine Betrachtungen zum Thema Abblockkondensatoren an:
http://www.lothar-miller.de/s9y/categories/14-Entkopplung
Direkt am FPGA sind durchaus auch Kapazitäten um 10-22nF nicht falsch.
Zum Thema Platz: du hast schon mal von 0402 SMD gehört?
Wie sieht es mit doppelseitiger Bestückung aus?
Ich habe ein LPC2478 Board mit SDRAM und RMII PHY. Das Ganze ist mit
Sachen wie SD Slot, LVDS Transmitter auf einer halben Europlatte, auf
zwei Lagen untergebracht. Die Clockleitung vom SDRAM hat geschätze 10
cm, die 50 MHz von der PHY auch. Die Signale sehen gut aus und
funktionieren tut's scheinbar auch.
Serienwiderstände habe ich nur in den Steuerleitungen vom SDRAM, aber
nicht in der Adress- oder Datenleitungen. Allerdings habe ich ein 32 Bit
RAM und sonst nichts weiteres an dem Bus.
> Wenn ich mir z.B. ein PC-Mainboard anschaue, dann hat das ja auch nicht> in jeder Leitung einen Seriewiderstand. ?
Die sind halt nicht überall von nöten oder könnte ein Indiz für einen
eingebauten Terminator sein.
> Es ist verwirrend - die einen Leute sagen einem, dass man> Seriewiderstände braucht, andere sagen das sei unnötig. Nicht einmal die> Literatur ist sich einig.
Das kenne ich, sind halt unterschiedliche Erfahrungen der Leute, wobei
sowas naturgemäss schwierig zu vergleichen ist.
> Wie lang darf die SDRAM-Clockleitung maximal sein? 2cm? 5cm? 10cm?
Schau dich mal auf der HP von Micron um, da gabs AFAIK ein paar
brauchbare AppNotes zum Thema. Dort stehen glaube ich auch interessante
Dinge über das Routen von z.B. Clockleitungen drin, die an mehr als an
einen Verbraucher angeschlossen sind drin (Daisy Chain, Starpoint etc.).
Die max. länge deiner Clockleitung kann man eigentlich nicht wirklich
von vornherein begrenzen, denn die hängt ja davon ab, wieviel ICs damit
getaktet werden sollen. Wenn die Signale impedanzdefiniert ausgeführt
sind plus den Terminatoren, dann sollte es mit der Signalintegrität
eigentlich passen.
Das ganze Thema ist leider sehr komplex und ich kann hier nur als
kleiner Layouter meine Erfahrungen weitergeben, nicht als Entwickler.
Normalerweise müssen die sich um solche Dinge wie Terminierungen etc.
kümmern und die Anforderungen an den Layouter weitergeben.
Man muss schon aufpassen, das man es hier nicht übertreibt - ich will
das ganze nicht unnötig verkomplizieren und dich gänzlich konfus machen.
Gruss Uwe