satunnaislukugenerointi lämpökohinasta

satunnaislukugenerointi lämpökohinasta

toimisikohan seuraavanlainen ratkaisu:

kytketään aina 2 kpl esim. 2,2 megaohmin vastuksia sarjaan nollan ja positiivisen käyttöjännitteen (esim. 5V) väliin, joten vastusten läpi kulkee 1,14 mikroampeerin virta.

tällaisen vastusparin keskipisteeseen (jossa siis n. 2,5V jännite) kytketään sopiva kondensaattori (sopiva arvo?), jonka toinen pää kytketään operaatiovahvistimen tuloon, eli toisen vastusparin konmdensaattorilla erotettu keskipiste tuloon ja toisen vastaavasti -tuloon.

Nuo kondensaattorit ovat tuossa välttämättömiä siksi, että muussa tapauksessa vastusten toleranssit aiheuttavat sen, että esim. vastusparin B keskipisteen jännite onkin 2,51V ja parin A 2,49V, jolloin B:n keksipisteen jännite olisi aina suurempi kuin A:n, eikä asiassa olisi mitään satunnaisuutta.

Kondensaattorihan päästää vain vaihtovirtaa lävitseen, joten erotuskondensaattorin pitäisi eliminoida tasajännitteen osuus tuosta, jolloin vain vastusten lämpökohinan aiheuttama vaihtojännite pääsee operaatiovahvistimen tuloon.

Jos lämpökohina jonakin hetkenä on molemmissa vastuspareissa samansuuntaista ja -voimakkuista, silloin operaatiovahvistimen ja - tulojen välillä ei ole lainkaan jännitettä, mutta jos eroa on, niin esim miljardikertainen vahvistus aiheuttanee sen, että esim 1 nanovoltinkin ero ja - tulojen välillä tekee voltin eron operaatiovahvistimen lähtöön.

Nyt jos edelläkuvattu systeemi kahdennetaan (yhteensä siis 8 kpl 2,2 MOhm vastusta, 4 erotuskondensaattoria ja dual op.amp), niin silloin on tarjolla 2 eri operaatiovahvistimen (fyysisesti samassa mikripiirissä) lähdöt, joiden välillä on joko n. 2V ero jompaan kumpaan suuntaan tai sitten niiden välillä ei ole eroa. Jos nyt noihin 2 lähtöön kytketään vielä komparaattori, niin silloin pitäisi tarjolla olla binäärinen satunnaissignaali (tuosta kun vielä saisi toisen apusignaalin, joka ilmaisee, milloin jännite-ero on ja milloin ei ole).

Tuo sitten esim. PC:n sarjaporttiin (kun jostain vielä löytäisi emon, jossa ainakin 2 sarjaporttia).

sarjaporrtia varten olisi vielä hyvä saada jotenkin bittivirta pakotettua tämännäköiseksi:

0 ssssssss 1, 0 ssssssss 1, 0 ssssssss 1, ...

eli siis startbitti (0), 8 satunnaista bittiä ja stopbitti (1).

tarvittaessa voisi toki tehdä jonkun elektronisen kooderin, joka syöttää aina 2 peräkkäistä bittiä sarjaporttiin seuraavasti:

00 = ei jännite-eroa, eli ei satunnaisuutta saatavilla.
01 = tätä arvoa ei syötetä PC:lle koskaan, tai sitä voidaan kertoa mahd. havaitusta laiteviasta.

10= satunnaisbitti 0
11= satunnaisbitti 1

nyt siis 8 satunnaisbittiä (s) PC:lle sisältääkin tosiasiassa 4 kpl 2 bitin ryhmää, jotka voivat kuvata 0-4 kpl satunnaisbittejä.

mutta jos noista 4:stä keskimäärin 2 bittiä on satunnaisia, niin yhdellä PC:lle syötetyllä tavulla saadaan 2 bittiä eli 0,25 tavua satunnaisuutta PC:lle.

Kun sarjaportissa saadaan siirrettyä 115200 bps, se vastaa 11520 tavua/s, eli 11520*0,25 = 2880 todellista satunnaistavua sekunnissa.
2223
Äänestä

Muut lukivat myös

Vastaukset 2

Vanhimmat

Mikäettei toimisi. Olis ihan jännä nähdä sovellus ja sitten testauttaa vaikka pari megatavu tuolla tavoin tehtyä satunnaislukua...

Tässä on toinen tavallaan vastaavaan ideaan perustuva sovellus aiheesta... tosin eri mekanismilla...

http://www.fourmilab.ch/hotbits/how.html

Perustuu siihen että radioaktiivisen hajoamisen säteilytuotanto on täysin satunnaista, mitataan vain kolmen hajoamisen välinen aika ja siitä muodostetaan binääriluku. Jos 1. ja 2. hajoamisen välinen aika on suurempi kuin 2. ja 3. niin -> 1 ja jos ei niin -> 0.

Mutta jos tuota samaa voi soveltaa ilman säteilylähdettä tuolla esittelemälläsi tavalla niin sehän on hyvä juttu.... :)

Äänestä

Kommentoi aloitusta


satunnaislukukerääjä kirjoitti:

satunnaislukugenerointi lämpökohinasta

toimisikohan seuraavanlainen ratkaisu:

kytketään aina 2 kpl esim. 2,2 megaohmin vastuksia sarjaan nollan ja positiivisen käyttöjännitteen (esim. 5V) väliin, joten vastusten läpi kulkee 1,14 mikroampeerin virta.

tällaisen vastusparin keskipisteeseen (jossa siis n. 2,5V jännite) kytketään sopiva kondensaattori (sopiva arvo?), jonka toinen pää kytketään operaatiovahvistimen tuloon, eli toisen vastusparin konmdensaattorilla erotettu keskipiste tuloon ja toisen vastaavasti -tuloon.

Nuo kondensaattorit ovat tuossa välttämättömiä siksi, että muussa tapauksessa vastusten toleranssit aiheuttavat sen, että esim. vastusparin B keskipisteen jännite onkin 2,51V ja parin A 2,49V, jolloin B:n keksipisteen jännite olisi aina suurempi kuin A:n, eikä asiassa olisi mitään satunnaisuutta.

Kondensaattorihan päästää vain vaihtovirtaa lävitseen, joten erotuskondensaattorin pitäisi eliminoida tasajännitteen osuus tuosta, jolloin vain vastusten lämpökohinan aiheuttama vaihtojännite pääsee operaatiovahvistimen tuloon.

Jos lämpökohina jonakin hetkenä on molemmissa vastuspareissa samansuuntaista ja -voimakkuista, silloin operaatiovahvistimen ja - tulojen välillä ei ole lainkaan jännitettä, mutta jos eroa on, niin esim miljardikertainen vahvistus aiheuttanee sen, että esim 1 nanovoltinkin ero ja - tulojen välillä tekee voltin eron operaatiovahvistimen lähtöön.

Nyt jos edelläkuvattu systeemi kahdennetaan (yhteensä siis 8 kpl 2,2 MOhm vastusta, 4 erotuskondensaattoria ja dual op.amp), niin silloin on tarjolla 2 eri operaatiovahvistimen (fyysisesti samassa mikripiirissä) lähdöt, joiden välillä on joko n. 2V ero jompaan kumpaan suuntaan tai sitten niiden välillä ei ole eroa. Jos nyt noihin 2 lähtöön kytketään vielä komparaattori, niin silloin pitäisi tarjolla olla binäärinen satunnaissignaali (tuosta kun vielä saisi toisen apusignaalin, joka ilmaisee, milloin jännite-ero on ja milloin ei ole).

Tuo sitten esim. PC:n sarjaporttiin (kun jostain vielä löytäisi emon, jossa ainakin 2 sarjaporttia).

sarjaporrtia varten olisi vielä hyvä saada jotenkin bittivirta pakotettua tämännäköiseksi:

0 ssssssss 1, 0 ssssssss 1, 0 ssssssss 1, ...

eli siis startbitti (0), 8 satunnaista bittiä ja stopbitti (1).

tarvittaessa voisi toki tehdä jonkun elektronisen kooderin, joka syöttää aina 2 peräkkäistä bittiä sarjaporttiin seuraavasti:

00 = ei jännite-eroa, eli ei satunnaisuutta saatavilla.
01 = tätä arvoa ei syötetä PC:lle koskaan, tai sitä voidaan kertoa mahd. havaitusta laiteviasta.

10= satunnaisbitti 0
11= satunnaisbitti 1

nyt siis 8 satunnaisbittiä (s) PC:lle sisältääkin tosiasiassa 4 kpl 2 bitin ryhmää, jotka voivat kuvata 0-4 kpl satunnaisbittejä.

mutta jos noista 4:stä keskimäärin 2 bittiä on satunnaisia, niin yhdellä PC:lle syötetyllä tavulla saadaan 2 bittiä eli 0,25 tavua satunnaisuutta PC:lle.

Kun sarjaportissa saadaan siirrettyä 115200 bps, se vastaa 11520 tavua/s, eli 11520*0,25 = 2880 todellista satunnaistavua sekunnissa.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu