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
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?
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 ...
@ 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
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.
@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
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.
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
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?
>@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.
@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 ;)
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.
@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
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!
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.
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.
@ 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
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