Problem mit NANDs und dem Zufall

Hallo,
ich habe ein Problem mit einfachen NAND-Gattern:
http://kai.vbfreaks.eu/flipflop2.jpg
Sobald der Button auf 0 gesetzt ist, wechselt das Flipflop zwischen seinen beiden Zuständen hin und her, bis der Button auf 1 gesetzt wird.
Eine LED sollte dann aufleuchten, zufällig welche von den beiden.

Sowohl im Simulator als auch in der Realität wählt der „Zufall“ immer die zweite LED aus! Warum trifft es nie die 1.?

http://kai.vbfreaks.eu/flipflop.jpg
Ich habe nochmal eine ähnliche Schaltung ausprobiert. Auch hier trifft es immer die 2. LED, sowohl im Simulator als auch auf der Platine ;-(

Ich habe schon kräftig gegooglet, andere 7400s benutzt usw., aber es trifft trotzdem immer die eine LED!

Kann mich bitte jemand über dieses Problem aufklären und/oder mir eine andere Schaltung vorschlagen?

Vielen Dank im Vorraus!
Kai

Hallo,

Hallo Kai

ich habe ein Problem mit einfachen NAND-Gattern:
http://kai.vbfreaks.eu/flipflop2.jpg
Sobald der Button auf 0 gesetzt ist, wechselt das Flipflop zwischen seinen beiden Zuständen hin und her, bis der Button auf 1 gesetzt wird.
Eine LED sollte dann aufleuchten, zufällig welche von den beiden.

Sowohl im Simulator als auch in der Realität wählt der „Zufall“ immer die zweite LED aus! Warum trifft es nie die 1.?

Das ist Doch ganz einfach.
Der Zufall schaut sich die Schaltung an, sieht, dass er da gar nicht beteiligt ist, schüttelt den Kopf und geht wieder.

Grund:
Wenn die zusammengeschalteten Eingänge der beiden NAND-Gatter an „0“ liegen, kann für keines der beiden Gatter die UND-Bedingung erfüllt sein, beide Ausgänge gehen konstant auf „1“ und beide LED leuchten – blinken is nix.

Jetzt im wirklichen Leben:
Du änderst an beiden Gattern die Schalteingänge gleichzeitig auf „1“. Ein Ausgang muss auf 0 gehen, und welcher, das ist nur abhängig von Asymmetrien der Schaltung wie z.B. ungleicher Eingangskapazitäten.

Und da die Ausgangsbedingungen bei den verschiedenen Versuchen exakt gleich sind, trifft es auch immer wieder exakt den gleichen Ausgang, und das ist zufällig (da isser doch wieder durch die Hintertür reingekommen) der Ausgang 2.

Und jetzt die Simulation:
Du willst eine parallele Logikschaltung auf einem mit Sicherheit seriell (durch Abarbeiten eines Programms) arbeitenden System simulieren. Dabei passiert folgendes.

Ausgangslage ist:
Button auf „0“
setzt die Ausgänge beider Gatter auf „1“ (wie in der Realität)

Jetzt wechselt der Button nach „1“
Das Gatter 1 wird als erstes bearbeitet – Dabei geht der geschaltete Eingang auf „1“ – der Ausgang von Gatter 2 ist noch vom vorigen Zyklus auf „1“ gesetzt, also wird der Ausgang von Gatter 1 = „0“.

Jetzt wird das Gatter 2 bearbeitet – der geschaltete Eingang ist jetzt „1“ – der Ausgang von Gatter „1“ ist jetzt „0“, also bleibt der Ausgang von Gatter 2 = „1“.

Und dieser Zustand ist stabil, bis der Button wieder nach „0“ geht.

Ich gehe mal davon aus, dass in der zweiten Schaltung der gleiche Denkfehler steckt, deshalb spare ich mir die Überprüfung.

Vielen Dank im Voraus!
Kai

Bitte
merimies

Hallo,

Hallo Kai

Hallo beide,

Wo der Merimies recht hat, hat er recht, und das ist bei der Praxis der Fall.

Bei der Simulation widerspreche ich: Der Kai hat bestimmt kein eigenes Programm geschrieben. Könnte er das, würde er selber merken, was passiert.

Und weil es mich selber interessiert, was passiert, wenn man einen (echten) Simulator vor eine solche Aufgabe stellt, hab’ ich’s halt mal gemacht:

http://www.Beis.de/bilder/RS-FF.PNG

Fazit: Der Simulator nimmt beide Gatter als exakt identisch an. Nach dem Sprung auf high liegt an allen 4 Eingängen für einen Moment high. Also gehen beide Ausgänge gleich danach exakt gleichzeitig low, gleich danach exakt gleichzeitig wieder high etc., also Oszillation. Eigentlich logisch (ist ja auch eine Logik-Schaltung), das hätte ich nicht auszuprobieren brauchen.

In der Praxis dürfte diese Oszillation auch für einen Moment zu beobachten sein, aber je nach Umsymmetrie früher oder später in eine (und immer in die selbe) Endlage kippen.

Die Oszillation hat, nebenbei gesagt, nichts mit "Blinken zu tun!

Grüße

Uwe

Hallo Uwe


Und weil es mich selber interessiert, was passiert, wenn man einen (echten) Simulator vor eine solche Aufgabe stellt, hab’ ich’s halt mal gemacht:

http://www.Beis.de/bilder/RS-FF.PNG

Fazit: Der Simulator nimmt beide Gatter als exakt identisch an. Nach dem Sprung auf high liegt an allen 4 Eingängen für einen Moment high. Also gehen beide Ausgänge gleich danach exakt gleichzeitig low, gleich danach exakt gleichzeitig wieder high etc., also Oszillation. Eigentlich logisch (ist ja auch eine Logik-Schaltung), das hätte ich nicht auszuprobieren brauchen.

Das ist interessant.

Ich selber habe mit Simulationsprogrammen für Elektronikschaltungen keine Erfahrung. Beruflich habe ich sie nie gebraucht, und als private Anschaffung waren sie mir immer zu teuer.

Offensichtlich benutzt Kai aber einen prinzipiell anderen Simulator als Du. Das schließe ich aus dem folgenden Satz aus Kai´s Anfrage: Sowohl im Simulator als auch in der Realität wählt der „Zufall“ immer die zweite LED aus! Warum trifft es nie die 1.?

Ich habe von dieser Aussage auf das Verhalten von Kai´s Simulationsprogramm zurückgeschlossen.

Ich erlaube mir also noch einen Rückschluss: Offensichtlich benutzt Du ein qualitativ hochwertigeres Simulationsprogramm, welches das tatsächliche Verhalten elektronischer Schaltungen besser nachbildet als das Programm von Kai.

In der Praxis dürfte diese Oszillation auch für einen Moment zu beobachten sein, aber je nach Umsymmetrie früher oder später in eine (und immer in dieselbe) Endlage kippen.

Da wage ich, Dir zu widersprechen. Wenn die Schaltung – auf Grund von Asymmetrien an den Eingängen – einmal eine logisch stabile Endlage erreicht hat, sehe ich keinen Grund für eine Oszillation.

Eine solche Asymmetrie könnte ja darin bestehen, dass die Eingänge geringfügig unterschiedliche Schaltungskapazitäten gegenüber einer Versorgungsspannung haben. Wenn Du dann noch den Leitungswiderstand bzw. die Leitungsinduktivität der Verbindung Button/Gatter in die Simulation einfügst, müsste sich – bei Deinem Simulator – die simulierte Schaltung analog der realen Schaltung verhalten.

Solltest Du einen solchen Test machen, so würde mich das Ergebnis interessieren.

Grüße
Uwe

Gruß merimies

Danke erstmal für Eure zahlreichen Antworten!

Ich benutze das Programm „LogicSim“ (kostenlos downloadbar auf Java-Basis).
Ich glaube Ihr habt folgenden Teil falsch verstanden oder ich habe es idiotisch beschreiben:

Sowohl im Simulator als auch in der Realität wählt der „Zufall“ :immer die zweite LED aus! Warum trifft es nie die 1.?

Ich meine damit nur, dass immer die gleiche LED aufleuchtet, aber nie die andere, obwohl mein Ziel ja war, dass die Chancen 50/50 stehen, welche von denen aufleuchtet.
Ich habe die Schaltung simuliert, aber schon da leuchtete immer nur die 2.LED auf. Ich glaubte an einen Fehler des Simulationsprogrammes :wink: und probierte es in der Realität aus und genau das, was der Simulator vorrausgesagt hatte, passierte dann auch.
Weil ich mir das Phänomen, dass immer die 2.LED aufleuchtete, aber doch eigentlich eine von den beiden zufällig aufleuchten sollte, nicht erklären konnte und (m)einen :wink: Denkfehler nicht finden konnte, und ich bei Google nicht gefunden habe, habe ich hier ins Forum gepostet.
Ich kann meinen Fehler nun nachvollziehen. Danke!
Kennt Ihr aber eine Schaltung, mit der so ein 50/50-Effekt erzeugt werden kann?

Hallo Kai

Ich kann meinen Fehler nun nachvollziehen. Danke!
Kennt Ihr aber eine Schaltung, mit der so ein 50/50-Effekt erzeugt werden kann?

Der Schaltungen gibt es viele, man müsste dazu nur wissen, welche Logikfamilie Du bevorzugst. Ich arbeite fast ausschließlich mit CMOS-Bausteinen.

Du brauchst einen Multivibrator, der schwingt, solange ein Taster betätigt ist, und einen Teiler durch 2, damit das Tastverhältnis des Ausgangssignals 1:1 ist (schon wegen der Chance 50/50). Dieser Teiler bildet gleichzeitig die Ausgangsstufe.

In CMOS wären das:
Für den Multivibrator

2 NAND-Gates
2 Widerstände
1 Kondensator

Für den Teiler

1 J-K-Flip-flop

Für die Anzeigen

2 Transistoren
2 Widerstände
2 LED

Gruß merimies

Hallo Merimies,

Solltest Du einen solchen Test machen, so würde mich das
Ergebnis interessieren.

… Immer ich :smile:

Aber neugierig bin ich ja doch, und der Versuch war durchaus überraschend:

Zunächst habe ich mangels CD4011 (NAND) ein CD4001 (NOR) genommen. CD4xxx, damit es schön langsam für den Oszi und meine max. 5 MHz Generatorfrequenz ist. Aufbau auf dem Steckbrett (Hirschmann XP101).

  1. Überraschung: Egal, an welchen Ausgang den Tastkopf hielt - der Ausgang war konstant low! Nein, da war kein Schaltungsfehler! Zum Glück hatte ein kluger Kopf hier im Forum was von kapazitiven Lasten gefaselt, die den Endzustand bestimmen, und der hatte recht: Mit je einem Tastkopf an jedem Ausgang sah das schon wie erwartet, sogar mit Schwingungen: Ungefähr 3 Schwingungen mit gut 10 MHz bis zum stabilen Endzustand.

Danach habe ich eine CD4011 gefunden und den Versuch wiederholt: Die verwendeten Gatter in diesem IC waren offensichtlich noch ähnlicher, so dass sich schon 5 Schwingungen ergaben:

http://www.Beis.de/bilder/RS-FF.jpg

Diese Art Schwingungen können sich m. E. nur dann ergeben, wenn innerhalb des Logikelementes eine Laufzeitleitung durch hintereinander geschaltete Inverter existiert. Das ist meines Wissens nach bei allen CMOS-Gattern der Fall (aber nicht bei allen Invertern, z. B. nicht bei den „UB“ = „unbuffered“ Versionen, oder bei der CD4007).

Also wollte ich die Schwingungspakete dadurch verlängern, dass ich jedem Ausgang noch zwei Inverter nachschalte. 2. Überraschung: Die Schwingungen waren stabil. Ich bin überzeugt, dass aufgrund des Aufbaus die beiden „Kanäle“ sich durch Übersprechen so gut gegenseitig synchronisieren, dass die Phasen niemals weit genug auseinander laufen, als dass ein Kanal die Überhand gewinnen könnte (sehr populärwissenschaftlich ausgedrückt).

Ich selber habe mit Simulationsprogrammen für
Elektronikschaltungen keine Erfahrung. Beruflich habe ich sie
nie gebraucht, und als private Anschaffung waren sie mir immer
zu teuer.

Tipp: Ich benutze SiMetrix Intro. SiMetrix ist ein sehr leistungsfähiger und gut zu bedienender PSpice-Simulator, und die Demo Version die Demo-Version SiMetrix Intro ist wesentlich leistungsfähiger als anderen Demo-Versionen, die ich bisher kennen gelernt habe. Sie kann alles, was die Vollversion auch kann, und erlaubt wesentlich mehr Knoten als anderen. Ich bin ein richtiger Fan.

Grüße

Uwe

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

1 „Gefällt mir“

Hallo Uwe

Solltest Du einen solchen Test machen, so würde mich das Ergebnis interessieren.

… Immer ich :smile:

Na, wer sonst? :smile:)

…, und der hatte recht: Mit je einem Tastkopf an jedem Ausgang sah das schon aus wie erwartet, sogar mit Schwingungen:
Ungefähr 3 Schwingungen mit gut 10 MHz bis zum stabilen Endzustand.

Danach habe ich eine CD4011 gefunden und den Versuch wiederholt: Die verwendeten Gatter in diesem IC waren offensichtlich noch ähnlicher, so dass sich schon 5 Schwingungen ergaben:

http://www.Beis.de/bilder/RS-FF.jpg

Diese Art Schwingungen können sich m. E. nur dann ergeben, wenn innerhalb des Logikelementes eine Laufzeitleitung durch hintereinander geschaltete Inverter existiert. Das ist meines Wissens nach bei allen CMOS-Gattern der Fall (aber nicht bei allen Invertern, z. B. nicht bei den „UB“ = „unbuffered“ Versionen, oder bei der CD4007).

Grüße
Uwe

Mein Fehler.
Ich habe nicht weiter nachgedacht und die Gatter als ideale Bausteine gesehen, ohne daran zu denken, dass intern Signallaufzeiten vorhanden sind.

Dabei hätte ich daran denken können. Anfang der 80er Jahre hatten wir bei der Entwicklung einer optischen Lesestelle für Reflexmarken Probleme mit unerklärlichen Eingangsimpulsen. Und ausgerechnet ich war es, der in einer RCA-Applikation den Hinweis gefunden hat, dass Gatter zu Schwingungen neigen, wenn der Eingangsimpuls nicht steil genug ist. Das dürfte auf der gleichen Linie liegen.

Ich möchte Dir meine Anerkennung aussprechen. Dass Du da so intensiv drangehen würdest, hatte ich gar nicht erwartet.

Es war lehrreich. Ich habe auf jeden Fall was gelernt, Du wahrscheinlich auch, und möglicherweise hat sogar Kai davon profitiert.

Danke
merimies

Hallo,
es gab mal den Zwei-Bit-Komplikator mit 2 Eingaengen und den Ausgaengen manchmal, oefters, selten und vielleicht. War nur keine Logik, sondern Satire.
Wie waers mit einer verrauschten Spannung und einem Schmitt-Trigger daran, dann im rauschen zufaellug einschalten.
Gruss Helmut

Danke für Deine Hilfe!

Bin schon unterwegs zum Bauteilehandel… :wink: