Forum: FPGA, VHDL & Co. DDR3-SDRAM Layout Beispiele


von Ernst H. (wirbersturm)


Lesenswert?

Hallo Leute,

ich suche für ein neues Design verschiedene Layout- und 
Routing-Topologien als Beispiele für den Anschluss eines DDR3-RAMs an 
einem Spartan 6.

Ich bin für jeden Hinweis dankbar.

Gruß
Ernst

von AHED (Gast)


Lesenswert?

Hier ein Stack-Up von einem 10L board für SP6LXT im FGG484 Gehäuse.
Es werden zwei DDR3 x16 Bausteine je einer an rechter und linker Bank 
angebunden.
die Datenleitungen werden auf der 3. Lage (Sig2) und die Adressleitungen 
auf der 8. Lage (Sig3) (also all stripline  geroutet). Single-ended 
Signale als 100 µm (50 Ohm target), differenzielle Signale als 2x 100 µm 
mit 150 µm edge-to-edge (100 Ohm target).

Lästig ist das length matching der Leitungen auf wenige mm wie im Design 
Guide von Xilinx gefordert.


……….top/1st layer: Sig1, >=17 μm + plating
______ ~ 120 μm (defined by impedance) FR4 or PP-foil
……….2nd layer: GND, >= 17 μm
______ ~ 110 μm (defined by impedance) FR4 or PP-foil
……….3rd layer: Sig2, >=17 μm
________~ 180 μm (defined by impedance) FR4 or PP-foil
……….4th layer: GND, >=17 μm
________~ 110 μm (as small as possible) FR4 or PP-foil
……….5th layer: PWR_CORE, >=17 μm
________~ 230 μm (as small as possible) FR4 or PP-foil
……….6th layer: GND, >=17 μm
______ ~ 110 μm (as small as possible) FR4 or PP-foil
……….7th layer: PWR_IO, >=17 μm
________~ 180 μm (defined by impedance) FR4 or PP-foil
……….8th layer: Sig3, >=17 μm
________~ 110 μm (defined by impedance) FR4 or PP-foil
……….9th layer: GND, >=17 μm
______ ~ 120 μm (defined by impedance) FR4 or PP-foil
……….bottom/10th layer: Sig4, >=17 μm + plating

von Andy H. (neumannandy)


Lesenswert?

Ich grübele auch gerade das an einer kleinen (SP6 DDR3 PHY RJ45) LP.

Dieses "length matching der Leitungen " ist ja wirklich lästig.

Muss ich nur die Leitungen vom SP6 Ball zum DDR3 Ball gleich machen?
danach kommen dann noch die Leiterbahnen zum ADR Abschlusswiderstand was 
ist mit dehnen? Ignorieren ?

Muss ich die kürzere Laufzeit der Signale auf Innenlagen einrechnen und 
dort z.B. 10Prozent dazu geben?

der SP6 hat auch ltd. Datenblatt Verzögerungszeiten (FLIGHT TIME) durch 
CHIP - BALL Bond-Drähte die z.Teil sehr weit sind alleine beim Datenbus 
36ps (DQ8) bis 76ps (DQ15) rechne ich mit 150000km/s ergibt sich eine 
Längendifferenz von 11,4mm - 5,4mm = 6,0mm das alleine macht schon mein 
Milimetergenaues length matching auf der LP eigeneartig ?

Die Adressen/RAS/CAS/BAn habe ich 20,5mm +/- 0,5mm gemacht.
Alle Datenleit. und die Diff. DQS/CLK 17,5mm +/- 0,5mm.
der 10er Lagenaufbau sollte auch 50 Ohm bzw. 100Ohm ergeben.
Lagenaufbau und Leiterzugbreite kam von Multipcb
ach ja jede Leitung hat auch noch (nur) genau 2 Vias um ans Ziel zu 
kommen.


oder mach ich mir zu viel Arbeit ?
DDR3 Speicher sind wohl etwas zickig aber ich kann mir keine X 
Leiterplattenproben leisten kosten immerhin pro Versuch einen 1000er.

Software (DatenPaketepacker) macht ein Kumpel z.T. auf n'em XILINX SP605 
Evalboard das mir auch als kleine Vorlage für meine LP war.

wäre schön wenn jemand mir Hoffnung macht das es mit meinen bisherigen
"Beachtungen" schon gut gehen wird?

Danke für Hinweise!

von Christoph Wagner (Gast)


Lesenswert?

Die Flight Times sind laut einem der entsprechenden Datenblaettern in 
dem Sicherheitsrahmen mit inbegriffen, welche die "Routing Guidelines" 
umfassen. Prinzipiell habe ich ein aus diesen Guidelines ein Layout 
erstellt und bin bisher recht gluecklich damit. Ich sage mal so, die 
Routingspecs die Xilinx da vorgibt sind so eng, dass ein Design bei 800 
MT/s gluecken wird, wenn diese eingehalten werden. Flight-Time 
kompensation z.B. wuerde dir zusaetzlichen Headroom verschaffen.

Insgesamt handelt es sich bei mir um ein 8 Lagen Layout (Route 1, GND, 
Route 2, GND, Route 3, GND, Route 4, VCC), wobei ein 2Gbit x16 DDR3-RAM 
an einen XC6SLX45T angeschlossen wurde. R2 und R3 beinhalten dabei die 
kritischeren DQ Baenke, R4 die Adressbank. R1 ist im Routingbereich mit 
GND ausgefuellt.

Die Terminierungswiderstaende habe ich auf dem Top-Layer direkt vom Ball 
des DDR3-Ram mit 5mil Leitungen herausgefuehrt. Signaltechnisch entsteht 
so der geringste Stub zum eigentlichen Eingangstreiber. Die eigentliche 
Laenge dieser Leitung zum Abschlusswiderstand ist nicht mehr kritisch. 
Wichtig ist, dass die Flight time zwischen den Balls im Rahmen bleibt. 
Trotzdem ist es wichtig, die Terminierungswiderstaende moeglichst kurz 
anzubinden.

Ja, du musst die unterschiedliche Ausbreitungsgeschwindigkeit auf 
Innen/Aussenlagen einkalkulieren. Auch das extra-Delay durch jedes VIA. 
Das entfaellt natuerlich, wenn du konsistent nur auf den Innenlagen 
routest ;)

Ueber das Projekt habe ich auch gehoerig an Respekt vor den Specs 
gewonnen, aber auch die Einsicht dazu dass das alles nicht so schlimm 
ist, wies von aussen ausschaut ;)

von Michael K. (mab)


Lesenswert?

Andy Hennig schrieb:
> Muss ich die kürzere Laufzeit der Signale auf Innenlagen einrechnen und
> dort z.B. 10Prozent dazu geben?

Ist das nicht eher genau umgekehrt?


> Lagenaufbau und Leiterzugbreite kam von Multipcb

Klingt interessant. Könntest Du das hier einmal reinstellen?

Gruß

von Andy H. (neumannandy)


Angehängte Dateien:

Lesenswert?

Mach ich gern

Hier hab ich mal Bilder für den Lagenaufbau und mein ersten 
Routingversuch mit einem Längenausgleich solo "Ball to Ball" Differenz. 
ist ein ordendlicher Spagetti Teller ;-) Allerdings sind alle Signale 
wild auf allen 4 Lagen verteilt. Routing zu den Abschluss R mach ich 
erst wenn ich
den Längenausgleich erledigt habe. Mit dem LP (Atltium) Programm werde 
ich noch warm. Ich habe nur ne Anzeige gefunden die mir das geroutete 
Netz anzeigt das länger wird wenn ich auch die Abschusswiderstände an 
den Adressen dran hab und das stört mich natürlich jetzt noch.
Die Abschlusse kommen dann später alle auf kurz die linke Seite vom 
DDR3.

....Schön wenn deren Länge dann nicht mehr eingerechnet werden muss.


Gerade mach ich ne Tabellenkalkulation um noch die 
Leiterpatteneigenschaften (10%) und Flight Time dazu zu Rechnen.
> Muss ich die kürzere Laufzeit der Signale auf Innenlagen einrechnen und
> dort z.B. 10Prozent dazu geben?
>Ist das nicht eher genau umgekehrt?

Ist natürlich richtig!! wegen C(LP)=C(Licht)/sqr(er)
er=3,5 Aussenlage
er=4,1 Innenlage


der LP Hersteller errechnette? mir folgende Eckdaten

Lötstoppmaske = Epsilon(r) = 3,5
Basismaterial ISOLA DE104  Epsilon(r) = 4,1

Impedanzen auf den Lagen 1 und 10 Z0 = 50 Ohm +/-15% mit Leiterzugbreite 
= 120 μm

Zdiff = 100 Ohm +/-15% mit Leiterbreite/Isolationsabstand/Leiterbreite = 
101/180/101 μm

Impedanzen auf den Lagen 3 und 8 Z0 = 50 Ohm +/-10% mit Leiterzugbreite 
= 125 μm

Zdiff = 100 Ohm +/-10% mit Leiterbreite/Isolationsabstand/Leiterbreite = 
95/155/95 μm

Danke ...Ich sezte weiter auf eure kollektiven Intelligenz Hinweise.

von Michael K. (mab)


Lesenswert?

Hallo,

also:

> Allerdings sind alle Signale wild auf allen 4 Lagen verteilt.

Also ich komme beim Betrachten von Routing.png auf 5 Lagen.
Diesbezüglich wären Angaben über den Lagenaufbau, also gnd,vcc und 
signal von Interesse.

Was unbedingt vermieden werden sollte ist die Verlegung von 
überlappenden Meandern auf 2 Lagen ohne Abschirmung dazwischen.

Grundsätzlich zur Schaltung:
Hast Du eine Referenz bzgl. der Abschlusswiderstände?
Üblicherweisse ist das bei Anschluss von nur einem Ram so nicht 
erforderlich.

Hilfreich wäre noch eine Angabe der DDR CLK Frequenz, hiermit lassen 
sich die Erforderniss bzgl. Matching besser einschätzen.

Gruß

von Michael K. (mab)


Lesenswert?

@ Admin & TO

Wäre es nicht sinnvoll diesen Thread in das Platinen Forum zu 
verschieben?

Dort wird die Aufmersamkeit höher sein.

von kobi briant (Gast)


Lesenswert?

kann ich mir so eine platine selber etzen?

von krumeltee (Gast)


Lesenswert?

Nein, etzen kann man das nicht.

von Andy H. (neumannandy)


Lesenswert?

Die GND/VCC Planes habe ich im Bild oben einfach mal  weggelassen sind 
aber da.

bisher bin ich ja (nur) hinter Erkenntnissen her was alles beim 
Längenmatching reinspielt und evtl. zum Totalverlust führt wenn mans 
vergisst. An der Hardware sollte es bitte nicht liegen wenn Datenfehler 
im
Speicher stehen.

Da die LP hier wie ein Bauelement wirkt ist dies wohl ein Problem das 
jeder Spartan6 und DDR1/2/3 Anwender bei der Entwicklung hat.
Und erst recht der Programmierer, denn er muss das Interface ja zum 
Leben erwecken. Bei mir ist es der DDR Controller ja wohl HW im Spartan6 
aber bei Softcores ist es betimmt genauso wichtig oder.

Bin ein "selten" Programmierer, von VHDL&Co weiss grad so "was" und 
"wozu" .....

Zur Frage:
Also der CLK_P/CLK_N soll 300MHZ sein/werden.

Im Vergleich ist alles andere auf meiner LP Gleichstrom ;-)
2x 10/100 Phy RS232, I2S, LEDs, ein paraleller Boot Flash und Powersup.
soll Daten sammeln und im IP Pakete packen und soll eien SP6 und ein 
DDR3 drauf. Dann soll das ganze dieses teure Eval Bord ablösen.

Alle Lagen und deren Funktion

L1 Signal
L2 GND
L3 Signal

L4 GND
L5 VCC 3,3V
L6 VCC2 1,2V 1,5V
L7 GND

L8 Signal
L9 GND
L10 Signal

Bisher sind die Planes L2,4,5,6,7,9 rein VCC oder GND


> Grundsätzlich zur Schaltung:
> Hast Du eine Referenz bzgl. der Abschlusswiderstände?
> Üblicherweisse ist das bei Anschluss von nur einem Ram so nicht
> erforderlich.

...war so auf dem Eval Board vom SP605

Also VTTVREF=VTTDDR=1,5V ich darf einfach Punkt zu Punkt allein mit nem 
Pullup-R 49.9 Ohm nach 1,5V dran?

.

von Analog (Gast)


Lesenswert?

Ist ein DDR3 für diene Anwendung nötig? Reicht ein einfacher Sram / 
SDram nicht aus? (Ersparst dir erheblichen Aufwand)

von Michael K. (mab)


Lesenswert?

Hallo,


> ...war so auf dem Eval Board vom SP605
>
> Also VTTVREF=VTTDDR=1,5V ich darf einfach Punkt zu Punkt allein mit nem
> Pullup-R 49.9 Ohm nach 1,5V dran?

Ich kenne mich mit dem besagtem FPGA nicht weiter aus, frage mich 
allerdings warum hier nicht mit ODT gearbeitet wird?
Das würde erheblich den Aufwand senken und die Frage nach dem Matching 
inkl. R's vom Tisch wischen.

Andy Hennig schrieb:
> L1 Signal
> L2 GND
> L3 Signal
> L4 GND
> L5 VCC 3,3V
> L6 VCC2 1,2V 1,5V
> L7 GND
> L8 Signal
> L9 GND
> L10 Signal

Ein solider Standardaufbau bei 10 Lagen. Ich sehe 4 Signalagen aber 5 
Farben im Bild; das war wohl ein Zwischenzustand...

Bist Du dir eigentlich sicher das die 4 SL ausreichend sind?
Es geht immerhin um ein BGA mit 18x18 Balls.
Das funktioniert eigentlich nur wenn der Hersteller den BGA SEHR 
Layouterfreundlich gestaltet hat bzw. wenn eine größere Anzahl Balls 
nicht belegt ist.

Noch zum Lagenaufbau:
Wenn man mal die genannten LB Breiten sowie Abstände nachrechnet kommt 
man da z.B. bei Layer 1 eher auf 45 Ohm.

Gruß

von Andy H. (neumannandy)


Lesenswert?

>Ist ein DDR3 für diene Anwendung nötig? Reicht ein einfacher Sram /
>SDram nicht aus?

1 Gigabyte SRAM ?

DDR3 ist ne Forderung die ich nicht weiter erfragt habe bzw. keine 
schlaue Antwort bekam ausser ist so auf dem Eval Board dort läuft die 
ganze Software bisher einigermaßen. und kostet billig ca. 4,50Euros.

Die LP 10x6cm soll auch gleich 10x (professionell) bestückt werden damit 
alle Studenten was davon haben.
alleine die nackte LP kostet in Summe ja fast das gleiche egal ob 1x 
oder 100x bestellt werden . 100 Stück kosten zusammen 10% mehr als eine 
einzige.
Bestücken werde ich aber erst nur 10 Stück da der SP6 sehr kostet.
Aber so weit bin ich ja noch nicht.




.

von Jonas B. (jibi)


Lesenswert?

ODT ist leider nicht die Lösung, die alle Probleme beseitigt oder gar 
die Anforderung an die Platine senkt. Nö. Serienterminierung braucht's 
trotzdem meistens.
P.S. ich baue auch gerade an einer ganz änlichen LP. Spartan6 (ftg256) + 
DDR2 Ram von Micron.  Ich hab aber nur 6 Lagen, das ganze ist schon ganz 
schön sportlich.


Gruß Jonas

von Mac G. (macgyver0815)


Lesenswert?

DDR3 braucht keine Serienterminierung wenn man ODT nutzt - funktioniert 
wunderbar (wenn die Platine OK ist).

von Andy H. (neumannandy)


Lesenswert?

Ich beschalte ja das ODT Signal aber das ist nur für D[0..15] und 
DatenClk

Adressclock CLK_N und CLK_P haben einen 100R.

Wie sieht dann die einfache Terminierung für Adressen aus.
VTTVREF = 1,25V via Spannungsteiler
und PullUp an A[0..14] BA[0..2] und RAS CAS WE  nach 1,5V

Die Fligth Time für den SP6 durch die Die to Ball Drähte
habe ich jetzt bei jeder Leitung auf der LP kompensiert
sie sind dadurch bis zu 3 mm Länger oder Kürzer
die Verlängerung auf den Aussenlagen um 10%
gegenüber Innen kommt jetzt dran nochmals +2mm.
habe sone Tabelle gefunden
Angabe z.B. für IO_L55N_M3A14_3: 26ps
bis IO_L49_M3A2_3: 76 ps

76ps-26ps=50ps d.h. bei Er=3,5
max. 7,7mm ist schon ne Hausnummer
habe dann auf +/- 3,5mm alle Leitungen nochmals nachgearbeitet.

ist aber sehr Umständlich
hätte das nicht Xilinx besser im Die gemacht. SP6 Kostet doch genug.


aber jetzt erst mal eine Feierabendmilch ;-)

von Jonas B. (jibi)


Lesenswert?

Mh... ich meine ALLE Signale werden intern terminiert (wenn ODT aktiv). 
Oder?

Gruß Jonas

von Michael K. (mab)


Lesenswert?

Jonas Biensack schrieb:
> Mh... ich meine ALLE Signale werden intern terminiert (wenn ODT aktiv).
> Oder?

Kein Oder, das ist so!

Gruß

von Lattice User (Gast)


Lesenswert?

Michael K. schrieb:
> Jonas Biensack schrieb:
>> Mh... ich meine ALLE Signale werden intern terminiert (wenn ODT aktiv).
>> Oder?
>
> Kein Oder, das ist so!
>
> Gruß

Nein es ist nicht so.
Gleich auf der ersten Seite in der Featurelist steht welche Signale ODT 
haben.
http://download.micron.com/pdf/datasheets/dram/ddr3/2Gb_DDR3_SDRAM.pdf

Bei DDR3 ist ODT übrigens Pflicht.

von Christoph (Gast)


Lesenswert?

Andy Hennig schrieb:
> Die LP 10x6cm soll auch gleich 10x (professionell) bestückt werden damit
> alle Studenten was davon haben.
[...]
> Bestücken werde ich aber erst nur 10 Stück da der SP6 sehr kostet.

Du arbeitest für eine Uni/Fachhochschule?
Das Board wird am Schluss auch zur Ausbildung von Studenten eingesetzt?
Seid ihr beim XUP (Xilinx University Programm) dabei?

Wenn du das mit "Ja" beantworten kannst, würde ich mal bei Xilinx 
anklopfen (Jemand mit Professortitel) und Xilinx um gesponserte FPGAs 
anfragen.

Klappte bei unserem Gecko3 Projekt sehr gut, da haben wir 40 Stück 
Spartan3 4000 gesponsert bekommen (Wir hätten uns nur die 1500 
geleistet... :-)).

von Andy H. (neumannandy)


Lesenswert?

Falls einer gerade dieses XILINX ISE offen hat

Ein (Zeilen) Kommndo:

partgen -v 6slx45ff324

soll die auch "fight times" des o.g. Spartan6 in ein Textfile ausgeben.

Ich brauche diese Info für ein Length Maching zum DDR3 doch mal aus 
erster Hand statt aus dem Goole-Internet.

besonders BANK3 da dort der DDR3 Controller sitzt.

Wenn das jemand hier für alle interessierten Posten könnte wäre toll.

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.