Random Number Generator - PĂDURARIU Sabin

Introducere

Numerele aleatoare sunt foarte des intalnite in domenii cum ar criptografia, testarea sistemelor, inteligenta artificiala, statistica si simularea fenomenelor si actiunilor.

Ele sunt folosite pentru a crea scenarii sau conditii initiale noi, care mai apoi sunt testate si analizate impotriva unor ipoteze initiale, sau pentru a realiza alegeri aleatoare in situatii in care toate deciziile sunt echiprobabile. In practica se folosesc si numere pseudoaleatoare dar dezavantajul acestora este reprezentat de posibilitatea de a afla urmatorul numar generat, fara a sti “seed-ul”, analizand secventa de numere generate pana in acel moment. In realitate este necesar sa avem posibilitatea de a obtine esantioane complet aleatoare pentru a realiza o analiza completa si corecta.

Descriere generală

High Level Design

Fenomene fizice

Exista mai multe fenomene fizice care au ca efect producerea unor miscari aleatoare dar din punt de vedere electric exista cateva metode care pot genera semnale digitale aleatoare:

  • zgomot termal - miscarea aleatoare a purtatorilor de sarcina cauzata de caldura
  • zgomot de avalansa - coliziuni aleatoare ale purtatorilor care duc la multiplicare în avalansa
  • zgomot de la polarizarea inversa - jonctiunea colector-baza polarizata invers, similar cu cel de avalansa
  • zgomot de faza al oscilatoarelor - fluctuatii de faza și “jitter” in oscilatiile de inalta frecventa

Circuitul

Ansamblul foloseste zgomotul produs de polarizarea inversa a jonctiunii BE a unui tranzistor NPN ca sursa de zgomot. Zgomotul este preluat si este amplificat mai departe de catre ceilalti tranzistori, rezultand un semnal care poate fi preluat si citit de catre microcontroller.

Semnalul de iesire al ansamblului impreuna cu semnalele citite de la senzorii de temperatura si de proximitatea furnizeaza microcontroller-ului datele necesare construirii numerelor aleatoare. “Entropia”, sau mai degraba fluctuatiile valorice, pot fi de asemenea observate in timp real prin lumina produsa de LED-ul RGB care mareste intensitatea fiecarei culori in functie de valorile primite de la ansamblu si senzori.

Hardware Design

Bill of materials

Deoarece sursa de zgomot a dispozitivul este o componenta electrica, acesta are dimensiuni reduse si este alcatuit din urmatoarelor componente:

Schema electrica

PCB

Senzorii sunt plasati pe PCB astfel incat sa aiba posibilitatea sa capteze semnalele din exterior cat mai clar si fara distorsiuni.

Traseele nu contin unghiuri drepte si au grosimea de 0.15 mm, cu exceptia traseelor de alimentare/putere care au grosimea de 0.3 mm. Traseele de putere sunt rutate pe layer-ul TOP, evitandu-se, pe cat posibil, folosirea vias-urilor. Traseele de semnale de date sunt rutate atat pe layer-ul TOP cat si pe layer-ul BOTTOM.

Deoarece rutarea a fost realizta pe ambele la layer-uri, planul de masa este realizat atat pe layer-ul TOP cat si pe layer-ul BOTTOM.

Interfatarea

Microcontroller-ul foloseste un de ADC pentru a citi valoarea furnizata de catre circuitul electric iar ADC-ul incepe conversia la evenimentul produs de compararea de pe timer-ul 0.

Comunicarea cu senzorul de proximitate se desfasoara cu ajutorul a doi pini specifici senzorului prin care microcontroller-ul comunica senzorului cand sa citeasca date iar senzorul notifica microcontroller-ul cand datele pot fi citite.

Atat senzorul de temperatura cat si cel de proximitate au protocoale proprii si nu folosesc un standard cum ar fi SPI sau I2C. Comunicarea cu senzorul de proximitate se desfasoara cu ajutorul a doi pini specifici senzorului prin care microcontroller-ul comunica senzorului cand sa citeasca date iar senzorul notifica microcontroller-ul cand datele pot fi citite. Comunicarea cu senzorul de temperatura se desfasoara folosind un singur pin pe care se trimit, la intervale de timp prestabilite, biti, ridicand linia la unu logic sau coborand-o la zero logic.

Comunicarea cu modulul Bluetooth se realizeaza folosind interfata UART a microcontroller-ului.

Software Design

Am folosit compilatorul de c, avr-gcc, pentru a compila codul pentru microcontroller si dau boot direct folosind avrdude.

Software-ul contine trei mai sisteme:

  • sistemul de sampling
    • ADC cu Timer0
    • Pini GPIO
  • sistemul de proximitate
    • Timer1
    • Pini GPIO
  • sistemul de entropie
    • Pini GPIO

Sistemele sunt initializate folosind registrele fiecarei componente iar starea acestora este modificata ulterior prin diverse apeluri.

Interfatarea cu modulul bluetooth se realizeaza cu ajutorul interfetei UART iar comunicarea se desfasoara normal.

Rezultate Obţinute

In practica, circuitul se comporta intr-un mod asteptat desi fluctuatiile sunt mai mici decat ar trebui sa fie. De asememea, si senzorul de temperatura ofera valori ca sunt destul de stabile, ceea ce nu imbunatateste cu mult entropia ansamblului. Senzorul de proximitate in schimb furnizeaza valori care variaza destul de mult atunci cand masoara distante mai mari decat cele anticipate. Astfel, apar spike-uri si valori aleatoare cand acesta masoara o distanta foarte mare.

Github

Jurnal

  • 05.05-11.05: Documentare hardware
  • 12.05-15.05: Implementare si testare hardware
  • 19.05-22.05: Implementare software
  • 23.05: Testare modul Bluetooth

Bibliografie

pm/prj2025/fstancu/sabin.padurariu.txt · Last modified: 2025/05/30 07:18 by sabin.padurariu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0