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
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
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!
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 ;)
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ß
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.
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ß
@ Admin & TO Wäre es nicht sinnvoll diesen Thread in das Platinen Forum zu verschieben? Dort wird die Aufmersamkeit höher sein.
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? .
Ist ein DDR3 für diene Anwendung nötig? Reicht ein einfacher Sram / SDram nicht aus? (Ersparst dir erheblichen Aufwand)
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ß
>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. .
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
DDR3 braucht keine Serienterminierung wenn man ODT nutzt - funktioniert wunderbar (wenn die Platine OK ist).
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 ;-)
Mh... ich meine ALLE Signale werden intern terminiert (wenn ODT aktiv). Oder? Gruß Jonas
Jonas Biensack schrieb: > Mh... ich meine ALLE Signale werden intern terminiert (wenn ODT aktiv). > Oder? Kein Oder, das ist so! Gruß
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.
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... :-)).
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.