Stromversorgung
Der Zufallsgenerator kann mit
Wechselspannung 9...14 V oder
Gleichspannung 12...20 V versorgt werden.
Für die Wechselstrom-Option hat der XR232 seine eigene Gleichrichterbrücke "on board". Auf diese Weise können zum Beispiel die robusten Wechselstrom-Steckernetzteile für analoge Modems und Anrufbeantworter (9...12 VAC) nutzbringend weiterverwendet werden. Diese Netzteile enthielten nur einen hochwertigen und meist kurzschlussfesten Trafo in Zweikammerbauweise. Durchschlagfest bis zu mehreren kV, das bedeutet eine sehr geringe kapazitive Kopplung ins 230-V-Netz. Impulsstörungen aus dem Stromnetz konnten kaum bis zum angeschlossenen Verbraucher vordringen, und insbesondere in der Kombination mit Festnetz-Telefongeräten war ein hoher Sicherheitsstandard garantiert. Außerdem hat ein einfacher Trafo den unschlagbaren Vorteil, dass er garantiert keine hochfrequenten Eigenstörungen produziert. Leider ist diese Bauweise heute kaum noch als Fertiggerät zu beschaffen. Der Selbstbau mit hochwertigen vergossenen Printtrafos ist natürlich weiterhin eine Option!
Für die Speisung mit Gleichstrom stehen heute vor allem Schaltnetzteile zur Verfügung. Damit wird es nie langweilig, denn die Billigen gehen auch schnell kaputt, damit sich die Rohstoffverschwendungsspirale immer schön weiter dreht. Obendrein wird es auf der Sekundärseite manchmal erstaunlich "kribbelig", weil die kapazitive Kopplung ins Energienetz meist viel höher ist, als bei einem konventionellen Trafo. Ableitspannungen um die 100 Volt, das kommt beim Zusammenstöpseln mit empfindlicher IT-Elektronik natürlich besonders gut an... Überflüssig zu sagen, dass man von einem Stecker-Schaltnetzteil für 7,99 auch keine wirklich saubere Gleichspannung erwarten darf, wie sie etwa für den Betrieb von Audioschaltungen benötigt würde.
Der zulässige Eingangsspannungsbereich ist aber relativ groß. Selbstverständlich funktioniert der XR232 auch mit einem stabilisierten Netzteil oder einem Schaltnetzteil von genau 12 V Nennspannung. Besser wären 15 V. Der Maximalwert, bei dem der Betrieb des Spannungsregler-ICs ohne Kühlkörper noch vertretbar erscheint, liegt bei etwa 20 V. Somit besteht also auch die Option eines Notebook-Netzteils, auch wenn dieses kaum ausgelastet und mit relativ schlechtem Wirkungsgrad arbeiten wird.
Der Digitalteil ist da anspruchsloser. Die gesiebte Gleichspannung an C5 geht auf den erwähnten Festspannungsregler VR1 (7805), der den Digitalteil mit stabilen 5 V versorgt. An dieser Stelle kommt selbstverständlich nur ein konventioneller
Linearregler infrage, der von sich aus keine hochfrequenten Störungen verursacht! Daher bitte auch den 100-nF-Kondensator C7 nicht vergessen, dieser verhindert eine Selbsterregung des Spannungsreglers.
Der Strombedarf des Digitalteils beträgt nur maximal 60 mA. Bis ca. 12...16 V unstabilisierter Eingangsgleichspannung benötigt der Regler im TO-220-Gehäuse garantiert keinen zusätzlichen Kühlkörper.
Selbst im Wärmestau bei einer unstabilisierten Eingangsspannung von 20 V erhitzte sich VR1 nie auf mehr als 50 Grad Celsius (Messwert Strahlungsthermometer). Das ist weniger, als manches Bauteil auf PC-Hauptplatinen vor sich hinbrutzelt! Mit einem kleinen Kühlblech oder bei Chassismontage sind Eingangsspannungen bis ca. 24 VDC problemlos möglich.
Wer nur mit Gleichspannungsnetzteilen arbeiten will, könnte eine verpolsichere Buchse verwenden und direkt auf C5 gehen. Besser ist es allerdings, den Verpolschutz durch die Diodenbrücke weiterhin zu nutzen. Die HF-Abblockkondensatoren C1-C4 (47 nF) filtern zusätzlich mögliche Störungen aus dem Schaltnetzteil.
Rauschquelle
Die Rauschquelle (Bauteile mit vorangestelltem "X") beruht auf einer Kleinleistungs-Z-Diode 9V1 (z.B. Standardtyp C9V1, Philips) und zwei bipolaren NPN-Transistoren (Standardtyp BC547B/C).
Die "Rauschdiode" XZD liegt gleichstrommäßig im Gegenkopplungszweig der Emitterschaltung XVT1/XR1/XR2. Ab einer Mindest-Betriebsspannung, die ein paar Volt über der Z-Spannung liegen sollte, stabilisiert sich die Schaltung automatisch auf einen Arbeitspunkt, an dem die Diode permanent im Bereich des Kennlinienknicks betrieben wird, also den maximalen Rauschbeitrag liefert. Die Schaltung ist somit 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, sodass auch die hochfrequenten Rauschanteile praktisch ungedämpft an die Basis von XVT1 gelangen. Dieser verstärkt das Rauschen, übrigens noch annähernd linear, um ca. das 250-fache. Am Kollektor von XVT1 steht ein Nutzsignal in der Größenordnung von bis zu 1V
SS.
Über XC2 gelangt der Wechselstromanteil dieses breitbandigen Rauschens auf die zweite Stufe mit XVT2/XR3. Sie hebt das Signal bis in die Begrenzung an. Der Kollektor von XVT2 liefert (über den externen Pullup R3) somit ein digitaltaugliches Eingangssignal für die nachfolgende Stufe.
Balancierung
Das digitalisierte Rauschen geht auf den Takteingang des als Frequenzteiler verschalteten 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 zeitvariablem Roh-Datenstrom holt sich der angeschlossene Computer mit dem aus zurückgewonnenen Bit-Takt jeweils ein Zufalls-Datenbit (D-Flipflop in IC3) genau mit der 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 BAT42, 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 bis zum nächsten Takt. An den Q-Ausgängen stehen nun serielle Bits, die bereits genau dem Zeitraster der aktuell eingestellten Baudrate entsprechen. Zum normgerechten RS232-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 optimal und fehlerfrei, wenn der Bitzähler mit dem Sendetakt "synchronisiert" wurde. Dann sind Start- und Stoppbits der zurückgelieferten Zeichen immer deckungsgleich mit den vom UART gesendeten Zeichen. In diesem Fall wird jedes über RXD zurückgelieferte Zeichen ein gültiges serielles Zeichen sein, es können keine "Framing-Errors" entstehen. Dann ist es auch vollkommen egal, wie unregelmäßig die Zeichen über TXD ausgegeben werden, da der UART selbstverständlich immer nur vollständige Zeichen sendet.
Dass die Start- und Stoppbits immer deckungsgleich 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. Die zeitaufwändige Synchronisationsprozedur ist mit XR232-Schaltungsversion 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 meiner "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).
Werden D7-D10 als Schottky-Dioden ausgeführt, gewinnt man insgesamt fast 1 Volt mehr Spannungshub für das zurückgelieferte RXD-Signal! Diese Maßnahme kann an einer schwachen RS232-Schnittstelle (Laptops) bereits den Unterschied zwischen "wackelig" und "geht immer" ausmachen.