Forum: FPGA, VHDL & Co. Maximaler Strom an FPGA-Pin


von Daniel R. (dan066)


Lesenswert?

Im User-Manual des Spartan 3E FPGA steht, dass ein Ausgangspin maximal 
16 mA liefern kann. Würde man mehr Strom aus dem FPGA ziehen, würde 
dieser beschädigt werden.
Ich kann mir dabei nicht genau vorstellen, ob diese Beschränkung auch 
bei Verwendung eines Pullups und dem "senden" einer 0 gilt.
Ich kommuniziere über I²C mit einem Master. Dazu gibt es eine 
SDA-Leitung, die über einen 10kOhm Widerstand auf 3,3V hochgezogen wird. 
Gesendet wird eine Null dann indem einer der Teilnehmer die 
Pullup-Spannung über einen open-collector-Ausgang runterzieht; zum 
Senden einer Eins wird der open-collector-Ausgang auf nicht-leitend 
gestellt.
Wie groß darf der Strom sein, der vom Leitungs-Pullup in den 
open-collector-Ausgang eines Teilnehmers hinein und durch ihn abfließt?
Also bei dem 10kOhm Pullup würde ein Strom von 330 µA durch den 
open-collector-Ausgang abfließen. Wenn ich statt 10kOhm aber einen 
kleineren Widerstand nehmen würde, wären es entsprechend mehr Ampere. Wo 
ist da die Grenze?

von Fpgakuechle K. (Gast)


Lesenswert?

Daniel R. schrieb:
> Im User-Manual des Spartan 3E FPGA steht, dass ein Ausgangspin maximal
> 16 mA liefern kann.  Wenn ich statt 10kOhm aber einen
> kleineren Widerstand nehmen würde, wären es entsprechend mehr Ampere. Wo
> ist da die Grenze?

http://www.xilinx.com/support/documentation/data_sheets/ds312.pdf S.115

absolute maximum ratings - Input clamp current per I/O pin: +/- 100 mA

S.118 I_RPU I_RDP


Nach Bauchgefühl sollte man auch nicht mehr Strom in ein Pin 
reinschicken als man rausziehen darf.

Und ganz sicher keine Amper hochskillen - davon wird aus dem skill ein 
kill ;-)

MfG,

Hier lässt sich Peter Alfke persönlcih über die sink capabilities aus:
http://www.fpgarelated.com/comp.arch.fpga/thread/62920/lvcmoss33-i-o-sink-current.php

von Georg A. (georga)


Lesenswert?

> Ich kann mir dabei nicht genau vorstellen, ob diese Beschränkung auch
> bei Verwendung eines Pullups und dem "senden" einer 0 gilt.

Es gibt eigentlich zwei unterschiedliche Ströme: Einmal den durch den 
Pintreiber fliessenden im Normalbetrieb und einmal den durch die 
Schutzdioden, wenn die externe Spannung <0V oder >Vio ist. Der 3E ist 
(noch) 3.3V-kompatibel, dein Pullup hängt da auch dran, also trifft nur 
der Strom durch den Treiber. Für den statischen Strom wirst du wohl kaum 
ein so niedrigen Pullup nehmen, dass die Werte im Datenblatt verletzt 
werden (zB. 16mA). Wobei die auch nur gelten, wenn der Logikpegel 
sinnvoll sein soll, also zuverlässig als 0/1 erkannt werden muss. Der 
dynamische Strompeak beim Auf/Entladen der dranhängenden Leitung ist bei 
deiner I2C-Anwendung wohl eher vernachlässigbar ;)

Kurz: Gut, dass du drüber nachdenkst, bei I2C aber alles völlig 
harmlos...

von Daniel R. (dan066)


Lesenswert?

Danke für die Antworten.
Zu IRPU:
Das ist der Strom der durch meinen 10kOhm Widerstand in den FPGA 
reinfließt, wenn der seinen open-collector-Transistor durchschalten 
lässt?
Der Tabelle nach dürfen also maximal -1.24 mA über den FPGA abfließen 
und das Minus bedeutet, dass der Strom in den FPGA hineinfließt?
Was bedeutet dann der minimale Wert von -0.36?

von Achim S. (Gast)


Lesenswert?

Daniel R. schrieb:
> Zu IRPU:
> Das ist der Strom der durch meinen 10kOhm Widerstand in den FPGA
> reinfließt, wenn der seinen open-collector-Transistor durchschalten
> lässt?
> Der Tabelle nach dürfen also maximal -1.24 mA über den FPGA abfließen
> und das Minus bedeutet, dass der Strom in den FPGA hineinfließt?
> Was bedeutet dann der minimale Wert von -0.36?

Meinst du Tabelle 78 von
http://www.xilinx.com/support/documentation/data_sheets/ds312.pdf

Nein, das hat nichts mit dem Strom bei durchgeschaltetem Low-Side 
Treiber zu tun. IRPU ist der Strom durch den FPGA-internen Pullup, der 
unter den in der Tabelle angegebenen Bedingungen fließt (VCCO auf 3,3V, 
Spannung am Pin extern auf 0V gezogen, und der Ausgangstreiber ist dabei 
natürlich disabled). Das entspricht ungefähr einem FPGA-internen Pullup 
Widerstand im Bereich 2,4kOhm bis 10,8kOhm (nächster Eintrag in Tabelle 
78). Genauer ist der interne Pullup halt nicht festgelegt.

Zur Kennlinie des Lowside-Treibers: dem ist es egal, ob du ein 
Open-Collector-Verhalten erzeugst (indem du "Z" statt "1" zuweist) oder 
ob du eine Push-Pull Ausgangsstufe verwendest: der Lowside-Treiber ist 
in beiden Fällen der gleiche. Seine Stärke hängt aber von VCCO und vom 
eingestellten IO-Standard ab (und evtl. sogar noch von der IO-Bank).

Ein Beispiel aus Tabelle 81: für LVCMOS33 und maximale Treiberstärke 
garantiert der Lowside-Treiber einen Strom vom 16mA bei 0,4V 
Spannungsabfall. Wenn überhaupt keine Spannung am Transistor abfällt 
(Vout=0V), dann fließt auch kein Strom durch den Transistor. Damit hast 
du schon mal 2 Punkte auf der Ausgangskennlinie des Lowside Treibers ;-)

Für manche Xilinx-Produkte findest du tatsächlich Transistorkennlinien 
für die Ausgangstreiber, beim Spartan 3 habe ich auf die Schnelle keine 
gesehen. Das wäre auch ein ziemlicher Wust in Anbetracht der 
Bauteilvarianten und der Einstellmöglichkeiten. Wenn es dir wichtig 
genug ist kannst du evtl. die IBIS-Modelle runterladen und die 
Kennlinien selbst erzeugen.

von Daniel R. (dan066)


Lesenswert?

Achim S. schrieb:
> IRPU ist der Strom durch den FPGA-internen Pullup
Ok und was ist mit den "min" und "max" Werten gemeint?

> der Lowside-Treiber ist
> in beiden Fällen der gleiche. Seine Stärke hängt aber von VCCO und vom
> eingestellten IO-Standard ab (und evtl. sogar noch von der IO-Bank).
Die IO-Standards (LVTTL/LVCMOS...) in Tabelle 81 bezeichnen also 
verschiedene Transistoren, die der Lowside-Treiber benutze? Das heißt, 
ich sage dem FPGA welche Hardware er im IO-Block benutzen soll und das 
ist entweder TTL oder CMOS-Logik?

> Ein Beispiel aus Tabelle 81: für LVCMOS33 und maximale Treiberstärke
> garantiert der Lowside-Treiber einen Strom vom 16mA bei 0,4V
> Spannungsabfall.
Wenn am Pin eine Spannung <= VOL Max (0.4V) liegt fließt ein Strom von 
16mA in den Pin hinein. Ist das richtig?
Und wenn am Pin eine Spannung >= VOH Min (~3.3V-0.4V) liegt fließt ein 
Strom von -16mA aus dem Pin heraus?
Also sind die 16mA in beiden Richtungen der maximale Strom, den der FPGA 
verkraftet. Und inwiefern ist der FPGA gegen negative Spannungen am Pin 
abgesichert?

von Achim S. (Gast)


Lesenswert?

Daniel R. schrieb:
> Ok und was ist mit den "min" und "max" Werten gemeint?

dass der Strom durch den FPGA-internen Pull irgendwo zwischen diesen 
beiden Werten liegen wird (d.h. der Wert des Pullups liegt irgendwo 
zwischen 2,4kOhm und 10,8kOhm).

Daniel R. schrieb:
> Die IO-Standards (LVTTL/LVCMOS...) in Tabelle 81 bezeichnen also
> verschiedene Transistoren, die der Lowside-Treiber benutze? Das heißt,
> ich sage dem FPGA welche Hardware er im IO-Block benutzen soll und das
> ist entweder TTL oder CMOS-Logik?

schätzungweise sind das segmentierte Transistoren, und je nach 
Konfiguration des FPGA werden mehr oder weniger davon angesteuert.

Daniel R. schrieb:
> Also sind die 16mA in beiden Richtungen der maximale Strom, den der FPGA
> verkraftet.

die 16mA sind der Strom den dir das FPGA bei dieser Konfiguration 
garantiert - es liefert bei 0,4V Spannungsabfall am Transistor 
mindestens 16mA (unter günstigen Bedingungen auch etwas mehr).

Daniel R. schrieb:
> Und inwiefern ist der FPGA gegen negative Spannungen am Pin
> abgesichert?

Das ist ne neue Frage, zu der es bestimmt ein entsprechendes Kapitel im 
Userguide und/oder im Datasheet gibt. Bitte selbst nachschlagen, ich 
fahre jetzt nach Hause ;-)

von Fpgakuechle K. (Gast)


Lesenswert?

Daniel R. schrieb:
> Und inwiefern ist der FPGA gegen negative Spannungen am Pin
> abgesichert?

Sind das nicht die oben erwähnten clamp diodes mit den auf S. 115 
genannten Maximalstrom?
Siehe auch http://www.ti.com/lit/an/szza036b/szza036b.pdf S. 9

MfG,

von J. S. (engineer) Benutzerseite


Lesenswert?

ClampDiodenstrom ist aber nochmal was anderes. Die vertragen durchaus 
einiges und je anch Schaltzustand kommt der Ausgang ja noch hinzu und 
hilft "Ziehen".

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.