Frage bezüglich Busverdrahtung auf PCB

Gast #963123
Lesenswert?
• ▲
▼
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
Gast #967173
Lesenswert?
• ▲
▼
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
Gast #967628
Lesenswert?
• ▲
▼
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.
Angehängte Dateien:
Gast #967727
Lesenswert?
• ▲
▼
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 ?
Angehängte Dateien:
Gast #969064
Lesenswert?
• ▲
▼
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
Gast #969224
Lesenswert?
• ▲
▼
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)
Gast #969909
Lesenswert?
• ▲
▼
>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?
#969939
Lesenswert?
• ▲
▼
@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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren