Forum: FPGA, VHDL & Co. Pull-Up's bei bidirektionalen Ports nötig?


von Jürgen (Gast)


Lesenswert?

Guten Abend,

Ich hätte da eine Frage an die FPGA-Profis...

Der FPGA auf meinem Board ist mit einem Microcontroller zwecks 
Konfiguration und Kommunikation verbunden. Der Microcontroller
hat wie üblich, einen bidirektionalen Datenbus.

Aus dem Datenblatt des Microcontrollers:
Data bus:
This bi-directional bus is highimpedance when inactive, input for bus 
reads, and output for bus writes. The data bus is also used to transfer 
data directly to and from internal EZ-USB FIFOs under control of the 
FRD# and FWR# strobes. D0-D7 are active only for external bus accesses, 
and are driven low in suspend.

Also ist der Datenbus, wenn er nicht aktiv ist, im Tristate...
Da in meinem FPGA-Design wie üblich, die  bidirektionalen Pins, die mit 
dem oben genannten Datenbus verbunden sind, wenn nicht gerade OE aktiv 
ist, auch im Tristate verweilen, dann floaten doch die inout-Pins meines 
FPGA's, oder etwa nicht?
Kann ich damit mein Chip, ein Spartan-II beschädigen?

Soll ich Pull-UP-Wiederstände aktivieren, komisch nur dass im ucf-File 
eines Beispiel-Designs nichts davon zu sehen ist???

Bitte um Aufklärung, Vielen Dank

von Schrotty (Gast)


Lesenswert?

Kurz:
Du brauchst keine Pullups.
Lass die Signale floaten, da passiert nix.

von Jürgen (Gast)


Lesenswert?

und weißt du auch warum da nix passiert? - Hab mal gehört dass 
CMOS-Transistoren da sogar durchbrennen können!? Haben die da irgendeine 
Schutzschaltung?

Aber schonmal Danke für die Antwort!

von Schrotty (Gast)


Lesenswert?

Gegenfrage:
Warum sollten die Transistoren denn durchbrennen, wenn weder Spannung 
anliegt, noch Strom fließt?

von Schrotty (Gast)


Lesenswert?

Theoretisch wäre sowas denkbar, wenn du mittels eine FETS einen großen 
Strom schalten willst und an diesem Transistor das Gate floaten lässt. 
Dann könnte es theoretisch passieren, dass der Transistor teilweise 
aufgesteuert ist und somit Strom ein Strom fließt und gleichzeitig ein 
Drain-Source-Spannung abfällt und das Produkt aus beiden könnte Ptot 
überschreiten. Was es nicht tun würde, wenn der Transistor sperrt (UDS = 
groß, aber ID = 0) oder voll aufgestuert ist (UDS = sehr klein und ID = 
groß)

Aber in deinem Fall lässt du ja über den Transistor im innern des FPGA 
nahezu keinen Strom fließen (nur der Gatestrom für den nachfolgenden 
FET) und der ist meines erachtens völlig harmlos.

von Jürgen (Gast)


Lesenswert?

Naja, weil dabei hohe Querströme auftreten können...
Siehe: http://www.allaboutcircuits.com/vol_4/chpt_3/7.html
Dort wird gesagt: For this reason, it is inadvisable to allow a CMOS 
logic gate input to float under any circumstances.

von Jürgen (Gast)


Lesenswert?

Aha, hab deinen letzten Beitrag noch nicht gelesen als ich meinen
abgeschickt habe...
Also hast du in der Praxis noch keine Probleme damit gehabt?

von Schrotty (Gast)


Lesenswert?

Mit den Querströmen hast du theoretisch schon recht, dass sowas 
auftreten könnte. Aber in der Praxis konnte ich das noch nicht 
beobachten.
Dazu müsste man aber genau wissen, wie die Ports auf dem Silizium 
aufgebaut sind.
Also wenn du pullen willst, dann würde ich, wenn es geht nur "weak" 
pullen.

Aber wie gesagt: Ich hatte noch nie ein Problem damit.
Wie steht es denn mit unbenutzen Pins? Machst du was mit denen? oder 
lässt die einfach offen?

von Jürgen (Gast)


Lesenswert?

Die sind standardmäßig unter ISE WebPACK auf Pull-Down eingestellt.
Zu finden unter: [Generate Programming File]->Rechtsklick->Properties
->Configuration Options->Unused IOB Pins...

von Schrotty (Gast)


Lesenswert?

Ergänzung:
Wenn dies ein Problem wäre, dann würde das ja überall auftreten, wo es 
Datenbusse gibt. z.B. zwischen µC und RAM oder Flash oder ...

Es müsste ja dann gerade so sein, dass sich die ganze Welt drauf 
geeinigt hat, dass im Tristate-Fall immer ein interner Pullup oder 
Pulldown verwendet wird. Aber eben nur einer der beiden.
Würde z.B. dein RAM einen Pullup verwenden und der µC einen Pulldown, 
dann wüsstest du erst wieder nicht, welcher Pegel sich aufgrund des sich 
bildenden Spannungsteilers auf der Leitung einstellt.
Und ich habe noch nicht gehört, dass es eine weltweite Festlegung gäbe, 
dass Tristate-Ports immer mit einen bestimmten Pullwiderstand versehen 
sind.
Und externe Pullups an Datenleitungen sieht man zwar ab und an, aber das 
macht so gut wie niemand (mehr)

Ich denke, dass die Ports einfach so kunstruiert sind, dass da nix 
passieren kann. Aber auf jeden Fall eine Interessante Frage, wenn man 
mal länger drüber nachdenkt :-)

von Jürgen (Gast)


Lesenswert?

Ja, hast schon Recht. Das selbe hab ich mir auch schon gedacht.
Aber ein ungutes Gefühl bleibt...

von Schrotty (Gast)


Lesenswert?

>Aber ein ungutes Gefühl bleibt...
Ach, so schnell stirbt dein FPGA nicht ;-)
Nur Mut! ;-)

von bko (Gast)


Lesenswert?

Bei den Coolrunner, Spartan und Virtex Chips gibt es für die IOs noch
sog "Keeper" (Bus holder), diese Konstruktion verhindert
das floaten von Tri-State-IOs. Sieht im UCF file dann etwa so aus:

NET "xdata_io<0>" LOC = D3 | KEEPER;

Wird z.B. in diesem Xilinx Guide kurz mal erwähnt:
http://www.xilinx.com/itp/xilinx82j/help/iseguide/mergedProjects/destech/html/cd_configuring_i_o.htm

und die Xilinx Aplication-Note "xapp784" ist auch interessant
http://www.xilinx.com/support/documentation/application_notes/xapp784.pdf
ist zwar für CPLD, gilt auch für die FPGA, denke ich.

Noch ne App-Note zum Thema IOs:
http://www.xilinx.com/support/documentation/application_notes/xapp179.pdf

von berndl (Gast)


Lesenswert?

Hi,

das Problem kannst du denke ich fuer jedes asynchrone bidirektionale 
Bussystem abhaken. Was passiert denn da:
Asynchron getaktete Teilnehmer am Bus gehen auf High-Z. Die Folge ist, 
dass die Busleitungen irgendwie zwischen 0 und 1 rumhaengen oder mehr 
oder weniger schnell nach 0 oder 1 gezogen werden (pullup oder 
pulldown). Das wird in der Empfaengerlogik immer zu setup/hold 
Violations fuehren. So robust muss eine HW heute einfach sein. Und 
selbst wenn Metastabilitaet auftritt, dann muss die einfach schneller 
'weg' sein als z.B. das externe I/F mit seinen R/W Signalen bzgl. der 
Daten braucht.
Allerdings sollte man sich bei solchen Bussen eben auch immer im Klaren 
sein was man da tut. Dann laeuft es naemlich absolut zuverlaessig...

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.