Forum: FPGA, VHDL & Co. Frage bezüglich Busverdrahtung auf PCB


von FPGA-Designer (Gast)


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

von Rick Dangerus (Gast)


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

von FPGA-Designer (Gast)


Angehängte Dateien:

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.

von FPGA-Designer (Gast)


Angehängte Dateien:

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 ?

von Matthias (Gast)


Lesenswert?

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

von Joko (Gast)


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

von Joko (Gast)


Lesenswert?

muß natürlich heißen:
 rise time: 448ps fall time 417 ps (!!)

von Falk B. (falk)


Lesenswert?

Ist schon der Hammer, dass die Ausgänge bei SLOW nicht mal ne halbe 
Nanosekunde brauchen :-0

MFG
Falk

von Joko (Gast)


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)

von Der Experte (Gast)


Lesenswert?

>schließt diese am Ende mit der Leitungsimpedanz ab!

Wie groß ist die denn bei 3cm Länge ?

von Falk B. (falk)


Lesenswert?

@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

von FPGA-Designer (Gast)


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?

von Falk B. (falk)


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

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
Noch kein Account? Hier anmelden.