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?
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
> 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...
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?
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.
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?
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 ;-)
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,
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.