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
5) muss ich Impedance-Matching machen? 6) wie erfahre ich die Ein- und Ausgangsimpedanzen der verwendeten ICs?
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.
:
Bearbeitet durch User
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
:
Bearbeitet durch User
Hallo Helmut, das sieht ja echt gut aus. Vielen, vielen Dank!
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
Hallo Michael, mein Ziel war es am Ende eine lauffähige Platine zu machen.
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
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ß
:
Bearbeitet durch User
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...
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.