Erzeugung von Zufallszahlen mittels Halbleiter
Transcrição
Erzeugung von Zufallszahlen mittels Halbleiter
© halvedDISC -Applikation – Lottozahlengenerator – Erzeugung von Zufallszahlen mittels Halbleiter-Rauschgenerator 1 Einleitung Mit diesem Programm werden aus einer extern erzeugten Rauschspannung über die ADU-Schnittstelle Zahlenäquivalente erzeugt, die in Lottozahlen umgerechnet und auf dem Display ausgegeben werden. 2 Hardwarebeschreibung Benötigt wird zunächst selbstverständlich eine halvedDISC© -Plattform incl. Programmieradapter. Das Prinzip der Generierung einer Lottozahl beruht in dieser Applikation auf der Ermittlung eines Spannungswertes aus einem Rauschspannungsspektrum. Dazu muss an Port ADC0 (X4/Pin3) eine Spannung zwischen 0VDC und 5VDC anliegen, sowie ein Pullup-Widerstand (X4/Pin6) → siehe Tab.1 . Pin Nr. Signal Name Info 1 GND 0V 2 GND 0V 3 Noise Schrotrauschen (0...5V) 4 n.c. n.c. 5 n.c. n.c. 6 Device Detect 10k Pullup-Wid. ( 5V ) 7 n.c. n.c. 8 n.c. n.c. Nutzbarer Spannungsbereich binärer ADU-Wert 1023 ... 1003 1002 ... 22 21 ... 0 äquivalenter Spannungswert 5,000 V 0,103 4,902 V 4,897 V 4,790 0,108 V 0,103 V 0,107 0V Tab.1 Tab.2 3 Schaltungsvorschlag für einen einfachen Rauschgenerator Olaf Schneider Weitere Info: [email protected] 01/2009 © halvedDISC -Applikation 4 – Lottozahlengenerator – Programmablaufplan Start Hauptprogramm INITIALISIERUNG Stack, Ports, Variablen Binärwerte aus Rauschspannung ermitteln INITIALISIERUNG I²C-Bus, LCD-Display Werte wandeln und qualifizieren Textausgabe Begrüßung, Anweisung nein Lottozahlen sortiert auf LCD ausgeben T1 gedrückt (Start) ? ja T1 gedrückt (Start) ? nein ja nein 5 Rauschgen. vorh. ? ja Ende Hauptprogramm Funktionsbeschreibung der Software Nach dem Einschalten der halvedDISC© erscheint auf dem Display ein kurzer Einführungstext in drei Sequenzen, bis der Benutzer aufgefordert wird, das Programm mit einem Tastendruck auf T1 (S3) zu starten. Zunächst wird dann, aus dem an Port ADU_P0 des µCs angelegten Rauschspannungsspektrum, einmalig ein äquivalenter 10Bit-Binärwert mittels „successiver Approximation“ ermittelt, in den ADU-Datenregistern ADCH und ADCL abgelegt und abgefragt, ob sie im sinnvollen binären Wertebereich zwischen 22 und 1002 liegt → siehe Tab.2 . In der nachfolgenden Sequenz wird nun die errechnete Zahl auch auf Duplizität geprüft. Wird nur eine von beiden Bedingungen verletzt, wiederholt sich der Vorgang der Werteermittlung und –umrechnung. Der gültige Wert dient als Grundlage für die anschließende Berechnung einer Zahl zwischen 1 und 49, indem der erfasste Binärwert durch 20 geteilt und das ganzzahlige Ergebnis im SRAM des µC abgelegt wird. Wenn schließlich sechs Lottozahlen zur Verfügung stehen, werden sie mit dem Sortieralgorithmus ‚Bubble Sort’ in eine numerisch aufsteigende Reihenfolge gebracht und auf dem Display angezeigt. Der Benutzer kann anschließend den Vorgang erneut durch drücken der Taste T1 starten. Olaf Schneider Weitere Info: [email protected] 01/2009