Hardware- Zufallsgenerator für PIC16F877

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 03 8 2024  19:30:38      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
Hardware- Zufallsgenerator für PIC16F877

    







BID = 22849

Verion

Gelegenheitsposter



Beiträge: 90
 

  


Hi, kann mir jemand sagen wie ich einen Zufallsgenerator für nen microcontroller basteln kann?

das ganze soll acht-bittig sein (0-255) und möglichst gleichmäßig verteilte zahlen liefern
Eine softwäre lösung wär auch möglich, aber wenn das mit wenig Hardwareaufwand zu lösen ist würde ich das bevorzugen..

wie auch immer, bin für jede Hilfe dankbar!

Chris

BID = 22929

Jornbyte

Moderator



Beiträge: 7118

 

  

Was haste den für'n Controller im Einsatz?

_________________
mfg Jornbyte

Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.

BID = 22934

Mr.Ed

Moderator



Beiträge: 36088
Wohnort: Recklinghausen

Hmm, da der Betreff "Hardware- Zufallsgenerator für PIC16F877" lautet, vermute ich mal nen 16F877



_________________
-=MR.ED=-

Anfragen bitte ins Forum, nicht per PM, Mail ICQ o.ä. So haben alle was davon und alle können helfen. Entsprechende Anfragen werden ignoriert.
Für Schäden und Folgeschäden an Geräten und/oder Personen übernehme ich keine Haftung.
Die Sicherheits- sowie die VDE Vorschriften sind zu beachten, im Zweifelsfalle grundsätzlich einen Fachmann fragen bzw. die Arbeiten von einer Fachfirma ausführen lassen.

BID = 22963

Verion

Gelegenheitsposter



Beiträge: 90

jo, nen 16F877
das problem bei einer softwärelösung wär die rechenzeit..
ich muss drei verschiedene frequenzen(pwm) ausgeben, nen paar taster pollen, etc..
glaube da passt nen software zufallsgenerator nicht mehr rein
dazu kommt das der pic kein * und / kann (was soweit ich das verstanden hab für zufallszahlen benötigt wird)
-> selbst proggen -> ineffizient

BID = 22980

Benedikt

Inventar

Beiträge: 6241

Dumme Frage:
Wie baut man einen Software Zufallsgenerator ?

Falls die Zufallszahl nach einem Knopfdruck benötigt wird: Den Timer auslesen, das ist dann eine Zufallszahl, denn kein Benutzer kann auf 1/(xMHz/255) genau drücken...

BID = 23002

Verion

Gelegenheitsposter



Beiträge: 90

ist leider ne "alle 20 sekunden neu erstellte" zufallszahl
damit scheidet der timer aus

BID = 23006

tubbu

Gesprächig



Beiträge: 100

in dem fall vielleicht nicht die uhrzeit nehmen wie sie ist, sondern noch irgendwelche berechnungen damit anstellen, vielleicht noch mit anderen signalen die ausgegebene frequenz, oder so verrechenen

BID = 23008

Mr.Ed

Moderator



Beiträge: 36088
Wohnort: Recklinghausen

Betätigungsdauer des Schalters und Timer verknüpfen...



_________________
-=MR.ED=-

Anfragen bitte ins Forum, nicht per PM, Mail ICQ o.ä. So haben alle was davon und alle können helfen. Entsprechende Anfragen werden ignoriert.
Für Schäden und Folgeschäden an Geräten und/oder Personen übernehme ich keine Haftung.
Die Sicherheits- sowie die VDE Vorschriften sind zu beachten, im Zweifelsfalle grundsätzlich einen Fachmann fragen bzw. die Arbeiten von einer Fachfirma ausführen lassen.

BID = 23099

Verion

Gelegenheitsposter



Beiträge: 90

die zahl wird ja leider nicht per tastendruck erstellt, sondern automatisch alle 20 sekunden


Zitat :
Ein TTL-Eingang erkennt eine Spannung unter 16% der Betriebsspannung (<0,2V) als Low-Pegel und eine Spannung über 48% der Betriebsspannung (>2,4V) als High Pegel. Der Bereich dazwischen ist nicht definiert


weis jemand wie genau ich das "nicht definiert" verstehen kann? wenn das heist, dass der pegel zwischen low und high hin und her springt, könnte man vielleicht was draus machen...

BID = 23103

Benedikt

Inventar

Beiträge: 6241

Vergiss diese Methode, das ist zu unsicher.
Dies heißt nicht das er hin und herspringt, sonder bei einem der beiden liegt. Er kann zwar hin und her springen, muss aber nicht.

Eine Möglichkeit währe ein mehrfach in sich selbst verknüpftes Schiebregister. Dieses erzeugt eine feste Reihe an Zufallszahlen (mehrer Million oder noch mehr)

Eine andere Möglichkeit: Ein 4060 getaktet mit etwa 1MHz (ungenauer RC Oszillator aus Bauteilen mit hohem Temperaturdrift)
Der Taktausgang und einige andere Ausgänge liefern dann einen eher zufälligen Ausgang. (da man nie weiß, wann der Mikrocontroller die Daten liest)

BID = 23221

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach

Wenn Du nur alle paar Sekunden eine neue Pseudozufallszahl brauchst, (echten Zufall erzeugt ein Computer nur wenn er kaputt ist), und den Watchdog nicht benötigst, könntest Du diesen instabilen, und von der Programmausführung unabhängigen RC-Oszillator benutzen um per Watschdog-Interrupt einen auf zyklischen Codes beruhenden PN-Generator, wie Benedikt ihn schon vorgeschlagen hatte, weiterzuschalten.
Es gibt eine Vielzahl dieser Codes, aber einige, die länger als 8-bit sind (z.B. 9, 10, 15, 17, 18, 20, 21, 22, 23 ...33 stellige), kommen mit einem wenige Bytes langem Schieberegister und einer einzigen XOR Verknüpfung aus und sind daher in der Software leicht zu programmieren und schnell in der Ausführung.

Wenn Interesse besteht, kann ich einige dieser Generatorpolynome angegeben, mache aber schon jetzt darauf aufmerksam, daß die Anzahl der erzeugten 0-en und 1-sen systembedingt nicht exakt gleich ist, sondern es wird eine 1 mehr erzeugt. Dementsprechend liefert z.B. das in drei Bytes zu realisierende 23-stellige Polynom 4194303 Nullen und 4194304 Einsen. Oft kann man diese geringe Unsymmetrie aber vernachlässigen.



BID = 24400

Verion

Gelegenheitsposter



Beiträge: 90

hi,

das ganze hört sich doch schon gut an den WDT brauch ich nicht, also wenn man damit was machen kann wär das ideal.

wär nett, wenn du mir noch weitere infos, bzw. einen kleinen crashkurs (+polynome) geben könntest, wie ich das mache.

die Unsymmetrie ist wurscht, damit kann ich in jedem fall leben.

danke schonmal,
chris

BID = 24754

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach

Nein, einen Crashkurs "Polynome" werde ich nicht geben.
Dazu ist die Sache zu kompliziert, und es sind viele dicke Bücher darüber geschrieben worden.
Vielleicht findest Du im Netz von irgendeiner Uni - Fach Mathematik oder Informatik - etwas, was Dir zusagt.
Auch bei den Kryptologen und Nachrichtentechnikern könntest Du fündig werden.

Obwohl die Materie nicht trivial ist, gibt es, mit einem Schieberegister und einem oder mehreren XOR sehr einfach aufzubauende, Generatoren, die am Ausgang eine pseudozufällige Folge von Nullen und Einsen, die man auch als Maximum-Lenght-Sequences, MLS, bezeichnet, produzieren.
Wenn N die Zahl der Stufen im Schieberegister ist, wiederholt sich die Sequenz nach 2N-1 Takten, das ist zugleich ihre Länge.

Mit einem softwaremäßig aus 3 Bytes aufgebauten 24-Bit Schieberegister wiederholt sich die Geschichte also erst nach 224-1 Takten. (dezimal 16777215 wenn mein Taschenrechner mich nicht behumpst hat)

Derart erzeugte PN-Sequenzen eignen sich nicht zur Verschlüsselung, weil sie viel zu einfach zu knacken sind, aber man kann sie hervoragend benutzen, um Frequenzgänge oder Reflexionsstellen in Leitungen zu erkennnen.

Generell gibt es Generatorpolynome für jedes N, aber es gibt nicht für jedes N-Generatoren die mit einem einzigen XOR auskommen.

Da ein XOR in der Software Zeit kostet, gebe ich Dir in der folgenden Kochbuchanleitung einige Generatoren an, die die Bytes optimal ausnutzen, aber mit einem einzigen XOR auskommen.

Nimm ein N-stufiges Schieberegister das nach links schiebt, und führe das linkeste (Bit N-1) Bit und ein weiteres der Tabelle entnommenes Bit, einem XOR zu.
Das Ergebnis des XOR schiebst Du beim Takt in das Bit0 hinein.

Wenn Dein Register länger ist (m*8 bit), ist das kein Beinbruch, die unbenutzen Bits fallen einfach am linken Ende heraus.

Einfach was ?



Für N=2 bis 4 kannst Du das sogar noch einem Blatt Papier nachvollziehen:


Code :


Stufenzahl zu XOR-ende Bits:
N=2 1,0
N=3 2,1
N=4 3,2



Ernstzunehmende Sequenzen sind länger:


Code :


Bytes Stufenzahl zu XOR-ende Bits:

1 7 6,5 oder 6,3
2 15 14,13 oder 14,10 oder 14,7
3 23 22,17 oder 22,13
4 31 30,27 oder 30,24 oder 30,23 oder 30,17
5 39 38,34



Bei einer Schiebefrequenz von 1MHz, die Du mit einem µP softwaremäßig natürlich nicht erreichst, wiederholt sich der 7-bit Generator nach 127µs, der 15-Bit Generator nach 32ms, der 23-Bit Generator nach 8,4 Sekunden, der 31-Bit Generator nach 36 Minuten, und der 39-Bit Generator nach über 6 Tagen.

Das sollte für die meisten praktischen Zwecke ausreichen.

Wenn Du mehr brauchst, sag Bescheid. Als ultimativen pseudo-Zufallsgenerator könnte ich Dir eine Sequenz anbieten, die sich erst nach 5,9*1036 Jahren wiederholt.
Das wär etwa 1027 mal länger als unser Sonnensystem alt ist. Selbst wenn du von 1MHz auf 10GHz Taktfrequenz gehst, ändert sich nicht viel, daraus wird dann nur das 4*1022-fache Alter des Universums.
Trotzdem kann man damit nicht verschlüsseln, der Code wäre in wenigen Millisekunden geknackt.


Das Schieberegister muß nicht besonders initialisiert werden, nur dürfen Anfangs nicht alle Stufen auf 0 stehen.


Ach ja, Du brauchst ja nur acht Bit. Dann greif Dir einfach irgendein Byte des Generators ab.


_________________
Haftungsausschluß:
Bei obigem Beitrag handelt es sich um meine private Meinung.
Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.
Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !



[ Diese Nachricht wurde geändert von: perl am  5 Jul 2003 22:01 ]


Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 12 Beiträge im Durchschnitt pro Tag       heute wurden bisher 2 Beiträge verfasst
© x sparkkelsputz        Besucher : 181783054   Heute : 3105    Gestern : 4836    Online : 420        3.8.2024    19:30
8 Besucher in den letzten 60 Sekunden        alle 7.50 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0614140033722