Forum: FPGA, VHDL & Co. High Speed Design: SDRAM an XILINX FPGA


von berliner (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leute,
nun ist es soweit: ich möchte mich an FPGA Designs versuchen.
Zurzeit bin ich dabei einen MT48LC32M8A2P-7E SD-RAM Baustein an einen 
XC3S50AN-4TQG144C anzuschließen. Das beim Layouten des 4-Lagigen Boards 
habe ich alle Steuerleitungen (breite: 0,2 mm) auf die Länge von 10,4 mm 
getrimmt. Trotzdem mache ich mir sorgen um Signal Integrität, da ich 
wenig Ahnung davon habe.

Die Angaben aus dem Speicher-Datenblatt besagen, dass eine Input-Leitung 
eine Worst-Case Kapazität von 6 pF hat, der Leitungswiderstand 
FPGA-SDRAM ca. 26 milliohm beträgt.
Die Leitungsinduktivität (nach Wikipedia) L=1,2 nH/mm * 10,4 mm = 12,48 
nH.
Die Signalanstiegszeit vom FPGA habe ich willkürlich als 0.6 ns 
angenommen.

nun zeigt meine LT-Spice Simulation, dass die Signalqualität ziemlich 
mies sein wird.

meine Frage:
1) wo finde ich die Angaben zur Signal-Anstiegszeit des 
XC3S50AN-4TQG144C
2) ist die Abbildung der SRAM-Eingänge als reine Kapazität richtig?
3) ist die Abbildung der Leiterbahnen als RL Reihenschaltung richtig?
4) ist mein Simulationsansatz überhaupt richtig, oder ist hier schon 
eine Art FEM Simulation nötig?

: Verschoben durch Moderator
von berliner (Gast)


Lesenswert?

5) muss ich Impedance-Matching machen?
6) wie erfahre ich die Ein- und Ausgangsimpedanzen der verwendeten ICs?

von berliner (Gast)


Lesenswert?

Pusssshhhh.

von Grendel (Gast)


Lesenswert?

berliner schrieb:
> 5) muss ich Impedance-Matching machen?

Sollte man tun, aber das ist bei den kurzen Strecken nicht ganz so 
kritisch.
Ist das eine 4 Lagen Platine?
Falls nein, kannste das sowieso vergessen weil Du das dann garnicht 
hinbekommst (Koplanar, ja aber nicht bei so dicht aneinander verlegten 
Leiterbahnen).


> 6) wie erfahre ich die Ein- und Ausgangsimpedanzen der verwendeten ICs?

Die sind i.d.R. auf 50 Ohm ausgelegt.


> XC3S50AN

Passt da neben dem SDRAM Controller überhaupt noch was rein?

von Georg A. (georga)


Lesenswert?

> Trotzdem mache ich mir sorgen um Signal Integrität, da ich
> wenig Ahnung davon habe.

Unnötig. Wenn wirklich alles so kurz ist, kann auch bei 133MHz nicht 
viel passieren. Entscheidend ist ohnehin fast nur der Takt, sieh da noch 
eine parallele Terminierung vor, die bei Bedarf zu bestücken ist.

von berliner (Gast)


Lesenswert?

Danke für eure Antworten,

@Grendel (Gast):
1) Ist das eine 4 Lagen Platine?    ja.
2) Passt da neben dem SDRAM Controller überhaupt noch was rein?

das weiß ich noch nicht, da ich null Ahnung von FPGAs habe. Es sollte 
ein FIFO Buffer werden, welches einen 16 Bit Datenstream puffert. Hab 
ihn genommen, da er im größten TQFP Gehäuse, bei Farnell bestellbar und 
mit integriertem Konfigurationsspeicher war.

von Helmut S. (helmuts)


Lesenswert?

1) wo finde ich die Angaben zur Signal-Anstiegszeit des
XC3S50AN-4TQG144C

Im IBIS-File.

Den kannst du im FPGA-Flow erzeugen. Die Anstiegszeit kann man aus den 
Kurven in dem File ablesen.

2) ist die Abbildung der SRAM-Eingänge als reine Kapazität richtig?

Beser als nichts.

3) ist die Abbildung der Leiterbahnen als RL Reihenschaltung richtig?

Hast du eine Impedanzkontrollierte Leitung?
Falls ja dann setz da ein Stück Leitung rein, z. B. 50Ohm, wenn deine 
Leitung 50Ohm Wellenwiderstnd hat.


4) ist mein Simulationsansatz überhaupt richtig, oder ist hier schon
eine Art FEM Simulation nötig?

Dein FPGA-Ausgang hat einen Innenwiderstand von z. B. 20Ohm. Den muss du 
in Reihe zu deinem Generator in der LTspice Simulation schalten.
Der Ausgangswiderstand hängt von der gewählten drive-strength ab.
Den Ausgangswiderstand und die Anstiegszeit kann man aus den Kurven im 
IBIS-File ablesen. Das Symbol für die Leitung heißt "tline". Das t steht 
für transmission.

Wenn man etwas gutes tun will, dann schaltet man in Serie zu den 
Ausgängen einen Widerstand. Den wählt an so, dass die Summe aus

Innenwiderstand + externem Widerstand = Wellenwiderstand

der Leitung ist.

: Bearbeitet durch User
von Grendel (Gast)


Lesenswert?

berliner schrieb:
> 1) Ist das eine 4 Lagen Platine?    ja.

Gut, dann keine Schlitze in der Masselage direkt unter den kritischen 
Signalen erzeugen (ausser da wo es wegen Versorgung nicht anders geht).


> das weiß ich noch nicht, da ich null Ahnung von FPGAs habe.


Da würde ich dann an Deiner Stelle das Design zumindest mal grob 
implementieren und testen ob es passt bevor Du mit dem Layout 
weitermachst.
Ist immerhin das kleinste FPGA von Xilinx...

von Helmut S. (helmuts)


Lesenswert?

> Wenn man etwas gutes tun will, dann schaltet man in Serie zu den
Ausgängen einen Widerstand.

Ich habe vorhin dein Layout noch nicht angeschaut. Deine Leitungen sind 
ja noch richtig kurz und PC1600 hast du auch nicht sondern nur PC133. Da 
brauchst bei den kurzen Leitungen den extra Aufwand mit den externen 
Serienwiderständen nicht.

von berliner (Gast)


Angehängte Dateien:

Lesenswert?

Danke euch für eure Tipps,

insbesondere mit IBIS Files. Diese werde ich im Laufe der Einarbeitung 
in die Toolchain versuchen umzusetzen.

Impedanzkontrollierte Leitungen habe ich, soweit ich weiß, nicht. Da die 
Abstände der Leiter zur Ground Plane wg Layerwechsel nicht gleich sind 
(Impedanzsprünge)und weil unter Signalen noch Power Leitungen verlaufen 
werden, war ich mir nicht sicher ob es sinnvoll ist Impedanzen zu 
berechnen.

Die Ground-Plane wird bei mir wie im Bild aussehen. Power mache ich 
etwas später.

von Helmut S. (helmuts)


Angehängte Dateien:

Lesenswert?

Hallo,
du solltest unbedingt die Multiplikatoren u, n, p verwenden damit man 
die Zahlen lesen kann. Schau dir bitte mein Beispiel mit LTspice an. Das 
sieht dann schon viel professioneller aus.
Helmut

: Bearbeitet durch User
von berliner (Gast)


Lesenswert?

Hallo Helmut,
das sieht ja echt gut aus. Vielen, vielen Dank!

von Michael K. (mab)


Lesenswert?

Hallo berliner,

Frage vorweg: Ist das Ganze eine Übungsaufgabe nach dem Motto 'Der Weg 
ist das Ziel', oder geht es eher darum eine lauffähige Platine zu 
erzeugen?

Falls zweiteres könnte man hier einiges verbessern/vereinfachen.

Gruß
Michael

von berliner (Gast)


Lesenswert?

Hallo Michael,
mein Ziel war es am Ende eine lauffähige Platine zu machen.

von Michael K. (mab)


Lesenswert?

berliner schrieb:
> Hallo Michael,
> mein Ziel war es am Ende eine lauffähige Platine zu machen.

Also dann:

Welchem Zweck dient eigentlich die ganze Simulation?
Da ja hier keine Impedanzkontrollierte LP vorliegt, was wird da 
eigentlich errechnet? Und welche Erkenntnis ergibt sich daraus?

Ich gehe mal davon aus das die Leiterbahnen vom FPGA zum SDRam 50 Ohm 
haben sollen. Es gibt auch Fälle mit 60 bis 70 Ohm dies ist aber eher 
die Ausnahme.

Wenn jetzt aber aus vermutlich Kostengründen auf einen korrekten 
Lagenaufbau verzichtet wird ist das alles für die Katz.

Da es sich hier aber lediglich um ein eher langsames Ram Interface 
handelt wird es mit guter Wahrscheinlichkeit auch ohne Impedanzkontrolle 
funktionieren.

Vorschläge zum Layout:

1. Schmeiss den Schnickschnack mit den runden Leiterzügen raus. Das 
macht nur Arbeit und bringt keine Vorteile.

2. Was ein Problem sein könnte ist der zu geringe Abstand der LB 
zueinander. Siehe hierzu DB des Ram's. Hier wird jede Untergrenze 
unterschritten.

3. Wegen 2. und dem Mangel an Siganllagen wäre mein Vorschlag die 
Meander heraus zu werfen. Bei derart kurzen Leitungen in Kombination mit 
der verwendeten geringen Geschwindigkeit sind die nur Kosmetik.

4. Nachteilig ist weiterhin die Größe bzw. das Raster der verwendeten 
Vias. Es kommt an diversen Stellen zur Unterbrechung der GND Lage in 
Form von 2 oder 3 zu eng platzierten Vias. Das ist nicht empfehlenswert.

5. Ich hoffe mal das die Gnd Fläche nicht wie im Foto endet....


Gruß
Michael

: Bearbeitet durch User
von berliner (Gast)


Lesenswert?

Hallo Michael, Danke für den Tipp mit der Massefläche. Die Top Seite 
werde ich damit auch noch versehen und unter dem FPGA mit VAS (schön nah 
an den Beinchen)zu anderem Masseflächen durchkontaktieren.

Was die Simulation angeht, so kann ich diese auch später 
anwenden/verstehen. Hauptsache erst einmal ein Paar Anhaltspunkte für 
die Vorgehensweise bekommen.

Mit dem FPGA wollte ich eine der Kameras, die bei Ebay erhältlich sind 
ansteuern. Doch zuerst werde ich mich wohl in die ISE Umgebung 
einarbeiten müssen und schauen, ob ich in mein Baustein überhaupt einen 
SDRAM Controller reinbekomme. So stelle ich sicher, dass das Design 
nicht floppt.

von Michael K. (mab)


Lesenswert?

berliner schrieb:
> Hallo Michael, Danke für den Tipp mit der Massefläche. Die Top Seite
> werde ich damit auch noch versehen und unter dem FPGA mit VAS (schön nah
> an den Beinchen)zu anderem Masseflächen durchkontaktieren.

Das ist keine gute Idee!

Als Lagenaufbau setze ich mal voraus:
1. Sig1
2. Gnd
3. Vcc
4. Sig2

Mit einer weiteren Massefläche (was soll die eigentlich bewirken?) auf 
Layer 1 ziehst Du dir zusätzlich das Problem überlargender Massefächen 
rein.

Einfach geschrieben: Mehr (möglicher) Schaden als Nutzen. Das macht bei 
dieser Anwendung keinen Sinn. Kurzum: Nicht machen.

Gruß

: Bearbeitet durch User
von berliner (Gast)


Lesenswert?

Hallo Michael,
ja, den von dir vorgeschlagenen Lageaufbau kenne ich und hatte 
eigentlich vor ihn umzusetzen. Und zusätzlich eventuell unter dem FPGA 
eine Massefläche, die mit der Lage 2 verbunden wäre.
Kannst du mir das Problem mit überlagerten Masseflächen etwas erläutern? 
Das ist etwas neues für mich.

von Michael K. (mab)


Lesenswert?

berliner schrieb:
> Kannst du mir das Problem mit überlagerten Masseflächen etwas erläutern?

Hallo,

bei überlagerten Masseflächen geht es um die Rückstromwege. Theoretisch 
müsste da bei jedem Layerwechsel mit Signalbahnen ein nahe platziertes 
GndVia vorgesehen werden. Diesen Aufwand treibt man eigenlich nur wenn 
man einen faradayschen Käfig bauen möchte.

Hinzu kommt noch das in die auf L1 Gndfäche vermutlich noch LB eingefügt 
werden, was die Impedanz noch weiter ins Chaos bringt. Mir ist noch 
nicht einmal eine SW bekannt die mit einem solchen Konstrukt zurecht 
kommt.

Gruß

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

berliner schrieb:

>
> Mit dem FPGA wollte ich eine der Kameras, die bei Ebay erhältlich sind
> ansteuern. Doch zuerst werde ich mich wohl in die ISE Umgebung
> einarbeiten müssen und schauen, ob ich in mein Baustein überhaupt einen
> SDRAM Controller reinbekomme. So stelle ich sicher, dass das Design
> nicht floppt.

>XC3S50AN-4TQG144C


Video mit dem kleinsten Spartan. Der ist zu klein.

Und wo soll das Bild hin?
UART raus?

von Grendel (Gast)


Lesenswert?

René D. schrieb:
> Video mit dem kleinsten Spartan. Der ist zu klein.

Sag ich ja.

Nimm doch nen XC6SLX9 - der kommt im gleichen Gehäuse hat aber deutlich 
mehr Platz.
Die 10 Euro für FPGA und Speicher die das mehr kostet sollten bei sowas 
wohl drin sein...

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.