FPGA-Überspannungsschutz für Eingangstriggersignal

Ich habe nicht viel Erfahrung mit PCB-Design, aber ich entwerfe gerade eine, um mehrere Komponenten für ein Arbeitsprojekt miteinander zu verbinden. Eine dieser Komponenten verbindet ein externes Triggersignal mit einem Eingangspin auf einer Neso Artix 7 FPGA-Karte. Das Gerät, das den Trigger erzeugt, kann variieren (z. B. ein analoger Wellenformgenerator) und die Spannung des Triggersignals kann daher ebenfalls variieren (obwohl sie wahrscheinlich unter einem Maximum von etwa 15 V liegen wird). Das Triggersignal enthält Impulse oder eine Rechteckwelle mit einer Rate von mehreren kHz.

Der FGPA arbeitet mit einem Logikpegel von 3,3 V, daher halte ich es für eine gute Idee, die Spannung über dem FGPA-Pin zu begrenzen, falls ein Triggersignal mit höherer Spannung angeschlossen ist. Ich habe über mehrere Ansätze gelesen, wie z. B. eine Operationsverstärker-Spannungsklemme oder einen Zenerdioden-Shunt-Regler. Da der Trigger wahrscheinlich sehr hohe Anstiegsraten haben wird, befürchte ich, dass die Operationsverstärkerklemme die Klemmspannung möglicherweise nicht schnell genug erreicht und so möglicherweise immer noch das FPGA beschädigt.

Für den Zener-Dioden-Ansatz habe ich mir das folgende Schema ausgedacht. Ich habe jedoch gelesen, dass die Verwendung von Zenerdioden einige Nachteile hat, hauptsächlich in Bezug auf die Verlustleistung.

Meine Frage
Was wäre in diesem Szenario die beste Methode, um das FPGA vor Spannungen über 3,3 V zu schützen? Für den Fall, dass dies der Zener-Dioden-Shunt-Regler wäre, muss ich zusätzliche Maßnahmen hinsichtlich der Verlustleistung ergreifen, oder würde der Widerstand in der Schaltung unten ausreichen?

Für das Ausgangssignal sind minimale Zeitverzögerung und Anstiegsgeschwindigkeit entscheidend, da das Gerät auf eine Flanke triggert.

Vielen Dank im Voraus!

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Was sind die Frequenzen/Bandbreiten, bei denen Sie Signale benötigen, um sie an Ihr FPGA weiterzuleiten? Je schneller die Signale sind, desto schwieriger sind sie vor Überspannungen zu schützen.
@MarcusMüller die Bandbreite des Triggersignals wird wohl um die 15 MHz liegen. Ich habe das noch nicht berücksichtigt, aber wie bobflux darauf hingewiesen hat, ist die Zenerdiode in diesem Fall wahrscheinlich nicht die beste Lösung.
Triggert es auf einer steigenden Flanke oder einer fallenden Flanke? Wenn Sie mit einem Design leben können, das schnell auf steigende Flanken, aber langsam auf fallende Flanken reagiert, ist ein Transistorschalter mit Pull-up möglicherweise eine gute Lösung.
@PeterGreen Im Moment soll meine Implementierung tatsächlich bei einer steigenden Flanke auslösen. Es ist aber alles noch sehr experimentell, das wird sich in Zukunft sicherlich ändern. Ich denke, die vielseitigste Lösung könnte in diesem Fall die beste sein. Danke!
Wäre ein Hochgeschwindigkeits-Optokoppler eine geeignete Alternative? Wenn eine Auslöseverzögerung von einigen ns akzeptabel ist, gibt es einige Optionen.
@Crazymoomin genau. Ich meine, dafür sind sie da, oder?
@Crazymoomin Nachdem ich mehrere Datenblätter gelesen habe, scheint ein Hochgeschwindigkeits-Optokoppler meinen Anforderungen recht gut gerecht zu werden und eine ausreichend große Bandbreite zu übertragen. Gibt es offensichtliche Nachteile, die ich im Vergleich zu den folgenden Lösungen übersehe? Wie reagieren sie beispielsweise auf verrauschte Eingangssignale? Es sieht so aus, als könnte einer mit einem internen Logikdetektor-IC (wie er in Jays Antwort unten verwendet wird) dabei helfen.
@hexahedronest Der Hauptnachteil, den ich mir vorstellen kann, ist der Platzbedarf. Wenn Ihre Leiterplatte kompakt sein muss, ist eine einfache Zenerschaltung möglicherweise kleiner. Es könnte einige Probleme geben, aber Sie müssten mit jemandem sprechen, der mehr darüber weiß.

Antworten (2)

Kommt drauf an wie schnell du es willst...

Geben Sie hier die Bildbeschreibung ein

Zenerdioden haben eine ziemlich hohe Kapazität, daher benötigen Sie einen Vorwiderstand mit niedrigem Wert, was bedeutet, dass er viel Strom aus der Signalquelle zieht. Mit Ihrem 100R-Wert müsste eine 15-V-Quelle (15-3,3) / 100 = 117 mA Strom liefern, und der Widerstand würde 1,3 W brennen. Beides ist unbequem.

Wenn das Signal langsam ist, können Sie einen höheren Widerstand verwenden, z. B. 3k3, wodurch die Verlustleistung vernachlässigbar wird, aber in Kombination mit der Kapazität der Zenerdiode Ihr Signal bei einigen hundert kHz tiefpasst und auch eine gewisse Phasenverschiebung einführt.

Damit Sie ein Paar Dioden mit niedriger Kapazität verwenden können, gibt es eine große Auswahl an Doppeldioden in SOT-23. Sie können eine Schottky-Diode für eine niedrigere Schwellenspannung verwenden:

Geben Sie hier die Bildbeschreibung ein

Der erste Widerstand begrenzt den Strom von der Quelle, Dioden begrenzen die Spannung zwischen -0,6 V und 0,6 V über VCC (oder 0,3-0,4 V, wenn Sie Schottky-Dioden verwenden). Da es immer noch unter GND und über VCC geht, begrenzt der zweite Widerstand den Strom in die FPGA-Schutzdioden, falls sie vor der Doppeldiode leiten.

Es erfordert jedoch, dass VCC in der Lage ist, etwas Strom zu versenken, was nicht passiert, wenn die Lasten ziemlich niedrig sind, zum Beispiel ein Mikrocontroller im Schlafmodus. Wenn die Last auf 3V3 ein FPGA ist, zieht es genug Strom, um den Eingangsstrom zu senken, also ist das in Ordnung.

Ich habe das auch verwendet:

Geben Sie hier die Bildbeschreibung ein

Der Transistor und die Dioden bilden einen Shunt-Regler bei etwa 2,1 V, die obere Diode und der Transistor fügen zweimal 0,6 V hinzu, wodurch die Eingangsspannung bei 3 V3 begrenzt wird. Es folgt der Stromversorgung, sodass es sich auch dann korrekt verhält, wenn das Gerät nicht mit Strom versorgt wird.

Sie können stattdessen auch eine unidirektionale TVS-Diode verwenden. Es funktioniert wie eine Zenerdiode, mit viel geringerer Kapazität auf Kosten einer viel geringeren Genauigkeit. "Unidirektional" bedeutet, dass es wie eine normale Diode in Rückwärtsrichtung funktioniert, was Sie wollen, da Sie nicht an negativen Spannungen interessiert sind.

Angenommen, Sie erhalten eine TVS-Diode, die für mindestens 3 V3 spezifiziert ist. Sie senkt bei 3 V3 fast keinen Strom, klemmt jedoch die Spannung so, dass sie irgendwo bei 4,5 bis 5 V liegt. Sie benötigen also immer noch einen Schutzwiderstand für den FPGA-Pin, aber er leitet viel weniger Strom, als wenn der Eingang 15 V und nicht auf 5 V begrenzt wäre.

Danke für deine sehr ausführliche Antwort! Ich wusste nicht, dass die Kapazität der Zenerdiode so hoch ist. In Kombination mit dem höheren Vorwiderstand hätte es die schnellen Flanken im Triggersignal (das eine Bandbreite von ~15 MHz haben wird) definitiv herausgefiltert. Da das FPGA im Wesentlichen immer mit Strom versorgt werden sollte, wenn eine Triggerquelle angeschlossen ist, werde ich versuchen, die Dual-Dioden-Lösung zu implementieren, aber ich werde auf jeden Fall Ihren ausführlicheren Vorschlag für zusätzlichen Schutz prüfen. Danke!
Doppeldiode ist normalerweise in Ordnung. Sie können eine Entkopplungskappe zwischen VCC und GND sehr nahe an der Senke von ESD-Spitzen auf Masse und eine Kappe von einigen pF über dem Eingangswiderstand platzieren, um die Diodenkapazität zu kompensieren.

Alle verantwortlichen Credits dieser Antwort müssen an @bobflux gehen. Die Antwort von bobflux zeigt alle zu berücksichtigenden Aspekte auf. Ich würde nur eine Variation von Bobblux hinzufügen.

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

+1 für die Kappe, um es schneller zu machen
Danke für Ihren Vorschlag! Welchen Vorteil hätte es, hier zusätzlich zur dualen Diodenklemme einen Schmitt-Trigger zu verwenden, bevor das Signal in das FPGA eingespeist wird?
@hexahedronest, Zwei Bedingungen zum Vorteil des Schmitt-Triggers; 1) Möglicherweise sind Sie besorgt über die FPGA-Eingangs-, Spannungs- und Impedanzspezifikation für das Signal, das am Pin (zweite Schaltung von bobflux) erscheint. 2) Außerdem können hinzugefügte Eingangskonditionierungskomponenten (R, C und parasitär) das Signal verzerren.
@hexahedronest Sie können einen Shunt (R und oder C) entlang des D2 in Betracht ziehen, obwohl alles von Ihrem detaillierten Design und der Art des Eingangssignals abhängt.
Ich lege oft einen "Opfer"-Puffer für alle externen Signale ein, die in ein FPGA gehen, die wild außerhalb des Bereichs liegen können. Wenn etwas schrecklich schief geht, leidet eher das billige/leicht zu ersetzende Gerät als das große/schwierig zu ersetzende FPGA. Vergessen Sie auch nicht, dass kleine SMT-Widerstände nur für etwa 50 V ausgelegt sind. Möglicherweise müssen Sie mehr als einen in Reihe schalten.
Das FPGA, das ich verwenden möchte, ermöglicht die interne Konfiguration eines Eingangspins mit einem Schmitt-Trigger, daher gehe ich davon aus, dass dies ausreichen könnte, um das zusätzliche Rauschen zu bewältigen. Ich mag die Idee, den Stift weiter mit einem "Opfer" -Puffer zu schützen. Wird zur Kenntnis genommen, vielen Dank an alle