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?
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?
> 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.
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.
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.
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...
> 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.
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.
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
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
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
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.
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ß
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.
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ß
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?
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...