Forum: Mikrocontroller und Digitale Elektronik Board mit uC und FPGA


von André (Gast)


Lesenswert?

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é

von Falk B. (falk)


Lesenswert?

@  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

von Martin L. (Gast)


Lesenswert?

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.

von André (Gast)


Lesenswert?

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 (?).

von Uwe N. (ex-aetzer)


Lesenswert?

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

von Uwe N. (ex-aetzer)


Lesenswert?

> 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

von Martin L. (Gast)


Lesenswert?

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.

von André (Gast)


Lesenswert?

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?

von Uwe N. (ex-aetzer)


Lesenswert?

> 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

von André (Gast)


Lesenswert?

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!

von Uwe N. (ex-aetzer)


Lesenswert?

> 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

von Uwe N. (ex-aetzer)


Lesenswert?

> ... High Speed Busen ....

ich dachte immer, die gibt es nur in klein, mittel und gross ...

Sollte eigentlich "High Speed Busse" lauten.

Gruss Uwe

von André (Gast)


Lesenswert?

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?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> 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?

von Omega G. (omega) Benutzerseite


Lesenswert?

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.

von Uwe N. (ex-aetzer)


Lesenswert?

> 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

von Uwe N. (ex-aetzer)


Lesenswert?

Nachtrag:

hier noch schnell vorm Feierabend ein Link zum Thema:
http://www.xilinx.com/support/documentation/user_guides/ug072.pdf

Hier geht es zwar um die Virtex FPGAs, aber vielleicht trotzdem 
interessant.


Gruss Uwe

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.