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
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)
@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