Ich möchte einen pseudozufälligen Impulsgenerator der alten Schule entwerfen, um verschiedene Arten von Ereignissen auszulösen (bitte nur Hardwarevorschläge - keine programmierbaren ICs). Die Ereignisse, die ich kontrollieren möchte, müssen im Allgemeinen in den folgenden Häufigkeitskategorien stattfinden: mehrmals pro Minute, einige Male pro Minute, einmal pro Minute, einmal alle paar Minuten, ein- oder zweimal pro Stunde. Innerhalb jeder Häufigkeitskategorie sollte das Ereignis "zufällig" auftreten, was bedeutet, dass das Wiederauftreten des Ereignisses nicht genau vorhersehbar sein sollte. Um Ihnen ein Gefühl dafür zu geben, warum ich das bauen möchte: Stellen Sie sich ein Videospiel vor, das verschiedene Szenenelemente hat, von denen einige sehr häufig vorkommen, einige ziemlich häufig und andere selten ... Sie haben die Idee, ich Hoffnung.
Der Grund, warum ich eine reine Hardwarelösung möchte, ist, dass ich absichtlich versuche, etwas über diskrete Logik zu lernen - Dinge wie Schieberegister, Multiplexer, Boolesche Logik usw. Effizienz, Geschwindigkeit, Größe und Kosten sind nicht meine Hauptanliegen. Hoffentlich gibt es da draußen ein paar Vintage-Elektronik-Fanatiker, die mir bei meiner Suche nach Wissen helfen! Danke :-) PS: Ein gezeichneter Schaltplan wäre sehr dankbar, da ich lerne und wahrscheinlich nicht in der Lage sein werde, vage Vorschläge zu verstehen oder zu erstellen.
Eine gute Möglichkeit, Zufälligkeit unter Verwendung diskreter Logik zu erzeugen, besteht darin, die Metastabilitätseigenschaften eines Flip-Flops auszunutzen.
Ein D-Flip-Flop ist eine Art Flip-Flop, das eine Uhr (Eingang mit dreieckigem Aussehen) und einen Dateneingang (D-Eingang) hat, wie unten gezeigt. Normalerweise wird der Zustand des D-Eingangs eine Laufzeitverzögerung nach einer steigenden Taktflanke an den Q/!Q-Ausgang übertragen.
(von http://www.learningaboutelectronics.com/images/D-flip-flop.png )
Die Daten müssen vor der Taktflanke eine bestimmte Zeit "aufstellen" und nach der Taktflanke eine bestimmte Zeit "halten", um sicherzustellen, dass die Eingabe korrekt an die Ausgabe übertragen wird. Wenn die Setup- und Hold-Zeiten nicht eingehalten werden, dann wird der Zustand des Ausgangs bei der normalen Ausbreitungsverzögerungszeit für das Flip-Flop zufällig. Die Zufälligkeit kann eingestellt werden, indem Sie die Frequenz und Phase des Takts und der Daten sowie die Zeitdauer variieren, die Sie warten, um den Status des Ausgangs zu überprüfen.
Die folgende Grafik stammt aus einem TI-Papier , in dem die Metastabilitätseigenschaften verschiedener 5-V-Logikfamilien erörtert werden. Allgemein gilt: Je langsamer die Logik, desto schlechter die Metastabilität und desto häufiger treten zufällige Fehler auf. Dies bedeutet, dass ältere Logikfamilien nützlicher zum Generieren zufälliger Fehler sind. Die Grafik zeigt, dass die Fehlerrate bei Verwendung der Logik im 74HC-Stil von Tausenden von Malen pro Sekunde auf einmal pro Tag eingestellt werden kann, indem die Wartezeit nach einer Uhr variiert wird, auf die Sie den Ausgang des Flip-Flops (tx) betrachten. Dieses spezielle Diagramm gilt für einen 1-MHz-Takt und einen 500-kHz-Dateneingang.
Beachten Sie, dass Metastabilität verzögerungs-, temperatur- und spannungsempfindlich ist, sodass die Abstimmung auf eine bestimmte Ereignisrate eine Herausforderung sein könnte. Aber es könnte möglich sein, etwas zu bauen, das gut genug für Ihre Bedürfnisse ist.
Die Testschaltung aus dem TI-Papier ist unten dargestellt. Es kann ein Ausgangspunkt für eine Zufallsereigniserzeugungsschaltung sein.
Die Antwort auf diese Frage ist, dass es viele Antworten gibt, aber der gebräuchlichste Ansatz ist die Verwendung eines Schieberegisters mit linearer Rückkopplung. Ich begann mit dieser Idee und steckte zwei 8-Bit-Schieberegister (TI-Teil CD54/74AC164E), die von einem 555-Timer im astabilen Modus getaktet wurden. Ich habe die seriellen Dateneingänge der Schieberegister schwebend gelassen. Vor dem Hinzufügen von XOR-Gattern (dem linearen Rückkopplungsteil) habe ich diese Schaltung mit LEDs getestet, um zu visualisieren, was passiert. Wie sich herausstellt, beginnen die beiden Schieberegister in unterschiedlichen Zuständen (vermutlich, weil ihre Dateneingänge schwebend sind). Ihre Zustände bleiben unsynchronisiert, während sie sich weiter verschieben, was Sie in diesem Video sehen können:
https://www.kellyheatonstudio.com/blog/2018/9/6/shift-registers
Die beiden 8-Bit-Schieberegister befinden sich im mittleren Bereich meines Steckbretts. Rechts befindet sich ein 555-Timer im astabilen Modus, der einen Takt von etwa 1x pro Sekunde liefert. Links ist ein 5-Volt-Regler - dieser Teil ist irrelevant, wenn Sie die richtige DC-Versorgungsspannung haben, aber meine ist 12 VDC.
Vielleicht ist dieser gehackte Ansatz all die scheinbare Zufälligkeit, die ich brauche (ich bin Künstler, kein Kryptograph). Wenn nicht, werde ich lineares Feedback hinzufügen und / oder den Ratschlägen von @ crj11 unten bezüglich der Ausnutzung der metastabilen Eigenschaften von Flip-Flops (die sich in den Schieberegistern befinden) folgen. Wie auch immer, ich denke, durch die Verwendung mehrerer Schieberegister und mehrerer 555-Timer brauche ich nicht viel Feedback und sicherlich nichts Besonderes, um das System zufällig erscheinen zu lassen - auch wenn es technisch gesehen nicht der Fall ist.
Was die Häufigkeit meiner Ereignisse betrifft (oft, manchmal, selten ...), plane ich, verschiedene Schieberegister mit unterschiedlichen Geschwindigkeiten zu takten. Das Anwenden von Logikgattern auf die Ausgänge dieser verschiedenen Register (mit unterschiedlichen Taktraten) sollte mir die allgemeinen Kategorien der Ereignisfrequenz geben, die ich suche, da schnellere Taktraten zu logischeren "Positiven" führen (oder was auch immer die richtige Terminologie ist). . Ich hoffe das macht Sinn.
Nachfolgend finden Sie einige Ressourcen für Personen, die wie ich die korrekte Terminologie nicht kennen oder nicht verstehen, wie Schieberegister für die Generierung von Pseudozufallszahlen verwendet werden.
Gute allgemeine Übersicht zur Beantwortung der Frage „Was ist ein linear rückgekoppeltes Schieberegister“ (LFSR): https://zipcpu.com/dsp/2017/11/11/lfsr-example.html
Zur Auswahl von Abgriffen für ein Schieberegister mit linearer Rückkopplung: https://cs.stackexchange.com/questions/1121/choosing-taps-for-linear-feedback-shift-register
Miniprojekt zur Implementierung eines LFSR: https://www.slideshare.net/KishoreChandrahasVanam/lfsr
Ein weiteres hilfreiches Dokument zur Verwendung eines 8-Bit-LFSR (dh Texas Instruments Chip CD54/74AC164): https://pdfs.semanticscholar.org/320a/8b2e781ac6165b400eca96047489685fd1f7.pdf
Benutzer105652
Tony Stewart EE75
crj11
Kelly Heaton
Das Photon
Das Photon
Kelly Heaton
crj11
Kelly Heaton
Benutzer105652
Benutzer105652
Benutzer253751
Marko Buršič
KalleMP