Ich muss ein Design dahingehend aufziehen, daß es für einen neuen Prozessor und ein weiteres FPGA taugt. Nun soll aber die Verdrahtung so erhalten bleiben, daß es bestückungskompatibel bleibt, d.h. es wird entweder der alte, große oder der neue,kleine Prozessor gesteckt und dazu passend das jeweils alte (kleine) oder neue (große) FPGA. Vereinfacht dargestellt sitzen die alten oben und die neuen darunter, FPGAs links und Prozessoren rechts: SPARTAN2 <-> MCU-old SPARTAN3 <-> MCU-new Da alte wie neue Konfiguration sowohl SRAMs als auch FlashRom ansteuern müssen, habe ich jetzt natürlich Daten- und Adressbusse gedoppelt und alles mit allem verschaltet. Am Addressbus hängen jetzt TREIBEND sowohl FPGA,als auch MCU dran (wechselseitig aktiv), wobei natürlich immer alle Leitungen an einem Punkt offen bleiben - je nachdem, wer bestückt ist. Die Frage ist: Macht das was? Ich mache mir Sorgen um Reflektionen, immerhin soll die Kiste mit extern bis zu 50MHz laufen. Sicherheitshalber habe ich die RAMs und das Flash schon mal dazwsichen plaziert - um in beiden Fällen kurze Leitungen zu haben : FPGA-old <-> MCU-old SRAM 1 , Flash , SRAM 2 FPGA-new <-> MCU-new Oder, wäre es besser die Treiber, jeweils linear zu hängen ? FPGA-old <-> MCU-old SRAM 1, SRAM 2, FPGA-new <-> MCU-new Flash Oder, sodaß im Neufall nur ein Line über bleibt mit leer laufenden Reflektionen ? FPGA-old <-> FPGA-new SRAM 1, SRAM 2, Flash MCU-old <-> MCU-new
Moderne FPGAs haben recht kurze Anstiegszeiten, so dass schnell Signalintegritätsprobleme auftreten können. Kannst Du nicht einfach für die neue Version eine neue Platine machen? Da bekommst Du auch die EMV besser in den Griff. Ansonsten kannst Du Deine Idee auch mal durch einen SI-Simulator schicken (HyperLynx). Rick
Naja, eine neue Platine wird das selbstredend, nur ist mir nicht klar, wie ich die Bauteine setzen soll. Leider muss ich jetzt sogar 4 RAMS verdrahten und der FPGA ist auch ein anderer, sodass ich wieder vor der Frage stehe, ob man das besser komlett "linear" macht, mit jeweils durchgeschleifter Busverdahtung. HyperLynx steht mir nicht zur Verfügung. Ich muss im Prinzip nur das Pinning der beteiligten FPGAs machen. Leider ist der Platz auf dem Board so gering, daß ich es mir nicht erlauben kann, kompliziert durch die Gegend zu routen. Daher will ich die Plazierung der Bauelemente vor Augen haben, um die richtigen FPGA-Pins (wenigstens auf der richtigen Seite zu erwischen). So, wie ich pinne, so wird dann vom zulieferer plaziert.
Momentan habe ich eine - sagen wir - sternförmige Verdrahtung. Wäre es besser, den Bus eindimensional um die Beuateile zu ziehen? Die abgemeldeten Bauteile wären so ganz hinten in der Kette. Macht das etwas, wenn diese Leitungen dann offen sind ?
Kann ich mir eigentlich nicht vorstellen. Die Addressleitungen sind ja auch sonst meistens offen, da sie hochohmige Eingänge sehen. Behaupte ich jetzt mal so...
kommt auf die Flankensteilheit der Signal an! Wenn's schnell wird, ist ne Sternverdrahtung aus SI-Sicht ungünstig (Reflektionen) - da baut man dann lieber eine Kette auf und schließt diese am Ende mit der Leitungsimpedanz ab! Das Problem dabei ist, daß "die Empfindlichkeit" nicht von der Taktfrequenz, sondern von der Flankensteilheit abhängt - die der Anwender meistens (außer beim FPGA) nicht in der Hand hat. Alle Leiterbahnen, die länger als das 3-fache der Anstiegs-(Abfall-) zeil sind, müssen als "transmission lines" betrachtet werden (=> dann empfiehlt sich auch eine IBIS-Simulation): es besteht die Gefahr von Über/unterschwingern, die (im besten Fall) für schlechte EMV-Ergebnissen, oder (im schlimmsten Fall) die Lebensdauer des Bausteins beeinträchtigen oder (im allerschlimmsten Fall) die Funktion des Chips beeinträchtigen. Stichwort hier: "Ground Bounce" durch Querstöme über die Schutzdionen (alles schon selbst erlebt :-( ) Beispiel: Spartan3E LVCMOS33_S_8 (Slow/8mA !!) : rise time: 448ps fall time 417 ns => critcal length irgendwo zwischen 1,0 und 3,0 cm (!!!) ich empfehle, LVCMOS33_S_8 an 1,2 cm Leitungslänge zu simulieren! Gruß Jochen
muß natürlich heißen: rise time: 448ps fall time 417 ps (!!)
Ist schon der Hammer, dass die Ausgänge bei SLOW nicht mal ne halbe Nanosekunde brauchen :-0 MFG Falk
Spartan 3A kennt jetzt auch "QUIETIO" - die liegen dann im Bereich >1,7 ns :-o (allerdings brauchen die Ausgänge dann worst case auch EINIGE ns, um den High-Pegel zu erreichen) Gruß Jochen P.S. die Virtex sind nicht ganz so aggressiv - da liegt de LVCMOS33_S_12 bei 1.0 ns (Ergebnisse aus Simulation mit Hyperlynx)
>schließt diese am Ende mit der Leitungsimpedanz ab!
Wie groß ist die denn bei 3cm Länge ?
@Der Experte (Gast) >>schließt diese am Ende mit der Leitungsimpedanz ab! >Wie groß ist die denn bei 3cm Länge ? Das ist unabhängig von der Länge, siehe Wellenwiderstand. MFG Falk
>ich empfehle, LVCMOS33_S_8 an 1,2 cm Leitungslänge zu simulieren!
Das ist dann die Aufgabe des Layouters, würde ich mal sagen :D
Allerdings würde ich mich gerne näher damit befassen, hab nur wenig
Zeit!
Habe mal nur mal etwas recherchiert: Laut der vorgefundenen Artikel
kann/soll man die Leuiterbahnen abschließen, auf dem Baord ist aber
nichts davon zu sehen. Es ist mit maximal 60MHz vorgesehen und die
Verdrahtung wird als unkritisch gesehen, weil man das SO ja schon mal
gemacht hat und es auch ging. (?)
"=> critcal length irgendwo zwischen 1,0 und 3,0 cm (!!!)"
Wie habe ich das zu vestehen? Was kann ich da von meiner Seite
unternehmen, ausser alle gruppierten Signale nahe zu plazieren, daß es
auf ähnlich lange Bahnen hinausläuft?
@FPGA-Designer (Gast) >>ich empfehle, LVCMOS33_S_8 an 1,2 cm Leitungslänge zu simulieren! >Das ist dann die Aufgabe des Layouters, würde ich mal sagen :D Nöö, der Entwickler muss sich auch schon drum kümmern. >nichts davon zu sehen. Es ist mit maximal 60MHz vorgesehen und die Nochmal. Die FREQUENZ ist (fast) egal, es kommt auf die minimale Anstiegszeit an. >Verdrahtung wird als unkritisch gesehen, weil man das SO ja schon mal >gemacht hat und es auch ging. (?) Geht solange gut, bis es mal nicht mehr geht. Und der schlimmste Fall ist NICHT, wenn es vor lauter Reflektionen gar nicht mehr geht, sondern wenn sporadisch Fehler auftreten. Viel Spass beim Debuggen ;-) >"=> critcal length irgendwo zwischen 1,0 und 3,0 cm (!!!)" >Wie habe ich das zu vestehen? Dass alles länger asl 1..3cm Reflektionen verursachen wird, welche die Siganlintegrität sichbar verschlechtern, wenn keine Terminierung verwendet wird. > Was kann ich da von meiner Seite >unternehmen, ausser alle gruppierten Signale nahe zu plazieren, daß es >auf ähnlich lange Bahnen hinausläuft? Die gleiche Leitungslänge hat damit nichts zu tun. Was man tun kann und muss ist - impedanzrichtige Leitungen mit 50..150 Ohm Wellenwiderstand - Terminierung MFG Falk
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.