elektronski fakultet niš katedra za elektroniku
DESCRIPTION
Elektronski fakultet Niš Katedra za elektroniku. BINARNI PSEUDO-RANDOM SEKVENCER. Nedeljkovi ć Miodrag 10741. 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. - PowerPoint PPT PresentationTRANSCRIPT
Elektronski fakultet NišKatedra za elektroniku
BINARNI PSEUDO-RANDOM
SEKVENCER
Nedeljković Miodrag 10741
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.
• U prvom poglavlju date su opšte smernice vezane za PRNG.
-objašnjenja vezana za PRNG,
-kao i kratke teorije o karakterističnim,
-primitivnim i
-ne primitivnim polinomima.
• 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 (zaključak) je dat kratak osvrt na najbitnije karakteristike PRNG-a.
• Osmo poglavlje čini spisak akronima.
• Deveto poglavlje čini spisak korišćene literature koja je potrebna za bolje upoznavanje problematike vezane za PRNG.
• U desetom poglavlju je dat originalan opis za komponenete, hardver, i softver korišćen u izradi ovog seminarskog a koji daje proizvođač.
• I na kraju u desetom poglavlju je data biografija autora.
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).
• 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 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.
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+C2X2+...+Cn-2Xn-2+Cn-1Xn-1+CnXn
gde su koeficijenti Ci binarni koeficijenti (CiЄ(0,1)).
• Pošto se sa C01 i CnXn 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).
PRIMITIVNI POLINOMI
• Primitivni polinomi su oni koji ne mogu biti prikazani kao proizvod dva ne trivijalna polinoma.
• U tabeli 1. su dati primitivni polinomi od stepena n=2 do stepena n=5. Primitivni polinomi uvek dolaze u paru.
• Tabela 1. Primitivni polinomi u polju sa dva elementa (0,1) do petog stepena
n-stepen polinoma Primitivni polinom
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), ili dat preko binarne liste koeficijenata kao (1, 0, 0, 1, 1).
• Nalaženje recipročnog polinoma je dosta lagano. 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.
• 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 (trinom).
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.
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
• navigacioni sistemi
• CDMA mobilni komunikacioni sistemi
• kompresija podataka i dr.
IMPLEMENTACIJA PRNG-a• U praksi postoje dve veoma jednostavne
implementacije PRNG-a zasnovane na LFSR-u i to:
- Fibonacci-jev metod implementacije
- Galois metod mplementacije
• Bilo koji od ova dva metoda je moguće implementirati i hardverski i softverski.
FIBONACCI-jev METOD IMPLEMENTACIJE Fibonacci
˜1175-1250 Slika 1. 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.
• Mehanzam 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).
• 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.
• 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.
• 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+x3+x4 ili kao c0=1,c1=0,c2=0,c3=1,c4=1,
(1,0,0,1,1) ili kao (0,3,4).
• Pošto implementiramo PRNG pomocu polinoma 4-og stepena n=4, onda je dužina generatora sekvenci m=4, što znači da nam je potreban pomerački registar od 4 D flip-flopova za njegovu realizaciju (slika 3).
• Slika 2. Primer Fibonacci-jeve implementacije polinoma petog stepena
• Dužina binarne sekvence, za ovaj primer je mb=2n_ 1=24_ 1=15. Binarna sekvenca se čita sa flip-flopa najveceg stepena a to je u ovom slučaju na izlazu Q4.
Q
QSET
CLR
D
Q
QSET
CLR
D
Q
QSET
CLR
D
Q
QSET
CLR
D
Q1 Q2 Q3 Q4
Polinom povratne sprege
1 0 10 1
• Kao što se sa slike 3 vidi, za implementaciju ovog polinoma ulazi xor kola su vezani na izlaz flip-flopa (Q2) i izlaz flip-flopa (Q4) a izlaz na ulaz prvog flip-flopa.
• Za generisanje povratne sprege koristili smo primitivni polinom četvrtog stepena f(x)= 1+x3+x4 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 četvrtog stepena. Kao inicijalno stanje je uzeto stanje 0001. Koje stanje dolazi sledeće zavisi od predhodnog stanja i položaja povratne sprege.
• 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.
Slika 3. Primeri šta nam to u polinomu određuje koliko nam je potrebno flip-flopova i xor kola za implementaciju nekog polinoma.
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)
• 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.
• Sekvence dobijamo na Q1-Q4 a binarnu sekvencu čitamo na izlazu flip-flopa najvećeg stepena što kada se primeni na naš primer znači da je to na Q4.
Tabela 2 .Prikaz sekvence kroz koje prolazi PRNG za naš primer polinoma četvrtog stepena za Fibonacci-jev metod.
korak Q4Q3Q2Q1 Q4 Decimalni ekvivalent
1 0001 počeno st. 1 1
2 0010 0 2
3 0100 0 4
4 1001 0 9
5 0011 1 3
6 0110 1 6
7 1101 0 13
8 1010 1 10
9 0101 0 5
10 1011 1 11
11 0111 1 7
12 1111 1 15
13 1110 1 14
14 1100 0 12
15 1000 0 8
16 0001 ponovo 1 1
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.
• 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.
• 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.
• 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.
• 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 četvrtog stepena datog sa:
1+x3+x4 ili kao c0=1,c1=0,c2=0,c3=1,c4=1, (1,0,0,1,1) ilikao (0,3,4).
Pošto implementiramo PRNG pomocu polinoma četvrtog stepena n=4, onda je dužina generatora sekvenci m=4, što znači da nam je potreban pomerački registar od 4 D flip-flopova za njegovu realizaciju (slika 5).
Dužina binarne sekvence, za ovaj primer je mb=2n_ 1
= 24_ 1=15.
Binarna sekvenca se čita sa flip-flopa najveceg stepena a to je u ovom slučaju na izlazu Q4.
• I kod Galois implementacije za generisanje povratne sprege koristili smo primitivni polinom četvrtog stepena f(x)= 1+x3+x4 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.
Q
QSET
CLR
D
Q
QSET
CLR
D
Q
QSET
CLR
D
Q
QSET
CLR
D
Polinom povratne sprege
1 0 10 1
Q1 Q2 Q3 Q4
• 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.
• U tabeli 3 su date sekvence koje generiše Galois PRNG generisan sa polinomom iz gore navedenog primera. Početno stanje iz kojeg se kreće je stanje 0001.
• Tabela 3 .Prikaz sekvence kroz koje prolazi PRNG za naš primer polinoma četvrtog stepena za Galoas metod.
korak
Q4Q3Q2Q1 Q4 Decimalni ekvivalent
1 0001 poč.stanje 1 1
2 1001 1 9
3 1101 1 13
4 1111 1 15
5 1110 0 14
6 0111 1 7
7 1010 0 10
8 0101 1 5
9 1011 1 11
10 1100 0 12
11 0110 0 6
12 0011 1 3
13 1000 0 8
14 0100 0 4
15 0010 0 2
16 0001ponovo 1 1
• Pre nego što damo par poređenja Fibonacci-jevog i Galoa 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.
PIC16F877A• Mikrokontroler (microcontroller) je elektronski uređaj
koji, slično kao i računar, ima zadatak da zameni čoveka u kontroli dela proizvodnog procesa ili gotovo celog proizvodnog procesa. To je uređaj opšte namene, koji pribavlja podatke, obavlja ogranicenu obradu nad tim podacima, i upravlja svojim okruženjem na osnovu rezultata izracunavanja.
• Primenjuju se od jednostavne regulacije osvetljenja, alarmnih sistema, pa do upravljanja robotima u industrijskim pogonima.
Osnovne karakteristike mikrokontrolera
Firma Microchip je tržištu ponudila mikrokontroler PIC16F877 pre oko deset godina. Ovaj mikrokontroler takođe predstavlja integraciju mikroprocesora (CPU), memorije i periferija. On je izrađen u CMOS tehnologiji sa ugrađenom FLASH i EEPROM memorijama, za čuvanje programa i podataka. PIC16F877 ima tipičnu RISC arhtekturu (karakteriše se manjim skupom instrukcija koje se brže izvršavaju u odnosu na CISC arhitekturu).
• RISC CPU visokih performansi
• 35 instrukcija obima jedne reči
• Radna frekvencija do 20 MHz
•Sve instrukcije su jednocikluske, sem instrukcija grananja koje su dvocikluske
•Trajanje taktnog intervala 200 ns (pri frekvenciji 20 MHz) Opkôd je obima 14
bita
•Hardverski magacin (stack) ima osam nivoa
•Postoje tri načina adresiranja (direktno, indirektno i relativno)
•Programska flash memorija je kapaciteta 8 k X 14-bitnih reči
•Memorije za podatke (RAM) je kapaciteta 368 X 8 bita
•Memorije za podatke (EEPROM) je kapaciteta 256 X 8 bita
•Prekidi (maksimalno 14 izvora prekida)
•Šest ulazno-izlaznih portova (A, B, C, D i E)Tri tajmera:
- Timer0 (TMR0): osmobitni tajmer/brojač_događaja
- Timer1 (TMR1): šesnaestobitni tajmer/brojač_događaja
- Timer2 (TMR2): osmobitni tajmer/brojač_događaja
•Serijska komunikacija: MSSP, USA
•Paralelna 8-bitna komunikacija: PSP
• ICSP (In Circuit Serial Programing) preko samo dva izvoda
• Analogni komparatorski modul sa programabilnim referentnim naponima
• 8-kanalni 10-bitni ADC (Analog-to-Digital Converter, analogno/digitalni konvertor)
• 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 neposredno po stabili-zovanju radne
frekvencije oscilatora (OST)
• Sleep mode - režim rada sa veoma malim utroškom energije
• Watchdog tajmer sa sopstvenim integrisanim RC oscilatorom za nezavisni rad
• Izbor tipa oscilatora (RC, XT, HS, LP)
• 100000 ciklusa Write/Erase programske memorije
• 1000000 ciklusa Write/Erase memorije za podatke EEPROM
• Trajanje podataka u EEPROM duže od 40 godina
• Radni napon može da bude u opsegu 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
Samu strukturu mikrokontrolera PIC16F877 čini nekoliko celina:
• Aritmetičko-logička jedinica (ALU)
• Akumulator (Working Register)
• Hardverski magacin (Stack) organizivan u 8 nivoa
• EEPROM memorija podataka obima 256 bajtova
• Flash programska memorija – 8 kiloreči obima 14 bita
• RAM (File Registers) – 368 bajtova
• Višekanalni A/D konvertor,
• USART,
• SPI interfejs,
• I2C interfejs,
• šest U/I portova,
• tajmere itd.
Arhitektura mikrokontrolera PIC16F877
PORTOVI
Mikrokontroler PIC16F877 poseduje pet portova (PORT_A, PORT_B, PORT_C, PORT_D i PORT_E) i svi oni predstavljaju vezu njegove interne strukture sa spoljašnjim svetom. Svaki od ovih portova može da se konfiguriše kao ulazni ili kao izlazni. Ovi portovi su različitog obima:
- 6-pinski (PORT_A)
- 8-pinski (PORT_B, PORT_C, PORT_D)
- 3-pinski (PORT_E).
ORGANIZACIJA MEMORIJE
Strukturu memorije kod mikrokontrolera čine tri odvojena bloka:
-
Programska memorija
- Memorija podataka
- EEPROM memorija podataka.
PROGRAMIRANJE MIKROKONTROLERA
roC – SOFTVER ZA PIC MIKROKONROLERE
Navešćemo njegove osnovne karakteristike: -Kvalitetan editor sa automatskom kontrolom -Jasan asemblerski kôd i standardna kompatibilnost generisanih HEX datoteka -Preglednost strukture programa (kôda) -Veliki broj integrisanih biblioteka i rutina, koje
značajno ubrzavaju pisanje programa -Detaljni izveštaji i grafičko predstavljanje mape
RAM i -ROM memorija, statistike kôda i slično.
• mikroC – PARAMETRI UART TERMINALA -Serijski port (COM1, COM2, COM3) -Brzina prenosa -Broj stop bitova (1, 1.5 ili 2) -Izbor parnosti (bez, parna, neparna itd.) -Broj bitova koji čine karakter (5, 6, 7 ili 8) -Uključivanje/isključivanje handshaking
signala (RTS i DTR) -Izbor formata podatka koji se šalje (ASCII,
HEX ili DEC) -Način slanja. Za programiranje mikrokontrolera potrebni su -Bootstrap loader (na primer ALLPIC) i -Softver (na primer IC-Prog).
ALLPIC• Jednostavan i jeftin (do 10 evra)• Pripada grupi JDM loadera• Programiranje preko serijskog porta
• ALLPIC – električna šema
IC Prog – SOFTVER ZA PROGRAMIRANJE -Jednostavan za korišćenje -Kompatibilan sa 10-ak bootstrap loadera
V SIMULACIJA PRNG-a PREKO MIKROKONTROLERA
• Na sledećoj slici 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 narednoj slici , dok je izgled štampane ploče dat na slici koja je data iza prethodne.
• Blok-šema PRNG-a realizovanog sa mikrokontrolerom PIC16F877
• Električna šema PRNG-a realizovanog sa mikrokontrolerom
12
DC POWER
C3
220uF
C4
220nF
C1
220uF
D8 1N4007
C2
2.2nF
MCLR1
PA02
PA13
PA24
PA35
PA46
PA57
RD8
WR9
PC217
PD221
PD322
PC423
PC524
PC625
PC726
PD427
PD528
PD629
PD730
CS10
VDD11
VSS12
OSC113
OSC214
PC015
PC116
PC318
PD019
PD120
VSS31
VDD32
PB033
PB134
PB235
PB336
PB437
PB538
PB639
PB740
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
Vcc16
V+2
Gnd15
C1-3
T1out14
C2+4
R1in13
C2-5
R1out12
V-6
T1in11
T2out7
T2in10
R2in8
R2out9
IK3
MAX232
162738495
DB9/F
C11220nF
C10
220n
F
C8
220nF
C9
220n
F
C7220nF
Vin1
Gn
d2
Vout3
IK1
LM7805
12345678
9ON3
ResPack_8x1K5
12345678
9ON4
ResPack_8x1K5
1 2 3 4 5 6 7 80 0 0 0 0
1110
9
0 0 0 0 00
P1
NP11
• Raspored prekidača, taster i LED
• Štampana ploča PRNG-a realizovanog sa mikrokontrolerom
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; 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) { 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; 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}//~
LABORATORIJSKA VEŽBASlika 45. Raspored prekidača, taster i LED na ploči
1. Koristeći predhodnu sliku 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.
Posle koliko koraka se sistem vraća u početno stanje? ______________________
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čn polinome 4,3,2,stepena respektivno? ____________________________________________
Generisati sekvencu za sledeći polinom četvrtog stepena: X4+1.
Šta uočavamo iz dobijenih rezultata? _________________________________
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 ( 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.
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 četvrtog stepena sa polinomom 1+X3+X4. 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. 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. 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.
LITERATURA• RISC, CISC I DSP PROCESORI, Mile K. Stojčev, I izdanje, Elektronski fakultet, Niš, 1997.• ARHITEKTURE I PROGRAMIRANJE RAČUNARSKIH SISTEMA ZASNOVANIH NA FAMILIJI PROCESORA
80x86, Mile K. Stojčev, Branislav D. Petrović, I izdanje, Elektronski fakultet, Niš, 1999.• ZBIRKA ZADATAKA IZ MIKROPROCESORA I MIKRORAČUNARA, Mile K. Stojčev, Saša S. Ristić, Miloš D.
Krstić, I izdanje, Elektronski fakultet, Niš, 1999.• 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.
• http://es.elfak.ni.ac.rs – LABORATORIJA ZA EMBEDDED SISTEME,Elektronski fakultet Niš• http://www.ti.com/msp430 – TEXAS INSTRUMENTS, EXPERIMENTER'S BOARD MSP430• ECE454 DIGITAL DESIGN II, LECTURE6: A RANDOM NUMBER GENERATOR IN VERILOG, Patrik Schaumont,
Spring 2008.• PSEUDO-RANDOM BINARY SEQUENCES, Marcus Muller.• 16-BIT CRC GENERATOR, Cypress MicroSystems Inc, August 29,2003.• TEST COMPACTION, Mani Soma• LINEAR FEEDBACK SHIFT REGISTERS AND CICLIC CODES IN SAGE, Timoti Brian Broock, April 24, 2006 .• BRANCH-ON-RANDOM, Edward Lee & Craig Zilles• ON THE DESIGN OF CLOCK-CONTROLLED PSEUDORANDOM BIT GENERATORS WITH PRIME PERIODS,
Chung-Huang Yang.• WHAT’S AN LFSR? , Texas Instruments, December 1996.
• DESIGN TECHNIQUES OF FPGA BASED RANDOM NUMBER GENERATOR, • Pong P. Chu and Robert E. Jones.• FEEDBACK SHIFT REGISTER SEQUENCES, Hong-Yeop Song• RTL DESIGN OF A GENERIC PSEUDONOISE GENERATOR, Jean-Francois Beaumont• AN OVERVIEW OF EMBEDDED SELF-TEST DESIGN, Gaurav Gulati, Ryan Fonnesbeck, Sathya Vijayakumar,
Sudheesh Madayi.• SERIJSKA KOMUNIKACIJA RAČUNARA I USART MODULA MIKROKONTROLERA PIC16F877A, Dejan Lazić i
Ivan Novaković, seminarski rad, Elektronski fakultet, Niš, 2006.• PIC16F877A, Datasheet
BIOGRAFIJA
1. Prezime: Nedeljković1. Ime: Miodrag1. Datum rođenja: 30.06.1977.1. Nacionalnost: Srbin1. Bračno stanje: Neoženjen
Kontakt adrese
Adresa: 36212 Ratina, KraljevoE-mail: [email protected]:Mobilni telefon: 064 1900872
• Obrazovanje • Institucija: Elektro-Saobraćajna tehnička škola Kraljevo• Zanimanje 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).
•