Forum: Platinen SDRAM Layout, STM32F7


von A. F. (elagil)


Angehängte Dateien:

Lesenswert?

Hallo!

Ich erstelle auf einer 4-lagigen Platine (Sig - GND - VCC - Sig) ein 
Layout mit STM32F7 und einem SDRAM-Modul (100 MHz).

Stack:
- - - - - - - - - 0.036 mm Kupfer (sig)
================= 0.254 mm FR4
- - - - - - - - - 0.036 mm Kupfer (gnd)
----------------- 0.127 mm Prepreg
- - - - - - - - - 0.036 mm Kupfer (vcc)
================= 0.254 mm FR4
- - - - - - - - - 0.036 mm Kupfer (sig)

Die beiden inneren Lagen werden nur für GND/VCC verwendet und sind 
durchgängig. Ich habe beim Layout Bedenken wegen der (meistens) vier 
Vias in den Signalleitungen zum SDRAM. Ist es trotzdem ok oder sind 
Probleme zu erwarten? Außerdem sind die Leitungen über lange Strecken 
parallel.

Die Signallängen (Daten, Adresse, Takt) sind zwischen 48 mm und 52 mm 
lang, Breite 0.125 mm.

Danke im Voraus,
Adrian

von il Conte (Gast)


Lesenswert?

Adrian F. schrieb:
> Die Signallängen (Daten, Adresse, Takt) sind zwischen 48 mm und 52 mm
> lang, Breite 0.125 mm.

Bist du Spezialist für Überlandleitungen ;-)

Deinem Stack solltest du noch mindestens 2 Layer spendieren.
Während dem Routen sollte man zusätzlich wissen was die betreffende
Signal-Leitung für eine Funktion hat, um sie optimal zu verlegen.
Kann man den Namen der Signalleitungen bei deinem CAD einblenden?

von Gustl B. (-gb-)


Lesenswert?

Oh ... auf Lochraster ist dieses oben horizontal unten vertikal ja ganz 
nett, aber hier so es etwas schneller zur Sache geht sollte man sich da 
nichtmehr so feste dran halten.

Du könntest Pins tauschen um etwas zu optimieren und auch Leitungen 
unter dem großen BGA durchführen zum RAM. Vor allem gehen Leitungen auf 
der linken Seite zum RAM, werden aber nicht direkt dorthin gelegt 
sondern gehen zunächst sehr weit nach oben/unten im Bild und dann zum 
RAM.

von A. F. (elagil)


Angehängte Dateien:

Lesenswert?

il Conte schrieb:
> Deinem Stack solltest du noch mindestens 2 Layer spendieren.

Ok, sieht wohl so aus.

il Conte schrieb:
> Kann man den Namen der Signalleitungen bei deinem CAD einblenden?

Ja, ich benutze Altium.

Gustl B. schrieb:
> Du könntest Pins tauschen um etwas zu optimieren und auch Leitungen
> unter dem großen BGA durchführen zum RAM.

Das geht leider nicht, die sind bei dem STM32 fest belegt.


Hier eine neue Version mit 6 Lagen.

Stack:
Low speed 1
GND
High speed 1
High speed 2
VCC
Low speed 2

Ich benutze aber auch die Low speed 1/2 Lagen für den SDRAM, weil es 
sonst nicht passt. Ist das ok?

Anbei ein paar Bilder. Die Leitungen sind zwischen 29 und 32 mm lang.

Grüße,
Adrian

: Bearbeitet durch User
von Gustl B. (-gb-)


Lesenswert?

Das sieht schon sehr viel besser aus. Ich kenne mich nicht aus, aber ich 
frage mal in die Runde wie wichtig die Längengleichheit bei 100MHz 
wirklich ist. Gefühlt hätte ich die Meander weggelassen und es auf 4 
Lagen versucht. Vor allem weil die Meander für mich so aussehen, als 
würden sie das Signal nicht unbedingt besser machen.

Mit Pins tauschen meinte ich einzelne Adressleitungen und Datenleitungen 
untereinander.

Selbst bei 10cm Längenunterschied ist das eine Laufzeitdifferenz von 
3.34e-10 Sekunden, also 0,334 ns. Bei 10ns Periodendauer finde ich das 
unkritisch, und bei Dir sind das ohne Meander vielleicht 1-2 cm.

: Bearbeitet durch User
von il Conte (Gast)


Lesenswert?

Adrian F. schrieb:
> Anbei ein paar Bilder.

Deine mäander förmigen Leitungsverlegung  sieht  ästhetisch gut aus.
Ich würde aber aus dem Bauch raus die Notwendigkeit einer solchen
Leiterführung  bei einem HF'ler hinterfragen.
(du redest da in deinem Eingangspost von 100 MHz)

Grob überschlagen bräuchte es ca. 30 cm Unterschied zwischen 2 Signalen
(z.B. zwischen WR und CS) um einen Versatz einer nSec feststellen zu 
können.
Ich vermute mal das die Timings in den Datenblättern sowas tolerieren,
sodass ein Längenausgleich in diesem Frequenzbereich noch nicht nötig 
ist.

Wie gesagt du solltest das hinterfragen.

von A. F. (elagil)


Lesenswert?

il Conte schrieb:
> Wie gesagt du solltest das hinterfragen.

Ich habe ein bisschen in Datenblättern gestöbert und Micron schreibt:

> ...
> Match clock traces to data group traces within ±500 mil.
> ...
> For both DDR and SDRAM, also match clock traces to each signal trace in
> the address and command groups to within ±400 mil.
> ...

Wie kritisch das ist, kann ich nicht sagen. Ohne Mäander habe ich einen 
Längenunterschied im Bereich 2.5 cm = 1000 mil.

von Mampf F. (mampf) Benutzerseite


Lesenswert?

Gustl B. schrieb:
> wie wichtig die Längengleichheit bei 100MHz
> wirklich ist

Soweit ich weiß, muss nur der Clock länger als die längste 
Adress/Datenleitung sein, damit die Setup-Time eingehalten werden kann 
:)

von il Conte (Gast)


Lesenswert?

Adrian F. schrieb:
> Match clock traces to data group traces within ±500 mil.

Bei welcher Clock Frequenz ?

Wie hoch ist die Clockfrequenz in deiner Appllikation?

Bearbeitest du das für deine Firma?

von Scharfrechner (Gast)


Lesenswert?

Adrian F. schrieb:
> Wie kritisch das ist, kann ich nicht sagen.

.... ääähhh wie war das noch gleich ...

30cm -> 1ns im Freiraum

2.5cm .... weniger ns

von Gustl B. (-gb-)


Lesenswert?

Mampf F. schrieb:
> Soweit ich weiß, muss nur der Clock länger als die längste
> Adress/Datenleitung sein, damit die Setup-Time eingehalten werden kann
> :)

Kann sein, kenne mich damit nicht aus, im FPGA würde man das anderes 
lösen, hier könnte man dann eben nur die Clockleitung länger machen oder 
etwa nicht?

von Scharfrechner (Gast)


Lesenswert?

Scharfrechner schrieb:
> 2.5cm .... weniger ns

gemessen an einem 100MHz Zyklus also weniger als ein Hundertstel.

von 6a66 (Gast)


Lesenswert?

Scharfrechner schrieb:
> 30cm -> 1ns im Freiraum
>
> 2.5cm .... weniger ns

2,5cm = ca. 100ps. Das ist bei DDR schn mal 'ne Hausnummer.
Im vorliegenden Fall bei 100MHz (und ich weiß nicht, ich denke der STM 
F4 kann maximal 168MHz, das dürften dan am DRAM 84MHz sein) und einer 
Taktzykluszeit von 10ns, gibt es da wirklich Probleme?

rgds

von A. F. (elagil)


Lesenswert?

il Conte schrieb:
> Bei welcher Clock Frequenz ?

100 MHz

> Wie hoch ist die Clockfrequenz in deiner Appllikation?

Bis zu 108 MHz (216 MHz Takt vom STM32)

> Bearbeitest du das für deine Firma?

Das ist ein Projekt für die Uni

6a66 schrieb:
> Taktzykluszeit von 10ns, gibt es da wirklich Probleme?

Schadet der Längenausgleich denn?

von 6a66 (Gast)


Lesenswert?

Adrian F. schrieb:
> Schadet der Längenausgleich denn?

Er kostet :) Fläche und Lagen.
Wer auf Nummer sicher geht macht ihn.
Wer es kann macht es ohne :)

rgds

von A. F. (elagil)


Lesenswert?

6a66 schrieb:
> Er kostet :) Fläche und Lagen.
> Wer auf Nummer sicher geht macht ihn.

Ich glaube, dann behalte ich in :)

Die Fläche der Platine ist festgelegt und groß genug und mit vier Lagen 
wird es nicht sauber.

Danke für die Kommentare!

von il Conte (Gast)


Lesenswert?

Adrian F. schrieb:
> Schadet der Längenausgleich denn?

Lass es auf einen Versuch drauf ankommen!
Hast du auch die Möglichkeit  hinterher die Timings mit geeigneten
Messmitteln zu verifizieren?
Wenn ja, berichte uns dann.

von il Conte (Gast)


Lesenswert?

il Conte schrieb:
> Lass es auf einen Versuch drauf ankommen!

Mal mit und mal ohne Mäander meinte ich.
oder nur mal den 'Clock' Vorschlag von  Mampf F.(mampf) implementieren.
(das hört sich plausibel an)

von Falk B. (falk)


Lesenswert?

@Gustl Buheitel (-gb-)

>Das sieht schon sehr viel besser aus. Ich kenne mich nicht aus, aber ich
>frage mal in die Runde wie wichtig die Längengleichheit bei 100MHz
>wirklich ist. Gefühlt hätte ich die Meander weggelassen

Eben. Bei 20cm/ns machen 10mm Differenz gerade 50ps. Die kann man bei 
100 MHz SDRAM in den Skat drücken. Selbst das Doppelte und mehr.

>Mit Pins tauschen meinte ich einzelne Adressleitungen und Datenleitungen
>untereinander.

Das sollte man sich bei SDRAM GENAU überlegen, das geht nämlich schief 
;-)

https://www.mikrocontroller.net/articles/Speicher#Anschluss_an_den_Mikrocontroller

"ACHTUNG, das geht nur bei einfachen SRAMs. DRAM oder neuere Speicher 
nehmen das fix übel, weil die Ansteuerung durcheinander kommt 
(Adressmultiplexing, Pagemodus, Byteslanes bei DDR-RAM etc.). Bei diesen 
ICs kann man bestenfalls Datenleitungen tauschen, bei DDR-RAMs nur 
innerhalb einer Byte-Lane. Prinzipiell sollte man davon aber nur sparsam 
Gebrauch machen, wenn es dem Layout wirklich hilft. "

von Gustl B. (-gb-)


Lesenswert?

Ok, wusste ich nicht, vielen Dank!

Beitrag #5099120 wurde vom Autor gelöscht.
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.