Verhindern Sie Bit-Bang-Daten in der Leitung von der Rückseite des Geräts?

Ich baue eine Z80-Maschine aus Komponenten, um zunächst über ein FTDI- USB-Kabel über Bit-Banged I/O mit einem PC zu sprechen, und ich habe wenig Ahnung, wie ich am besten vermeiden kann, die Z80-Platine über eine 5-V-Datenleitung mit Strom zu versorgen . Z80-to-PC-Daten funktionieren gut, umgekehrt sonst. Ich bin ein Neuling in diesem Bereich, mit einem Programmierhintergrund.

Z80 Bit Bang IO-Schema

(Oben nicht gezeigt, ich musste auch einen hacky N4148 zwischen U1 und der Datenbusleitung hinzufügen.)

Das Problem tritt auf, wenn ich Bits auf der Z80-Maschine empfangen möchte, die vom PC gesendet werden:

Beim Herunterfahren des Z80-Geräts bleibt es von der 5-V-Datenleitung des PC halb mit Strom versorgt. Ich habe Stunden und viel Suchen damit verbracht, das zu verstehen. Der größte Teil des Internets scheint besorgt darüber zu sein, Raspi und Arduino sicher wieder mit Strom zu versorgen, aber es gab einige Funde:

Schuldiger: Dies scheint über mein U1-UND-Gatter zu geschehen: Das Datenblatt des SN74HC08N zeigt die absoluten Maximalwerte für den Eingangsstrom "Clamp" als (sollte nicht überschreiten) +/- 20 mA außerhalb des Spannungsbereichs 0 bis VCC, wobei VCC hier 0 ist ( ausschalten), was meiner Meinung nach bedeutet, dass es versehentlich von den Eingängen wieder mit Strom versorgt werden kann. Der Strom zum U1-AND-Eingang fließt also über die VCC-Leitung und versorgt die Platine mit Strom.

Korrekturen, die ich sehen kann / ausprobiert habe:

  • Setzen Sie einen zweiten N4148 oder besser auf den VCC des U1-UND-Gatters, um die Stromversorgung bei kleinen mA zu begrenzen. Versucht, versteckt/löst das Problem, aber ich kann mir nicht vorstellen, dass das richtig ist?

  • Verwenden Sie einen MOSFET/BJT, um zu versuchen, U1 nur von VCC anzusteuern und FTDI-Daten an Gate/Basis zu senden. Ich bin nicht geschickt genug, um zu wissen, ob dies korrekter ist als eine Diode.

  • Operationsverstärker plus MOSFET (wie in einer verwandten, aber unterschiedlichen Frage ) - Ich kann mitmachen, aber ist das wirklich der übliche Weg? Dies fühlt sich nicht wie ein Standardansatz für eine kleine 8-Bit-Maschine an, aber vielleicht irre ich mich total.

  • Opto-Isolation - das kommt bei Antworten, die ich sehen kann, häufig vor, aber mir ist nicht bekannt, ob dies die Standardpraxis für Ihr durchschnittliches Verbrauchergerät ist? War jeder gängige 8-Bit-RS-232-fähige Mikrocomputer wirklich optoisoliert? Schaltpläne, die ich gefunden habe, scheinen einfach den MAX232 oder ein gleichwertiges Gerät zu verwenden, aber ich kann nicht herausfinden, wie das hilft.

Wie vermeidet man das Ihrer Erfahrung nach beim Entwurf solcher Schaltungen?

Der Strom wird nicht geklemmt; dieser Wert ist für den Strom, der durch die Spannungsbegrenzungsdioden fließt. Und die absoluten Höchstwerte geben die Werte an, ab denen das Gerät explodieren könnte.
@CL Guter Punkt, das hatte ich nicht richtig verstanden. Ich werde die Frage aktualisieren.

Antworten (2)

Fügen Sie nur der Eingangssignalleitung einen Vorwiderstand von z. B. 10 K hinzu, der den Strom begrenzt, ohne das Signal zu sehr zu verlangsamen.

Nicht verwandt, aber Sie möchten möglicherweise einen 100K-Pullup hinzufügen, um einen bekannten Logikpegel herzustellen, wenn das FTDI-Kabel abgezogen wird.

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Es gibt bestimmte Logikchips, die nicht über die gleiche Art von internem Schutznetzwerk verfügen und auch im stromlosen Zustand direkt an eine Eingangsspannung angeschlossen werden können, aber dies ist hier nicht erforderlich.

Ein anderer Ansatz besteht darin, einfach einen BJT mit einem 10K-Basiswiderstand einzufügen, der das Signal invertiert. Wenn Sie einen 1N4148 von der Basis zum Emitter legen, kann er großen Transienten oder ESD am Eingang standhalten, ohne etwas zu braten.

schematisch

Simulieren Sie diese Schaltung

Danke, das ist eine großartige Erklärung, und danke auch für den Hinweis zum Pullup. Ich habe die Serie 10k hinzugefügt und das scheint das Problem tatsächlich zu lösen - ich bekomme immer noch etwas Strom zurück, aber in der Größenordnung von 1 V, also nicht genug, um LEDs zu beleuchten oder ICs zu betreiben. Wäre es eine gute Praxis (oder sinnlos), dem VCC des UND-Gatters auch einen 1N4148 hinzuzufügen?
Dies ändert nichts an der Rückspeisung, vermeidet jedoch die Verwendung des internen Schutznetzwerks. Ein BAT54 wäre noch effektiver, weil es ein Schottky ist und einen geringeren Abfall hat. Mit einem einzigen BAT54S können Sie beide Schienen festklemmen. Ist es eine gute Praxis? Wahrscheinlich, da Sie sonst gegen die Datenblattregel zur maximalen Eingangsspannung verstoßen, aber dies scheint nicht erforderlich zu sein, solange der Strom auf etwas Vernünftiges wie 0,5 mA begrenzt ist. Ohne den Widerstand usw. kann das Anlegen einer Spannung an den Eingang und das anschließende Anlegen von Strom dazu führen, dass der Chip aufgrund von Latchup ausfällt.
Ich werde mich darum kümmern, danke - sieht so aus, als könnte ich dort wirklich interessante Lektüre machen. Nehme diese Antwort dankbar an. Nebenfrage, wenn Sie zufällig Zeit haben: Im zweiten Ansatz folge ich, dass der BJT bei diesen Widerständen als Schalter fungiert, um VCC herunterzuziehen, wodurch das Signal gegenüber dem Eingang invertiert wird. Ich nehme an, der Pulldown dient dazu, ein schwebendes Signal zu vermeiden, wenn die Eingangsleitung (PC) ausgeschaltet wird. Wie funktioniert die Verwendung des N4148 hier - ermutigt das irgendwie ESD, sich lokal um das Segment der Erdungsschiene zwischen dem Emitter von R2 und Q1 zu "schleifen" oder das Eindringen in den BJT zu vermeiden?
Ja, das 100K soll verhindern, dass es Rauschen aufnimmt, wenn das Kabel offen bleibt. Der 1N4148 ist für die Funktionalität nicht erforderlich, schützt jedoch den Transistor, wenn < -5 V (möglicherweise durch ESD oder einen echten RS232-Port) an den Eingang angelegt werden. Sie können es höchstwahrscheinlich weglassen, aber es macht die Eingabe wirklich kugelsicher gegen den meisten Missbrauch.

Senden Sie ein BREAK- Signal auf der asynchronen Schnittstelle vom PC, um den Z80 zurückzusetzen, dies setzt die TX-Daten auf Leerlauf, was 0 V auf einer TTL-Pegel-Schnittstelle sein wird.

Einige PC-Kommunikationssoftware, einige USARTS und einige USB-zu-ASYNCH-Konverter sind nicht in der Lage, den BREAK-Zustand dauerhaft aufrechtzuerhalten, können jedoch normalerweise einen langen (viele Zeichenlängen) Impuls verursachen, und dies sollte ausreichen, damit Ihre Schaltung zurückgesetzt wird.