Forum: Mikrocontroller und Digitale Elektronik Dual Layer / SD-RAM


von Jörg (Gast)


Lesenswert?

Moin Moin,

ich möchte an einen µC mit integriertem SD-RAM Controller auch SDRAM 
verwenden, da es ja deutlich günstiger ist als SRAM in gleicher größe.

Jetzt hab ich ab und an gelesen, das man für SD-RAM unbedingt 4-Lagen 
braucht. Ist es möglich SD-RAM auch auf einem 2-Lagen Bord ordentlich 
zum laufen zu bekommen (100MHz) ? Hab bislang nur 2 Lagen geroutet.

Board-Größe spielt eine untergeordnete Rolle, ist also genug Platz 
vorhanden auch für große Masseflächen. Analogteil braucht keine große 
Genauigkeit (ein ADC mit 8Bit Auflösung). Sonst ist nur ein SPI-Bus 
vorhanden (MMC), zweiter µC

Grüße

Jörg

von chris (Gast)


Lesenswert?

hi,
wie kommst du darauf, das man min. 4 lagen braucht. Aus EMC Sicht ist es 
natürlich besser, aber die Funktion sollte auch auf 2 Lagen gehen.
Oder was meinst du?

von Jörg (Gast)


Lesenswert?

Ja, ich meine nur die Funktion. Irgendwo habe ich mal gelesen, die 
Signale würden sonst nicht "sauber" genug sein, wobei viele Bords die 
ich sehe die kompletten SD-RAM Signale auf einem Layer haben. Leider 
finde ich die Quelle nicht mehr.

EMV ist natürlich ne andere Sache ...

von Falk (Gast)


Lesenswert?

@ Jörg

>Ja, ich meine nur die Funktion. Irgendwo habe ich mal gelesen, die
>Signale würden sonst nicht "sauber" genug sein, wobei viele Bords die
>ich sehe die kompletten SD-RAM Signale auf einem Layer haben. Leider
>finde ich die Quelle nicht mehr.

Naja, die Leitungen sollten

a) entweder recht kurz sein (<10cm)

oder

b) impedanzrichtig layoutet (50..75 Om)

Aber selbst bei 4 Layern werden die Leitungen dann schon recht breit 
(auf grund des "dicken" Substrats).

Mit kuzen Leitungen, bischen Vorsicht beim Layout vom Takt und guter 
Abblockung sollte man einen SD-RAM auch auf einem Dual-Layer Board gut 
zum laufen kriegen.

MfG
Falk

von Dirk (Gast)


Lesenswert?

Hallo, pack in die leitungen einen Serienwiderstand von 33 Ohm.

von Rooney B. (rooney)


Lesenswert?

Also die 4 Lagen bringen natürlich nur etwas, wenn du zumindest eine 
davon als GND Fläche auslegst. 100MHz ist schon recht viel, da wird die 
Bedeutung des kurzen Stromrückflusses merkbar.

Aber musst du das Teil mit 100MHz takten? Kann dein Prozessor oder DSP 
das überhaupt?
Nur weil die SDRAMs 100/133MHz schaffen heißt das noch lange nicht, dass 
der SDRAM Controller diese Frequenz auch schafft. So übern Daumen würd 
ich sowieso mal überlegen, ob es ab Taktfrequenzen von 50MHz nicht 
ohnehin sinnvoller wäre reine GND und VCC Flächen zu verwenden. Die 
Impedanzen einer Leitung werden ab diesem Frequenzbereich bedeutsam.

Aber nichts desto trotz, wirst ein SDRAM auf einem 2 fach Layer sicher 
zum Laufen bekommen.
Wie bereits Dirk angemerkt hat, wären 33 Ohm Serienwiderstände 
empfehlenswert. Platziere sie am besten direkt beim SDRAM und (!) beim 
Controller, sofern die Address- und Datenleitungen länger sein sollten.
Pufferkapazitäten von 1n, 100n und 10µ sind auch sehr empfehlenswert. 1n 
und 100n sollten dabei für jeden VCC Pin vorgesehen werden. Halte die 
Verbindung zwischen GND Pins und GND so kurz wie möglich.

von Jupp (Gast)


Lesenswert?

Bei der Anzahl der Laen kann auch eine Rolle spielen, wieviel Platz man 
für des Layout bzw. die Leiterbahnen hat.

von Falk (Gast)


Lesenswert?

@Thomas P.

>Also die 4 Lagen bringen natürlich nur etwas, wenn du zumindest eine
>davon als GND Fläche auslegst. 100MHz ist schon recht viel, da wird die
>Bedeutung des kurzen Stromrückflusses merkbar.

Nennen wir es mal lieber impedanzrichtiges Layout.

>Aber musst du das Teil mit 100MHz takten? Kann dein Prozessor oder DSP
>das überhaupt?
>Nur weil die SDRAMs 100/133MHz schaffen heißt das noch lange nicht, dass
>der SDRAM Controller diese Frequenz auch schafft. So übern Daumen würd
>ich sowieso mal überlegen, ob es ab Taktfrequenzen von 50MHz nicht
>ohnehin sinnvoller wäre reine GND und VCC Flächen zu verwenden. Die
>Impedanzen einer Leitung werden ab diesem Frequenzbereich bedeutsam.

Es ist egal ob man dn SDRAM/Controller mit 100 oder nur 50 MHz 
betreibet, die Flanken der Ausgangstreiber sind gleich schnell. Und 
damit sind die Reflexionen die gleichen.

>Aber nichts desto trotz, wirst ein SDRAM auf einem 2 fach Layer sicher
>zum Laufen bekommen.

Naja, ob ER es schafft steht noch aus. Dass es prinzipiell möglich ist, 
ist eine andere Frage.

>Wie bereits Dirk angemerkt hat, wären 33 Ohm Serienwiderstände
>empfehlenswert. Platziere sie am besten direkt beim SDRAM und (!) beim
>Controller, sofern die Address- und Datenleitungen länger sein sollten.
>Pufferkapazitäten von 1n, 100n und 10µ sind auch sehr empfehlenswert. 1n
>und 100n sollten dabei für jeden VCC Pin vorgesehen werden. Halte die
>Verbindung zwischen GND Pins und GND so kurz wie möglich.

Die 1nF kann er sich schenken. 100nF in 0805 oder 0603 reichen 
vollkommen.

MfG
Falk

von EFA (Gast)


Lesenswert?

Ich finde, dass sich die Frage eigentlich nicht stellt. Die wenigen 
Euros mehr sollte man in den meisten Fällen investieren, und sei es 
'nur', um die EMV-Eigenschaften zu verbessern.

von Falk (Gast)


Lesenswert?

@EFA

>Ich finde, dass sich die Frage eigentlich nicht stellt. Die wenigen

Welche Frage?

MfG
Falk

von Jörg (Gast)


Lesenswert?

Also die Daten / Adressleitungen zum SD-RAM sind ca. 2cm lang, wenn ich 
einen Serienwiderstand rein mache, dann werden die natürlich etwas 
länger.
Ist das sinnvoll Serienwiderstände reinzumachen? Im bisherigen Layout 
habe ich auch darauf geachtet, das ich die Leitungen alle gleich lang 
halte (das was ich schon angefangen habe).

Die SD-RAM Chips können max. 166MHz die wir noch hier haben. Der µC kann 
bis 100MHz, da er über kein internes Flash bzw. SRAM verfügt, macht es 
auch sinn den SD-RAM schnell laufen zu lassen, zumal der µC mit ca. 
200MHz läuft. Sofern es die Applikation nachher zulässt oder der Kunde, 
werde ich den Takt natürlich reduzieren können.

2 Layer Platinen können wir selber herstellen (kosten dann rund 15-20€ 
alles in allem), 4 Layer müssten extern für ca. 90€ hergestellt werden. 
Ist also schon ein Preisunterschied. In der Serienfertigung nachher 
nichtmehr ..

Da der Prozessor mit Flash/SD-RAM aber sowieso schon rund 80€ kosten, 
werde ich wohl die "paar" Euro in das Bord investieren und 4 Lagen 
routen. Selbst wenn es 'nur' die EMV verbessert. Ist ja auch schon 
einiges Wert. Außerdem wird mein Layout dadurch sogar was einfacher zum 
routen. An den VCC sind immer 100nF / 1µF, teilweise zusätzlich 10µF 
laut Datenblätter.

Jetzt habe ich aber noch ein paar Fragen... An dem Daten/Adressbus habe 
ich noch NOR-Flash/NAND-Flash/LCD etc. dran, muss ich diese vom SD-RAM 
mit Bustreibern abtrennen oder ist das dem SD-RAM egal? Oder vor jeden 
"Busteilnehmer" Bustreiber verwenden? Wie gesagt, das SD-RAM ist quasi 
direkt am Prozesor, zum LCD sind es aber schon ein paar cm mehr, gesamt 
wäre der Datenbus ca. 10cm lang, ebenso der Adressbus. Ich habe bislang 
noch nichts mit SD-RAM gemacht, weis daher nicht wie empfindlich das 
reagiert. Bei der CF habe ich schon Bustreiber/Bustrenner drin..

Jetzt noch ne kleine Prinzipfrage .. was ist eigentlich wirklich 
schneller (Applikation aus dem RAM), externes SRAM (10ns) oder SDRAM 
(CL2 100MHz, laut Datenblatt 7.5ns), beides 32Bit angebunden.

Meine Frage bzgl. den Spannungen im VCC-Layer stelle ich ins 
Platinenforum, weil es eigentlich da hin gehört...

Vielen Dank schonmal!

Grüße

von Jörg (Gast)


Lesenswert?

Ach und ich hab auf der Suche im Internet noch irgendwas von aktiver 
Terminierungsbausteinen gelesen, aber nix genaueres dazu 
(Bauteilbezeichnung und wann die eingesetzt weren)... kann mir da auch 
einer ein Tipp zu geben?

von EFA (Gast)


Lesenswert?

>@EFA
>
>>Ich finde, dass sich die Frage eigentlich nicht stellt. Die wenigen
>
>Welche Frage?

Die Frage, ob ein 2-seitiges Design genügt.

>2 Layer Platinen können wir selber herstellen (kosten dann rund 15-20€
>alles in allem), 4 Layer müssten extern für ca. 90€ hergestellt werden.
>Ist also schon ein Preisunterschied. In der Serienfertigung nachher
>nichtmehr ..

Da es in der Serienfertigung kaum noch einen Unterschied macht, sind die 
Kosten für die wenigen Prototypen imho vernachlässigbar.


von Jörg (Gast)


Lesenswert?

@EFA

>Da es in der Serienfertigung kaum noch einen Unterschied macht, sind die
>Kosten für die wenigen Prototypen imho vernachlässigbar.

Deshalb habe ich mich ja auch für 4-Lagen entschieden ;)

von Rooney B. (rooney)


Lesenswert?

Bustreiber brauchst nur, wenn der Controller die Kapazität der Leitung 
und Eingänge nicht treiben kann. Im schlimmsten Fall musst halt mit der 
Taktfrequenz runter gehen.

Ich hab ein Board entwickelt mit ARM9 der am externen Speicherbus 4x 
SDRAM, 1x NAND, 1x NOR, 1x CPLD und einmal Ethernet treibt. Ganz ohne 
zusätzliche Treiber, funktioniert tadellos. Aber ich spiel da mit den 12 
Lagen in einer ganz anderen Liga...
Aber wennst auf Nummer sicher gehen willst, dann verwendest eben 
Bustreiber.

Bei mir sind Signalleitungen schon mal bis 10cm lang, deswegen ist eine 
Terminierung unerlässlich.


Achte darauf, dass die Taktleitungen der SDRAMs alle gleich lang sind, 
sonst könntest bei längeren Leitungen Laufzeitunterschiede bekommen.

von Falk (Gast)


Lesenswert?

@Jörg

>Also die Daten / Adressleitungen zum SD-RAM sind ca. 2cm lang, wenn ich
>einen Serienwiderstand rein mache, dann werden die natürlich etwas
>länger.
>Ist das sinnvoll Serienwiderstände reinzumachen? Im bisherigen Layout

Nein!

>habe ich auch darauf geachtet, das ich die Leitungen alle gleich lang
>halte (das was ich schon angefangen habe).

+/- 1cm macht bei den Frequenzen noch nix. GGf kann man sich sogar mehr 
leisten (für die Adress/Datenleitungen)

>2 Layer Platinen können wir selber herstellen (kosten dann rund 15-20€
>alles in allem), 4 Layer müssten extern für ca. 90€ hergestellt werden.
>Ist also schon ein Preisunterschied. In der Serienfertigung nachher
>nichtmehr ..

????
Und da überlegst du noch? Das würde ich in 4 Lagen machen und gut! Wegen 
läppischen 70 Euro die in dem Prototypen "gespart" werden könnten lohnt 
sich der Stress und Risiko nicht!

>routen. An den VCC sind immer 100nF / 1µF, teilweise zusätzlich 10µF
>laut Datenblätter.

Das passt.

>Jetzt habe ich aber noch ein paar Fragen... An dem Daten/Adressbus habe
>ich noch NOR-Flash/NAND-Flash/LCD etc. dran, muss ich diese vom SD-RAM
>mit Bustreibern abtrennen oder ist das dem SD-RAM egal? Oder vor jeden
>"Busteilnehmer" Bustreiber verwenden? Wie gesagt, das SD-RAM ist quasi
>direkt am Prozesor, zum LCD sind es aber schon ein paar cm mehr, gesamt
>wäre der Datenbus ca. 10cm lang, ebenso der Adressbus. Ich habe bislang

Naja, das geht gerade noch. Die Address sowie Steuerleitungen sind ja 
unidirektional, da würde ich ne Serienteminierung auf jeden Fall 
reinmachen (33 Ohm, dicht am uC). ebenso für den Takt zum SDRAM.

>Jetzt noch ne kleine Prinzipfrage .. was ist eigentlich wirklich
>schneller (Applikation aus dem RAM), externes SRAM (10ns) oder SDRAM
>(CL2 100MHz, laut Datenblatt 7.5ns), beides 32Bit angebunden.

Ich würde tippen SRAM mit 10ns. Das sollte sich aber bei etwas Cache 
auch dem uC nicht wesentlich bemerkbar machen.

MfG
Falk

von Jupp (Gast)


Lesenswert?

> Dass es prinzipiell möglich ist, ist eine andere Frage.

Nö, das ist ein Fakt.

von Jörg (Gast)


Angehängte Dateien:

Lesenswert?

Ich bins nochmal ..

Nachdem ich jetzt endgültig mit dem Routen angefangen habe und mir noch 
ein paar AN zum Thema SD-Ram angeschaut habe, habe ich noch eine 
Frage...

Um die Datenleitungen exakt gleich lang zu halten (innerhalb 0.2mm) 
müsste ich solche "Zick-Zack" Leitungen einbauen. Ist das OK oder 
bekomme ich dadurch irgendwelche Probleme?

Und nochmal zur Bestätigung: Ich muss die Daten UND Adressleitungen 
gleich lang halten, den Takt so kurz wie möglich. An die Datenleitungen 
mache ich ein Serienwiederstand am µC rein (33R) und dann am SD-Ram 
einen Pull-Up auf 3.3V Vref (laut einer AN). An die 
Steuer-&Adressleitungen mache ich ebenfalls ein Serienwiederstand rein 
und eine R-C-Terminierung.
Alle weiteren Peripherien schließe ich über Bustreiber an..


Möchte nur sichergehen, das ich das Board nicht gleich in den Müll 
schmeißen muss wenn es da ist, weil das RAM nicht funktioniert g.

Wollte schon auf SRAM umsteigen, aber irgendwann muss man sich ja auch 
mal weiterbilden und SDRAM nutzen ;) Außerdem ist SRAM zu teuer (brauche 
min. 32MB)..

Nochmal vielen Dank!

von Rooney B. (rooney)


Lesenswert?

Also die Taktleitungen müssen gleich lang sein, nicht Adress- und 
Datenleitungen. Zickzack ist in Ordnung.

Keine Pullups und keine RC Terminierung. Mit den Serienwiderständen hast 
du bereits ausreichend terminiert.

Serienwiderstand direkt beim µC und zusätzlich Serienwiderstände beim 
SDRAM sofern diese nicht unmittelbar bei einander liegen.

von Jörg (Gast)


Lesenswert?

Also müssen nur die Taktleitungen von beiden SD-RAM Chips gleich lang 
sein?

SDCK vom µC zu CLK-SDRAM1 gleich lang SDCK vom µC zu CLK-SDRAM2

Hatte in einer Application Note gelesen 
(http://www.cirrus.com/en/pubs/appNote/an218rev1.pdf, Seite 4), das 
D0-D31 möglichst die gleiche Länge haben sollen, ebenfalls A0-Axx.  Da 
war nur die Rede davon, das CLK möglichst kurz sein sollte. Ist es also 
egal, wenn D0 bsp. 3cm lang ist, D1 4cm und D2 5cm (nur ein Beispiel) ? 
Nunja, schaden tut es doch sicherlich nicht und platz für so "Zick-Zack" 
Leitungen hätte ich genug... aber wenn es nicht nötig ist brauche ich 
mir die Arbeit nicht zu machen ;)

Ich verwende einen AT91SAM9260 ARM9. SD-RAM liegt max. 2cm vom µC weg, 
dann mache ich nur serienwiderstände an den µC und gut ist.

von Falk (Gast)


Lesenswert?

@ Jörg

>Also müssen nur die Taktleitungen von beiden SD-RAM Chips gleich lang
>sein?

JAIN. Bei den beiden Taktleitungen kann man ohne nennenswerten Aufwand 
das Ganze auf +/-1mm trimmern, aber selbst +/-1cm sollte ohne Probleme 
laufen. Man sollte sich die Grössenordung mal vor Augen halten

Lichtgeschwindigkeit im Vakuum ~ 30cm/ns
---"---              auf FR4   ~15-20cm/ns  -> Laufzeit 50-66ps/cm

Da brennt bei 133 MHZ SD-RAMs noch nix an.

>SDCK vom µC zu CLK-SDRAM1 gleich lang SDCK vom µC zu CLK-SDRAM2

>Hatte in einer Application Note gelesen
>(http://www.cirrus.com/en/pubs/appNote/an218rev1.pdf, Seite 4), das
>D0-D31 möglichst die gleiche Länge haben sollen, ebenfalls A0-Axx.  Da
>war nur die Rede davon, das CLK möglichst kurz sein sollte. Ist es also
>egal, wenn D0 bsp. 3cm lang ist, D1 4cm und D2 5cm (nur ein Beispiel) ?

Das passt schon. Ich sag mal bis 5cm Unterschied macht das gar nichts 
(=250ps Laufzeitdifferent), mehr geht wahrscheinlich auch noch.

>Nunja, schaden tut es doch sicherlich nicht und platz für so "Zick-Zack"
>Leitungen hätte ich genug... aber wenn es nicht nötig ist brauche ich
>mir die Arbeit nicht zu machen ;)

Eben. Mach die Taktleitungen auf +/-1cmgenau und gut ist.

>Ich verwende einen AT91SAM9260 ARM9. SD-RAM liegt max. 2cm vom µC weg,
>dann mache ich nur serienwiderstände an den µC und gut ist.

Yep.

MFG
Falk


von ferrari2k (Gast)


Lesenswert?

Hi, ich hab mal über google diesen Text gefunden. Ich möchte für ein 
Projekt für die Hochschule eine Platine mit Eagle erstellen, auf der 
SD-RAM verbaut werden soll.
Ich finde nirgends Maße davon, gibts da schon ne fertige Library?
Und worauf muss ich sonst achten? Hab das noch nie gemacht

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.