Stromversorgung
Der TRNG wird aus einem konventionellen Netztrafo mit 9VAC
Sekundärspannung und mindestens 100mA Belastbarkeit versorgt. Bestens
geeignet sind die üblichen Steckernetzteile für analoge Modems und
Anrufbeantworter (9V / 500-1000mA), weil solche Trafos gewöhnlich in
kapazitätsarmer Zweikammerbauweise ausgelegt sind, sodass die
kapazitive Kopplung ins Stromnetz nicht allzu stark ist. Auch ein
konventionelles 12V-Gleichspannungsnetzteil kann verwendet werden.
(Bitte kein Schaltnetzteil!)
Die Wechselspannung wird über eine diskret aufgebaute Graetz-Brücke,
bestehend aus D1-D4 (1N4001) mit parallel geschalteten
HF-Abblockkondensatoren C1-C4 (47nF) gleichgerichtet und im ersten
Siebelko C5 (1000µF/25V) geglättet.
An dieser Stelle sollten bei Verwendung eines 9VAC-Netzteils etwa 12VDC
(entsprechend der Sinus-Spitzenspannung), bei Verwendung eines
12VAC-Netzteils etwa 16VDC anstehen. C5 ist somit ein erster wichtiger
Messpunkt, falls sich garnichts tut und auch die LED nicht leuchtet.
Die gesiebte Gleichspannung gelangt auf einen konventionellen
Festspannungsregler VR1 (7805), der den Digitalteil mit stabilen 5V
versorgt. An dieser Stelle kommt selbstverständlich
kein
Schaltregler infrage, sondern nur ein
Linearregler,
der von sich aus keine hochfrequenten Störungen verursacht! Daher bitte
auch den Abblockkondensator C7 nicht vergessen, dieser verhindert eine
Selbsterregung des Spannungsreglers.
Der Strombedarf des Digitalteils beträgt nur maximal 60 mA. Zwischen
12...16V Eingangsgleichspannung. Die Verlustleistung von maximal 0,3
Watt kann der Linearregler noch ohne zusätzlichen Kühlkörper abgeben.
Wer sich damit unwohl fühlt oder ein Netzteil mit höherer
Gleichspannung anschließen will, der kann ja ein Kühlblech anschrauben.
(Schaden kann es jedenfalls nicht.)
An die Betriebsspannung der Rauschquelle sind andere Forderungen zu
stellen. Die Rauschquelle stabilisiert sich in weitem
Betriebsspannungsbereich von selbst, ihre Betriebsspannung muss also
keineswegs auf einen Festwert stabilisiert sein. Sie sollte aber
besonders sauber und frei von Lastschwankungen des Digitalteils sein.
Und natürlich muss die Betriebsspannung für die Rauschquelle mindestens
1V über der Nennspannung der verwendeten Z-Diode liegen, damit der
Rauscheffekt genutzt werden kann. Da die Rauschquelle nur etwa 1mA
Betriebsstrom benötigt, reicht ein klassisches RC-Siebglied, bestehend
aus R2 (2k2) und C6 (1000µF) vollkommen aus, um aus der eventuell noch
leicht verbrummten Rohspannung an C5 eine hochreine Gleichspannung in
Batteriequalität zu machen.
Radikale Idee - Batterie statt Netzteil?
Alles in einen Metallkasten verfrachten und diesen noch besser
von der Außenwelt abschirmen, zum Beispiel mit Bleiplatten gegen die
Röntgen- und Gamma-Hintergrundstrahlung? Kann man machen...
Meiner Meinung nach spricht erst einmal nichts dagegen, außer
vielleicht der Strombedarf der LSTTL-Bausteine. Inzwischen hat sich
leider heraus kristallisiert, dass 74HC-Bausteine in dieser Anwendung
doch keine vollwertige Alternative zu LSTTL-Bausteinen sind. Man müsste
also schon einen kleinen Bleiakku oder eine etwas größere
Lithiumbatterie verwenden.
Und immer schön den Ladezustand im Auge behalten! Ich selbst habe mal
mit einem 12V-Pack aus Alkali-Batterien experimentiert. Wichtigste
Erkenntnis: Wenn man vergisst, das Gerät bei Nichtbenutzung
auszuschalten, dann kann es vorkommen, dass man Stunden später
immernoch Daten geliefert bekommt, die aber nur noch aus den Werten $00
oder $FF bestehen. Was war passiert - die Rauschquelle hatte ihren
Dienst versagt, weil die Batteriespannung bereits die Zenerspannung
unterschritten hatte, aber es war noch genügend Saft für den Logikteil,
dessen Betriebsspannung ja zusätzlich stabilisiert ist.
Mein Vorschlag für einen Akkubetrieb inklusive ultrasimpler
Ladeschaltung, ohne Layout-Änderungen:
Der Pfad vom Pluspol der Gleichrichterbrücke zu C5 und VR1 ist
aufzutrennen und an dieser Stelle ein einpoliger Umschalter
einzusetzen. Der Pluspol des Akku-Packs wird über diesen Umschalter
entweder auf den Pluspol des Gleichrichters oder auf C5/VR1 geschaltet.
(Minuspol mit GND verbunden). In den Wechselstrompfad X1 sollte noch
ein für den gewünschten Ladestrom dimensionierter Vorwiderstand
eingebaut werden. Man könnte dann mit einem Wechsel- oder
Gleichspannungsnetzteil den Akku laden, ODER den XR232 mit absolut
reinem Gleichstrom betreiben.
Rauschquelle
Die gegenwärtige Version der Rauschquelle (im Schaltbild mit "X"
bezeichnete Komponenten) beruht auf einer Kleinleistungs-Z-Diode 9V1
(z.B. Standardtyp C9V1, Philips) und zwei bipolaren NPN-Transistoren
(Standardtyp BC547C).
Die "Rauschdiode" XZD liegt gleichstrommäßig im Gegenkopplungszweig der
konventionellen Emitterschaltung aus XVT1/XR1/XR2. Bei ausreichend
hoher Betriebsspannung stabilisieren sich die Arbeitspunkte von
Transistor und Diode automatisch im Bereich der Z-Spannung (genau
genommen im Kennlinienknick derselben plus Spannungsabfall an der
B-E-Strecke des Transistors). Dadurch stellt sich immer der optimale
Arbeitspunkt für den "Rauschbetrieb" ein und die Schaltung wird
vollkommen abgleichfrei. Nebenbei wird sie in gewissem Umfang gegen
Spannungsschwankungen und Temperaturdrift unempfindlich.
Die Kathode von XZD liegt über XC1 wechselstrommäßig direkt auf
Schaltungsmasse / Emitterpotenzial von XVT1.
Das dem Diodenstrom überlagerte Rauschen gelangt praktisch ungedämpft
auf die Basis von XVT1 und wird von diesem, noch annähernd linear, um
etwa den Faktor 250 verstärkt. Am Kollektor steht bereits ein
Nutzsignal in der Größenordnung von 1V
SS.
Über XC2 wird der Wechselstromanteil dieses Signals augekoppelt und auf
die zweite Stufe mit XVT2/XR3 gegeben. Sie hebt das Signal bis in die
Begrenzung an. Das Ergebnis entspricht dem, was man mit einer
Komparatorschaltung erzielt hätte (nur störsicherer): Der Kollektor von
XVT2 liefert (über den externen Pullup-Widerstand R3) ein digitales
Rauschen mit gut lesbaren TTL-Pegeln.
Balancierung
Das digitalisierte Rauschen geht auf den Takteingang des als
Frequenzteiler arbeitenden ersten Flipflops von IC3a (74LS74, Pin 3).
Als digitales Balancierungsverfahren ist die Frequenzteilung in ihrer
Effizienz vergleichbar mit der XOR- oder Von-Neumann-Verknüpfung
aufeinander folgender Bits: Am Ausgang steht ein nahezu perfekt
ausgeglichenes digitales Zufalls-Rauschen. Auch hierbei geht die Hälfte
der ursprünglichen Bandbreite verloren, was wir uns in diesem Fall aber
durchaus leisten können.
Aus dem balancierten aber nach wie vor asynchronen Roh-Datenstrom holt
sich der angeschlossene Computer per digitalem Sample-and-Hold
(D-Flipflop in IC3) seine Zufallsbits mit der jeweils benötigten
seriellen Abtastrate.
Taktgewinnung
Zur Gewinnung des Sampling-Taktes und zur Steuerung der Logik für die
Erzeugung von Start-/Stoppbits wird das vom Rechner kommende TxD-Signal
(X2b) konsequent bipolar ausgewertet. So können die Flankenwechsel auch
unter schwierigeren Bedingungen (lange Leitung, schwache
Leitungstreiber) besonders sicher regeneriert werden. Voraussetzung ist
natürlich, dass die Schnittstelle einigermaßen normgerechte und vor
allem bipolare Spannungspegel liefert.
TxD steuert, je nach Polarität, entweder die Sende-LED in PC1 oder
diejenige in PC2 durch. Die Phototransistoren auf TTL-Seite ziehen
abwechselnd die Eingänge von zweien als R/S-Flipflop verschalteten
NAND-Gatter in IC1c/d (74LS00) auf Massepotenzial. An den Ausgängen
(Pins 8 und 11) dieser bistabilen Kippschaltung findet man ein sauber
regeneriertes und flankensteiles TxD-Signal mit TTL-Pegeln.
Mit Hilfe eines Wired-AND (D5/D6, Pullup R5) werden beide Ausgänge des
RS-FF kombiniert, um aus jedem Flankenwechsel einen kurzen positiven
Impuls zu gewinnen. Sendet der Computer über TxD ein Taktzeichen
(0-10101010-1), so liefert die Auswertung der Flankenwechsel genau 10
Impulse im Zeitraster der aktuell verwendeten Baudrate. Damit hat der
Zufallsgenerator alles, was er braucht, um eigene serielle Zeichen zu
generieren.
Anmerkung zu D5/D6 in Schaltungsversion 2.1: Inzwischen empfehle ich, an
dieser Stelle keine Silizium-Dioden einzusetzen, sondern Schottky-Dioden
vom Typ BAT46, die einen geringeren Spannungsabfall aufweisen.
Auf diese Weise geht man sicher, dass selbst "grenzwertige" Exemplare des 74LS74 in dieser
Schaltung das Taktsignal sauber auswerten können. (LOW-Pegelbedingung an Pin 11)
Wichtig: Wer die Schaltung bisher mit einem HCMOS-Baustein (74HC74, 74HCT74) betrieben hat,
kann die Si-Dioden beibehalten - hier liegt die Schaltschwelle etwa auf Höhe der halben
Betriebsspannung.
Zufalls-Bitsampling
Die aus TxD abgeleiteten Taktimpulse gehen direkt auf den Takteingang
des zweiten D-FF in IC3b (Pin 11). Es speichert den zum Abtastzeitpunkt
vorliegenden Logikpegel des Bitstroms für die Dauer bis zum nächsten
Takt. An den Q-Ausgängen erhält man fortlaufende serielle Bits, die
bereits genau dem Zeitraster der aktuell eingestellten Baudrate
entsprechen. Zum normgerechten seriellen Datenstrom fehlen allerdings
noch zwei Kleinigkeiten...
Generierung der Start- und Stoppbits
Im fortlaufenden Zufalls-Bitstrom müssen an den richtigen Stellen
Start- und Stoppbits vorliegen. Dazu müssen die über TxD gelieferten
Taktimpulse abgezählt werden. Diese Aufgabe übernimmt IC2
(Dezimalzähler 74LS90). Er liefert im Abstand von 10 Takten an seinem
Ausgang Qd (Pin 11) ein 2 Takte breites Zeitfenster, in dem je ein
Stopp- und ein Startbit eingefügt werden. (Anmerkung: Nur die fallenden
Flanken triggern den Zähler, daher muss man auch nur das Teilersystem
"durch 5" für diesen Zweck benutzen.)
Durch Verknüpfung von TxD-TTL mit Qd und zeitnahes Setzen der
R/S-Eingänge von IC3a/b über Verzögerungsglieder (R4/C9, R6/C10)
erreicht man, dass das 1.Bit grundsätzlich LOW-Pegel ("Startbit")
bekommt, während als 10.Bit immer ein HIGH-Pegel ("Stoppbit") gesetzt
wird. Dieses Verfahren funktioniert unabhängig von der aktuellen
Baudrate, da die Verzögerungsglieder lediglich ein paar unkritische
Vorher-Nachher-Bedingung gewährleisten müssen. Die Zeitglieder haben
auch praktisch keinen nennenswerten Einfluss auf die tatsächliche
Bitdauer der Start- und Stoppbits; diese wird ausschließlich durch das
aus TxD gewonnene Zeitraster (IC3, Pin 11) bestimmt. Mehr als tausend
Worte sagt hoffentlich das
Timingdiagramm!
Das beschriebene Verfahren zur Erzeugung serieller Zeichen funktioniert
erst dann optimal, wenn der Bitzähler mit dem Sendetakt
"synchronisiert" wurde, d.h. wenn Start- und Stoppbits der
zurückgelieferten Zeichen immer deckungsgleich mit den vom UART
gesendeten Zeichen sind. In diesem Fall wird jedes über RxD
zurückgelieferte Zeichen ein gültiges serielles Zeichen sein, und es
ist egal, wie unregelmäßig TxD seine Taktzeichen ausgibt (der UART
gibt selbstverständlich immer nur vollständige Zeichen aus).
Dass die Start- und Stoppbits immer decklungsgleich sind, kann man bei
Verwendung eines Zählers sicherstellen, wenn der Zähler zu Beginn der
Übertragung einen entsprechenden RESET erhält. Genau genommen ist es
hier ein "SET", denn der Zähler soll, wie auch im Timingdiagramm zu
sehen, am Beginn der Übertragung auf "5" stehen.
Dieses Setzen des Zählers wird in der vorliegenden Schaltungsversion
durch einen weiteren Optokoppler bewerkstelligt. Er wird durch die
Schnittstellenleitung DTR gesteuert (Anschlussvariante 1, siehe weiter
unten), und zwar so, dass der Set-Eingang des Zählers erst mit dem
regulären Öffnen der Schnittstelle freigegeben wird. Auf diese Weise
ist sichergestellt, dass der XR232 keinen Mucks von sich gibt, solange
die Schnittstelle nicht regulär geöffnet ist, weil der Zähler zu diesem
Zeitpunkt an seinem Set-Eingang dauerhaft HIGH ist - erst wenn die
RS232-konforme Übertragung beginnt, wird der Zähler freigegeben, indem
der Optokoppler den Set-Eingang auf LOW zieht. Jetzt steht der Zähler
richtig und ist bereit, Taktimpulse zu zählen, sodass der XR232 bereits
für das erste über TxD reinkommende Taktzeichen ein gültiges
Zufallszeichen zurückliefert. Eine relativ zeitaufwändige Synchronisationsprozedur
ist mit der Schaltung ab Version 2.x also nicht mehr notwendig.
Schnittstellen-Ankopplung
Die Verbindung zur computerseitigen
RS232-Schnittstelle erfolgt aus den bereits genannten Gründen der
Störsicherheit über Optokoppler.
Wegen der hohen Anforderungen an die Integrität der Signale wird mit
echten bipolaren RS232-Pegeln gearbeitet, sodass für TxD und RxD je
zwei Optokoppler benötigt werden. Es kommt eine abgewandelte Form der
"Potenzialfreien Pegelwandlung für die RS232-Schnittstelle" [6] zum
Einsatz.
Über einen weiteren Optokopper wird der Pegelwechsel auf der
Statusleitung DTR (oder RTS) auf die Logikseite übernommen und sorgt dort für
einen definierten Stand des Taktzählers, sobald die Schnittstelle
geöffnet wird. Da man bei DTR (oder RTS) keine sehr schnellen Pegelwechsel
auswerten muss, reicht für PC5 ein billiger Standard-Optokoppler (z.B. PC817).
Wenn die Dioden D7-D10 als Schottky-Dioden ausgeführt werden, gewinnt man insgesamt fast
1 Volt mehr Spannungshub für die RS232-Signale. Diese Maßnahme könnte zur verbesserten
Betriebssicherheit beitragen, wenn der Zufallsgenerator an einer eher schwachen Schnittstelle
betrieben wird.