24.07.2013 Views

pdf - Univerzitet u Nišu

pdf - Univerzitet u Nišu

pdf - Univerzitet u Nišu

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!