pdf - Univerzitet u Nišu
pdf - Univerzitet u Nišu
pdf - Univerzitet u Nišu
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Univerzitet</strong> u <strong>Nišu</strong><br />
Elektronski fakultet - Niš<br />
Katedra za Elektroniku<br />
Mentor: prof. dr M. Stojčev<br />
SPREGA MIKROKONTROLERA PIC16F877<br />
SA PARALELNIM PERIFERIJSKIM<br />
INTERFEJSOM D71055C I D/A<br />
KONVERTOROM DAC0832LCV<br />
Studenti:<br />
Siniša Stoilković 10984<br />
Mladen Pavlović 10922<br />
Slaviša Popović 10937
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
SADRŽAJ<br />
UVODNA REČ -03-<br />
OPIS MIKROKONTROLERA PIC16F877-04 -04-<br />
PARALELNI PERIFERIJSKI INTERFEJS 8255 -15-<br />
DIGITALNO-ANALOGNA KONVERZIJA -27-<br />
ANALOGNA- DIGITALNA KONVERZIJA -34-<br />
OPIS PROJEKTA -62-<br />
LABORATORIJSKA VEŽBA -72-<br />
ZAKLJUČAK -76-<br />
LITERATURA -77-<br />
DATASHEETS – IZVODI -78-<br />
AUTORI PROJEKTA -94-<br />
FOTOGRAFIJA UREĐAJA -97-<br />
2
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
UVODNA REČ<br />
Ideja autora rada koji je pred vama bila je da se ilustruje način sprezanja<br />
mikrokontrolera PIC16F877-04 sa paralelnim periferijskim interfejsom (PPI)<br />
D71055C (zamean za 8255) i D/A konvertorom DAC0832.<br />
Prvo poglavlje sadrži opis mikrokontrolera PIC16F877-04. Zatim je u<br />
kratkim crtama opisan PPI 8255. U trećem i četvrtom poglavlju su izloženi<br />
principu D/A i A/D konverzije.<br />
Električna šema i izgled štampane ploče projekta sa objašnjenjima<br />
ilustrovani su u petom poglavlju. U istom poglavlju se nalazi izgled programa u<br />
mikroC-u i asembleru.<br />
Ovde želimo da istaknemo kako je mikrokontroler isprogramiran preko<br />
AllPIC programatora uz pomoć softvera IC-Prog. O proceduri programiranja<br />
priložen je kompletan tekst koji se nalazi u poglavlju DATASHEETS-PRILOZI.<br />
3
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
/I/ OPIS MIKROKONTROLERA PIC16F877-04<br />
1-1. OSNOVNE KARAKTERISTIKE MIKROKONTROLERA<br />
PIC16F877 je Microchip-ov 8-bitnom CMOS mikrokontroler baziran na<br />
ash tehnologiji.To znači da u samom čipu postoji programska memorija koja<br />
se upisuje i briše električnim putem, što je daleko naprednije od brisanja<br />
EPROM-a UV zracima.<br />
RISC arhitektura omogućuje odvojene magistrale 8-bitnih podataka i 14bitne<br />
programske memorije, pa je moguće da se pribavlja naredna instrukcija<br />
dok se izvršava tekuća (eng. pipelining). Sve instrukcije traju jednako (osim u<br />
slučaju grananja programa) i završe se za četiri ciklusa oscilatora. Dakle, ako<br />
je oscilator kongurisan na 4 MHz, dobija se da ciklus instrukcije iznosi 1 µs.<br />
Jezgro mikrokontrolera PIC16F877 proizvodi se u 40-pinskom (DIP) ili<br />
u 44-pinskim kućištima (QFP i PLCC), Slika 1-1.<br />
Slika 1-1. Kućišta u koja se «pakuje» PIC16F877 (a. DIP-40, b.PLC-44,<br />
c.TQFP-44)<br />
Sa blok dijagrama kojeg daje Microchip (Slika 1-2) može se ustanoviti da<br />
se koncepcija ovog mikrokontrolera ne razlikuje mnogo od koncepcije RISC<br />
mikrokontrolera drugih proizvođača prisutnih na tržištu. Uočavaju se<br />
standardne komponente:<br />
• Flash programska memorija – 8 kword<br />
• RAM (File Registers) – 368 bajtova<br />
• Aritmetičko-logička jedinica (ALU)<br />
• Akumulator (Working Register)<br />
4
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
• Hardverski magacin (Stack) sa 8 nivoa<br />
• EEPROM memorija podataka – 256 bajtova<br />
• Razne periferne jedinice (portovi, tajmeri, A/D konvertor, USART,...)<br />
PIC16F877 podržava tehniku prekida (eng. interrupts). Postoji ukupno 14<br />
izvora prekida, što spoljašnjih, što unutrašnjih. Svaki prekid nema sopstveni<br />
interapt-vektor, već postoji jedinstvena adresa (0x0004) od koje se<br />
nastavlja izvršavanje programa kada se dogodi bilo koji od njih. Tada je na<br />
programeru da prozivanjem zastavica/markera pojedinih prekida (eng.<br />
interrupt ags polling) ustanovi ko traži prekid i uputi program na<br />
izvršavanje odgo-varajuće rutine za obradu. Adresa na koju se program treba<br />
vratiti po obradi prekida čuva se automatski u hardverskom magacinu i u<br />
programski brojač vraća izvršavanjem instrukcije RETFIE.<br />
Slika 1-2. Arhitektura mikrokontrolera<br />
Ono što mikrokontrolere izdvaja od ostalih procesora jeste prisustvo raznih<br />
specijalnih kola koja se trebaju izboriti sa potrebama real-time aplikacija.<br />
Ovaj mikrokontroler poseduje niz osobina potrebnih da se maksimizuje<br />
pouzdanost sistema, minimizuje cena kroz eliminaciju eksternih komponenti,<br />
omoguće režimi niske potrošnje energije, pružanje zaštite programskog kôda.<br />
Upotreba navedenih resursa deniše se u programatorskom soſtveru<br />
upisom odgovarajuće konguracione reči u registar CONFIG. Taj registar je<br />
dostupan samo u toku upisa programa u mikrokontroler i drugačije se ne<br />
može adresirati.<br />
5
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Među ponuđenim karakteristikama postoji mogućnost izbora četiri tipa<br />
oscilatora, mogućnost upotrebe Power-up (PWRT) i Oscilator Start-up<br />
(OST) tajmera, te eventualno korišćenje Power-on (POR) i/ili Brown-out<br />
(BOR) reseta. Povećanju pouzdanosti kroz sprečavanje zalaska programa u<br />
mrtve petlje pomaže upotreba Watchdog tajmera (WDT). Zaštitu kôda od<br />
neželjenog čitanja pruža opcija code protection.<br />
Za uređaje sa baterijskim napajanjem interesantna mogućnost je Sleep<br />
Mode, režim sa smanjenom potrošnjom energije, kada se program ne izvršava,<br />
ali rade neke periferne jedinice koje mogu “probuditi” mikrokontroler. Tada je<br />
potrošnja mikrokontrolera ispod 1 µA.<br />
Slika 1-3. Mapa programske memorije<br />
Napajanje se dovodi na pinove VDD, a masa na pinove VSS. Nožice<br />
OSC1 i OSC2 služe za priključenje oscilatorskih komponenti (RC-kolo ili<br />
rezonator), odnosno priključenje eksternog oscilatora kao bolje, ali skuplje<br />
varijante. Osim za reset-kolo pin 1 (MCLR/VPP) ima ulogu u toku procesa<br />
programiranja mikrokontrolera. Ostalih 33 pina predstavljaju I/O linije.<br />
Oni su grupisani u pet portova (PORT A, B, C, D i E) i svaki od njih je<br />
individualno kongurabilan kao izlazni ili kao ulazni. Osim opšte namene,<br />
većina pinova ima i specičnu svrhu koja se programski dodeljuje u slučaju<br />
korišćenja nekih specijalnih periferija mikrokontrolera (brojača, serijske<br />
komunikacije, A/D konvertora i dr.)<br />
Na kraju ovog uvoda treba napomenuti da su Microchip PIC<br />
mikrokontroleri dominantni u odnosu na konkurentne relativno visokom<br />
6
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
strujom koju može propustiti I/O pin (25 mA). Takođe, ova familija<br />
mikrokontrolera poseduje veoma širok opseg napona napajanja koji se proteže<br />
od 2,0 V do 5,5 V.<br />
1-2. MEMORIJSKA MAPA MIKROKONTROLERA<br />
Strukturu memorije kod PICmicro mikrokontrolera čine tri odvojena bloka:<br />
• Programska memorija<br />
• Memorija podataka<br />
• EEPROM memorija podataka.<br />
Odvojeno od navedenih memorijskih blokova egzistira zasebna struktura<br />
magacin (stack), koja se sastoji od osam 13-bitnih registara. Stek pointer se<br />
ne može čitati i upisivati. Prilikom izvršenja instrukcije CALL ili prilikom poziva<br />
prekida mikrokontrolera, adresa sledeće instrukcije se stavlja na<br />
magacin. Ponovno vraćanje starog sadržaja programskog brojača izaziva<br />
izvršenje instrukcije RETURN, RETFIE ili RETLW. Magacin radi na principu<br />
cirkularnog bafera, što znači da se u njega može staviti osam različitih<br />
adresa, a da pokušaj unošenja devete izaziva brisanje prve i tako redom.<br />
Programski se ne može utvrditi da li je došlo do prepunjavanja magacina.<br />
Organizacija programske memorije<br />
PIC16F877 mikrokontroleri imaju 13-bitni programski brojač (PC) koji<br />
je može da adresira memorijski prostor od 8k programskih reči od 14 bita.<br />
Reset vektor je 0x0000 i od njega počinje izvršavanje programa. Interapt<br />
vektor je 0x0004. Mapa programske memorije i magacin prikazani su<br />
dijagramom na Slici 1-3.<br />
Organizacija memorije podataka<br />
Memorija za podatke je izdeljena u više celina banki (eng. banks), a<br />
sastoji se od registara opšte namene (General Purpose Registers) i<br />
registara specijal-<br />
7
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Slika 1-4. Registarska mapa mikrokontrolera<br />
ne funkcije (Special Function Registers). U jednom od specijalnih registara,<br />
tzv. STATUS registru postoje dva bita RP1 i RP0 koji služe za odabir željene<br />
banke podataka po principu:<br />
8
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Svaka banka može da sadrži do 128 registara (0x7F). Niže lokacije u<br />
banci zauzimaju specijalni registri, a ostatak prostora popunjavaju registri<br />
opšte namene implementirani kao statički RAM. Neki specijalni registri koji<br />
se često koriste mapirani su u sve banke da bi se omogućio brži pristup i<br />
redukcija kôda.<br />
Mapa registara procesora PIC16F877A prikazana je na Slici 1-4. Nekoliko<br />
specijalnih registara su registri jezgra, usko povezani sa funkcionisanjem<br />
CPU. Ostali registri su vezani za periferne module i služe njihovom upravljanju<br />
i kontroli statusa.<br />
Sledi opis nekoliko najvažnijih i najčešće korišćenih registara jezgra:<br />
- Programski brojač (PC) određuje adresu instrukcije u programskom ešu<br />
koja će sledeća biti pribavljena. Reč je o 13-bitnom registru. Simboličko ime<br />
nižeg bajta je PCL. To je registar koji se može i upisivati i iščitavati. Težih<br />
pet bita programskog brojača smešteni su u izolovani registar PCH kojem se<br />
pristupa samo preko leča PCLATH mapiranom u internom RAM-u na adresi<br />
0x0A.<br />
- STATUS registar je veoma bitan i zato je predviđeno da se može<br />
adresirati iz bilo koje banke. On pokazuje status aritmetičko-logičke jedinice,<br />
reset status mikrokontrolera i sadrži bite za selekciju banki internog RAMa.<br />
Od navedenih egova posebno treba izdvojiti Zero<br />
bit (Z) koji se postavlja kad je rezultat aritmetičke operacije jednak nuli i bit<br />
prenosa (eng. Carry - C).<br />
- Registar OPTION_REG se koristi za konguraciju preskalera za tajmer 0<br />
ili Watchdog, za upravljanje tajmerom 0, selekciju ivice okidanja eksternog<br />
interapta, te za omogućenje Pull-up otpornika na portu B.<br />
- INTCON je registar za manipulisanje sistemom prekida<br />
mikrokontrolera. Pored bita za omogućenje svih prekida (GIE) i bita za<br />
omogućenje perifernih prekida (PEIE), u ovom registru su interapt-egovi i<br />
biti omogućenja prekida tajmera 0, spoljašnjeg prekida na pinu RB0/INT i<br />
prekida porta B na promenu stanja. Osim ova tri osnovna prekida postoji<br />
još 11 periferijskih prekida. Bitovi za njihovo omogućenje nalaze se u<br />
registrima PIE1 i PIE2, a korespondentni egovi, vesnici interapta, u registrima<br />
PIR1 i PIR2. Ovi se egovi setuju čim se ispuni uslov interapta bez obzira na<br />
stanje njihovog bita omogućenja, a po izvršenju servis rutine potrebno ih je<br />
soſtverski resetovati.<br />
- Kada je reč o registrima jezgra ne treba zaboraviti par FSR (File Select<br />
Register) i INDF (Indirect File), koji služe za indirektno adresiranje memorije<br />
podataka. Bilo koja instrukcija koja se obraća INDF registru, u stvari,<br />
indirektno pristupa onoj lokaciji internog RAM-a čija je adresa trenutno u<br />
registru FSR.<br />
- Konačno, treba spomenuti registar PCON (Power Control Register). U<br />
PIC16F877 ovaj registar sadrži samo dva bita. Pomoću bita POR detektuje se<br />
razlika između Power-on reseta i reseta izazvanih drugim uzrokom. Drugi<br />
bit (BOR) služi kao indikacija Brown-out stanja (nedozvoljeni naponski nivoi u<br />
napajanju mikrokontrolera), zbog kojeg se takođe može desiti reset.<br />
9
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Interni EEPROM za podatke<br />
Ova memorija sadrži 256 bajtova. Ukoliko je potrebno neke podatke<br />
sačuvati i po ukidanju napajanja mikrokontrolera, treba ih prethodno zapisati<br />
u interni EEPROM.<br />
1-3. OPIS PERIFERNIH JEDINICA<br />
I/O portovi<br />
Za vezu mikrokontrolera sa svetom oko sebe zaduženi su ulazno/izlazni<br />
portovi. Ima ih pet i označeni su slovima od A do E. Nejednake su širine,<br />
pa tako port E čine samo tri pina, port A šest, a ostala tri porta su osmopinski.<br />
Neki pinovi I/O porta su povezani sa nekom perifernom funkcijom<br />
mikrokontrolera. Jedino ako je odgovarajuća periferna jedinica<br />
neupotrebljena, moguće je njen pin koristiti kao I/O liniju opšte namene.<br />
Konguracija smera portova vrši se upisom konguracionog bajta u pripadajući<br />
TRIS registar po pravilu da nula čini pin izlaznim, a jedinica ulaznim.<br />
Svaki port poseduje odgovarajući registar (PORTX) preko kojeg se<br />
programski pristupa I/O pinovima. Upis u neki od tih registara iniciraće upis u<br />
leč tog porta, a njegovo čitanje rezultiraće čitanjem logičkih stanja<br />
direktno sa pinova. Sve instrukcije upisivanja su tzv. read-modify-write<br />
instrukcije. To znači da se pri upisu u port prvo očitaju stanja pinova,<br />
izvrši modikacija, a potom ispravljena vrednost smesti u leč porta.<br />
Nema velike razlike u električnoj konstrukciji navedenih pet portova. Port<br />
B se od ostalih razlikuje interesantnom opcijom koju nude četiri njegova viša<br />
bita. Ukoliko se setuje bit RBIE u registru INTCON, svaka promena stanja na<br />
ovim pinovima izazvaće prekid mikrokontrolera.<br />
Tajmeri<br />
Ove se periferije koriste za merenje vremena i brojanje eksternih<br />
događaja. Ugrađena su tri tajmerska modula (TMR 0,1,2) od kojih svaki ima<br />
svoje specičnosti.<br />
Tajmer0 je jednostavni 8-bitni brojač koji generiše interapt pri prelasku sa<br />
0xFF na 0x00 (overow). Poseduju ga svi niži PICmicro procesori i ovde je<br />
zadržana kompatibilnost s njima. Izvor takta za tajmer 0 može biti bilo interni<br />
sistemski sat (Fosc/4), bilo spoljašnji generator takta spojen na pin<br />
RA4/T0CKI. Moguće je podesiti da se brojač inkrementira na rastuću ili<br />
opadajuću ivicu spoljačnjeg signala.<br />
U sadejstvu sa modulom tajmera 0 može se koristiti programabilni<br />
preskaler (delilac frekvencije) sa odnosima deljenja od 1:2 do 1:256. Ukoliko<br />
deljenje nije potrebno preskaler se dodeli watchdog tajmeru.<br />
Kada je preskaler u upotrebi maksimalna frekvencija eksternog izvora<br />
iznosi 50 MHz što je veće od maksimalne frekvencije samog mikrokontrolera.<br />
10
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Tajmer 1 je 16-bitni i osposobljen je da radi kao brojač/merač vremena.<br />
Ima tri izvora takta: sistemski sat (Fosc/4), spoljašnji takt ili spoljašnji<br />
kristal.<br />
Brojač eksternih događaja može da se sinhronizuje sa internim<br />
oscilatorom, a postoji i asinhroni način rada koji omogućuje da se brojač<br />
inkrementira i u sleep režimu. Preskaliranje je upotrebljivo sa vrednostima<br />
deljenja 1:1, 1:2, 1:4 i 1:8.<br />
Tajmer 2 je 8-bitni tajmer sa programabilnim pre skalerom i<br />
postskalerom. Može da bude tajmer/brojač opšte namene. Međutim, potreban<br />
je CCP modulu prilikom generisanja PWM signala, te modulu za sinhronu<br />
serijsku komunikaciju (SSP) kao Baud Rate generator. U kooperaciji sa<br />
tajmerom 2 koristi se registar PR2 (Period Register). Kada se vrednost brojača<br />
izjednači sa vrednošću upisanom u registar PR2, generiše se odgovarajući<br />
interapt.<br />
CCP moduli<br />
CCP je skraćenica za Compare/Capture/PWM. PIC16F877 poseduje dva<br />
ovakva modula koji mu “pomažu” da se lakše nosi sa raznim zahtevima realtime<br />
aplikacija.<br />
U modu Capture kada se desi događaj na pinu RC2/CCP1 16-bitna<br />
vrednost tajmera 1 preslikava se u registre CCPR1H:CCPR1L. Istovremeno se<br />
setuje korespondentni interapt eg u registru PIR1. Da bi ova operacija<br />
bila uspješna tajmer1 mora raditi u tajmerskom modu ili modu<br />
sinhronizovanog brojanja.<br />
U modu Compare 16-bitna vrednost registra CCPR1 se stalno<br />
poredi sa vrednošću para registara tajmera 1. Kada dođe do izjednačenja<br />
moguće je da se pin RC2/CCP1 setuje, resetuje ili ostane nepromenjen, što se<br />
ranije podesi odgovarajućim konguracionim bajtom upisanim u registar<br />
CCP1CON. I u ovom slučaju se setuje interapt eg CCP1IF.<br />
U modu PWM (Pulse Width Modulation) pin RC2/CCP1 proizvodi<br />
širinsko-impulsni modulisani signal rezolucije do 10 bita. Pojednostavljeni blokdijagram<br />
PWM modula dat je na Slika 1-5.<br />
Period PWM signala određuje se upisom u PR2 registar po formuli:<br />
PWM_period = [(PR2)+1] · 4 · Tosc · TMR2_preskaler.<br />
Vreme ispune (Duty Cycle Time) menja se upisom u registar CCPR1L i dva<br />
bita registra CCP1CON (bitovi 5 i 4). Time je omogućena maksimalno 10bitna<br />
rezolucija PWM izlaza. Formula za proračun je:<br />
PWM_Duty_Cycle = (CCPR1L:CCP1CON) · Tosc · TMR2_preskaler.<br />
Ostale periferije<br />
Ovde će ukratko biti pomenuti još nekoliko periferijskih modula koje<br />
PIC16F877 poseduje.<br />
11
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
S obzirom na kontinualnost pojava u spoljašnjem svetu, teško je upravljati<br />
bilo kojim procesom bez digitalizacije analognih veličina. Na većinu zahteva<br />
može odgovoriti 10-bitni, 8-kanalni A/D konvertor konstruisan na principu<br />
sukcesivnih aproksimacija.<br />
Mikrokontroler je deo mreže elektronskih sklopova koji međusobno<br />
komuniciraju i razmenjuju podatke. U tu svrhu, on je opremljen sa tri<br />
hardverska komunikaciona modula.<br />
Prvi među njima je SSP modul (Synchronous Serial Port), koji služi za<br />
komunikaciju sa serijskim EEPROM-ima, pomeračkim registrima, displejdrajverima,<br />
A/D konvertorima, itd. Ovaj modul može raditi u jednom od dva<br />
moda:<br />
• Serial Peripheral Interface (SPI),<br />
• Inter-Integrated Circuit (I2C).<br />
Drugi serijski komunikacioni modul je USART (Universal Synchronous<br />
Asynchronous Receiver Transmiter). On uglavnom služi za povezivanje sa<br />
personalnim računarom, ali to nije njegova jedina mogućnost primene.<br />
USART se može kongurisati u neki od sledećih modova rada:<br />
• Asinhroni rad (full duplex),<br />
• Sinhroni master rad (half duplex),<br />
• Sinhroni slave rad (half duplex).<br />
Osim serijskih, postoji i jedan paralelni komunikacioni modul. Reč je o<br />
modulu PSP (Parallel Slave Port). On služi da se PIC16F877 direktno<br />
poveže na 8-bitnu magistralu podataka drugog mikroprocesora. Eksterni<br />
procesor tada koristeći linije Read (RD) i Write (WR) može da čita i upisuje<br />
PORTD registar kao svaki drugi 8-bitni leč.<br />
1-4. PROGRAMIRANJE<br />
Set instrukcija<br />
U duhu harvardske RISC arhitekture procesor ima samo 35 instrukcija.<br />
One su 14-bitne i sastoje se od operacionog kôda i jednog ili više operanada.<br />
Slika 1-5 prikazuje opšti format implementiranih instrukcija, a kompletan<br />
pregled seta instrukcija daje Tabela 3.1. Instrukcije su podeljene u tri<br />
kategorije:<br />
• Byte-oriented (operacije sa čitavim registrima),<br />
• Bit-oriented (operacije sa pojedinim bitovima),<br />
• Literal & Control (operacije sa konstantama i upravljačke).<br />
12
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Slika 1-5. Format instrukcije<br />
Izvršavanje svake instrukcije traje jedan mašinski ciklus, osim kod<br />
grananja programa. Kod potvrdnog odgovora u nekom testu, pribavljena<br />
instrukcija se proglašava nevažećom i traži se nova, što rezultuje trajanjem od<br />
dva mašinska ciklusa. Dok se tokom drugog ciklusa pribavlja nova instrukcija,<br />
praktično se izvršava naredba NOP.<br />
Jedan mašinski ciklus traje četiri perioda oscilatora, što garantuje njegovu<br />
dužinu od 1µs pri frekvenciji oscilatora od 4 MHz.<br />
13
Napomene:<br />
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Tabela 1-1. Set instrukcija mikrokontrolera<br />
1. Kada se vrši modikacija I/O registra, a u instrukciji se koristi<br />
prethodno njegovo stanje (npr.MOVF PORTB,1), kao operand se koristi<br />
stanje pročitano sa pinova porta. Tako je moguće da se u leč pina<br />
kongurisanog kao ulaz i postavljenog na nulu preko spoljašnjih<br />
elektronskih komponenti, posle izvršenja instrukcije upiše nula.<br />
2. Ako se ova instrukcija izvrši nad registrom TMR0 (i ako je d=1, gde je<br />
to moguće), preskaler će biti resetovan, ako je dodeljen tajmerskom<br />
modulu.<br />
3. Ako je modikovan programski brojač (PC) ili je rezultat logičkog testa<br />
pozitivan, za izvršenje instrukcije biće potrebna dva mašinska ciklusa.<br />
U drugom ciklusu praktično se izvršava naredba NOP (No operation).<br />
14
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
/II/ PROGRAMABILNI PARALELNI PERIFERIJSKI<br />
INTERFEJS 8255<br />
Čip 8255 je Intel-ovo programabilni periferijski interfejs (Programmable<br />
Peripheral Interface) koji se koristi u mikroprocesorskim/mikrokontrolerskim<br />
sistemima u cilju povezivanja periferija na sistemsku magistralu. Može da<br />
funkcioniše u tri režima (Mod 0, Mod 1 i Mod 2), ima 24 ulazno-izlaznih pinova<br />
koji su grupisani u okviru 3 porta (A, B i C). Pomenuti pinovi mogu da se<br />
koriste (programiraju) u dve grupe od po 12 pinova.<br />
U Modu 0 svaka grupa od 12 ulazno-izlaznih pinova može da se<br />
programira u podgrupe od po 4, koji se definišu kao ulazi ili kao izlazi.<br />
U Modu 1 svaka grupa može da se programira da ima po 8 linija ulaza ili<br />
izlaza. Od preostalih četiri, tri pina se koriste za signale handshake protokola,<br />
dok se jedan koristi za kontrolu prekida.<br />
Mod 2 predstavlja bidirekcioni rad magistrale koja koristi 8 linija za<br />
bidirek-cionu magistralu, i 5 linija, tako što “pozajmljuje” jednu od ostalih<br />
grupa, za handshake protokol.<br />
Kao dodatne mogućnosti čipa PPI 8255 ubrajaju se mogućnost bitskog<br />
setovanja i resetovanja, kao i mogućnost davanja struje od 1 mA po pinu, pri<br />
naponu od 1.5 V. Ova druga mogućnost omogućava da se preko spoljašnjih<br />
Darlingtonovih tranzistora napajaju uređaji kao što su štampači ili visokonaponski<br />
displeji.<br />
Pored firme Intel, ovo kolo proizvode i druge renomirane kompanije<br />
(Altera, NEC, Dallas Semiconductor, National Semiconductor, Intersil,<br />
Toshiba itd.)<br />
Napomenućemo kako se integrisano kolo 8255 proizvodi u NMOS<br />
tehnologiji (tada nosi oznaku 8255A) i C(H)MOS tehnologiji (oznaka<br />
82C55A). Bez obzira da li je izrađen u NMOS ili CMOS tehnologiji, čip 8255 je<br />
TTL kompatibilan.<br />
Kolo 8255 se pakuje u standardna kućišta DIP40, PLCC44 i QFP44, a<br />
njihov izgled i raspored pinova za sva tri kućišta su prikazani na Slici 2-1 i<br />
Slici 2-2, respektivno.<br />
Slika 2-1. Izgled kućišta čipa 8255<br />
15
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Slika 2-2. Raspored pinova na čipu 8255<br />
2-1. FUNKCIONALAN OPIS ČIPA<br />
Integrisano kolo 8255 pripada programibilnim periferijskim interfejsima<br />
(Programmable peripheral interface), skraćeno PPI. S obzirom da je funkcionalna<br />
konfiguracija kola 8255 isprogramirana sistemskim softverom,<br />
nije potrebna spoljašnja logika za povezivanje periferijskih uređaja ili<br />
struktura.<br />
Na Slici 2-3 prikazna je interna organizacija 8255, koja je dostupna<br />
programeru, a na Slici 2-4 prikazana funkcionalna šema kola.<br />
Slika 2-3. Interna organizacija 8255 transparentna programeru<br />
16
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Slika 2-4. Funkcionalna šema integrisanog kola 8255<br />
Bafer magistrale podataka<br />
U pitanju je bidirekcioni trostatički bafer za prihvatanje osmobitnih<br />
podataka. Ovaj bafer predstavlja „most” preko kojeg se ostvaruje povezivanje<br />
”unutrašnjosti“ integrisanog kola 8255 sa sistemskom magistralom podataka<br />
mikroprocesora/mikrokontrolera. Bafer prenosi/prihvata podatke nakon<br />
izvršavanja ulaznih ili izlaznih instrukcija od strane mikroprocesora. Kontrolni<br />
kod i statusne informacije se takođe prenose preko ovog bafera.<br />
R/W Kontrolna logika<br />
Funkcija ovog bloka je da upravlja sa svim unutrašnjim i spolja šnjim<br />
prenosima. Prihvata upravljačke signale sa sistemske magistrale, upravlja<br />
radom ulazno/izlaznog bafera i generiše signale za rad celokupnog kola. Izbor<br />
PIA se vrši signalom CS (Chip Select).<br />
__<br />
CS (Chip Select)<br />
Chip Select je ulazni signal kojim se dozvoljava rad kola. Kada kolo nije<br />
selektovano, ne vrši se nikakva operacija. Čip je aktivan kada je ovaj pin<br />
postavljen u stanje logičke nule.<br />
17
___<br />
RD (Read)<br />
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Kada je ovaj signal na logičkoj nuli, u toku je operacija čitanja.<br />
____<br />
WR (Write)<br />
Kada je ovaj signal na logičkoj nuli, u toku je operacija upisa.<br />
A0 i A1<br />
__ __<br />
Selektovanje Porta 0 i Porta 1: U kombinaciji sa pinovima RD i WR, ulazni<br />
signali A0 i A1 kontrolišu izbor jednog od tri porta za registar kontrolne reči.<br />
Oni su normalno povezani na najmanje značajne bitove adresne magistrale<br />
(A0 i A1). Tako u zavisnosti od stanja signala CS, RD, WR, A0 i A1 čip 8255<br />
obavlja sledeće funkcije koje su date u Tabeli 2-1.<br />
__ __ __ Ulazne operacije<br />
A1 A0 CS RD WR (READ)<br />
0 0 0 0 1 PORT A → DATA BUS<br />
0 1 0 0 1 PORT B → DATA BUS<br />
1 0 0 0 1 PORT C → DATA BUS<br />
Izlazne operacije<br />
(WRITE)<br />
0 0 0 1 0 DATA BUS → PORT A<br />
0 1 0 1 0 DATA BUS → PORT B<br />
1 0 0 1 0 DATA BUS → PORT C<br />
1 1 0 1 0 DATA BUS → CONTROL<br />
Nemoguće funkcije<br />
x x 1 x x neaktivno stanje<br />
1 1 0 0 1 neaktivno stanje<br />
x x 0 1 1 neaktivno stanje<br />
Tabela 2-1. Funkcije kola 8255 zavisno od stanja kontrolnih pinova<br />
RESET<br />
Reset čipa se ostvaruje dovođenjem logičke jedinice na ulazni pin RESET.<br />
Na ovaj način briše se sadržaj svih unutrašnjih registara, uključujući i kontrolni<br />
registar, dok se svi Portovi (A, B i C) postavljaju u ulazni režim.<br />
Grupe blokova A i B<br />
Sistemskim softverom se definiše funkcionalna konfiguracija svakog<br />
porta. Naime, mikroprocesor izdaje kontrolnu reč tipa “režim”, “setuj bit”,<br />
“resetuj bit” i slično, čime se inicijalizuje funkcionalna konfiguracija čipa 8255.<br />
Svaki od kontrolnih blokova (Grupa A i Grupa B) prihvataju komande od<br />
kontrolne logike, prihvataju kontrolne reči sa unutrašnje magistrale<br />
podataka i izdaju odgovarajuće komande portovima koji su njima dodeljeni:<br />
18
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
kontrolna Grupa A (Port A i viši deo Porta C (C7-C4)) i kontrolna Grupa B<br />
(Port B i niži deo Porta C (C3-C0)).<br />
Nije dozvoljena nikakva operacija čitanja u kontrolnom registru, već je<br />
moguće izvršiti samo upisivanje.<br />
Portovi A, B i C<br />
Kao što je napomenuto u uvodu, 8255 sadrži tri 8-bitna Porta (A, B i<br />
C). Svaki od portova može da se konfiguriše sistemskim softverom za više<br />
različitih funkcionalnih namena, ali svaki od njih poseduje neke specifične<br />
karakteristike, odnosno sposobnost da dodatno poveća performanse i<br />
fleksibilnost čipa 8255.<br />
• Port A: sadrži jedan 8-bitni izlazni leč/bafer i jedan 8-bitni ulazni leč.<br />
• Port B: sadrži jedan 8-bitni ulazno/izlazni leč/bafer i jedan 8-bitni ulazni<br />
bafer.<br />
• Port C: sadrži jedan 8-bitni izlazni leč/bafer i jedan 8-bitni ulazni bafer<br />
(nema leča na ulazu). Ovaj port može da se podeli na dva 4-bitna porta<br />
u zavisnosti od režima rada (moda) kola 8255. Svaki 4-bitni port<br />
sadrži 4-bitni leč i može da se koristi za izlaze kontrolnih signala i<br />
ulaze statusnih signala zajedno sa Portom A i Portom B.<br />
3.2. OPIS NAČINA RADA<br />
Izbor moda (režima rada)<br />
Sistemskim softverom se može izabrati jedan od tri osnovna moda<br />
(režima) rada. U narednom tekstu biće reči o svakom modu rada.<br />
Mod 0<br />
U pitanju je osnovni ulaz/izlaz mod (režim rada) i moguće je ostvariti 16<br />
ulazno-izlaznih konfiguracija. Kada je kolo konfigurisano za Mod 0,<br />
obezbeđene su jednostavne ulazne i izlazne operacije za svaki od tri porta. Nije<br />
potreban handshaking protokol, a podaci se jednostavno upisuju ili čitaju sa<br />
definisanog porta.<br />
Ukoliko se Port C koristi kao status/kontrola za Port A ili za Port B, ovi<br />
bitovi se mogu setovati ili resetovati bitskim operacijama kao da su izlazni<br />
portovi podataka.<br />
Osnovne funkcionalne definicije Moda 0:<br />
• Dva 8-bitna i dva 4-bitna porta<br />
• Svaki port može da bude ulazni i izlazni<br />
• Izlazi su lečovani<br />
• Ulazi nisu lečovani<br />
• U ovom režimu su moguće 16 različitih ulazno/izlaznih konfiguracija.<br />
19
Mod 1<br />
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Ova funkcionalna konfiguracija se zove i prekidni ulaz/izlaz, a obezbeđuje<br />
prenos ulazno-izlaznih podataka prema i od zadatog porta – a zavisno od<br />
signala prekida ili handshaking protokola. U Modu 1, Port A i Port B koriste<br />
linije sa Porta C da generišu ili prihvate ove signale handshaking protokola.<br />
Osnovne funkcionalne definicije Moda 1:<br />
• Postoje dve grupe blokova (Grupa A i Grupa B)<br />
• Svaka grupa sadrži jedan 8-bitni port podataka i jedan 4-bitni<br />
kontrolni ili port podataka<br />
• 8-bitni port podatka može biti ili ulazni ili izlazni. I ulazi i izlazi su<br />
lečovani<br />
• 4-bitni port se koristi za kontrolu i status 8-bitnog porta podataka.<br />
Mod 2<br />
U ovom modu (režimu) rada (prekidna dvosmerna U/I magistrala)<br />
ostvaruje se komunikacija sa periferijskim uređajem ili strukturom preko<br />
jedne 8-bitne magistrale – i za predaju i za prijem podataka. Signali<br />
handshaking protokola koriste se da održe propisan protok magistrale na<br />
sličan način kao kod Moda 1. Isto tako, u ovom modu (režimu) rada su<br />
dostupne funkcije generisanja dozvole/zabrane prekida.<br />
Osnovne funkcionalne definicije Moda 2:<br />
• Koristi se samo u Grupi A<br />
• Jedan 8-bitni, bidirekcioni (dvosmerni) port (Port A) i 5-bitni kontrolni<br />
port (Port C)<br />
• I ulazi i izlazu su lečovani<br />
• 5-bitni kontrolni port (Port C) se koristi za kontrolu i status 8-bitnog,<br />
bidirekcionog (dvosmernog) porta (Port A).<br />
Resetovanje<br />
Kada se RESET ulaz postavi na jedinicu, svi portovi ce se postaviti u režim<br />
ulaza (tj. sve 24 linije će biti u stanju visoke impedanse). Pošto se RESET<br />
ukloni, čip 8255 može da ostane u ovom režimu bez zahteva za dodatnu<br />
inicijalizaciju.<br />
Tokom izvršenja sistemskog programa, može se selektovati neki od<br />
ostalih režima upotrebom jedne izlazne instrukcije. Ovo omogućava da jedno<br />
integrisano kolo 8255 opslužuje različite periferijse uređaje sa jednostavnom<br />
softverskom rutinom.<br />
Režimi za Port A i Port B mogu da se odvojeno definišu, dok se Port C deli<br />
na dva dela, pošto se zahteva definicijama Portova A i B. Svi izlazni registri,<br />
uključujući i statusne flip-flopove, će se resetovati kad god se promeni mod<br />
(režim) rada. Modovi se mogu kombinovati tako da se njihova funkcionalna<br />
definicija može prilagoditi bilo kojoj U/I strukturi. Na primer, Grupa B se može<br />
programirati u Modu 0 tako da nadgleda jednostavna zatvaranja prekidača ili<br />
da prikaže rezultate izračunavanja. Grupa A se može programirati u Modu 1 da<br />
nadgleda tastaturu ili čitač trake na osnovu prekida.<br />
20
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Format definisanja moda<br />
Definicije moda rada možđa deluje zbunjujuće na prvi pogled – ali, u<br />
praksi nije tako. Projektanti kola 8255 uzeli su u obzir efikasan raspored na<br />
čipu, definisanje kontrolnih signala i kompletnu funkcionalnu fleksibilnost, koja<br />
podržava skoro svaki periferijski uređaj bez dodatne spoljašnje logike. Na<br />
ovakav način ostvareno je optimalno iskorišćenje pinova.<br />
Osobina setovanja/resetovanja pojedinačnih bitova<br />
Svaki od osam bitova Porta C može se setovati/resetovati upotrebom<br />
jedne izlazne instrukcije. Ova osobina redukuje softverske zahteve u<br />
kontrolnim aplikacijama.<br />
Slika 2-5. Komandni bajt komandnog registra<br />
a) programiranje Portova A, B, C<br />
b) setovanje ili resetovanje bita selektovanog bit<br />
poljem<br />
Napomena: Svi maskirni flip-flopovi se automatski resetuju tokom<br />
selektovanja moda (režima) rada i resetovanja uređaja.<br />
Funkcije kontrole prekida<br />
Kada se 8255 programira da radi u Modu 1 ili Modu 2, predviđeni su<br />
kontrolni signali koji se mogu koristiti kao ulazi preko kojih se zahteva prekid<br />
mikroprocesoru. Ovi signali, generisani sa Porta C, mogu da se uključe ili<br />
isključe setovanjem ili resetovanjem INTE flip-flopa, upotrebom funkcija<br />
bitskog setovanja/resetovanja Porta C. Dakle, preko ove funkcije programer<br />
21
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
može da dozvoli ili zabrani da pojedinačni U/I uređaji prekidaju procesor, bez<br />
uticaja na druge uređaje u prekidnoj strukturi.<br />
INTE flip-flop definicija<br />
(BIT-SET) – INTE je setovan – omogućen prekid<br />
(BIT-RESET) – INTE je resetovan – onemogućen prekid<br />
Slika 2-6. Strobovani ulaz u Modu 1 kod kola 8255<br />
a) interna struktura<br />
b) vremenski dijagrami<br />
Definicije ulaznih kontrolnih signala<br />
___<br />
STB (strobe ulaz) : Nula na ovom ulazu inicira upis podataka u ulazni leč.<br />
___<br />
IBF (ulazni bafer pun) : Jedinica na ovom izlazu ukazuje na to da su podaci<br />
upisani u ulazni leč. U principu, ovo je signal potvrde. IBF se setuje kada<br />
je STB ulaz na nuli, a resetuje se tokom rastuće ivice RD ulaza.<br />
____<br />
INTR (zahtev za prekid) : Jedinica na ovom izlazu može da se iskoristi za<br />
iniciranje prekida mikroprocesora kada ulazni uređaj zahteva opsluživanje.<br />
INTR se setuje kada je STB na jedinici, IBF i INTE su na logičkoj jedinici.<br />
Resetuje se tokom opadajuće ivice RD. Ova procedura omogućava ulaznim<br />
uređajima da zahtevaju opsluživanje od mikroprocesora jednostavnim<br />
izbacivanjem podataka na port.<br />
22
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
INTE A : Kontrolisan bitskim setovanjem/resetovanjem PC4.<br />
INTE B : Kontrolisan bitskim setovanjem/resetovanjem PC2.<br />
Definicije izlaznih kontrolnih signala<br />
___ ___<br />
OBF (izlazni bafer pun) : Izlaz OBF će se postaviti na logičku nulu da ukaže<br />
kako je mikroprocesor upisao podatke na zadati port.<br />
___ ___<br />
OBF flip-flop će se setovati rastućom ivicom WR ulaza i resetovati kada je<br />
ulaz ACK na logičkoj nuli.<br />
_____<br />
ACK (ulaz potvrde) : Logička nula na ovom ulazu informiše čip 8255 da su<br />
podaci sa Porta A i Porta B prihvaćeni. U suštini, odgovor sa periferijskog<br />
uređaja ukazuje da je ovaj primio podatke sa izlaza mikroprocesora.<br />
____<br />
INTR (zahtev za prekid) : Logička jedinica na ovom izlazu može se<br />
upotrebiti da prekida mikroprocesor kada je izlazni uređaj primio podatke<br />
(prenete sa procesora). INTR se setuje kada je ACK na logičkoj jedinici.<br />
Signali OBF i INTE su na logičkoj jedinici. Resetuje se tokom opadajuće ivice<br />
na ulaznom pinu WR .<br />
Kombinacije Moda 1<br />
Port A i Port B mogu se pojedinačno definisati kao ulazi ili izlazi u Modu<br />
1, kako bi podržali različite U/I prekidne aplikacije.<br />
Definicije signala dvosmerene U/I magistrale<br />
____<br />
INTR (zahtev za prekid): Jedinica na ovom izlazu se može upotrebiti da<br />
prekida mikroprocesor i za izlazne i za ulazne operacije.<br />
23
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Slika 2-7. Mod 1 strobovani izlaz kod kola 8255<br />
a) interna struktura<br />
b) vremenski dijagrami<br />
Ulazne operacije:<br />
___<br />
STB (strobe ulaz) : Logička nula na ovom ulazu upisuje podatke u ulazni leč.<br />
IBF (ulazni bafer pun) : Logička jedinica na ovom izlazu ukazuje na to da su<br />
podaci upisani u ulazni leč.<br />
___<br />
INTE2 (INTE flip-flop dodeljen sa IBF) Kontrolisan bitskim setovanjem/<br />
resetovanjem PC4.<br />
Izlazne operacije:<br />
Definicije izlaznih kontrolnih signala<br />
___ ___<br />
OBF (izlazni bafer pun) : Izlaz OBF će se postaviti na logičku nulu kada<br />
mikroprocesor bude upisao podatke na zadati Port A.<br />
24
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Slika 2-8. Mod 2 kod kola 8255<br />
a) interna struktura<br />
b) vremenski dijagram<br />
___<br />
ACK (potvrda) : Logička nula na ovom ulazu omogućava da trostatički izlazni<br />
bafer sa Porta A pošalje podatke. Inače, bafer bi bio u stanju visoke<br />
impedanse.<br />
____<br />
INTE1 (INTE flip-flop dodeljen sa OBF). Kontrolisan bitskim setovanjem/<br />
resetovanjem PC6.<br />
3.3. PRIMENA<br />
Sada ćemo ilustrovati nekoliko primera praktične primene čipa 8255 u<br />
svim modovima (režimima) rada.<br />
25
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Slika 2-9. Sprega µP i 8-bitnog D/A konvertora pomoću čipa 8255<br />
Slika 2-10. Povezivanje štampača (strobovani izlaz)<br />
Slika 2-11. Ostvarivanje distibutivnog multiprocesorskog sistema<br />
26
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
/III/ DIGITALNO-ANALOGNA KONVERZIJA<br />
Integrisano kolo koje na osnovu grupe ulaznih bitova (bit stream), poslate<br />
najčešće od strane mikroprocesora, kreira izlazni analogni signal srazmeran<br />
digitalnom ulazu. Naziv uređaja D/A konvertor je skraćenica za digitalnoanalogni<br />
konvertor, a često se u literaturi koristi i engleska skraćenica DAC<br />
(Digital-Analog Converter).<br />
Na Slici 3-1. prikazan je blok-šema proces D/A konverzije.<br />
Slika 3-1. Proces D/A konverzije<br />
U daljem tekstu ćemo ukratko opisati neke tipove D/A konvertora.<br />
3-1. D/A KONVERTOR SA OTPORNIM NIZOM<br />
Slika 3-2. D/A konvertor sa otpornim nizom (a), korišćenje binarnog<br />
prekidačkog polja radi smanjenja izlazne kapacitivnosti (b)<br />
Na Slici 3-2. ilustrovana je šema D/A konvertora sa otpornim nizom. To je<br />
inače najjednostavniji tip D/A konvertora. Za konverziju n-tobitnog digitalne<br />
reči koristi se niz od 2 n otpornika za.<br />
27
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Da bi se smanjila izlazna kapacitivnost konvertora, koristi se binarno<br />
prekidačko polje.<br />
Sada ćemo se osvrnuti na neke karakteristike DAC sa otpornim nizom:<br />
Greške neuparenosti:<br />
Integralna nelinearnost:<br />
Diferencijalna nelinearnost:<br />
D/A konvertora sa otpornim nizom odlikuje se visokom tačnošću (za<br />
veliku ulaznu impendansu i odgovaraću toleranciju otpornika), izlaz je uvek<br />
monoton, a ograničavajući faktor predstavlja njegova integralna nelinearnost<br />
(INL) je ograničavajući faktor visoke rezolucije (2N puta veći od diferencijalne<br />
nelinearnosti, DNL).<br />
28
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
3-2. LESTVIČASTI D/A KONVERTORI<br />
Ovaj tip D/A konverora deli se na:<br />
• binarni DAC<br />
• DAC sa R-2R lestvicom.<br />
Binarni DAC<br />
Rad binarnog D/A konvertora na bazi binarnih težina (binarni DAC) se<br />
zasniva na sumirajućem operacionom pojačavaču. Svaki od ulaznih otpornika<br />
ima dva puta veću vrednost od prethodnog. Ulazni naponi se porede u odnosu<br />
na vrednost svakog od ulaza (Slika 3-3.)<br />
Nedostatak binarnog lestvičastog D/A konverora je u tome što zahteva<br />
veoma veliku preciznost korišćenih otpornika.<br />
Lestvičasti R-2R DAC<br />
Slika 3-3. Binarni D/A konvertor<br />
Za konverziju n-tobitne digitalne reči, lestvoičasti R-2R DAC treba da<br />
poseduje 2n otpornika, operacioni pojačavač i n prekidača (Slika 3-4.)<br />
Način rada se ogleda u sledećem: kada je bi Dk=1 odgovarajući prekidač<br />
je povezan na Vref. U suprotnom, kada je bi Dk=0 odgovarajući prekidač je<br />
povezan na masu, tj. logičku 0. Ovakva veza obezbeđuje da je težinski<br />
doprinos struje svakog čvora odgovara binarnom broju.<br />
29
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Slika 3-4. Lestvičasti R-2R D/A konvertor<br />
Formula za određivanje izlaznog napona:<br />
3-3. DAC ZASNOVAN NA «KRAĐI» STRUJE<br />
Slika 3-5. Principska šema D/A konvertora sa «krađom» struje<br />
Ovaj tip konvertora se odlikuje velikom brzinom i velikim strujnim<br />
kpacitetom (ne zahteva dodatne bafere).<br />
Greške neuparenosti D/A konvertora sa «krađom» struje:<br />
30
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
3-4. STRUJNO KONTROLISAN DAC SA TEŽINSKIM IZVORIMA<br />
Ovaj tip konvertora predstavlja modifikaciju prethodnog DAC. Kao što<br />
može da se vidi sa Slike 3-5, vrednost struje strujnih nije uniformna – već<br />
težinska (I, 2I, 4I...)<br />
Slika 3-5. Principska šema D/A konvertora sa težinskim strujnim<br />
izvorima «krađom» struje<br />
3-5. DAC SA SKALIRANIM TOVAROM<br />
D/A konvertor sa skaliranim tovarom je prikazan na Slici 3-6. Odlikuje se<br />
skaliranjem napona. Postojanje parazitnih kapacitivnosti ograničava visoku<br />
rezoluciju ovog DAC.<br />
Na Slici 3-7. ilustrovan je layout jednog DAC sa skaliranim tovarom.<br />
31
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Slika 3-5. Principska šema D/A konvertora sa skaliranim tovarom<br />
Formula za određivanje izlaznog napona:<br />
Slika 3-6. Layout D/A konvertora sa skaliranim tovarom<br />
32
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Layout binarno težinskih kondezatora se realizuje koristići:<br />
• pojedinačne kondezatore,<br />
• jedinične kondenzatore da bi se minimizirao efekat zasecanja<br />
• zajednički centrirane za minimizovanje gradijenta oksida.<br />
Slika 3-7. D/A konvertora sa skaliranim tovarom kod koga je razdeljen<br />
niz<br />
Kondenzator Catten za kolo sa Slike 3-7. se bira na sledeći način:<br />
3-5. OSTALI DAC<br />
• Ciklični konvertor<br />
- tačnost zavisi od tačnosti pojačanja pojačavača,<br />
- N-to bitna konverzija zahteva N taktnih intervala.<br />
• Protočni konvertor<br />
- veoma brza arhitektura,<br />
- inicijalno kašnjenje od N taktnih intervala,<br />
- visoka rezolucija zahteva veliku tačnost pojačanja pojačavača,<br />
- N puta veći broj kola od ciklične arhitekture.<br />
33
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
/IV/ ANALOGNO-DIGITALNA KONVERZIJA<br />
4-1. UVOD U A/D KONVERTORE<br />
Analogno-digitalna konverzija predstavlja generisanje digitalnog<br />
kodovanog broja koji odgovara analognom ulaznom signalu. Elektronsko kolo<br />
koje vrši kon-verziju naziva se analogno-digitalni konvertor, ili skraćeno A/D<br />
konvertor (ADC).<br />
Kod savremenih tehnika merenja, dominantnu grupu instrumenata i<br />
merne opreme, čine digitalni merni instrumenti. Oni često ne samo da<br />
poseduju napred-nije performanse u odnosu na odgovarajuće analogne<br />
instrumente (brzina, propusni opseg, pouzdanost, otpornost na smetnje,<br />
minijaturizacija, itd.), već imaju i znatno nižu cenu, a omogućavaju i veoma<br />
jednostavnu automatizaciju procesa merenja. Nažalost, veličine koje je<br />
potrebno dovesti na ulaze u merni sistem, samo su u veoma malom broju<br />
slučajeva, po svojoj prirodi digitalne. Pa čak i tada, često je potrebno analizirati<br />
parametre ovih digitalnih veličina na najnižem, fizičkom nivou, naročito u<br />
postupcima overe i atestiranja sistema ili dijagnostike, kod neregularnog rada<br />
usled otkaza ili ispada. Sa stanovišta merenja, jedini način da se ovakvi signali<br />
ispravno okarakterišu i u tim situacija-ma, jeste da se tretiraju kao analogne<br />
veličine i opišu odgovarajućim analognim parametrima.<br />
Elementaran analogno-digitalni konvertor je naponski komparator. Ulazni<br />
analogni signal -Vul, komparator konvertuje u jednobitnu digitalnu informaciju<br />
D=d0, tako da d0=0 označava da je VulV1, gde je V1<br />
unapred određen naponski prag. Ako je potrebno da se veličina analognog<br />
napona odredi sa većom preciznošću i predstavi u digitalnom obliku, potrebno<br />
je porediti ulazni napon sa više naponskih pragova. Šema ovakvog jednog<br />
konvertora prikazana je na Slici 4-1.<br />
Slika 4-1. Principijelna šema A/D konvertora<br />
Na Slici 4-1 je prikazana principijelna šema A/D konvertora koja sadrži m<br />
komparatora i koder sa m ulaza i n izlaza. Ako se naponi Vi rasporede<br />
ekvidistantno unutar naponskog opsega od 0 do Vps, na osnovu izlaza kom-<br />
34
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
paratora ki može da se odredi u kom se naponskom opsegu nalazi ulazni signal<br />
Vul. Digitalnu informaciju sa komparatora koder koduje u digitalni broj<br />
izabranog binarnog brojnog sistema.<br />
Na Slici 4-2 prikazana je idealna karakteristika prenosa A/D konvertora u<br />
slučaju da postoji 8 nivoa komparacije ulaznog napona.<br />
Slika 4-2. Karakteristika prenosa idealnog A/D konvertora<br />
Ako se ulazni napon linearno menja od 0 do napona pune skale Vps ,<br />
izlazna digitalna informacija može da ima m + 1 = 9 diskretnih stanja: 0 za<br />
Vul
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
izlaznu informaciju u BCD kodu. Povećanje rezolucije A/D konvertora sa Slike<br />
4-1 se može postići jedino povećanjem broja naponskih nivoa, odnosno,<br />
brojem komparatora. Za povećanje rezolucije za samo jedan bit, potrebno je<br />
duplirati broj komparatora i srazmerno proširiti kombinacionu mrežu kodera.<br />
Tako je za 8-bitni konvertor potrebno 256 komparatora. Pošto je u praksi<br />
potrebno obavljati A/D konverziju i sa mnogo većom rezolucijom, direktna<br />
konverzija sa 2 n komparatora i kodne mreže postaje neekonomična zbog<br />
velikog broja kompo-nenti. U cilju smanjenja broja sastavnih elektronskih kola,<br />
primenjuju se različite metode za A/D konverziju.<br />
Uglavnom se A/D konvertori klasifikuju po načinu ili brzini konverzije.<br />
Najčešće se proizvode i koriste tri klase A/D konvertora:<br />
• Vrlo brzi A/D konvertori, formirani korišćenjem paralelnih komparatora<br />
koji se jos nazivaju i direktni ili fleš A/D konvertori.<br />
• Konvertori srednje brzine, koji napon na ulazu porede sa referentnim<br />
naponom generisanim D/A konvertorom.<br />
• Konvertori male brzine, koji najčešće proces konverzije napona u<br />
digitalni broj obavljaju merenjem vremena za koje napon, koji raste<br />
linearno sa vremenom, dostigne vrednost ulaznog napona. Ovakvi<br />
konvertori se još nazivaju i serijski A/D konvertori , A/D konvertori sa<br />
vremenskim ekviva-lentom, ili integratorski A/D konvertori.<br />
4-2. INTEGRIRAJUĆI A/D KONVERTOR<br />
Integrirajući A/D konvertori nazivaju se još i konvertori sa vremenskim<br />
ekvivalentom, jer se A/D konverzija odvija kroz proces kvantizacije<br />
vremenskog intervala koji predstavlja ekvivalent naponu na ulazu u konvertor.<br />
Kod startnog i pratećeg konvertora etaloni su iste prirode kao i merena<br />
veličina, tako da je njen digitalni ekvivalent iznalažen direktnim brojanjem<br />
kvantizacionih nivoa. Umesto stepenastog referentnog napona sa kojim se<br />
poredi analogni odmerak signala, može se upotrebiti i kontinualni monotono<br />
opadajući ili rastući napon. Pošto je i taj napon analogni, ne možemo pomoću<br />
njega ostvariti direktnu kvantizaciju ulaznog signala, ali ako poznajemo<br />
vremensku zavisnost monotono promenljivog napona kvantizacije može se<br />
izvesti pomoću pogodno odabranog etalona vremena.<br />
Kod ovog tipa A/D konvertora, konverzija se odvija u dva koraka:<br />
• Transformacija ulaznog napona u vremenski interval<br />
• Kvantizacija dobijenog vremenskog intervala.<br />
Vremenski interval se dobija sa inegratora koji je prikazan na Slici 4-3.<br />
36
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Napon na kondenzatoru je jednak:<br />
Slika 4-3. Integrator<br />
Integrirajući A/D konvertori mogu se koristiti za konverziju podataka sa<br />
visokom tačnošću i malom brzinom. Ovi A/D konvertori su spori jer su signali<br />
sporopromenljivi. Greška ofseta kod ovih konvertora je mala i mogu imati<br />
visoku linearnost.<br />
Što se tiče upotrebe ovih konvertora , oni imaju široku upotrebu u mernim<br />
instrumentima za merenje napona i struje. Osetljivi su na promene<br />
temperature.<br />
Imamo dva tipa integrirajućih A/D konvertora:<br />
• Konvertor sa jednostrukim nagibom<br />
• Konvertor sa dvostrukim nagibom<br />
Konvertori sa jednostrukim nagibom<br />
Konvertor sa jednostrukim nagibom transformiše ulazni signal u vreme.<br />
Da bi se ostvarila linearna zavisnost između veličine ulaznog napona i trajanja<br />
vremenskog intervala, referentni napon VR treba da se menja linearno sa<br />
vremenom. Da bi se to postiglo ulazni napon se generiše pomoću integratora.<br />
Na Slici 4-4 prikazana je šema A/D konvertora sa jednostrukim nagibom sa<br />
strujnim izvorom. Integrator čine kondenzator C i tranzistor TR1. Tranzistor TR1<br />
upo-trebljen je kao prekidač preko koga se vrši resetovanje, odnosno<br />
pražnjenje kondenzatora C. Pre svakog ciklusa konverzije potrebno je<br />
resetovati kondenzator kao i brojač, što se postiže resetovanjem D flipflopa i<br />
pri tome izlaz Q kontrolnog kola obezbeđuje nizak napon na bazi tranzistora<br />
TR1, pa tranzistor odlazi u zasićenje i na taj način prazni kondenzator C.<br />
37
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Slika 4-4. Šema A/D konvertora sa jednostrukim nagibom sa strujnim<br />
izvorom<br />
Slika 4-5. Vremenski dijagram signala A/D konvertora sa jednostrukim<br />
nagibom<br />
Ciklus konverzije započinje setovanjem kontrolnog flipflopa. Visoki napon<br />
na izlazu Q blokira tranzistor TR2, pa kondenzator C počinje da se puni<br />
konstantnom strujom tranzistora TR1. Zahvaljujući tome napon na<br />
kondenzatoru VR raste linearno sa vremenom. Ovaj napon se dovodi na<br />
komparator radi poređenja sa analognim podatkom VA. Sve dok je VA > VR na<br />
komparatorskom izlazu k postoji visok nivo napona. Brojanje taktnih impulsa<br />
traje sve dotle, dok napon VR ne dostigne vrednost VA. Kada se izjednače ta<br />
dva napona komparator se prebacuje u stanje ligičke 0, čime je završen<br />
38
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
konverzacioni ciklus, a krajnji rezultat brojanja predstavlja digitalni ekvivalent<br />
ulazne analogne vrednosti. Prema tome, efektivno vreme konverzije započinje<br />
setovanjem kontrolnog flipflopa, a završava se izjednačavanjem ulaznog i<br />
referentnog napona. Ciklusno vreme konverzije uklju-čuje i vreme pražnjenja<br />
kondenzatora C. Vremenski dijagrami signala konvertora prikazanog na Slici<br />
4-4 prikazani su na Slici 4-5.<br />
Struja punjenja kondenzatora C je konstantna i ona iznosi:<br />
, gde je VZ radni napon Zenerove diode. Vremenska zavisnost referentnog<br />
napona data je izrazom:<br />
Porast referentnog napona ograničen je uslovom:<br />
, odakle se nalazi vremenski ekvivalent analogne vrednosti:<br />
Ako se ovaj vremenski interval kvantuje periodom taktnog generatora TP,<br />
nalazi se da on sadrži N perioda.<br />
Iz jednakosti:<br />
, nalazi se da je:<br />
Gornji izraz pokazuje da je analogni napon VA proporcionalan broju<br />
impulsa N koji je odbrojan na binarnom brojaču, što znači da je prenosna<br />
karakteristika konvertora linearna.<br />
Opisani uređaj ponekad se naziva A/D konvertor sa širinskom<br />
modulacijom. To upravo znači da veličina analognog signala određuje vreme<br />
39
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
trajanja, odnosno širinu impulsa u toku koga se odvija proces brojanja.<br />
Posmatrano sa ovog stanovišta opisana konverzija je naročito pogodna za<br />
prenos informacija, pri čemu je dovoljno da se prenose samo start i stop<br />
impulsi vremenskih ekviva-lenata Ti.<br />
Konvertori sa dvostrukim nagibom<br />
Tačnost A/D konvertora sa vremenskom kvantizacijom može da se poveća<br />
korišćenjem principa konverzije pomoću dvostrukog nagiba. Takav konvertor<br />
prikazan je na Slici 4-6.<br />
Slika 4-6. Blok šema A/D konvertora sa dvostrukim nagibom<br />
Integrator je izveden pomoću operacionog pojačavača OP. Startkomandom<br />
preko analognog prekidača AP zatvara se prekidač P1, a otvara P2.<br />
Napon na izlazu operacionog pojačavača počinje linearno da raste i čim pređe<br />
potencijal nule komparator K otvara I kolo za prolaz taktnih impulsa PT. Ovi<br />
impulsi pobuđuju binarni brojač sve dotle, dok svi njegovi stepeni ne pređu iz<br />
resetovanog u setovano stanje.<br />
Na Slici 4-7 predstavljen je vremenski dijagram signala koji se pojavljuju<br />
u A/D konvertoru prikazanom na Slici 4-6.<br />
40
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Slika 4-7. Vremenski dijagram signala A/D konvertora sa dvostrukim<br />
nagibom<br />
Vreme TA, za koje će brojač stići od 0 do svoje maksimalne vrednosti<br />
određeno je kapacitetom brojača i učestanošću taktnog generatora. U toku tog<br />
vremena vrši se integracioni proces pod dejstvom ulaznog analognog napona<br />
VA, usled čega se na izlazu operacionog pojačavača formira linearni napon:<br />
Po isteku vremena TA ništa se nije izmenilo u pogledu dovođenja taktnih<br />
impulsa na brojač. Prvi impuls koji nailazi posle pojavljivanja maksimalne<br />
vrednosti brojača, vraća brojač ponovo u početno stanje, a kao posledica toga<br />
prebacuje se i analogni prekidač AP u drugi položaj. Prema tome, na<br />
operacionom pojačavaču započinje integracija pod dejstvom referentnog<br />
napona VR tako da se sada na njegovom izlazu formira opadajući linearni<br />
napon:<br />
U toku formiranja ovog napona brojač ponovo odbrojava impulse sve dotle<br />
dok napon vVR(t) ne dostigne nulti potencijal, kada komparator k sprečava<br />
41
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
dalje pobuđivanje brojača. Prema tome, iz uslova vVR(TR)=0 nalazi se<br />
vremenski ekvivalent analognog napona:<br />
Ako se ovo vreme kvantuje periodom generatora TP, nalazi se da je:<br />
, gde je N broj primljenih impulsa u brojaču. Vidi se da je digitalni ekvivalent<br />
ulazne analogne vrednosti izražen brojem impulsa koje brojač primi u toku<br />
druge integracije. Primećujemo da kod A/D konvertora sa dvostrukim nagibom,<br />
za razliku od A/D konvertora sa jednostrukim nagibom, vremenska konstanta<br />
RC nema uticaja na proces konverzije, pa je time eliminisana i greška koju ona<br />
unosi. Šta više, konverzija ne zavisi ni od stabilnosti etalona tj. periode taktnog<br />
generatora, s obzirom da se i vreme TA meri istim etalonom. Prema tome, A/D<br />
konvertor sa dvostrukim nagibom odlikuje se velikom tačnošću, ali i vrlo<br />
malom brzinom konverzije. To je sasvim razumljivo kad se ima u vidu da ciklus<br />
konverzije obuhvata i vremenski period TA, koji je utoliko veći što je rezolucioni<br />
napon konvertora manji.<br />
4-3.PRATEĆI A/D KONVERTOR<br />
Prateći A/D konvertor koristi D/A konvertor kao referencu za formiranje<br />
digitalnog ekvivalenta analognog signala. Logička šema pratećeg A/D<br />
konvertora prikazana je na Slici 4-8.<br />
Ovaj tip A/D konvertora je veoma jednostavne konstrukcije. Sastoji se od<br />
obostranog brojača, D/A konvertora i komparatora. Brojač se taktuje signalom<br />
TAKT, koji se može zabraniti signalom GATE, ako postavimo signal u stanje<br />
logičke nule GATE=0. Komparator poredi ulazni napon Vul sa izlaznim naponom<br />
iz D/A konvertora Viz. Ako je Vul > Viz izlaz komparatora je k=1, brojač broji<br />
unapred, povećava se sadržaj obostranog brojača, pa prema tome i napon Viz<br />
raste. Kada postane Vul < Viz, menja se stanje izlaza komparatora i brojač<br />
počinje da broji unazad. Ako Vul ne menja vrednost i ako je histerezis<br />
komparatora manji od 1 LSB, već nakon prvog taktnog impulsa napon Viz će<br />
ponovo postati manji od Vul, komparator će da promeni stanje, brojač će da<br />
promeni smer brojanja i napon Viz ponovo raste. Sve dok Vul ne promeni<br />
vrednost, brojač broji po jedan impuls napred, po jedan nazad, a napon Viz<br />
osciluje oko napona Vul za 1 LSB.<br />
42
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Slika 4-8. Prateći A/D konvertor<br />
Vremenski dijagram promene napona Viz u funkciji promene ulaznog<br />
napona Vul prikazan je na Slici 4-9.<br />
Slika 4-9. Vremenski dijagram napona pratećeg A/D konvertora<br />
Za vreme dok je signal GATE na nultom logičkom nivou na brojač ne stižu<br />
taktni impulsi, brojač ne menja sadržaj tako da i napon na izlazu D/A<br />
konvertora ne menja vrednost. Kada je GATE=1, brojač u zavisnosti od<br />
logičkog nivoa izlaza komparatora broji unapred ili unazad, a napon na izlazu<br />
D/A konvertora teži da dostigne Vul i da prati promene Vul. Brzina promene<br />
napona Viz zavisi od periode taktnih impulsa tc. Minimalna vrednost tc je<br />
ograničena vremenom postavljanja D/A konvertora i kašnjenjem komparatora.<br />
Ako je promena napona Vul brža od maksimalne brzine promene Viz, izlazni<br />
digitalni kod, a time i napon Viz će da kasni u odnosu na ulazni napon. Pošto<br />
promenom učestanosti signala TAKT može da se menja brzina promene<br />
napona Viz, prateći A/D konvertor može da se koristi kao specifičan digitalno<br />
upravljiv filtar.<br />
Sa vremenskog dijagrama na Slici 4-9. vidi se da je, nakon što je u<br />
trenutku t2 logički nivo signala GATE postao GATE=0, izlazni napon je zadržao<br />
vrednost koju je imao u t=t2. Ovim je ostvarena funkcija analogno-digitalnog<br />
prati/pamti kola. Informacija o veličini napona u trenutku prebacivanja u režim<br />
"pamti" (t2) je raspoloživa kako u digitalnom, tako i u analognom obliku i može<br />
ostati zapamćena neograničeno dugo, za razliku od analognih prati/pamti kola.<br />
43
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
4-4 ADC SA SUKCESCIVNOM APROKSIMACIJOM (SAR)<br />
A/D konvertori sa sukcesivnim aproksimacijama (SAR ADC) imaju malu<br />
potrošnju i zauzimaju relativno malo mesta na silicijumskoj pločici. Ova<br />
kombinacija performansi ih čini idealnim za veliki broj aplikacija kao što su:<br />
instrumenti koji su baterijski napajani, industrijska kontrola, akvizicija<br />
podataka i mnoge druge.<br />
SAR ADC su čest izbor za aplikacije sa srednjom i visokom rezolucijom i sa<br />
srednjom brzinom konverzije (od nekoliko µs do nekoliko desetina µs).<br />
Najčešće se biraju gde brzina odabiranja ne prelazi 5 µs, a opseg rezolucije<br />
SAR A/D konvertora je od 8 do 16 bita. Principijelna šema A/D konvertora sa<br />
sukcesivnim aproksimacijama data je na Slici 4-10.<br />
Slika 4-10. A/D konvertor sa sukcesivnim aproksimacijama<br />
Maksimalni ulazni napon koji se može priključiti na konvertor je Vulmax i on<br />
je jednak naponu pune skale Vps tj. Vulmax = Vps . Maksimalni izlazni napon iz<br />
D/A konvertora Viz je za 1 LSB manji od napona Vps. Pod ovakvim uslovima D/A<br />
konvertor će, kad je MSB bit postavljen na jedinicu (Qn-1 =1), a svi ostali na<br />
nulu, generisati napon Viz = Vps/ 2. Sledeći bit (Qn-2=1) ima težinu Vps / 4,<br />
odnosno, pošto se radi o binarnom D/A konvertoru, svaki sledeći bit ima težinu<br />
upola manju od predhodnog.<br />
Konverzija počinje tako što, nakon priključenog Vul, kontrolno logičko kolo<br />
postavi logičku jedinicu u bit najveće težine registra sukcesivnih aproksimacija<br />
(Qn-1). D/A konvertor generiše napon Viz = Vps / 2 koji se poredi sa Vul. Ako je<br />
Vul > Vps / 2, MSB bit digitalnog ekvivalenta napona Vul je jedan, a ako je Vul <<br />
Vps / 2, tada taj bit treba da bude nula. Kontrolna logika, na osnovu izlaza<br />
komparatora resetuje (ako je k=0), ili ne resetuje (ako je k=1) MSB flipflop u<br />
registru sukcesivnih aproksimacija, čime je definisan bit najveće vrednosti Qn-1<br />
izlazne informacije, a zatim postavlja drugi bit po težini Qn-2 na logičku<br />
jedinicu. Komparator poredi novu vrednost Viz (koja je Vps / 4 ili 3Vps / 4 u<br />
zavisnosti dobijenog u poređenju sa bitom najveće vrednosti) sa Vul, a zatim<br />
kontrolna logika, na osnovu izlaza komparatora resetuje ili ne flipflop za taj bit<br />
(Qn-2) i definisana je vrednost bita drugog po težini. Kontrolna logika postavlja<br />
sledeći bit koji ima težinu upola manju od predhodnog na logičku jedinicu.<br />
44
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Proces poređenja i postavljanja narednih flipflopova se nastavlja sve do bita<br />
najmanje težine Q0. U zavisnosti od logičkog nivoa komparatora flipflop bita<br />
najmanje težine se resetuje ili ostaje logička jedinica. Time je konverzija<br />
završena.<br />
Kao primer, na Slici 4-11. pokazan je vremenski dijagram napona Viz<br />
idealnog četvorobitnog A/D konvertora sa sukcesivnim aproksimacijama.<br />
Slika 4-11. Promena napona D/A konvertora prilikom A/D konverzije<br />
Na slici 4-11. je pretpostavljen ulazni napon 11/16 > Vul/Vps >5/8.<br />
Konverzija počinje postavljanjem koda "1000" u SAR (registar sukcesivnih<br />
aproksimacija). Izlazni napon D/A konvertora se postavlja na Viz = Vps / 2.<br />
Pošto je Vul > Viz, na osnovu k=1, u trenutku t1 kontrolna logika ne resetuje<br />
Q3, čime je određen MSB bit izlazne informacije, postavlja Q2=1, tako da je<br />
kod upisan u registar sukcesivnih aproksimacija (SAR) "1100", a izlazni napon<br />
D/A konvertora se postavlja na Viz=3 / 4Vps. Sada je Vul < Viz, kontrolna logika<br />
u trenutku t2, na osnovu k=0 resetuje Q2 i bezuslovno postavlja Q1=1. Ovim je<br />
određena i druga cifra izlazne digitalne informacije. SAR je postavljen u stanje<br />
"1010", a Viz na Viz= 5Vps/8. Pošto je Vul > Viz, k=1 zabranjuje da kontrolna<br />
logika resetuje Q1, u trenutku t3 postavlja se Q0=1, tako da je u SAR registru<br />
stanje "1011". U trenutku t4 se na osnovu k=0 resetuje Q0, tako da je konačan<br />
rezultat konverzije koji je ostao u registru sukcesivnih aproksimacija<br />
Q3Q2Q1Q0="1010", Što je najbliži binarni broj koji odgovara ulaznom naponu.<br />
Na istom vremenskom dijagramu na slici je isprekidanom linijom prikazan<br />
tok konverzije napona Vul < Vps / 16. Nakon četiri koraka sukcesivnih<br />
aproksimacija, kao rezultat konverzije se dobija stanje Q3Q2Q1Q0="0000".<br />
Na osnovu sprovedene analize funkcionisnja A/D konvertora sa<br />
sukcesivnim aproksimacijama (skraćeno SAR ADK) mogu se definisati uslovi za<br />
sintezu registra sukcesivnih aproksimacija (SAR) i kontrolne logike (KL):<br />
• Konverzija analognog signala u digitalni binarni kodovan broj od n cifara<br />
se obavlja u n+1 taktnom intervalu, od kojih prvi (t0) inicijalizuje<br />
45
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
sekvencu sukcesivnih aproksimacija, a poslednji (tn) označava kraj<br />
konverzije.<br />
• Start konverzije se zadaje asinhrono u odnosu na taktni impuls A/D konvertora.<br />
• Vreme između dva susedna taktna impulsa treba da je dovoljno dugačko,<br />
kako bi isteklo vreme postavljanja D/A konvertora, kašnjenja kroz komparator<br />
i kašnjenja kroz kontrolnu logiku.<br />
• Korišćeni n-bitni D/A konvertor mora imati monotono rastuću<br />
karakteristiku prenosa (diferencijalnu linearnost bolju od ±0.5 LSB).<br />
• Flipflopovi registra sukcesivnih aproksimacija (SAR registra) treba da<br />
imaju mogućnost pojedinačnog postavljanja i resetovanja.<br />
• Ulazni napon Vul ne sme da se menja u toku konverzije, s obzirom da se<br />
flipflopovi postavljaju bit po bit, a već postavljeni flipflopovi, u slučaju<br />
promene Vul, ne mogu da promene stanje.<br />
Vreme konverzije A/D konvertora sa sukcesivnim aproksimacijama ja dato<br />
izrazom:<br />
tSARADK=(n+1)*tc<br />
, gde je n- broj bita konvertora , a Tc - perioda ponavljanja impulsa CLK. Minimalna<br />
perioda ponavljanja CLK zavisi od vremena postavljanja D/A konvertora,<br />
od kašnjenja kroz komparator i kašnjenja kroz registar sukcesivnih<br />
aproksimacija sa pripadajućim logičkim kolima. Dominantan uticaj na vreme<br />
konverzije ima vreme postavljanja D/A konvertora, pošto je ovo vreme često i<br />
za red veličine duže od ostalih kašnjenja u mreži. Tipično vreme konverzije za,<br />
na primer, dvanaestobitne integrisane SAR ADK je od 1µs za najbrže, do<br />
nekoliko desetina µs za sporije ADK.<br />
Brzina SAR ADK je ograničena sa:<br />
• Vremenom smirivanja D/A konvertora<br />
• Komparatorom, koji za određeno vreme mora da detektuje male razlike<br />
između napona Vul i Viz<br />
• Vremenom izvršavanja logičkih operacija.<br />
Maksimalno smirivanje D/A konvertora je najčešće određeno smirivanjem<br />
MSB-a. Linearnost celokupnog A/D konvertora je limitirana linearnošću D/A<br />
konvertora. Zbog toga, SAR ADK-i čija rezolucija prelazi 12 bita često<br />
zahtevaju neku vrstu kalibracije ili dodavanje novih komponenti da bi se<br />
postigla potrebna linearnost. Dodavanje novih komponenti donosi sa sobom i<br />
problem slaganja (uparenosti) komponenti. Zbog svega navedenog, u praksi<br />
najčešće srećemo realizacije čija rezolucija ne prelazi 12 bita.<br />
Najvažnije prednosti A/D konvertora sa sukcesivnim aproksimacijama su<br />
mala potrošnja, visoka rezolucija, tačnost i to što zauzimaju malo mesta na<br />
sili-cijumskoj pločici. Glavna ograničenja u strukturi su mala brzina odabiranja,<br />
kao i zahtevi da tačnost pojedinih delova (kao što su D/A konvertor i<br />
komparator) bude na nivou tačnosti celog sistema.<br />
46
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
4-5. SIGMA-DELTA A/D KONVERTORI<br />
Sigma-delta konvertori se karakterišu visokom rezolucijom, tačnošću, visokom<br />
integrabilnošću i niskom cenom. Zbog navedenih osobina oni su veoma<br />
zastupljeni u komercijalnim aplikacijama kao sto su mobilna telefonija, ADSL<br />
tehnologija i mnoge druge.<br />
U samoj realizaciji možemo uočiti dve strane ovog konvertora:<br />
• analognu stranu (jednostavna, čini je 1-bitni A/D konvertor)<br />
• digitalnu stranu (kompleksnija).<br />
Blok šema sigma – delta A/D konvertora prikazana je na Slici 4-12.<br />
Slika 4-12. Blok šema sigma – delta A/D konvertora<br />
Radi lakšeg razumevanja principa rada i strukture sigma-delta konvertora<br />
tekst je podeljen na sledeće delove:<br />
• oversampling<br />
• delta modulaciju<br />
• uobličavanje spektra šuma (noise shaping)<br />
• digitalno filtriranje<br />
• decimaciju.<br />
OVERSAMPLING (“prekomerno odmeravanje”)<br />
Po teoremi o odabiranju, brzina odabiranja F mora biti barem dva puta<br />
veća od širine opsega ulaznog signala. Kada je Fs > 2Fb, to se zove<br />
oversampling. Na primer, neka je na ulaz običnog višebitnog A/D konvertora<br />
doveden sinusni signal koji se odabira frekvencijom koja je dva puta veća od<br />
njegovog opsega. Kada signal prođe kroz konvertor, na izlazu će se za rezultat<br />
dobiti koristan signal i mnoštvo nasumičnog šuma. Ovo je šum kvantizacije,<br />
koji je rezultat sledećeg: ulazni signal A/D konvertora je kontinualni signal sa<br />
beskonačnim brojem mogućih stanja, a digitalni izlaz je diskretna f-ja čiji je<br />
broj različitih stanja određen rezolucijom konvertora. Prema tome, AD<br />
konverzija gubi određen deo informacija i uvodi smetnje u signal. Amplituda<br />
ove greške je nasumična, sa vrednostima do ±LSB. Na Slici 4-13. prikazan je<br />
koristan signal i šum u frekvencijskom domenu.<br />
47
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Slika 4-13. Signal na izlazu konvertora u frekvencijskom domenu kada<br />
je Fs=2Fb<br />
Ako se posmatra isti ulazni signal,ali se frekvencija odabiranja poveća k<br />
puta, na kF, što je prikazano na Slici 4-14, vidi se da se nivo šuma smanjio, a<br />
energija šuma se rasporedila na veći frekvencijski opseg (pri tom je odnos<br />
signal/šum ostao isti).<br />
Propuštanjem ovakvog signala kroz digitalni filtar dobijaju se mnogo bolji<br />
rezultati nego što bi se dobili kada ne bi koristili oversampling. Prikaz signala<br />
propuštenog kroz digitalni filtar dat je na Slici 4-15.<br />
Slika 4-14. Signal na izlazu konvertora kada je brzina odabiranja<br />
povećana k puta<br />
48
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Slika 4-15. Odziv digitalnog filtra nakon oversampling-a<br />
DELTA MODULACIJA<br />
U osnovi ideje delta modulacije je digitalni prenos razlike susednih<br />
odbiraka analognog ulaznog signala, čime se smanjuje količina prenesenih<br />
podataka. Za demodulaciju koristi se integrator i niskopropusni filtar koji<br />
odstranjuje šum kvantizacije. Na Slikama 4-16 i 4-17 prikazana je blok šema<br />
delta modulacije i demodulacije:<br />
Slika 4-16. Delta modulacija<br />
Slika 4-17. Demodulacija<br />
49
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
UOBLIČAVANJE SPEKTRA ŠUMA (noise shaping)<br />
Ako zanemarimo nesavršenost realnih komponenti pri realizaciji sigma<br />
delta modulatora, ukupna greška je jednaka grešci kvantizacije. Blok šema<br />
jednog takvog sigma delta modulatora prikazana je na Slici 4-18.<br />
Slika 4-18. Blok šema sigma delta modulatora sa niskopropusnim<br />
filtrom<br />
Signal Y(s), kad imamo da je N(s)=0, jednak je:<br />
, odakle dobijamo da je prenosna funkcija modulatora jednaka:<br />
, dobijamo da je to za niskopropusni filtar.<br />
Ako želimo da izrazimo prenosnu karakteristiku signala šuma, kada je X(s)=0,<br />
imamo:<br />
, odakle dobijamo da je prenosna karakteristika jednaka:<br />
; premat tome, dobijamo da je to visokopropusni filtar.<br />
Dakle, zaključujemo kako se sigma delta modulator ponaša kao niskopropusni<br />
filtar za signal, a kao visokopropusni filtar za šum. Na taj način je<br />
50
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
većina šuma "pomerena" na visoke frekvencije. To predstavlja uobličavanje<br />
spektra šuma. Karakteristika spektra korisnog signala i šuma prikazana je na<br />
Slici 4-19.<br />
Slika 4-19. Karakteristika korisnog signala i signala šuma<br />
Ako sada primenimo digitalni filtar, on će otkloniti više šuma nego što bi<br />
se otklonilo primenom samog oversamplinga. Na Slici 4-20. prikazan je signal<br />
zajedno sa šumom i označen je deo koji izdvajamo uz pomoć digitalnog filtra.<br />
Izdvajamo samo koristan signal.<br />
Slika 4-20. Izdvajanje korisnog signala uz pomoć digitalnog filtra<br />
Primer jednog sigma-delta modulatora prvog reda prikazan je na sledećoj<br />
Slici 4-21.<br />
51
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Slika 4-21. Blok šema sigma-delta modulatora prvog reda<br />
Sigma-delta modulator se sastoji iz jednog diferencijalnog pojačavača,<br />
integratora i komparatora sa povratnom spregom koja sadrži 1-bitni D/A<br />
konvertor. Ovaj D/A konvertor služi za održavanje srednje vrednosti izlaza<br />
integratora blizu referentnog nivoa komparatora. Na izlazu modulatora formira<br />
se povorka "jedinica" i "nula". Gustina "jedinica" na izlazu proporcionalna je<br />
ulaznom signalu. Povećanjem amplitude ulaznog signala komparator generiše<br />
veći broj "jedinica" i obrnuto, smanjivanjem amplitude ulaznog napona<br />
komparator gene-riše manji broj "jedinica".<br />
Modulator prvog reda obezbeđuje poboljšanja odnosa signal/šum od 9dB<br />
za svako dupliranje frekvencije odabiranja. Može se postići uobličavanje<br />
spektra šuma koristeći više od jedne faze integracije i sumiranja u sigma-delta<br />
modulatoru. Na primer, sigma-delta modulator drugog reda obezbeđuje<br />
poboljšanja odnosa signal/šum od 15dB za svako udvostručavanje frekvencije<br />
odabiranja. Principijelna šema jednog sigma-delta modulatora trećeg reda<br />
prikazana je na Slici 4-22.<br />
Slika 4-22. Principijelna šema sigma-delta modulatora trećeg reda<br />
DIGITALNO FILTRIRANJE<br />
Digitalni NF filtar je sastavni deo sigma-delta konvertora. Uloga digitalnog<br />
filtra je sledeća:<br />
• usrednjava povorku 1-bitnih podataka<br />
• poboljšava rezoluciju A/D konvertora<br />
• uklanja šum kvantizacije koji je izvan opsega koji nas interesuje<br />
(određuje širinu opsega signala)<br />
• određuje vreme smirivanja.<br />
52
DECIMACIJA<br />
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Decimacija, koja se još zove i downsampling, je proces odbacivanja viška<br />
odabiranih podataka bez gubitka informacije. Ona se karakteriše faktorom<br />
decimacije M koji može biti bilo koji ceo broj i predstavlja odnos ulaznog i<br />
izlaznog opsega. Svrha decimacije jeste smanjivanje frekvencije izlaznog<br />
signala na upotrebljivu vrednost. Smanjivanje opsega kao rezultat daje i<br />
jeftiniju imple-mentaciju. Primer decimacije dat je na Slici 4-23.<br />
Sigma-delta konvertori svoj rad temelje na tri pojma:<br />
• oversampling<br />
• uobličavanje spektra šuma<br />
• decimacija<br />
Slika 4-23. Primer decimacije<br />
Zbog toga sigma-delta konvertori imaju veoma visoku rezoluciju i tačnost,<br />
ali i malu brzinu. Neke od osnovnih karakteristika sigma-delta konvertora su:<br />
• Visoka izlazna rezolucija (24 bita) (Kod sigma-delta konvertora je<br />
povećana rezolucija na račun smanjenja brzine).<br />
• Prednost ovih konvertora je što ne zahtevaju dodatna kola ili kalibraciju,<br />
čak i kad imamo visoku rezoluciju.<br />
• Visoka tačnost.<br />
• Standardni sigma-delta A/D konvertori koji se uglavnom koriste u<br />
digitalnim audio aplikacijama, imaju ograničenu širinu propusnog opsega<br />
na 22kHz. U novije vreme neki konvertori su dostigli širinu propusnog<br />
opsega od 1MHz do 2 MHz sa 12 do 16 bita rezolucije. Od najbržih<br />
sigma-delta A/D kon-vertora se ne očekuje da imaju značajno širi<br />
propusni opseg od nekoliko MHz u bliskoj budućnosti.<br />
• Zauzimaju mnogo mesta na čipu (najviše mesta zauzimaju digitalni filtar<br />
i decimator).<br />
53
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
• Ograničenje ove strukture je i kašnjenje koje je znatno veće nego kod<br />
drugih tipova A/D konvertora. Zbog oversemplinga i kašnjenja sigmadelta<br />
A/D konvertori se retko sreću u aplikacijama u kojima se koristi<br />
multipleks.<br />
4-5. FLEŠ A/D KONVERTORI<br />
Fleš A/D konvertori (Flash ADC) ili kako ih još zovu paralelni A/D<br />
konvertori spadaju u klasu najbržih A/D konvertora. Najbrži način da<br />
konvertujemo analogni oblik napona u digitalni oblik ostvaruje se pomoću ovog<br />
A/D konvertora. Ovi konvertori su idealni za aplikacije koje zahtevaju veliku<br />
širinu opsega.<br />
Fleš A/D konvertori troše puno energije, imaju relativno nisku rezoluciju i<br />
mogu biti veoma skupi, što ih ograničava na korišćenje u aplikacijama sa<br />
visokim frekvencijama. Koriste se za akviziciju podataka, satelitske<br />
komunikacije, radarsku obradu, digitalne osciloskope i visokonaponske disk<br />
drajvere.<br />
Fleš A/D konvertor je sačinjen od veoma brzih kaskadnih komparatora.<br />
Svaki komparator predstavlja 1LSB, a izlazni kod se može odrediti u jednom<br />
kompara-torskom kolu. Osnovna realizacija fleš A/D kovertora prikazana je na<br />
Slici 4-24.<br />
Slika 4-24. Osnovna blok šema fleš A/D konvertora<br />
Realizacija fleš A/D konvertora sa termometarskim kodom prikazana je na<br />
Slici 4-25. Za jedan N-bitni konvertor potrebno je da kolo sadrži 2 N -1 kom-<br />
54
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
paratora. Otpornički razdelnik sa 2 N otpornika obezbeđuje referentni napon.<br />
Referentni napon za svaki komparator je za jedan LSB veći od referentnog<br />
napona za komparator koji je odmah ispod. Svaki komparator daje "1" kada je<br />
njegov analogni ulazni napon veći od referentnog napona dovedenog na njega.<br />
U suprotnom, izlaz je "0". Prema tome, ako je analogni ulaz između V X4 i V X5 ,<br />
komparatori X 1 do X 4 daju jedinice, a preostali komparatori daju nule. Ovo je<br />
poznato kao termometarsko enkodiranje, a tako je dobilo naziv jer je slično<br />
živinom termometru kod koga živin stub uvek raste do odgovarajuće<br />
temperature i iznad te vrednosti živa ne ide. Termometarski kod je zatim<br />
dekodiran u odgovarajući izlazni kod.<br />
Slika 4-25. Fleš A/D kovertor sa termometarskim kodom<br />
Što se komparatora tiče oni su tipično kaskada širokopojasnih stepena<br />
niskih pojačanja. Ovo pojačanje je malo, jer je na visokim frekvencijama teško<br />
postići i širok opseg i veliko pojačanje. Dizajnirani su za nizak napon ofseta,<br />
takav da je ulazni ofset svakog komparatora manji od LSB-a A/D konvertora. U<br />
suprotnom, komparatorski ofset bi mogao lažno navesti komparator, pri čemu<br />
digitalni kod ne bi reprezentovao termometarski kod (greška na najniža 2<br />
55
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
bita). Leč sa osve-žavanjem na svakom komparatorskom izlazu čuva rezultat.<br />
Leč ima pozitivnu povratnu spregu, tako da je krajnje stanje zasigurno ili "1" ili<br />
"0".<br />
Problemi kod realnih fleš A/D konvertora<br />
Kao i kod svih ostalih realnih komponenata i kod realnih fleš (flash) A/D<br />
konvertora se javljaju problemi. Najčešće probleme ćemo ukratko predstaviti.<br />
U normalnim uslovima komparatorski izlaz će biti termometarski kod kao<br />
što je na primer "00011111", a greške mogu izazvati izlazni kod kao što je na<br />
primer "00010111". Ovaj izlaz nulte sekvence se naziva ISKRA (sparkle). Ovo<br />
može biti izazvano nesavršenošću ulaznog nagomilavanja ili vremenskom<br />
neusaglašenošću komparatora. Moderni konvertori kao što je MAX104<br />
uvrštavaju ulazno kolo za odmeravanje i zadršku, SH kolo (sample&hold)<br />
ispred A/D konvertora sa enko-dirajućom tehnikom koja sprečava iskra<br />
kodove.<br />
Kada je digitalni izlaz komparatora nejasan (ni nula ni jedinica), izlaz je<br />
definisan kao metastabilan. Metastabilnost može biti redukovana<br />
obezbeđivanjem više vremena za regeneraciju. Takođe, metastabilnost se<br />
može poboljšati Grejovim kodom enkodiranja. Grejov kod obezbeđuje da se u<br />
jednom trenutku samo jedan bit u izlazu promeni. Kod Grejovog koda svaki<br />
kod se razlikuje za tačno jednu cifru (jedan kod) od kodova susednih njemu tj.<br />
od kodova pre i posle njega. Komparatorski izlazi su prvo konvertovani u<br />
Grejev kod enkodiranja i onda kasnije dekodirani u binarni, ako je to poželjno.<br />
Drugi problem koji se javlja je taj kada se metastabilan izlaz kreće dvema<br />
različitim kružnim putanjama. Moguća situacija koja može da se dogodi je da<br />
jedna putanja “proglasi” ulaz kao "1" dok druga putanja “smatra” da je na<br />
ulazu "0". Ovo može da stvori glavne greške. Da bi se ovakve greške izbegle<br />
potrebno je da samo jedna kružna putanja oseti metastabilan izlaz.<br />
Još jedna stvar koja može da stvara probleme je frekventna zavisnost<br />
izlaznog signala. Kada se ulazni signal promeni pre nego što komparator izvrši<br />
svoje odlučivanje, performansa A/D konvertora je nepovoljno realizovana. Najozbiljniji<br />
problem u realizaciji je smanjivanje odnosa signal/šum (plus<br />
distorzija) kako frekvencija analognog ulaza raste.<br />
Kada proanaliziramo zavisnost fleš A/D konvertora od rezolucije dolazimo<br />
do zaključka da se brzina konverzije fleš A/D konvertora ne menja značajno sa<br />
povećanjem rezolucije. Kod konvertora sa sukcesivnim aproksimacijama brzina<br />
konverzije se menja linearno sa povećanjem rezolucije, dok se kod<br />
integrirajućih vreme duplira sa svakim bitom povećanja rezolucije.<br />
Usaglašavanje fleš konvertora obično ograničava rezoluciju na oko 8 bita.<br />
Zahtevi kod usaglašavanja komponenti se dupliraju sa svakim bitom povećanja<br />
rezolucije. Kod fleš A/D konvertora svaki bit povećanja rezolucije gotovo da<br />
udvostručava veličinu kola. Snaga se takođe udvostručava. Kod A/D<br />
konvertora sa sukcesivnim aprok-simacijama i kod sigma-delta konvertora<br />
promena je linearna dok kod integrirajućih neće doći do značajnih promena.<br />
Cena kola takođe raste sa povećanjem njegove složenosti.<br />
CMOS fleš A/D konvertori su dostupni na niskim brzinama i rezolucijama i<br />
obično su namenjeni za inegrisanje u velika CMOS kola. Za aplikacije koje<br />
zahtevaju skromnu rezoluciju, obično do 8 bita, na frekvencijama semplovanja<br />
56
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
od nekoliko stotina MHz, arhitektura fleš A/D konvertora bi mogla biti jedina<br />
povoljna alternativa. Za aplikacije sa visokom frekvencijom analognog ulaza,<br />
izabrani A/D konvertor bi trebao da ima jedno ulazno kolo za odmeravanje i<br />
zadršku.<br />
4-6. PRENOSNA FUNKCIJA A/D KONVERTORA<br />
Prenosna funkcija je dijagram na kome je prikazan kod na izlazu iz A/D<br />
konvertora za vrednosti ulaznog signala A/D konvertora. Dijagram prenosne<br />
funkcije nije kontinualan već se sastoji od 2 N kodova, gde je N rezolucija A/D<br />
konvertora u bitima. Ako bi povezali ove kodove jednom linijom (obično kroz<br />
tačke na prelasku sa jednog koda na drugi), idealna prenosna funkcija bi bila<br />
prava linija. Linija povučena kroz tačke na svakoj granici između kodova,<br />
počinjala bi u koordinatnom početku a nagib prave bi bio isti (kao na Slici 4-<br />
26.) za svaki A/D konvertor.<br />
Slika 4-26. Idealna prenosna funkcija 3-bitnog A/D konvertora<br />
Slika 4-26 prikazuje idealnu prenosnu funkciju za 3-bitni A/D konvertor<br />
sa referentnim tačkama na ivici promene koda. Izlazni kod biće najmanji (000)<br />
za vrednosti ulaznog signala ispod 1/8 maksimalne vrednosti (to je i širina<br />
jednog koda tog A/D konvertora). Takođe, primetite da A/D konvertor dostiže<br />
najveći izlazni kod (111) već na 7/8 maksimalne vrednosti dinamičkog opsega,<br />
a ne na granici dinamičkog opsega. Znači, prelazak na maksimalni digitalni<br />
izlazni kod ne dešava se kada je vrednost ulaznog napona na granici<br />
dinamičkog opsega. Prelazak se dešava kada je napon za jedan kod – ili<br />
najmanje značajan bit (LSB) – manji od dinamičkog opsega (drugim rečima od<br />
referentnog napona).<br />
57
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Slika 4-27. Prenosna funkcija 3-bitnog A/D konvertora sa ofsetom od<br />
-1/2 LSB<br />
Prenosna funkcija može biti implementirana sa ofsetom od -½ LSB, kao<br />
što je prikazano na Slici 4-27. Ova translacija prenosne funkcije ulevo<br />
translira i opseg greške kvantizacije iz (-1 do 0 LSB) u opseg (-½ do +½ LSB).<br />
Iako je ovaj ofset nameran, on se često navodi u specifikacijama kao deo<br />
greške ofseta.<br />
4-7. GREŠKE A/D KONVERTORA<br />
Ograničenja u materijalima koji se koriste za izradu znače da u praksi A/D<br />
konvertori neće imati idealnu prenosnu funkciju. Odstupanja od idealne<br />
prenosne funkcije definišu DC preciznost i okarakterisana su parametrima u<br />
tablicama tehničkih podataka.<br />
Rezultat AD konverzije odstupa od idealnog zbog varijacija u procesu<br />
izrade što je zajedničko za sva integrisana kola, kao i zbog raznih drugih izvora<br />
grešaka u samom procesu analogno-digitalne (A/D) konverzije. Preciznost A/D<br />
konvertora zavisi od nekoliko ključnih tehničkih osobina, koje obuhvataju<br />
diferencijalnu nelinearnu grešku (DNL), integralnu nelinearnu grešku (INL),<br />
ofset i grešku poja-čanja, preciznost referentnog napona, uticaj temperature i<br />
dinamičke perfor-manse.<br />
Dve popularne metode za utvrđivanje ukupne greške sistema su metoda<br />
kvadratnog korena sume kvadrata grešaka (root-sum-square - RSS) i metoda<br />
najgoreg slučaja. RSS metoda podrazumeva kvadriranje pojedinačnih grešaka,<br />
njihovo sabiranje i konačno kvadratni koren zbira daje ukupnu grešku:<br />
UKUPNA GREŠKA =<br />
, gde En predstavlja pojedinačnu grešku neke komponente ili parametra.<br />
58
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Ovaj metod je najprecizniji kada pojedinačne greške nisu u međusobnoj<br />
korelaciji (što može a ne mora biti slučaj). Kod metode najgoreg slučaja, sve<br />
pojedinačne greške se sabiraju. Ova metoda garantuje da greška nikada neće<br />
preći određenu granicu. Kako se na ovaj način dobija gornja granica greške,<br />
stvarna greška je uvek manja od ove vrednosti (vrlo često MNOGO manja).<br />
Izmerena stvarna greška obično je negde između vrednosti dobijene na ova<br />
dva načina, ali je često bliža vrednosti dobijenoj RSS metodom. U zavisnosti od<br />
potreba i zahteva bira se između najgore i tipične vrednosti grešaka. Odluka o<br />
tome koja će vrednost biti korišćena zavisi od mnogo faktora, uključujući tu i<br />
standardnu devijaciju od merene vrednosti, važnosti pojedinih parametara,<br />
veličini greške u odnosu na druge greške, itd. Tako da u stvari i ne postoje<br />
neka tačno određena i stroga pravila koja moraju bit ispoštovana.<br />
Od aplikacije zavisi koje će specifikacije projektant da smatra najvažnijim.<br />
Na primer, DTMF dekoder uzorkuje telefonski signal kako bi utvrdio koji je<br />
taster pritisnut na aparatu sa tonskim biranjem. U ovom slučaju najbitnije je<br />
izmeriti snagu signala (iz određenog seta frekvencija) među ostalim tonovima i<br />
šumom koji nastaje prilikom A/D konverzije. U ovom projektu, projektant će<br />
najviše paž-nje da obrati na parametre dinamičkih performansi kao što su<br />
odnos signal/šum i harmonijska izobličenja. U drugom primeru, sistem može<br />
da očitava signal koji meri temperaturu neke tečnosti. U ovom slučaju, DC<br />
preciznost merenja je najbitnija tako da će ofset, pojačanje i nelinearnosti biti<br />
najpre proveravane.<br />
Ne mora da znači, da ako uzmemo A/D konvertor sa više bita od<br />
predviđenog za neku određenu preciznost, da ćemo i dobiti karakteristike<br />
konvertora u željenoj preciznosti. Ako na primer, pretpostavimo da ja potrebno<br />
postići pre-ciznost od 0,1% ili 10-bitnu preciznost (1/2 10 ), tako da ima smisla<br />
odabrati konvertor sa rezolucijom većom od ove. Ako odaberemo 12-bitni<br />
konvertor, možemo da pretpostavimo da će to biti dovoljno; ali bez analize<br />
specifikacije, nema garancije da on postiže 12-bitne performanse (on može biti<br />
boljih ili lošijih karakterisitka). Na primer, 12-bitni A/D konvertor sa<br />
integralnom greškom nelinearnosti od 4 LSB-a (Least Significant Bit -<br />
najmanje važan bit) može postići samo 10-bitnu preciznost u najboljem slučaju<br />
(ako se podrazumeva da su greške ofseta i pojačanja kalibrisane). Uređaj sa<br />
integralnom greškom nelinearnosti od 0.5 LSB-a može postići grešku manju od<br />
0.0122% odnosno 13-bitnu preciznost (ako su uklonjene greške ofseta i<br />
pojačanja). Da bi se izračunala najveća preciznost, potrebno je maksimalnu<br />
integralnu grešku nelinearnosti podeliti sa 2 N , gde je N – broj bita. U našem<br />
slučaju, ako dopustimo grešku od 0.075% (tj. 11-bitnu grešku) za A/D<br />
konvertor, ostaje nam greška od 0.025% za ostatak elektronskog sklopa, što<br />
uključuje greške senzora, grešku od operacionih pojačavača, multipleksera,<br />
eventualnog D/A konvertora, ili drugih analognih izlaznih signala na putanji<br />
signala.<br />
Mnogi signali su relativno statični, kao npr. izlazni signali temperaturnih<br />
senzora ili senzora pritiska. U takvim aplikacijama mereni signal je povezan sa<br />
nekom fizičkom veličinom i apsolutna preciznost merenja tog napona je važna.<br />
Parametri A/D konvertora koji opisuju ovaj vid preciznosti su greška ofseta,<br />
greška pojačanja dinamičkog opsega, diferencijalna nelinearnost (DNL) i integralna<br />
nelinearnost (INL). Ova četiri parametra u potpunosti opisuju apsolutnu<br />
preciznost A/D konvertora.<br />
59
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Iako se ne navodi kao parametar jedna od osnovnih grešaka A/D<br />
konvertora, a nastaje kao rezultat pretvaranja signala i podataka je greška<br />
kvantizacije. Ova greška ne može biti izbegnuta u merenjima uz A/D<br />
konverziju. DC preciznost i rezultujuću apsolutnu grešku određuju četiri<br />
parametra – ofset, pojačanje u celom dinamčkom opsegu, INL i DNL. Greška<br />
kvantizacije je nezaobilazni rezultat predstavljanja analognog signala u<br />
digitalnim brojevima (drugim rečima, plod analogno-digitalne konverzije).<br />
Maksimalna greška kvantizacije je određena rezo-lucijom merenja (ili<br />
rezolucijom A/D konvertora, ako je signal oversample-ovan). Dalje, greška<br />
kvantizacije će se pojaviti kao šum, poznatiji kao šum kvantizacije u<br />
dinamičkoj analizi. Na primer, greška kvantizacije pojaviće se kao prag šuma u<br />
FFT dijagramu (frekvencijskom spektru) merenog signala na ulazu A/D konvertora.<br />
Slika 4-28. Greška ofseta kod realnog A/D konvertora<br />
60
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Slika 4-29. Greška pojačanja kod realnog A/D konvertora<br />
Slika 4-30. Diferencijalna nelinearnost kod realnog A/D konvertora<br />
61
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
/V/ OPIS PROJEKTA<br />
Naša namera je bila da ovim radom ilustrujemo tri procesa koja kontroliše<br />
mikrokontroler PIC16F877-04:<br />
• A/D konverziju (vrši je interni ADC u mikrokontroleru),<br />
• D/A konverziju (vrši je eksterni DAC0832LCV),<br />
• obradu informacije sa PPI D71055C (NEC-ova zamena za PPI Intel<br />
8255).<br />
Na Slici 5-1. prikazana je blok šema uređaja – gde je prikazana sprega<br />
između D71055C-PIC16F877-DAC0832LCV (PPI-mikrokontroler-DAC).<br />
Slika 5-1. Blok šema sprege PIC16F877, PPI D71055C i DAC0832<br />
5-1. Električna šema i izgled štampane ploče<br />
Na Slici 5-2. prikazana je električna šema veze mikrokontrolera<br />
PIC16F877-04 i njegovih interfejsnih integrisanih kola (D/A konvertora i<br />
paralelnog periferijskog interfejsa). Na Slici 5-3. prikazan je raspored<br />
komponenata na štampanoj ploči (PCB).<br />
62
Gnd<br />
Gnd<br />
1N5819<br />
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
D1<br />
U1<br />
DC Power 1<br />
Vin<br />
7.5V<br />
Gnd<br />
Gnd<br />
Gnd<br />
Gnd<br />
Gnd<br />
Gnd<br />
Gnd Gnd<br />
Gnd<br />
CN3<br />
1<br />
2<br />
C8<br />
22pF<br />
C9<br />
U5<br />
CS<br />
WR1<br />
GND<br />
D3<br />
D2<br />
D1<br />
D0<br />
VREF<br />
22pF<br />
VCC<br />
ILE<br />
WR2<br />
XFER<br />
J3<br />
D4<br />
D5<br />
D6<br />
D7<br />
OUT2<br />
FB<br />
GND OUT1<br />
DAC0832<br />
DC<br />
J1 AC<br />
J2<br />
R4 10K<br />
Y1<br />
4MHz<br />
Gnd<br />
Gnd<br />
Gnd<br />
Gnd<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11<br />
12<br />
13<br />
14<br />
15<br />
16<br />
17<br />
18<br />
19<br />
20<br />
C1<br />
100uF<br />
16V<br />
C2<br />
1<br />
100uF<br />
16V<br />
R9<br />
4K7<br />
R8<br />
4K7<br />
U3<br />
J8<br />
J7<br />
U2<br />
MCLR PB7<br />
PA0 PB6<br />
PA1 PB5<br />
PA2 PB4<br />
PA3 PB3<br />
PA4 PB2<br />
PA5 PB1<br />
RD PB0<br />
WR VDD<br />
CS VSS<br />
VDD PD7<br />
VSS PD6<br />
OSC1 PD5<br />
OSC2 PD4<br />
PC0 PC7<br />
PC1 PC6<br />
PC2 PC5<br />
PC3 PC4<br />
PD0 PD3<br />
PD1 PD2<br />
PIC16F877<br />
Gnd<br />
2<br />
Vout<br />
LM78M05<br />
Vin<br />
Gnd<br />
2<br />
Gnd<br />
Vout<br />
LM78M05<br />
Gnd<br />
Gnd<br />
Gnd<br />
40<br />
39<br />
38<br />
37<br />
36<br />
35<br />
34<br />
33<br />
32<br />
31<br />
30<br />
29<br />
28<br />
27<br />
26<br />
25<br />
24<br />
23<br />
22<br />
21<br />
3<br />
3<br />
Gnd<br />
Gnd<br />
Gnd<br />
C3<br />
100uF<br />
16V<br />
C4<br />
100uF<br />
16V<br />
R10<br />
10K<br />
U6<br />
Gnd<br />
Gnd<br />
OutA V+<br />
A- OutB<br />
A+ B-<br />
V- B+<br />
C5<br />
47nF<br />
C6<br />
47nF<br />
Out<br />
Gnd<br />
Gnd<br />
LF353<br />
Gnd Gnd<br />
LED17<br />
LED16<br />
LED15<br />
LED14<br />
LED13<br />
LED12<br />
LED11<br />
LED10<br />
LED7<br />
LED6<br />
LED5<br />
LED4<br />
LED3<br />
LED2<br />
LED1<br />
LED0<br />
C7<br />
47nF<br />
P1<br />
10K<br />
R11<br />
20K<br />
8<br />
7<br />
6<br />
5<br />
4<br />
3<br />
2<br />
1<br />
8<br />
7<br />
6<br />
5<br />
4<br />
3<br />
2<br />
1<br />
Gnd<br />
Gnd<br />
R12<br />
20K<br />
R1 2K2<br />
10K<br />
T1<br />
RN2<br />
2K2<br />
P2<br />
CN1<br />
10K<br />
8<br />
7<br />
6<br />
5<br />
4<br />
3<br />
2<br />
1<br />
RN1<br />
2K2<br />
R3<br />
9<br />
Gnd<br />
9<br />
Gnd<br />
Gnd<br />
J5<br />
Gnd<br />
P3<br />
R5<br />
10K<br />
LED8<br />
10K<br />
R2<br />
2K2<br />
J6<br />
Gnd<br />
R6<br />
10K<br />
Gnd<br />
LED9<br />
RN3<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
Gnd<br />
8<br />
9<br />
10<br />
11<br />
12<br />
13<br />
14<br />
15<br />
16<br />
17<br />
18<br />
19<br />
20<br />
16<br />
15<br />
14<br />
13<br />
12<br />
11<br />
10<br />
9<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
U4<br />
PA3 PA4<br />
PA2 PA5<br />
PA1 PA6<br />
PA0 PA7<br />
RD WR<br />
CS RESET<br />
GND PD0<br />
A1 PD1<br />
A0 PD2<br />
PC7 PD3<br />
PC6 PD4<br />
PC5 PD5<br />
PC4 PD6<br />
PC0 PD7<br />
PC1 VCC<br />
PC2 PB7<br />
PC3 PB6<br />
PB0 PB5<br />
PB1 PB4<br />
PB2 PB3<br />
D71055C<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
CN2<br />
10K<br />
Gnd<br />
Slika 5-2. Električna šema sprege mikrokontrolera PIC16F877,<br />
paralelnog periferijskog interfejsa D71055C i D/A konvertora<br />
DAC08032LCV<br />
Prva grupa LED dioda (LED0-LED7) koje su povezane na Port C mikrokontrolera<br />
PIC16F877 detektuju stanja na Portu D, koji je povezan sa paralelnim<br />
periferijskim interfejsom (PPI) D71055C. Druga grupa LED dioda (LED10-<br />
LED17) koje su povezane ne Port B mikrokontrolera, detektuje (indicira) 8bitnu<br />
reč koja se dobija A/D konverzijom signala koji se dovode na<br />
odgovarajuće pinove Porta A.<br />
Mikrokontroler radi na frekvenciji od 4 MHz, a resetuje se tasterom T1. Na<br />
pin PA0 se dovodi jednosmerni (DC) signal, a na PA1 naizmenični (AC) signal.<br />
Koji signal će biti propušten, zavisi od položaja džampera (eng. jumper) J2,<br />
40<br />
39<br />
38<br />
37<br />
36<br />
35<br />
34<br />
33<br />
32<br />
31<br />
30<br />
29<br />
28<br />
27<br />
26<br />
25<br />
24<br />
23<br />
22<br />
21<br />
SD1<br />
SW DIP-8<br />
Gnd<br />
J4<br />
R7<br />
10K<br />
63
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
odnosno stanja na pinu PA2. Ukoliko je PA2 = 1 (džamper nije postavljen),<br />
tada se propušta DC signal. Za PA2 = 0 propušta se AC signal. (Naime,<br />
PIC16F877 ima 10-kanalni A/D konvertor, ali se u jednom trenutku konvertuje<br />
signal samo sa jednog kanala, odnosno pina). Kada je u pitanju DC signal,<br />
postoji mogućnost da se on dovodi na mikrokontroler interno (preko P1) ili<br />
eksterno (preko 2-pinskog konektora CN3) – što se reguliše položajima<br />
džampera J3.<br />
Napajanje svih komponenata u kolu je 5V, tako da treba voditi računa da<br />
se eksterno ne dovodi napon koji je van opsega 0 – 5V.<br />
Programski je definisano da se DC signal odabira (uzorkuje, sempluje,<br />
eng. sampling) sa frekvencijom 100 Hz, a AC signal – sa frekvencijom 10 KHz.<br />
Slika 5-3. Štampana ploča za šemu sa Slike 5.2<br />
Kada je u pitanju PPI D71055C, napomenućemo da se on nalazi u Modu 0.<br />
Tokom rada, stanja njegovih kontrolnih/upravljačkih signala su sledeća:<br />
__ __ __<br />
A1 A0 CS RD WR OPERACIJA<br />
0 0 0 0 1 PORT A → DATA BUS<br />
Stanja pinova/signala A1 i A0 se zadaju preko džampera J5 i J6 (oba su<br />
postavljen, pa je A1= 0 i A0= 0), a mikrokontroler PIC16F877-04 generiše<br />
signale CS = 0, RD = 0 i WR = 1. Na ovaj način je omogućeno da se na Port D<br />
64
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
mikrokontrolera preko DATA linija (D7-D0) paralelnog periferijskog interfejsa<br />
prenese stanje sa njegovog Porta A (PORTA_PPI → DataBus_PPI →<br />
PORTD_PIC).<br />
Napomenućemo kako se stanja na Portu A paralelnog periferijskog<br />
interfejsa D71055C zadaju preko 8-pinskog prekidača SW DIP-8 i da postoji<br />
mogućnost proširenja – preko konektora CN1 i CN2 su izvučeni Port C i Port B,<br />
respektivno.<br />
D/A konvertor DAC0832LCV je 8-pinski. Ovde se koristi u kombinaciji sa<br />
operacionim pojačavačem LF353. DAC prihvata 8-bitnu reč sa Porta B<br />
mikrokon-trolera i konvertuje je u analogni signal (napon) – opseg ovog<br />
napona je 0 – 5V. Procedura konverzije je veoma jednostavna, a dodatne<br />
informacije o D/A konver-toru DAC0832LCV mogu se pročitati u poglavlju<br />
DATASHEETS - IZVODI.<br />
5-2. Listing programa u mikroC-u<br />
long v1, v2; // Definisanje varijabli.<br />
void main() {<br />
TRISA=0b000111; //Definisanje i inicijalizacija Portova<br />
TRISB = 0x00; // A,B,C i D.<br />
TRISC = 0x00;<br />
TRISD = 0xFF;<br />
TRISE = 0x00;<br />
PORTA = 0b000000;<br />
PORTB = 0x00;<br />
PORTC = 0x00;<br />
PORTD = 0x00;<br />
ADCON1 = 6; // Konfiguracija analognih i digitalnih<br />
// pinova.<br />
do {<br />
_ ___ _<br />
PORTA.F3 = 0; // Definisanje signala Cs, Rd i Wr.<br />
PORTA.F4 = 0;<br />
PORTA.F5 = 1;<br />
PORTC = PORTD; //Stanje sa Porta D se «preslikava» na<br />
// Port C.<br />
if (PORTA.F2 == 1) {<br />
v1 = ADC_Read(0); // A/D konverzija DC signala.<br />
PORTB = v1 >> 2; // Prikazujemo samo 8 bitova, a niža 2<br />
// bita se odbacuju.<br />
65
}<br />
}<br />
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
delay_ms(10);//Odabira se sa frekvencijom od 100 Hz.<br />
if (PORTA.F2 == 0) {<br />
v2 = ADC_Read(1); // A/D konverzija AC signala.<br />
PORTB = v2 >> 2;<br />
delay_us(100); //Odabira se sa frekvencijom od 10 KHz.<br />
}<br />
} while(1);<br />
5-3. Listing programa u asembleru<br />
$000D $019F CLRF ADCON0, 1<br />
$000E $30C0 MOVLW 192<br />
$000F $049F IORWF ADCON0, 1<br />
$0010 $1683 BSF STATUS, RP0<br />
$0011 $171F BSF ADCON1, 6<br />
$0012 $179F BSF ADCON1, 7<br />
$0013 $1283 BCF STATUS, RP0<br />
$0014 $0828 MOVF FARG_Adc_Read+0, 0<br />
$0015 $00F0 MOVWF STACK_0<br />
$0016 $0DF0 RLF STACK_0, 1<br />
$0017 $1070 BCF STACK_0, 0<br />
$0018 $0DF0 RLF STACK_0, 1<br />
$0019 $1070 BCF STACK_0, 0<br />
$001A $0DF0 RLF STACK_0, 1<br />
$001B $1070 BCF STACK_0, 0<br />
$001C $0870 MOVF STACK_0, 0<br />
$001D $049F IORWF ADCON0, 1<br />
$001E $141F BSF ADCON0, 0<br />
$001F $2004 CALL _Delay_22us<br />
$0020 $151F BSF ADCON0, 2<br />
$0021 $ L_Adc_Read_0:<br />
$0021 $1D1F BTFSS ADCON0, 2<br />
$0022 $2825 GOTO L_Adc_Read_1<br />
$0023 $0000 NOP<br />
$0024 $2821 GOTO L_Adc_Read_0<br />
$0025 $ L_Adc_Read_1:<br />
$0025 $101F BCF ADCON0, 0<br />
$0026 $3008 MOVLW 8<br />
66
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
$0027 $00F2 MOVWF STACK_2<br />
$0028 $081E MOVF ADRESH, 0<br />
$0029 $00F0 MOVWF STACK_0<br />
$002A $01F1 CLRF STACK_0+1<br />
$002B $0872 MOVF STACK_2, 0<br />
$002C $ L_Adc_Read_2:<br />
$002C $1903 BTFSC STATUS, Z<br />
$002D $2833 GOTO L_Adc_Read_3<br />
$002E $0DF0 RLF STACK_0, 1<br />
$002F $0DF1 RLF STACK_0+1, 1<br />
$0030 $1070 BCF STACK_0, 0<br />
$0031 $3FFF ADDLW 255<br />
$0032 $282C GOTO L_Adc_Read_2<br />
$0033 $ L_Adc_Read_3:<br />
$0033 $1683 BSF STATUS, RP0<br />
$0034 $081E MOVF ADRESL, 0<br />
$0035 $04F0 IORWF STACK_0, 1<br />
$0036 $3000 MOVLW 0<br />
$0037 $04F1 IORWF STACK_0+1, 1<br />
$0038 $0008 RETURN<br />
$0039 $ _main:<br />
;PIC_.c,2 :: void main() {<br />
;PIC_.c,4 :: TRISA = 0b000111;<br />
$0039 $3007 MOVLW 7<br />
$003A $1303 BCF STATUS, RP1<br />
$003B $1683 BSF STATUS, RP0<br />
$003C $0085 MOVWF TRISA<br />
;PIC_.c,5 :: TRISB = 0x00;<br />
$003D $0186 CLRF TRISB, 1<br />
;PIC_.c,6 :: TRISC = 0x00;<br />
$003E $0187 CLRF TRISC, 1<br />
;PIC_.c,7 :: TRISD = 0xFF;<br />
$003F $30FF MOVLW 255<br />
$0040 $0088 MOVWF TRISD<br />
;PIC_.c,8 :: TRISE = 0x00;<br />
$0041 $0189 CLRF TRISE, 1<br />
;PIC_.c,9 :: PORTA = 0b100000;<br />
$0042 $3020 MOVLW 32<br />
$0043 $1283 BCF STATUS, RP0<br />
$0044 $0085 MOVWF PORTA<br />
;PIC_.c,10 :: PORTB = 0x00;<br />
$0045 $0186 CLRF PORTB, 1<br />
;PIC_.c,11 :: PORTC = 0x00;<br />
$0046 $0187 CLRF PORTC, 1<br />
;PIC_.c,12 :: PORTD = 0x00;<br />
67
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
$0047 $0188 CLRF PORTD, 1<br />
;PIC_.c,13 :: ADCON1 = 6;<br />
$0048 $3006 MOVLW 6<br />
$0049 $1683 BSF STATUS, RP0<br />
$004A $009F MOVWF ADCON1<br />
;PIC_.c,16 :: do {<br />
$004B $ L_main_0:<br />
;PIC_.c,21 :: PORTC = PORTD;<br />
$004B $1283 BCF STATUS, RP0<br />
$004C $0808 MOVF PORTD, 0<br />
$004D $0087 MOVWF PORTC<br />
;PIC_.c,24 :: if (PORTA.F2 == 1) {<br />
$004E $3000 MOVLW 0<br />
$004F $1905 BTFSC PORTA, 2<br />
$0050 $3001 MOVLW 1<br />
$0051 $00F4 MOVWF STACK_4<br />
$0052 $0874 MOVF STACK_4, 0<br />
$0053 $3A01 XORLW 1<br />
$0054 $1D03 BTFSS STATUS, Z<br />
$0055 $2886 GOTO L_main_2<br />
;PIC_.c,26 :: v1 = ADC_Read(0);<br />
$0056 $01A8 CLRF FARG_Adc_Read+0, 1<br />
$0057 $200B CALL _Adc_Read<br />
$0058 $0870 MOVF STACK_0, 0<br />
$0059 $1283 BCF STATUS, RP0<br />
$005A $00A0 MOVWF _v1<br />
$005B $0871 MOVF STACK_0+1, 0<br />
$005C $00A1 MOVWF _v1+1<br />
$005D $01A2 CLRF _v1+2<br />
$005E $01A3 CLRF _v1+3<br />
;PIC_.c,27 :: PORTB = v1 >> 2;<br />
$005F $0820 MOVF _v1, 0<br />
$0060 $00F0 MOVWF STACK_0<br />
$0061 $0821 MOVF _v1+1, 0<br />
$0062 $00F1 MOVWF STACK_0+1<br />
$0063 $0822 MOVF _v1+2, 0<br />
$0064 $00F2 MOVWF STACK_0+2<br />
$0065 $0823 MOVF _v1+3, 0<br />
$0066 $00F3 MOVWF STACK_0+3<br />
$0067 $0CF3 RRF STACK_0+3, 1<br />
$0068 $0CF2 RRF STACK_0+2, 1<br />
$0069 $0CF1 RRF STACK_0+1, 1<br />
$006A $0CF0 RRF STACK_0, 1<br />
$006B $13F3 BCF STACK_0+3, 7<br />
$006C $1B73 BTFSC STACK_0+3, 6<br />
68
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
$006D $17F3 BSF STACK_0+3, 7<br />
$006E $0CF3 RRF STACK_0+3, 1<br />
$006F $0CF2 RRF STACK_0+2, 1<br />
$0070 $0CF1 RRF STACK_0+1, 1<br />
$0071 $0CF0 RRF STACK_0, 1<br />
$0072 $13F3 BCF STACK_0+3, 7<br />
$0073 $1B73 BTFSC STACK_0+3, 6<br />
$0074 $17F3 BSF STACK_0+3, 7<br />
$0075 $0870 MOVF STACK_0, 0<br />
$0076 $0086 MOVWF PORTB<br />
;PIC_.c,28 :: delay_ms(10);<br />
$0077 $300D MOVLW 13<br />
$0078 $00FB MOVWF STACK_11<br />
$0079 $30FF MOVLW 255<br />
$007A $00FA MOVWF STACK_10<br />
$007B $0BFB DECFSZ STACK_11, F<br />
$007C $287E GOTO $+2<br />
$007D $2881 GOTO $+4<br />
$007E $0BFA DECFSZ STACK_10, F<br />
$007F $287E GOTO $-1<br />
$0080 $287B GOTO $-5<br />
$0081 $30F3 MOVLW 243<br />
$0082 $00FA MOVWF STACK_10<br />
$0083 $0BFA DECFSZ STACK_10, F<br />
$0084 $2883 GOTO $-1<br />
$0085 $0000 NOP<br />
;PIC_.c,29 :: }<br />
$0086 $ L_main_2:<br />
;PIC_.c,31 :: if (PORTA.F2 == 0) {<br />
$0086 $3000 MOVLW 0<br />
$0087 $1905 BTFSC PORTA, 2<br />
$0088 $3001 MOVLW 1<br />
$0089 $00F4 MOVWF STACK_4<br />
$008A $0874 MOVF STACK_4, 0<br />
$008B $3A00 XORLW 0<br />
$008C $1D03 BTFSS STATUS, Z<br />
$008D $28B4 GOTO L_main_3<br />
;PIC_.c,33 :: v2 = ADC_Read(1);<br />
$008E $3001 MOVLW 1<br />
$008F $00A8 MOVWF FARG_Adc_Read+0<br />
$0090 $200B CALL _Adc_Read<br />
$0091 $0870 MOVF STACK_0, 0<br />
$0092 $1283 BCF STATUS, RP0<br />
$0093 $00A4 MOVWF _v2<br />
$0094 $0871 MOVF STACK_0+1, 0<br />
69
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
$0095 $00A5 MOVWF _v2+1<br />
$0096 $01A6 CLRF _v2+2<br />
$0097 $01A7 CLRF _v2+3<br />
;PIC_.c,34 :: PORTB = v2 >> 2;<br />
$0098 $0824 MOVF _v2, 0<br />
$0099 $00F0 MOVWF STACK_0<br />
$009A $0825 MOVF _v2+1, 0<br />
$009B $00F1 MOVWF STACK_0+1<br />
$009C $0826 MOVF _v2+2, 0<br />
$009D $00F2 MOVWF STACK_0+2<br />
$009E $0827 MOVF _v2+3, 0<br />
$009F $00F3 MOVWF STACK_0+3<br />
$00A0 $0CF3 RRF STACK_0+3, 1<br />
$00A1 $0CF2 RRF STACK_0+2, 1<br />
$00A2 $0CF1 RRF STACK_0+1, 1<br />
$00A3 $0CF0 RRF STACK_0, 1<br />
$00A4 $13F3 BCF STACK_0+3, 7<br />
$00A5 $1B73 BTFSC STACK_0+3, 6<br />
$00A6 $17F3 BSF STACK_0+3, 7<br />
$00A7 $0CF3 RRF STACK_0+3, 1<br />
$00A8 $0CF2 RRF STACK_0+2, 1<br />
$00A9 $0CF1 RRF STACK_0+1, 1<br />
$00AA $0CF0 RRF STACK_0, 1<br />
$00AB $13F3 BCF STACK_0+3, 7<br />
$00AC $1B73 BTFSC STACK_0+3, 6<br />
$00AD $17F3 BSF STACK_0+3, 7<br />
$00AE $0870 MOVF STACK_0, 0<br />
$00AF $0086 MOVWF PORTB<br />
;PIC_.c,35 :: delay_us(100);<br />
$00B0 $3021 MOVLW 33<br />
$00B1 $00FA MOVWF STACK_10<br />
$00B2 $0BFA DECFSZ STACK_10, F<br />
$00B3 $28B2 GOTO $-1<br />
;PIC_.c,36 :: }<br />
$00B4 $ L_main_3:<br />
;PIC_.c,38 :: } while(1);<br />
$00B4 $284B GOTO L_main_0<br />
;PIC_.c,39 :: }<br />
$00B5 $28B5 GOTO $<br />
70
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
5-4. Listing heksadecimalnog kôda<br />
:100000003928FF3FFF3FFF3F073003138312FA00F9<br />
:10001000FA0B08280800031383129F01C0309F04C5<br />
:1000200083161F179F1783122808F000F00D701019<br />
:10003000F00D7010F00D701070089F041F14042054<br />
:100040001F151F1D2528000021281F100830F20051<br />
:100050001E08F000F101720803193328F00DF10DAC<br />
:100060007010FF3F2C2883161E08F0040030F104A6<br />
:100070000800073003138316850086018701FF30CF<br />
:10008000880089012030831285008601870188015C<br />
:10009000063083169F008312080887000030051978<br />
:1000A0000130F4007408013A031D8628A8010B20D2<br />
:1000B00070088312A0007108A100A201A30120080A<br />
:1000C000F0002108F1002208F2002308F300F30CED<br />
:1000D000F20CF10CF00CF313731BF317F30CF20C8E<br />
:1000E000F10CF00CF313731BF317700886000D303E<br />
:1000F000FB00FF30FA00FB0B7E288128FA0B7E28DC<br />
:100100007B28F330FA00FA0B832800000030051931<br />
:100110000130F4007408003A031DB4280130A8002F<br />
:100120000B2070088312A4007108A500A601A70186<br />
:100130002408F0002508F1002608F2002708F30043<br />
:10014000F30CF20CF10CF00CF313731BF317F30C1C<br />
:10015000F20CF10CF00CF313731BF31770088600 0C<br />
:100160002130FA00FA0BB2284B28B528FF3FFF3F99<br />
:02400E007A3FF7<br />
:00000001FF<br />
71
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
/VI/ LABORATORIJSKA VEŽBA<br />
Namena laboratorijske vežbe je da se ispita PPI D71055C u Modu 0, kao i<br />
linearnost A/D konvertora (ADC) sa sukcesivnom aproksimacijom, koji je<br />
integrisan u mikrokontroleru PIC16F877-04.<br />
Ispitivanje PPI se ostvaruje vrlo jednostavno – uključivanjem i<br />
isključivanjem prekidača SW DIP8, koji se nalaze na njegovom A portu. Kao<br />
posledica uključivanja/isključivanja prekidača – na Portu C mikrokontrolera će<br />
se paliti/gasiti odgovarajuće zelene LED.<br />
Da bi se ispitala linearnost ADC, neophodno je da se džamperi postave<br />
kao na Slici 6-1. Džamper J1 je postavljen (kratko spojen), J2 je otvoren, dok<br />
je J3 postavljen u gornji položaj. Već smo napomenuli kako se džamperom J3<br />
bira da li se dovodi eksterni ili interni (preko P1) referentni napon.<br />
Na Slici 6-1. je izabrana varijanta dovođenja internog napona preko P1 (0-<br />
5V). Žutim kvadratićem je obeležen napon na ulazu ADC-a, crvenim<br />
kvadratićem je označen izlazni napon iz DAC, dok su zelenim bojama istaknute<br />
(neke) pozicije masa (GND) u kolu. Položaji džampera se tiču DAC i treba da<br />
budu kao na slici.<br />
Slika 6-1. Položaj džampera kada se na ADC dovodi napon sa P1<br />
Ranije smo istakli kako se džamperima J5 i J6 definišu kontrolni signali za<br />
PPI. U našem slučaju oba džampera treba da budu kao na slici, što obezbeđuje<br />
72
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
PORTA_PPI → DataBus_PPI → PORTD_PIC.<br />
Slika 6-2. Položaj džampera kada se na ADC dovodi eksterni DC napon<br />
Ukoliko se želi dovođenje eksternog jednosmernog (DC) napona, treba<br />
promeniti položaj J3 (vidi Sliku 6-2.) i dovesti napon na konektor CN3. Ovde<br />
treba obratiti pažnju na polaritet – masa je obeležena zelenom bojom.<br />
Zadatak<br />
• Dovesti kolu napajanje podešavanjem klizača na ispravljaču na<br />
vrednost 7.5V. (U pitanju je nestabilisani napon!)<br />
• Ispitati funkcionisanje PPI D71055C u Modu 0 preko DIP prekidača.<br />
• Ispitati linearnost ADC sa sukcesivnom aproksimacijom dovođenjem<br />
internog napona preko P1. Ispitivanje treba da bude za ceo opseg<br />
(0-5V) u bar 20 tačaka. Skicirati karakteristiku ADC-a.<br />
• Ispitati linearnost ADC sa sukcesivnom aproksimacijom dovođenjem<br />
eksternog napona preko konektora CN1. Ispitivanje treba da bude u<br />
opsegu 0-5V u bar 20 tačaka. Pazite da ne prekoračite opseg, tj. da<br />
ne dovedete napon veći od 5V.<br />
Skicirati karakteristiku ADC-a i uporedite je sa karakteristikom iz<br />
prethodne tačke.<br />
73
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
• Uporedite napon na ulazu ADC i izlazu DAC za nekoliko vrednosti.<br />
(Pozicije ulaznog i izlaznog napona su obeležene na slikama.)<br />
(Napomena: kao indikacija A/D konverzije služi stanje na 8 crvenih<br />
LED, koje su povezane na Port B mikrokontrolera.)<br />
U Tabeli 6-1 dati su rezultati probnog merenja, a na Slici 6-3 prikazan je<br />
grafik zavisnosti izlaznog napona ADC-a (8-bitna kôdna reč) od njegovog<br />
ulaznog (analognog) napona.<br />
Merenja su izvršena korišćenjem standardnog digimera DT9208A, a<br />
crtanje grafika je urađeno u programu Mathematica 5.1.<br />
Redni broj<br />
merenja<br />
VUL<br />
8-bitna kôdna reč<br />
na izlazu iz ADC-a<br />
1 0.001 00000000<br />
2 0.078 00000010<br />
3 0.160 00001000<br />
4 0.321 00010000<br />
5 0.630 00100000<br />
6 1.270 01000000<br />
7 1.630 01010011<br />
8 2.110 01101011<br />
9 2.530 10000000<br />
10 3.010 10011001<br />
11 3.330 10101001<br />
12 3.730 10111101<br />
13 4.210 11010110<br />
14 4.510 11100101<br />
15 4.670 11101101<br />
16 4.760 11110010<br />
17 4.820 11110101<br />
18 4.850 11110110<br />
19 4.960 11111100<br />
20 5.040 11111111<br />
Tabela 6-1. Rezultati probnog merenja, tj. ispitivanja linearnosti ADC-a<br />
74
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Slika 6-3. Grafička zavisnost VUL od VIZ kod ADC sa sukcesivnom<br />
aproksimacijom koji je integrisan u mikrokontroleru PIC16F877<br />
Sa grafika uočavamo kako karakteristika pomalo odstupa od linearnosti, a<br />
naročito pri kraju opsega (oko 5V) – kada dobija i kvadratnu (paraboličnu)<br />
komponentu. Međutim, ova nelinearnost je izuzetno mala, tj. zanemarljiva je<br />
za mnoge praktične primene. Punom linijom je prikazana aproksimacija<br />
karakteris-tike A/D konvertora.<br />
75
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
/VII/ ZAKLJUČAK<br />
Autori su opisali postupak povezivanja mikrokontrolera PIC16F877-04 sa<br />
PPI 8255 (doduše, ovde je korišćena NEC-ova zamena D71055C) i D/A<br />
konvertorom DAC083LCV.<br />
Prvo poglavlje sadrži opis karakteristika mikrokontrolera PIC16F877-04<br />
(arhitektura, organizacija memorije, moduli unutar kontrolera itd.)<br />
U drugom poglavlju su opisani arhitektura i princip PPI 8255. Na kraju<br />
ovog poglavlja prikazano je nekoliko praktičnih primena ovog interfejsa.<br />
U trećem poglavlju opisani su principi D/A konverzije i karakteristike<br />
najčešće koričćenih D/A konvertora (DAC) – sa otpornim nizom, lestvičasti,<br />
DAC sa «krađom» struje, DAC sa težinskim izvorima, DAC sa skaliranim<br />
tovarom).<br />
Četvrto poglavlje sadrži detaljan opis A/D konverzije i principe rada<br />
najčešće korišćenih A/D konvertora (ADC) – integrirajući ADC, prateći ADC,<br />
ADC sa sukce-sivnom aproksimacijom, sigma-delata ADC, fleš (eng. flash)<br />
ADC. Za studente je od interesa ADC sa sukce-sivnom aproksimacijom, s<br />
obzirom da je isti integrisan u mikrokontroleru PIC16F877-04.<br />
U petom poglavlju prikazani su električna šema i izgled štampane ploče<br />
projekta sa objašnjenjima uloga i funkcija komponenata u kolu. Na kraju<br />
poglavlja prikazani su program mikrokontrolera u mikroC-u i asembleru, kao i<br />
izgled heksadecimalnog kôda.<br />
Šesto poglavlje sadrži laboratorijsku vežbu za samostalan rad studenata.<br />
Zadatak studenata je da ispitaju linearnost A/D konvertora koji je integrisan u<br />
mikrokontroleru, kao da provere rad PPI u Modu 0 preko SW DIP8 prekidača.<br />
Pri kraju rada je dat spisak literature koja je korišćena.<br />
Na kraju ćemo ponoviti kako je mikrokontroler isprogramiran preko<br />
AllPIC programatoru uz pomoć softvera IC-Prog. O proceduri programiranja<br />
priložen je kompletan tekst koji se nalazi u poglavlju DATASHEETS-PRILOZI.<br />
76
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
/VIII/ LITERATURA<br />
1. PIC16F87X, Datasheet, Microchip Tecnology Inc.<br />
2. Intel 8255A, www.sharpmz.org/mz-700/8255ovview.htm<br />
3. Konvertori podataka, Petar Veselić; Elektronski fakultet, Niš,<br />
http://es.elfak.ni.ac.yu/Files/Konvertori_podataka.ppt<br />
4. DAC0832LCV, Datasheet, National Semiconductor,<br />
http://www.datasheetcatalog.org/<br />
5. SERIJSKA KOMUNIKACIJA RAČUNARA I USART MODULA<br />
MIKROKONTROLERA PIC16F877A, Dejan Lazić, Ivan Novaković;<br />
seminarski rad, Elektronski fakultet, Niš<br />
6. POVEZIVANJE MIKROKONTROLERA AT89S8253 SA INTERFEJSOM<br />
8255, Nenad Ristić; seminarski rad, Elektronski fakultet, Niš<br />
7. ARHITEKTURE I PROGRAMIRANJE RAČUNARSKIH SISTEMA<br />
ZASNOVANIH NA FAMILIJI PROCESORA 80x86, Mile K. Stojčev,<br />
Branislav D. Petrović, I izdanje, Elektronski fakultet, Niš<br />
8. mikroC Help , Mikroelektronika Beograd, http://mikroe.com<br />
9. IC-Prog, Version 1.05, B.Gijzen, www.ic-prog.com<br />
77
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
/IX/ DATASHEETS – IZVODI<br />
ALLPIC programator<br />
Univerzalni programator Microchip PIC mikrokontrolera<br />
Programator je namenjen programiranju većine serijskih PICmikrokontrolera. Pomenućemo<br />
samo neke od najpoznatijih: PIC16F8x, PIC16F62x, PIC16F87x, PIC12C50x, PIC12F6xx itd.<br />
Hardver je zasnovan na već oprobanom i veoma popularnom serijskom programatoru Pony<br />
Prog.<br />
OPIS UREĐAJA<br />
Sa šeme veza (Slika 1) vidi se jednostavnost, kao i kompaktnost uređaja. Uređaj se povezuje<br />
sa PC računarom putem RS232 serijskog porta, koji standardno postoji na većini današnjih PC<br />
računara. Za rad programatora potreban je i slabiji izvor napona napajanja oko 15 V. Dioda Dl<br />
na ulazu za napajanje je predviđena kao zaštita od pogrešnog priključenja polariteta izvora za<br />
napajanje. Izvor može biti i naizmenični napon, ukoliko vam je takav pri ruci. Stabilizator<br />
napona 78L05 obezbeđuje 5 V napon potreban za napajanje mikrokontrolera, dok se Vppnapon<br />
(aprox. 13V) generiše pomoću zener diode D3. Ostatak kola čine tranzistori NPN i PNP,<br />
univerzal nog tipa, kao i propratne zener diode D5 i D6 i otpornici R4 i R5 koji obezbeđuju TTL<br />
logičke nivoe (5V) potrebne za programiranje mikrokontrolera.<br />
Razlika u odnosu na postojeće programatore koji se mogu sresti na internetu (Pony prog, JDM)<br />
je upravo u delu kola koga čine T3, T4 i JPl sa pratećim elementima.<br />
Kod starih modela programatora (Pony, JDM,...) javlja se problem ako je potrebno<br />
reprogramirati PIC koji je prethodno programiran sa uključenim ;INT/RC; i uključenim internim<br />
MCLR, u FUSES podešavanjima. U tom slučaju PONY programator ne može ni da obriše PIC jer<br />
nije ispoštovana procedura preporučena od strane proizvođača mikrokontrolera, koja se odnosi<br />
na to da se Vdd (+5 V) napon sme pojaviti tek nakon uspostavljanja MCLR (+13 V)<br />
programskog napona. Jedino je sa ovakvim sistemom moguće da PIC uđe u programski mod i<br />
da se ponovno reprogramira. Sve navedene osobine poseduje AllPIC. Međutim stari modeli PIC<br />
mikrokontrolera koji nemaju interni oscilator zahtevaju obrnut proces od gore navedenog tj.<br />
78
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
prvo Vdd napon pa tek nakon toga MCLR napon i za takve PIC kontrolere je uba čena podrška u<br />
vidu džampera JPl kojim se bira mod rada ;Vdd mode select.<br />
Indikator LED1 nas informiše o prisustvu napona napajanja programatora i on treba da bude u<br />
granicama 14-20V, s tim da treba računati da pri 20V napajanju grejanje stabilizatora može<br />
biti primetno. Indikator LED2 indicira prisutan napon napajanja (Vdd +5 V ) na čipu koji se<br />
programira. Kratkospajač JPl ima funkciju:<br />
Ukoliko je spojen, Vdd (+5 V) napon će stalno biti prisutan što će se i videti upaljenom LED2.<br />
Ovaj mod je za sve Microchip PIC mikrokontrolere koji nemaju interni oscilator (16F84,<br />
16F87x,) kao i eeprome.<br />
Za sve nove mikrokontrolere potrebno je skinuti JPl i u tom modu Vdd (+5v) se pojavljuje tek<br />
po uspostavljanju Vpp (13 V) programskog napona na početku programiranja. Ovakav način<br />
rada je potreban za programiranje sledećih mikrokontrolera 16F627, 16F628, 12F629,<br />
12F675...<br />
Kratkospajač JP2 služi za izbor Write protect moda za eeprome 24CXX. Poseban konektor koji<br />
je označen na šemi veza kao CON1 koristi se za eksterni priključak za incircuit programiranje<br />
(ICSP).<br />
79
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Napomena: Programator nije predviđen za 16C5x seriju i još neke specifične Microchip<br />
mikrokontrolere.<br />
IZRADA UREĐAJA<br />
Izgled montažne šeme prikazan je na Slici 2. Komponente koje su upotrebljene u ovom<br />
programatoru spadaju u standardni asortiman ponude svake prodavnice elektro materijala. Iz<br />
tog razloga ne treba očekivati poteškoće oko nabavke delova. Sklapanje treba odraditi<br />
standardnim postupkom, pri čemu treba obratiti pažnju na dva kratkospajača koji su označeni<br />
na montažnoj šemi crnom linijom, a nalaze se ispod podnožja za mikrokontrolere i pored<br />
kondenzatora C4. Njih treba zalemiti pre svih drugih komponenti. Uređaj sa PC računarom<br />
možete povezati i pomoću dodatnog kabla, ali nije preporučljivo da njegova dužina prelazi 2 m.<br />
Slika 2. Komponente koje su upotrebljene u ovom programatoru spadaju u standardni<br />
asortiman ponude svake prodavnice elektro materijala.<br />
SOFTVER<br />
Još jedna bitna ;komponenta; ovog uređaja je softver. Softver potreban za rad ovog<br />
programatora možete downloadovati sa interneta na adresi http://www.ic-prog.com/. Izgled<br />
programa prikazan je na slici 3. Program se može koristiti pod Windows operativnim sistemima<br />
počev od Win95 do WinXP verzije, uz neznatna prepodešavanja. Mi ćemo na primeru<br />
programiranja PIC16F628 mikrokontrolera prikazati podešavanja i postupak programiranja<br />
ovog mikrokontrolera pod operativnim sistemom Windows 98. Prvo što je potrebno uraditi je<br />
da skinemo JPl. Ovim smo odabrali potrebnu sekvencu Vdd i Vpp napona. Sada možemo<br />
postaviti PIC16F628 u za njega namenjeno podnožje (18 pina) i zatim uključujemo napon<br />
napajanja. Sada prelazimo na podešavanje softvera i vršimo inicijalna podešavanja koja je<br />
potrebno uraditi samo pri prvom startovanju programa na našem računaru. Pritiskom na taster<br />
F3 ili klikom na Settings;Hardware dobijami prozor kao na slici 3a. Potrebno je izvršiti<br />
80
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
podešavanja kao što je prikazano na slici 3a, s tim da u zavisnosti od COM porta na koji je<br />
priključen hardver programatora na vašem računaru odaberete odgovarajući COMl ili COM2...<br />
Potvrdite sa OK. Time su inicijalna podešavanja završena.<br />
Zatim u polju Settings;Device;Microchip PIC odaberite tip mikrokontrolera koga želite da<br />
isprogramirate, to je u našem primeru PIC16F877. Sada je na red došlo učitavanje HEX fajla<br />
namenjenog za programiranje u mikrokontroler. (File ; Open file). Na kraju ukoliko Fuses<br />
podešavanja nisu implementirana u sklopu učitanog HEX fajla, ručno podesite Fuses koji se<br />
nalaze u desnom delu prozora Ic Prog programa kao i tip oscilatora. Klikom na<br />
Command;Program All programiranje počinje. Program će vas izveštavati u toku programiranja<br />
šta trenutno radi i na kraju programiranja o uspešnosti programiranja. Upotreba programa pod<br />
WindowsXP (WinNT) operativnim sistemima je takođe moguća, ali je potrebno neznatno<br />
prepodesiti IcProg softver. Prvo je potrebno sa IcProg sajta (www.ic-prog.com) skinuti drajver<br />
za Win2000/NT pod nazivom ;icprog.sys;. Ovaj fajl se raspakuje u isti direktorijum gde se<br />
nalazi i sam IcProg i zatim je potrebno startovati Ic Prog. Nakon toga u Settings ; Options ;<br />
Misc aktivirajte polje ;Enable NT/2000/XP Driver;. Na ovaj način omogućava se Direct I/O<br />
programiranje i pod XP operativnim sistemom. Takođe je poželjno podesiti u istom polju i<br />
Procces priority na High ili Real time.Sada možemo pristupiti konkretnom programiranju čipa, i<br />
pod Windows XP operativnim sistemom, kao što je to prethodno objašnjeno u primeru pod<br />
Windows 98 sistemom.<br />
Napomena: Kako je IcProg program koji podržava veći broj mikrokontrolera, kao i više tipova<br />
programatora, u menijima postoji veliki broj čipova. Vama je sa ovim programatorom na<br />
raspolaganju meni Microchip PIC i I2C Eeprom;24CXX.<br />
81
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
82
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
83
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
84
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
85
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
86
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
INTEL 8255A<br />
87
General<br />
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
The Intel 8255A is a general purpose programmable I/O device which is designed for<br />
use with all Intel and most other microprocessors. It provides 24 I/O pins which may<br />
be individually programmed in 2 groups of 12 and used in 3 major modes of<br />
operation.<br />
In MODE 0, each group of 12 I/O pins may be programmed in sets of 4 and 8 to be<br />
inputs or outputs. In MODE 1, each group may be programmed to have 8 lines of<br />
input or output. 3 of the remaining 4 pins are used for handshaking and interrupt<br />
control signals. MODE 2 is a strobed bi-directional bus configuration.<br />
The 8255 is a 40 pin integrated circuit (IC), designed to perform a variety of interface<br />
functions in a computer environment. The 8255 wasn't originally designed to be<br />
connected to the Z80. It was manufactured by Intel for the 8080 microprocessor.<br />
PIN configuration<br />
D0 - D7 These are the data input/output lines for the device.<br />
All information read from and written to the 8255 occurs via<br />
these 8 data lines.<br />
Block diagram<br />
CS (Chip Select Input). If this line is a logical 0, the<br />
microprocessor can read and write to the 8255.<br />
RD (Read Input) Whenever this input line is a logical 0 and the<br />
RD input is a logical 0, the 8255 data outputs are enabled onto<br />
the system data bus.<br />
WR (Write Input) Whenever this input line is a logical 0 and<br />
the CS input is a logical 0, data is written to the 8255 from the<br />
system data bus.<br />
A0 - A1 (Address Inputs) The logical combination of these two<br />
input lines determines which internal register of the 8255 data<br />
is written to or read from.<br />
RESET The 8255 is placed into its reset state if this input line<br />
is a logical 1. All peripheral ports are set to the input mode.<br />
PA0 - PA7, PB0 - PB7, PC0 - PC7 These signal lines are used<br />
as 8-bit I/O ports. They can be connected to peripheral<br />
devices. The 8255 has three 8 bit I/O ports and each one can<br />
be connected to the physical lines of an external device. These<br />
lines are labeled PA0-PA7, PB0-PB7, and PC0-PC7. The groups<br />
of the signals are divided into three different I/O ports labeled<br />
port A (PA), port B (PB), and port C (PC).<br />
88
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Block diagram of the 8255<br />
Two control groups, labeled group A control and group B control define how the three<br />
I/O ports operate. There are several different operating modes for the 8255 and these<br />
modes must be defined by the CPU writing programming or control words to the<br />
device 8255.<br />
The line group of port C consists of two 4 bit ports. One of the 4 bit group is<br />
associated with group A control and the other 4 bit group with group B control device<br />
signals. The upper 4 bits of port C are associated with group A control while the lower<br />
4 bits are associated with group B control.<br />
The final logic blocks are read/write control logic and data bus buffer. These blocks<br />
provide the electrical interface between the Z80 and the 8255.<br />
The data bus buffer buffers the data I/O lines to/from the Z80 data bus. The<br />
read/write control logic routes the data to and from the correct internal registers with<br />
the right timing. The internal path being enabled depends on the type of operation<br />
performed by the Z80. The type of operation can be I/O read or I/O write.<br />
Control Word Register<br />
Before going to discuss the detailed description about the usage of the 8255 in the<br />
MZ-700, you should see the bit definitions of the 8255 control word register (port<br />
$E003 of the MZ-700).<br />
If bit 7 of the control word is a logical 1 then the 8255 will be configured. See the<br />
picture of the practicable configurations:<br />
89
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
Mode definition of the 8255 control register<br />
to configure the 8255<br />
If bit 7 of the control word is a logical 0 then each bit of the port C can be set or reset.<br />
See the picture of the practicable possibilities:<br />
Examples:<br />
Bit definitions of the 8255 control register to modify single bits of port C<br />
If you want to set/reset bit 0 of port C then set D3 to D1 to 000.<br />
Bit 1 of port C will be set/reset if you code 001 to D3 to D1.<br />
Bit 6 of port C is set/reset if D3 to D1 is 110.<br />
90
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
91
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
92
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
93
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
/X/ AUTORI PROJEKTA<br />
SINIŠA STOILKOVIĆ<br />
Ime Siniša<br />
Prezime Stoilković<br />
Datum rođenja 27.05.1983.<br />
Bračno stanje Neoženjen<br />
Adresa stanovanja Pčinjska 22, Vladičin Han<br />
E-mail adresa sinisa83@yahoo.com<br />
Obrazovanje „Tehnička škola” - Vladičin Han<br />
Stepen stručne spreme IV stepen<br />
Godina upisa na<br />
2002.<br />
Elektronski fakultet<br />
Smer Telekomunikacije (T)<br />
Poznavanje jezika Engleski (PreIntermediate)<br />
Poznavanje softvera MS Office, AutoCAD, mikroC<br />
Interesovanja Bežične komunikacije, usavršavanje engleskog<br />
jezika, matematika, rukomet<br />
Sposobnosti<br />
Marljivost, prirodan pristup svakom pojedincu,<br />
istrajnost ka definisanom cilju<br />
Ostalo<br />
U srednjoj školi sam bio đak generacije.<br />
Uz podršku profesora Mihajla Stefanovića na<br />
konferenciji TELFOR 2007 objavljen je moj rad<br />
na temu “Izračunavanje momenta na izlazu iz<br />
EGC kombinera u prisustvu Nakagami fedinga”.<br />
Tri godine sam aktivno igrao rukomet u klubu<br />
„Morava” iz Vladičinog Hana, a sada nastupam<br />
za rukometnu selekciju Elektronskog fakulteta.<br />
94
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
SLAVIŠA POPOVIĆ<br />
Ime Slaviša<br />
Prezime Popović<br />
Datum rođenja 14.07.1983.<br />
Bračno stanje Neoženjen<br />
Adresa stanovanja Vojvode Putnika 50/4, Niš<br />
E-mail adresa Slavisa1983@yahoo.com<br />
Obrazovanje ETŠ „Nikola Tesla“ - Niš<br />
Stepen stručne spreme IV stepen, elektrotehničar energetike<br />
Godina upisa na<br />
Elektronski fakultet<br />
2002.<br />
Smer Telekomunikacije (T)<br />
Poznavanje jezika Engleski (aktivno)<br />
Poznavanje softvera MS Office, Eagle (za izradu PCB), CorelDRAW,<br />
Adobe Photoshop, ACDSee<br />
Interesovanja<br />
Kolekcionarstvo, sport<br />
Sposobnosti<br />
Ostalo<br />
Kreativnost, upornost, želja za konstantnim<br />
usavršavanjem<br />
Nosilac Vukove diplome u osnovnoj školi (1998)<br />
95
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
MLADEN PAVLOVIĆ<br />
Ime Mladen<br />
Prezime Pavlović<br />
Datum rođenja 10.05.1983.<br />
Bračno stanje Neoženjen<br />
Adresa stanovanja Bulevar Nemanjića 33/21, Niš<br />
E-mail adresa mladen.pavlovic0@gmail.com<br />
Obrazovanje Gimnazija „Bora Stanković“ - Niš<br />
Stepen stručne spreme IV stepen<br />
Godina upisa na<br />
Elektronski fakultet<br />
2002.<br />
Smer Telekomunikacije (T)<br />
Poznavanje jezika Engleski (napredno)<br />
Poznavanje softvera Windows okruženje, MS Office, CorelDRAW,<br />
Adobe Photoshop, Protel<br />
Interesovanja<br />
Programiranje, sport, aktivnost u studentskoj<br />
organizaciji<br />
Sposobnosti<br />
Hiperaktivnost, samouverenost, pojačana<br />
Ostalo<br />
komunikativnost<br />
Nosilac Vukove diplome u osnovnoj školi (1998)<br />
Član Vaterpolo kluba „Niš“ (1994-2002)<br />
Predsednik Studentskog parlamenta (2003)<br />
Član studentske organizacije AIESEC (2007)<br />
96
SEMINARSKI RAD IZ MIKROPROCESORSKIH SISTEMA<br />
/XI/ FOTOGRAFIJA UREĐAJA<br />
97