113
- 0 - Elektronski fakultet u Nišu Katedra za elektroniku GENERATOR PSEUDO-SLUČAJNE BINARNE SEKVENCE (PRNG) Student: Miodrag Nedeljković 10741 Mentor: prof. dr Mile Stojčev

GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

  • Upload
    ngodan

  • View
    227

  • Download
    1

Embed Size (px)

Citation preview

Page 1: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 0 -

Elektronski fakultet u Nišu Katedra za elektroniku GENERATOR PSEUDO-SLUČAJNE BINARNE SEKVENCE (PRNG) Student: Miodrag Nedeljković 10741 Mentor: prof. dr Mile Stoj čev

Page 2: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 1 -

SADRŽAJ UVOD____________________________________________________________________2 I PSEUDO-SLUČAJNI BINARNI GENERATOR (PRNG)_________________________3 Uopšteno o PRNG-u _ _______________________________________________________3 Karakteristični polinomi______________________________________________________3 Primitivni polinomi _________________________________________________________3 Ne primitivni polinomi_______________________________________________________4 Oblast primene PRNG-a _____________________________________________________4 II IMPLEMENTACIJA PRNG-A ______________________________________________6 Fibonacci-jev metod implementacije____________________________________________6 Galois metod implementacije_________________________________________________10 III PIC16F877A_____________________________________________________________12 Osnovne karakteristike mikrokontrolera_________________________________________13 Arhitektura mikrokontrolera__________________________________________________13 Oscilator ________________________________________________________________14 Reset____________________________________________________________________17 Watchdog tajmer _________________________________________________________21 Prekidi __________________________________________________________________21 Tajmeri _________________________________________________________________22 Portovi _________________________________________________________________24 Organizacija memorije _____________________________________________________30 A/D konvertor ____________________________________________________________33 Periferijske jedinice ________________________________________________________35 IV PROGRAMIRANJE MIKROKONTROLERA _________________________37 Softver za PIC mikrokontrolere mikro-C________________________________________37 ALLPIC_________________________________________________________________38 Softver IC-prog ___________________________________________________________39 V SIMULACIJA PRNG-a PREKO MIKROKONTROLERA ___________ __________45 Blok šema________________________________________________________________45 Električna šema ___________________________________________________________46 Izgled pločice ____________________________________________________________47 Listing koda u µc-u ________________________________________________________48 Listing asemblerskog koda __________________________________________________51 VI LABORATORIJSKA VEŽBA _____________________________________________85 VII ZAKLJU ČAK___________________________________________________________87 VIII SPISAK AKRONIMA ____________________________________________________88 IX LITERATURA__________________________________________________________89 X PRILOZI_______________________________________________________________90 µC_____________________________________________________________________90 AllPic __________________________________________________________________92 PIC 16F877A____________________________________________________________95 MAX232 _______________________________________________________________104 Led____________________________________________________________________110 XI BIOGRAFIJA AUTORA __________________________________________112

Page 3: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 2 -

UVOD Ideja autora ovog rada je da se predstavi pseudo-slučajni binarni generator (PRNG) i da se izvrši simulacija PRNG pomoću mikrokontrolera. Ovaj rad je koncipiran iz nekoliko poglavlja koja svako za sebe čini jednu posebnu celinu i bez kojih bi bilo nemoguće ostvariti i razumeti ideju autora. U prvom poglavlju date su opšte smernice vezane za PRNG. Te smernice se uglavnom odnose na objašnjenja vezana za PRNG, pojašnjenja iz čega se sastoji PRNG kao i kratke teorije o karakterističnim, primitivnim i ne primitivnim polinomima čija primena u PRNG-u je od izuzetne važnosti. Kroz drugo poglavlje dati su metodi implementacije PRNG-a i to Fibonacci-jev i Galois metod. Treće poglavlje opisuje PIC16F877A mikrokontroler i to njegove najbitnije karakteristike. Programiranje mikrokontrolera je opisano u četvrtom poglavlju i tu je objašnjen način pisanja koda u µC-u za mikročipove mikrokontrolere kao i kompajliranje koda. Peto poglavlje sadrži simulaciju PRNG sa svim potrebnim objašnjenjima, opis praktičnih delova, i opis programiranja PIC16F877A mikrokontrolera pomoću programatora. U šestom poglavlju je definisana laboratorijska vežba za samostalan rad studenata gde će moći da se upoznaju sa PRNG-om i njegovim karakteristikama. Kroz sedmo poglavlje je dat kratak osvrt na najbitnije karakteristike PRNG-a. Osmo poglavlje čini spisak korišćene literature koja je potrebna za bolje upoznavanje problematike vezane za PRNG. I na kraju u devetom poglavlju je dat originalan opis za komponenete, hardver, i softver korišćen u izradi ovog seminarskog a koji daje proizvođač. U Nišu, 15. 06. 2008. godine

Page 4: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 3 -

I PSEUDO-SLUČAJNI BINARNI GENERATOR (PRNG) UOPŠTENO O PRNG-u Pseudo-slučajni binarni generator je generator pseudo slučajne sekvence koja se sastoji od binarnh brojeva (0 i 1). Skraćenica PRNG potiče od početnih slova engleskog naziva za ovaj generator koji glasi pseudo-random number generator. Najednostavniji i najčešći metod implementacije PRNG-a je pomoću pomeračkog registra sa linearnom povratnom spregom (linear feedback shift register-LFSR), tako da je svaki element izlazne sekvence linearna funkcija n prethodnih elemenata. LFSR je izgradjen od prostih pomeračkih registara sa dodatkom malog broja XOR kola (mali hardver, velika brzina) što ga čini veoma pogodnim za primene u ugradjenim sistemima. Kod generisan pomoću LFSR-a je u stvari pseudo slučajan zato što se posle isteka odredjenog vremenskog perioda slučajni brojevi (sekvenca) ponavljaju. Ovo je dobra osobina za odredjene primene, naročito tamo gde je potrebna ponovna upotreba iste slučajne sekvence. Bitna stvar kod implementacije je u upotrebi pomeračkog registra dovoljne dužine tako da se generisana sekvenca ponavlja posle isteka odredjenog, dugog, vremenskog perioda. Ovako kolo nam je potrebno gde god postoji potreba za primenu ponovljivih slučajnih podataka, male memorije, ograničenog vremena generisanja i drugih sličnih zahteva, gde generatori pravih slučajnih podataka nebi bili primenljivi. Praktični razlozi takođe ograničavaju primenu pravih slučajnih podataka a samim tim i generatora koji ih proizvode. KARAKTERISTIČNI POLINOMI Već je pomenuto da se PRNG sastoji od pomeračkog registra sa linearnom povratnom spregom (LFSR-a). Opet LFSR je sačinjen od prostih pomeračkih registara, sastavljenih od flip-flopova, i XOR kola preko kojih se zavaraju povratne sprege. Ako imamo n D flip-flopova, onda postoji mogućnost za postojanje n+1 povratne sprege. Izbor potrebnih povratnih sprega za LFSR od moguće n+1 opisuje se karakterističnim polinomom. Karakteristični polinom za LFSR sa n flip-flopova ima sledeću uopštenu formu: C01+C1X+C2X

2+...+Cn-2Xn-2+Cn-1X

n-1+CnXn

gde su koeficijenti Ci binarni koeficijenti (CiЄ(0,1)) i 1 znači da je odgovarajuća povratna sprega prisutna a 0 da ona ne postoji. Pošto se sa C01 i CnX

n opisuju ulaz i izlaz LFSR-a oni su prisutni u izrazu uvek. Ovako definisan polinom se može definisati i u drugom obliku i to preko binarne liste koeficijenata i liste eksponenata (stepena). Uzmimo na primer karakteristični polinom 1+X3+X4. Njegova odgovarajuća predsava pomoću binarne liste koeficijenata je C0 =1, C1=0, C2=0, C3=1, C4=1. Alternativna notacija binarne liste koeficijenata je (1, 0, 0, 1, 1). Ovaj polinom definisan preko liste eksponenata glasi (0, 3, 4). Napomenimo još jednom da su C0 i Cn uvek jednaki jedinici, jer predstavljaju ulaz i izlaz sistema, respektivno. Izostanak bilo kog od njih smanjuje stepen PRNG-a. PRIMITIVNI POLINOMI Primitivni polinomi su oni koji ne mogu biti prikazani kao proizvod dva ne trivijalna polinoma. Za bilo koji stepen polinoma postoji bar jedan primitivni polinom. Nalaženje ovih polinoma je teško pa se oni uglavnom koriste iz već postojećih tablica. U tabeli 1. su dati primitivni polinomi od stepena n=2 do stepena n=5. Primitivni polinomi uvek dolaze u paru. Ako je polinom primitivan onda je i njegov recipročan polinom primitivan.

Page 5: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 4 -

Tabela 1. Primitivni polinomi u polju sa dva elementa (0,1) do petog stepena n-stepen polinoma Primitivni polinomi 2 1+X+X2

3 1+X+X3; 1+X2+X3

4 1+X+X4; 1+X3+X4;

5 1+X2+X5; 1+X3+X5; 1+X+X2+X3+X5; 1+X+X3+X4+X5;

1+X2+X3+X4+X5; 1+X+X2+X4+X5 Na primer za polinom 1+X3+X4 njegov recipročni polinom je 1+X+X4, ili zapisan preko liste eksponenata (0, 1, 4). Nalaženje recipročnog polinoma je dosta lagano. Opet razmotrimo primer polinoma n=4 stepena koji glasi 1+X3+X4 ili dat preko binarne liste koeficijenata kao (1, 0, 0, 1, 1). Njegov recipročni polinom je (1, 1, 0, 0, 1). Znači za dobijanje recipročnog polinoma potrebno je samo izvršiti invertovanje koeficijenata, naravno izuzev zadnjeg i prvog koji su uvek prisutni i predstavljaju ulaz i izlaz. Napomenimo da se sve operacije odvijaju u matematičkom polju sa dva elementa (0, 1). Ovi polinomi su bitni zato što omogućavaju generisanje sekvenci najdužeg trajanja. LFRS stepena n ima 2n-1 mogućih karakterističnih polinoma a samo veoma mali broj njih je primitivan. Najjednostavniji primitivni polinomi su oni koji imaju samo još jedan dodatni Ci pored C0 i Cn a nazivaju se trinomi. Većina karakterističnih polinoma stepena n ima bar jedan primitivni trinom. Ovo je bitno iz razloga što oni omogućavaju najjednostavniju implementaciju PRNG-a sa najmanje XOR kola, a tako koriste najmanji mogući hardver za implementaciju. Za velike vrednosti stepena n polinoma, imamo previše mogućih primitivnih polinoma, pa iz te grupe trebamo odabrati onaj koji nam omogućava ispunjenje potrebnih zahteva, kao što je dužina sekvence, uz najmanji potreban hardver za implementaciju. Za testiranja i merenja obično se koriste polinomi nižih stepena od n=40. Recimo još i to da je u raznim tabelama primitivnih polinoma prikazan mali broj njih i da su u većini tabela uvek prisutne povratne sprege C0 i Cn izostavljene pa je potreban oprez pri njihovom korišćenju. NE PRIMITIVNI POLINOMI LFRS implementacija a samim tim i implementacija PRNG-a sa ne primitivnim polinomima nije mnogo u upotrebi sa izuzetkom LFSR-a koji sadrži samo trivijalne povratne sprege C0 i Cn a koji služi samo za ponavljanje inicijalne vrednosti iz registara. C0 i Cn su trivijalni u smislu da se podrazumeva da su stalno prisutni. Predhodna činjenica se koristi za inplementaciju jednostavnih generatora koji proizvode kratke uzorke podataka. Ovako dobijen generator se ne upotrebljava u testiranjima i merenjima. OBLAST PRIMENE PRNG-a Primena PRBS-a zasnovanog na LFSR-u je velika i prostire se kroz razne oblasti elektronike, kao što su: - kriptografija (sigurnosni sistemi,sigurnosno šifrovanje/dešifrovanje, šifrovanje/dešifrovanje podataka) - kompijuterska grafika (skremblovanje/deskremblovanje podataka,digitalno procesiranje podataka) - samotestiranje ugradjenih sistema-BIST (ček suma, testiranje veza u realnim uslovima, testiranje sistema u uslovima najgoreg slučaja) - detekcija greške i korekcija

Page 6: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 5 -

- navigacioni sistemi - CDMA mobilni komunikacioni sistemi - kompresija podataka i dr. Neke od navedenih primena su ilustrovane na slici 1.

Slika 1. Oblasti primene PRNG-a

Page 7: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 6 -

II IMPLEMENTACIJA PRNG-a U praksi postoje dve veoma jednostavne implementacije PRNG-a zasnovane na LFSR-u i to: - Fibonacci-jev metod implementacije i - Galois metod mplementacije Bilo koji od ova dva metoda je moguće implementirati i hardverski i softverski. Softverska implementacija, za praktične primene, nije mnogo popularna i ne koristi se sem u izuzetnim slučajevima. Za razliku od nje hardverska implementacija ova dva metoda se skoro isključivo koristi zato što je ona veoma jednostavna za sintezu na FPGA. FIBONACCI-jev METOD IMPLEMENTACIJE Fibonacci ˜1175-1250

Slika 2. Fibonacci i Fibonacci-jev princip implementacije

Fibonacci-jeva implementacija PRNG-a se sastji iz linearnog pomeračkog registra sa povratnom spregom. Ovaj registar je sačinjen od n D flip-flopova i na njega se priključuje n+1 povratna sprega. Mehanizam povratne sprege je realizovan na taj način što se izlazi D flip-flopa (koeficijenti Ci na slici 2) sprovode na ulaze XOR kola a izlaz XOR kola vraća na ulaz jednog od flip-flpova (najčešće prvog/zadnjeg). Ovo važi u slučaju korišćenja XOR kola sa n ulaza. U slučaju korišćenja dvoulaznih XOR kola izlazi sa D flip-flopova se takođe vode na ulaze XOR kola a izlazi XOR kola se vode na drugi ulaz prethodog XOR kola. LFSR, samim tim i PRNG realizovan ovim metodom radi na taj način da kada se taktuje sistem on provodi signal kroz registre sa prvog bita na sledeći bit veće težine. Slika 2. prikazuje princip fibonacci-jevog metoda implementacije. Prisustvo ili odsustvo povratne sprege opisano je tkz. generatorom polinoma odnosno polinomom što je opisano u prethodnom poglavlju. PRNG ima 2n mogućih stanja, međutim njegova primena je ograničena na maksimalnu dužinu od 2n -1 gde je n dužina PRNG-a odnosno broj flip-flopova. Stanje sa svim nulama je zabranjeno stanje ako se primenjuju XOR kola za povratnu spregu, a ako se primenjuji NXOR kola zabranjeno stanje je sa svim jedinicama. Tada se sistem zaključava u tom stanju i ne može doći do generisanja sekvence. Ipak stvarna dužina zavisi od izabranog polinoma a u slučaju kada nije implementiran primitivni polinom i od početnog stanja. Kada je primenjen primitivni polinom izbor različitog početnog stanja samo vremenski pomera sekvencu. Samo karakteristični polinomi koji su primitivni (u matematičkom smislu) omogućavaju da PRNG prođe kroz sva moguća stanja. Sekvenca dobijena primenom inverznog primitivnog polinoma je vremenski pomerena inače je ista u odnosu na sekvencu dobijenu primenom običnog primitivnog polinoma. Za bolje razumevanje kako se primitivnim polinomom implementira u hardver po Fibonacci-jevom principu razmotrimo primer polinoma petog stepena datog sa: 1+x2+x5 ili kao c0=1,c1=0,c2=1,c3=0,c4=0,c5=1, (1,0,1,0,0,1) ili kao (0,2,5).

Page 8: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 7 -

Pošto implementiramo PRNG pomocu polinoma petog stepena n=5, onda je dužina generatora sekvenci m=5, što znači da nam je potreban pomerački registar od 5 D flip-flopova za njegovu realizaciju (slika 3).

Slika 3. Primer Fibonacci-jeve implementacije polinoma petog stepena Dužina binarne sekvence, za ovaj primer je mb=2n_ 1=25_ 1=31. Binarna sekvenca se čita sa flip-flopa najveceg stepena a to je u ovom slučaju na izlazu Q5. Kao što se sa slike 3 vidi, za implementaciju ovog polinoma ulazi XOR kola su vezani na izlaz flip-flopa 2 (Q2) i izlaz flip-flopa 5 (Q5) a izlaz na ulaz prvog flip-flopa. Q5 je izlaz celog sistema a ulaz prvog flip-flopa je ulaz celog sistema. XOR kolo služi da promeni vrednost ulaznog bita (flip-flopa). Za generisanje povratne sprege koristili smo primitivni polinom petog stepena f(x)= 1+x2+x5 koji omogućava sekvencu najdužeg trajanja, bez ponavljanja. Iz sledeća dva primera uočimo šta nam to u polinomu određuje koliko nam je potrebno flip-flopova i XOR kola za implementaciju nekog polinoma. U tabeli 2 su date sekvence kroz koje prolazi PRNG za primer polinoma petog stepena. Kao inicijalno stanje je uzeto stanje sa svim jedinicama. Koje stanje dolazi sledeće zavisi od predhodnog stanja i položaja povratne sprege. Ako se povratna sprega ne menja u toku rada, sekvenca je potpuno određena. Kada se izlistaju svih 31 vrednosti ciklus se ponavlja. Specijalno stanje PRNG-a je kada imamo sve nule u registru. Kada je prisutno stanje sa svim nulama, nije moguće iz njega izaći pa se ono još naziva i zaključano stanje. To se dešava zato što XOR kolo na izlazu daje

f(x)=x +x +15 2

n pokazuje koliko je potrebno flip-flopova (pet)

+ pokazuje koliko nam je potreno xor kola (jedno)

ili u drugom slučaju:

f(X) =x +x +x +x + 18 6 5 4

osam flip-flopova

tri povratne sprege pored dve stalno prisutne na ulazu

i izlazu (tri dvoulazna xor ili jedno četvoroulazno)

Page 9: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 8 -

logičku nulu kada su mu svi ulazi na istoj logičkoj vrednosti. U normalnom radu ovo stanje treba onemogućiti. Sekvence dobijamo na Q1-Q5 a binarnu sekvencu čitamo na izlazu flip-flopa najvećeg stepena što kada se primeni na naš primer znači da je to na Q5. U zadnjoj koloni tabele 2 je data i decimalni ekvivalent vrednosti sekvence Q1-Q5 za određeni trenutak. Tabela 2. Sekvence kroz koje prolazi sistem realizovan Fibonacci-jevim metodom sa sledećim polinomom 1+x2+x5.

korak Q1Q2Q3Q4Q5 Q5 Decimalni ekvivalent 1 11111 poč.st. 1 31 početno st. 2 01111 1 15 3 00111 1 7 4 10011 1 19 5 11001 1 25 6 01100 0 12 7 10110 0 22 8 01011 1 11 9 00101 1 3 10 10010 0 18 11 01001 1 9 12 00100 0 4 13 00010 0 2 14 00001 1 1 15 10000 0 16 16 01000 0 8 17 10100 0 20 18 01010 0 10 19 10101 1 21 20 11010 0 26 21 11101 1 29 22 01110 0 14 23 10111 1 23 24 11011 1 27 25 01101 1 13 26 00110 0 6 27 00011 1 3 28 10001 1 17 29 11000 0 24 30 11100 0 28 31 11110 0 30 32 11111 ponovo 1 31ponovo 33 01111 1 15

Page 10: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 9 -

GALOIS METOD IMPLEMENTACIJE Evariste Galois 1811-1832

Slika 4. E. Galois i Galois princip implementacije

Galois implementacija PRNG-a, takođe, sadrži n D flip-flopova koji čine pomerački registar i n+1 povratnu spregu. Razlika u odnosu na Fibonacci-jevu implementaciju je u tome sto se povratna sprega sa izlaza zadnjeg flip-flopa u nizu dovodi na XOR kola koja se nalaze između ulaza i izlaza pojedinih susednih flip-flopova što je prikazano na slici 4. Galois implementacija koristi xor-ovanje unutrašnjih povratnih sprega. XOR kola kod ove implementacije se vezuju između svaka dva susedna flip-flopa na taj način što im se na jedan ulaz dovede izlaz zadnjeg flip-flopa u nizu, saglasno generatoru povratne sprege a na drugi ulaz im se dovodi izlaz flip-flopa koji mu predhodi, dok mu se izlaz vezuje na ulaz flip-flopa koji sledi. Prikaz ovog metoda dat je na slici 4. Prisustvo ili otsustvo povratne sprege je opisano generatorom polinoma na isti način kao u Fibonacci-jevom metodu. I ovde faktori Ci uzimaju vrednost CiЄ(0,1), kao kod Fibonacci-jevog metoda. Galois PRNG ima 2n mogućih stanja, međutim njegova primena je ograničena na maksimalnu dužinu od 2n -1 gde je n dužina PRNG-a odnosno broj flip-flopova. Stanje sa svim nulama je zabranjeno stanje ako se primenjuju XOR kola za povratnu spregu, a ako se primenjuji NXOR kola zabranjeno stanje je sa svim jedinicama. Tada se sistem zaključava u tom stanju i ne može doći do generisanja sekvence. Ipak stvarna dužina sekvence zavisi od izabranog polinoma a u slučaju kada nije implementiran primitivni polinom i od početnog stanja. Kada je primenjen primitivni polinom izbor različitog početnog stanja samo vremenski pomera sekvencu. Samo karakteristični polinomi koji su primitivni (u matematičkom smislu) omogućavaju da Galois PRNG prođe kroz sva moguća stanja. Sekvenca dobijena primenom inverznog primitivnog polinoma je vremenski pomerena inače je ista u odnosu na sekvencu dobijenu primenom običnog primitivnog polinoma. Za bolje razumevanje kako se primitivnim polinomom implementira u hardver po Galois principu razmotrimo primer polinoma petog stepena datog sa: 1+x2+x5 ili kao c0=1,c1=0,c2=1,c3=0,c4=0,c5=1, (1,0,1,0,0,1) ili kao (0,2,5). Pošto implementiramo PRNG pomocu polinoma petog stepena n=5, onda je dužina generatora sekvenci m=5, što znači da nam je potreban pomerački registar od 5 D flip-flopova za njegovu realizaciju (slika 5). Dužina binarne sekvence, za ovaj primer je mb=2n_ 1=25_ 1=31. Binarna sekvenca se čita sa flip-flopa najveceg stepena a to je u ovom slučaju na izlazu Q5. Kao što se sa slike 5 vidi, za implementaciju ovog polinoma jedan ulaz XOR kola je vezan na izlaz flip-flopa 2 (Q2) a drugi ulaz na izlaz flip-flopa 5 (Q5) a izlaz XOR kola je vezan na ulaz trećeg flip-flopa. Izlaz zadnjeg flip-flopa Q5 je takođe odveden i na ulaz prvog flip-flopa (izlaz/ulaz). Q5 je izlaz celog sistema a ulaz prvog flip-flopa je ulaz celog sistema. XOR kolo služi da promeni

Page 11: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 10 -

vrednost ulaznog bita (flip-flopa). I kod Galois implementacije za generisanje povratne sprege koristili smo primitivni polinom petog stepena f(x)= 1+x2+x5 koji omogućava sekvencu najdužeg trajanja, bez ponavljanja.

Slika 5. Primer Galois implementacije polinoma petog stepena

I ovde kao i kod Fibonacci-jevog metoda isti parametri polinoma kazuju koliko nam je potrebno flip-flopova i XOR kola, kao i gde se XOR kola vezuju pa ih nećemo ponovo razmatrati. Koje stanje dolazi sledeće zavisi od predhodnog stanja i položaja povratne sprege. Ako se povratna sprega ne menja u toku rada sekvenca je potpuno određena. Kada se izlistaju sve vrednosti, proces se ponavlja iz početka. Za naš primer to s dešava nakon 31 koraka. U tabeli 3 su date sekvence koje generiše Galois PRNG generisan sa polinomom iz gore navedenog primera. U tabeli je data i binarna generisana sekvenca koja se čita sa Q5 kao i decimalni ekvivalenti za vrednost svake sekvence. Početno stanje iz kojeg se kreće je stanje sa svim jedinicama. Slično kao i kod Fibonacci-jevog metoda i ovde je stanje sa svim nulama zaključano stanje i sistem ostaje u njemu sve dok se ne upišu druge početne vrednosti u registar (bilo koje ne nulto stanje). Pre nego što damo par poređenja Fibonacci-jevog i Galois metoda implementacije, recimo da se svaka Fibonacci-jeva implementacija PRNG može jednostavno transformisati u Galois PRNG. To se izvodi tako što se prvo otkače svi XOR ulazi, zatim se izvrši inverzija eksponenata (flip-flopova) ali ne i smer u kom teku podaci. Sada vežemo XOR ulaze u prethodne XOR izlaze (povratne sprege) i dovedemo na jedan ulaz XOR kola izlaz odgovarajućeg flip-flopa a na drugi ulaz XOR kola izlaz celog sisema, i to je sve. Koju implementaciju ćemo da koristimo je stvar ukusa. Fibonacci-jeva implementacija je koncepcijski lakša zato što se samo ulazni bit u pomeračkom registru menja pri promeni kloka. Međutim Galois implementacija se može koristiti pri većim frekvencijama. To je naročito izraženo gde imamo više XOR kola, zato što kod ove implementacije XOR kola nisu redno vezana, već se operacije izvršavaju paralelno. Recimo još i to da je sekvenca generisana sa ova dva metoda korišćenjem istog primitivnog polinoma različita, dok je binarni izlaz isti stim što je vremenski pomeren.

Page 12: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 11 -

Tabela 3. Sekvence kroz koje prolazi sistem reakizovan Galois metodom sa sledećim polinomom 1+x2+x5.

korak Q1Q2Q3Q4Q5 Q5 Decimalni ekvivalent 1 11111 poč.st. 1 31 2 11011 1 27 3 11001 1 25 4 11000 0 24 5 01100 0 12 6 00110 0 6 7 00011 1 3 8 10101 1 21 9 11110 0 30 10 01111 1 15 11 10011 1 19 12 11101 1 29 13 11010 0 26 14 01101 1 13 15 10010 0 18 16 01001 1 9 17 10000 0 16 18 01000 0 8 19 00100 0 4 20 00010 0 2 21 00001 1 1 22 10100 0 20 23 01010 0 10 24 00101 1 5 25 10110 0 22 26 01011 1 11 27 10001 1 17 28 11100 0 28 29 01110 0 14 30 00111 1 7 31 10111 1 23 32 11111ponov. 1 31 ponovo

Page 13: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 12 -

III PIC16F877A Većina današnjih mikrokontrolera je bazirano na Harvard arhitekturi, koja jasno definiše četiri osnovne komponente potrebne za ugrađen sistem. To uključuje CPU jezgro, memoriju za program (ROM, EPROM ili FLASH memoriju), memoriju za podatke (RAM), jedan ili više tajmera (podesive i watchdog tajmere), kao i I/O linije za komunikaciju sa eksternim periferijama i dopunskim resursima a sve to treba da bude smešteno u jedno integrisano kolo. Mikrokontroler se u osnovi razlikuje od opštenamenskog mikroprocesorskog čipa po tome što ga je izuzetno lako pretovoriti u radni kompjuter, sa minimumom eksternih čipova za podršku. Ideja je da se mikrokontroler isprogramira, postavi u ure-đaj za kontrolu, poveže na napajanje i stavi u funkciju. Mikrokontroler PIC16F877A firme Microchip predstavlja integraciju mikroprocesora (CPU), memorije i periferija, pa zato ne zahteva složeni eksterni hardver da bi se realizovao mikroračunarski sistem. Ovaj mikrokontroler je izrađen u CMOS tehnologiji sa ugrađenom FLASH i EEPROM memorijom za memorisanje programa i podataka. PIC16F877A ima tipičnu RISC arhtekturu. Ova arhitektura, kao što je poznato, karakteriše se manjim skupom instrukcija koje se brže izvšavaju od instrukcija kod CISC arhitekture. PIC16F877A se izrađuje u 40-to pinskom DIP kućištu i 44-ro pinskom QFP i PLCC kućištu. U ovom radu je korišen PIC16F877A sa 40 pinova u PID kućištu a prikazan je na slici 6.

Slika 6. Raspored pinova kod mikrokontrolera PIC16F877 u kućištu DIP40

Page 14: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 13 -

OSNOVNE KARAKTERISTIKE MIKROKONTROLERA -RISC mikroprocesor visokih performansi -35 instrukcija obima jedne reči -Radna frekvencija do 20 MHz -Trajanje taktnog intervala 200 ns, pri frekvenciji 20 MHz -Opkôd obima 14 bita -Harverski magacin sa osam nivoa -Tri načina adresiranja (direktno,indirektno i relativno) -Programska flash memorija kapaciteta 8 k X 14-bitnih reči -Memorije za podatke tipa RAM kapaciteta 368 X 8 bita -Memorije za podatke EEPROM tipa kapaciteta 256 X 8 bita -Prekidi (do 14 izvora prekida) -U/I portovi: A, B, C, D, E -Tri tajmera: Timer0 (TMR0): 8-bitni tajmer/brojač događaja

Timer1 (TMR1): 16-bitni tajmer/brojač događaja Timer2 (TMR2): 8-bitni tajmer/brojač događaja

-10-bitni 8-kanalni analogno-digitalni (A/D) konvertor -Serijska komunikacija: MSSP, USART -Paralelna komunikacija: PSP -Power-on Reset - reset pri uključenju napajanja (POR) -Power-up timer - unošenje kašnjenja nakon uključenja napajanja (PWRT) -Oscillator Start-up Timer - unošenje kašnjenja nakon stabilizovanja radne frekvencije oscilatora (OST) -Sleep mode - režim rada sa malim utroškom energije -Watchdog tajmer sa sopstvenim integrisanim RC oscilatorom za nezavisni rad -Izbor tipa oscilatora -Radni napon od 2V do 5.5V -Mala potrošnja energije:

<0.6 mA pri naponu od 3V i radnoj frekvenciji od 4 MHz 20µA pri naponu od 3V i radnom taktu od 32kHz <1µA u standby režimu rada.

ARHITEKTURA MIKROKONTROLERA Kao što je istaknuto, mikrokontroler PIC16F877A poseduje tipičnu RISC arhitekturu, koja je prikazana na slici 7. Arhitektura poseduje odvojene magistrale za podatke i programski kôd. Obim podataka je 8-bitni, dok je programski kôd 14-bitni. Moguće je protočno izvršenje (eng. pipelining). Sve instrukcije su istog obima (osim instrukcija grananja) i izvšavaju se za četiri taktna intervala. Dakle, ukoliko se koristi oscilator od 20 MHz, ciklus instrukcije traje 200 ns. Na slici 7 prikazani su gradivni blokovi mikrokontrolera PIC16F877A: -FLASH programska memorija – 8 k reči obima 14 bita -RAM (File Registers) – 368 bajtova -Aritmetičko-logička jedinica (ALU) -Akumulator (Working Register) -Hardverski magacin (STACK) organizivan u 8 nivoa -EPROM memorija podataka obima 256 bajtova -Višekanalni A/D konvertor, USART (univerzalni sinhroni i asinhroni primo-predajnik), tajmere, portove itd.

Page 15: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 14 -

Slika 7. Arhitektura mikrokontrolera PIC16F877A OSCILATOR Kod mikrokontrolera PIC16F877A postoje četiri konfiguracije oscilatora:

-RC Resistor/Capacitor -XT Crystal / Resonator -LP Low Power Crystal -HS High Speed Crystal / Resonator.

Page 16: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 15 -

Najjednostavnija varijanta je RC oscilator, a to je ilustrovano na slici 8. Ovakav pristup je ispravan u aplikacijama u kojima se ne zahteva precizna procena vremenskih intervala. Ovde ćemo naglasiti kako je moguće koristiti i interni RC oscilator, koji je integrisan u mikrokontroleru.

Slika 8. Povezivanje eksternog RC oscilatora Frekvencija oscilovanja zavisi ne samo od vrednosti Rext i Cext, već i od napona napajanja kao i radne temperature. Vrednost otpornika Rext treba da bude u opsegu od 3 KΩ do 100K KΩ. Izvan ovog opsega rad oscilatora nije stabilan i osetljiv je na spoljašne uticaje. Kondenzator Cext se može čak i izostaviti. Međutim, zbog stabilnosti preporučuje se vrednost oko 20pF. Na pinu OSC2/CLKOUT generiše se taktni impuls čija je perioda četiri puta veća od periode rada oscilatora. Kod vremenski kritičnih aplikacija treba ugrađivati kvarcni oscilator ili keramički rezonator. Vrednosti kondenzatora C1 i C2 (slika 9), treba da budu identične.

Slika 9. Povezivanje eksternog kvarca (LP, XT, HS)

Mikrokontroleru PIC16F877A može da se dovede i spoljašnji takt, što je prikazano na slici 10.

Slika 10. Dovođenje spoljašnjeg takta

Page 17: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 16 -

U Tabeli 4. dat je izbor vrednosti kondenzatora za različite vrednosti frekvencije kristalnog kvarca, dok je u Tabeli 5 predložen izbor vrednosti kondenzatora pri različitim vrednostima frekven-cije rezonatora. Na kraju ćemo istaći kako mikrokontroler PIC16F877A može da radi i na frekvenciji 32 kHz, kada ima izuzetno malu potrošnju.

Tabela 4. Izbor vrednosti kondenzatora za kvarcni kristal

Tabela 5. Izbor vrednosti kondenzatora za rezonator

Page 18: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 17 -

Pojasnimo sada odnos između takta i instrukcijskog ciklusa.Takt koji se dovodi na pin OSC1 oscilatora u mikrokontroleru deli se na četiri vremenski nepreklapajuća taktna signala nazvana Q1, Q2, Q3 i Q4. Skup ovih signala čine jedan instrukcijski ciklus . U zavisnosti od trenutka generisanja u okviru ciklusa instrukcija, taktni signali Q1-Q4 se koriste za sledeće namene:

Q1 - pribavljanje instrukcije iz programske memorije Q2 - dekodiranje naredbe iz prethodnog instrukcijskog ciklusa Q3 - izvršenje naredbe iz prethodna dva instrukcijska ciklusa Q4 - prenos opkôda naredbe pozvane u Q1 u instrukcijski registar. RESET Uloga Reseta je da sve registre mikrokontrolera dovede u početno stanje. Ako se mikrokontroler “blokira” , ili smo ga tek uključili, neophodno je da se resetuje. Kako bi se sprečilo slučajno dovođenje logičke ’0’ na MCLR, potrebno je da se ovaj pin preko otpornika (npr. vrednosti 10KΩ) poveže na pin napajanja Vdd (slika11). Postoji nekoliko tipova reseta kod mikrokontrolera PIC16F877A i to su:

-Power-on reset (POR) -MCLR Reset pri normalnom režimu radu -MCLR Reset prilikom SLEEP režima rada -WDT Reset pri normalnom radu -WDT Wake-up (“buđenje” iz SLEEP režima rada) -Brown-out Reset (BOR).

Page 19: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 18 -

Slika 11. Povezivanje MCLR pina na napajanje

Power-on reset (POR) impuls se generiše u samom kolu kada se detektuje porast napona napajanja (oko 1.2-1.7 V). Da bi se POR iskoristio, dovoljno je da MCLR pin priključimo na Vdd direktno ili preko otpornika (slika 11). Ukoliko je porast napona napajanja spor, neophodno je na MCLR postaviti spoljnje kolo za reset. Prikaz kola za POR reset je dat na slici 12.

Slika 12. Spoljašnje kolo za POR

Slika 13. Kolo za BROWN-OUT RESET (prva varijanta)

Interno POR kolo neće generisati reset signal kad napon napajanja padne ispod minimuma. Za situacije kada je moguća pojava BROWN-OUT-a (privremeni pad napona ispod minimalne vrednosti), neophodno je da se priključi spoljašnje Brown-out reset kolo, koje je prikazano na slici 13.

Page 20: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 19 -

Slika14. Kolo za BROWN-OUT RESET (druga varijanta)

Power-up Timer (PWRT) generiše impuls fiksne širine (nominalno 72 ms) od pojave impulsa POR-a. Za to vreme će mikrokontroler biti u reset stanju. Za ovaj vremenski period obezbeđuje se da napon napajanja dostigne nominalnu vrednost. Tajmeru PWRT dozvoljava se rad setovanjem PWRTE bita koji pripada konfiguracionoj reči u fazi programiranja čipa. PWRT se taktuje internim RC oscilatorom. Oscilator Start-up Timer (OST) obezbeđuje kasnjenje od 1024 taktnih intervala nakon isteka kvazistabilne periode PWRT-a (vidi Tabelu 6). Ovo obezbeđuje da kristalni oscilator ili rezonator startuju stabilnom frekvencijom. OST se aktivira samo kod XT, LP i HS režima rada i to pri: POR i “buđenju” iz SLEEP režima rada. Mikrokontroler PIC16F877A ima implementiran dvobitni statusni registar nazvan PCON (Power Control Register). Prvi bit nazvan POR setuje se kada se aktivira Power-on-Reset, a resetuje se kada se aktivira neki drugi reset. Drugi bit (BOR) kada je setovan ukazuje da je aktivno Brown-out stanje (nedozvoljena naponska stanja u napajanju mikrokontrolera), zbog kojeg takođe može da se aktivira reset.

Tabela 6. Kašnjenja OST-a

Power-up

Konfiguracija oscilatora

PWRT omogućen PWRT onemogućen

“Buđenje” iz SLEEP režima rada

XT, HS, LP 72 ms + 1024 Tosc

1024 Tosc 1024 Tosc

RC 72 ms - -

Stanja na kojima se postavljaju interni registri CPU-a nakon reseta zavisi od vrste reseta i režima rada u kojima se nalazi mikroprocesor (Sleep i normalni). Stanje nekih registara ostaje nedifinisano, neki zadržavaju svoje stanje, a ostali se postavljaju u unapred definisana stanja (vidi Tabele 7 i 8).

Page 21: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 20 -

Tabela 7. Postavljanje registara nakon reseta

Program Counter STATUS register

Power-on reset (POR) 000h 0001 1XXX

MCLR reset pri normalnom radu

000h

000U UUUU

MCLR reset prilikom SLEEP režima rada

000h

0001 0UUU

WDT Reset pri normalnom radu

000h

0000 1UUU

WDT Wake-up (buđenje iz SLEEP režima rada)

PC+1

UUU0 0UUU

Interrupt 004h UUU1 0UUU

Tabela 8. Postavljanje registara nakon reseta

Registar

Power-on reset

MCLR reset pri: - normalnom režimu - SLEEP mod WDT reset pri normalnom režimu

Buđenje iz SLEEP režima - interrupt - WDT time out

00h INDF ---- ---- ---- ---- ---- ----

01h TMR0 XXXX XXXX UUUU UUUU UUUU UUUU

02h PCL 0000 0000 0000 0000 PC+1

03h STATUS 0001 1XXX 000Q QUUU UUUQ QUUU

04h FSR XXXX XXXX UUUU UUUU UUUU UUUU

05h PORTA ---X XXXX ---U UUUU ---U UUUU

06h PORTB XXXX XXXX UUUU UUUU UUUU UUUU

08h EEDATA XXXX XXXX UUUU UUUU UUUU UUUU

09h EEADR XXXX XXXX UUUU UUUU UUUU UUUU

0Ah PCLATH ---0 0000 ---0 0000 ---U UUUU

0Bh INTCON 0000 000X 0000 000U UUUU UUUU

80h INDF ---- ---- ---- ---- ---- ----

81h OPTION 1111 1111 1111 1111 UUUU UUUU

82h PCL 0000 0000 0000 0000 PC+1

83h STATUS 0001 1XXX 000Q QUUU UUUU UUUU

84h FSR XXXX XXXX UUUU UUUU UUUU UUUU

85h TRISA ---1 1111 ---1 1111 ---U UUUU

86h TRISB 1111 1111 1111 1111 UUUU UUUU

88h EECON1 ---0 X000 ---0 Q000 ---0 UUUU

89h EECON2 ---- ---- ---- ---- ---- ----

8Ah PCLATH ---0 0000 ---0 0000 ---U UUUU

8Bh INTCON 0000 000X 0000 000U UUUU UUUU

Page 22: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 21 -

Legenda:

X (nepoznato stanje) U (nepromenjeno stanje) Q (stanje zavisi od uslova)- – (ne postoji fizički, čita se kao logička ‘0’).

WATCHDOG TAJMER

Watchdog timer (WDT) se taktuje nezavisanim RC oscilatorom koji radi čak i kad je zaustavljen rad glavnog oscilatora, u sleep režimu rada. Prekoračenje intervala brojanja WDT-a, prilikom nor-malnog rada, izaziva reset mikrokontrolera. Ako je mikrokontroler bio u sleep režimu rada, pre-koračenje tajmera će probuditi mikrokontroler i program će nastaviti sa normalnim radom. Isključi-vanje WDT-a se vrši resetovanjem WDTE bita u konfiguracionoj reči. Nominalno vreme WDT-a je 18 ms bez uptrebe preskalera. Ovo vreme može da varira od kola do kola, zbog temperature i slično. Ukoliko je potrebno duže vreme moze se WDT-u pridružiti preskaler sa faktorom deljenja do 1:128, tako da se vreme može produžiti do 2.3s. Instrukcije CLRWDT i SLEEP resetuju WDT. PREKIDI Mikrokontroler PIC16F877A podržava tehniku rada sa prekidima (eng. interrupts) i može da opsluži ukupno 14 izvora prekida, što internih, što eksternih. Napomenućemo kako svaki prekid ne poseduje sopstveni vektor-broj. Onog trenutka kada se prihvati zahtev za prekid, sledi izvršenje prekidnog programa počev od adrese 0x0004. Tada se programskim putem testira stanje markera, koji se postavljaju kada se aktivira odgovarajući prekid (interrupt flags polling). Kada se ustanovi koji je od uređaja zahtevao prekid, prelazi se na izvršenje odgovarajuće rutine za obradu tog prekida. Povratna adresa prekinutog programana čuva se automatski u hardverskom magacinu. Povratak iz prekidnog programa se vrši instrukcijom RETFIE. Upravljački registar INTCON se koristi za maskiranje prekida. Značenje pojedinih markera ćemo sada navesti:

-T0IF (INTCON:2) setuje (postavlja) se na prekoračenje TMR0 -INTF (INTCON:1) setuje se u slučaju da nastupi spoljni prekid na pinu RBO/INT -RBIF (INTCON:0) setuje se kada se dogodi promena stanja na nekom od pinova RB4-RB7 -PSPIF (PIR1:7) PSP marker bit koji se koristi u operaciji čitanja i upisa na PORTD, kada je on konfigurisan kao PSP -ADIF (PIR1:6) marker koji se koristi za vreme analogno-digitalne konverzije -RCIF (PIR1:5) marker koji označava da je prijemni bafer koji koristi USART blok, pun -TXIF (PIR1:4) marker koji pokazuje da je bafer za slanje podataka koji koristi USART prazan -SSPIF (PIR1:3) marker koji se koristi za rad sinhronog serijskog porta -CCP1IF (PIR1:2) marker koji koristi CCP1 blok -TMR2IF (PIR1:1) marker koji setuje TMR2 kada dođe do prekoračenja -TMR1IF (PIR1:0) marker koji setuje TMR2 kada dođe do prekoračenja -EEIF (PIR2:4) marker koji se setuje kada se završi upis u interni EEPROM -BCLIF (PIR2:3) marker koji koristi SSP blok kada je konfigurisan da radi u I2C master režimu -CCP2IF (PIR2:0) marker koji koristi CCP2 blok. Pored bita za dozvolu rada svih prekida General Interrupt Enable (GIE) i bita za dozvolu rada prekida generisanih od strane periferija (PEIE), ovom registru pripadaju i markeri prekida (eng. interrupt flags) i bitovi koji dozvoljavaju prekid koji izaziva Tajmer0 (TMR0), spoljašnji prekid na pinu RB0/INT i prekida porta B na promenu stanja. Osim ova tri osnovna prekida, postoji još 11 periferij-skih prekida. Bitovi za njihovu dozvolu nalaze se u registrima PIE1 i PIE2, a

Page 23: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 22 -

odgovarajući flegovi u registrima PIR1 i PIR2.Ovi se flegovi setuju čim se ispuni uslov prekida bez obzira na stanje njihovog bita dozvole, a po izvršenju servisne rutine potrebno ih je sostverski resetovati. TAJMERI U arhitekturi mikrokontrolera PIC16F877A su ugrađena tri tajmera (TMR0, TMR1 i TMR2) i njihov zadatak je da mere vreme i broje eksterne događaje. Svaki od pomenutih tajmera poseduje određene specifičnosti. TMR0 (Tajmer0) poseduje čitava familija PICmicro kontrolera. To je, zapravo, običan 8-bitni brojač koji generiše prekid pri prelasku sa stanja 0xFF na stanje 0x00 (overflow). Izvor takta za TMR0 može da bude bilo interni sistemski sat (frekvencije Fosc/4) ili bilo kakav spoljni generator takta spojen na pin RA4/T0CKI. Naravno, može da se podesi da se TMR0 inkrementira na rastuću ili opadajuću ivicu spoljašnjeg signala. U kombinaciji sa modulom Tajmera0 može da se koristi za programabilni preskaler (delilac frekvencije) sa odnosima deljenja od 1:2 do 1:256. Ako deljenje nije potrebno, preskaler se dodeljuje watchdog tajmeru. Kada je preskaler u upotrebi, maksimalna frekvencija eksternog izvora iznosi 50MHz. Na slici 15 prikazan je blokdijagram TMR0/WDT preskalera.

Slika 15. Blok-dijagram TMR0/WDT preskalera TMR1 je 16-bitni tajmer i može da radi kao brojač ili može da se koristi za merenje vremena. Blok-šema ovog tajmera data je na slici 16. TMR1 može da ima tri izvora takta: sistemski sat (Fosc/4), spoljašnji takt ili spoljašnji kristal. Brojač eksternih događaja može se sinhronizovati sa internim oscilatorom, a postoji i asinhroni način rada koji omogućava da se brojač inkrementira i u SLEEP režimu rada. Preskaliranje je moguće sa vrednostima deljenja 1:1, 1:2, 1:4 i 1:8.

Page 24: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 23 -

Slika 16. Blok-dijagram tajmera TMR1

TMR2 je 8-bitni tajmer sa programabilnim preskalerom i postskalerom. Može da bude tajmer ili brojač opšte namene. Međutim, potreban je CCP modulu prilikom generisanja PWM signala i modulu za sinhronu serijsku komunikaciju (SSP) kao Baud Rate generator. Zajedno sa TMR2 koristi se registar PR2 (Period Register). Kada se vrednost brojača izjednači sa vrednošću upisanom u registar PR2, generiše se odgovarajući prekid. Struktura TMR2 prikazana je na slici 17.

Slika 17. Blok-dijagram tajmera TMR2

Page 25: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 24 -

PORTOVI PIC16F877A poseduje pet portova (PORTA, PORTB, PORTC, PORTD i PORTE) i oni predtavljaju vezu njegove interne strukture sa spoljašnjim svetom. Svaki od njih može da se konfiguriše kao ulazni ili kao izlazni. Pomenuti portovi su različitog obima: -8-pinski (PORTB, PORTC, PORTD) -6-pinski (PORTA) -3-pinski (PORTE). Svakom pinu bilo kojeg porta, u zavisnosti od režima rada, mogu da se dodele fiksne ili promenljive funkcije. Konfiguracija smera prenosa ostvaruje se upisom na odgovarajuću bit poziciju u pripadajućem TRIS registru (0 - pin je izlazni, 1 – pin je ulazni). Svakom portu je dodeljen registar podataka (PORTX), preko kojeg se programski pristupa U/I pinovima. Upis u neki od tih registara iniciraće upis u latch tog porta, a njegovo čitanje rezultiraće čitanjem logičkih stanja direktno sa pinova. Sve instrukcije upisivanja su tipa read-modify-write . To znači da se pri upisu u port najpre očitaju stanja pinova, zatim izvrši modifikacija, a potom korigovana vrednost upiše u latch porta. Ne postoji velika razlika u konstrukciji pomenutih pet portova. Jedino se PortB od ostalih razlikuje zbog posebne opcije koju nude četiri MSB. Ukoliko se setuje bit RBIE u registru INTCON, svaka promena stanja na ovim pinovima, generisaće prekid mikrokontrolera. PortA PortA je 6-bitni (RA5-RA0) bidirekcioni port (podaci mogu da se šalju u oba smera). Sadržaj registra TRISA određuje smer (ulazni ili izlazni) pinova na portu. Blok-dijagrami za pin RA4 je prikazan na slici 18, a za ostale pinove na slici 19.

Slika 18. Blok-dijagram pina RA4

Page 26: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 25 -

Sada ćemo kroz nekoliko primera ilustrovati postavljanje smerova na portu:

-TRISA = 0b000000 (PORTA je izlazni) -TRISA = 0b111111 (PORTA je ulazni) -TRISA = 0b101000 (RA5 i RA3 pinovi su ulazni, a RA4, RA2, RA1 i RA0 su izlazni) -TRISA = 0b111000 (RA5-RA3 su ulazni, a RA2-RA0 su izlazni) itd.

Slika 19. Blok-dijagram pinova RA5, RA3-RA0

PortA ima mogućnost analogno-digitalne konverzije i prvenstveno se koristi u te svrhe. A/D konvertor, koji je integrisan u mikrokontroleru, je 10-bitni sa 8 ulaznih kanala, jer se u ove svrhe koriste i svi pinovi PortaE (i pinovi PortaA izuzev RA4). Pin RA4 je sa otvorenim drejnom i može da se iskoristi za ulazni takt za tajmer TMR0.

Page 27: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 26 -

Tabela 9. Funkcije PortaA i registri

U tabeli 9 dati su prikaz funkcija pojedinačnih pinova PortaA i registri koji se koriste za konfigurisanje porta.

Port B Port B je 8-bitni bidirekcioni port. Svakom pinu porta korespondira odgovarajući bit u registru TRISB, kojim se definiše smer. Svi pinovi unutar PortB poseduju pull-up otpornike. Ovi otpornici mogu da se uključe jednim kontrolnim bitom. To se postiže postavljanjem RBPU' bita na ‘0’. Pull-up otpornici se automatski isključuju kada se pin konfiguriše kao izlazni. Otpornici su isključeni i kod Power-on reseta. Četiri pina na PORTB (RB7-RB4) imaju mogućnost generisanja prekida. Samo pinovi koji su definisani kao ulazni mogu da prouzrokuju prekid. Kombinacija prekida na promenu stanja PortaB i pull-up otpornik mogu se iskoristiti kao jednostavan interfejs za tastaturu. Na slikama 20 i 21 prikazana je struktura PORTB.

Page 28: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 27 -

Slika 20. Blok-dijagram pinova RB3-RB0

Slika 21. Blok-dijagram pinova RB7-RB4

Page 29: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 28 -

U tabeli 10 dati su prikaz funkcija pojedinačnih pinova PortaB i registri koji se koriste za konfigurisanje porta.

Tabela 10. Funkcije PortaB i registri

Port C Port C je 8-bitni bidirekcioni port. Posebnost ovog porta se ogleda u tome što poseduje ugrađen USART modul, koji služi za serijsku komunikaciju (npr. sa racunarom ili drugim mikrokontrolerom). Modulu se pristupa preko pinova RC7 i RC6. Pinove treba softverski konfigurisati da budu u funkciji USART modula. Na Slikama 22 i 23 prikazana je struktura PortaC, dok je funkcionalna tabela registara koji se koriste za konfigurisanje samog porta data u tabeli 11.

Page 30: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 29 -

Slika 22. Blok-dijagram pinova RC7-RC5, RC2-RC0

Slika 23. Blok-dijagram pinova RC7-RC5, RC2-RC0 Tabela 11. Funkcije PortaC i registri

Page 31: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 30 -

Portovi D i E

Port D je 8-bitni bidirekcioni port. Ovaj port može da se konfiguriše kao 8-bitni paralelni mikroprocesorski port (parallel slave port-PSP) i to podešavanjem konfiguracionog bita PSPMOTE (TRISC<4>). U ovom režimu rada ulazni bafer je TTL tipa. Port E je bidirekcioni veličine 3 bita. Ima mogućnost A/D konverzije.Ulazni bafer je tipa Schmitt Trigger. Pinovi mogu da se konfigurišu kao digitalni ili analogni, kao i u slučaju PortaA, o čemu je već bilo reči. ORGANIZACIJA MEMORIJE Memorije mikrokontrolera čine tri odvojene celine:

-Programska memorija -Memorija podataka -EEPROM memorija podataka. Inače, u mikrokontroleru postoji i stack (magacin), koji radi na principu cikličnog bafera, što znači da se u njega mogu staviti osam različitih adresa, dok se sa upisom devete adrese briše prva i tako redom. Programski se ne može utvrditi da li je došlo do prepunjeja stack-a. Programska memorije PIC16F877A poseduje 13-bitni programski brojač (PC) koji je u mogućnosti da adresira memorijski prostor od 8K programskih reči od 14 bita. Reset vektor je 0x0000 i od njega počinje izvršavanje programa. Prekidni (eng. interrupt) vektor je 0x0004. Mapa programske memorije i magacin prikazani su na slici 24. Organizacija memorije podataka

Page 32: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 31 -

Memorija za podatke je podeljena u više banki (banks), a sastoji se od registara opšte namene (General Purpose Registers) i registara specijalne funkcije (Special Function Registers). U jednom od specijalnih registara, tzv. STATUS registru postoje dva bita RP1 i RP0 koji služe za izbor željene banke podataka po principu prikazanom na slici 25. Svaka banka može da sadrži do 128 registara (0x7F). Niže lokacije u banci zauzimaju specijalni registri, a ostatak prostora popunjavaju registri opšte namene implementirani kao statički RAM. Neki specijalni registri koji se često koriste mapirani su u sve banke da bi se omogućio brzi pristup i redukcija kôda. Mapa registara mikrokontrolera PIC16F877 prikazana je na slici 26. Nekoliko specijalnih registara su registri jezgra, uskopovezani sa funkcionisanjem mikroprocesora kontrolera. Ostali registri su vezani za periferne module i služe za njihovo upravljanje i kontrolu statusa. Programski brojač (PC) određuje adresu naredne instrukcije u programskom flash-u. U pitanju je 13-bitni registar. Simboličko ime nižeg bajta je PCL. To je registar u koji se može i upisivati i iščitavati. Viših pet bita programskog brojača smešteni su u izolovani registar PCH kojem se pristupa samo preko latch-a PCLATH, mapiranom u internom RAM-u na adresi 0x0A.

Slika 24. Mapa programske memorije i stack

Slika 25. Izbor željene banke preko bitova RP0 i RP1

Page 33: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 32 -

STATUS registar je veoma bitan i zato je predviđeno da se može adresirati iz bilo koje banke. On pokazuje status aritmetičko-logičke jedinice, reset status mikrokontrolera i sadrzi bite za selekciju banki internog RAM-a. Od navedenih flegova posebno treba izdvojiti Zero bit (Z), koji se postavlja kad je rezultat aritmetičke operacije jednak nuli i bit prenosa/pozajmice Carry (C). Registar OPTION_REG se koristi za konfiguraciju preskalera za TMR0 ili Watchdog, za upravljanje TMR0, selekciju ivice okidanja eksternog prekida, i za omogućavanje Pull-up otpornika na PortaB. Kada je reč o registrima jezgra, ne treba zaboraviti par FSR (File Select Register) i INDF (Indirect File), koji služe za indirektno adresiranje memorije podataka. Bilo koja instrukcija koja se obraća INDF registru predstavlja indirektan pristup onoj lokaciji internog RAM-a čija je adresa trenutno u registru FSR.

Slika 26. Mapa registara mikrokontrolera PIC16F877

Page 34: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 33 -

Interni EEPROM za podatke Ukoliko je potrebno sačuvati neke podatke i nakon ukidanja napajanja mikrokontrolera, treba ih prethodno zapisati u interni EEPROM. Ova memorija je obima 256 bajtova. A/D KONVERTOR Svi signali u prirodi su kontinualni, a veoma teško je upravljati nekim procesom bez digitalizacije analognih veličina. Kao što je napomenuto, PORTA i PORTE imaju mogućnost A/D konverzije što podrazumeva da se mogu konfigurisati kao analogni ili digitalni. Da bi se iskoristio 10-bitni A/D konveror integrisan u mikrokontroleru, neophodno je podesiti registre ADCON0 i ADCON1. U tabelama 12 i 13 dati su prikazi pomenutih registara. Inače, registar ADCON0 služi za podešavanje A/D konverzije (frekvencije odabiranja konvertora, kanal koji se koristi za konverziju, početak konverzije i uključivanje modula za konverziju). Registrom ADCON1 određuje se uloga pojedinih pinova (analogni ili digitalni). Modul za A/D konverziju se bazira na sa sukcesivnoj aproksimaciji.

Tabela 12. Registar za podešavanje A/D konverzije

Tabela 13. Registar za podešavanje tipa kanala (analogno-digitalni)

Page 35: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 34 -

Blok-dijagram A/D konvertora mikrokontrolera PIC16F877A prikazan je na slici 24. Algoritam A/D konverzije 1. Konfiguracija A/D konvertora (preko ADCON0 i ADCON1) 2. Konfigurisanje A/D prekida ukoliko se zahtevaju (ADIF, ADIE, PEIE, GIE) 3. Čekanje da prođe zahtevano akviziciono vreme 4. Početak procesa A/D konverzije 5. Završetak procesa A/D konverzije 6. Čitanje rezultata A/D konverzije iz registra ADRES 7. Za sledeću konverziju, skočiti na korak 1 ili korak 2.

Page 36: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 35 -

Slika 24. Blok-dijagram A/D konverrota PERIFERNE JEDINICE Mikrokontroler PIC16F877 poseduje nekoliko korisnih periferijskih modula. S obzirom da mikrokontroler treba da razmenjuje podatke sa ostalim komoponentama (registrima, memorijama, drugim mikrokontrolerima itd.) u tu svrhu je opremljen sa tri hardverska komunikaciona modula. Prvi od njih je SSP modul (Synchronous Serial Port), koji služi za komunikaciju sa serijskim EEPROM-ima, pomeračkim registrima, displej-drajverima itd. Ovaj modul može da radi u jednom od dva režima:

-Serial Peripheral Interface (SPI) -Inter-Integrated Circuit (I2C).

Drugi serijski komunikacioni modul je USART (Universal Synchronous Asynchronous Receiver Transmiter). On uglavnom služi za povezivanje sa personalnim računarom, mada to nije jedina njegova mogućnost primene.

Page 37: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 36 -

USART može da se konfiguriše u neki od sledećih režima rada: -Asinhroni rad (full duplex) -Sinhroni master rad (half duplex) -Sinhroni slave rad (half duplex). Osim serijskih, postoji i jedan paralelni komunikacioni modul. U pitanju je modul PSP (Parallel Slave Port). Njegov zadatak je da PIC16F877 direktno poveže na 8-bitnu magistralu podataka drugog mikroprocesora. Eksterni mikroprocesor tada, preko linija Read (RD) i Write (WR) može da čita i upisuje u registar PortD kao u svaki drugi 8-bitni latch.

Page 38: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 37 -

IV PROGRAMIRANJE MIKROKONTROLERA SOFTVER ZA MIKROKONTROLERE-µC µC prestavlja moćan softverski alat, koji je razvila beogradska Mikroelektronika, i namenjen je pisanju kôda za Microchip-ove PIC mikrokontrolere. Koristeći µC, programeru je omogućen jednostavan način da kontroliše proces programiranja i napravi kvalitetan firmware. Osnovne karakteristike programa µC su sledeće: -Pisanje C kôda korišćenjem kvalitetnog editora, što se ogleda automatskom kontrolom i upozorenjima vezanim za sintaksu kôda, korišćenih parametara, kao i automatskoj korekciji pojedinih grešaka -Preglednost strukture programa (kôda), promenljivih i funkcija omogućava Code explorer -Jasan asemblerski kôd i standardna kompatibilnost generisanih HEX datoteka toka programa preko ugrađenog debagera (debugger) -Programer ima na raspolaganju veliki broj integrisanih biblioteka i rutina, koje značajno ubrzavaju pisanje programa -Detaljan izveštaj i grafičko predstavljanje RAM i ROM mape, statistike kôda i slično. Moramo da napomenemo kako µC odstupa od ANSI standarda u nekoliko segmenata. Neka odstupanja su načinjena su u cilju da se olakša programiranje, dok su druge rezultat hardverskih ograničenja PIC mikrokontrolera. Pomenućemo neke specifičnosti: -Rekurzivne funkcije (function recursion) su podržane sa izvesnim ograničenjima, koja su posledica nešto složenijeg pristupa magacinu (stack) i ograničenja vezana za memoriju -Pokazivači (pointers) promenljivih i pokazivači konstanti nisu kompatibilni, tj. nije moguća međusobna dodela ili upoređivanje -µC tretira označavanje const kao “true constans” (kod C++), što omogućava korišćenje const objekta na mestima gde ANSIC očekuje constant izraz .Ukoliko se teži ka prenosivosti programa, treba koristiti tradicionalno pretprocesorsko definisanje konstanti -µC dozvoljava C++ stil jednolinijskih komentara, koristeći dve kose crte (//). Komentar može da počne bilo gde i traje do sledeće nove linije programskog kôda -Brojne standardne C biblioteke (ctype, math, stdlib, string ) implementirane su u µC, uz individualna odstupanja. Napominjemo da µC podržava gotovo sve PIC mikrokontrolere serija 12, 16 i 18. Izuzetak su mikrokontroleri koji imaju staro hardversko jezgro kao na primer PIC12C508, PIC12F508, PIC12C509, PIC12F509 itd. Inače, ograničena verzija (do 2KB programa) može da s preuzme sa sajta Mikroelektronike (www.mikroe.com). U sličaju ako se želi potpuna verzija (neograničen kapacitet programa), mora da se plati licenca od 250$. Izgled editora po po startovanju programa µC je dat na sledećoj slici (slika 25).

Page 39: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

- 38 -

Slika 25. Izgled editora po startovanju programa µC ALLPIC Da bi se heksadecimalni kôd dobijen iz kompilatora/kompajlera (eng. compiler) upisao u mikrokontroler, neophodno je posedovati programator. Programator čine dve celine: bootstrap loader (hardverski deo) i softver (za programiranje firmware-a). Uloga bootstrap loader-a je da transformiše naponske nivoe porta (DB9, DB25 ili USB) na nivoe standardne logike, dok je uloga softvera da upiše heksadecimalni kôd u programsku (najčešće: EPROM ili flash) memoriju mikrokontrolera. Za potrebe ovog rada korišćeni su bootstrap loader ALLPIC i softver IC-Prog. Električna šema bootstrap loader-a, čiji je autor Danijel Dabić, prikazana je na slici 26, a izgled pločice i gotov uređaj na slikama 27 i 28, respektivno. U ovom poglavlju nećemo opisivati loader ALLPIC, s obzirom da se kompletan članak nalazi u poglavlju PRILOZI.

Slika 26. Električna šema ALLPIC bootstrap loader-a

Page 40: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

39

Slika 27. Izgled štampane pločice ALLPIC-a

Slika 28. Izgled ALLPIC-a SOFTVER IC-PROG Za programiranje mikrokontrolera PIC16F877A može da se koristi softver IC-Prog. Inače, ovaj softver je kompatibilan sa mnogim bootstrap loader-ima, kao što su JDM Programmer, TAFE Programmer, TAIT Programmer, Conquest Programmer, ProPIC 2 Programmer itd. ICProg poseduje mogućnost čitanja, upisa i verifikacije (Read, Write, Verify) sadržaja mikrokontrolera. Naravno, softver dozvoljava mogućnost podešavanja parametara (WDT, PWRT, BODEN, LVP, CPD, CO, Debugger), kao i izbor oscilatora (RC, LP, XT, HS). Program IC-Prog se ne instalira na računaru, već se pokreće direktno – tačnije, klikom na fajl ICPROG.EXE (slika 29).

Slika 29. Pokretanje softvera IC-Prog Ako programer ima računar sa verzijom Windows-a «višom» od Windows-a 98, odmah po startovanju programa IC-Prog na ekranu će se pojaviti prozor sa upozorenjem, koji je prikazan na slici 30. Razlog je što su kod svih Windows-a sa platformom NT zaštićeni portovi. Zbog toga je neophodno da se instalira odgovarajući drajver.

Slika 30. Upozorenje prilikom pokretanja programa

Page 41: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

40

Korak 1. Instaliranje drajvera Ulaskom u podmeni Misc, koji se nalazi u meniju Options, ostvaruje se instaliranje/uključivanje drajvera icprog.sys (Settings → Options → Misc: √ Enable 2000/NT/XP), što je ilustrovano na slici 31. Na taj način omogućava se pristup serijskom portu računara. Isto tako, neophodno je da se prioritet programiranja postavi ili na High ili na Realtime, a nikako na Normal. Ovo potonje je veoma bitno. Naime, program po startovanju automatski podesi normalan prioritet i ukoliko se ne promeni na High ili Realtime, računar ne može da pristupi PIC mikrokontrolerima preko serijskog porta.

Slika 31. Uključivanje drajvera i prioriteta

Page 42: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

41

Slika 32. Podešavanje parametara programa

Korak 2. Podešavanje hardverskih parametara Nakon što je instaliran/uključen drajver, program će se restartovati i ponudiće opciju podešavanja hardverskih parametara, koji treba da budu postavljeni kao na slici 32. IC-Prog ima sličnu konfigura-ciju kao JDM Programmer, signali su bez inverzije dok se komunikacija obavlja preko, na primer, serijskog porta COM2. Ako računar ima samo jedan serijski port, podrazumeva se da je to COM1. Korak 3. Izbor mikrokontrolera i učlitavanje kôda u bafer programa Najpre treba izabrati mikrokontroler PIC16F877A (obeleženi padajući meni u gornjem desnom uglu osnovnog prozora programa), a potom učitati heksadecimalni kôd klikom na opciju Open File iz menija File - što je ilustrovano na slikama 33, 34 i 35. (Napomena: Heksadecimalni kôd se dobija kompilacijom programa koji je napisan na nekom višem programskom jeziku (C, Pascal, Basic itd.) ili na asembleru. Viši programski jezici za mikrokontrolere imaju izvesne specifičnosti u odnosu na stan-dardne programske jezike, ali ovde te specifičnosti neće biti razmatrane.)

Page 43: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

42

Slika 33. Upisivanje/učitavanje kôda u bafer programa

Slika 34. Upisivanje/učitavanje fajla projekat.hex koji sadrži kôd

Page 44: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

43

Korak 4. Programiranje mikrokontrolera Ulaskom u meni Command i startovanjem opcije Program All (slika 35). Zapravo, proces programiranja podrazumeva da se sadržaj bafera programa (slika 34) upiše u flash memoriju našeg mikrokontrolera. Naravno program će postaviti pitanje, tj. mogućnost da se izabere da li da otpočne proces programiranja ili da se od njega odustane (slika 36). Ukoliko se izabere programiranje, program će obrisati prethodni sadržaj flash memorije mikrokontrolera i u nju “prepisati” sadržaj bafera programa, čiji se jedan deo vidi na slici 35. Napredak proces programiranja, a potom i verifikacije programiranja je ilustrovan na slici 37. Ukoliko je proces uspešno okončan, na ekranu će se pojaviti prozor kao na slici 38 u suprotnom, izgled prozora će biti kao na slici 39.

Slika 35. Startovanje programiranja mikrokontrolera PIC16F877A

Page 45: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

44

Slika 36. Mogućnost da se prekine proces programiranja

Slika 37. Proces programiranja, a zatim i verifikacije

Slika 38. Poruka nakon uspešnog programiranja

Slika 39. Poruka nakon neuspešnog programiranja

Page 46: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

45

V SIMULACIJA PRNG-a PREKO MIKROKONTROLERA

Na Slici 40 je prikazana blok šema PRNG-a (Pseudo-slučajni generator sekvenci). Kao što se vidi, PRNG je simuliran preko PIC16F877 (ovde radi na frekvenciji 4MHz). Omogućena je serijska veza mikrokontrolera sa PC računarom, a za konverziju naponskih nivoa (RS232C-TTL i obrnuto) koristi se interfejsno IC MAX232. Cela elektronika se napaja sa naponom 5V, koji se obezbeđuje preko stabilizator napona L7805 (u kućištu TO-220).

Električna šema je prikazano na Slici 42, dok je izgled štampane ploče dat na Slici 44.

Slika 40. Blok-šema PRNG-a realizovanog sa mikrokontrolerom PIC16F877

Definisanje stanja logičkih nula i jedinica preko tropoložajnih prekidača je prikazano na

slici 41. Dakle, krajnji položaji definišu logičku 1, a srednji – logičku 0.

Slika 41.Definisanje stanja logičkih nula i jedinica preko tropoložajnih prekidača

Page 47: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

46

12

DC POWER

C3

220uF

C4

220nF

C1

220uF

D8 1N4007

C2

2.2nF

MCLR1

PA02

PA13

PA24

PA35

PA46

PA57

RD8

WR9

PC217

PD2 21PD322PC4 23PC5 24

PC6 25PC7 26PD4 27PD5 28PD6

29PD7 30CS10

VDD11

VSS12

OSC113

OSC214

PC015

PC116

PC318

PD019

PD120

VSS 31VDD 32PB0 33PB1 34PB2 35PB3

36PB4 37PB5 38PB6 39PB7 40

IK2

PIC16F877-04

C5

22pF

C6

22pF

Qu1

4MHz

T1

D10

LED

D11

LED

D13

LED

D14

LED

D15

LED

D16

LED

D17

LED

D12

LED

D0

LED

D1

LED

D2

LED

D3

LED

D4

LED

D5

LED

D6

LED

D7

LED

T2

1 2 3 4 5 6 7 8

9

ON1

ResPack_2K2

1 2 3 4 5 6 7 8

9

ON2

ResPack_8x2K2

C1+1 Vcc 16

V+2 Gnd 15

C1-3 T1out 14

C2+4

R1in13

C2-5 R1out 12

V-6 T1in 11

T2out7 T2in 10

R2in8 R2out 9

IK3

MAX232

162738495

DB9/F

C11220nF

C10

220n

F

C8

220nF

C9

220n

F

C7220nF

Vin1

Gn

d2

Vout 3IK1

LM7805

12345678

9ON3

ResPack_8x1K5

12345678

9ON4

ResPack_8x1K5

1 2 3 4 5 6 7 80 0 0 0 0

11

10

9

0 0 0 0 00

P1

NP11

Slika 42. Električna šema PRNG-a realizovanog sa mikrokontrolerom

Funkcije prekidača, tastera i LED su prikazani su na Slici 43.

Slika 43. Raspored prekidača, taster i LED

Page 48: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

47

Slika 44. Štampana ploča PRNG-a realizovanog sa mikrokontrolerom

Page 49: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

48

PROGRAM U mikroC-u unsigned short k, DD, X, Y = 0; // Definisanje varijabli void main() TRISA = 0b111111; // Definisanje i inicijalizacija PORTA = 0b000000; // pinova PORTOVA A, B, C, D, E TRISB = 0b00000000; PORTB = 0b00000000; TRISC = 0b10111111; PORTC = 0b00000000; TRISD = 0b00000000; PORTD = 0b00000000; TRISE = 0b000; CMCON = 7; ADCON1 = 0x06; // Definisanje pinova A porta kao // digitalnih // Zadavanje polinoma PORTD.F0 = PORTA.F1; PORTD.F1 = PORTA.F2; PORTD.F2 = PORTA.F3; PORTD.F3 = PORTA.F4; // Pocetna stanja PORTD.F4 = PORTA.F5; DD.F0 = PORTA.F5; PORTD.F5 = PORTC.F0; DD.F1 = PORTC.F0; PORTD.F6 = PORTC.F1; DD.F2 = PORTC.F1; PORTD.F7 = PORTC.F2; DD.F3 = PORTC.F2; PORTB.F5 = PORTC.F3; PORTB.F4 = !PORTC.F3; do // Galois 2. stepen while (PORTC.F5==0 && PORTC.F4==1 && PORTC.F3 == 0) PORTB.F7 = PORTC.F5; PORTB.F6 = PORTC.F4; if (PORTA.F0==1) k = 0; if ((PORTA.F0==0)&& (k==0)) delay_ms(250); k=1; PORTB.F0 = DD.F0; PORTB.F1 = DD.F1; Y.F0 = PORTB.F1;

Page 50: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

49

X.F0 = PORTD.F0 && Y.F0; DD.F0 = Y.F0; DD.F1 = (PORTB.F0 && !X.F0)||(!PORTB.F0 && X.F0); // Galois 3. stepen while (PORTC.F5==1 && PORTC.F4==0 && PORTC.F3 == 0) PORTB.F7 = PORTC.F5; PORTB.F6 = PORTC.F4; if (PORTA.F0==1) k = 0; if ((PORTA.F0==0) && (k==0)) delay_ms(250); k=1; PORTB.F0 = DD.F0; PORTB.F1 = DD.F1; PORTB.F2 = DD.F2; Y.F0 = PORTB.F2; X.F0 = PORTD.F0 && Y.F0; X.F1 = PORTD.F1 && Y.F1; DD.F0 = Y.F0; DD.F1 = (PORTB.F0 && !X.F0)||(!PORTB.F0 && X.F0); DD.F2 = (PORTB.F1 && !X.F1)||(!PORTB.F1 && X.F1); // Galois 4. stepen while (PORTC.F5==1 && PORTC.F4==1 && PORTC.F3 == 0) PORTB.F7 = PORTC.F5; PORTB.F6 = PORTC.F4; if (PORTA.F0==1) k = 0; if ((PORTA.F0==0) && (k==0)) delay_ms(250); k = 1; PORTB.F0 = DD.F0; PORTB.F1 = DD.F1; PORTB.F2 = DD.F2; PORTB.F3 = DD.F3; Y.F0 = PORTB.F3; X.F0 = PORTD.F0 && Y.F0; X.F1 = PORTD.F1 && Y.F1; X.F2 = PORTD.F2 && Y.F2; DD.F0 = Y.F0; DD.F1 = (PORTB.F0 && !X.F0)||(!PORTB.F0 && X.F0); DD.F2 = (PORTB.F1 && !X.F1)||(!PORTB.F1 && X.F1); DD.F3 = (PORTB.F2 && !X.F2)||(!PORTB.F2 && X.F2); // Fibonacci 2. stepen while (PORTC.F5==0 && PORTC.F4==1 && PORTC.F3 == 1)

Page 51: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

50

PORTB.F7 = PORTC.F5; PORTB.F6 = PORTC.F4; if (PORTA.F0==1) k = 0; if ((PORTA.F0==0) && (k==0)) delay_ms(250); k = 1; PORTB.F0 = DD.F0; PORTB.F1 = DD.F1; X.F0 = PORTD.F0 && PORTB.F0; X.F1 = PORTD.F1 && PORTB.F1; DD.F0 =(X.F0 && !X.F1)||(!X.F0 && X.F1); DD.F1 = PORTB.F0; // Fibonacci 3. stepen while (PORTC.F5==1 && PORTC.F4==0 && PORTC.F3 == 1) PORTB.F7 = PORTC.F5; PORTB.F6 = PORTC.F4; PORTB.F3 = 0; if (PORTA.F0==1) k = 0; if ((PORTA.F0==0) && (k==0)) delay_ms(250); k = 1; PORTB.F0 = DD.F0; PORTB.F1 = DD.F1; PORTB.F2 = DD.F2; X.F0 = PORTD.F0 && PORTB.F0; X.F1 = PORTD.F1 && PORTB.F1; X.F2 = PORTD.F2 && PORTB.F2; X.F4 = (X.F0 && !X.F1)||(!X.F0 && X.F1); DD.F0 =(X.F4 && !X.F2)||(!X.F4 && X.F2); DD.F1 = PORTB.F0; DD.F2 = PORTB.F1; // Fibonacci 4. stepen while (PORTC.F5==1 && PORTC.F4==1 && PORTC.F3 == 1) PORTB.F7 = PORTC.F5; PORTB.F6 = PORTC.F4; if (PORTA.F0==1) k = 0; if ((PORTA.F0==0) && (k==0)) delay_ms(250); k = 1; PORTB.F0 = DD.F0; PORTB.F1 = DD.F1; PORTB.F2 = DD.F2; PORTB.F3 = DD.F3; X.F0 = PORTD.F0 && PORTB.F0;

Page 52: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

51

X.F1 = PORTD.F1 && PORTB.F1; X.F2 = PORTD.F2 && PORTB.F2; X.F3 = PORTD.F3 && PORTB.F3; X.F4 = (X.F0 && !X.F1)||(!X.F0 && X.F1); X.F5 = (X.F2 && !X.F3)||(!X.F2 && X.F3); DD.F0 =(X.F4 && !X.F5)||(!X.F4 && X.F5); DD.F1 = PORTB.F0; DD.F2 = PORTB.F1; DD.F3 = PORTB.F2; // "Brisanje" stanja PORTD = 0; PORTB = 0; DD = 0; X = 0; Y = 0; k=0; delay_ms(500); while (1); // Kraj Petlje //~ PROGRAM U ASEMBLERU

; ASM code generated by mikroVirtualMachine for PIC - V.

8.1.0.0 ; Date/Time: 23.8.2008 13:20:28 ; Info: http://www.mikroe.com ; ADDRESS OPCODE ASM ; ---------------------------------------------- $0000 $2804 GOTO _main $06C4 $ GlobalIniFibonacci_Galoas: $06C4 $3000 MOVLW 0 $06C5 $1303 BCF STATUS, RP1 $06C6 $1283 BCF STATUS, RP0 $06C7 $00A0 MOVWF _Y+0 $06C8 $0008 RETURN $0004 $ _main: ;Fibonacci_Galoas.c,2 :: void main() ;Fibonacci_Galoas.c,5 :: TRISA = 0b111111;

// Definisanje i inicijalizacija $0004 $26C4 CALL GlobalIniFibonacci_Galoas $0005 $303F MOVLW 63 $0006 $1683 BSF STATUS, RP0 $0007 $0085 MOVWF TRISA ;Fibonacci_Galoas.c,6 :: PORTA = 0b000000;

// pinova PORTOVA A, B, C, D, E $0008 $1283 BCF STATUS, RP0 $0009 $0185 CLRF PORTA, 1 ;Fibonacci_Galoas.c,7 :: TRISB = 0b00000000;

Page 53: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

52

$000A $1683 BSF STATUS, RP0 $000B $0186 CLRF TRISB, 1 ;Fibonacci_Galoas.c,8 :: PORTB = 0b00000000; $000C $1283 BCF STATUS, RP0 $000D $0186 CLRF PORTB, 1 ;Fibonacci_Galoas.c,9 :: TRISC = 0b10111111; $000E $30BF MOVLW 191 $000F $1683 BSF STATUS, RP0 $0010 $0087 MOVWF TRISC ;Fibonacci_Galoas.c,10 :: PORTC = 0b00000000; $0011 $1283 BCF STATUS, RP0 $0012 $0187 CLRF PORTC, 1 ;Fibonacci_Galoas.c,11 :: TRISD = 0b00000000; $0013 $1683 BSF STATUS, RP0 $0014 $0188 CLRF TRISD, 1 ;Fibonacci_Galoas.c,12 :: PORTD = 0b00000000; $0015 $1283 BCF STATUS, RP0 $0016 $0188 CLRF PORTD, 1 ;Fibonacci_Galoas.c,13 :: TRISE = 0b000; $0017 $1683 BSF STATUS, RP0 $0018 $0189 CLRF TRISE, 1 ;Fibonacci_Galoas.c,15 :: CMCON = 7; $0019 $3007 MOVLW 7 $001A $009C MOVWF CMCON ;Fibonacci_Galoas.c,16 :: ADCON1 = 0x06;

// Definisanje pinova A porta kao $001B $3006 MOVLW 6 $001C $009F MOVWF ADCON1 ;Fibonacci_Galoas.c,19 :: PORTD.F0 = PORTA.F1; $001D $3000 MOVLW 0 $001E $1283 BCF STATUS, RP0 $001F $1885 BTFSC PORTA, 1 $0020 $3001 MOVLW 1 $0021 $00F1 MOVWF STACK_1 $0022 $3000 MOVLW 0 $0023 $1871 BTFSC STACK_1, 0 $0024 $3001 MOVLW 1 $0025 $0608 XORWF PORTD, 0 $0026 $3901 ANDLW 1 $0027 $0688 XORWF PORTD, 1 ;Fibonacci_Galoas.c,20 :: PORTD.F1 = PORTA.F2; $0028 $3000 MOVLW 0 $0029 $1905 BTFSC PORTA, 2 $002A $3001 MOVLW 1 $002B $00F1 MOVWF STACK_1 $002C $3000 MOVLW 0 $002D $1871 BTFSC STACK_1, 0 $002E $3002 MOVLW 2 $002F $0608 XORWF PORTD, 0 $0030 $3902 ANDLW 2 $0031 $0688 XORWF PORTD, 1 ;Fibonacci_Galoas.c,21 :: PORTD.F2 = PORTA.F3; $0032 $3000 MOVLW 0 $0033 $1985 BTFSC PORTA, 3 $0034 $3001 MOVLW 1 $0035 $00F1 MOVWF STACK_1 $0036 $3000 MOVLW 0 $0037 $1871 BTFSC STACK_1, 0 $0038 $3004 MOVLW 4 $0039 $0608 XORWF PORTD, 0 $003A $3904 ANDLW 4

Page 54: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

53

$003B $0688 XORWF PORTD, 1 ;Fibonacci_Galoas.c,22 :: PORTD.F3 = PORTA.F4; $003C $3000 MOVLW 0 $003D $1A05 BTFSC PORTA, 4 $003E $3001 MOVLW 1 $003F $00F1 MOVWF STACK_1 $0040 $3000 MOVLW 0 $0041 $1871 BTFSC STACK_1, 0 $0042 $3008 MOVLW 8 $0043 $0608 XORWF PORTD, 0 $0044 $3908 ANDLW 8 $0045 $0688 XORWF PORTD, 1 ;Fibonacci_Galoas.c,25 :: PORTD.F4 = PORTA.F5; $0046 $3000 MOVLW 0 $0047 $1A85 BTFSC PORTA, 5 $0048 $3001 MOVLW 1 $0049 $00F1 MOVWF STACK_1 $004A $3000 MOVLW 0 $004B $1871 BTFSC STACK_1, 0 $004C $3010 MOVLW 16 $004D $0608 XORWF PORTD, 0 $004E $3910 ANDLW 16 $004F $0688 XORWF PORTD, 1 ;Fibonacci_Galoas.c,26 :: DD.F0 = PORTA.F5; $0050 $3000 MOVLW 0 $0051 $1A85 BTFSC PORTA, 5 $0052 $3001 MOVLW 1 $0053 $00F1 MOVWF STACK_1 $0054 $3000 MOVLW 0 $0055 $1871 BTFSC STACK_1, 0 $0056 $3001 MOVLW 1 $0057 $0621 XORWF _DD, 0 $0058 $3901 ANDLW 1 $0059 $06A1 XORWF _DD, 1 ;Fibonacci_Galoas.c,27 :: PORTD.F5 = PORTC.F0; $005A $3001 MOVLW 1 $005B $0507 ANDWF PORTC, 0 $005C $00F0 MOVWF STACK_0 $005D $3000 MOVLW 0 $005E $1870 BTFSC STACK_0, 0 $005F $3020 MOVLW 32 $0060 $0608 XORWF PORTD, 0 $0061 $3920 ANDLW 32 $0062 $0688 XORWF PORTD, 1 ;Fibonacci_Galoas.c,28 :: DD.F1 = PORTC.F0; $0063 $3001 MOVLW 1 $0064 $0507 ANDWF PORTC, 0 $0065 $00F0 MOVWF STACK_0 $0066 $3000 MOVLW 0 $0067 $1870 BTFSC STACK_0, 0 $0068 $3002 MOVLW 2 $0069 $0621 XORWF _DD, 0 $006A $3902 ANDLW 2 $006B $06A1 XORWF _DD, 1 ;Fibonacci_Galoas.c,29 :: PORTD.F6 = PORTC.F1; $006C $3000 MOVLW 0 $006D $1887 BTFSC PORTC, 1 $006E $3001 MOVLW 1 $006F $00F1 MOVWF STACK_1 $0070 $3000 MOVLW 0 $0071 $1871 BTFSC STACK_1, 0

Page 55: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

54

$0072 $3040 MOVLW 64 $0073 $0608 XORWF PORTD, 0 $0074 $3940 ANDLW 64 $0075 $0688 XORWF PORTD, 1 ;Fibonacci_Galoas.c,30 :: DD.F2 = PORTC.F1; $0076 $3000 MOVLW 0 $0077 $1887 BTFSC PORTC, 1 $0078 $3001 MOVLW 1 $0079 $00F1 MOVWF STACK_1 $007A $3000 MOVLW 0 $007B $1871 BTFSC STACK_1, 0 $007C $3004 MOVLW 4 $007D $0621 XORWF _DD, 0 $007E $3904 ANDLW 4 $007F $06A1 XORWF _DD, 1 ;Fibonacci_Galoas.c,31 :: PORTD.F7 = PORTC.F2; $0080 $3000 MOVLW 0 $0081 $1907 BTFSC PORTC, 2 $0082 $3001 MOVLW 1 $0083 $00F1 MOVWF STACK_1 $0084 $3000 MOVLW 0 $0085 $1871 BTFSC STACK_1, 0 $0086 $3080 MOVLW 128 $0087 $0608 XORWF PORTD, 0 $0088 $3980 ANDLW 128 $0089 $0688 XORWF PORTD, 1 ;Fibonacci_Galoas.c,32 :: DD.F3 = PORTC.F2; $008A $3000 MOVLW 0 $008B $1907 BTFSC PORTC, 2 $008C $3001 MOVLW 1 $008D $00F1 MOVWF STACK_1 $008E $3000 MOVLW 0 $008F $1871 BTFSC STACK_1, 0 $0090 $3008 MOVLW 8 $0091 $0621 XORWF _DD, 0 $0092 $3908 ANDLW 8 $0093 $06A1 XORWF _DD, 1 ;Fibonacci_Galoas.c,34 :: PORTB.F5 = PORTC.F3; $0094 $3000 MOVLW 0 $0095 $1987 BTFSC PORTC, 3 $0096 $3001 MOVLW 1 $0097 $00F1 MOVWF STACK_1 $0098 $3000 MOVLW 0 $0099 $1871 BTFSC STACK_1, 0 $009A $3020 MOVLW 32 $009B $0606 XORWF PORTB, 0 $009C $3920 ANDLW 32 $009D $0686 XORWF PORTB, 1 ;Fibonacci_Galoas.c,35 :: PORTB.F4 = !PORTC.F3; $009E $3001 MOVLW 1 $009F $1987 BTFSC PORTC, 3 $00A0 $3000 MOVLW 0 $00A1 $00F0 MOVWF STACK_0 $00A2 $3000 MOVLW 0 $00A3 $1870 BTFSC STACK_0, 0 $00A4 $3010 MOVLW 16 $00A5 $0606 XORWF PORTB, 0 $00A6 $3910 ANDLW 16 $00A7 $0686 XORWF PORTB, 1 ;Fibonacci_Galoas.c,38 :: do $00A8 $ L_main_0:

Page 56: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

55

;Fibonacci_Galoas.c,42 :: while (PORTC.F5==0 && PORTC.F4==1 && PORTC.F3 == 0)

$00A8 $ L_main_2: $00A8 $3000 MOVLW 0 $00A9 $1A87 BTFSC PORTC, 5 $00AA $3001 MOVLW 1 $00AB $00F1 MOVWF STACK_1 $00AC $0871 MOVF STACK_1, 0 $00AD $3A00 XORLW 0 $00AE $1D03 BTFSS STATUS, Z $00AF $295B GOTO L_main_3 $00B0 $3000 MOVLW 0 $00B1 $1A07 BTFSC PORTC, 4 $00B2 $3001 MOVLW 1 $00B3 $00F1 MOVWF STACK_1 $00B4 $0871 MOVF STACK_1, 0 $00B5 $3A01 XORLW 1 $00B6 $1D03 BTFSS STATUS, Z $00B7 $295B GOTO L_main_3 $00B8 $3000 MOVLW 0 $00B9 $1987 BTFSC PORTC, 3 $00BA $3001 MOVLW 1 $00BB $00F1 MOVWF STACK_1 $00BC $0871 MOVF STACK_1, 0 $00BD $3A00 XORLW 0 $00BE $1D03 BTFSS STATUS, Z $00BF $295B GOTO L_main_3 $00C0 $ L100_ex_L_main_3: ;Fibonacci_Galoas.c,43 :: PORTB.F7 = PORTC.F5; $00C0 $3000 MOVLW 0 $00C1 $1A87 BTFSC PORTC, 5 $00C2 $3001 MOVLW 1 $00C3 $00F1 MOVWF STACK_1 $00C4 $3000 MOVLW 0 $00C5 $1871 BTFSC STACK_1, 0 $00C6 $3080 MOVLW 128 $00C7 $0606 XORWF PORTB, 0 $00C8 $3980 ANDLW 128 $00C9 $0686 XORWF PORTB, 1 ;Fibonacci_Galoas.c,44 :: PORTB.F6 = PORTC.F4; $00CA $3000 MOVLW 0 $00CB $1A07 BTFSC PORTC, 4 $00CC $3001 MOVLW 1 $00CD $00F1 MOVWF STACK_1 $00CE $3000 MOVLW 0 $00CF $1871 BTFSC STACK_1, 0 $00D0 $3040 MOVLW 64 $00D1 $0606 XORWF PORTB, 0 $00D2 $3940 ANDLW 64 $00D3 $0686 XORWF PORTB, 1 ;Fibonacci_Galoas.c,45 :: if (PORTA.F0==1) $00D4 $3001 MOVLW 1 $00D5 $0505 ANDWF PORTA, 0 $00D6 $00F1 MOVWF STACK_1 $00D7 $0871 MOVF STACK_1, 0 $00D8 $3A01 XORLW 1 $00D9 $1D03 BTFSS STATUS, Z $00DA $28DC GOTO L_main_6 ;Fibonacci_Galoas.c,46 :: k = 0; $00DB $01A2 CLRF _k, 1 ;Fibonacci_Galoas.c,47 ::

Page 57: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

56

$00DC $ L_main_6: ;Fibonacci_Galoas.c,48 :: if ((PORTA.F0==0) && (k==0)) $00DC $3001 MOVLW 1 $00DD $0505 ANDWF PORTA, 0 $00DE $00F1 MOVWF STACK_1 $00DF $0871 MOVF STACK_1, 0 $00E0 $3A00 XORLW 0 $00E1 $1D03 BTFSS STATUS, Z $00E2 $295A GOTO L_main_9 $00E3 $0822 MOVF _k, 0 $00E4 $3A00 XORLW 0 $00E5 $1D03 BTFSS STATUS, Z $00E6 $295A GOTO L_main_9 $00E7 $ L129_ex_L_main_9: ;Fibonacci_Galoas.c,49 :: delay_ms(250); $00E7 $3002 MOVLW 2 $00E8 $00FC MOVWF STACK_12 $00E9 $30FF MOVLW 255 $00EA $00FB MOVWF STACK_11 $00EB $30FF MOVLW 255 $00EC $00FA MOVWF STACK_10 $00ED $0BFC DECFSZ STACK_12, F $00EE $28F0 GOTO $+2 $00EF $28F7 GOTO $+8 $00F0 $0BFB DECFSZ STACK_11, F $00F1 $28F3 GOTO $+2 $00F2 $28F6 GOTO $+4 $00F3 $0BFA DECFSZ STACK_10, F $00F4 $28F3 GOTO $-1 $00F5 $28F0 GOTO $-5 $00F6 $28ED GOTO $-9 $00F7 $3046 MOVLW 70 $00F8 $00FB MOVWF STACK_11 $00F9 $30FF MOVLW 255 $00FA $00FA MOVWF STACK_10 $00FB $0BFB DECFSZ STACK_11, F $00FC $28FE GOTO $+2 $00FD $2901 GOTO $+4 $00FE $0BFA DECFSZ STACK_10, F $00FF $28FE GOTO $-1 $0100 $28FB GOTO $-5 $0101 $30CF MOVLW 207 $0102 $00FA MOVWF STACK_10 $0103 $0BFA DECFSZ STACK_10, F $0104 $2903 GOTO $-1 $0105 $0000 NOP ;Fibonacci_Galoas.c,50 :: k = 1; $0106 $3001 MOVLW 1 $0107 $00A2 MOVWF _k ;Fibonacci_Galoas.c,51 :: PORTB.F0 = DD.F0; $0108 $3001 MOVLW 1 $0109 $0521 ANDWF _DD, 0 $010A $00F0 MOVWF STACK_0 $010B $3000 MOVLW 0 $010C $1870 BTFSC STACK_0, 0 $010D $3001 MOVLW 1 $010E $0606 XORWF PORTB, 0 $010F $3901 ANDLW 1 $0110 $0686 XORWF PORTB, 1 ;Fibonacci_Galoas.c,52 :: PORTB.F1 = DD.F1; $0111 $3000 MOVLW 0

Page 58: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

57

$0112 $18A1 BTFSC _DD, 1 $0113 $3001 MOVLW 1 $0114 $00F1 MOVWF STACK_1 $0115 $3000 MOVLW 0 $0116 $1871 BTFSC STACK_1, 0 $0117 $3002 MOVLW 2 $0118 $0606 XORWF PORTB, 0 $0119 $3902 ANDLW 2 $011A $0686 XORWF PORTB, 1 ;Fibonacci_Galoas.c,53 :: Y.F0 = PORTB.F1; $011B $3000 MOVLW 0 $011C $1886 BTFSC PORTB, 1 $011D $3001 MOVLW 1 $011E $00F1 MOVWF STACK_1 $011F $3000 MOVLW 0 $0120 $1871 BTFSC STACK_1, 0 $0121 $3001 MOVLW 1 $0122 $0620 XORWF _Y, 0 $0123 $3901 ANDLW 1 $0124 $06A0 XORWF _Y, 1 ;Fibonacci_Galoas.c,54 :: X.F0 = PORTD.F0 && Y.F0; $0125 $3001 MOVLW 1 $0126 $0508 ANDWF PORTD, 0 $0127 $00F0 MOVWF STACK_0 $0128 $1903 BTFSC STATUS, Z $0129 $2932 GOTO L_main_11 $012A $3001 MOVLW 1 $012B $0520 ANDWF _Y, 0 $012C $00F0 MOVWF STACK_0 $012D $1903 BTFSC STATUS, Z $012E $2932 GOTO L_main_11 $012F $3001 MOVLW 1 $0130 $00F0 MOVWF STACK_0 $0131 $2933 GOTO L_main_10 $0132 $ L_main_11: $0132 $01F0 CLRF STACK_0, 1 $0133 $ L_main_10: $0133 $3000 MOVLW 0 $0134 $1870 BTFSC STACK_0, 0 $0135 $3001 MOVLW 1 $0136 $0623 XORWF _X, 0 $0137 $3901 ANDLW 1 $0138 $06A3 XORWF _X, 1 ;Fibonacci_Galoas.c,55 :: DD.F0 = Y.F0; $0139 $3001 MOVLW 1 $013A $0520 ANDWF _Y, 0 $013B $00F0 MOVWF STACK_0 $013C $3000 MOVLW 0 $013D $1870 BTFSC STACK_0, 0 $013E $3001 MOVLW 1 $013F $0621 XORWF _DD, 0 $0140 $3901 ANDLW 1 $0141 $06A1 XORWF _DD, 1 ;Fibonacci_Galoas.c,56 :: DD.F1 = (PORTB.F0 &&

!X.F0)||(!PORTB.F0 && X.F0); $0142 $3001 MOVLW 1 $0143 $0506 ANDWF PORTB, 0 $0144 $00F0 MOVWF STACK_0 $0145 $1903 BTFSC STATUS, Z $0146 $2949 GOTO L202_ex_L_main_17 $0147 $1C23 BTFSS _X, 0

Page 59: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

58

$0148 $2952 GOTO L_main_17 $0149 $ L202_ex_L_main_17: $0149 $1806 BTFSC PORTB, 0 $014A $2950 GOTO L214_ex_L_main_17 $014B $3001 MOVLW 1 $014C $0523 ANDWF _X, 0 $014D $00F0 MOVWF STACK_0 $014E $1D03 BTFSS STATUS, Z $014F $2952 GOTO L_main_17 $0150 $ L214_ex_L_main_17: $0150 $01F0 CLRF STACK_0, 1 $0151 $2954 GOTO L_main_16 $0152 $ L_main_17: $0152 $3001 MOVLW 1 $0153 $00F0 MOVWF STACK_0 $0154 $ L_main_16: $0154 $3000 MOVLW 0 $0155 $1870 BTFSC STACK_0, 0 $0156 $3002 MOVLW 2 $0157 $0621 XORWF _DD, 0 $0158 $3902 ANDLW 2 $0159 $06A1 XORWF _DD, 1 ;Fibonacci_Galoas.c,57 :: $015A $ L_main_9: ;Fibonacci_Galoas.c,58 :: $015A $28A8 GOTO L_main_2 $015B $ L_main_3: ;Fibonacci_Galoas.c,61 :: while (PORTC.F5==1 &&

PORTC.F4==0 && PORTC.F3 == 0) $015B $ L_main_18: $015B $3000 MOVLW 0 $015C $1A87 BTFSC PORTC, 5 $015D $3001 MOVLW 1 $015E $00F1 MOVWF STACK_1 $015F $0871 MOVF STACK_1, 0 $0160 $3A01 XORLW 1 $0161 $1D03 BTFSS STATUS, Z $0162 $2A4C GOTO L_main_19 $0163 $3000 MOVLW 0 $0164 $1A07 BTFSC PORTC, 4 $0165 $3001 MOVLW 1 $0166 $00F1 MOVWF STACK_1 $0167 $0871 MOVF STACK_1, 0 $0168 $3A00 XORLW 0 $0169 $1D03 BTFSS STATUS, Z $016A $2A4C GOTO L_main_19 $016B $3000 MOVLW 0 $016C $1987 BTFSC PORTC, 3 $016D $3001 MOVLW 1 $016E $00F1 MOVWF STACK_1 $016F $0871 MOVF STACK_1, 0 $0170 $3A00 XORLW 0 $0171 $1D03 BTFSS STATUS, Z $0172 $2A4C GOTO L_main_19 $0173 $ L250_ex_L_main_19: ;Fibonacci_Galoas.c,62 :: PORTB.F7 = PORTC.F5; $0173 $3000 MOVLW 0 $0174 $1A87 BTFSC PORTC, 5 $0175 $3001 MOVLW 1 $0176 $00F1 MOVWF STACK_1 $0177 $3000 MOVLW 0

Page 60: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

59

$0178 $1871 BTFSC STACK_1, 0 $0179 $3080 MOVLW 128 $017A $0606 XORWF PORTB, 0 $017B $3980 ANDLW 128 $017C $0686 XORWF PORTB, 1 ;Fibonacci_Galoas.c,63 :: PORTB.F6 = PORTC.F4; $017D $3000 MOVLW 0 $017E $1A07 BTFSC PORTC, 4 $017F $3001 MOVLW 1 $0180 $00F1 MOVWF STACK_1 $0181 $3000 MOVLW 0 $0182 $1871 BTFSC STACK_1, 0 $0183 $3040 MOVLW 64 $0184 $0606 XORWF PORTB, 0 $0185 $3940 ANDLW 64 $0186 $0686 XORWF PORTB, 1 ;Fibonacci_Galoas.c,64 :: if (PORTA.F0==1) $0187 $3001 MOVLW 1 $0188 $0505 ANDWF PORTA, 0 $0189 $00F1 MOVWF STACK_1 $018A $0871 MOVF STACK_1, 0 $018B $3A01 XORLW 1 $018C $1D03 BTFSS STATUS, Z $018D $298F GOTO L_main_22 ;Fibonacci_Galoas.c,65 :: k = 0; $018E $01A2 CLRF _k, 1 ;Fibonacci_Galoas.c,66 :: $018F $ L_main_22: ;Fibonacci_Galoas.c,67 :: if ((PORTA.F0==0) && (k==0)) $018F $3001 MOVLW 1 $0190 $0505 ANDWF PORTA, 0 $0191 $00F1 MOVWF STACK_1 $0192 $0871 MOVF STACK_1, 0 $0193 $3A00 XORLW 0 $0194 $1D03 BTFSS STATUS, Z $0195 $2A4B GOTO L_main_25 $0196 $0822 MOVF _k, 0 $0197 $3A00 XORLW 0 $0198 $1D03 BTFSS STATUS, Z $0199 $2A4B GOTO L_main_25 $019A $ L279_ex_L_main_25: ;Fibonacci_Galoas.c,68 :: delay_ms(250); $019A $3002 MOVLW 2 $019B $00FC MOVWF STACK_12 $019C $30FF MOVLW 255 $019D $00FB MOVWF STACK_11 $019E $30FF MOVLW 255 $019F $00FA MOVWF STACK_10 $01A0 $0BFC DECFSZ STACK_12, F $01A1 $29A3 GOTO $+2 $01A2 $29AA GOTO $+8 $01A3 $0BFB DECFSZ STACK_11, F $01A4 $29A6 GOTO $+2 $01A5 $29A9 GOTO $+4 $01A6 $0BFA DECFSZ STACK_10, F $01A7 $29A6 GOTO $-1 $01A8 $29A3 GOTO $-5 $01A9 $29A0 GOTO $-9 $01AA $3046 MOVLW 70 $01AB $00FB MOVWF STACK_11 $01AC $30FF MOVLW 255

Page 61: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

60

$01AD $00FA MOVWF STACK_10 $01AE $0BFB DECFSZ STACK_11, F $01AF $29B1 GOTO $+2 $01B0 $29B4 GOTO $+4 $01B1 $0BFA DECFSZ STACK_10, F $01B2 $29B1 GOTO $-1 $01B3 $29AE GOTO $-5 $01B4 $30CF MOVLW 207 $01B5 $00FA MOVWF STACK_10 $01B6 $0BFA DECFSZ STACK_10, F $01B7 $29B6 GOTO $-1 $01B8 $0000 NOP ;Fibonacci_Galoas.c,69 :: k = 1; $01B9 $3001 MOVLW 1 $01BA $00A2 MOVWF _k ;Fibonacci_Galoas.c,70 :: PORTB.F0 = DD.F0; $01BB $3001 MOVLW 1 $01BC $0521 ANDWF _DD, 0 $01BD $00F0 MOVWF STACK_0 $01BE $3000 MOVLW 0 $01BF $1870 BTFSC STACK_0, 0 $01C0 $3001 MOVLW 1 $01C1 $0606 XORWF PORTB, 0 $01C2 $3901 ANDLW 1 $01C3 $0686 XORWF PORTB, 1 ;Fibonacci_Galoas.c,71 :: PORTB.F1 = DD.F1; $01C4 $3000 MOVLW 0 $01C5 $18A1 BTFSC _DD, 1 $01C6 $3001 MOVLW 1 $01C7 $00F1 MOVWF STACK_1 $01C8 $3000 MOVLW 0 $01C9 $1871 BTFSC STACK_1, 0 $01CA $3002 MOVLW 2 $01CB $0606 XORWF PORTB, 0 $01CC $3902 ANDLW 2 $01CD $0686 XORWF PORTB, 1 ;Fibonacci_Galoas.c,72 :: PORTB.F2 = DD.F2; $01CE $3000 MOVLW 0 $01CF $1921 BTFSC _DD, 2 $01D0 $3001 MOVLW 1 $01D1 $00F1 MOVWF STACK_1 $01D2 $3000 MOVLW 0 $01D3 $1871 BTFSC STACK_1, 0 $01D4 $3004 MOVLW 4 $01D5 $0606 XORWF PORTB, 0 $01D6 $3904 ANDLW 4 $01D7 $0686 XORWF PORTB, 1 ;Fibonacci_Galoas.c,73 :: Y.F0 = PORTB.F2; $01D8 $3000 MOVLW 0 $01D9 $1906 BTFSC PORTB, 2 $01DA $3001 MOVLW 1 $01DB $00F1 MOVWF STACK_1 $01DC $3000 MOVLW 0 $01DD $1871 BTFSC STACK_1, 0 $01DE $3001 MOVLW 1 $01DF $0620 XORWF _Y, 0 $01E0 $3901 ANDLW 1 $01E1 $06A0 XORWF _Y, 1 ;Fibonacci_Galoas.c,74 :: X.F0 = PORTD.F0 && Y.F0; $01E2 $3001 MOVLW 1 $01E3 $0508 ANDWF PORTD, 0

Page 62: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

61

$01E4 $00F0 MOVWF STACK_0 $01E5 $1903 BTFSC STATUS, Z $01E6 $29EF GOTO L_main_27 $01E7 $3001 MOVLW 1 $01E8 $0520 ANDWF _Y, 0 $01E9 $00F0 MOVWF STACK_0 $01EA $1903 BTFSC STATUS, Z $01EB $29EF GOTO L_main_27 $01EC $3001 MOVLW 1 $01ED $00F0 MOVWF STACK_0 $01EE $29F0 GOTO L_main_26 $01EF $ L_main_27: $01EF $01F0 CLRF STACK_0, 1 $01F0 $ L_main_26: $01F0 $3000 MOVLW 0 $01F1 $1870 BTFSC STACK_0, 0 $01F2 $3001 MOVLW 1 $01F3 $0623 XORWF _X, 0 $01F4 $3901 ANDLW 1 $01F5 $06A3 XORWF _X, 1 ;Fibonacci_Galoas.c,75 :: X.F1 = PORTD.F1 && Y.F1; $01F6 $3000 MOVLW 0 $01F7 $1888 BTFSC PORTD, 1 $01F8 $3001 MOVLW 1 $01F9 $00F1 MOVWF STACK_1 $01FA $0871 MOVF STACK_1, 0 $01FB $1903 BTFSC STATUS, Z $01FC $2A07 GOTO L_main_29 $01FD $3000 MOVLW 0 $01FE $18A0 BTFSC _Y, 1 $01FF $3001 MOVLW 1 $0200 $00F1 MOVWF STACK_1 $0201 $0871 MOVF STACK_1, 0 $0202 $1903 BTFSC STATUS, Z $0203 $2A07 GOTO L_main_29 $0204 $3001 MOVLW 1 $0205 $00F0 MOVWF STACK_0 $0206 $2A08 GOTO L_main_28 $0207 $ L_main_29: $0207 $01F0 CLRF STACK_0, 1 $0208 $ L_main_28: $0208 $3000 MOVLW 0 $0209 $1870 BTFSC STACK_0, 0 $020A $3002 MOVLW 2 $020B $0623 XORWF _X, 0 $020C $3902 ANDLW 2 $020D $06A3 XORWF _X, 1 ;Fibonacci_Galoas.c,76 :: DD.F0 = Y.F0; $020E $3001 MOVLW 1 $020F $0520 ANDWF _Y, 0 $0210 $00F0 MOVWF STACK_0 $0211 $3000 MOVLW 0 $0212 $1870 BTFSC STACK_0, 0 $0213 $3001 MOVLW 1 $0214 $0621 XORWF _DD, 0 $0215 $3901 ANDLW 1 $0216 $06A1 XORWF _DD, 1 ;Fibonacci_Galoas.c,77 :: DD.F1 = (PORTB.F0 &&

!X.F0)||(!PORTB.F0 && X.F0); $0217 $3001 MOVLW 1 $0218 $0506 ANDWF PORTB, 0

Page 63: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

62

$0219 $00F0 MOVWF STACK_0 $021A $1903 BTFSC STATUS, Z $021B $2A1E GOTO L374_ex_L_main_35 $021C $1C23 BTFSS _X, 0 $021D $2A27 GOTO L_main_35 $021E $ L374_ex_L_main_35: $021E $1806 BTFSC PORTB, 0 $021F $2A25 GOTO L386_ex_L_main_35 $0220 $3001 MOVLW 1 $0221 $0523 ANDWF _X, 0 $0222 $00F0 MOVWF STACK_0 $0223 $1D03 BTFSS STATUS, Z $0224 $2A27 GOTO L_main_35 $0225 $ L386_ex_L_main_35: $0225 $01F0 CLRF STACK_0, 1 $0226 $2A29 GOTO L_main_34 $0227 $ L_main_35: $0227 $3001 MOVLW 1 $0228 $00F0 MOVWF STACK_0 $0229 $ L_main_34: $0229 $3000 MOVLW 0 $022A $1870 BTFSC STACK_0, 0 $022B $3002 MOVLW 2 $022C $0621 XORWF _DD, 0 $022D $3902 ANDLW 2 $022E $06A1 XORWF _DD, 1 ;Fibonacci_Galoas.c,78 :: DD.F2 = (PORTB.F1 &&

!X.F1)||(!PORTB.F1 && X.F1); $022F $3000 MOVLW 0 $0230 $1886 BTFSC PORTB, 1 $0231 $3001 MOVLW 1 $0232 $00F1 MOVWF STACK_1 $0233 $0871 MOVF STACK_1, 0 $0234 $1903 BTFSC STATUS, Z $0235 $2A38 GOTO L407_ex_L_main_41 $0236 $1CA3 BTFSS _X, 1 $0237 $2A43 GOTO L_main_41 $0238 $ L407_ex_L_main_41: $0238 $1886 BTFSC PORTB, 1 $0239 $2A41 GOTO L421_ex_L_main_41 $023A $3000 MOVLW 0 $023B $18A3 BTFSC _X, 1 $023C $3001 MOVLW 1 $023D $00F1 MOVWF STACK_1 $023E $0871 MOVF STACK_1, 0 $023F $1D03 BTFSS STATUS, Z $0240 $2A43 GOTO L_main_41 $0241 $ L421_ex_L_main_41: $0241 $01F0 CLRF STACK_0, 1 $0242 $2A45 GOTO L_main_40 $0243 $ L_main_41: $0243 $3001 MOVLW 1 $0244 $00F0 MOVWF STACK_0 $0245 $ L_main_40: $0245 $3000 MOVLW 0 $0246 $1870 BTFSC STACK_0, 0 $0247 $3004 MOVLW 4 $0248 $0621 XORWF _DD, 0 $0249 $3904 ANDLW 4 $024A $06A1 XORWF _DD, 1 ;Fibonacci_Galoas.c,79 ::

Page 64: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

63

$024B $ L_main_25: ;Fibonacci_Galoas.c,80 :: $024B $295B GOTO L_main_18 $024C $ L_main_19: ;Fibonacci_Galoas.c,83 :: while (PORTC.F5==1 &&

PORTC.F4==1 && PORTC.F3 == 0) $024C $ L_main_42: $024C $3000 MOVLW 0 $024D $1A87 BTFSC PORTC, 5 $024E $3001 MOVLW 1 $024F $00F1 MOVWF STACK_1 $0250 $0871 MOVF STACK_1, 0 $0251 $3A01 XORLW 1 $0252 $1D03 BTFSS STATUS, Z $0253 $2B7B GOTO L_main_43 $0254 $3000 MOVLW 0 $0255 $1A07 BTFSC PORTC, 4 $0256 $3001 MOVLW 1 $0257 $00F1 MOVWF STACK_1 $0258 $0871 MOVF STACK_1, 0 $0259 $3A01 XORLW 1 $025A $1D03 BTFSS STATUS, Z $025B $2B7B GOTO L_main_43 $025C $3000 MOVLW 0 $025D $1987 BTFSC PORTC, 3 $025E $3001 MOVLW 1 $025F $00F1 MOVWF STACK_1 $0260 $0871 MOVF STACK_1, 0 $0261 $3A00 XORLW 0 $0262 $1D03 BTFSS STATUS, Z $0263 $2B7B GOTO L_main_43 $0264 $ L457_ex_L_main_43: ;Fibonacci_Galoas.c,84 :: PORTB.F7 = PORTC.F5; $0264 $3000 MOVLW 0 $0265 $1A87 BTFSC PORTC, 5 $0266 $3001 MOVLW 1 $0267 $00F1 MOVWF STACK_1 $0268 $3000 MOVLW 0 $0269 $1871 BTFSC STACK_1, 0 $026A $3080 MOVLW 128 $026B $0606 XORWF PORTB, 0 $026C $3980 ANDLW 128 $026D $0686 XORWF PORTB, 1 ;Fibonacci_Galoas.c,85 :: PORTB.F6 = PORTC.F4; $026E $3000 MOVLW 0 $026F $1A07 BTFSC PORTC, 4 $0270 $3001 MOVLW 1 $0271 $00F1 MOVWF STACK_1 $0272 $3000 MOVLW 0 $0273 $1871 BTFSC STACK_1, 0 $0274 $3040 MOVLW 64 $0275 $0606 XORWF PORTB, 0 $0276 $3940 ANDLW 64 $0277 $0686 XORWF PORTB, 1 ;Fibonacci_Galoas.c,86 :: if (PORTA.F0==1) $0278 $3001 MOVLW 1 $0279 $0505 ANDWF PORTA, 0 $027A $00F1 MOVWF STACK_1 $027B $0871 MOVF STACK_1, 0 $027C $3A01 XORLW 1 $027D $1D03 BTFSS STATUS, Z

Page 65: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

64

$027E $2A80 GOTO L_main_46 ;Fibonacci_Galoas.c,87 :: k = 0; $027F $01A2 CLRF _k, 1 ;Fibonacci_Galoas.c,88 :: $0280 $ L_main_46: ;Fibonacci_Galoas.c,89 :: if ((PORTA.F0==0) && (k==0)) $0280 $3001 MOVLW 1 $0281 $0505 ANDWF PORTA, 0 $0282 $00F1 MOVWF STACK_1 $0283 $0871 MOVF STACK_1, 0 $0284 $3A00 XORLW 0 $0285 $1D03 BTFSS STATUS, Z $0286 $2B7A GOTO L_main_49 $0287 $0822 MOVF _k, 0 $0288 $3A00 XORLW 0 $0289 $1D03 BTFSS STATUS, Z $028A $2B7A GOTO L_main_49 $028B $ L486_ex_L_main_49: ;Fibonacci_Galoas.c,90 :: delay_ms(250); $028B $3002 MOVLW 2 $028C $00FC MOVWF STACK_12 $028D $30FF MOVLW 255 $028E $00FB MOVWF STACK_11 $028F $30FF MOVLW 255 $0290 $00FA MOVWF STACK_10 $0291 $0BFC DECFSZ STACK_12, F $0292 $2A94 GOTO $+2 $0293 $2A9B GOTO $+8 $0294 $0BFB DECFSZ STACK_11, F $0295 $2A97 GOTO $+2 $0296 $2A9A GOTO $+4 $0297 $0BFA DECFSZ STACK_10, F $0298 $2A97 GOTO $-1 $0299 $2A94 GOTO $-5 $029A $2A91 GOTO $-9 $029B $3046 MOVLW 70 $029C $00FB MOVWF STACK_11 $029D $30FF MOVLW 255 $029E $00FA MOVWF STACK_10 $029F $0BFB DECFSZ STACK_11, F $02A0 $2AA2 GOTO $+2 $02A1 $2AA5 GOTO $+4 $02A2 $0BFA DECFSZ STACK_10, F $02A3 $2AA2 GOTO $-1 $02A4 $2A9F GOTO $-5 $02A5 $30CF MOVLW 207 $02A6 $00FA MOVWF STACK_10 $02A7 $0BFA DECFSZ STACK_10, F $02A8 $2AA7 GOTO $-1 $02A9 $0000 NOP ;Fibonacci_Galoas.c,91 :: k = 1; $02AA $3001 MOVLW 1 $02AB $00A2 MOVWF _k ;Fibonacci_Galoas.c,92 :: PORTB.F0 = DD.F0; $02AC $3001 MOVLW 1 $02AD $0521 ANDWF _DD, 0 $02AE $00F0 MOVWF STACK_0 $02AF $3000 MOVLW 0 $02B0 $1870 BTFSC STACK_0, 0 $02B1 $3001 MOVLW 1 $02B2 $0606 XORWF PORTB, 0

Page 66: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

65

$02B3 $3901 ANDLW 1 $02B4 $0686 XORWF PORTB, 1 ;Fibonacci_Galoas.c,93 :: PORTB.F1 = DD.F1; $02B5 $3000 MOVLW 0 $02B6 $18A1 BTFSC _DD, 1 $02B7 $3001 MOVLW 1 $02B8 $00F1 MOVWF STACK_1 $02B9 $3000 MOVLW 0 $02BA $1871 BTFSC STACK_1, 0 $02BB $3002 MOVLW 2 $02BC $0606 XORWF PORTB, 0 $02BD $3902 ANDLW 2 $02BE $0686 XORWF PORTB, 1 ;Fibonacci_Galoas.c,94 :: PORTB.F2 = DD.F2; $02BF $3000 MOVLW 0 $02C0 $1921 BTFSC _DD, 2 $02C1 $3001 MOVLW 1 $02C2 $00F1 MOVWF STACK_1 $02C3 $3000 MOVLW 0 $02C4 $1871 BTFSC STACK_1, 0 $02C5 $3004 MOVLW 4 $02C6 $0606 XORWF PORTB, 0 $02C7 $3904 ANDLW 4 $02C8 $0686 XORWF PORTB, 1 ;Fibonacci_Galoas.c,95 :: PORTB.F3 = DD.F3; $02C9 $3000 MOVLW 0 $02CA $19A1 BTFSC _DD, 3 $02CB $3001 MOVLW 1 $02CC $00F1 MOVWF STACK_1 $02CD $3000 MOVLW 0 $02CE $1871 BTFSC STACK_1, 0 $02CF $3008 MOVLW 8 $02D0 $0606 XORWF PORTB, 0 $02D1 $3908 ANDLW 8 $02D2 $0686 XORWF PORTB, 1 ;Fibonacci_Galoas.c,96 :: Y.F0 = PORTB.F3; $02D3 $3000 MOVLW 0 $02D4 $1986 BTFSC PORTB, 3 $02D5 $3001 MOVLW 1 $02D6 $00F1 MOVWF STACK_1 $02D7 $3000 MOVLW 0 $02D8 $1871 BTFSC STACK_1, 0 $02D9 $3001 MOVLW 1 $02DA $0620 XORWF _Y, 0 $02DB $3901 ANDLW 1 $02DC $06A0 XORWF _Y, 1 ;Fibonacci_Galoas.c,97 :: X.F0 = PORTD.F0 && Y.F0; $02DD $3001 MOVLW 1 $02DE $0508 ANDWF PORTD, 0 $02DF $00F0 MOVWF STACK_0 $02E0 $1903 BTFSC STATUS, Z $02E1 $2AEA GOTO L_main_51 $02E2 $3001 MOVLW 1 $02E3 $0520 ANDWF _Y, 0 $02E4 $00F0 MOVWF STACK_0 $02E5 $1903 BTFSC STATUS, Z $02E6 $2AEA GOTO L_main_51 $02E7 $3001 MOVLW 1 $02E8 $00F0 MOVWF STACK_0 $02E9 $2AEB GOTO L_main_50 $02EA $ L_main_51:

Page 67: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

66

$02EA $01F0 CLRF STACK_0, 1 $02EB $ L_main_50: $02EB $3000 MOVLW 0 $02EC $1870 BTFSC STACK_0, 0 $02ED $3001 MOVLW 1 $02EE $0623 XORWF _X, 0 $02EF $3901 ANDLW 1 $02F0 $06A3 XORWF _X, 1 ;Fibonacci_Galoas.c,98 :: X.F1 = PORTD.F1 && Y.F1; $02F1 $3000 MOVLW 0 $02F2 $1888 BTFSC PORTD, 1 $02F3 $3001 MOVLW 1 $02F4 $00F1 MOVWF STACK_1 $02F5 $0871 MOVF STACK_1, 0 $02F6 $1903 BTFSC STATUS, Z $02F7 $2B02 GOTO L_main_53 $02F8 $3000 MOVLW 0 $02F9 $18A0 BTFSC _Y, 1 $02FA $3001 MOVLW 1 $02FB $00F1 MOVWF STACK_1 $02FC $0871 MOVF STACK_1, 0 $02FD $1903 BTFSC STATUS, Z $02FE $2B02 GOTO L_main_53 $02FF $3001 MOVLW 1 $0300 $00F0 MOVWF STACK_0 $0301 $2B03 GOTO L_main_52 $0302 $ L_main_53: $0302 $01F0 CLRF STACK_0, 1 $0303 $ L_main_52: $0303 $3000 MOVLW 0 $0304 $1870 BTFSC STACK_0, 0 $0305 $3002 MOVLW 2 $0306 $0623 XORWF _X, 0 $0307 $3902 ANDLW 2 $0308 $06A3 XORWF _X, 1 ;Fibonacci_Galoas.c,99 :: X.F2 = PORTD.F2 && Y.F2; $0309 $3000 MOVLW 0 $030A $1908 BTFSC PORTD, 2 $030B $3001 MOVLW 1 $030C $00F1 MOVWF STACK_1 $030D $0871 MOVF STACK_1, 0 $030E $1903 BTFSC STATUS, Z $030F $2B1A GOTO L_main_55 $0310 $3000 MOVLW 0 $0311 $1920 BTFSC _Y, 2 $0312 $3001 MOVLW 1 $0313 $00F1 MOVWF STACK_1 $0314 $0871 MOVF STACK_1, 0 $0315 $1903 BTFSC STATUS, Z $0316 $2B1A GOTO L_main_55 $0317 $3001 MOVLW 1 $0318 $00F0 MOVWF STACK_0 $0319 $2B1B GOTO L_main_54 $031A $ L_main_55: $031A $01F0 CLRF STACK_0, 1 $031B $ L_main_54: $031B $3000 MOVLW 0 $031C $1870 BTFSC STACK_0, 0 $031D $3004 MOVLW 4 $031E $0623 XORWF _X, 0 $031F $3904 ANDLW 4

Page 68: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

67

$0320 $06A3 XORWF _X, 1 ;Fibonacci_Galoas.c,100 :: DD.F0 = Y.F0; $0321 $3001 MOVLW 1 $0322 $0520 ANDWF _Y, 0 $0323 $00F0 MOVWF STACK_0 $0324 $3000 MOVLW 0 $0325 $1870 BTFSC STACK_0, 0 $0326 $3001 MOVLW 1 $0327 $0621 XORWF _DD, 0 $0328 $3901 ANDLW 1 $0329 $06A1 XORWF _DD, 1 ;Fibonacci_Galoas.c,101 :: DD.F1 = (PORTB.F0 &&

!X.F0)||(!PORTB.F0 && X.F0); $032A $3001 MOVLW 1 $032B $0506 ANDWF PORTB, 0 $032C $00F0 MOVWF STACK_0 $032D $1903 BTFSC STATUS, Z $032E $2B31 GOTO L603_ex_L_main_61 $032F $1C23 BTFSS _X, 0 $0330 $2B3A GOTO L_main_61 $0331 $ L603_ex_L_main_61: $0331 $1806 BTFSC PORTB, 0 $0332 $2B38 GOTO L615_ex_L_main_61 $0333 $3001 MOVLW 1 $0334 $0523 ANDWF _X, 0 $0335 $00F0 MOVWF STACK_0 $0336 $1D03 BTFSS STATUS, Z $0337 $2B3A GOTO L_main_61 $0338 $ L615_ex_L_main_61: $0338 $01F0 CLRF STACK_0, 1 $0339 $2B3C GOTO L_main_60 $033A $ L_main_61: $033A $3001 MOVLW 1 $033B $00F0 MOVWF STACK_0 $033C $ L_main_60: $033C $3000 MOVLW 0 $033D $1870 BTFSC STACK_0, 0 $033E $3002 MOVLW 2 $033F $0621 XORWF _DD, 0 $0340 $3902 ANDLW 2 $0341 $06A1 XORWF _DD, 1 ;Fibonacci_Galoas.c,102 :: DD.F2 = (PORTB.F1 &&

!X.F1)||(!PORTB.F1 && X.F1); $0342 $3000 MOVLW 0 $0343 $1886 BTFSC PORTB, 1 $0344 $3001 MOVLW 1 $0345 $00F1 MOVWF STACK_1 $0346 $0871 MOVF STACK_1, 0 $0347 $1903 BTFSC STATUS, Z $0348 $2B4B GOTO L636_ex_L_main_67 $0349 $1CA3 BTFSS _X, 1 $034A $2B56 GOTO L_main_67 $034B $ L636_ex_L_main_67: $034B $1886 BTFSC PORTB, 1 $034C $2B54 GOTO L650_ex_L_main_67 $034D $3000 MOVLW 0 $034E $18A3 BTFSC _X, 1 $034F $3001 MOVLW 1 $0350 $00F1 MOVWF STACK_1 $0351 $0871 MOVF STACK_1, 0 $0352 $1D03 BTFSS STATUS, Z

Page 69: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

68

$0353 $2B56 GOTO L_main_67 $0354 $ L650_ex_L_main_67: $0354 $01F0 CLRF STACK_0, 1 $0355 $2B58 GOTO L_main_66 $0356 $ L_main_67: $0356 $3001 MOVLW 1 $0357 $00F0 MOVWF STACK_0 $0358 $ L_main_66: $0358 $3000 MOVLW 0 $0359 $1870 BTFSC STACK_0, 0 $035A $3004 MOVLW 4 $035B $0621 XORWF _DD, 0 $035C $3904 ANDLW 4 $035D $06A1 XORWF _DD, 1 ;Fibonacci_Galoas.c,103 :: DD.F3 = (PORTB.F2 &&

!X.F2)||(!PORTB.F2 && X.F2); $035E $3000 MOVLW 0 $035F $1906 BTFSC PORTB, 2 $0360 $3001 MOVLW 1 $0361 $00F1 MOVWF STACK_1 $0362 $0871 MOVF STACK_1, 0 $0363 $1903 BTFSC STATUS, Z $0364 $2B67 GOTO L671_ex_L_main_73 $0365 $1D23 BTFSS _X, 2 $0366 $2B72 GOTO L_main_73 $0367 $ L671_ex_L_main_73: $0367 $1906 BTFSC PORTB, 2 $0368 $2B70 GOTO L685_ex_L_main_73 $0369 $3000 MOVLW 0 $036A $1923 BTFSC _X, 2 $036B $3001 MOVLW 1 $036C $00F1 MOVWF STACK_1 $036D $0871 MOVF STACK_1, 0 $036E $1D03 BTFSS STATUS, Z $036F $2B72 GOTO L_main_73 $0370 $ L685_ex_L_main_73: $0370 $01F0 CLRF STACK_0, 1 $0371 $2B74 GOTO L_main_72 $0372 $ L_main_73: $0372 $3001 MOVLW 1 $0373 $00F0 MOVWF STACK_0 $0374 $ L_main_72: $0374 $3000 MOVLW 0 $0375 $1870 BTFSC STACK_0, 0 $0376 $3008 MOVLW 8 $0377 $0621 XORWF _DD, 0 $0378 $3908 ANDLW 8 $0379 $06A1 XORWF _DD, 1 ;Fibonacci_Galoas.c,104 :: $037A $ L_main_49: ;Fibonacci_Galoas.c,105 :: $037A $2A4C GOTO L_main_42 $037B $ L_main_43: ;Fibonacci_Galoas.c,108 :: while (PORTC.F5==0 &&

PORTC.F4==1 && PORTC.F3 == 1) $037B $ L_main_74: $037B $3000 MOVLW 0 $037C $1A87 BTFSC PORTC, 5 $037D $3001 MOVLW 1 $037E $00F1 MOVWF STACK_1 $037F $0871 MOVF STACK_1, 0

Page 70: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

69

$0380 $3A00 XORLW 0 $0381 $1D03 BTFSS STATUS, Z $0382 $2C3E GOTO L_main_75 $0383 $3000 MOVLW 0 $0384 $1A07 BTFSC PORTC, 4 $0385 $3001 MOVLW 1 $0386 $00F1 MOVWF STACK_1 $0387 $0871 MOVF STACK_1, 0 $0388 $3A01 XORLW 1 $0389 $1D03 BTFSS STATUS, Z $038A $2C3E GOTO L_main_75 $038B $3000 MOVLW 0 $038C $1987 BTFSC PORTC, 3 $038D $3001 MOVLW 1 $038E $00F1 MOVWF STACK_1 $038F $0871 MOVF STACK_1, 0 $0390 $3A01 XORLW 1 $0391 $1D03 BTFSS STATUS, Z $0392 $2C3E GOTO L_main_75 $0393 $ L721_ex_L_main_75: ;Fibonacci_Galoas.c,109 :: PORTB.F7 = PORTC.F5; $0393 $3000 MOVLW 0 $0394 $1A87 BTFSC PORTC, 5 $0395 $3001 MOVLW 1 $0396 $00F1 MOVWF STACK_1 $0397 $3000 MOVLW 0 $0398 $1871 BTFSC STACK_1, 0 $0399 $3080 MOVLW 128 $039A $0606 XORWF PORTB, 0 $039B $3980 ANDLW 128 $039C $0686 XORWF PORTB, 1 ;Fibonacci_Galoas.c,110 :: PORTB.F6 = PORTC.F4; $039D $3000 MOVLW 0 $039E $1A07 BTFSC PORTC, 4 $039F $3001 MOVLW 1 $03A0 $00F1 MOVWF STACK_1 $03A1 $3000 MOVLW 0 $03A2 $1871 BTFSC STACK_1, 0 $03A3 $3040 MOVLW 64 $03A4 $0606 XORWF PORTB, 0 $03A5 $3940 ANDLW 64 $03A6 $0686 XORWF PORTB, 1 ;Fibonacci_Galoas.c,111 :: if (PORTA.F0==1) $03A7 $3001 MOVLW 1 $03A8 $0505 ANDWF PORTA, 0 $03A9 $00F1 MOVWF STACK_1 $03AA $0871 MOVF STACK_1, 0 $03AB $3A01 XORLW 1 $03AC $1D03 BTFSS STATUS, Z $03AD $2BAF GOTO L_main_78 ;Fibonacci_Galoas.c,112 :: k = 0; $03AE $01A2 CLRF _k, 1 ;Fibonacci_Galoas.c,113 :: $03AF $ L_main_78: ;Fibonacci_Galoas.c,114 :: if ((PORTA.F0==0) && (k==0)) $03AF $3001 MOVLW 1 $03B0 $0505 ANDWF PORTA, 0 $03B1 $00F1 MOVWF STACK_1 $03B2 $0871 MOVF STACK_1, 0 $03B3 $3A00 XORLW 0 $03B4 $1D03 BTFSS STATUS, Z

Page 71: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

70

$03B5 $2C3D GOTO L_main_81 $03B6 $0822 MOVF _k, 0 $03B7 $3A00 XORLW 0 $03B8 $1D03 BTFSS STATUS, Z $03B9 $2C3D GOTO L_main_81 $03BA $ L750_ex_L_main_81: ;Fibonacci_Galoas.c,115 :: delay_ms(250); $03BA $3002 MOVLW 2 $03BB $00FC MOVWF STACK_12 $03BC $30FF MOVLW 255 $03BD $00FB MOVWF STACK_11 $03BE $30FF MOVLW 255 $03BF $00FA MOVWF STACK_10 $03C0 $0BFC DECFSZ STACK_12, F $03C1 $2BC3 GOTO $+2 $03C2 $2BCA GOTO $+8 $03C3 $0BFB DECFSZ STACK_11, F $03C4 $2BC6 GOTO $+2 $03C5 $2BC9 GOTO $+4 $03C6 $0BFA DECFSZ STACK_10, F $03C7 $2BC6 GOTO $-1 $03C8 $2BC3 GOTO $-5 $03C9 $2BC0 GOTO $-9 $03CA $3046 MOVLW 70 $03CB $00FB MOVWF STACK_11 $03CC $30FF MOVLW 255 $03CD $00FA MOVWF STACK_10 $03CE $0BFB DECFSZ STACK_11, F $03CF $2BD1 GOTO $+2 $03D0 $2BD4 GOTO $+4 $03D1 $0BFA DECFSZ STACK_10, F $03D2 $2BD1 GOTO $-1 $03D3 $2BCE GOTO $-5 $03D4 $30CF MOVLW 207 $03D5 $00FA MOVWF STACK_10 $03D6 $0BFA DECFSZ STACK_10, F $03D7 $2BD6 GOTO $-1 $03D8 $0000 NOP ;Fibonacci_Galoas.c,116 :: k = 1; $03D9 $3001 MOVLW 1 $03DA $00A2 MOVWF _k ;Fibonacci_Galoas.c,117 :: PORTB.F0 = DD.F0; $03DB $3001 MOVLW 1 $03DC $0521 ANDWF _DD, 0 $03DD $00F0 MOVWF STACK_0 $03DE $3000 MOVLW 0 $03DF $1870 BTFSC STACK_0, 0 $03E0 $3001 MOVLW 1 $03E1 $0606 XORWF PORTB, 0 $03E2 $3901 ANDLW 1 $03E3 $0686 XORWF PORTB, 1 ;Fibonacci_Galoas.c,118 :: PORTB.F1 = DD.F1; $03E4 $3000 MOVLW 0 $03E5 $18A1 BTFSC _DD, 1 $03E6 $3001 MOVLW 1 $03E7 $00F1 MOVWF STACK_1 $03E8 $3000 MOVLW 0 $03E9 $1871 BTFSC STACK_1, 0 $03EA $3002 MOVLW 2 $03EB $0606 XORWF PORTB, 0 $03EC $3902 ANDLW 2

Page 72: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

71

$03ED $0686 XORWF PORTB, 1 ;Fibonacci_Galoas.c,119 :: X.F0 = PORTD.F0 && PORTB.F0; $03EE $3001 MOVLW 1 $03EF $0508 ANDWF PORTD, 0 $03F0 $00F0 MOVWF STACK_0 $03F1 $1903 BTFSC STATUS, Z $03F2 $2BFB GOTO L_main_83 $03F3 $3001 MOVLW 1 $03F4 $0506 ANDWF PORTB, 0 $03F5 $00F0 MOVWF STACK_0 $03F6 $1903 BTFSC STATUS, Z $03F7 $2BFB GOTO L_main_83 $03F8 $3001 MOVLW 1 $03F9 $00F0 MOVWF STACK_0 $03FA $2BFC GOTO L_main_82 $03FB $ L_main_83: $03FB $01F0 CLRF STACK_0, 1 $03FC $ L_main_82: $03FC $3000 MOVLW 0 $03FD $1870 BTFSC STACK_0, 0 $03FE $3001 MOVLW 1 $03FF $0623 XORWF _X, 0 $0400 $3901 ANDLW 1 $0401 $06A3 XORWF _X, 1 ;Fibonacci_Galoas.c,120 :: X.F1 = PORTD.F1 && PORTB.F1; $0402 $3000 MOVLW 0 $0403 $1888 BTFSC PORTD, 1 $0404 $3001 MOVLW 1 $0405 $00F1 MOVWF STACK_1 $0406 $0871 MOVF STACK_1, 0 $0407 $1903 BTFSC STATUS, Z $0408 $2C13 GOTO L_main_85 $0409 $3000 MOVLW 0 $040A $1886 BTFSC PORTB, 1 $040B $3001 MOVLW 1 $040C $00F1 MOVWF STACK_1 $040D $0871 MOVF STACK_1, 0 $040E $1903 BTFSC STATUS, Z $040F $2C13 GOTO L_main_85 $0410 $3001 MOVLW 1 $0411 $00F0 MOVWF STACK_0 $0412 $2C14 GOTO L_main_84 $0413 $ L_main_85: $0413 $01F0 CLRF STACK_0, 1 $0414 $ L_main_84: $0414 $3000 MOVLW 0 $0415 $1870 BTFSC STACK_0, 0 $0416 $3002 MOVLW 2 $0417 $0623 XORWF _X, 0 $0418 $3902 ANDLW 2 $0419 $06A3 XORWF _X, 1 ;Fibonacci_Galoas.c,121 :: DD.F0 =(X.F0 && !X.F1)||(!X.F0

&& X.F1); $041A $3001 MOVLW 1 $041B $0523 ANDWF _X, 0 $041C $00F0 MOVWF STACK_0 $041D $1903 BTFSC STATUS, Z $041E $2C21 GOTO L832_ex_L_main_91 $041F $1CA3 BTFSS _X, 1 $0420 $2C2C GOTO L_main_91 $0421 $ L832_ex_L_main_91:

Page 73: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

72

$0421 $1823 BTFSC _X, 0 $0422 $2C2A GOTO L846_ex_L_main_91 $0423 $3000 MOVLW 0 $0424 $18A3 BTFSC _X, 1 $0425 $3001 MOVLW 1 $0426 $00F1 MOVWF STACK_1 $0427 $0871 MOVF STACK_1, 0 $0428 $1D03 BTFSS STATUS, Z $0429 $2C2C GOTO L_main_91 $042A $ L846_ex_L_main_91: $042A $01F0 CLRF STACK_0, 1 $042B $2C2E GOTO L_main_90 $042C $ L_main_91: $042C $3001 MOVLW 1 $042D $00F0 MOVWF STACK_0 $042E $ L_main_90: $042E $3000 MOVLW 0 $042F $1870 BTFSC STACK_0, 0 $0430 $3001 MOVLW 1 $0431 $0621 XORWF _DD, 0 $0432 $3901 ANDLW 1 $0433 $06A1 XORWF _DD, 1 ;Fibonacci_Galoas.c,122 :: DD.F1 = PORTB.F0; $0434 $3001 MOVLW 1 $0435 $0506 ANDWF PORTB, 0 $0436 $00F0 MOVWF STACK_0 $0437 $3000 MOVLW 0 $0438 $1870 BTFSC STACK_0, 0 $0439 $3002 MOVLW 2 $043A $0621 XORWF _DD, 0 $043B $3902 ANDLW 2 $043C $06A1 XORWF _DD, 1 ;Fibonacci_Galoas.c,123 :: $043D $ L_main_81: ;Fibonacci_Galoas.c,124 :: $043D $2B7B GOTO L_main_74 $043E $ L_main_75: ;Fibonacci_Galoas.c,127 :: while (PORTC.F5==1 &&

PORTC.F4==0 && PORTC.F3 == 1) $043E $ L_main_92: $043E $3000 MOVLW 0 $043F $1A87 BTFSC PORTC, 5 $0440 $3001 MOVLW 1 $0441 $00F1 MOVWF STACK_1 $0442 $0871 MOVF STACK_1, 0 $0443 $3A01 XORLW 1 $0444 $1D03 BTFSS STATUS, Z $0445 $2D4A GOTO L_main_93 $0446 $3000 MOVLW 0 $0447 $1A07 BTFSC PORTC, 4 $0448 $3001 MOVLW 1 $0449 $00F1 MOVWF STACK_1 $044A $0871 MOVF STACK_1, 0 $044B $3A00 XORLW 0 $044C $1D03 BTFSS STATUS, Z $044D $2D4A GOTO L_main_93 $044E $3000 MOVLW 0 $044F $1987 BTFSC PORTC, 3 $0450 $3001 MOVLW 1 $0451 $00F1 MOVWF STACK_1 $0452 $0871 MOVF STACK_1, 0

Page 74: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

73

$0453 $3A01 XORLW 1 $0454 $1D03 BTFSS STATUS, Z $0455 $2D4A GOTO L_main_93 $0456 $ L885_ex_L_main_93: ;Fibonacci_Galoas.c,128 :: PORTB.F7 = PORTC.F5; $0456 $3000 MOVLW 0 $0457 $1A87 BTFSC PORTC, 5 $0458 $3001 MOVLW 1 $0459 $00F1 MOVWF STACK_1 $045A $3000 MOVLW 0 $045B $1871 BTFSC STACK_1, 0 $045C $3080 MOVLW 128 $045D $0606 XORWF PORTB, 0 $045E $3980 ANDLW 128 $045F $0686 XORWF PORTB, 1 ;Fibonacci_Galoas.c,129 :: PORTB.F6 = PORTC.F4; $0460 $3000 MOVLW 0 $0461 $1A07 BTFSC PORTC, 4 $0462 $3001 MOVLW 1 $0463 $00F1 MOVWF STACK_1 $0464 $3000 MOVLW 0 $0465 $1871 BTFSC STACK_1, 0 $0466 $3040 MOVLW 64 $0467 $0606 XORWF PORTB, 0 $0468 $3940 ANDLW 64 $0469 $0686 XORWF PORTB, 1 ;Fibonacci_Galoas.c,130 :: PORTB.F3 = 0; $046A $1186 BCF PORTB, 3 ;Fibonacci_Galoas.c,131 :: if (PORTA.F0==1) $046B $3001 MOVLW 1 $046C $0505 ANDWF PORTA, 0 $046D $00F1 MOVWF STACK_1 $046E $0871 MOVF STACK_1, 0 $046F $3A01 XORLW 1 $0470 $1D03 BTFSS STATUS, Z $0471 $2C73 GOTO L_main_96 ;Fibonacci_Galoas.c,132 :: k = 0; $0472 $01A2 CLRF _k, 1 ;Fibonacci_Galoas.c,133 :: $0473 $ L_main_96: ;Fibonacci_Galoas.c,134 :: if ((PORTA.F0==0) && (k==0)) $0473 $3001 MOVLW 1 $0474 $0505 ANDWF PORTA, 0 $0475 $00F1 MOVWF STACK_1 $0476 $0871 MOVF STACK_1, 0 $0477 $3A00 XORLW 0 $0478 $1D03 BTFSS STATUS, Z $0479 $2D49 GOTO L_main_99 $047A $0822 MOVF _k, 0 $047B $3A00 XORLW 0 $047C $1D03 BTFSS STATUS, Z $047D $2D49 GOTO L_main_99 $047E $ L915_ex_L_main_99: ;Fibonacci_Galoas.c,135 :: delay_ms(250); $047E $3002 MOVLW 2 $047F $00FC MOVWF STACK_12 $0480 $30FF MOVLW 255 $0481 $00FB MOVWF STACK_11 $0482 $30FF MOVLW 255 $0483 $00FA MOVWF STACK_10 $0484 $0BFC DECFSZ STACK_12, F

Page 75: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

74

$0485 $2C87 GOTO $+2 $0486 $2C8E GOTO $+8 $0487 $0BFB DECFSZ STACK_11, F $0488 $2C8A GOTO $+2 $0489 $2C8D GOTO $+4 $048A $0BFA DECFSZ STACK_10, F $048B $2C8A GOTO $-1 $048C $2C87 GOTO $-5 $048D $2C84 GOTO $-9 $048E $3046 MOVLW 70 $048F $00FB MOVWF STACK_11 $0490 $30FF MOVLW 255 $0491 $00FA MOVWF STACK_10 $0492 $0BFB DECFSZ STACK_11, F $0493 $2C95 GOTO $+2 $0494 $2C98 GOTO $+4 $0495 $0BFA DECFSZ STACK_10, F $0496 $2C95 GOTO $-1 $0497 $2C92 GOTO $-5 $0498 $30CF MOVLW 207 $0499 $00FA MOVWF STACK_10 $049A $0BFA DECFSZ STACK_10, F $049B $2C9A GOTO $-1 $049C $0000 NOP ;Fibonacci_Galoas.c,136 :: k = 1; $049D $3001 MOVLW 1 $049E $00A2 MOVWF _k ;Fibonacci_Galoas.c,137 :: PORTB.F0 = DD.F0; $049F $3001 MOVLW 1 $04A0 $0521 ANDWF _DD, 0 $04A1 $00F0 MOVWF STACK_0 $04A2 $3000 MOVLW 0 $04A3 $1870 BTFSC STACK_0, 0 $04A4 $3001 MOVLW 1 $04A5 $0606 XORWF PORTB, 0 $04A6 $3901 ANDLW 1 $04A7 $0686 XORWF PORTB, 1 ;Fibonacci_Galoas.c,138 :: PORTB.F1 = DD.F1; $04A8 $3000 MOVLW 0 $04A9 $18A1 BTFSC _DD, 1 $04AA $3001 MOVLW 1 $04AB $00F1 MOVWF STACK_1 $04AC $3000 MOVLW 0 $04AD $1871 BTFSC STACK_1, 0 $04AE $3002 MOVLW 2 $04AF $0606 XORWF PORTB, 0 $04B0 $3902 ANDLW 2 $04B1 $0686 XORWF PORTB, 1 ;Fibonacci_Galoas.c,139 :: PORTB.F2 = DD.F2; $04B2 $3000 MOVLW 0 $04B3 $1921 BTFSC _DD, 2 $04B4 $3001 MOVLW 1 $04B5 $00F1 MOVWF STACK_1 $04B6 $3000 MOVLW 0 $04B7 $1871 BTFSC STACK_1, 0 $04B8 $3004 MOVLW 4 $04B9 $0606 XORWF PORTB, 0 $04BA $3904 ANDLW 4 $04BB $0686 XORWF PORTB, 1 ;Fibonacci_Galoas.c,140 :: X.F0 = PORTD.F0 && PORTB.F0; $04BC $3001 MOVLW 1

Page 76: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

75

$04BD $0508 ANDWF PORTD, 0 $04BE $00F0 MOVWF STACK_0 $04BF $1903 BTFSC STATUS, Z $04C0 $2CC9 GOTO L_main_101 $04C1 $3001 MOVLW 1 $04C2 $0506 ANDWF PORTB, 0 $04C3 $00F0 MOVWF STACK_0 $04C4 $1903 BTFSC STATUS, Z $04C5 $2CC9 GOTO L_main_101 $04C6 $3001 MOVLW 1 $04C7 $00F0 MOVWF STACK_0 $04C8 $2CCA GOTO L_main_100 $04C9 $ L_main_101: $04C9 $01F0 CLRF STACK_0, 1 $04CA $ L_main_100: $04CA $3000 MOVLW 0 $04CB $1870 BTFSC STACK_0, 0 $04CC $3001 MOVLW 1 $04CD $0623 XORWF _X, 0 $04CE $3901 ANDLW 1 $04CF $06A3 XORWF _X, 1 ;Fibonacci_Galoas.c,141 :: X.F1 = PORTD.F1 && PORTB.F1; $04D0 $3000 MOVLW 0 $04D1 $1888 BTFSC PORTD, 1 $04D2 $3001 MOVLW 1 $04D3 $00F1 MOVWF STACK_1 $04D4 $0871 MOVF STACK_1, 0 $04D5 $1903 BTFSC STATUS, Z $04D6 $2CE1 GOTO L_main_103 $04D7 $3000 MOVLW 0 $04D8 $1886 BTFSC PORTB, 1 $04D9 $3001 MOVLW 1 $04DA $00F1 MOVWF STACK_1 $04DB $0871 MOVF STACK_1, 0 $04DC $1903 BTFSC STATUS, Z $04DD $2CE1 GOTO L_main_103 $04DE $3001 MOVLW 1 $04DF $00F0 MOVWF STACK_0 $04E0 $2CE2 GOTO L_main_102 $04E1 $ L_main_103: $04E1 $01F0 CLRF STACK_0, 1 $04E2 $ L_main_102: $04E2 $3000 MOVLW 0 $04E3 $1870 BTFSC STACK_0, 0 $04E4 $3002 MOVLW 2 $04E5 $0623 XORWF _X, 0 $04E6 $3902 ANDLW 2 $04E7 $06A3 XORWF _X, 1 ;Fibonacci_Galoas.c,142 :: X.F2 = PORTD.F2 && PORTB.F2; $04E8 $3000 MOVLW 0 $04E9 $1908 BTFSC PORTD, 2 $04EA $3001 MOVLW 1 $04EB $00F1 MOVWF STACK_1 $04EC $0871 MOVF STACK_1, 0 $04ED $1903 BTFSC STATUS, Z $04EE $2CF9 GOTO L_main_105 $04EF $3000 MOVLW 0 $04F0 $1906 BTFSC PORTB, 2 $04F1 $3001 MOVLW 1 $04F2 $00F1 MOVWF STACK_1 $04F3 $0871 MOVF STACK_1, 0

Page 77: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

76

$04F4 $1903 BTFSC STATUS, Z $04F5 $2CF9 GOTO L_main_105 $04F6 $3001 MOVLW 1 $04F7 $00F0 MOVWF STACK_0 $04F8 $2CFA GOTO L_main_104 $04F9 $ L_main_105: $04F9 $01F0 CLRF STACK_0, 1 $04FA $ L_main_104: $04FA $3000 MOVLW 0 $04FB $1870 BTFSC STACK_0, 0 $04FC $3004 MOVLW 4 $04FD $0623 XORWF _X, 0 $04FE $3904 ANDLW 4 $04FF $06A3 XORWF _X, 1 ;Fibonacci_Galoas.c,143 :: X.F4 = (X.F0 && !X.F1)||(!X.F0

&& X.F1); $0500 $3001 MOVLW 1 $0501 $0523 ANDWF _X, 0 $0502 $00F0 MOVWF STACK_0 $0503 $1903 BTFSC STATUS, Z $0504 $2D07 GOTO L1019_ex_L_main_111 $0505 $1CA3 BTFSS _X, 1 $0506 $2D12 GOTO L_main_111 $0507 $ L1019_ex_L_main_111: $0507 $1823 BTFSC _X, 0 $0508 $2D10 GOTO L1033_ex_L_main_111 $0509 $3000 MOVLW 0 $050A $18A3 BTFSC _X, 1 $050B $3001 MOVLW 1 $050C $00F1 MOVWF STACK_1 $050D $0871 MOVF STACK_1, 0 $050E $1D03 BTFSS STATUS, Z $050F $2D12 GOTO L_main_111 $0510 $ L1033_ex_L_main_111: $0510 $01F0 CLRF STACK_0, 1 $0511 $2D14 GOTO L_main_110 $0512 $ L_main_111: $0512 $3001 MOVLW 1 $0513 $00F0 MOVWF STACK_0 $0514 $ L_main_110: $0514 $3000 MOVLW 0 $0515 $1870 BTFSC STACK_0, 0 $0516 $3010 MOVLW 16 $0517 $0623 XORWF _X, 0 $0518 $3910 ANDLW 16 $0519 $06A3 XORWF _X, 1 ;Fibonacci_Galoas.c,144 :: DD.F0 =(X.F4 && !X.F2)||(!X.F4

&& X.F2); $051A $3000 MOVLW 0 $051B $1A23 BTFSC _X, 4 $051C $3001 MOVLW 1 $051D $00F1 MOVWF STACK_1 $051E $0871 MOVF STACK_1, 0 $051F $1903 BTFSC STATUS, Z $0520 $2D23 GOTO L1054_ex_L_main_117 $0521 $1D23 BTFSS _X, 2 $0522 $2D2E GOTO L_main_117 $0523 $ L1054_ex_L_main_117: $0523 $1A23 BTFSC _X, 4 $0524 $2D2C GOTO L1068_ex_L_main_117 $0525 $3000 MOVLW 0

Page 78: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

77

$0526 $1923 BTFSC _X, 2 $0527 $3001 MOVLW 1 $0528 $00F1 MOVWF STACK_1 $0529 $0871 MOVF STACK_1, 0 $052A $1D03 BTFSS STATUS, Z $052B $2D2E GOTO L_main_117 $052C $ L1068_ex_L_main_117: $052C $01F0 CLRF STACK_0, 1 $052D $2D30 GOTO L_main_116 $052E $ L_main_117: $052E $3001 MOVLW 1 $052F $00F0 MOVWF STACK_0 $0530 $ L_main_116: $0530 $3000 MOVLW 0 $0531 $1870 BTFSC STACK_0, 0 $0532 $3001 MOVLW 1 $0533 $0621 XORWF _DD, 0 $0534 $3901 ANDLW 1 $0535 $06A1 XORWF _DD, 1 ;Fibonacci_Galoas.c,145 :: DD.F1 = PORTB.F0; $0536 $3001 MOVLW 1 $0537 $0506 ANDWF PORTB, 0 $0538 $00F0 MOVWF STACK_0 $0539 $3000 MOVLW 0 $053A $1870 BTFSC STACK_0, 0 $053B $3002 MOVLW 2 $053C $0621 XORWF _DD, 0 $053D $3902 ANDLW 2 $053E $06A1 XORWF _DD, 1 ;Fibonacci_Galoas.c,146 :: DD.F2 = PORTB.F1; $053F $3000 MOVLW 0 $0540 $1886 BTFSC PORTB, 1 $0541 $3001 MOVLW 1 $0542 $00F1 MOVWF STACK_1 $0543 $3000 MOVLW 0 $0544 $1871 BTFSC STACK_1, 0 $0545 $3004 MOVLW 4 $0546 $0621 XORWF _DD, 0 $0547 $3904 ANDLW 4 $0548 $06A1 XORWF _DD, 1 ;Fibonacci_Galoas.c,147 :: $0549 $ L_main_99: ;Fibonacci_Galoas.c,148 :: $0549 $2C3E GOTO L_main_92 $054A $ L_main_93: ;Fibonacci_Galoas.c,151 :: while (PORTC.F5==1 &&

PORTC.F4==1 && PORTC.F3 == 1) $054A $ L_main_118: $054A $3000 MOVLW 0 $054B $1A87 BTFSC PORTC, 5 $054C $3001 MOVLW 1 $054D $00F1 MOVWF STACK_1 $054E $0871 MOVF STACK_1, 0 $054F $3A01 XORLW 1 $0550 $1D03 BTFSS STATUS, Z $0551 $2E9D GOTO L_main_119 $0552 $3000 MOVLW 0 $0553 $1A07 BTFSC PORTC, 4 $0554 $3001 MOVLW 1 $0555 $00F1 MOVWF STACK_1 $0556 $0871 MOVF STACK_1, 0

Page 79: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

78

$0557 $3A01 XORLW 1 $0558 $1D03 BTFSS STATUS, Z $0559 $2E9D GOTO L_main_119 $055A $3000 MOVLW 0 $055B $1987 BTFSC PORTC, 3 $055C $3001 MOVLW 1 $055D $00F1 MOVWF STACK_1 $055E $0871 MOVF STACK_1, 0 $055F $3A01 XORLW 1 $0560 $1D03 BTFSS STATUS, Z $0561 $2E9D GOTO L_main_119 $0562 $ L1112_ex_L_main_119: ;Fibonacci_Galoas.c,152 :: PORTB.F7 = PORTC.F5; $0562 $3000 MOVLW 0 $0563 $1A87 BTFSC PORTC, 5 $0564 $3001 MOVLW 1 $0565 $00F1 MOVWF STACK_1 $0566 $3000 MOVLW 0 $0567 $1871 BTFSC STACK_1, 0 $0568 $3080 MOVLW 128 $0569 $0606 XORWF PORTB, 0 $056A $3980 ANDLW 128 $056B $0686 XORWF PORTB, 1 ;Fibonacci_Galoas.c,153 :: PORTB.F6 = PORTC.F4; $056C $3000 MOVLW 0 $056D $1A07 BTFSC PORTC, 4 $056E $3001 MOVLW 1 $056F $00F1 MOVWF STACK_1 $0570 $3000 MOVLW 0 $0571 $1871 BTFSC STACK_1, 0 $0572 $3040 MOVLW 64 $0573 $0606 XORWF PORTB, 0 $0574 $3940 ANDLW 64 $0575 $0686 XORWF PORTB, 1 ;Fibonacci_Galoas.c,154 :: if (PORTA.F0==1) $0576 $3001 MOVLW 1 $0577 $0505 ANDWF PORTA, 0 $0578 $00F1 MOVWF STACK_1 $0579 $0871 MOVF STACK_1, 0 $057A $3A01 XORLW 1 $057B $1D03 BTFSS STATUS, Z $057C $2D7E GOTO L_main_122 ;Fibonacci_Galoas.c,155 :: k = 0; $057D $01A2 CLRF _k, 1 ;Fibonacci_Galoas.c,156 :: $057E $ L_main_122: ;Fibonacci_Galoas.c,157 :: if ((PORTA.F0==0) && (k==0)) $057E $3001 MOVLW 1 $057F $0505 ANDWF PORTA, 0 $0580 $00F1 MOVWF STACK_1 $0581 $0871 MOVF STACK_1, 0 $0582 $3A00 XORLW 0 $0583 $1D03 BTFSS STATUS, Z $0584 $2E9C GOTO L_main_125 $0585 $0822 MOVF _k, 0 $0586 $3A00 XORLW 0 $0587 $1D03 BTFSS STATUS, Z $0588 $2E9C GOTO L_main_125 $0589 $ L1141_ex_L_main_125: ;Fibonacci_Galoas.c,158 :: delay_ms(250); $0589 $3002 MOVLW 2

Page 80: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

79

$058A $00FC MOVWF STACK_12 $058B $30FF MOVLW 255 $058C $00FB MOVWF STACK_11 $058D $30FF MOVLW 255 $058E $00FA MOVWF STACK_10 $058F $0BFC DECFSZ STACK_12, F $0590 $2D92 GOTO $+2 $0591 $2D99 GOTO $+8 $0592 $0BFB DECFSZ STACK_11, F $0593 $2D95 GOTO $+2 $0594 $2D98 GOTO $+4 $0595 $0BFA DECFSZ STACK_10, F $0596 $2D95 GOTO $-1 $0597 $2D92 GOTO $-5 $0598 $2D8F GOTO $-9 $0599 $3046 MOVLW 70 $059A $00FB MOVWF STACK_11 $059B $30FF MOVLW 255 $059C $00FA MOVWF STACK_10 $059D $0BFB DECFSZ STACK_11, F $059E $2DA0 GOTO $+2 $059F $2DA3 GOTO $+4 $05A0 $0BFA DECFSZ STACK_10, F $05A1 $2DA0 GOTO $-1 $05A2 $2D9D GOTO $-5 $05A3 $30CF MOVLW 207 $05A4 $00FA MOVWF STACK_10 $05A5 $0BFA DECFSZ STACK_10, F $05A6 $2DA5 GOTO $-1 $05A7 $0000 NOP ;Fibonacci_Galoas.c,159 :: k = 1; $05A8 $3001 MOVLW 1 $05A9 $00A2 MOVWF _k ;Fibonacci_Galoas.c,160 :: PORTB.F0 = DD.F0; $05AA $3001 MOVLW 1 $05AB $0521 ANDWF _DD, 0 $05AC $00F0 MOVWF STACK_0 $05AD $3000 MOVLW 0 $05AE $1870 BTFSC STACK_0, 0 $05AF $3001 MOVLW 1 $05B0 $0606 XORWF PORTB, 0 $05B1 $3901 ANDLW 1 $05B2 $0686 XORWF PORTB, 1 ;Fibonacci_Galoas.c,161 :: PORTB.F1 = DD.F1; $05B3 $3000 MOVLW 0 $05B4 $18A1 BTFSC _DD, 1 $05B5 $3001 MOVLW 1 $05B6 $00F1 MOVWF STACK_1 $05B7 $3000 MOVLW 0 $05B8 $1871 BTFSC STACK_1, 0 $05B9 $3002 MOVLW 2 $05BA $0606 XORWF PORTB, 0 $05BB $3902 ANDLW 2 $05BC $0686 XORWF PORTB, 1 ;Fibonacci_Galoas.c,162 :: PORTB.F2 = DD.F2; $05BD $3000 MOVLW 0 $05BE $1921 BTFSC _DD, 2 $05BF $3001 MOVLW 1 $05C0 $00F1 MOVWF STACK_1 $05C1 $3000 MOVLW 0 $05C2 $1871 BTFSC STACK_1, 0

Page 81: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

80

$05C3 $3004 MOVLW 4 $05C4 $0606 XORWF PORTB, 0 $05C5 $3904 ANDLW 4 $05C6 $0686 XORWF PORTB, 1 ;Fibonacci_Galoas.c,163 :: PORTB.F3 = DD.F3; $05C7 $3000 MOVLW 0 $05C8 $19A1 BTFSC _DD, 3 $05C9 $3001 MOVLW 1 $05CA $00F1 MOVWF STACK_1 $05CB $3000 MOVLW 0 $05CC $1871 BTFSC STACK_1, 0 $05CD $3008 MOVLW 8 $05CE $0606 XORWF PORTB, 0 $05CF $3908 ANDLW 8 $05D0 $0686 XORWF PORTB, 1 ;Fibonacci_Galoas.c,165 :: X.F0 = PORTD.F0 && PORTB.F0; $05D1 $3001 MOVLW 1 $05D2 $0508 ANDWF PORTD, 0 $05D3 $00F0 MOVWF STACK_0 $05D4 $1903 BTFSC STATUS, Z $05D5 $2DDE GOTO L_main_127 $05D6 $3001 MOVLW 1 $05D7 $0506 ANDWF PORTB, 0 $05D8 $00F0 MOVWF STACK_0 $05D9 $1903 BTFSC STATUS, Z $05DA $2DDE GOTO L_main_127 $05DB $3001 MOVLW 1 $05DC $00F0 MOVWF STACK_0 $05DD $2DDF GOTO L_main_126 $05DE $ L_main_127: $05DE $01F0 CLRF STACK_0, 1 $05DF $ L_main_126: $05DF $3000 MOVLW 0 $05E0 $1870 BTFSC STACK_0, 0 $05E1 $3001 MOVLW 1 $05E2 $0623 XORWF _X, 0 $05E3 $3901 ANDLW 1 $05E4 $06A3 XORWF _X, 1 ;Fibonacci_Galoas.c,166 :: X.F1 = PORTD.F1 && PORTB.F1; $05E5 $3000 MOVLW 0 $05E6 $1888 BTFSC PORTD, 1 $05E7 $3001 MOVLW 1 $05E8 $00F1 MOVWF STACK_1 $05E9 $0871 MOVF STACK_1, 0 $05EA $1903 BTFSC STATUS, Z $05EB $2DF6 GOTO L_main_129 $05EC $3000 MOVLW 0 $05ED $1886 BTFSC PORTB, 1 $05EE $3001 MOVLW 1 $05EF $00F1 MOVWF STACK_1 $05F0 $0871 MOVF STACK_1, 0 $05F1 $1903 BTFSC STATUS, Z $05F2 $2DF6 GOTO L_main_129 $05F3 $3001 MOVLW 1 $05F4 $00F0 MOVWF STACK_0 $05F5 $2DF7 GOTO L_main_128 $05F6 $ L_main_129: $05F6 $01F0 CLRF STACK_0, 1 $05F7 $ L_main_128: $05F7 $3000 MOVLW 0 $05F8 $1870 BTFSC STACK_0, 0

Page 82: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

81

$05F9 $3002 MOVLW 2 $05FA $0623 XORWF _X, 0 $05FB $3902 ANDLW 2 $05FC $06A3 XORWF _X, 1 ;Fibonacci_Galoas.c,167 :: X.F2 = PORTD.F2 && PORTB.F2; $05FD $3000 MOVLW 0 $05FE $1908 BTFSC PORTD, 2 $05FF $3001 MOVLW 1 $0600 $00F1 MOVWF STACK_1 $0601 $0871 MOVF STACK_1, 0 $0602 $1903 BTFSC STATUS, Z $0603 $2E0E GOTO L_main_131 $0604 $3000 MOVLW 0 $0605 $1906 BTFSC PORTB, 2 $0606 $3001 MOVLW 1 $0607 $00F1 MOVWF STACK_1 $0608 $0871 MOVF STACK_1, 0 $0609 $1903 BTFSC STATUS, Z $060A $2E0E GOTO L_main_131 $060B $3001 MOVLW 1 $060C $00F0 MOVWF STACK_0 $060D $2E0F GOTO L_main_130 $060E $ L_main_131: $060E $01F0 CLRF STACK_0, 1 $060F $ L_main_130: $060F $3000 MOVLW 0 $0610 $1870 BTFSC STACK_0, 0 $0611 $3004 MOVLW 4 $0612 $0623 XORWF _X, 0 $0613 $3904 ANDLW 4 $0614 $06A3 XORWF _X, 1 ;Fibonacci_Galoas.c,168 :: X.F3 = PORTD.F3 && PORTB.F3; $0615 $3000 MOVLW 0 $0616 $1988 BTFSC PORTD, 3 $0617 $3001 MOVLW 1 $0618 $00F1 MOVWF STACK_1 $0619 $0871 MOVF STACK_1, 0 $061A $1903 BTFSC STATUS, Z $061B $2E26 GOTO L_main_133 $061C $3000 MOVLW 0 $061D $1986 BTFSC PORTB, 3 $061E $3001 MOVLW 1 $061F $00F1 MOVWF STACK_1 $0620 $0871 MOVF STACK_1, 0 $0621 $1903 BTFSC STATUS, Z $0622 $2E26 GOTO L_main_133 $0623 $3001 MOVLW 1 $0624 $00F0 MOVWF STACK_0 $0625 $2E27 GOTO L_main_132 $0626 $ L_main_133: $0626 $01F0 CLRF STACK_0, 1 $0627 $ L_main_132: $0627 $3000 MOVLW 0 $0628 $1870 BTFSC STACK_0, 0 $0629 $3008 MOVLW 8 $062A $0623 XORWF _X, 0 $062B $3908 ANDLW 8 $062C $06A3 XORWF _X, 1 ;Fibonacci_Galoas.c,169 :: X.F4 = (X.F0 && !X.F1)||(!X.F0

&& X.F1); $062D $3001 MOVLW 1

Page 83: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

82

$062E $0523 ANDWF _X, 0 $062F $00F0 MOVWF STACK_0 $0630 $1903 BTFSC STATUS, Z $0631 $2E34 GOTO L1267_ex_L_main_139 $0632 $1CA3 BTFSS _X, 1 $0633 $2E3F GOTO L_main_139 $0634 $ L1267_ex_L_main_139: $0634 $1823 BTFSC _X, 0 $0635 $2E3D GOTO L1281_ex_L_main_139 $0636 $3000 MOVLW 0 $0637 $18A3 BTFSC _X, 1 $0638 $3001 MOVLW 1 $0639 $00F1 MOVWF STACK_1 $063A $0871 MOVF STACK_1, 0 $063B $1D03 BTFSS STATUS, Z $063C $2E3F GOTO L_main_139 $063D $ L1281_ex_L_main_139: $063D $01F0 CLRF STACK_0, 1 $063E $2E41 GOTO L_main_138 $063F $ L_main_139: $063F $3001 MOVLW 1 $0640 $00F0 MOVWF STACK_0 $0641 $ L_main_138: $0641 $3000 MOVLW 0 $0642 $1870 BTFSC STACK_0, 0 $0643 $3010 MOVLW 16 $0644 $0623 XORWF _X, 0 $0645 $3910 ANDLW 16 $0646 $06A3 XORWF _X, 1 ;Fibonacci_Galoas.c,170 :: X.F5 = (X.F2 && !X.F3)||(!X.F2

&& X.F3); $0647 $3000 MOVLW 0 $0648 $1923 BTFSC _X, 2 $0649 $3001 MOVLW 1 $064A $00F1 MOVWF STACK_1 $064B $0871 MOVF STACK_1, 0 $064C $1903 BTFSC STATUS, Z $064D $2E50 GOTO L1302_ex_L_main_145 $064E $1DA3 BTFSS _X, 3 $064F $2E5B GOTO L_main_145 $0650 $ L1302_ex_L_main_145: $0650 $1923 BTFSC _X, 2 $0651 $2E59 GOTO L1316_ex_L_main_145 $0652 $3000 MOVLW 0 $0653 $19A3 BTFSC _X, 3 $0654 $3001 MOVLW 1 $0655 $00F1 MOVWF STACK_1 $0656 $0871 MOVF STACK_1, 0 $0657 $1D03 BTFSS STATUS, Z $0658 $2E5B GOTO L_main_145 $0659 $ L1316_ex_L_main_145: $0659 $01F0 CLRF STACK_0, 1 $065A $2E5D GOTO L_main_144 $065B $ L_main_145: $065B $3001 MOVLW 1 $065C $00F0 MOVWF STACK_0 $065D $ L_main_144: $065D $3000 MOVLW 0 $065E $1870 BTFSC STACK_0, 0 $065F $3020 MOVLW 32 $0660 $0623 XORWF _X, 0

Page 84: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

83

$0661 $3920 ANDLW 32 $0662 $06A3 XORWF _X, 1 ;Fibonacci_Galoas.c,171 :: DD.F0 =(X.F4 && !X.F5)||(!X.F4

&& X.F5); $0663 $3000 MOVLW 0 $0664 $1A23 BTFSC _X, 4 $0665 $3001 MOVLW 1 $0666 $00F1 MOVWF STACK_1 $0667 $0871 MOVF STACK_1, 0 $0668 $1903 BTFSC STATUS, Z $0669 $2E6C GOTO L1337_ex_L_main_151 $066A $1EA3 BTFSS _X, 5 $066B $2E77 GOTO L_main_151 $066C $ L1337_ex_L_main_151: $066C $1A23 BTFSC _X, 4 $066D $2E75 GOTO L1351_ex_L_main_151 $066E $3000 MOVLW 0 $066F $1AA3 BTFSC _X, 5 $0670 $3001 MOVLW 1 $0671 $00F1 MOVWF STACK_1 $0672 $0871 MOVF STACK_1, 0 $0673 $1D03 BTFSS STATUS, Z $0674 $2E77 GOTO L_main_151 $0675 $ L1351_ex_L_main_151: $0675 $01F0 CLRF STACK_0, 1 $0676 $2E79 GOTO L_main_150 $0677 $ L_main_151: $0677 $3001 MOVLW 1 $0678 $00F0 MOVWF STACK_0 $0679 $ L_main_150: $0679 $3000 MOVLW 0 $067A $1870 BTFSC STACK_0, 0 $067B $3001 MOVLW 1 $067C $0621 XORWF _DD, 0 $067D $3901 ANDLW 1 $067E $06A1 XORWF _DD, 1 ;Fibonacci_Galoas.c,172 :: DD.F1 = PORTB.F0; $067F $3001 MOVLW 1 $0680 $0506 ANDWF PORTB, 0 $0681 $00F0 MOVWF STACK_0 $0682 $3000 MOVLW 0 $0683 $1870 BTFSC STACK_0, 0 $0684 $3002 MOVLW 2 $0685 $0621 XORWF _DD, 0 $0686 $3902 ANDLW 2 $0687 $06A1 XORWF _DD, 1 ;Fibonacci_Galoas.c,173 :: DD.F2 = PORTB.F1; $0688 $3000 MOVLW 0 $0689 $1886 BTFSC PORTB, 1 $068A $3001 MOVLW 1 $068B $00F1 MOVWF STACK_1 $068C $3000 MOVLW 0 $068D $1871 BTFSC STACK_1, 0 $068E $3004 MOVLW 4 $068F $0621 XORWF _DD, 0 $0690 $3904 ANDLW 4 $0691 $06A1 XORWF _DD, 1 ;Fibonacci_Galoas.c,174 :: DD.F3 = PORTB.F2; $0692 $3000 MOVLW 0 $0693 $1906 BTFSC PORTB, 2 $0694 $3001 MOVLW 1

Page 85: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

84

$0695 $00F1 MOVWF STACK_1 $0696 $3000 MOVLW 0 $0697 $1871 BTFSC STACK_1, 0 $0698 $3008 MOVLW 8 $0699 $0621 XORWF _DD, 0 $069A $3908 ANDLW 8 $069B $06A1 XORWF _DD, 1 ;Fibonacci_Galoas.c,175 :: $069C $ L_main_125: ;Fibonacci_Galoas.c,177 :: $069C $2D4A GOTO L_main_118 $069D $ L_main_119: ;Fibonacci_Galoas.c,181 :: PORTD = 0; $069D $0188 CLRF PORTD, 1 ;Fibonacci_Galoas.c,182 :: PORTB = 0; $069E $0186 CLRF PORTB, 1 ;Fibonacci_Galoas.c,183 :: DD = 0; $069F $01A1 CLRF _DD, 1 ;Fibonacci_Galoas.c,184 :: X = 0; $06A0 $01A3 CLRF _X, 1 ;Fibonacci_Galoas.c,185 :: Y = 0; $06A1 $01A0 CLRF _Y, 1 ;Fibonacci_Galoas.c,186 :: k = 0; $06A2 $01A2 CLRF _k, 1 ;Fibonacci_Galoas.c,187 :: delay_ms(500); $06A3 $3003 MOVLW 3 $06A4 $00FC MOVWF STACK_12 $06A5 $30FF MOVLW 255 $06A6 $00FB MOVWF STACK_11 $06A7 $30FF MOVLW 255 $06A8 $00FA MOVWF STACK_10 $06A9 $0BFC DECFSZ STACK_12, F $06AA $2EAC GOTO $+2 $06AB $2EB3 GOTO $+8 $06AC $0BFB DECFSZ STACK_11, F $06AD $2EAF GOTO $+2 $06AE $2EB2 GOTO $+4 $06AF $0BFA DECFSZ STACK_10, F $06B0 $2EAF GOTO $-1 $06B1 $2EAC GOTO $-5 $06B2 $2EA9 GOTO $-9 $06B3 $308C MOVLW 140 $06B4 $00FB MOVWF STACK_11 $06B5 $30FF MOVLW 255 $06B6 $00FA MOVWF STACK_10 $06B7 $0BFB DECFSZ STACK_11, F $06B8 $2EBA GOTO $+2 $06B9 $2EBD GOTO $+4 $06BA $0BFA DECFSZ STACK_10, F $06BB $2EBA GOTO $-1 $06BC $2EB7 GOTO $-5 $06BD $30A1 MOVLW 161 $06BE $00FA MOVWF STACK_10 $06BF $0BFA DECFSZ STACK_10, F $06C0 $2EBF GOTO $-1 $06C1 $0000 NOP ;Fibonacci_Galoas.c,190 :: while (1);

// Kraj beskon. petlje $06C2 $28A8 GOTO L_main_0 ;Fibonacci_Galoas.c,191 :: //~ $06C3 $2EC3 GOTO

Page 86: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

85

VI LABORATORIJSKA VEŽBA

Slika 45. Raspored prekidača, taster i LED na ploči

1. Koristeći sliku 45 podesiti uredjaj da radi po Fibonacci-jevom metodu. 2. Zadati karakteristični polinom X4+X3+1 i početno stanje 0001 i izlistati stanja na izlazu.Takodje, odrediti i binarnu sekvencu.

stanje na izlazu binarna sekvenca dekadni ekvivalent

Posle koliko koraka se sistem vraća u početno stanje?______________________

Page 87: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

86

3. Naći recipročni polinomgore navedenog polinoma______________________. 4. Za isti karakteristični polinom ponoviti postupak ali za drugo početno stanje (npr. 1111). Koja se razlika uočava u ove dve sekvence?____________________________ 5. Promeniti ,sada, samo početno stanje u 0000 i generisati sekvencu na izlazu. Šta se u ovom slučaju dešava?_______________________________________ 6. Generisati polinom X4+X2+1 i odrediti stanja na izlazu za sledeće 3 različite početne vrednosti: 0001, 1011, 0011. Da li je primenjen polinom karakterističan polinom četvrtog stepena?________ Šta se uočava iz dobijenih rezultata?___________________________________ 7. Odrediti stanja na izlazu za karakteristični polinom drugog i trećeg stepena. Tabela sa karakterističnim polinomima je data u prvom poglavlju. Kroz koliko stanja prolazi sistem za karakteristične polinome 4,3,2,stepena respektivno? ______________________________________________________________ 8. Generisati sekvencu za sledeći polinom četvrtog stepena: X4+1. Šta uočavamo iz dobijenih rezultata?_________________________________ 9. Sada podesiti sistem da radi po Galois metodu i ponoviti sve korake. U čemu se razlikuju sekvenca dobijena Fibonacci-jevim od sekvence dobijene Galois metodom uz primenu istog karakterističnog polinoma?_____________________________ Kada definišemo povratne sprege uz pomoć polinoma koji članovi polinoma su uvek prisutni? ________________________________________________________________ Napomene: Podešavanje potrebnog polinoma za Fibonacci i Galois metod je komplementarno. Npr., za polinom X4+X3+1 i za Fibonacci-jev metod prekidače za izbor polinoma treba postaviti u sledeči polozaj: 1100 a za Galois metod u polozaj 0011. Stepen polinoma je definisan na sledeči način: 00-polinom prvog stepena (ne koristimo),01-polinom drugog stepena, 10-polinom trečeg stepena i 11-polinom četvrtog stepena. Na klizaču adaptera kojim se napaja sistem treba podesiti napon na 6 ili 7.5V (u pitanju je nestabilisan napon). Ako se izabere stepen polinoma niži od 4. stepena, mikrokontroler ignoriše viša početna stanja i više koeficijente polinoma. Dakle,obradjuje samo odgovarajuce. Pre svakog novog izbora stepena i tipa polinoma neophodno je resetovati mikrokontroler. Ako se tokom rada promene ova dva parametra, mikrokontroler ulazi u stanje u kome su sve LED isključene. Ako se tokom rada promene početna stanja i koeficijenti polinoma, to ne "proizvodi" nikakav efekat. Naime, mikrokontroler "pamti" samo pomenuta stanja i koeficijente do prvog pritiska tastera Sledeći.

Page 88: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

87

VII ZAKLJU ČAK Ovaj seminarski rad pruža mogućnost studentima da se upoznaju sa načinom implementacije i načinom rada PRNG-a. Za lakše izvođenje vežbe, u prvim poglavljima opisani su svi potrebni pojmovi i dodatno pojašnjeni na primeru implementacije PRNG-a petog stepena sa polinomom 1+X2+X5. U sledećim poglavljima je opisan PIC16F887A, zatim način programiranja mikrokontrolera i način realizacije praktičnog dela ovog projekta. Potom su opisani zadaci koje studenti treba da odrade pri izvođenju ove vežbe. U završnim poglavljima je dat pregled korišćene literature pri pisanju ovog projekta a koja je neophodna za detaljniju analizu PRNG-a. U ovom završnom delu su dati i datasheet-ovi pojedinih elemenata korišćenih u ovom radu. Sam proces simulacije PRNG-a obavlja mikrokontroler, dok se praćenje sekvence odvija na led diodama. U ovom projektu je predviđena i veza sa računarom. Videli smo da PRNG obezbeđuje brz i efikasan metod za generisanje pseudo-slučajne binarne sekvence, da mu je hardverska implementacija veoma jednostavna pa se softverska implementacija izuzetno retko koristi. Da postoje dve vrste implementacije i to: Fibonacci-jeva i Galois i obe se mogu lako modifikovati jedna u drugu. Takođe se može uočiti da je Galois implementacija efikasnija od Fibonacci-jeve zato što se sabiranje povratnih sprega kod nje vrši paralelno pa se zato koristi za veće frekvencije. Međutim i Fibonacci-jeva implementacija ima svoju primenu a karakteriše je to što je koncepciski lakša, zato što se samo ulazni bit u pomeračkom registru menja pri promeni kloka a sadržaj pomeračkog registra biće sledeća n cifra u binarnoj sekvenci. Uočava se da i Fibonacci i Galoa PRNG prolazi kroz sva stanja izuzev zabranjenog i vraćaju se u početno stanje, sa određenom periodom pod uslovom da su opisani primitivnim polinomom odgovarajućeg stepena. Zaključujemo da dobar PRNG treba da poseduje sledeće osobine: -Uniformnost – generisani brojevi treba da imaju ujednačenu raspodelu 0 i 1. -Nezavisnost – generisani brojevi treba da budu nezavisni jedni od drugih. -Ponovljivost – generisani brojevi trebaju biti ponovljivi. -Dužina ciklusa – treba da prođe dosta vremena pre nego što dođe do ponavljanja brojeva. -Brzina – potrebno je da budu brzi. -Memorija – nije potrebna velika memorija. Uočavamo i dve osobine koje u nekim primenama mogu izazvati probleme. Prva: imaju odstupanje koje se ogleda u tome što zabranjeno stanje nikada u normalnom radu nije prisutno. Međutim za duge sekvence ovo odstupanje postaje zanemarljivo. Druga: postoji mogućnost predviđanja sekvence. n+1 bit može se predvideti ako se zna prethodnih n. To znači da su poznate povratne sprege i stanje svakog flip-flopa.

Page 89: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

88

VIII SPISAK AKRONIMA PRNG- (Pseudo random number generator) pseudo slučajni binarni generator LFSR- (Linear feedback shift register) pomerački registar sa linearnom povratnom spregom PRBS-(Pseudo random binary sequencer) pseudo slučajni binarni sekvencer BIST-(Built-in selfe test) samougradjeni test XOR- Ekskluzivno ili kolo NXOR- Ekskluzivno nili kolo CPU-(Central processor unit) centralna procesorska jedinica ROM- (Read only memory) rom memorija EPROM- Eprom memorija FLASH- Flash memorija STACK-Hardverski magacin RAM- (Random acess memory) ram memorija SSP-(Synchronous serial port) serijska komunikacija USART-(Universal synchronous asynchronous receiver transmiter) serijska komunikacija,univerzalni sinhroni i asinhroni primopredajnik PSP- (Parallel slave port) paralelna komunikacija ASM- Asemblerski HEX- Heksadecimalni DEC- Decimalni COM1- Serijski port na računaru COM2- Serijski port na računaru ASCII- (American standard code for information interchange) standard za kodove ICE -(In circuit emulator) unutrašnji emulator GIE- (General interrupt enable) bit za doyvolu rada svih prekida WDT- Watchdog tajmer PCON-(Power control register) dvobitni statusni registar BOR- Brown-out reset ALU- Aritmetičko logička jedinica OST- Oscilator PWRT-(Power up timer) unošenje kašnjenja nakon uključenja napajanja POR-(Pover on reset) reset pri uključenju napajanja RISC-(Reduced instruction set computer) računar sa smanjenim brojem instrukcija CISC-(Complex instruction set computer) računar sa kompleksnim setom Instrukcija GPR-(General purposes registors) registri opšte namene SFR-(Special function registers) registri specijalne namene LED- (Light emiting diode) led dioda

Page 90: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

89

IX LITERATURA

1. RISC, CISC I DSP PROCESORI, Mile K. Stojčev, I izdanje, Elektronski fakultet, Niš, 1997.

2. ARHITEKTURE I PROGRAMIRANJE RAČUNARSKIH SISTEMA ZASNOVANIH NA FAMILIJI PROCESORA 80x86, Mile K. Stojčev, Branislav D. Petrović, I izdanje, Elektronski fakultet, Niš, 1999.

3. ZBIRKA ZADATAKA IZ MIKROPROCESORA I MIKRORAČUNARA, Mile K. Stojčev, Saša S. Ristić, Miloš D. Krstić, I izdanje, Elektronski fakultet, Niš, 1999.

4. LABORATORIJSKI PRAKTIKUM IZ PREDMETA MIKROPROCESORSKI SISTEMI, Tatjana Stanković, Saša S. Ristić, Miloš D. Krstić, Ivan Andrejić, Mile K. Stojčev, Elektronski fakultet,(Edicija Pomoćni Udžbenici) Niš, 2004.

5. http://es.elfak.ni.ac.rs – LABORATORIJA ZA EMBEDDED SISTEME,Elektronski fakultet Niš http://www.ti.com/msp430 – TEXAS INSTRUMENTS, EXPERIMENTER'S BOARD MSP430

6. ECE454 DIGITAL DESIGN II, LECTURE6: A RANDOM NUMBER GENERATOR IN VERILOG, Patrik Schaumont, Spring 2008.

7. PSEUDO-RANDOM BINARY SEQUENCES, Marcus Muller. 8. 16-BIT CRC GENERATOR, Cypress MicroSystems Inc, August 29,2003. 9. TEST COMPACTION, Mani Soma 10. LINEAR FEEDBACK SHIFT REGISTERS AND CICLIC CODES IN SAGE,

Timoti Brian Broock, April 24, 2006 . 11. BRANCH-ON-RANDOM, Edward Lee & Craig Zilles 12. ON THE DESIGN OF CLOCK-CONTROLLED PSEUDORANDOM BIT

GENERATORS WITH PRIME PERIODS, Chung-Huang Yang. 13. WHAT’S AN LFSR? , Texas Instruments, December 1996. 14. DESIGN TECHNIQUES OF FPGA BASED RANDOM NUMBER GENERATOR,

Pong P. Chu and Robert E. Jones. 15. FEEDBACK SHIFT REGISTER SEQUENCES, Hong-Yeop Song 16. RTL DESIGN OF A GENERIC PSEUDONOISE GENERATOR, Jean-Francois

Beaumont 17. AN OVERVIEW OF EMBEDDED SELF-TEST DESIGN, Gaurav Gulati, Ryan

Fonnesbeck, Sathya Vijayakumar, Sudheesh Madayi. 18. SERIJSKA KOMUNIKACIJA RAČUNARA I USART MODULA

MIKROKONTROLERA PIC16F877A, Dejan Lazić i Ivan Novaković, seminarski rad, Elektronski fakultet, Niš, 2006.

19. PIC16F877A, Datasheet

Page 91: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

90

X PRILOZI Introduction to µC

Help version: 2006/12/04

µC is a powerful, feature rich development tool for PICmicros. It is designed to provide the programmer with the easiest possible solution for developing applications for embedded systems, without compromising performance or control.

µC IDE

PIC and C fit together well: PIC is the most popular 8-bit chip in the world, used in a wide variety of applications, and C, prized for its efficiency, is the natural choice for developing embedded systems. mikroC provides a successful match featuring highly advanced IDE, ANSI compliant compiler, broad set of hardware libraries, comprehensive documentation, and plenty of ready-to-run examples.

Features

mikroC (µC) allows you to quickly develop and deploy complex applications:

• Write your C source code using the built-in Code Editor (Code and Parameter Assistants, Syntax Highlighting, Auto Correct, Code Templates, and more…)

Page 92: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

91

• Use the included mikroC libraries to dramatically speed up the development: data acquisition, memory, displays, conversions, communications… Practically all P12, P16, and P18 chips are supported.

• Monitor your program structure, variables, and functions in the Code Explorer. • Generate commented, human-readable assembly, and standard HEX compatible

with all programmers. • Inspect program flow and debug executable logic with the integrated Debugger. • Get detailed reports and graphs: RAM and ROM map, code statistics, assembly

listing, calling tree, and more… • We have provided plenty of examples for you to expand, develop, and use as

building bricks in your projects. Copy them entirely if you deem fit – that’s why we included them with the compiler.

Where to Start

• In case that you’re new to programming PIC microcontrollers, consider reading the PIC Specifics chapter. The topic may give you some useful pointers on PIC constraints, code portability, and good programming practices.

• If you are experienced in C programming, you will probably want to consult mikroC Specifics first. For language issues, you can always refer to the comprehensive Language Reference. The complete list of included libraries is available at mikroC Libraries.

• If you had little experience in C programming, don’t panic! We have provided plenty of exam-ples to get you going quickly. We suggest that you first consult Projects and Source Files, and then start browsing the examples that interest you the most.

Technical Support

The latest software can be downloaded at no cost via the Internet (you might want to bookmarkthe pa-ge so you could check for news, patches, and upgrades later on): http://www.mikroe.com/en/compilers/mikroc/pic/download.htm.

Should you encounter any problems, you are welcome to our support forum at www.mikroe.com/forum. Here, you may also find helpful information, hardware tips, and practical code snippets. Your com-ments and suggestions on future development of mikroC are always appreciated — feel free to drop a note or two on our Wishlist.

To ensure that all problems you encounter are sorted and corrected in an efficient manner, we suggest that you email us at [email protected]. Outline your specific problem and send us an attachment with relevant code. In this way, we can record and track down bugs more efficiently, which is in our mutual interest. We respond to every bug report and question in a timely manner, ever improving our technical support.

Page 93: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

92

Page 94: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

93

Page 95: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

94

Page 96: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

95

Page 97: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

96

Page 98: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

97

Page 99: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

98

Page 100: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

99

Page 101: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

100

Page 102: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

101

Page 103: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

102

Page 104: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

103

Page 105: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

104

Page 106: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

105

Page 107: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

106

Page 108: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

107

Page 109: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

108

Page 110: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

109

Page 111: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

110

Page 112: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

111

Page 113: GENERATOR PSEUDO-SLU ČAJNE BINARNE …es.elfak.ni.ac.rs/Papers/M.Nedeljkovic - PRNG.pdf · VII ZAKLJU ČAK ... Kroz sedmo poglavlje je dat kratak osvrt na ... Za razliku od nje hardverska

112

XI BIOGRAFIJA

1. Prezime: Nedeljković 2. Ime: Miodrag 3. Datum rođenja: 30.06.1977. 4. Nacionalnost: Srbin 5. Bračno stanje: Neoženjen

Kontakt adrese

Adresa: 36212 Ratina, Kraljevo E-mail: [email protected] Telefon: Mobilni telefon: 064 1900872

Obrazovanje

Institucija: Elektro-Saobraćajna tehnička škola

Kraljevo

Elektrotehničar pogona

Kompletna ili stepenovana diploma:

IV stepen

Sposobnosti Menadžerske veštine: Preduzimljivost, usredsređenost na razvoj, upornost, samopouzdanje, realističnost o svojim sposobnostima, sposobnost prihvatanja kritičnog mišljenja, motiv za uspehom. Sopstvene veštine: Orjentisanost ka ostvarenju zadatih ciljeva, postavljanje prioriteta, preuzimanje problema na sebe i rešavanje istih, komunikativnost, kreativnost, inovacije, spremnost na saradnju i rad pod stresom. Poznavanje jezika: Engleski jezik – osrednje. Iskustvo sa kompjuterom: Operativni sistemi: Windows 98, 2000, XP. Programski paketi: MS Office, Active HDL, Protel 2004 (DXP).