Der Versuch, die Impedanz des FPGA-Eingangsstifts zu verstehen

Aus der Arbeit mit klassischen Mikrocontrollern bin ich daran gewöhnt, dass Pins im Eingangsmodus eine hohe Eingangsimpedanz zu haben scheinen – wenn sie an eine hohe Spannung angeschlossen werden, fließt nur ein kleiner Strom, und die Spannung wird abgetastet, um einen digitalen Zustand zu erhalten Lektüre.

Ich verwende ein ice40-HX8K-FPGA, und ich habe einen Pin auf Eingang gesetzt und mit einem Innenleben meines Kerns verbunden. Wenn ich die Spannungsversorgung kurz an den Pin anschließe, wird es zwar von meinem Kern als digitales HIGH registriert (es ist eine Interrupt-Leitung), aber es fließt ein so hoher Strom, dass die ganze Platine für den Bruchteil einer Sekunde braun wird .

Die externe Beschaltung sieht wie folgt aus:

Geben Sie hier die Bildbeschreibung ein

Der Pin ist in meinem Top-Level-Modul als Eingang deklariert:

module top(
    // ...
    input INT0
)

Und verbunden mit einem Pin des FPGA in meiner Pin-Constraint-Datei:

set_io INT0 P16

Habe ich hier etwas falsch verstanden? Sind die FPGA-Eingangspins niederohmig?

Bitte fügen Sie Schaltpläne hinzu, was Sie anschließen und wie und welche Spannungen beteiligt sind.
@Justme Ich habe den Schaltplan hinzugefügt.
Wie hoch ist die Versorgungsspannung für die IO-Bank, zu der P16 gehört?
@ThePhoton Ich nehme an, es sind 3,3 V, da alle Testpunkte auf der Platine 3,3 V anzeigen und das Anschließen von 1,2 V als logisches LOW registriert wird. Aber ich habe leider keine Ahnung, wie ich das in der PCF angeben soll.
Aus irgendeinem Grund verwendet eine der I/O-Bänke meines Boards tatsächlich 1,2 V als Versorgungsspannung, was natürlich zu Problemen führt, wenn ein 3,3-V-Signal zum Ansteuern der Pins verwendet wird. Das Umschalten auf eine 3,3-V-Bank löste das Problem. Ich frage mich jedoch, warum die 1,2-V-Versorgungsspannung damals nicht hoch genug war, um ein digitales Hoch auszulösen. (Das war der Grund, warum ich 3,3 V ausprobiert habe)
Durch Anschließen von 3,3 V an einen IO-Pin einer 1,2-V-Bank werden 3,3 V über die internen Schutzdioden effektiv auf 1,2 V kurzgeschlossen. Gar nicht gut für den Chip.

Antworten (1)

Basierend auf den Kommentaren scheinen Sie versucht zu haben, eine 1,2-V-IO-Bank von einem 3,3-V-Eingang anzusteuern.

In vielen Geräten sind CMOS-Eingänge mit Klemmdioden geschützt, um das Risiko einer Beschädigung durch ESD-Stöße zu verringern. Diese Dioden sind im Bild unten dargestellt - Verbindung vom Eingang zu VCC und von GND zum Eingang.

CMOS-ESD-Dioden

Für eine 1,2-V-IO-Bank beträgt die VCC 1,2 V. Wenn Sie den Eingang direkt an eine 3,3-V-Versorgung anschließen, werden Sie diese Schutzdiode in Vorwärtsrichtung vorspannen, was zu einem sehr großen Stromfluss führt und dabei höchstwahrscheinlich den Diodenschutz durchbrennt.

In Ihrem Fall reichte der Stromfluss aus, um die Versorgung zu bräunen.


Es gibt Möglichkeiten, einen gewissen Schutz für solche Vorkommnisse hinzuzufügen. Die beste Lösung besteht jedoch darin, immer sicherzustellen, dass Ihre Eingangsspannungen mit den IO-Bank-Spezifikationen für Ihre Schaltung übereinstimmen.

Eine besteht darin, einen Vorwiderstand zwischen dem IO-Pin und Ihrer Eingangsschaltung hinzuzufügen. Dies würde dazu beitragen, den Stromfluss durch die Diode zu begrenzen. Das Datenblatt des Geräts sollte einen maximalen Stromfluss durch die Schutzdioden angeben.

Die zweite besteht darin, Ihren Knopf so zu vertauschen, dass der Pull-up-Widerstand zur Versorgungsschiene geht (begrenzt den Strom auf einen niedrigen Pegel) und der Knopf auf Masse geht. Aber auch in diesem Fall sollten Sie das Datenblatt überprüfen, um sicherzustellen, dass die Dioden für die resultierende Überspannung an den Eingangspins ausgelegt sind.