720 likes | 942 Views
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.
E N D
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. • Udesetom 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
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šifrovanjepodataka). • 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-1250Slika 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.
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.
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.
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 ilikao 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.
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.
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.
Osnovnekarakteristikemikrokontrolera Firma Microchipje 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.
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čajnoubrzavaju 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 programiranjemikrokontrolera 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
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.