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