sadrŽaj - tehnoloski fakultet novi sad -...

108
1 SADRŽAJ PRIMENA RAČUNARA – I ......................................................................................................................3 UVOD U ORGANIZACIJU RAČUNARA ..............................................................................................3 Kodiranje i dekodiranje informacija .........................................................................................................4 Memorija...................................................................................................................................................4 Centralna procesna jedinica ......................................................................................................................5 Generator taktnog signala .........................................................................................................................6 Ulazno-izlazne (I/O) jedinice ...............................................................................................................7 Organizacija mikroračunara......................................................................................................................7 ELEMENTI RAČUNARSKE ARITMETIKE ........................................................................................9 Binarni, oktalni i heksadekadni brojni sistem...........................................................................................9 Prevođenje celih brojeva iz dekadnog u drugi brojni sistem .............................................................. 10 Prevođenje decimalnih brojeva iz dekadnog u neki drugi brojni sistem ............................................ 11 Prevođenje između binarnog, oktalnog i heksadekadnog brojnog sistema ........................................12 Binarno kodirani dekadni brojevi ...........................................................................................................14 Osnovne računske operacije u pozicionom brojnom sistemu................................................................. 14 Svođenje oduzimanja na sabiranje uz pomoć komplementa ..................................................................16 Celi brojevi u računarima i računske operacije sa njima ........................................................................19 Realni brojevi u računaru........................................................................................................................ 21 Ograničenja pri registrovanju realnih brojeva ....................................................................................26 Računske operacije sa realnim brojevima ..........................................................................................27 LOGIČKA KOLA .................................................................................................................................... 29 Bulova algebra ........................................................................................................................................29 Osnovna logička kola .............................................................................................................................31 Složena logička kola i Bulove funkcije ..................................................................................................32 Sinteza logičkih kola zadate nemene ...................................................................................................... 32 Osnovna kola u računarskim sistemima ................................................................................................33 Treće logičko stanje ................................................................................................................................33 Dekoder................................................................................................................................................... 34 Dekoder 1 od 2 n ..................................................................................................................................34 Koder ...................................................................................................................................................... 36 Koder prioriteta ................................................................................................................................... 36 Multiplekser ............................................................................................................................................ 37 Demultiplekser ........................................................................................................................................39 Binarni sabirač ........................................................................................................................................40 Bistabilna kola (flip-flop) .......................................................................................................................41 R-S flip-flop ........................................................................................................................................41 Registri ....................................................................................................................................................44 Statički registri .................................................................................................................................... 44 MIKRORAČUNAR ..................................................................................................................................47 MODEL MIKROPROCESORA............................................................................................................ 49 STANDARDNA ARHITEKTURA MIKROPROCESORA................................................................. 58 UVOD ..................................................................................................................................................... 58 UPRAVLJAČKA JEDINICA.................................................................................................................58 ARITMETIČKO - LOGIČKA JEDINICA I AKUMULATOR .............................................................58 REGISTRI OPŠTE NAMENE ............................................................................................................... 61 ADRESNI REGISTRI ............................................................................................................................ 61 MODEL MIKROPROCESORA M6800 ................................................................................................62 MEMORIJA..............................................................................................................................................67 UVOD ..................................................................................................................................................... 67 MEMORIJA ROM ................................................................................................................................. 67

Upload: others

Post on 11-Jan-2020

18 views

Category:

Documents


0 download

TRANSCRIPT

1

SADRŽAJ PRIMENA RAČUNARA – I......................................................................................................................3 UVOD U ORGANIZACIJU RAČUNARA ..............................................................................................3

Kodiranje i dekodiranje informacija.........................................................................................................4 Memorija...................................................................................................................................................4 Centralna procesna jedinica......................................................................................................................5 Generator taktnog signala .........................................................................................................................6

Ulazno-izlazne (I/O) jedinice ...............................................................................................................7 Organizacija mikroračunara......................................................................................................................7

ELEMENTI RAČUNARSKE ARITMETIKE ........................................................................................9 Binarni, oktalni i heksadekadni brojni sistem...........................................................................................9

Prevođenje celih brojeva iz dekadnog u drugi brojni sistem..............................................................10 Prevođenje decimalnih brojeva iz dekadnog u neki drugi brojni sistem............................................11 Prevođenje između binarnog, oktalnog i heksadekadnog brojnog sistema ........................................12

Binarno kodirani dekadni brojevi ...........................................................................................................14 Osnovne računske operacije u pozicionom brojnom sistemu.................................................................14 Svođenje oduzimanja na sabiranje uz pomoć komplementa ..................................................................16 Celi brojevi u računarima i računske operacije sa njima........................................................................19 Realni brojevi u računaru........................................................................................................................21

Ograničenja pri registrovanju realnih brojeva ....................................................................................26 Računske operacije sa realnim brojevima ..........................................................................................27

LOGIČKA KOLA ....................................................................................................................................29 Bulova algebra ........................................................................................................................................29 Osnovna logička kola .............................................................................................................................31 Složena logička kola i Bulove funkcije ..................................................................................................32 Sinteza logičkih kola zadate nemene......................................................................................................32

Osnovna kola u računarskim sistemima ................................................................................................33 Treće logičko stanje................................................................................................................................33 Dekoder...................................................................................................................................................34

Dekoder 1 od 2n ..................................................................................................................................34 Koder ......................................................................................................................................................36

Koder prioriteta...................................................................................................................................36 Multiplekser ............................................................................................................................................37 Demultiplekser........................................................................................................................................39 Binarni sabirač ........................................................................................................................................40 Bistabilna kola (flip-flop) .......................................................................................................................41

R-S flip-flop........................................................................................................................................41 Registri....................................................................................................................................................44

Statički registri....................................................................................................................................44 MIKRORAČUNAR..................................................................................................................................47 MODEL MIKROPROCESORA............................................................................................................49 STANDARDNA ARHITEKTURA MIKROPROCESORA.................................................................58

UVOD.....................................................................................................................................................58 UPRAVLJAČKA JEDINICA.................................................................................................................58 ARITMETIČKO - LOGIČKA JEDINICA I AKUMULATOR.............................................................58 REGISTRI OPŠTE NAMENE ...............................................................................................................61 ADRESNI REGISTRI ............................................................................................................................61

MODEL MIKROPROCESORA M6800 ................................................................................................62 MEMORIJA..............................................................................................................................................67

UVOD.....................................................................................................................................................67 MEMORIJA ROM .................................................................................................................................67

2

NAČINI ADRESIRANJA ........................................................................................................................69 UVOD.....................................................................................................................................................69

NAČINI ADRESIRANJA ZA MIKROPROCESOR M6800 ...............................................................69 Uključno adresiranje i adresiranje akumulatora .....................................................................................70 Usputno adresiranje ................................................................................................................................71 Direktno i direktno prošireno adresiranje ...............................................................................................72 Indeksno adresiranje ...............................................................................................................................73 Odnosno (relativno) adresiranje .............................................................................................................74

ULAZNO-IZLAZNI (U/I) PRENOS.......................................................................................................75 UVOD.....................................................................................................................................................75

ORGANIZACIJA PROGRAMIRANOG U/I PRENOSA....................................................................75 TIPOVI PROGRAMIRANOG U/I PRENOSA......................................................................................76 Postupak prozivanja (Polling).................................................................................................................77

PREKIDNI U/I PRENOS.........................................................................................................................78 UVOD.....................................................................................................................................................78

ORGANIZACIJA PREKIDNOG SISTEMA ZA MIKROPROCESOR M6800................................81 UVOD.....................................................................................................................................................87

ORGANIZACIJA DIREKTNOG PRISTUPA MEMORIJI (DMA)...................................................87 ORGANIZACIJA DMA ZA MIKROPROCESOR M6800..................................................................90

Direktni pristup memoriji zaustavljanjem procesora..............................................................................90 Direktan pristup memoriji krađom ciklusa .............................................................................................90 Direktan pristup memoriji multipleksiranjem operacija MPU/DMA....................................................90

PREGLED SKUPA INSTRUKCIJA (NAREDBI) I ASEMBLER......................................................92 UVOD.....................................................................................................................................................92 OSNOVNI POJMOVI ............................................................................................................................92 ASEMBLER ZA MIKRORAČUNAR NA OSNOVI MIKROPROCESORA M6800..........................94

ULAZNO - IZLAZNI (U/I) MEĐUSKLOPOVI....................................................................................97 UVOD.....................................................................................................................................................97 U/I MEĐUSKLOP PIA ZA M6800 .......................................................................................................99 SERIJSKI U/I MEĐUSKLOP..............................................................................................................102 Prenos podataka na daljinu ...................................................................................................................104

DIGITALNO - ANALOGNI I ANALOGNO - DIGITALNI KONVERTORI.................................105 SOFTVER REALNOG VREMENA.....................................................................................................106

3

PRIMENA RAČUNARA – I (II godina)

UVOD U ORGANIZACIJU RAČUNARA Prvi digitalni računari su se pojavili početkom 50-tih godina sa zadatkom da ubrzaju i olakšaju kompleksne proračune u tehnici i nauci i obradu velike količine podataka u biznisu i administraciji. Po dimenzijama bili su ogromni a u pogledu mogućnosti skromni. Zahvaljujući pojavi mikroprocesora početkom 70-ih godina započela je ”računarska revolucija” tj. veoma brz napredak u tehnologiji proizvodnje računarskih elemenata, arhitekturi i performansama računara kao i njihovoj primeni. Jednostavno rečeno računari su sve manji, a istovremeno “moćniji” a oblast primene se od proračuna i obrade podataka proširila na analizu i projektovanje procesa u tehnici, računarsku grafiku, akviziciju (prikupljanje) i obradu merenja, upravljanje aparatima i procesima, veštačku inteligenciju itd. Klasična organizacija računara prikazana je na slici 1. Osnovni funkcionalni delovi jednog računara predviđenog za proračune ili obradu podataka su: ulazna i izlazna jedinica, centralna i periferna memorija, kontrolna (upravljačka) i aritmetičko-logička jedinica koje zajedno čine centralnu procesnu jedinicu (CPU). Mikroračunar ili personalni računar se karakteriše malom veličinom i niskom cenom, a kao centralnu procesorsku jedinicu ima mikroprocesor (µP).

IZLAZNAJEDINICA

KONTROLNAJEDINICA (CU)

CENTRALNAMEMORIJA (CM)

PERIFERNAMEMORIJA (PM)

podaciprogram

rezultatiCENTRALNA PROCESNA

JEDINICA (CPU)

ULAZNAJEDINICA

ARTMETIČKOLOGIČKA JEDINICA (ALU)

Sl.1.1. Organizacija računara za obradu podataka

Fizičke komponente računara (oprema) čine hardver (hardware). Sama oprema bi bila beskorisna bez instrukcija ili naredbi (komandi) koje iz memorije pribavlja, a zatim aktivirajući određene hardverske elemente, izvršava centralna procesna jedinica. Niz instrukcija čini program koji se pre izvršenja mora nalaziti u memoriji računara. Program omogućuje na primer, izvođenje nekog kompleksnog proračuna na računaru. U programu se manipuliše

4

informacijama koje nazivamo podaci. U nekom inženjerskom proračunu na primer, to su neophodni brojni podaci. Različiti programi čine programsku podršku ili softver (software). Instrukcije koje CPU “prepoznaje” zovu se mašinske instrukcije i deo su nekog mašinskog programa. Mašinski program je teško razumljiv za korisnika i pravljenjem mašinskih programa sistemskim mašinskim programiranjem bavi se samo mali deo korisnika koji su stručnjaci za bazni softver. Da bi se olakšao problem programiranja pri rešavanju različitih praktičnih problema na računaru odnosno formiranju aplikativnog softvera, formulisani su viši programski jezici kao što su danas BASIC, FORTRAN, PASCAL, C, C++ itd. koji su mnogo bliži čoveku ali ih ne razume računar. Zato je neophodan poseban softver-prevodilac (compiler) koji prevodi program koga je korisnik napisao u višem programskom jeziku u računaru blizak mašinski program. Iz jedne instrukcije u višem programskom jeziku pri prevođenju (compiling) nastaje čitav niz mašinskih instrukcija. Svoj program i podatke korisnik unosi u računar preko ulazne jedinice ili uređaja∗ (input unit, input device) kao što je tastatura. Instrukcije i podatke iz ulazne jedinice prihvata CPU i šalje ih u određene memorijske lokacije. Kontrolna jedinica (CU) koja kontroliše i sinhronizuje rad svih ostalih delova računara uzima jednu po jednu instrukciju iz memorije i pošto je prepozna ili dekodira (dešifruje) izvršava je. Primeri instrukcija su: sabiranje dva broja, unos podataka preko ulazne jedinice, izlaz rezultata za korisnika preko izlazne jedinice ili uređaja (output unit, output device). U toku izvršavanja instrukcije, CU generiše niz upravljačkih naponskih signala - kontrolni signali koje šalje odgovarajućim hardverskim elementima (pune linije na sl.1.).

Kodiranje i dekodiranje informacija Informacije koje računar pamti i obrađuje (podaci i instrukcije) su interno u binarnom obliku tj. matematički posmatrano, u obliku nizova nula i jedinica. Tako je najmanja jedinica informacije u računaru jedna nula ili jedna jedinica i naziva se bit. Fizički, bit se u računaru realizuje preko dva različita električna stanja pomoću odgovarajućih hardverskih elemenata (diode, tranzistori, magnetska jezgra). Tako ako je neki element na višem od dva nivoa napona on realizuje binarno 1, a ako je na nižem nivou napona onda realizuje binarno 0, ili magnetski tok u jednom smeru realizuje 1, a u suprotnom smeru 0. Kažemo da su informacije u računaru binarno kodirane pa su neophodni odgovarajući hardverski elementi i softver za prevođenje-kodiranje ulaznih informacija iz izvornog (source) oblika ili koda u binarni ili mašinski oblik ili kod (binary code, mashine code), koga razume računar. Naime, korisnik unosi svoj program i podatke u obliku teksta i dekadnih brojeva (izvorni oblik) koji se radi smeštanja u memoriju moraju binarno kodirati. Hardver za binarno kodiranje ulaznih informacija je u sklopu ulazne jedinice. Da bi izlazne informacije (napr. rezultati) bile razumljive za korisnika, neophodan je obrnut proces - dekodiranje internih binarnih informacija (u tekst i dekadne brojeve). Hardver za dekodiranje obezbeđuju izlazne jedinice.

Memorija Instrukcije i podaci se čuvaju u centralnoj ili operativnoj memoriji (CM) koja prestavlja niz lokacija za pamćenje jednake veličine. Memorijskim lokacijama se pristupa tj. one se nalaze pomoću adrese, kažemo da je centralna memorija adresibilna. Grupa bitova koja se čuva u jednoj lokaciji predstavlja jednu celinu (podatak ili deo podatka, instrukcija ili deo instrukcije). Kod mikroračunara, to je grupa od 8 bitova i ona se naziva bajt (byte). I adrese memorijskih lokacija je neophodno pamtiti. Prostor za pamćenje adrese, tj. dužina adrese (broj bitova u adresi) definiše maksimalnu adresibilnu memoriju ili adresni prostor tj. maksimalnu ∗ alternativno, program i podaci se unose iz periferne memorije o kojoj će biti kasnije reči

5

centralnu memoriju računara. Na primer, kod najmanjih mikroračunara - 8 bitni mikroračunari - dužina adrese je dva bajta, tj. 16 bitova pa najveća moguća adresa predstavlja najveći 16-to cifreni binarni broj

( )1111111111111111 2 1 65535216= − =

odnosno maksimalan broj adresa (adresni prostor) s obzirom da on uključuje i nultu adresu je:

( )2 1 1 2 6553616 16− + = = Jedinica memorije 1KB (kilobajt) prestavlja 210=1024 bajtova pa se umesto 65536 lokacija odnosno bajtova kaže 64KB. Dakle maksimalna centralna memorija 8-bitnih računara je po pravilu 64KB. Tačnije rečeno, može se instalirati i veća memorija ali pri izvođenju nekog programa na raspolaganju je ne više od 64KB (od toga još treba oduzeti deo koji pripada ROM memoriji, što se vidi u daljem tekstu). Veće jedinice kapaciteta memorije su megabajt (MB) i gigabajt (GB):

1 2 21 2 2

10 20

10 20

MB KB BGB MB KB

= =

= =

Centralna memorija je podeljena na ROM (Read Only Memory) u kojoj se trajno čuvaju neophodni programi za startovanje i osnovne funkcije računara i u koju korisnik ne može da upisuje svoje podatke ili programe i na RAM (Random Access Memory) koja je namenjena pamćenju korisnikovih podataka i programa. RAM i ROM se razlikuju po izvedbi i RAM je izbrisiv (briše se sadržaj memorije posle isključenja napoja) a ROM permanentan ili neizbrisiv. Za trajno čuvanje korisnikovih programa i podaka koristi se periferna memorija (PM). Slično ROM-u, permanentna je, ali se hardverski razlikuje od ROM-a i predstavlja magnetski medijum nanet na odgovarajuću podlogu. Primeri periferne memorije su: disketa (floppy - disk) i fiksni disk (hard - disk). Za razliku od centralne memorije, periferna memorija nije direktno adresibilna tj. CPU ne može na osnovu adrese da pristupi pojedinom podatku. Zato je neophodno da se iz periferne memorije podaci i program pre obrade prenesu u centralnu memoriju. S obzirom da nije adresibilna, periferna memorija može u principu da bude neograničena. Danas se već koriste hard diskovi sa više gigabajta memorija.

Centralna procesna jedinica Centralnu procesnu jedinicu (CPU) čine aritmetičko logička jedinica (ALU) i kontrolna jedinica (CU). Kod mikroračunara ta dva dela su hardverski objedinjena u mikroprocesor. U ALU se izvode elementarne aritmetičke i logičke operacije. Za prihvatanje operanada i rezultata operacije služi u ALU specijalni registar koji se zove akumulator (ACC). Termin registar označava lokaciju koja ima posebnu namenu, pa za razliku od obične memorijske lokacije može da ima i dodatne mogućnosti kao što su pomeranja svih bitova u registru u levo ili u desno, povećanje ili smanjenje sadržaja registra za 1 itd. Po pravilu, u akumulatoru se pre izvršenja neke binarne operacije nalazi prvi operand, a po izvršenju operacije rezultat. Pored toga ACC služi i kao prihvatni registar pri unošenju podataka (podaci u užem smislu i programi) preko ulazne jedinice. Naime prenos podataka do CM ide preko ALU tj. akumulatora; (mada postoji i direktan prenos bez učešća µP (DMA-Direct Memory Assess), kada se podaci unose sa periferne memorije. Kapacitet akumulatora određuje dužinu podatka (broj bitova) koji se može obraditi u jednom koraku (izvršavanjem jedne instrukcije) u ALU. Grupa bitova koja se kao celina obrađuje u ALU pri

6

izvršenju neke elementarne aritmetičke ili logičke operacije (tj. koje može da stane odjednom u ACC) naziva se računarska reč. Kod 8-bitnih računara ACC je 8-bitni registar pa je računarska reč=1B. Računarska reč, tj kapacitet ACC može da bude 2B tj. 16 bita i za takav računar tj. mikroprocesor kažemo da je 16-bitni. Kod 32-bitnog računara, kapacitet ACC je 4B Kontrolna jedinica (CU) upravlja izvršenjem programa. Instrukcije programa (mašinske instrukcije) su smeštene u centralnoj memoriji u nizu susednih lokacija. CU pribavlja instrukcije na osnovu adresa, pa je neophodan registar u kome će biti generisana adresa na kojoj se nalazi sledeća instrukcija koju treba pribaviti. To je programski brojač (PC) u kome pre startovanja programa treba da se nađe adresa na kojoj je zapamćena prva instrukcija u mašinskom programu - početna adresa. Prihvatni registar za instrukciju u CU naziva se instrukcijski registar (IR). Svaki put kada pribavi sadržaj nove memorijske lokacije, tj. novu instrukciju ili deo instrukcije (pošto, kao što ćemo kasnije videti instrukcija može da zahteva za memorisanje više od jedne lokacije) sadržaj PC registra se automatski povećava za 1 (inkrementira) tako da u njemu bude adresa sledeće lokacije. Kažemo da se program izvršava sekvencijalno, tj. jedna po jedna naredba u redosledu u kome su smeštene u memoriji. Izuzetak od ovog pravila je slučaj kada u toku izvršavanje neke instrukcije skoka. Tada, ako je zadovoljen zadati uslov, akciju treba preneti ne na sledeću nego na neku drugu naredbu u programu i sadržaj PC se ne inkrementira već se u njega unosi adresa lokacije u kojoj se nalazi instrukcija na koju treba “skočiti”. Da bi je CU mogla “razumeti” tj. dešifrovati, mašinska instrukcija mora imati strogo određenu formu. Ona se u opštem slučaju sastoji iz dva dela: kod instrukcije ili operacija i adresni deo ili operand. Kod instrukcije zahteva 1 bajt, a adresni deo jedan ili više bajtova. Na primer, instrukciju za storiranje u memoriju tj. preslikavanje sadržaja ACC u određenu memorijsku lokaciju, CU će je prepoznati po prvom bajtu-kodu. Neophodna informacija o tome gde treba storirati sadržaj ACC, sadržana je u vidu 16-bitne adrese u sledeća dva bajta instrukcije koji čine adresni deo. Tako, za storiranje može da izgleda kao:

1001101100000010

kod instrukcije

1.bajt adrese

2.bajt adrese6 74 84

1 24 34

6 74 8400000001

U toku izvršavanja posmatrane instrukcije CU aktivira pomoću kontrolnih signala ALU i RAM, a rezultat je da će se tekući sadržaj akumulatora naći u memorijskoj lokaciji sa adresom:

( ) ( )1000000001 2 10513=

Generator taktnog signala Pri vođenju izvršavanja programa CU mora da vremenski sinhronizuje rad pojedinih delova računara. Zato je neophodan pravilan periodičan naponski signal - taktni signal. U sklopu CU ili kao posebna jedinica instaliran je generator takta (timer, clock) koji generiše taktni signal. Idealizovano, vremenski dijagram taktnog signala izgleda kao na sl.2.

logička vrednost 1

logička vrednost 0

Sl.1.2. Taktni signal Dužina periode taktnog signala kod različitih mikroprocesora iznosi od nekoliko stotih delova jedne µs do stotinak ns i manje. Izvršavanje neke mašinske instrukcije (pribavljanje iz memorije,

7

dekodiranje i samo izvršavanje) zahteva u opštem slučaju nekoliko perioda i taj vremenski period se naziva mašinski ciklus. Recipročna vrednost periode taktnog signala predstavlja frekvenciju na kojoj radi mikroprocesor. Manja perioda taktnog signala znači višu frekvenciju, tj. brži rad mikroprocesora.

Ulazno-izlazne (I/O) jedinice

Ulazno-izlazne jedinice (I/O) predstavljaju kao i periferna memorija periferne jedinice. One su veza računara sa spoljnim svetom pri čemu binarno kodiraju ulaznu informaciju (ulazna jedinica) a dekodiraju interni kod na izlazu (izlazna jedinica). Primer ulazne jedinice je tastatura. Tipične izlazne jedinice kod jednog mikro računara su monitor i štampač (printer) Periferne jedinice nisu neposredno povezane sa CPU nego posredstvom međusklopa (interface) pomoću koga se rešava problem različite brzine rada CPU i I/O jedinice, kao i problem komuniciranja sa CPU (prepoznavanje adresa, prijem i interpretacija kontrolnih signala). Tako je značajna funkcija interfejsa prihvatanje podataka ili baferovanje (buffer) pa interfejs po pravilu ima više prihvatnih registara koji čine bafer posmatrane I/O jedinice. Tipičan primer je printer kao spora I/O jedinica. Pojedinim I/O jedinicama, CU se obraća pomoću njene adrese, odnosno tačnije, adrese porta koji predstavlja registar (“vrata”) kroz koga podaci ulaze u međusklop neke izlazne jedinice ili izlaze iz međusklopa neke ulazne jedinice. Naime, u opštem slučaju međusklop I/O jedinice ima više portova.

Organizacija mikroračunara Kao što smo videli, mikroračunar sadrži svih šest osnovnih delova digitalnog računara, pri čemu CPU predstavlja mikroprocesor. Sve komponete mikroračunara predstavljaju integrisana logička kola (IC) velikog (LSI) ili vrlo velikog (VLSI) stepena integracije (large scale integration, very large scale integration) te imaju male dimenzije. Integrisano logičko kolo je specijalnom tehnologijom izrađeno iz malog poluprovodničkog kristala. Naziv integrisano označava da pojedine elektronske komponente u logičkom kolu (otpornici, kondenzatori,diode, tranzistori) nisu fizički razdvojene već predstavljaju sićušne delove jedinstvenog kristala. Stepen integracije je utoliko veći ukoliko poluprovodnički kristal datih dimenzija sadrži veći broj elektronskih komponenata tj. ima složeniju funkciju. Računarske komponente su ugrađene u vidu čipova. Čip predstavlja poluprovodničku pločicu smeštenu u kućište sa izvodima (priključcima). Tako mikroprocesor predstavlja jedno VLSI logičko kolo izrađeno na jednom čipu. Pojedini blokovi mikroračunara nisu, kako je to prikazano na sl.1.1. povezani međusobno posebnim vezama (svako sa svakim) već ih povezuju sabirnice ili magistrale (bus). Sabirnica predstavlja skup linija kojima se prenose informacije između pojedinih delova računara, a to su: adrese, podaci (u širem smislu, znači i instrukcije takođe) i kontrolni signali. Tipičan način povezivanja delova kod mikroračunara dat je na sl.1.3. U stvari postoje tri, po funkciji, različite sabirnice: sabirnica podataka (data bus), adresna sabirnica (adress bus) i upravljačka sabirnica (control bus).

8

Sl. 1.3. Šema veza pojedinih delova mikroračunara Adresna sabirnica je jednosmerna i služi za slanje adresa memoriji ili perifernim jedinicama od strane µP. Jedna od jedinica “prepoznaje” svoju adresu i stupa u komunikaciju sa µP. Adresna sabirnica ima onoliko linija koliko bitova ima adresa, na primer 16 kod 8-bitnih računara. Sabirnica podataka je dvosmerna i služi za prenos podataka u oba smera (od µP memoriji ili izlaznoj jedinici i od memorije ili izlazne jedinice u µP). Broj linija na sabirnici podataka je obično jednak broju bitova u računarskoj reči. Tako je data bus 8-bitnog računara 8-linijski. Upravljačka sabirnica služi za prenos upravljačkih signala od µP drugim delovima. Primer upravljačkog signala je R/W (read, write) signal čija jedinična vrednost znači da µP želi podatak od memorije (read), a nulta vrednost znači da µP želi da upiše (write) podatak u memoriju. Taktni signal koji obezbeđuje vremensku sinhronizaciju takođe je upravljački signal. Mikroprocesor mora da dobije povratnu informaciju od dela ili sklopa kome se obratio, da li je trenutno u stanju da izvrši nalog ili je još zauzet izvršavanjem prethodnog zadatka. Zato upravljačka sabirnica obuhvata i status signale ili signale stanja kojima pojedini sklopovi šalju informacije mikroprocesoru da li su spremni (logička vrednost 1) ili ne (logička vrednost 0). Pojedinim sklopovima (tastatura na primer) data je mogućnost da prekinu µP u njegovoj tekućoj aktivnosti pomoću signala zahteva za prekid, pa upravljačka sabirnica uključuje i liniju zahteva za prekid. Dakle neke linije upravljačke sabirnice imaju smer od µP ka ostalim delovima a neke suprotan smer (linija stanja i linija zahteva za prekid).

Pitanja Osnovni funkcionalni delovi digitalnog računara. Šta čini hardver, a šta softver Bit i bajt Šta je RAM i ROM Razlika između centralne (operativne) i periferne memorije Šta je uloga ALU (aritmetičko logičke jedinice) Šta je uloga CU (upravljačka jedinica) Šta je uloga sabirnica

9

ELEMENTI RAČUNARSKE ARITMETIKE Digitalni računar pamti i računa sa brojevima u binarnom brojnom sistemu. Binarni brojni sistem je, kao i nama najbliži dekadni, jedan pozicioni brojni sistem s tim što za razliku od dekadnog sistema u kome je osnova deset, u binarnom sistemu osnova je dva. Pozicioni označava da vrednost neke cifre zavisi od njenog položaja u broju, na primer u decimalnom broju 345.23 prva trojka vredi tri stotine, a druga tri stota dela. Naime 345.23 predstavlja u stvari skraćeni zapis sume

3 10 4 10 5 10 2 10 3 102 1 0 1 2⋅ + ⋅ + ⋅ + ⋅ + ⋅− −

Za neki pozitivan broj: anan-1an-2 . . . a2a1a0.a-1a-2 (1) decimalna tačka u pozicionom brojnom sistemu sa osnovom B (B ≥ 2) gde ai označava cifru, važi: { }a Bi ∈ −0 1 1, , ,L (2)

a a a a a a a B a B a B

a B a B a Bn n n

nn

n− − − −

−−

−−

= ⋅ + ⋅ + + ⋅ +

+ ⋅ + ⋅ + ⋅1 1 0 1 2 1

11

1

00

11

22

L K L

K

. (3)

Za dati primer dekadnog broja imaćemo: B a a a a a= = = = = =− −10 3 4 5 2 32 1 0 1 2; ; ; ; ; Prvo cifarsko mesto sleva (cifra an) najviše vredi i nazvaćemo je najznačajnijom, a poslednja cifra je najmanje značajna.

Binarni, oktalni i heksadekadni brojni sistem Za računarsku aritmetiku, od interesa je binarni brojni sistem. Pri programiranju u mašinskom jeziku i u računarskoj literaturi često se koriste i oktalni (osnova je osam) i heksadekadni brojni sistem (osnova je šesnaest) pomoću kojih se, kao što ćemo videti, u stvari skraćeno prikazuju binarni kodovi. Za binarni brojni sistem imamo: { }B ai= ∈2; ,01 (4a) Za oktalni brojni sistem { }B ai= ∈8 0 1 2 7; , , , ,L (4b) Za heksadekadni brojni sistem { }B a A B C D E Fi= ∈16 0 1 2 9; , , , , , , , , , ,L (4c) Slova A-F iz praktičnih razloga zamenjuju cifre: 10-15

10

Bazu brojnog sistema naznačavaćemo uz pomoć indeksa, na primer: 102510 - dekadni broj 503.278 - oktalni broj A01.B16 - heksadekadni broj Kako prevesti neki broj u nekom drugom brojnom sistemu u dekadni oblik? Postupak se sastoji u primeni jednačine (3) i izračunavanju vrednosti sume u dekadnom brojnom sistemu. PRIMER Prevesti sledeće brojeve u dekadni oblik: a) 1100100.012 b) 317.58 c) 20AB.416 a) 1100100.012 = 1⋅26 + 1⋅25 + 0⋅24 + 0⋅23 + 1⋅22 + 0⋅21 + 0⋅20 + 0⋅2-1 + 1⋅2-2

= 64 + 32 + 4 + 0.25 = 100.2510 b) 317.58 = 3⋅82 + 1⋅81 + 7 + 5⋅8-1 = 207.62510 c) 20AB.416 = 2⋅163+10⋅16+11+4⋅16-1 = 8363.2510 Kako rešiti obrnut problem- iz dekadnog preći u neki drugi brojni sistem? Kao ideja se nemeće obrnut postupak tj. primena jedn. (3) zdesna ulevo. Na primer: 32710 = 5⋅64+7 = 5⋅82+0⋅81+7⋅80 = 5078 Taj postupak je međutim težak za primenu na velike decimalne brojeve pa se koriste sledeći algoritmi:

Prevođenje celih brojeva iz dekadnog u drugi brojni sistem Postupak se sastoji u uzastopnom deljenju polaznog broja a, osnovom B sistema u koji se broj prevodi. Kada se a podeli sa B dobija se celobrojni rezultat a1 i ostatak r1, koji predstavlja najmanje značajnu cifru p1. Deljenjem rezultata a1 sa B dobija se a2 i ostatak r2 koji predstavlja drugu cifru zdesna ulevo. Postupak se ponavlja sve dok rezultat deljenja ne postane manji od B, i on predstavlja najznačajniju cifru pn. Kao rezultat dobijamo a10→(pn,...,p2p1)B PRIMER Broj 33510 prevesti u binarni, oktalni i heksadekadni oblik. 335:2 167 i ostatak 1 83 “ ” 1

11

41 “ ” 1 20 “ ” 1 10 “ ” 0 33510 = 1010011112 5 “ ” 0 2 “ ” 1 1 “ ” 0 335:8 41 7 5 1 33510 = 5178 335:16 20 15 1 4 33510 = 14F16

Prevođenje decimalnih brojeva iz dekadnog u neki drugi brojni sistem Prevođenje decimalnih brojeva sastoji se u posebnom prevođenju celobrojnog i decimalnog dela broja. Zato ćemo dati metod za prevođenje pravih razlomaka (decimalan deo nekog broja). Postupak se sastoji u uzastopnom množenju decimalnog dela prethodnog rezultata osnovom novog brojnog sistema B. Množenje se prekida kada se pojavi nula kao rezultat ili kada se postigne željena tačnost. Celobrojni delovi dobijenih proizvoda biće redom cifre broja u novom brojnom sistemu. PRIMER Broj 0.687510 prevesti u binarni oblik: 0. 6875 0.10112 1. 375 x2= 0. 75 x2= 1. 5 x2= 1. 0 x2= Neki pravi razlomak, koji u obliku decimalnog broja ima u nekom brojnom sistemu konačan broj cifara, u nekom drugom brojnom sistemu može biti beskonačan periodičan decimalan broj. Prevedimo, na primer, dekadni broj 0.1 u binarni sistem:

0. 1 ( )0.000110011678678

K 2 0. 2 0. 4 0. 8 Vidimo da je rezultat beskonačan periodičan 1. 6 decimalan broj. 1. 2 0. 4 0. 8 1. 6

12

1. 2 . U ovakvim slučajevima nemoguć je tačan prelaz iz jednog u drugi brojni sistem već se unapred definiše tačnost, tj. broj decimala rezultata. Pri tom se, radi smenjenja greške, poslednja tražena decimala povećava za jedan, ukoliko je sledeća jednaka ili veća od polovine osnove B - pravilo zaokruživanja. PRIMER Broj 0.9310 prevesti u oktalni sa tačnošću od 4 decimale: 0. 93 x8 0.73418 7. 44 3. 52 4. 16 1. 28 2. 24 Neki decimalni broj koji je veći od 1 tj. ima i celobrojni deo, prevodi se u drugi brojni sistem tako što se posebno prevodi celobrojni deo a posebno decimalni, opisanim postupcima. PRIMER Broj 173.9310 prevesti u oktalni sistem sa tačnošću od četiri decimale. 173:8 21 5 2 5 17310 = 2558 U prethodnom primeru smo izračunali 0.9310 ≈ 0.73418 pa konačno imamo 173.9310 ≈ 255.73418

Prevođenje između binarnog, oktalnog i heksadekadnog brojnog sistema Između binarnog i oktalnog brojnog sistema postoji specijalan odnos jer je: 8 = 23

Slično, za osnove heksadekadnog i binarnog sistema važi:

Pošto je peta decimala (2) manja od 4, po pravilu zaokruživanja četvrta poslednja tražena decimala rezultata ostaje nepromenjena.

13

16 = 24 Osobina, da je osnova jednog brojnog sistema jednaka celobrojnom stepenu osnove drugog brojnog sistema omogućuje brz prelaz iz jednog u drugi sistem. Neka, na primer, treba oktalni broj 3178 prevesti u binarni. Počećemo od jednačine (3): 3178 = 3⋅82 + 1⋅81 + 7⋅80 Svaku od cifara oktalnog broja možemo da prevedemo u trocifreni binarni broj (najveća cifra zahteva tri binarne cifre). U posmatranom primeru: 38→0112 ; 18→0012 ; 78→1112 Ako u sumu na desnoj strani oktalne cifre zamenimo ekvivalentnim trocifrenim binarnim brojevima i smenimo 8 = 23, 3178 = (011)⋅26 + (001)⋅23 + (111)⋅20 = = (0⋅22 + 1⋅2 + 1)⋅26 +(0⋅22 + 0⋅2 + 1)⋅23 + (1⋅22 + 1⋅2 + 1)⋅20 = = 0⋅28 + 1⋅27+1⋅26+0⋅25+0⋅24+1⋅23+1⋅22+1⋅21+1⋅20 = ={{{011001111

3 1 72 = 110011112

Zapažamo da se iz oktalnog prelazi u binarni broj jednostavnom zamenom svake oktalne cifre ekvivalentnim trocifrenim binarnim brojem. Uopšte nije teško izvesti sledeće pravilo: Ako između dva brojna sistema B1 i B2 postoji veza: B B n En

1 2= ∈; 10 Iz sistema sa osnovom B1 se prelazi u sistem sa osnovom B2 tako što se svaka cifra u prvom sistemu prevede u n-to cifreni broj u sistemu B2. 20 Iz sistema sa osnovom B2 u sistem sa osnovom B1 tako što se levo i desno od decimalne tačke u broju sa osnovom B2 formiraju grupe od po n cifara i zamene izračunatim vrednostima koje predstavljaju cifre u sistemu B1 PRIMER Prevesti binarni broj 1011010.00012 u oktalni i heksadekadni oblik: {{{ {{1011010 000100

1 3 2 0 48132 04. → .

{1011010.0001

5 1165 1

A123 123→ A.

Uočavamo da oktalni i heksadekadni oblik mogu da posluže za sažeto prikazivanje binarnih brojeva. Tako umesto datog binarnog broja možemo skraćeno da pišemo 5A.116, što je oko četiri puta kraće. Binarni kod je lako reprodukovati:

}

}

}0101

1010

0001

1011010.00015 1A →

14

Preostaje problem prevođenja između oktalnog i heksadekadnog sistema. Kao ideja se nameće prelaz preko binarnog sistema kao intermedijalnog. PRIMER Prevesti broj 5043.128 u heksadekadni oblik 504312 23 288

2 3 2 816. . .→ →1011000100011 00101000

A

A123123123 123123

Binarno kodirani dekadni brojevi Dok je prelaz iz binarnog u oktalni ili heksadekalni oblik ili kod jednostavan to nije slučaj sa konverzijom između binarnog i dekadnog brojnog sistema. Da bi se ubrzalo binarno kodiranje pri unošenju brojeva i dekodiranje (konverzija binarnog u dekadni oblik) pri izlazu rezultata , u džepnim kalkulatorima i kod digitalnih instrumenata često se dekadni brojevi umesto da se prevedu u binarne samo binarno kodiraju. Rezultat je BCD (Bynary Coded Decimal) dekadnog broja. Postoji više načina kodiranja ili više BCD kodova i najpoznatiji je 8421 BCD kod. Analogno binarnom kodiranju oktalnih i heksadekadnih brojeva, 8421 BCD kod nekog dekadnog broja se dobija jednostavno zamenom svake od cifara u dekadnom broju četvorocifrenom binarnom vrednošću. PRIMER 2.8. Formiraj 8421 BCD kod broja 809210

}{}{

1000

0000

1001

0010

10000000100100108 0 9 2 →

PRIMER 2.9. Dekodiraj BCD broj 10101111000

}}}010101111000 578

5 7 8

10→

Osnovne računske operacije u pozicionom brojnom sistemu U pozicionom brojnom sistemu sa bilo kojom osnovom B osnovne računske radnje se obavljaju potpuno analogno kao u dekadnom brojnom sistemu (B=10). Naime, umesto da se manipuliše sa desetkama pri "pamćenju" i "pozajmljivanju" u toku sabiranja i oduzimanja, manipuliše se osnovom B. Uočimo analogiju kod sabiranja na sledećim primerima: 11 11 1 111 58610 5768 1101112 + 17510 + 1738 + 101112

15

76110 7718 10011102 Jedinice iznad cifara prvog sabirka označavaju prenos (carry) iz prethodnog sabiranja. Pri oduzimanju u brojnom sistemu sa osnovom B≠10 ne pozajmljuje se sa prvog značajnijeg cifarskog mesta desetka, već osnova B. Primer: 7 2 516 11012 - 3 C D16 - 1102 3 5 816 1112 Izvršimo sledeće množenje paralelno u dekadnom i oktalnom brojnom sistemu: 4610 x 3710 568 x 458 322 346 4610 = 568 +138 +270 3710 = 458 170210 32468 Provera: 32468=3⋅83+2⋅82+4⋅8+6=170210 Kako smo računali: 568 x 58=3468 , 6 x 5=30=3⋅8+6 Znači 6 pišem a 3 osmice pamtim tj. prenosim 3 na rezultat sledećeg množenja: 5 x 5=25 ; 25+3=28=3⋅8+4 Dakle, 4 pišem a 3 prenosim. Za računarsku aritmetiku od interesa je množenje u binarnom sistemu. Na primer: 11011 x 1011 11011 11011 11011 100101001 S obzirom da su cifre binarnog sistema 0 i 1 množenje se svodi na pravilno “potpisivanje” prvog činioca (množenje nulom znači pomeranje dva mesta ulevo) i sabiranje, drugim rečima u binarnom brojnom sistemu množenje se svodi na sabiranje. Deljenje u binarnom brojnom sistemu se svodi na uzastopno oduzimanje delioca.

16

Uočimo to na primeru: 100101001 : 11011 = 1011 -11011 101000 -11011 11011 -11011

Svođenje oduzimanja na sabiranje uz pomoć komplementa Komplement se koristi u kompjuterskoj aritmetici za koju je karakteristično da svi brojevi imaju jednaku dužinu (isti broj cifara) jer se pamte u jednakim memorijskim lokacijama. Poćićemo dakle od pretpostavke da svi brojevi imaju isti broj cifara, koji je uz to bar za jedan veći od broja cifara u najvećem po apsolutnoj vrednosti broja. Neka na primer posmatramo u dekadnom brojnom sistemu skup pozitivnih celih brojeva koji su najviše četvorocifreni. U skladu sa postavljenim uslovom sve brojeve ćemo posmatrati kao petocifrene. Tako će oni kao najznačajniju cifru imati nulu koja, kao što ćemo kasnije videti, u stvari predstavlja znak “+”. Na primer brojeve 128010 i 45210 ćemo posmatrati u obliku: 01280 ; 00452 U brojnom sistemu sa osnovom B definiše se B i (B-1) komplement nekog broja. (B-1) komplement nekog broja se dobija kada se svaka od cifara u datom broju zameni njenom dopunom do B-1. Na primer 9 komplement broja 0045210 biće: 99547 B komplement nekog broja, koga ćemo označavatii malim slovom c u indeksu dobija se kada se na najmanje značajnu cifru (B-1) komplementa doda jedinica. Na primer: (00452)c=99547=99548 +1 Pokazaćemo sada da se problem oduzimanja: 01280-00452 može rešiti sabiranjem 01280+(00452)c Zaista: 01280 01280 -00452 +99548 00828 100828 Dobijamo korektan rezultat ako ignorišemo prenos sa najznačajnijeg cifarskog mesta.

17

Uopšte, važi da se oduzimanje pozitivnog broja y od pozitivnog broja x u brojnom sistemu sa osnovom B može zameniti sabirnajem broja x i komplementa broja y (uz ignorisanje konačnog prenosa). Formalno ćemo pisati x - y = x + (-y) = x + yc (5) Iz (5) sledi važna relacija: -y → yc (6) gde operator → znači ono na levoj strani zamenjujemo onim sa desne strane. Negativni brojevi se zamenjuju (prikazuju) B-komplementom odgovarajućeg pozitivnog broja. Dakle u aritmetici sa komplementima, negativni brojevi se prikazuju preko B-komplemeta. Kao rezultat, na najznačajnijem cifarskom mestu figuriše cifra (B-1) koja tako prestavlja u stvari znak “-”. Na primer: - 00452 → 99548 Rešimo sada u aritmetici sa komplementima problem: 452-1280 U skladu sa (5): 00452 - 01280 → 00452 + (01280)c (01280)c = 98719 = 98720 + 1 00452 +98720 99172 Rezultat je negativan! Kao negativan, rezultat u stvari predstavlja komplement odgovarajućeg pozitivnog broja. Koji je to broj? -y →yc = 99172 ; y=? Ako relaciju (6) formalno primenimo na (-y): -(-y) → (-y)c → (yc)c Kako je -(-y) = y, sledi: y→(yc)c (7) Dakle, ako imamo (yc) onda broj y dobijamo kao komplement komplementa. U našem primeru: 99172c = 00827 = 00828 +1

18

Dakle 99172 predstavlja u stvari broj -00828 što je tačan rezultat. U kompjuterskoj aritmetici se koristi opisan postupak zamene oduzimanja sabiranjem tj. negativni brojevi u računaru su prikazani u obliku 2 komplementa odgovarajućih pozitivnih brojeva. Kako se radi o binarnom brojnom sistemu, znači da se sve binarne računske operacije u računaru svode na sabiranje!. To u mnogome pojednostavljuje hardversko rešavanje aritmetičkih operacija-neophodan je samo digitalni elektronski sklop (logičko kolo) za sabiranje. Da budemo precizniji, neophodna su i jednostavna kola za komplementiranje i pomeranje svih bitova u broju za jedno mesto ulevo ili udesno (shift operacija). PRIMER Kako izgledaju operacije e=a+b ; g=a-b ; i=e-g u računaru gde su : a=2410 ; b=4910, ako se za pamćenje celih brojeva koriste lokacije dužine 1 bajta? 2410= 110002 ; 4910= 1100012 Tako će u računaru biti: a= 0 0011000 ; b=0 0110001 Nule na mestu najznačajnijeg bita govore o tome da su brojevi pozitivni. e= a+b = 00011000 + 00110001 e = 01001001 (e>0) g=a-b = a+bc bc = (00110001)c=11001110 bc = 11001111 +1 g=00011000 +11001111 g=11100111 (g<0) -g=(11100111)c= 00011000 = 00011001 +1 g=-(24+23+1) = -2510 i= e-g = e+gc gc=(11100111)c= 00011000 = 00011001 +1 i= 01001001 +00011001 i= 01100010 (i>0)

19

i= 26+25+2 = 9810

Celi brojevi u računarima i računske operacije sa njima Za pamćenje označenih celih brojeva (integer) u mikroračunarima u normalnom radu se angažuju (pri obradi programa napisanih u višim programskim jezicima) dva bajta odnosno dve memorijske lokacije.

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

znak broja

Sl.2.1 Registrovanje celih brojeva Bitove u dvobajtnom broju označavaćemo sa b0 - b15. Pri tome, bitovi b0 - b7 pripadaju manje značajnom bajtu (Low byte), a bitovi b8 - b15 značajnijem bajtu (High byte). Najznačajniji bit b15 čuva informaciju o znaku broja:

b za znak za znak

15

0

1=

-+

Tako se označeni celi celi brojevi (integer) pamte (kodiraju) u vidu 2 - komplementa. PRIMER Prikaži sadržaj memorijskih lokacija u kojima su smešteni brojevi x = 128510 ; y=-128510 = -x. Postupkom datim u pogl. 2.1.1. dobijamo binarni oblik broja x: 128510 = 101000001012 U dva bajta memorije: x=0000010100000101 ili skraćeno uz pomoć heksadekadnog prikaza (pogl. 2.1.3.): x=050516 Za y=-x imamo: y=(0000010100000101)c y=1111101011111010=1111101011111011 +1 Rezultat je praktičnije tražiti u heksadekadnom sistemu:

20

y=(050516)c=FAFA = FAFB16 +1 Kako je kapacitet memorijske lokacije ograničen, postavlja se pitanje koliki je najveći, a koliki najmanji ceo broj koji se može zapamtiti (registrovati). Najveći ceo broj xmax biće: xmax=0111111111111111 = 1000000000000000 - 1 xmax= 215 - 1= 32768 - 1 = 32767 To je relativno mali broj i ako se u nekom problemu pojavljuju veći celi brojevi, kako prevazići to ograničenje ? U višim programskim jezicima (BASIC, FORTRAN, PASCAL, C) postoje komande koje kao rezultat imaju angažovanje duplo duže lokacije (4 bajta) za registrovanje celih brojeva (long integer). Tada se gornja granica pomera na: xmax= 231 - 1 = 2147480000 što može biti dovoljno. Ukoliko i to ne rešava problem, preostaje da se celi brojevi u računaru obrađuju kao realni, čime se značajno povećava gornja granica. To se međutim, kao što ćemo u narednom poglavlju videti, mora “platiti” gubitkom tačnosti u toku računskih operacija. Najmanji ceo broj koji se može registrovati u dvobajtnoj lokaciji, xmin (veliki po apsolutnoj vrednosti negativan broj ) nije jednak -xmax iz razloga što se negativni brojevi registruju u vidu 2 - komplementa. Tako broj x=1111111111111111=FFFF16 nije, što se može u prvi mah pomisliti, traženi najmanji broj, on ustvari predstavlja broj -1 jer je: (FFFF)c=000116 Najmanji broj u računaru ima oblik: 1000000000000000=800016 pa je: xmin=- (800016)c=-7FFF=-800016 +1 xmin=-8 163 = -23 212 =-215 xmin=-32768 Što se računskih operacija tiče, one se svode na sabiranje kao što smo to u prethodnim poglavljima videli. Deljenje, kao što znamo, nije definisano na skupu celih brojeva i po pravilu se u računaru kao rezultat delenja dva cela broja, tzv. celobrojno deljenje, uzima ceo broj koji predstavlja celobrojni deo tačnog rezultata.

21

PRIMER Šta će se u računaru sa jednobajtnom memorijskom lokacijom dobiti pri izvođenju sledećih operacija: j=a · b ; k=b:a gde su a=2410; b=4910. (vidi primer 2.10) Najveći označen ceo broj u 1 - bajtnoj lokaciji će biti: xmax=27-1 = 127 Kako je: 24 · 49>127 doći će do aritmetičkog prelivanja, odnosno računar neće moći da dobije rezultat, o čemu korisnik dobija odgovarajuće upozorenje (aritmetic overflow). Pri delenju, 00110001:00011000 postupak se prekida, pošto se dobija celobrojni deo rezultata: 110001 : 11000 = 10 - 11000 000001 Dakle rezultat će biti: k=102 = 210 što predstavlja celobrojni deo tačnog rezultata, 2.041666...

Realni brojevi u računaru Da se podsetimo najpre da se u dekadnom sistemu realni brojevi mogu zapisati u dva oblika: oblik sa nepokretnom decimalnom tačkom (fixed point number) i eksponencijalni oblik ili oblik sa pokretnom decimalnom tačkom (floating point number). Na primer: 0 0257 2 57 10 0 0257 10 0 00257 102 0 1. . . . ...

oblik sa fiksnom dec. tackom

oblik sa pokretnom dec. tackom

123 1 24 34= ⋅ = ⋅ = ⋅ =−

Jedan od bekonačno mnogo oblika sa pokretnom decimalnom tačkom, usvojen je kao standardni i zove se normalizovani eksponencijalni oblik. U posmatrnom primeru to je: 0.257 - 10-1 gde se predeksponencijalni faktor 0.257, koji predstavlja pravi razlomak čija je prva decimala različita od nule, naziva mantisa, a stepen osnove, -1 naziva se eksponent.

22

Uopšte, u nekom pozicionom brojnom sistemu sa osnovom B, normalizovana eksponencijalna forma broja x je: x x Bm

xe= ± ⋅ (8) 0.1≤ xm <1 (8a) gde xm označava mantisu, a xe eksponent. Na primer: -1011.012=-0.1011012 2100 ; xm=0.1011012; xe=1002 0.007318=0.7318 8-2 ; xm=0.7318; xe=-28 U oba primera smo baze sistema 2 i 8 ostavili u dekadnom obliku umesto da ih prikažemo u odgovarajućem brojnom sistemu: 2=102 ; 8=108 da bi bilo uočljivije o kojoj se osnovi radi. Naime, u bilo kom brojnom sistemu, osnova sistema kao broj, ima isti kod: B=10B 10=1010; 2=102; 8=108; 16=1016 . . . Važan pojam vezan za realne brojeve je broj značajnih cifara u broju, i on je u direktnoj vezi sa tačnošću informacije koju sadrži posmatrani broj. Neka smo, na primer, na analitičkoj vagi, za koju znamo da ne može da registruje mase manje od 10-4 g, izmerili 1 g neke supstance. Za masu supstance x pisaćemo: x=1.0000 g, a ne x=1 g, da bi naglasili tačnost informacije koju vaga daje. Ako smo pak izmerili 0.0205 g, nećemo to pisati kao 0.02050, već samo sa četiri decimale, y=0.0205 g jer nula na petoj decimali nije rezultat merenja. Sve cifre u broju x su značajne cifre (ukupno 5), dok broj y ima samo 3 značajne cifre, poslednje tri. Naime, nule na početku broja (“leve“ nule) ne predstavljaju značajne cifre, dok su nule na kraju broja (“desne” nule) značajne, kao i sve nule izme|u dve značajne cifre. Zašto “leve“ nule nisu značajne biće jasno ako masu 0.0205 g prikažemo u različitim jedinicama: 0.0205 g=20.5 mg=0.0000205 kg . . . Očigledno, njihov broj varira zavisno od odabrane jedinice mere, te ne predstavlja informaciju o tačnosti merenja (koja je nezavisna od odabrane jedinice mere). Treba zapaziti da prema datom pravilu, u normalizovanom eksponencijalnom broju, sve cifre decimalnog dela mantise predstavljaju značajne cifre. Na primer: y=0.205 10-1 g=0.205 102 mg=0.205 10-4 kg U kompjuterskoj aritmetici, broj značajnih cifara daje informaciju o tačnosti sa kojom je neki realan broj registrovan u memoriji. Realni brojevi se u memoriji računara čuvaju u normalizovanom eksponencijalnom binarnom obliku. Dakle memorijski prostor za neki realan broj ima dva dela: deo za mantisu i deo za eksponent. Standardna organizacija registrovanja realnog broja data je na sl.2.1.

23

Znak eksponenta 1.bajt

Znak broja 2.bajt 3.bajt 4.bajt

xe xm

Sl.2.2. Registrovanje realnih brojeva

Realan broj u memoriji zauzima četiri bajta, odnosno kod mikroračunara to su četiri memorijske lokacije. Prvi bajt služi za pamćenje eksponenata i za njega važe pravila za pamćenje celih brojeva: Najznačajniji bit predstavlja znak eksponenta, a negativni eksponenti se čuvaju u obliku 2 - komplementa. Prvi (najznačajniji), od ukupno 24 bita koliko je rezervisano za mantisu, čuva informaciju o znaku broja, a ostali predstavljaju decimale mantise. Pri tome treba imati u vidu na osnovu definicije normalizovane eksponencijalne forme (8, 8a) da ako je najznačajniji bit jednak nuli (pozitivna mantisa), onda bit iza najznačajnijeg mora biti jednak jedinici. Za negativne brojeve u prostoru za mantisu smešta se 2 - komplement mantise. Uporedimo sada interne ili mašinske kodove brojeva: -4 , ceo broj -4.0 , realan broj Interni kod ( oblik u kome je broj u memoriji) celog broja -4 dugačak je 16 bitova (2 memorijske lokacije): -4=-1002=-0000000000000100=-000416 -4→(000416)c=FFFC16=1111111111111100 Da bi smo odredili izgled realnog broja -4. u memoriji, prikazaćemo ga u normalizovanom eksponencijalnom binarnom obliku. -4.=-100.=-0.1⋅211 Prvi bajt internog koda je eksponent: xe=00000011=0316 Tri bajta predstavljaju mantisu xm, a pošto je broj negativan:

xm22 nule c

=

0100000...01 24 34 =(40000016)c=BFFFFF=C0000016

Dakle, izgled broja -4. u memoriji je: {− → =4 03 00000 16.

x x x xe m e m

C124 34 1 24 34 124 3400000011110...0

PRIMER a) Brojeve x=-E1C.0716 i y=1287.5910 prevesti u oktalne sa tačnošću od 4 decimale i potom ih sabrati. b) Prikazati izgled rezultata u memoriji računara.

24

a) Prvi broj ćemo prevesti u oktalni posredstvom binarnog oblika: E1C.0716 → 111000011100.000001112 → 7034.0168 x=-7034.0168 Za drugi broj posebno konvertujemo celobrojni, a posebno decimalni deo. 1287:8 128710=24078 160 7 20 0 2 4 0. 59 x 8 Kako je peta decimala 5, veća od polovine osnove, po 4. 72 pravilima zaokruživanja: 5. 76 0.5910=0.45618 6. 08 0. 64 5. 12 y=2407.45618 x+y=-7034.016+2407.4561 Oduzimamo manji od većeg broja 7034.016 - 2407.4561 4424.33778 Rezulatat je: z=x+y=-4424.33778 b) -z=4424.3377=100100010100.011011111111 Broj ima ukupno 8x3=24 binarne značajne cifre. U prostoru od 3 bajta, predviđenom za znak broja (prvi bit) i decimale mantise (preostala 23 bita) ima mesta za 23 binarne značajne cifre, tj. broj z se nemože tačno prikazati u memoriji. Neophodno je zameniti ga 23-bitnim brojem, i to se može izvesti: - odsecanjem, tj. jednostavnim odbacivanjem viška bitova - zaokruživanjem na 23 značajne cifre, čime se smanjuje greška

odsecanjem

zaokruživanjem

-z= 100100010100.01101111111|1 100100010100.01101111111

100100010100.01110000000

Pri zaokruživanju, pošto je najznačajniji odbačeni bit jednak 1, (polovina osnove) na poslednju značajnu cifru dodaje se 1.

25

Iz oblika sa fiksnom decimalnom tačkom prelazimo u normalizovani eksponencijalni oblik, da bi odredili mantisu i eksponent.

z =− ⋅

− ⋅

0.10010001010001101111111

0.10010001010001110000000

1100

1100

22

( )( )odsecanjezaokruzivanje

ze=1100=00001100=0C16 Pošto je broj negativan, u prostoru za mantisu smešta se 2-komplement mantise, koga možemo odrediti uz pomoć heksadekadnog koda:

( )( ) ( )( ) ( )z48A37F B75C81 odsecanje48A380 B75C80 zaokruzivanjem c

c

c

16 16

16 16

==

Konačno, izgled broja z u memoriji je u heksadekadnom prikazu:

)njezaokruziva(0CB75C80)odsecanje(0CB75C81

:z

PRIMER Dati su sadržaji memorijskih lokacija u kojima su smešteni realni brojevi x i y. x: 04A16900 y: FE560000 Prikazati brojeve x i y u heksadekadnom brojnom sistemu u obliku sa fiksnom decimalnom tačkom. xe=0416=410 xm : A16900 U pitanju je komplement mantise jer je prvi bit jednak jedinici. Nalazimo mantisu: (A1690016)c=5E96FF=5E970016 +1 xm=0.101111010010111 Pošto je broj negativan: x x B.D2Em

xe= − ⋅ = − = −2 2 161011.11010010111 ye : FE (u pitanju je negativan eksponent, u obliku komplementa) ye=-(FE16)c=-0216=-210 ym : 560000, ym=0.101011 y y 0.2Bm

ye= ⋅ = ⋅ = =−2 2 2160.101011 0.00101011

26

Ograničenja pri registrovanju realnih brojeva S obzirom na ograničenu dužinu (broj bitova) memorijskog prostora za eksponent, postoji gornja granica veličine realnog broja koji se može registrovati, xmax. Naćićemo je kao: x (x )max m max

(x )e max= ⋅2 Prikaz maksimalne mantise (xm)max u računaru je: 0111...1

23124 34

To je 0.111...1 1 0.00...123 23

231 2124 34 123= − = − −

Maksimalan eksponent je: (xe)max=27-1=127, pa imamo: xmax=(1-2-23) 2127 ≈ 1.708 1038 ≈ 1038 Analognim postupkom za najmanji realan broj, koji se može registrovati, dobijamo: xmin=-xmax ≈ -1.708 1038 ≈ -1038 Interne vrednosti realnih brojeva koje su po apsolutnoj vrednosti veći od granice: x>xmax biće jednake gornjoj granici: x = xmax (aritmetic overflow). Dužina eksponenta uslovljava takođe i donju granicu apsolutne vrednosti broja ispod koje su svi brojevi za računar jednaki nuli. Ovo ograničenje bi mogli nazvati ograničenje preciznosti registrovanja. xmin=( )min

( )minxmxe⋅ 2

(xm)min=0.1 (xe)min=-27=-128 xmin=2-1 2-128=2-129 ≈ 1.46 10-39 ≈ 10-39 Dakle, ako je : x< xmin interna vrednost broja x biće jednaka nuli x=0 (aritmetic underflow). Konačno, treće ograničenje - ograničena tačnost registrovanja, posledica je ograničene dužine mantise u memoriji. Tačnost registrovanja realnih brojeva tražićemo u vidu broja značajnih dekadnih cifara, koje se mogu registrovati. Najpre možemo da odredimo broj značajnih binarnih cifara - on je jednak broju bitova u prikazu decimala mantise: 23. Dakle, vrednost najmanje značajne cifre koja se može registrovati je 2-23 Kako je: 10-7< 2-23 < 10-6

27

znači da je poslednja dekadna cifra mantise, koja se može tačno registrovati približno 10-7, pa je približno, tačnost prikazivanja realnih brojeva jednaka 7 značajnih cifara.

Računske operacije sa realnim brojevima U pitanju su operacije sa brojevima u eksponencijalnom obliku koji se sastoje od odgovarajućih operacija između predeksponencijalnih faktora i eksponenata operanada. Tako se sabiranje dva realna broja obavlja u sledećim koracima: 10 Dovođenje brojeva na isti eksponent denormalizacijom predeksponencijalnog faktora (mantise) manjeg od brojeva 20 Sabiranje predeksponencijalnog faktora jednog i mantise drugog broja 30 Normalizacija, tj. dovođenje predeksponencijalnog faktora zbira u interval [0.1,1), odgovarajućim korigovanjem eksponenta Oduzimanje se svodi na sabiranje, tj. sabira se predeksponencijalni faktor prvog broja sa komplementom predeksponencijalnog faktora drugog broja. Množenje uključuje: 10 Množenje mantisa 20 Sabiranje eksponenata 30 Normalizacija rezultata i definisanje njegovog predznaka Deljenje uključuje: 10 Deljenje mantisa 20 Oduzimanje eksponenata 30 Normalizacija rezultata i definisanjenjegovog predznaka Za realizaciju operacija sa realnom brojevima neophodno je raspolagati sklopovima za operacije sabiranja i komplementiranja celih brojeva, pomeranja (shift) i inkrementiranja i dekrementiranja (povećanja ili smanjenja vrednosti celog broja za 1). Zbog različitog načina registrovanja u memoriji realni i celobrojni operandi su međusobno imkompatibilni, tj. CPU ne može da izvede operaciju između realnog i celobrojnog operanda. Zato u višim programskim jezicima postoje funkcije (grupe instrukcija) za prevođenje celog broja u realan oblik, kojima se aktivira odgovarajući niz mašinskih instrukcija za transformaciju nekog dvobajtnog celobrojnog operanda u četvorobajtni realni.

28

PITANJA Binarni oktalni i heksadekadni brojni sistem Osnovne računske operacije (sabiranje,oduzimanje,množenje i deljenje) u bin. okt., heksadek. brojnom sistemu (B-1) i B Komplement Kodiranje celih brojeva u računaru (2 bajtni) Sabiranje i odizimanje u aritmetici 2 komplementa Kodiranje realnih brojevi u računaru (4 bajtni)

29

LOGIČKA KOLA Kao što smo već istakli, obrada podataka u digitalnom račuanaru se realizuje pomoću električnih veličina (napon, struja), odnosno elektronski sklopovi računara obrađuju električne veličine kojima su predstavljeni podaci. Najpogodnije je podatke binarno kodirati, odnosno predstavljati ih pomoću dva definisana stanja elektronskih sklopova, koji se stoga nazivaju digitalni sklopovi, a pošto se radi o elektronskim kolima češće se koristi termin digitalna kola. Dva moguća stanja digitalnog kola su najčešće dva nivoa napona U1 i U2. Recimo, U1=0V, a U2=5V. Fizičkim stanjima 0V i 5V odgovaraju dve logičke vrednosti ⊥ (laž) i T (istina) koja se u digitalnoj elektronici označavaju kao logička nula (0) i logička jedinica (1). (vidi sl. 3.1) U=U2 logičko stanje 1 U=U1 logičko stanje 0

Logičko i fizičko stanje digitalnog kola

Data korespodencija između fizičkih i logičkih stanja odgovara tzv. pozitivnoj logici. Moguće je suprotno, nižem naponu U1 dodeliti logičku 1, a višem naponu U2 logičku 0 i tada se radi o negativnoj logici. Stanja i funkcije digitalnih kola se dakle mogu opisati pomoću logičkih vrednosti i logičkih operacija, pa se zato umesto termina digitalno kolo najčešće koristi termin logičko kolo. Ponašanje logičkih kola može se opisati pomoću prekidačkih ili Bulovih funkcija koje su predmet izučavanja Bulove (ili prekidačke) algebre.

Bulova algebra Za razliku od klasične algebre, promenljiva veličina u Bulovoj algebri može da ima samo dve vrednosti - logička nula (0) i logička jedinica (1):

1ili0 == xx Tri osnovne operacije, pomoću kojih može da se definiše bilo koja Bulova funkcija, su: 1. operacija logičkog sabiranja (disjunkcija) ili ILI (OR) operacija 2. operacija logičkog množenja (konjunkcija) ili I (AND) operacija 3. operacija komplementiranja tj. inverzije (negacija) ili NE (NOT) operacija Pri tome Bulova funkcija predstavlja rezultat izraza koji se sastoji od operanada i operacija nad tim operandima. Naravno, i Bulova funkcija ima razultat 0 ili 1. Osnovne operacije se mogu definisati pomoću tablice stanja ili tablice istinitosti (Tab. 3.1), iz koje vidimo da su prve dve operacije binarne (dva operanda), a treća je unarna (jedan operand).

30

Tab. 3.1. Osnovne logičke operacije

operandi operacija: x Y ILI (OR) I(AND) NE(NOT) f = x + y f = x⋅y f = x 0 0 0 0 1 0 1 1 0 1 1 0 1 0 0 1 1 1 1 0

Vidimo da, 1. Logički zbir ima vrednost nula ako i samo ako oba sabirka imaju vrednost nula. 2. Logički proizvod ima vrednost 1 ako i samo ako oba činioca imaju vrednost 1. 3. Komplement ili negacija (inverzija) nule je jedinica, a komplement jedinice je nula. Ako je u Bulovoj funkciji prisutno više binarnih operacija onda se Bulov izraz izračunava s desna na levo pri čemu se definiše da logičko množenje ima prioritet u odnosu na logičko sabiranje. Prioritet operaija se može promeniti zagradama. Osnovne teoreme Bulove algebre date su u Tabeli 3.2. Tab. 3.2. Teorema Bulove algebre

a) b) opis: 1. x + 0 = x x⋅1 = x operacije sa kostantnim 2. x +1 = 1 x⋅0 = 0 vrednostima 3. x + x = x x⋅x = x zakon idempotentnosti 4. x + x = 1 x⋅ x = 0 operacije sa

komplementima 5. x = x dvostruka negacija 6. x + y = y + x x⋅y = y⋅x komutativnost 7. x + (y + z) = (x + y) + z =

x + y + z x⋅(y⋅z) = (x⋅y)⋅z asocijativnost

8. x + y⋅z = (x + y)⋅(x + z) x⋅(y + z) = x⋅y + x⋅z distributivnost 9. x + x⋅y = x x⋅(x + y) = x zakoni 10. x + x ⋅y = x + y x⋅( x + y) = x⋅y apsorpcije 11. (x + y) = x y⋅ x y x + y⋅ = De Morganova pravila

invertovanja Zakoni De Morgana i zakon distributivnosti se mogu uopštiti:

( )( )

( )

12a) x x x x x x

12b) x x x x x x13a) x y y y (x y )(x y ) (x y )

13b) x y y y xy xy xy

1 2 n 1 2 n

1 2 n 1 2 n

1 2 n 1 2 n

1 2 n 1 2 n

+ + + = ⋅ ⋅ ⋅

⋅ ⋅ ⋅ = + + +

+ ⋅ ⋅ ⋅ = + + + + +

+ + + = + + +

K K

K K

K K

K K

31

Osnovna logička kola Logičkim operacijama I, ILI i NE (Tab.3.1) odgovaraju elementarna logička kola čije su oznake date u tabeli 3.3. Tab.3.3 Oznake logičkih kola

Kolo Oznaka Bulova funkcija NE (NOT)

I (AND)

ILI (OR)

NI (NAND)

NILI (NOR) EXILI (EXOR) NEXILI (NEXOR)

x

x

x

x

x

x

y

y

y

y

y

f

f

f

f

f

f

fxy

f = x

f = x⋅y

f = x + y

f = xy f = x + y

f = x y⊕ f = x y⊕

Elementarnim kolima su pridodata još tri kola: NI, NILI , EXILI i NEXILI (Tab.3.3. i 3.4.), koja zajedno sa njima čine osnovna kola u digitalnoj elektronici. Ako u Bulovoj funkciji figurišu više binarnih operacija tj. ta funkcija predstavlja kombinaciju osnovnih logičkih kola sa dva ulaza tada je prioritet operacija sledeći: NI, NILI , EXILI. Naravno, prioritet se može promeniti zagradama. Tab.3.4. Definicije NI, NILI, EXILI i NEXILI kola

x y xy x + y x y⊕ x y⊕ 0 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 1 0 0 0 1

Invertor ulaznog signala u neko kolo označava se skraćeno kružićem. Na primer:

xy

z zxy

32

Složena logička kola i Bulove funkcije Složena logička kola su sastavljena iz više osnovnih kola. Svako logičko kolo se može opisati nekom Bulovom funkcijom i obratno, svaka Bulova funkcija se može generisati pomoću nekog logičkog kola. Ilustrovaćemo to sledećim primerima. PRIMER Formirati Bulovu funkciju koja opisuje sledeće logičko kolo sa četiri ulaza: x,y,z i v

xzv

y z

yz

w2

w1

f

Na slici su uvedene oznake međusignala: w1 i w2. Idući od desnog kraja šeme (izlaz iz kola) prema ulazima, zapažamo:

f = w z ww y z , w xzv y

1 2

1 2

+= = +

Smenom izraza za w1 i w2 u izraz za f dobijamo konačno:

f yz z(y xzv) yz zy xzvf yz z(y xv)= + + = + += + +

PRIMER Formirati logičko kolo, koje generiše Bulovu funkciju: f(x,y, z,w) w(xyz y z)= + Kolo formiramo postupno-sleva udesno, poštujući pravila o redosledu izračunavanja složenog Bulovog izraza.

xyz

w

xyz

y z

f w(xyz y z)= +

Sinteza logičkih kola zadate nemene Zadatak sinteze logičkih kola se reašava u četiri etape: 1. Formulisanje tablice istinitosti na osnovu zadate namene kola, 2. Generisanje odgovarajuće Bulove funkcije 3. Uprošćavanje ili minimizacija dobijene Bulove funkcije 4. Realizacija minimizovane Bulove funkcije pomoću raspoloživih osnovnih kola

33

Osnovna kola u računarskim sistemima Kola iz kojih je izgrađen računarski hardver mogu se podeliti u dve klase: 1. Kombinaciona 2. Sekvencijalna Izlazni signal iz kombinacionih kola zavise od trenutne kombinacije vrednosti ulaznih signala. Sva kola, koja smo sreli u dosadašnjem izlaganju pripadaju ovom tipu logičkih kola. Za realizaciju vrlo važne funkcije - memorisanja podataka, neophodna su i kola koja mogu da proizvoljno dugo zadrže dato stanje tj. vrednost svog izlaza (memorisanje bita 0 ili 1) kao i da uz pomoć ulaznih signala promene stanje. (unos novog sadržaja u 1-bitnu memorijsku lokaciju). Takva kola se nazivaju sekvencijalna (ili memorijska) i njihovi izlazi ne zavise samo od trenutnih vrednosti ulaznih signala, već i od prethodnog stanja.

Treće logičko stanje Logičkim kolima u sklopu hardvera se najčešće dodeljuje tzv. treće logičko stanje pri kome su izlazi iz kola “odvezani”, tj. nemaju veze sa ulazima. Drugim rečima, u trećem logičkom stanju, koje se još i zove i stanje velike impedanse, logičko kolo ne obavlja svoju funkciju. Za aktiviranje i deaktiviranje kola služi dodatni ulazni signal - signal dozvole (enable signal). Na primer NI kolo sa mogućnošću trećeg logičkog stanja, dato je na Sl.4.1a.

xf

y

E

f =xy za E = 1n.d. za E = 0

,

Sl.4.1a NI kolo sa tri logička stanja

Kada signal dozvole, E, ima logičku vrednost 1, kolo je aktivno, a pri E=0 ono prelazi u treće logičko stanje, kad signal f nije definisan. Tačnije, f nema veze sa vrednostima ulaza x i y, već uzima onu vrednost napona koji je trenutno na liniji na koju je kratko vezana f linija - plivajuća vrednost. Aktivna vrednost signala dozvole može da bude nulti napon i tada se on označava sa E , što ukazuje na taj uslov (Sl.4.1b).

xf

y f =xy za E = 0n.d. za E = 1

,

E

Sl. 4.1b NI kolo sa tri logička stanja

34

Za kolo sa trećim logičkim stanjem se koristi termin trostabilna ili trostatička kola, a ako se kao signal dozvole koristi taktni signal i sinhronizovana kola. Najjednostavnije trostabilno kolo u računarskoj tehnici je formirač signala dat na Sl.4.2., analogan električnom prekidaču.

x ff =

x za E = 1n.d. za E = 0

,

E

Sl. 4.2. Formirač signala

Dekoder Dekoder je kombinaciono kolo koje služi za dekodiranje ili prepoznavanje stanja na ulazu. Tako se kao elementi hardvera sreću: adresni dekoder, dekoder instrukcija, dekoder binarnih brojeva itd. Najjednostavniji dekoder je dekoder sa jednim izlazom, koji dekodira ili prepoznaje samo jednu od mogućih kombinacija ulaznih signala. “Znak prepoznavanja” posmatrane kombinacije, tj. logička vrednost izlaza koja ukazuje na nju, može da bude 1 ili 0. Na primer, dekoder binarne kombinacije tj. binarnog broja (1011) je I kolo sa 4 ulaza (cifre u binarnom broju), pri čemu je na ulazu sa adresom 2 (ulaz cifre na cifarskom mestu 22) stavljen invertor (sl.4.2.)

3

0

12 y y =

1 za ulaz (1011)0 za sve ostale ulaze

Sl.4.3. Dekoder kombinacije (1011)

Na prisustvo kombinacije (1011) na ulazu ukazuje jedinična vrednost izlaznog signala.

Dekoder 1 od 2n Dekoder 1 od 2n ima n ulaza i 2n izlaza i dekodira sve moguće (ukupno 2n)ulazne binarne kombinacije. Svaka od 2n izlaznih linija jednoznačno odgovara jednoj od mogućih binarnih kombinaicja, tj. dobija logičku vrednost 1 samo pri toj kombinaciji, dok istovremeno svi ostali izlazi imaju nulte vrednosti. Na slici 4.3. dat je blok dijagram dekodera 1 od 23 sa trećim logičkim stanjem.

3

0

12 y y =

1 za ulaz (1011)0 za sve ostale ulaze

Sl. 4.3 Dekoder 1 od 23

35

Brojne oznake ili adrese izlaznih linija predstavljaju dekadne vrednosti odgovarajućih binarnih kombinacija. PRIMER 4.3. Za vrednosti ulaznih signala u dekoder 1 od 23 na Sl. 4.3.:

0 1 2 E 0 1 1 0

kakve su vrednosti na izlaznim linijama? U pitanju je linearna kombinacija 1102 = 610 pa će samo na izlaznoj liniji sa adresom 6 biti jedinična vrednost, dok će na ostalim linijama biti 0. Jasno je da dekoder 1 od 2n u stvari dekodira tj. prevodi u dekadni oblik n-to cifrene binarne brojeve, pri čemu dekadnu vrednost daje brojna oznaka jedinog aktivnog (vrednost 1) izlaza. Važna primenu dekodera 1 od 2n je kao adresnog dekodera kada se na ulaz u dekoder dovode signali sa adresne sabirnice. Kao rezultat dekodiranja adrese biće aktivna samo jedna od izlaznih linija i ona će aktivirati memorijsku lokaciju ili registar radi unosa ili čitanja podataka. PRIMER Pomoću I kola i NE kola formirati dekoder 1 od 22.

3

2

1

0

x1x0

36

Koder Koder je kombinaciono kolo sa suprotnom funkcijom od dekodera 1 od 2n . Tako, njegovi izlazi (ukupno n) daju binarni kod jedinog aktivnog (jedinična vrednost) od ukupno 2n ulaza (Sl.4.4).

E

210

76543210

Sl.4.4 Blok dijagram kodera sa 3 izlaza

PRIMER 4.4. Ako je E = 0 i jedini aktivni ulaz u koder na Sl.4.4. je ulaz sa adresom 6, koje su vrednosti na izlaznim linijama? Izlazni signali daju binarni kod broja 6 pa su vrednosti

Izlaz 2 1 0 Vrednost 1 1 0

Koder prioriteta Kao što smo konstatovali, kod kodera je dovoljno da samo jedna od ulaznih linija bude aktivna. Kod kodera prioriteta više ulaznih linija mogu da imaju jediničnu vrednost a izlazi daju binarni kod najprioritetnijeg od aktivnih ulaza. PRIMER 4.5. Ako prioritet ulaza u dati koder prioriteta raste od 0 prema 7 (najprioritetniji je ulaz 7) odrediti vrednosti izlaza.

210

76543210

0

0

1

0

1

1

0

00

?

37

Pošto je najprioritetniji aktivni ulaz onaj sa adresom 5, izlazi daju binarni kod broja 5:

Izlaz 2 1 0 Vrednost 1 0 1

Multiplekser Multiplekser ili selektor izvorišta podataka je kombinaciono kolo sa 2m ulaznih priključaka, m adresnih ulaznih linija i jednim izlazom. U opštem slučaju, na svaki od ulaznih priključaka (ili portova) kao i na izlazni port može da se veže po n linija i takav multiplekser se zove multiplekser MUX 2mxn (Sl.4.5)

nn n n

n

mMUX 2mxn

2m-10 1 2.......

Sl.4.5. Multiplekser 2mxn

Funkcija multipleksera je da se pomoću m adresnih ulaza bira koji od 2m ulaza će biti povezan sa izlazom. Blok dijagram multipleksera MUX 23x1 sa tri logička stanja dat je na Sl.4.6.

Sl.4.6. MUX 23x1

I7I6I5I4I3I2I1I0

E S2 S1 S0

Y

I - ulazne linije S - adresne (selekcione) linije Y - izlazne linije E - ulaz sa signal dozvole

38

PRIMER 4.6. Logičke vrednosti ulaza u MUX 23x1 su

Ulaz 0 1 2 3 4 5 6 7 Vrednosti 0 1 1 1 0 0 0 1

Za svaku od kombinacija vrednosti dozvole i adresnih ulaza odrediti vrednosti izlaza

E S0 S1 S2 0 0 0 0 0 1 1 0 0 0 1 1 0 1 0 0 1 0 1 1

Vrednost (podatak) na onom od ulaza, čija adresa je postavljena na adresnim ulazima, pojaviće se na izlazu, ako je multiplekser aktivan ( E = 0). Tako je rešenje:

E S0 S1 S2 Y 0 0 0 0 0 0 1 1 0 1 0 0 1 1 0 0 1 0 0 1 1 0 1 1 n.d.

Na slici 4.7. data je realizacija multipleksera MUX 2mx1 pomoću dekodera 1 od 2m i 2m formirača signala:

izlaz

0

012

2m-22m-1

122m-22m-1

m

adresniulazi

DEKODER

Sl.4.7. Realizacija multipleksera pomoću dekodera

39

Demultiplekser Demultiplekser predstavlja selektor odredišta podataka jer omogućuje upućivanje podataka sa ulaznog porta (linije) na odabrani izlazni port uz pomoć adresnih ulaza (Sl.4.8.)

nn n n

n

mDEMUX nx2m

2m-10 1 2

Sl.4.8. Šema demultiplekseara DEMUX nx2m Kao i multiplekser, demultiplekser se može lako realizovati pomoću dekodera 1 od 2n (Sl.4.9.)

izlazi0

012

2m-22m-1

122m-1 2m-2

m

adresniulazi

DEKODER

ulaz

Sl.4.9. Realizacija pomoću dekodera Na Sl.4.10. Dat je blok dijagram demultipleksera sa 8 izlaza (DEMUX 1x23)

40

Sl. 4.10 DEMUX 1x23

Binarni sabirač Ovo kombinaciono kolo realizuje sabiranje dva cela binarna broja u ALU.

Sl. 4.11. Binarni sabirač

Binarni sabirač se dobija jednostavno, vezivanjem n potpunih sabirača.

S

an-2 bn-2cn-2

sn-2

S

a0 b0 c0

s0

S

a1 b1 c1

s1

S

a2 b2 c2

s2

S

cn sn

an-1 bn-1cn-1

........

c3

Sl.4.12. Šema binarnog sabirača

I7I6I5I4I3I2I1I0

E S2 S1 S0

Y

S

ai bi ci

ci+1 si

I - izlazne linije S - adresne (selekcione) linije Y - uazna linija E - ulaz sa signal dozvole

ci - prethodni prenos ci+1 - prenos pri sabiranju cifara ai i bi si - cifra zbira

41

Kao što smo već rekli, binarni sabirač je samo jedno od više kola u sklopu ALU. Pored sabirača,

tu su i kolo za komplementiranje, kolo za različite logičke operacije sa podacima, a kod složenih ALU i kola za hardversko izvođenje oduzimanja, množenja i deljenja. Na linije ai, i=0,n-1, cifre prvog operanda A, koji se nalazi u akumulatoru centralne procesne jedinice (mikroprocesor) dolaze internom sabirnicom. Signali bi, koji predstavljaju cifre drugog operanda dolaze sabirnicom podataka iz memorijske jedinice mikroračunara, a onda internom sabirnicom mikroprocesora, ili iz nekog registra za privremeno pamćenje podataka u okviru mikroprocesora. Signali si linijama interne sabirnice idu u akumulator, pa rezultat S zamenjuje u akumulatoru prethodno smešten prvi operand. Preostaje da objasnimo odakle dolazi signal početnog prenosa c0 i gde ide konačan prenos cn. Prenos (carry) kao vrlo važna informacija se čuva u mikroprocesoru u posebnom registru - registar uslova ili status registar. Tako konačan prenos cn ide u registar uslova (kao bit ili zastavica C). Kakav smisao kod sabiranja ima početni prenos c0?. To će biti jasno, ako se podsetimo da se u mikroračunaru celi brojevi registruju kao dvobajtni (16-cifreni). Tako se u 8 bitnom mikroprocesoru sabiranje dva broja vrši u dva koraka: u prvom se, bez početnog prenosa, sabiraju niži bajtovi, a u drugom koraku se sabiraju viši bajtovi gde je početni prenos, c0 jednak konačnom prenosu cn prethodnog sabiranja iz registra stanja.

Bistabilna kola (flip-flop) Bistabilna kola služe za memorisanje bita. To su sekvencijalna kola koja mogu da budu u dva stabilna stanja, 0 ili 1, otuda naziv bistabilna kola ili bistabili. Stabilno stanje (memorisani bit) se može održavati proizvoljno dugo, a može se delovanjem ulaznih signala promeniti (unos novog sadržaja). Bistabil ima bar jednu izlaznu liniju na kojoj se dobija njegovo stanje (memorisani bit). Ako je na izlaznoj liniji jedinica kažemo da je bistabil setovan, a ako je nula kažemo da je resetovan. Bistabil ima bar jednu ulaznu liniju i vrednost signala na ulazu, zajedno sa njegovim satnjem (signal na izlaznoj liniji), određuje njegovo novo stanje, tj. novu vrednost izlaza. Bistabili se sreću i pod nazivom flip-flopovi.

R-S flip-flop Blok dijagram R-S flip-flopa je dat na Sl.4.13. a njegovu funkciju objašnjava tablica istinitosti (tab.4.1.)

Q - izlaz na kome se dobija stanje Q - drugi izlaz, čija vrednost je uvek invertovano stanje S - ulaz za setovanje (unos jedinice) R - ulaz za resetovanje (unos nule)

Sl. 4.13. Blok dijagram R-S flip flopa

Q

QS

R

42

Tab. 4.1. Tablica istinitosti R-S flip flopa

R S Q 0 0 Q* 0 1 1 1 0 0 1 1 n.d.

Q* - postojeće stanje n.d. - ova kombinacija nije dozvoljena Na Sl.4.14. data je uprošćena realizacija R-S flip flopa pomoću NI odnosno NILI kola

S

R

Q

Q

S

R Q

Q

a) b)

Sl.4.14. Realizacija R-S flip-flopa pomoću a) NI i b) NILI kola Pretpostavimo da su trenutne vrednosti signala Q i Q u šemi na Sl.4.14.: Q = 0, Q = 1. Sve dok su R i S jednaki nuli stanje Q se ne menja (Tab 4.1.). Zaista, na ulazu u gornje NI kolo su dve jedinice što daju što daje Q = 0, dok u donje NI kolo ulaze nula (Q) i jedinica ( R ) što daje Q = 1. Ako želimo da promenimo stanje tj. da u bistabil unesemo bit 1 (setovanje) treba na ulazu primeniti: S = 1, R = 0 (Tab.4.1). U gornje NI kolo sada ulaze jedna jedinica ( Q ) i jedna nula ( S ) što daje novu vrednost za Q, Q = 1. Ona zajedno sa R = 1 u donjem NI kolu daje Q = 0. Ta nova vrednost za Q ne menja izlaz iz gornjeg NI kola (dve nule daju opet 1). Slično razmatranje važi i za R-S flip-flop realizovan sa 2 NILI kola. U praksi se češće koriste sinhronizovani R-S bistabili za dodatnim priključkom za signal dozvole C i postavljanje Q na 1 (SET) ili na 0 (CLR)(Sl.4.15.)

C - ulaz za signal dozvole, po prvilu taktni signal (clocl signal SET - postavljanje Q na 1 bez obzira na ostale signale (setovanje) CLR - postavljanje Q na 0 bez obzira na ostale signale (resetovanje)

Sl .4.15. Sinhronizovani R-S flip-flop

Q

QSET

CLR

S

R

C

43

C R S Q 1 0 0 Q* 1 0 1 1 1 1 0 0 0 x x Q*

x - bilo koja vrednost (0 ili 1) Q* - postojeće stanje Razlika u funkciji asinhronog i sinhronizovanog R-S bistabila jasna je sa vremenskog dijagrama na slici 4.16.

Asinhroni R-S Sinhronizovani R-S

Sl.4.16. Vremenski dijagram asinhronog i sinhronizovanog R-S flip-flopa

D flip-flop D flip-flop (Sl.4.17.) je sinhronizovan bistabil sa jednim ulazom D. Vrednost sa ulaza prelazi na izlaz Q, sinhronizovano sa taktnim signalom (Tab.4.2. i Sl.4.18.)

Tab.4.2 Tablica istinitosti D flip-flopa

C D Q 1 0 0 1 1 1 0 x Q*

x - bilo koja vrednost (0 ili 1)

Q* - postojeće stanje Sl.4.17. D flip-flop

10C

S

R

Q

Q

Q

QSET

CLR

D

C

44

10C

D

Q

Sl. 4.18. Vremenski dijagram D - flip flopa

D flip flop se može jednostavno formirati od R-S flip flopa (Sl.4.19)

Q

QSET

CLR

S

R

C

D

Sl.4.19. Realizacija D flip flopa pomoću R-S flip flopa

Registri Osnovna mamena registra je privremeno pamćenje nekog višebitnog podatka (kod 8-bitnog procesora, njegov kapacitet je 8 bitova). U tom svojstvu, sem u memoriji (memorijski registri) oni se sreću u međusklopovima, preko kojih su periferne ulazno-izlazne jedinice vezane za sabirnicu mikroračunara, i tu imaju funkciju međumemorisanja ili baferovanja (baferni registri) podataka na putu od ulazne jedinice do mikroprocesora ili od mikroprocesora do ulazno-izlazne jedinice. Registri koji imaju samo opisani način čuvanja (registrovanja) podataka zovu se statički ili stacionarni registri. Složeniji registri od statičkih su oni koji omogućavaju različite manipulacije sa registrovanim podatkom i to su: - pomerački (šift) registri - ciklični ili kružni registri - brojački registri ili kaunteri (counter)

Statički registri S obzirom da čuvanje 1-bita omogućuju bistabili, jasno je da se n-bitni registar dobija paralelnim vezivanjem n bistabila. Šema jednog 4-bitnog registra data je na slici 4.20.

45

Q

QSET

CLR

D

C

Q

QSET

CLR

D

C

Q

QSET

CLR

D

C

Q

QSET

CLR

D

C

R/W

Φ

S

E

Sa sabirnice podataka

23

23

22 21 20

22 21 20

Na sabirnicu podataka

R/W =

(write) pisanje za 0(read) itanjec za 1 (

Φ - taktni signal iz generatora taktnog signala S - signal izbora registra, iz adresnog dekodera

Sl.4.20. Šema 4-bitnog statičkog registra

Da bi se u neki registar uneo (write) podatak sa sabirnice podataka ili iz njega pročitao (read) podatak, tj. postavio na sabirnicu podataka neophodno je da budu ispunjena 2 uslova.

- odabran je posmatrani registar, tj. njegova adresa je postavljena (od strane mikroprocesora) na adresnu sabirnicu,

- vrednost taktnog signala Φ je jednak 1 Ako je mikroprocesor odabrao dati registar, signal S koji ide iz adresnog dekodera imaće vrednost 1 (vidi poglavlje 4.2.1), inače njegova vrednost je 0. Ako su ispunjena oba opisana uslova, tj. E = Φ⋅S = 1 (I kolo na levom kraju šeme), zavisno od vrednosti R/W signala biće realizovano čitanje ili upisivanje.

Ako R/W signal ima vrednost 1, izlaz iz I kola u koji se uvode R/W i E = Φ⋅S signal biće aktivan i otvoriće formirače signala pa će se bitovi (Q signali) iz pojedinih D bistabila naći na sabirnici podataka (operacija čitanja).

Ako je R/W = 0 (upisivanje) izlaz iz I kola u koji se uvode R / W i E signal biće aktivan i on će aktivirati D bistabile, pa će u njih biti uneti bitovi sa sabirnice podataka.

Na slici 4.21. dat je blok dijagram 4-bitnog statičkog registra, kome je pridodat i priključak za resetovanje ili brisanje registra (postavljanje svih izlaza Qi na nulu.

46

D3

D2

D1

D0

R/W

E

Q3

Q2

Q1

Q0

RES

Sl.4.21. Blok dijagram 4-bitnog statičkog registra sa mogućnošću resetovanja

PITANJA Dekoder, Koder Multiplekser, Demultiplekser Potpuni sabirač, Binarni sabirač Flip-Flopovi, RS, D Registri

47

MIKRORAČUNAR Mikroračunar je sastavljen od četiri osnovna bloka (Sl.1) - to zovemo hardver: -mikroprocesora -memorije -ulaznog međusklopa -izlaznog međusklopa Programska podrška (to zovemo softver) je “vezivna materija” koja ta četiri bloka osmišljava i drži ih zajedno. Mikroprocesor sjedinjuje u sebi sposobnost računskog dela i dela koji je sposoban da na temelju dobijenih rezultata donosi odluke-izabere jedan od alternativnih smerova daljnjeg delovanje ili akcije. U memoriji se smeštaju podaci u binarnom obliku, međurezultati i rezultati. U memoriji su takođe smešteni programi koji određuju mikroprocesoru koje operacije mora izvršiti. Preko ulaznog međusklopa ostvaruje se put za prenos binarnih podataka (u paralelnom ili serijskom obliku) od ulaznih jedinica prema mikroprocesoru ili memoriji. Izlazni međusklop omogućava prenos binarnih podataka od mikroprocesora prema izlaznim jedinicama. Sastavni blokovi (mikroprocesor, ulazno-izlazni međusklopovi, memorija) su preko spoljne sabirnice povezani i čine mikroračunar (Sl.1.). Spoljna sabirnica je skup linija preko kojih se saobraća između sastavnih delova mikroračunara.

Sl.1. - Sklop mikroračunara kao crna kutija

48

Sl.2. prikazuje strukturu mikroračunara zasnovanog na porodici Motorola M6800,gde su: - MPU: mikroprocesor, - RAM, ROM: memorija sa direktnim pristupom, ispisna memorija, - START UP, CLOCK: pomoćni sklopovi, - PIA: paralelni U/I međusklop, - ACIA; serijski međusklop. Spoljna sabirnica se sastoji od upravljačke (CONTROL BUS) i adresne (ADRESS BUS) sabirnice i sabirnice podataka (DATA BUS).

Sl.2. - Struktura mikroračunara zasnovanog na mikroprocesorskoj porodici M6800 Sl.3 prikazuje građu mikroračunara na osnovi mikroprocesora Intel 8080, a sastoji se od memorije RAM, ROM, U/I međusklopa i specijalne jedinice nazvane upravljački sklop (system controller), generatora takta, kao pomoćnog sklopa. Spoljna sabirnica se sastoji od adresne sabirnice, sabirnice podataka i upravljačke sabirnice.

49

Sl.3 - Struktura mikroračunara na bazi mikroprocesora Intel 8080

MODEL MIKROPROCESORA

Mikroprocesor je osnovni sastavni blok mikroračunara. On je centralno procesorska jedinica realizovana u tehnologiji LSI. Sastoji se od sklopova koji dekodiraju instrukcije pribavljene iz memorije i u skladu s tim generšu sekvence upravljačkih signala (koji određuju niz prenosa preko interne sabirnice, prenose kroz aritmetičko-logičku jedinicu, pobuđivanje internih sklopova i sl.), potrebnih za izvođenje instrukcije. To je jedan od osnovnih zadataka upravljačke jedinice. Mikroprocesorski čip sadrži aritmetičko-logičku jedinicu (ALU). U njoj se izvode aritmetičke i logičke operacije na binarnim podacima. Registri za privremeno skladištenje i rukovanje podacima također su sastavni deo procesora LSI. Budući da većina standardnih mikroprocesora ima reč dužine osam bita (bajt), dat je opis njegovog rada na jednostavnom modelu 8-bitnog mikroprocesora. Dužina reči od 8 bita onemogućava da se instrukcijska reč razdeli na klasičan način kao kod računara: na polje operacijskog koda, na polje načina adresiranja i na adresno polje (Sl.4). Samo polje operacijskog koda zauzelo bi veći deo 8-bitne reči. Na primer, 8-bitni mikroprocesor M-6800 ima osnovni skup od 72 instrukcije, što zahteva operacijski kod od 7 bita (27 > 72 > 26), ako privremeno zanemarimo 197 različitih operacijskih kodova u zavisnosti od načina adresiranja.

Sl.4 - Organizacija instrukcijske reči

50

Adresno polje bilo bi svedeno, u najboljem slučaju na jedan bit. To znači da bi bilo moguće direktno adresirati samo dve memorijske lokacije- što je očito premalo. Problem dužine reči mora biti kod mikroprocesora rešen pribavljanjem više 8-bitnih reči za konstrukciju jedne instrukcijske reči. Zbog čega reč mikroprocesora nije duža (npr. 24 ili 32 bita)? Većina razloga je u tehnološkim ograničenjima, na primer u broju izvoda na integrisanom kućištu DIP (sa izvodima u dve linije), problemu gustoće integracije komponenti, postojećoj opremi za testiranje i ispitivanje čipova u fazi proizvodnje i sl..

Jednostavni model na kojem će biti opisan princip rada prikazan je na Sl.5. Model mikroprocesora ima akumulator A koji koji se upotrebljava za privremeno skladištenje jednog od operanada. Akumulator učestvuje pri izvršavanju aritmetičkih i logičkih opracija na podacima, te ima i središnju ulogu u prenosu podataka unutar mikroračunara ili sklopa mikroračunara. Programsko brojilo (programski brojač) - registar PC - sadrži adresu sledećeg bajta koji će biti pribavljen u narednom ciklusu. Operacijski kod instrukcije upisuje se u instrukcijski registar - registar IR. U 16-bitnom brojilu podataka (registar podataka) registru DC, sadržana je adresa memorijske lokacije u kojoj se nalazi operand. Izvođenje svake instrukcije deli se na: - fazu pribavljanja instrukcije -PRIBAVI (fetch), - fazu izvršavanje instrukcije -IZVRŠI (execute). Mikroprocesor za vreme faze PRIBAVI postavlja sadržaj programskog brojila preko interne sabirnice na spoljnu adresnu sabirnicu. Ujedno šalje i odgovarajuće upravljačke signale (signal ČITAJ) na spoljnu upravljačku sabirnicu (u našem slučaju pojednostavljeni model imće samo dva upravljačka signala: ČITAJ i PIŠI). Memorijski sklop dekodira postavljenu adresu (prisutnu na adresnoj sabirnici) u cilju pristupa do odgovarajuće memorijske reči. Za nekoliko stotina ns (npr. 500 ns) sadržaj specificirane memorijske lokacije pojaviće se na spoljnoj sabirnici podataka. Taj se sadržaj skladišti u instrukcijskom registru IR, i to je operacijski kod instrukcije. Za vreme faze PRIBAVI mikroprocesor upotrebljava svoju internu logiku i povećava sadržaj programskog brojila.

Sl.5 - Pojednostavljeni model mikroprocesora

51

U fazi IZVRŠI upravljačka jedinica, u skladu s operacijskim kodom koji je skladišten u instrukcijskom registru, stvara niz upravljačkih signala. Rezultat tog niza signala su odgovarajući prenosi podataka, odnosno operacije (npr. aktiviranje pojedinih sklopova unutar aritmetičko-logičke jedinice, izvršavanje (izvođenja) zadate instrukcije.) Operacije unutar mikroprocesora (često se nazivaju mikrooperacijama) sinhronizovane su generatorom takta. Perioda generatora takta može biti, u zavisnosti od tipa mikroprocesora, od 100 ns do nekoliko µs. Signali generatora takta mogu se sastojati od jednog ili više signala (to je onda višefazni generator takta, npr. mikroprocesor M6800 ima signale φ1 i φ2). Za pojednostavnjeni model izabran je jednofazni generator takta (Sl.6). φ je obično oznaka za signal generatora takta.

Sl.6 - Jednofazni signal takta (vremenskog vođenja) Φ pojednostavljenog modela mikroprocesora Na primeru jednostavnog programa sa Sl.7 prikazani su vremenski dijagram stanja na spoljnim sabirnicama i promene u sadržajima registara modela u cilju objašnjenja rada mikroprocesora.

Sl.7 - Primer programa

Napomena: Adrese i sadržaji memorijski lokacija na Sl.7 prikazani u heksadekadnom sistemu. Početni uslov (sadržaj registara) prikazuje Sl.8. Na slici su označeni samo oni registri koji učestvuju u izvođenju programa. U programskom brojilu postavljena je adresa prve instrukcije.

52

Sl.8 - Početni uslovi

Sl.9 - Stanje nakon faze PRIBAVI: Prvi ciklus prve instrukcije

Sl.9 prikazuje stanje nakon faze PRIBAVI: u instrukcijskom registru skladišten je operacijski kod instrucije, sadržaj programskog brojila povećan je za 1. Sadržaj instrukcijskog registra 10110110 (B6-heksadekadno) dekodiran je kao: napuni akumulator A sadržajem memorijske lokacije koje je adresa sadržana u sledeća dva bajta. Mikroprocesor pribavlja sledeći bajt postavljanjem sadržaja programskog brojila na adresnu sabirnicu i generiranjem upravljačkog signala ČITAJ. Pribavljeni bajt se smeštava u brojilo podataka. Sl.10 prikazuje stanje nakon pribavljanja značajnijeg bajta adrese operanda (02..); programsko je brojilo uvećano za 1. Mikroprocesor pribavlja treći bajt instrukcijske reči-manje značajni bajt adrese

53

operanda (..01) i smešta ga u brojilo podataka; programsko brojilo uvećava se za 1 i pokazuje na sledeću instrukciju 9B (Sl.7).

Sl.10. Stanje nakon pribavljanja značajnijeg bajta adrese operanda: Drugi ciklus prve instrukcije

Sl.11 prikazuje stanje nakon pribavljanja manje značajnog bajta adrese operanda.

Sl 11. Stanje nakon pribavljanja manje značajnog bajta adrese operanda: Treći ciklus prve instrukcije

Ako se na trenutak pretpostavi da instrukcijski registar IR (0-7) i brojilo podataka DC (0-15) čine jedan 24-bitni registar, može se instrukcijski registar smatrati poljem operacijskog koda, a brojilo podataka adresnim poljem (Sl.12).

54

Sl.12 - Instrukcijska reč sastavljena iz tri bajta Postupku pribavljanja kompletne instrukcijske reči mikroprocesora su bila tri ciklusa (3x1 bajt), dok bi računar sa dužinom reči od 24 bita taj isti postupak obavio u jednom ciklusu. Mikroprocesor pribavlja operand postavljanjem sadržaja brojila podataka na adresnu sabirnicu i generisanjem upravljačkog signala ČITAJ. Sl.13 prikazuje konačni rezultat izvođenja prve instrukcije: akumulator A napunjen je sadržajem memorijske lokacije 0201. Sadržaj programskog brojila nije povećan, jer je pribavljen operand a ne instrukcija - mikroprocesor je bio u fazi IZVRŠI.

Sl.14 Stanje nakon izvođenja prve instrukcije: Četvrti ciklus prve instrukcije Sl.15. prikazuje pojednostavnjeni vremenski dijagram izvođenja prve instrukcije. Instrukcija se izvodi u četiri ciklusa (periode) generatora takta φ. Nastavlja se dalje izvođenje programa. Sl.15 prikazuje stanje nakon pribavljanja prvog bajta druge insrukcijske reči. U instrukcijskom registru smešten je operacijski kod druge instrukcije. Sadržaj programskog brojila povećan je za 1. Instrukcijski kod 9B, uz specificiranje operacije (pribrajanja operanda sadržaju akumulatora A), određuje i način adresiranja - sledeći bajt je manje značajan bajt adrese operanda.

55

Sl.15 - Pojednostavljeni vremenski dijagram izvođenja prve instrukcije

Sl.16 - Stanje nakon pribavljanja prvog bajta druge instrukcije: Prvi ciklus druge instrukcije

Sl.17 prikazuje stanje nakon pribavljanja drugog bajta instrukcijske reči. Programsko brojilo povećano je za 1, a u brojilo podataka smeštava se adresa operanda. Sl.18 prikazuje rezultat konačnog izvođenja instrukcije-sadržaju akumulatora A pribrojen je sadržaj sa memorijske lokacije 00FF (1A). Programsko brojilo nije povećano za 1 - mikroprocesor je bio u fazi IZVRŠI.

56

Sl. 17 - Stanje nakon pribavljanja drugog bajta instrukcijske reči: Drugi ciklus druge instrukcije

Sl.18 - Prikaz konačnog izvođenja instrukcije

Sl.19 prikazuje vremenski dijagram izvođenja druge instrukcije. Tabela 1 prikazuje stanje na sabirnici podataka i adresnoj sabirnici za model mikroprocesora prilikom izvođenja zadatog programa sa Sl.7. U mnemoničkom kodu program bi imao (za mikroprocesor M6800) sledeći oblik: LDAA $0201 ADDA $FF (Napomena: $ je oznaka za heksadekadni broj )

57

Sl.19 - Vremenski dijagram izvođenja druge instrukcije

Tabela 1 Stanje na sabirnici podataka i adresnoj sabirnici

Instrukcija Broj ciklusa Ciklus Signal (Čitaj)

Adresne sabirnice Sabirnice podataka

1 1 Adresa instrukcije Operacijski kod

B6 4 2 1 Adresa instrukcije +1 Adresa značajnijeg bajta operanda

3 1 Adresa instrukcije +2 Adresa manje značajnog bajta operanda

4 1 Adresa operanda Operand

1 1 Adresa instrukcije Operacijski kod

9B 3 2 1 Adresa instrukcije +1 Adresa operanda

3 1 Adresa operanda Operand

Broj ciklusa potreban mikroprocesoru M6800 za izvođenje prve instrukcije je 4, a druge 3 ciklusa. Vidimo da se razmatranja na jednostavnom modelu u ovom primeru podudaraju s izvođenjem u stvarnim mikroprocesorima.

PITANJA Osnovni delovi mikroračunara Vrste sabirnica Model mikroprocesora - registri i osnovni delovi Centralna memorija (Instrukcije, podaci - program) Faze u kojima se mikroprocesor nalazi (pribavi, izvrši) Faza pribavi Faza izvrši

58

STANDARDNA ARHITEKTURA MIKROPROCESORA

UVOD Svaki sastavni deo, a time i celi mikroprocesor, najbolje je opisan skupom registara i njihovom funkcijom, putevima između registara, nizom operacija koje se izvode na binarnim informacijama skladištenim u registrima, te upravljačkim funkcijama koje rukovode tim operacijama. Skup registara, putevi između njih, organizacija i način delovanje upravljačke jedinice (a time i delovanje mikroprocesora kao celine) određuje arhitekturu mikroprocesora. Većina današnjih mikroprocesora istog je tipa arhitekture. Elementi te standardne arhitekture su sledeći: - upravljačka jedinica, - aritmetičko-logička jedinica, - jedan ili više akumulatora, - registri opšte namene ili skup registara opšte namene, - adresni registri, - interne sabirnice.

UPRAVLJAČKA JEDINICA Upravljačka jedinica generiše upravljačke signale i koordinira sve aktivnosti unutar mikroprocesora. Ona pribavlja, dekodira i omogućuje izvođenje instrukcije. Upravljačka jedinica takođe komunicira s ostalim komponentama mikroračunara preko ulazno-izlaznih linija - upravljačke sabirnice. Za vreme faze PRIBAVI upravljačka jedinica pribavlja instrukciju i dekodira operacijski kod. U skladu s interpretacijom operacijskog koda, menja stanje mikroprocesora i šalje upravljačke signale drugim elementima mikroprocesora i mikroračunara. Niz takvih upravljačkih signala rukovodi izvršavanjem instrukcije pribavljene iz memorije. Element iz niza upravljačkih signala naziva se mikroinstrukcija. Mikroinstrukcija je upravljačka reč koja je uzrok jedne ili više istovremenih operacija - mikrooperacija. Primeri takvih mikrooperacija su prenosi između registara, posmak sadržaja registara i slično. Instrukcija pribavljena iz memorije mikroračunara (makrinstrukcija) obično uslovljava izvođenje čitavog niza mikroinstrukcija.

ARITMETIČKO - LOGIČKA JEDINICA I AKUMULATOR Aritmetičko-logička jedinica je višefunkcijski digitalni kombinacioni sklop. Ona izvršava osnovne aritmetičke i logičke operacije. U svom sastavu ima sklopove za komplementiranje, posmak, sabiranje, inkrementiranje (povećanje za 1), dekrementiranje (smanjenje za 1) i prenos. Aritmetičko-logičkoj jedinici pridružen je registar uslova sa zastavicama (bistabilima dojave stanja). Mikroprocesor automatski postavlja ili briše odgovarajuće zastavice - dojavne bistabile (C,V,N,Z,H,P) u registru uslova za vreme izvođenja instrukcije, u zavisnosti od rezultata aritmetičko-logičke operacije. Zastavica C, dojavni bit prenosa, element je registra uslova i ima dve funkcije: - pohranjuje bit kod aritmetičkog prenosa (prenos sa najznačajnijeg mesta). Na primer, pri sabiranju dva broa (Sl.23) rezultat generše prenos u 9-ti bit. Deveti bit je skladišten u zastavici C registra uslova i može se ispitivati, - zastavica C upotrebljava se kao bit pri operacijama posmaka. Sl.4.5 daje primer kružnog pomaka i pomaka ulevo.

59

1 1 1 1 1 1 0 0 +

1 0 0 0 0 0 0 0

1 0 1 1 1 1 1 0 0 C - zastavica

Primer sabiranja sa prenosom

b7 b0 b7 b0 c c

a) b) Primer instrukcija: a) kružnog pomaka, b) pomaka ulevo

Zastavica V (Overflow) je bit preteka (preliva). U matematičkom smislu predstavlja grešku u bitu predznaka u aritmetici dvojnog komplementa: V = Cs ⊕ Cp gde su Cp prenos u bit predznaka (najznačajniji bit b7), a Cs prenos iz bita predznaka. Drugim rečima, aritmetički pretek (zastavica postavljena V=1) pokazuje da je prilikom aritmetičke operacije rezultat prekoračio granicu ±127, ako je reč mikroprocesora (akumulatora) dužine 8 bita. Zastavica N upotrebljava se za indikaciju negativnog rezultata aritmetičke operacije (najznačajniji bit reči b7=1) Zastavica Z je dojavni bit nule i postavlja se (Z=1) kada je rezultat aritmetičke operacije nula. Upotrebljava se i za logičke operacije, npr. komparacije, gde se,ukoliko su dva operanda jednaka, postavlja zastavica. Operacija komparacije vrši se logičkom operacijom “Isključivo ILI” (XOR,EOR), (Sl.25). Z bit pre

Z bit posle

Operacija EORA i Z-bit u registru uslova Sl.20 prikazuje interni sklop za postavljanje zastavica C, V, N, Z. Zastavica H je dojavni bit polovičnog prenosa i upotrebljava se u BCD (Binary-Coded Decimal) operacijama, budući da se u kodu BCD upotrebljavaju četiri bita za prikaz decimalnog broja. Prilikom izvođenja aritmetičkih operacija može nastati prenos iz bita b3 u b4 (polovični prenos). Taj prenos u BCD aritmetici mora biti otkriven (detektovan)-(H=1 ako se prenos dogodio) da bi se omogućilo pravilno izvođenje aritmetičkih operacija.

0 0 0 1 1 0 1 0 1 Akumulator A

Z EORA

0 0 1 1 0 1 0 1Sadržaj

memorijske lokacije M

1 0 0 0 0 0 0 0 0 Akumulator A

Z

60

Sl. 20 - Sklop za postavljanje zastavica u registru uslova Zastavica P je bit parnosti i sadržana je u registru uslova kod mikroprocesora Intel 8080 za ispitivanje korektnog prenosa podataka. Većina mikroprocesora nema bit P u registru uslova, budući da je funkcija generisanja i ispitivanje parnosti prenesena u nadležnost programibilne jedinice U/I. Bit prekida - zastavica I obično se ne upotrebljava u aritmetičkim operacijama. Bit I se postavlja (I=1) u slučaju prekida. Zastavica I naziva se kod mikroprocesora M6800 prekidna maska, jer se u slučaju da je I=1 i ako se pojavi zahtev za prekidom nižeg prioriteta (IRQ = 0), prekid se neće dogoditi. Na Sl.21 prikazan je registar uslova (CCR-- Condition Code Register) za M6800 i uticaj nekih instrukcija na pojedine zastavice.

Instrukcije 1 1 H I N Z V C STAA • • ↔ ↔ R • EORA • • ↔ ↔ R • ADDA ↔ • ↔ ↔ ↔ ↔ CLRA • • R S R R COMA • • ↔ ↔ R S PSHA • • • • • • LDAA • • ↔ ↔ R •

• ne utiče; S postavlja; R briše; ↔ postavlja ili briše u zavisnosti od rezultata

Sl.21 - Registar uslova CCR i uticaj nekih instrukcija na pojedine zastavice (M6800)

Neki mikroprocesori imaju jedan ili više registara koji su po funkciji izdvojeni od ostalih, a nazivaju se akumulatori. Pored toga što se upotrebljavaju za privremeno skladištenje jednog operanda, oni učestvuju pri izvođenju aritmetičkih i logičkih operacija na podacima. Rezultati aritmetičkih i logičkih operacija izvedenih u aritmetičko-logičkoj jedinici skladište se u akumulatoru. Obično se akumulator postavlja na jedan od ULAZA u aritmetičko-logičku jedinicu i u kombinaciji sa privremenim registrima razdvaja ulaz aritmetičko-logičke jedinice od izlaza. Razdvajanje je potrebno kod mikroprocesora standardne arhitekture sa jednom internom sabirnicom, zbog uticaja izlaza aritmetičko-logičke jedinice na ulaz (critical race).

61

REGISTRI OPŠTE NAMENE Registri opšte namene omogućavaju aritmetičko-logičkoj jedinici rukovanje podacima velikom brzinom. Registri u mikroprocesoru mogu biti organizovani u maloj memorijskoj jedinici. Tako organizovani nazivaju se skup registara za privremeno skladištenje (scratchoad).

ADRESNI REGISTRI Adresni registri su 16-bitni registri za skladištenje adresa. Nazivaju se i brojila podataka (data-counters ili pointers). Njihova bitna karakteristika je da su spojeni na adresnu sabirnicu, te da im sadržaj preko adresnog međuregistra i spoljne adresne sabirnice određuje adresu memorijske reči. Adresni registri su: - programsko brojilo, pomoćno programsko brojilo (program counter PC) - brojilo podataka - registar podataka (data counter DC) - pokazivač steka (stack pointer SP), - indeksni registar. Stek LIFO (Last-In-First-Out) memorijska je struktura koja uključuje hronološku komponentu-najstariji je podatak na dnu stoga, dok je najmlađi na vrhu (Sl.22).

Sl.22 - LIFO struktura

Jedan od načina realizacije steka je programski (softverski stek). On se sastoji od određenog broja memorijskih lokacija u memoriji, tako da je njegova” dubina” neograničena - zavisi samo od veličine memorije. Programer sam bira osnovu stoga, koja je određena početnim sadržajem pokazivača steka. Sklopovski (hardverski) realizovani stek sastoji se od n internih registara izvedenih u čipu. Prednost im je velika brzina, međutim, nedostatak je ograničena dubina stoga. Hardverski realizovan stek uslovljava logičke sklopove za detekciju popunjenosti steka. Stekom se upravlja samo sa dve instrukcije: - položi podatak u stek (PUSH), - uzmi podatak iz steka (PULL) Instrukcija PUSH “polaže” podatak na vrh stoga. Instrukcija PULL “uzima” podatak sa vrha stoga (Sl.23).

62

Sl.23 - Primer izvođenja: a) PUSH instrukcije, b) PULL instrukcije

Pokazivač steka (SP) je 16-bitni registar koji sadrži adresu steka. Svaki memorijski pristup steku (polaganje ili uzimanje podataka) inkrementira ili dekrementira (povećava ili smanjuje za 1) sadržaj pokazivača steka. Stek služi za privremeno skladištenje podataka kao što su: - tekući status (stanje) mikroprocesora, - povratna adresa, - podaci. Upotrebljava se kod sledećih funkcija: - operacija prilikom prekida, - operacija sa potprogramima, - skladištenje podataka. Indeksni registar se upotrebljava pri indeksnom načinu adresiranja, pri kojem se adresa u instrukcijskoj reči i sadržaj indeksnog registra sabiraju u cilju određivanje stvarne adrese operanda. Neki mikroprocesori imaju indeksne registre (npr. Motorola M6800), dok se drugi koriste registrima opšte namene kao indeksnim (npr. Intel 8080).

MODEL MIKROPROCESORA M6800 Mikroprocesor M6800 je 8-bitni paralelni procesor na jednom čipu, smešten u kućištu sa 40 izvoda u dve linije (40-pin dual-in-line package). Mikroprocesor ima stek promenljive dužine, sedam načina adresiranja, skup od sedamdeset i dve instrukcije, vektorski prekid, šest programeru dostupnih internih registara, direktan pristup memoriji i mogućnost multiprocesorske obrade. M6800 treba jedan napon napajanja (+5V). To su osnovne karakteristike mikroprocesora M6800. Sl.24 prikazuje model interne organizacije mikroprocesora M6800.

63

Sl.24 - Model mikroprocesora M6800

Šesnaestobitni programsi brojač je registar za usmeravanje programskog toka od jedne instrukcije prema drugoj. Budući da je to 16-bitni registar, omogućeno je direktno pribavljanje instrukcije iz celog memorijskog prostora od 64KB. 16-bitno brojilo podataka ima istu funkciju kao i u pojednostavljenom modelu mikroprocesora. Pokazivač steka je registar dužine 16-bita koji sadrži adresu lokacije u memorijskom prostoru koji se upotrebljava kao stek. Stek je obično memorija sa direktnim pristupom i upotrebljava se za skladištenje povratnih adresa iz potprograma, skladištenje tekućeg stanja kod prekida, te skladištenje podataka. U indeksni registar, veličine dva bajta, skladište se podaci ili 16-bitna adresa. Dva akumulatora, A i B, su 8-bitni registri koji sadrže operande i rezultate iz aritmetičko-logičke jedinice. Oni su sa programskog gledišta pravi radni prostor. Sve aritmetičke i logičke operacije “akumuliraju” rezultate u tim registrima. Podskup instrukcija namenjen je operacijama nad podacima sadržanim u tim registrima, s time, da akumulator A ima nešto veće sposobnosti u odnosu na B. Registar uslova ili registar stanja procesora je 6-bitni registar, čiji se bitovi (zastavice--bistabili dojave stanja) postavljaju na temelju sadržaja registra ili memorijske lokacije, ili rezultata aritmetičke, odnosno logičke operacije. Instrukcijski registar sa dekoderom i upravljačkim sklopovima rukovodi internim operacijama mikroprocesora. Kombinacije osnovnih instrukcija i različitih načina adresiranja daju 197 instrukcija različitih dužina reči (1-, 2-, 3- bajtne instrukcijske reči). Dvofazni taktni signali φ1 i φ2 vremenski upravljaju svim operacijama u mikroprocesoru (Sl.25).

64

Sl.25 - Dvofazni signali takta (vremenskog vođenja)

Na prednjem bridu signala φ1 sadržaj programskog brojila se preko adresnog međuregistra prenosi na spoljnu adresnu sabirnicu. Na zadnjem bridu signala φ1 sadržaj programskog brojila pvećava se za jedan. Na prednjem bridu signala φ2 podaci se postavljaju na sabirnicu podataka. Smer podataka (od ili prema mikroprocesoru) određen je stanjem na upravljačkoj liniji R/W (čitaj/piši). Na zadnjem bridu signala φ2 podaci su prihvaćeni u mikroprocesor ili memoriju (u zavisnosti od smera podataka). Devet upravljačkih linija omogućava različita delovanje mikroprocesora ili nude posebne upravljačke funkcije. Upravljačka linija HALT omogućava zaustavljanje mikroprocesora (HALT signal=0) na kraju izvođenja tekuće instrukcije. Ulazna linija za upravljanje trećim logičkim stanjem TSC (Three-State Control) služi za prebacivanje spoljnih adresnih linija i R/W upravljačke linije u stanje visoke impedanse -u treće logičko stanje. VMA (Valid Memory Address) - Adresa memorije validna je izlazna linija koja pokazuje memoriji i spoljnim jedinicama da je na adresnoj sabirnici validna adresa memorije. Izlaz Sabirnica raspoloživa, BA (Bus Available), u logičkom stanju “1” označava da je mikroprocesor zaustavljen (u stanju HALT) i da je adresna sabirnica raspoloživa za druge spoljne uređaje. Upravljanje spoljnom sabirnicom podataka vrši se ulaznom linijom DBE (Data Bus Enable) -Osposobi sabirnicu podataka. Ta ulazna linija je upravljački signal logike trećeg stanja i u stanju DBE=1 omogućava mikroprocesoru upotrebu sabirnice podataka. Tim ulazom normalno upravlja takt φ2. Pri DBE=0 sabirnica podataka je na raspolaganju (drugom) spoljnom uređaju. Ulaz RESET služi za resetovanje i pokretanje mikroprocesora nakon uspostavljanja napona napajanja. Ulazne linije: Zahtev za prekid (IRQ) i Nemaskirajući prekid (NMI) služe za postavljanje zahteva za prekid od strane spoljnih jedinica. Na modelu mikroprocesora M6800 biće opisano izvođenje dve instrukcije: LDAA $0F NAPUNI AKUMULATOR SADRŽAJEM MEMORIJSKE LOKACIJE ČIJA JE ADRESA 000F, STAA $010F SKLADIŠTI SADRŽAJ AKUMULATORA A U MEMORIJSKU LOKACIJU 010F Instrukcija LDAA $0F izvodi se u tri ciklusa (Sl.26). U prvom ciklusu sadržaj programskog brojila (adresa instrukcije LDAA) se sa prednjim bridom signala φ1 postavlja na adresnu sabirnicu (1). Zadnjim bridom signala φ1 sadržaj programskog brojila se povećava za jedan (2). Podatak sa sabirnice podataka sa zadnjim bridom signala φ2 (to je operacijski kod instrukcije LDAA) prihvata i sprema u instrukcijski registar (3). Prispeli operacijski kod se dekodira kao: napuni akumulator A sadržajem memorijske lokacije, čija je adresa sledeći bajt instrukcijske reči.

65

Sl.26 - Dijagram izvođenja instrukcije LDAA $0F

Prilikom pribavljanja operacijskog koda signali VMA i R/W bili su u logičkom stanju 1. U drugom ciklusu sadržaj programskog brojila postavlja se na adresnu sabirnicu sa prednjim bridom signala φ1. Programsko se brojilo povećava za jedan. Sadržaj memorijske lokacije sa postavljene adrese smešten je na sabirnicu podataka (VMA I R/W = 1) i skladišti se u brojilo podataka (4). To je bajt 0F - adresa operanda. U trećem ciklusu sadržaj brojila podataka smeštava se na adresnu sabirnicu. Sadržaj sa adrese 000F postavlja se na sabirnicu podataka (signali VMA i R/W su 1) i sa zadnjim bridom signala φ2 smešta se u akumulator A (5). Tabela 2 Izvođenje instrukcije LDAA $0F

Instrukcija Broj ciklusa

Ciklusi VMA linija

Adresna sabirnica R/W linija Sabirnica podataka

LDA A (direktno adresiranje)

1 1 Adresa operacijskog koda 1 Operacijski kod

3 2 1 Adresa operacijskog koda +1

1 Adresa operanda

3 1 Adresa operanda 1 Operand Tabela 2 prikazuje stanja na sabirnici podataka i adresnoj sabirnici, te upravljačkim linijama VMA i R/W. Instrukcija STAA $010F izvodi se u pet ciklusa (Sl 35). Stanje u memoriji je sledeće: Adresa Sadržaj 0005 B7 operacijski kod STAA 0006 01 adresa operanda 0007 0F Prvi ciklus započinje postavljanjem sadržaja programskog brojila (0005) na adresnu sabirnicu (1). Programsko brojilo povećava se za jedan (0006) (2). Sadržaj sa adrese 0005 (operacijski kod B7) postavljen je na sabirnice podataka i zadnjim bridom φ2 signala spremljen u instrukcijski registar (3).

66

Operacijski kod je dekodiran kao: Skladišti sadržaj akumulatora A u memorijsku lokaciju određenu sa dva sledeća bajta. Drugi ciklus započinje postavljanjem sadržaja programskog brojila (0006) na adresnu sabirnicu (4). Sadržaj programskog brojila povećava se za jedan (0007) (5). Sadržaj sa adrese 0006 (01) postavlja se na sabirnicu podataka i smeštava u brojilo podataka. U trećem ciklusu pribavlja se treći bajt (manje značajan bajt adrese (7) instrukcijske reči (0F) I smešta u brojilo podataka (9). Sadržaj programskog brojila povećava se za jedan (0008) (8). U četvrtom se ciklusu sadržaj brojila podataka (010F) postavlja na adresnu sabirnicu (10). Sadržaj akumulatora A je pripravan za prenos (VMA=0 i R/W=1). Sadržaj programskog brojila se ne povećava. U petom ciklusu izabrana je memorijska lokacija s adresom 010F, upravljački signal R/W prelazi u 0, (VMA u 1, a sadržaj akumulatora A je preko spoljne sabirnice podataka prenesen i skladišten u memorijsku lokaciju 010F (11). Tabela 5.2 prikazuje stanja na sabirnicama i upravljačke signale prilikom izvođenja instrukcije STA A $ (16-bitna adresa). Tabela 5.2 Izvođenje instrukcije STA A $010F

Instrukcija Broj ciklusa

Ciklusi

VMA linija

Adresna sabirnica R/W linija

Sabirnica podataka

1 1 Adresa operacijskog koda 1 Operacijski kod STA A 2 1 Adresa operacijskog koda +1 1 Odredišna adresa (značajniji bajt) (prošireno 5 3 1 Adresa operacijskog koda +2 1 Odredišna adresa (manje značajan

bajt) direktno 4 0 Odredišna adresa operanda 1 - adresiranje)

5 1 Odredišna adresa operanda 0 Podatak iz akumulatora

Prilikom izvođenja instrukcije mikroprocesor može imati tri tipa vremenskih mašinskih ciklusa: -ciklus operacije čitanja, -ciklus operacije upisivanja, -ciklus interne operacije. Za vreme operacije čitanja bajt podataka se unosi u mikroprocesor (VMA=1, R/W=1) Za vreme operacije upisivanja bajt podataka je poslat od strane mikroprocesora (VMA=1, R/W=0). U ciklusu interne operacije mikroprocesora nema aktivnosti na sabirnici (VMA=0, R/W=1).

67

MEMORIJA

UVOD Memorija je važna komponenta mikroračunara i sklopa mikroračunara. Instrukcije, podaci, rezultati i međurezultati skladište se u memoriji i pozivaju iz memorije. Memorije koje se upotrebljavaju u sklopovima mikroračunara možemo podeliti u dve grupe: -memorija sa sekvencijalnim pristupom (periferna memorija), -memorije sa direktnim pristupom (tipovi memorije RAM i ROM - centralna ili operativna memorija) Kod memorije sa sekvencijalnim pristupom vreme pristupa zavisi od mesta gde je podatak skladišten. Glavni predstavnici takvih memorija su magnetne trake, magnetni diskovi, optički diskovi, poluprovodničke serijske memorije itd. Većina ovih tipova memorija upotrebljavaju se u nižim hijerarhijskim tipovima organizacije memorije (sekundarna memorija). Primeri: disketa, disk. Memorija RAM upotrebljava se za skladištenje podataka koji se menjaju za vreme izvođenja programa, te programa koji se razvijaju i prolaze fazu testiranja, uz popravke i izmene. Nedostatak memorija RAM je da su izbrisive (volatile) - pri nestanku napajanja njihov sadržaj se briše. Memorija ROM upotrebljava se za skladištenje programa, konstanti i stalnih parametara. Sadržaj memorije ROM može se očitati, međutim, ne može se menjati upisivanjem. Memorija ROM je neizbrisiva (non-valatile) - pri nestanku napajanja sadržaj je sačuvan. U poseban tip memorija sa direktnim pristupom ulaze alfanumerički i grafički video-RAM (VRAM). Alfanumerički video-RAM sa strane mikroprocesora izgleda kao “obični” statički RAM i može se direktno spojiti na adresnu sabirnicu i na sabirnicu podataka mikroračunara. U VRAM se može upisivati ili očitavati isto kao i kod običnih memorija RAM. VRAM ima dodatni izlaz -VRAM VIDEO SIGNAL, koji daje video signal, a upotrebljava se za prikaz sadržaja memorijskih lokacija VRAM-a na TV monitoru. Grafički VRAM (grafička kartica) ima i dodatne registre, koji služe za skladištenje parametara kao što su koordinate x,y, boja i intenzitet, te za skladištenje naredbi za rukovanje prikaznom jedinicom.

MEMORIJA ROM Memorija ROM ili ROS (Read-Only Store) ispunjava dva zahteva: -neizbrisivost (nonvolatibility), -nedestruktibilnost - neuništivost sadržaja. Nedestruktibilnost znači da se ROM pojavljuje kao memorijsko polje čiji je sadržaj, jednom upisan, stalan i ne može se promeniti pod uticajem mikroprocesora (operacijom upisivanje). Zbog tih svojih karakteristika ROM se obično upotrebljava za skladištenje stalnih programa. U grupu ispisnih memorija spadaju: a) ROM b) PROM - programibilna ispisna mrmorija, c) EPROM - promenljiva programibilna ispisna memorija. a) U ROM je upisan određeni sadržaj već za vreme izrade memorijskog čipa. Bit-uzorke koji odgovaraju željenom programu korisnik dostavlja proizvođaču u standardnom obliku. Sl.40 prikazuje logičku strukturu ROM-a. b) PROM (User-Programmable Read Only Memory) je tip ispisne memorije koju može isprogramirati sam korisnik uz pomoć uređaja za programiranje PROM-ova.

68

c) EPROM je memorija koju može programirati korisnik uz pomoć (E) PROM - programera, ali se njen sadržaj može izbrisati i zatim ponovo isprogramirati. PITANJA Elementi standardne arhitekture mikroprocesora Uloga upravljačke jedinice CU Uloga aritmetičko logičke jedinice ALU Registar stanja u ALU Adresni registri Operacije nad stekom -PUSH, PULL Registri M6800 Način izvršavanja programa kod M6800 Tipovi memorije

69

NAČINI ADRESIRANJA UVOD Prilikom izvođenja programa upravljačka jedinica mora znati gde se nalaze instrukcije i operandi nad kojima će se izvoditi operacije. Načini na koje se pribavljaju instrukcije i određeni operandi za vreme izvođenja instrukcijskog ciklusa nazivaju se načini adresiranja. Instrukcijska reč se sastoji od tri dela (Sl.42): -polja operacijskog koda, -polja načina adresiranja, -adresnog polja. Dužina instrukcijske reči zavisi od računara i operacije koju treba izvesti. Osmobitna reč mikroprocesora, međutim, omogućava samo 28=256 kombinacija za operacijski kod i adresu. To je, očito, premalo da bi se mogao dosegnuti čitav adresni prostor (npr. 64KB memorije). Zbog toga se u mikroprocesorima upotrebljavaju instrukcijske reči sastavljene od dva ili tri bajta. U većini slučajeva prvi bajt se upotrebljava za predstavljanje operacijskog koda i koda načina adresiranja, dok preostali bajt (ili preostala dva bajta) služi kao adresa ili kao osnova za određivanje stvarne adrese operanda. Operacijski kod Način adresiranja Polje adrese n-1 0

Sl.27 - Organizacija n-bitne instrukcijske reči Više načina adresiranja prisutno u mikroprocesorskoj arhitekturi omogućava efikasnije rukovanje različitim strukturama podataka, a time i efikasnije izvođenje programa.

NAČINI ADRESIRANJA ZA MIKROPROCESOR M6800 Za ilustraciju različitih načina adresiranja upotrebićemo programski model mikroračunara, uz pridodan instrukcijski registar. Programski model mikroprocesora čini skup registara koji su “vidljivi” i dostupni programeru, memorija podataka, te programska memorija. Sl.28 prikazuje programski model za mikroračunar M6800. Programabilni registri su: akumulatori A i B, 6-bitni registar uslova (CCR), 16-bitno programsko brojilo (PB), 16-bitni pokazivač steka (SP) i 16-bitni indeksni registar (IX). Na slici je registar podataka (DC) izostavljen. Programeru moraju biti na raspolaganju načini adresiranja internih registara mikroprocesora i adresiranja svih memorijskih lokacija.

70

Sl.28 - Programski model za mikroračunar na bazi mikroprocesora M6800

Mikroprocesor M6800 ima sedam načina adresiranja: - uključno (Inherent, Implied), - adresiranje akumulatora, - usputno (Immediate), - direktno (Direct), - direktno prošireno (Extended), - indeksno (Indexed), - odnosno tj. relativno (Relative). Tako raznolik izbor načina adresiranja omogućava efikasno programiranje u pogledu brzine izvođenja programa i iskorištenja memorijskog prostora.

Uključno adresiranje i adresiranje akumulatora Ovim načinom adresiranja operand se određuje implicitno u samoj instrukciji. Uključnim se adresiranjem koristimo pri adresiranju registra kao što su indeksni (IX) ili pokazivač steka (SP). Adresiranjem akumulatora ili akumulatorskim adresiranjem označava se akumulator (ili dva akumulatora). Takve instrukcije (tipa uključnog i akumulatorskog adresiranja) imaju mnemonički kod koji određuje jedan ili dva registra (akumulatora) - kao izvor i/ili odredište. Drugim rečima, u mnemoničkom kodu same instrukcije uključena je i adresa operanda. Primeri takvih instrukcija: ABA Saberi sadržaje akumulatora A i B, te rezultat skladišti u A. TSTB Ispitaj sadržaj akumulatora B. CLRA Izbriši sadržaj akumulatora A. DES Umanji sadržaj pokazivača steka za 1. INX Povećaj sadržaj indeksnog registra za 1. PULA Sadržaj iz steka prenesi u akumulator A Sl.29 prikazuje primer izvođenja instrukcije PULA na programskom modelu (heksadekadni broj 32 je kod instrukcije PULA). Sl.29a prikazuje pribavljanje operacijskog koda instrukcije PULA. Sl.29b prikazuje stanje nakon izvođenja instrukcije PULA.

71

Sl.29 - Primer izvođenja instrukcije PULA na programskom modelu: a) faza PRIBAVI; b) faza IZVRŠI

Usputno adresiranje Kod ovog načina adresiranja operand je prisutan u instrukcijskoj reči. On je sadržan u bajtu koji sledi bajt operacijskog koda. Instrukcijska reč ovog tipa adresiranja je dužine dva bajta, ako je operand dužine 8 bita. Ukoliko je operand 16-bitni (kod instrukcija LDX i LDS), tada se instrukcijska reč sastoji od tri bajta. Sl.30a, Sl.30b, Sl.31a i Sl.31b prikazuju oba slučaja na primeru instrukcija ADDA #$3F i LDX #$012A. Oznaka # određuje usputno adresiranje, a znak $ označava heksadekadni broj.

Sl.30 - Primer izvođenja instrukcije ADD A #$3F (pribroji sadržaju akumulatora A3F)

a) početak faze PRIBAVI, b) završetak faze IZVRŠI

72

Sl.31 - Primer izvođenja 3-bajtne instrukcije LDX # $012A (pohrani 012A u indeksni registar)

a) početak faze PRIBAVI, b) završetak faze IZVRŠI

Direktno i direktno prošireno adresiranje Kod ovog načina adresiranja operand se nalazi u memorijskoj lokaciji, čija je adresa direktno zadata u adresnom delu instrukcijske reči. Instrukcijska se reč sastoji od dva ili tri bajta. Instrukcija koja se sastoji od dva bajta omogućava adresiranje samo 256 reči (adresiranje memorijskih lokacija 0000-00FF). Direktni način adresiranja često se naziva i adresiranje nulte stranice (zero-page addressing). Upotrebom tih lokacija i skladištenjem u njih postiže se ušteda u vremenu izvođenja instrukcija. Na primer, instrukcija LDAA $A0 (direktno adresiranje ili adresiranje nulte stranice) se izvodi u tri ciklusa, dok su istoj instrukciji LDAA $00A0 (direktno prošireno adresiranje) potrebna četiri ciklusa. Sl.32 prikazuje primer direktnog načina adresiranja (instrukcija ADDA $30 - pribroji operand s adrese 0030 sadržaju akumulatora).

Sl.32 - Primer direktnog adresiranja ADDA $30 (pribroji sadržaju akumulatora A operand sa adrese 0030)

a) početak faze PRIBAVI, b) završetak faze IZVRŠI Da bi se dosegao celi memorijski prostor od 64KB reči, koristi se direktno prošireno adresiranje. Instrukcijska reč se sastoji od tri bajta, s tim da su zadnja dva 16-bitna adresa operanda. Sl.33 prikazuje primer direktno proširenog načina adresiranja (STAA $1FA0 - skladišti sadržaj akumulatora A na memorijsku lokaciju 1FA0).

73

Sl.33 - Primer direktno proširenog adresiranja instrukcije STAA $1FA0 (pohrani sadržaj akumulatora A na memorijsku

lokaciju 1FA0): a) početak faze PRIBAVI, b) završetak faze IZVRŠI

Indeksno adresiranje Instrukcijska reč se kod ovog načina adresiranja sastoji od dva bajta (drugi bajt je adresni deo). Adresni deo instrukcijske reči (0-255) pribraja se manje značajnom bajtu indeksnog registra, dok se eventualni prenos kod spomenutog zbrajanja pribraja značajnijem bajtu indeksnog registra. Rezultat je adresa operanda. Pri tome se sadržaj indeksnog registra ne menja. Sl.34 prikazuje izvođenje instrukcije ADDA 2,X. Oznaka X upotrebljava se za označavanje indeksnog načina adresiranja.

Sl.34 - Primer indeksnog adresiranja instrukcije ADDA 2, X: a) početak faze PRIBAVI, b) završetak faze IZVRŠI Sadržaj indeksnog registra se često povećava (izvođenjem instrukcije INX) ili smanjuje (DEX) prilikom izvođenja programske petlje u cilju pristupa do podataka skladištenih u memoriji u obliku tablica.

74

Odnosno (relativno) adresiranje Instrukcije grananja i uslovnog grananja upotrbljavaju odnosno (relativno) adresiranje. Ove se instrukcije sastoje od dva bajta, s tim da je drugi bajt binarni broj s predznakom u notaciji dvojnog komplementa koji se pribraja sadržaju programskog brojila i omogućava grananje u dva smera. To znači da je obim relativnog adresiranja ±127 u odnosu na lokaciju same instrukcije grananja. Međutim, kako se obim računa u odnosu na sledeću instrukciju koja bi bila izvršena kada uslov grananja ne bi bio ispunjen, odredišna adresa D je u obimu:

(PC+2) − 127 < D < (PC+2) + 127 PC − 125 < D < PC + 129

Sl.51 prikazuje izvođenje BRA (bezuslovno grananje) za mikroprocesor M6800. Odnos između relativne adrese i apsolutne adrese dat je izrazom:

D = (PC + 2) + R, gde su: R - 8-bitna reč u notaciji dvojnog komplementa, skladištena u drugom bajtu instrukcije grananja; PC - tekući sadržaj programskog brojila; D - odredišna adresa.

Sl.35 - Primer odnosnog adresiranja (instrukcija BRA $06): a) početak faze PRIBAVI, b) završetak faze IZVRŠI

PITANJA (M6800- načini adresiranja) uključno (Inherent, Implied) adresiranje adresiranje akumulatora, usputno (Immediate), adresiranje direktno (Direct), adresiranje direktno prošireno (Extended), adresiranje indeksno (Indexed), adresiranje odnosno tj. relativno (Relative), adresiranje

75

ULAZNO-IZLAZNI (U/I) PRENOS UVOD Prenos podataka (u širem smislu reči - informacije) između logike koja je deo sastava mikroračunara i logike izvan mikroračunara omogućava ulazno-izlazni (U/I) podsistem mikroračunara. Granica između internih logičkih sklopova mikroračunara i spoljnih logičkih sklopova sklopova (procesa) je sledeća: interni logički sklopovi-komponente mikroračunara-deluju u uskoj vezi sa mikroprocesorom (npr. memorija RAM, ROM, U/I međusklop), dok su spoljni logički sklopovi u sprezi sa procesom. Ovde se pod procesom podrazumeva širi pojam, npr. upravljanje tehnološkim postupkom. Međusklop između mikroračunara i spoljne logike ima četiri osnovne funkcije: - međuskladištenje (buffering), - dekodiranje adrese ili izbor uređaja, - dekodiranje komandi, - vremensko vođenje (timing) i upravljanje. Međuskladištenjem se vrši sinhronizacija izmene podataka između mikroračunara i spoljnih logičkih sklopova. Funkcija dekodiranja adrese ili izbora uređaja potrebna je zbog izbora spoljnjeg logičkog sklopa. Dekodiranje komandi je potrebno u sisitemima u kojima vanjska logika pored uloge u prenosu podataka ima i zadatak pobližeg definisanja funkcije prenosa podataka. Sve gornje funkcije zahtevaju vremensko vođenje i upravljanje. Način izmene podataka između mikroračunara i spoljne logike može se svrstati u tri grupe: - programirani U/I, - prekidni U/I, - direktan pristup memoriji DMA (Direct Memory Access). Pri programiranom U/I, prenosom podataka u potpunosti upravlja mikroračunar, odnosno program koji se izvodi. Kod prekidnog U/I, spoljna logika zahteva da mikroračunar prekine sa svojim tekućim operacijama i da posveti pažnju spoljnjoj logici. Prenos podataka bez učestvovanja mikroprocesora (MPU) i ometanja njegova rada sprovodi se direktnim pristupom memoriji.

ORGANIZACIJA PROGRAMIRANOG U/I PRENOSA Veliki računari imaju višesabirničku arhitekturu - sabirnicu operanda, rezultata, posebnu sabirnicu za komunikaciju sa memorijom (memorijska sabirnica), te sabirnicu povezanu sa U/I međusklopovima (U/I sabirnica). Mikroprocesor zbog ograničenog broja izvoda na integrisanom kućištu, upotrebljava zajedničku sabirnicu za saobraćanje sa memorijom i U/I međusklopovima. Zbog toga se na mikroprocesorskoj sabirnici ne razlikuju adrese U/I međusklopova od adresa memorijskih lokacija. Postoje dva načina adresiranja U/I međusklopova: - memorijsko preslikavanje U/I registara međusklopova, - izdvojeno adresiranje U/I registara međusklopova Kod metode memorijskog preslikavanja U/I registra, mikroprocesor smatra ulazno/izlazne i upravljačke registre U/I međusklopa delom memorijskog adresnog prostora. Samim tim je stvarni memorijski adresni prostor umanjen za taj deo. U takvoj U/I organizaciji mikroprocesor nema ulazne niti izlazne instrukcije. Mikroprocesor rukovodi U/I podacima koji se nalaze u registrima U/I međusklopa pomoću istih instrukcija koje se upotrebljavaju za rukovanje podacima skladištenim u memorijskim

76

lokacijama (memorijski odnosne instrukcije). Primer takve organizacije je mikroprocesor M6800. Na primer, izvođenje instrukcija: LDAA #$A0 STAA $8008 ima kao posledicu da se podatak A0 skladišti u izlaznom registru i šalje spoljnoj logici, ako je 8008 adresa izlaznog registra u U/I međusklopu PIA, na primer. Pri izdvojenoj U/I organizaciji mikroprocesor specifira s jednom ili dve izlazne upravljačke linije da li je podatak na adresnoj sabirnici adresa memorijske lokacije ili je to adresa registra U/I međusklopa. Na primer, postavljanjem određene upravljačke linije u logičko stanje 1 označava adresnoj sabirnici i komponentama mikroračunara da je prisutna adresa namenjena memoriji. Kada je ta upravljačka linija u stanju logičke 0, adresa prisutna na sabirnici namenjena je ulazno/izlaznom registru U/I međusklopa.

TIPOVI PROGRAMIRANOG U/I PRENOSA S obzirom na odnos mikroračunara i spoljnih logičkih sklopova, programirani U/I prenos može se podeliti na: - programirani bezuslovni prenos, - programirani uslovni prenos. Bezuslovni se prenos upotrebljava samo tamo gde je vreme odziva spoljnih logičkih sklopova poznato i stalno. Kod tog tipa prenosa spoljna logika mora biti spremna na saobraćanje (prihvatanje ili slanje podataka) u trenutku izvođenja U/I instrukcije. Zbog jednostavnosti i direktnosti ovaj tip prenosa predstavlja minimalne zahteve za programe i sklopove.

Primeri programiranog U/I prenosa a) primer bezuslovnog programiranog prenosa za M6800. Program: Objašnjenje: - - LDAA #$FF Napuni akumulator A sa 00FF STAA $8008 Skladišti na $8008 (izlazni registar) - - (druge programske instrukcije) - - LDAA $800A Napuni akumulator A sa memorijske lokacije $800A - Uz pretpostavku da je $8008 adresa izlaznog registra podataka, a $800A adresa ulaznog registra podataka, instrukcija STAA $8008 šalje podatke (u ovom primeru sa 00FF) spoljnjem logičkim sklopovima preko izlaznog registra. Instrukcija LDAA $800A prenosi podatke s ulaznog registra u akumulator A. b) Primer programiranog uslovnog prenosa za M6800 - Paralelni U/I međusklop PIA omogućava jednostavan prenos podataka. Programski odsečak za unos podataka ima sledeći oblik: - OPET LDAA $8009 Ispitivanje bita b7 upravljačke reči PIA BPL OPET granaj ako je b7=0 LDAA $8008 Podatak je spreman, unesi ga u akumulator A

77

-

Postupak prozivanja (Polling)

U sistemima gde više spoljnjih logičkih sklopova komunicira preko više U/I međusklopova sa jednim mikroprocesorom, upotrebljava se U/I tehnika prozivamja (polling) ili cikličkog ispitivanja. Mikroračunar periodički proziva svaki spoljni logički sklop i ispituje da li je zahtevao posluživanje. Ako spoljni logički sklop ne zahteva posluživanje, mikroračunar ispituje sledeći spoljni logički sklop itd. Ako jedan od njih zahteva posluživanje, mikroračunar prelazi na izvođenje programa za posluživanje dotičnog vanjskog logičkog sklopa (Sl.36). U program za posluživanje uključene su funkcije U/I prenosa (prenos reči ili bloka podataka).

Sl.36 - Postupak prozivanja

Nakon prozivanja tih spoljnih logičkih sklopova postupak prozivanja se ponavlja, tako da program čini petlju prozivanja (Sl.53).

78

PREKIDNI U/I PRENOS

UVOD Ukoliko se bezuslovni prenos, uslovni prenos ili postupak prozivanja pokažu nepogodnim, bilo zbog nepoznavanja tačnih vremena odziva spoljnih logičkih sklopova, bilo zbog rasipanja vremena računara u petljama čekanja ili sporosti u prozivanju pojedinih spoljnih logičkih sklopova, može se upotrebiti prekidni prenos. Pri prekidnom prenosu, na zahtev spoljne logike, mikroračunar prekida izvođenje svog tekućeg programa i prelazi na izvođenje prekidnog programa (Sl.37)

Sl.37 - Šematski prikaz prekidnog prenosa Prekidna struktura omogućava da mikroprocesor odgovori na asinhrone događaje, odnosno zahteve od strane spoljne logike, a da ne čeka u petlji kojom ispituje stanje spoljnog logičkog sklopa. Mikroprocesor ima jednu ili više upravljačkih linija (prekidne linije) preko kojih spoljnih logički sklopovi zahtevaju posluživanje. Postupak prekidnog prenosa izvodi se obično u sledećim koracima (Sl.38): a) Spoljna logika generiše zahtev za prekid i šalje ga prekidnom linijom mikroprocesoru (Sl.39).

b) Ukoliko mikroprocesor prihvata zahtev za prekid, na kraju izvršenja tekuće instrukcije odgovara signalom potvrde (IACK) i onemogućava dalje prekide.

c) Skladište se svi tekući sadržaji radnih registara, sadržaj registra uslova i programskog brojila. d) Program se grana na memorijsku adresu, sa kojom započinje prekidni program (u njega je

uključen i programski odsečak za U/I prenos podataka). e) Nakon izvršenja prekidnog programa nastavlja se izvođenje prekinutog (tekućeg) programa s

tim, da se svi sadržaji radnih i uslovnih registara obnavljaju. Većina mikroprocesora ima mogućnost programskog maskiranja prekida u zavisnosti od nivoa prioriteta. Ukoliko je bit prekida u registra uslova postavljen u 1 (npr. instrukcijom SEI kod M6800), mikroprocesor ne prihvata zahtev za prekid i nastavlja sa izvođenjem sledeće instrukcije tekućeg programa. Prvi korak u postupku prekidnog prenosa je onemogućavanje sledećih prekida (postavljanjem prekidne maske sprečava se gnežđenje prekida, Sl.40). U nekim se situacijama mikroračunar mora prekidati i kad se nalazi u prekidnom programu (gnežđenje prekida, Sl.40b); to se omogućava brisanjem prekidne maske (npr. instrukcijom CLI kod mikroprocesora M6800).

79

Sl.38 - Postupak pri prekidu

Sl.39 - Šematski prikaz prekidne strukture mikroračunara

80

Sl.40 - Primer prekida sa postavljanjem prekidne maske i bez postavljanja prekidne maske:

a) bez gniježđenja (uglavljivanja), b) gniježđenje prekida Sledeći korak u postupku prekida je slanje signala potvrde prekida na kraju izvršenja tekuće instrukcije (neki mikroprocesori nemaju signal potvrde, npr M6800). Na kraju prekidnog programa omogućava se nov prekid (briše se prekidna maska u registru uslova) te mikroprocesor prelazi na izvođenje sledeće instrukcije iz tekućeg prekinutog programa. Taj prelaz na dalje izvođenje prekinutog programa vrši se pomoću instrukcije povratka iz prekidnog programa (npr. RTI, RET). Napomenimo da kod nekih mikroračunara postoji zamena u redosledu koraka c) i d). Budući da je više U/I međusklopova priključeno na istu prekidnu liniju (Sl.39), mikroprocesor mora ustanoviti koji je U/I međusklop, odnosno spoljni logički sklop, zahtevao posluživanje. Postoje dve metode utvrđivanja uzročnika prekida: - metoda prozivanja prekida, - metoda vektorskog prekida. Metoda prozivanja prekida slična je metodi prozivanja već ranije opisanoj kod programiranog prenosa. U prekidnom programu obavlja se prozivanje pojedinih U/I međusklopova i ispituje se njihovo stanje, odnosno, ispituje se da li je određeni međusklop prouzročio prekid. Ispitivanja stanja međusklopa znači ispitivanje njegovih registara, odnosno onih registara koji upućuju da je aktiviran prekidni prenos od strane međusklopa. Ukoliko je ispitani međusklop uzrok prekida, program se grana na odgovarajući programski odsečak za prenos podataka. Pri tom se u redosledu ispitivanja međusklopova krije i prioritet pojedinih U/I međusklopova. Kod metode vektorskog prekida adresu grananja generše U/I međusklop koji zahteva posluživanje. U sisitemima mikroračunara često se upotrebljavaju prekidi u više nivoa koji su obično kombinacija metoda prozivanja i vektorskog prekida. Prednost prekidnog programa je u brzom odgovoru, jer se spoljni logički sklopovi poslužuju u vrlo kratkom vremenu nakon generisanog zahteva. Prekidni prenosi se obično zbog toga upotrebljavaju u sistemima s odzivom u realnom vremenu. Nedostatak prekidnog prenosa je u tome što zahteva dodatne sklopove u slučaju simultanih i višenivovskih zahteva za prekid. Pri svakom posluživanju zahteva mikroprocesor gubi vreme u dodatnom poslu skladištenja stanja tekućeg programa. Dalji je nedostatak asinhrono međudelovanje programa za posluživanje i glavnog programa, tako da mogu nastati konflikti u pogledu zahteva za memorijskim prostorom ili u pogledu vremena izvođenja programa. Nedostatak prekida je u tome što se prenos podataka obavlja pod programskim upravljanjem mikroprocesora. Pri analizi prekidnog sistema pojedinog mikroprocesora obično treba odgovoriti na sledeća pitanja: - Koliko prekidnih linija poseduje mikroprocesor? - Kakav je odziv mikroprocesora na prekid?

- Na koji način mikroprocesor određuje izvor (uzročnik) prekida ako je broj izvora veći od broja prekidnih linija?

- Da li mikroprocesor može razlikovati važan prekid od nevažnog (prioritetna struktura prekida)? - Kada i kako se prekid omogućava ili onemogućava?

81

PITANJA Tipovi prenosa podataka tipovi programiranog prenosa prekidni prenos

ORGANIZACIJA PREKIDNOG SISTEMA ZA MIKROPROCESOR M6800 Mikroprocesor M6800 ima tri prekidna ulaza: Reset (RES), Non-Maskable Interrupt (NMI - nemaskirajući prekid) i Interrupt Request (IRQ). Prekidni sled može započeti upotrebom odgovarajućih upravljačkih signala na ta tri prekidna ulaza, ili upotrebom instrukcije SWI (softverski, programski prekid). Rezultirajući prekidni sled različit je za svaki od gornjih slučajeva. Sklopovski (hardverski) zahtev za prekidom (IRQ) obično generišu međusklopovi U/I (PIA, ACIA), i sklopovi koje projektuju korisnici. Postavljanjem linije IRQ u logičku 0 zahtev se aktivira. Sl.41 prikazuje prekidni sled pri aktiviranju linije IRQ.

Sl.41 - Prekidni sled za prekid IRQ Nakon pojave IRQ=0 i ispitivanja prekidne maske u registru uslova, sledi skladištenje programibilnih registara (PC, IX, ACCA, ACCB, CCR) u memoriju određenu sadržajem pokazivača steka SP. Postupak skladištenja traje sedam memorijskih ciklusa. Po dva su ciklusa potrebna za skladištenje sadržaja programskog brojila i indeksnog registra, a po jedan za akumulator A, akumulator B, te registar uslova CCR. Sadržaj pokazivača steka umanjiće se za sedam i pokazivati sledeću praznu memorijsku lokaciju. Adresa prekidnog programa pribavlja se sa memorijskih lokacija FFF8 i FFF9. Postavljanje prekidne maske važna je operacija u organizaciji prekidnog sistema. Postavljanjem maske definisan je postupak rukovanja u slučaju pojave više zahtava za prekid. Ukoliko se želi omogućiti gnežđenje prekidnih programa, mora se “obrisati” prekidna maska instrukcijom CLI na početku prekidnog programa. Međutim, ako se ne želi gnežđenje prekida, prekidna maska se ne briše.

82

Maska se automatski briše tek izvođenjem instrukcije RTI (Return from Interrupt - povratak iz prekidnog programa). Izvođenjem instrukcije RTI, iz steka se vraćaju sva skladištena stanja radnih registara, te sadržaj programskog brojila i registra uslova (Sl.42). Budući da je pre prekida prekidna maska bila obrisana (inače ne bi ni došlo do prekida), nakon izvođenja instrukcije RTI, odnosno vraćanja u prekinuti tekući program, ponovno je omogućen prekid.

Sl.42 - Izvođenje instrukcije RTI: a) pre izvođenja instrukcije RTI, b) nakon izvođenja instrukcije RTI

Na Sl.41 prikazana je situacija u kojoj nakon postavljanja prekidne maske sledi grananje na prvu instrukciju u prekidnom programu. To se postiže punjenjem programskog brojila sadržajem memorijskih lokacija FFF8 i FFF9. Mikroprocesor pribavlja prvu instrukciju iz lokacije koja je određena novim sadržajem programskog brojila. Sadržaj u memorijskim lokacijama FFF8 i FFF9 naziva se vektorom. Mikroprocesor šalje na adresnu sabirnicu adresu FFF8 i postavlja liniju R/W u 1 te se sa izabrane lokacije pribavlja značajniji bajt nove vrednosti programskog brojila (PC8-15). Nakon toga sledi adresa FFF9 i pribavljanje drugog bajta nove vrednosti programskog brojila (PC0-7). Na taj se način pribavlja vektor. Nemaskirajući prekid NMI Sa zadnjim bridom (prelazom logičke 0 u 1) signala na ulazu NMI inicira se u mikroprocesoru prekidni sled. Kako sam naziv kaže, taj se prekid ne može maskirati. Prekidna maska u registru uslova CCR ne utiče na nemaskirajući prekid. Na ovu prekidnu liniju obično se priključuju spoljni logički sklopovi sa najvišim prioritetima u pogledu zahteva za posluživanje. Izuzev činjenice da taj tip prekida ne može biti maskiran, prekidni sled je u potpunosti jednak sledu izvođenja IRQ prekida. Nakon završetka izvođenja tekuće instrukcije mikroprocesor skladišti stanja, postavlja masku i pribavlja vektor sa memorijskih lokacija FFFC i FFFD (Sl.43).

83

Sl.43 - Prekidni sled za prekid NMI

Nemaskirajući prekid upotrebljava se i za sisteme gde se stanje tekućeg programa moraju sačuvati prilikom ispada napajanja (stanja se skladište u memoriju sa baterijskim napajanjem). Reset (RES) Kada je RESET=0, mikroprocesor postavlja masku prekida i sa memorijskih lokacija FFFE i FFFF pribavlja vektor (adresu prve instrukcije u prekidnom programu), (Sl.44). Taj prekid koristi se za startanje mikroprocesora nakon uspostavljanja napona napajanja. Budući da se upotrebljava za start mikroprocesora (start-up mode), nije potrebno skladištenje stanja u stek.

Sl.44 - Prekidni sled za prekid RES

84

Programski (softverski) prekid SWI Mikroprocesor M6800 poseduje takođe softverski prekid. Izvođenje softverskog prekida (SWI - instrukcija) inicira sled prikazan na Sl.45. Vektor se pri softverskom prekidu pribavlja iz memorijskih lokacija FFFA i FFFB.

Sl.45 - Sled izvođenja prekida SWI

Softverski prekid se upotrebljava kao ispitna tačka (break-point) pri otkrivanju i otklanjanju grešaka u programu. - U slučaju istovremenih zahteva za prekid, prioritet prekida je sledeći: 1.) RESET, 2.) NMI, 3.) SWI, 4.) IRQ. Prioritet prekida Vektor pribavljen sa memorijskih lokacija koje su specifične za pojedinu vrstu prekida, određuje početnu adresu prekidnog programa. Ako je na svaku prekidnu liniju (IRQ, NMI) priključen jedan spoljni logički sklop, izvor prekida je poznat i određeno je grananje na odnosni prekidni program. Problem prioriteta prekida javlja se pojavom više istovremenih zahteva za prekid na istoj prekidnoj liniji. Metodom prozivanja prioritet se određuje redosledom ispitivanja stanja spoljnih logičkih sklopova ili U/I međusklopova; Sl.46 prikazuje postupak ispitivanja za tri U/I međusklopa. Postoje modifikacije metode prozivanja kod kojih se najpre prikupljaju sva stanja, a zatim se određuje redosled posluživanja u zavisnosti od vremena proteklog od poslednjeg posluživanja spoljnjeg logičkog sklopa.

85

Sl.46 - Postupak ispitivanja stanja tri U/I međusklopa, potencijalna izvora zahteva za prekid U primeru priključenja više spoljnjih logičkih sklopova na istu prekidnu liniju, metoda prozivanja može biti prespora za utvrđivanje izvora prekida i njegovog posluživanja. U tom slučaju primenjuje se hardverska organizacija pririteta prekida. Interesantan način za realizaciju strukture vektorskih prekida sa prioritetima je kodiranje prioriteta i korištenje koda pririteta umesto određenog broja adresnih linija adresne sabirnice. Jedan primer ovakve strukture prikazan je na Sl.47. Struktura obezbeđuje osam nivoa prioriteta prekida. Ako bi se, na primer, ova struktura prioriteta prekida primenila na Motorolu 6800, najpogodnije bi bilo da se vektori prekida smesta na lokacijama od (FFF9, FFF8) do (FFFB, FFFA) kako je to prikazano na Sl.48. Odgovarajuća tabela istine za koder prioriteta sa Sl.47 data je na Sl.49.

Sl.47- Struktura prekida sa osam nivoa prioriteta

86

Sl.48 - Vektori prekida za višenivovsku strukturu prekida sa osam nivoa prioriteta Motorole 6800

Nivoi prioriteta

U l a z i 0 1 2 3 4 5 6 7

I z l a z i A4 A3 A2 A1

IRQ Lokacija vektora

1 (najvi{i) 1 x x x x x x x 1 1 0 0 1 FFF9 FFF8 2 0 1 x x x x x x 1 0 1 1 1 FFF7 FFF6 3 0 0 1 x x x x x 1 0 1 0 1 FFF5 FFF4 4 0 0 0 1 x x x x 1 0 0 1 1 FFF3 FFF2 5 0 0 0 0 1 x x x 1 0 0 0 1 FFF1 FFF0 6 0 0 0 0 0 1 x x 0 1 1 1 1 FFEF FFEE 7 0 0 0 0 0 0 1 x 0 1 1 0 1 FFED FFEC 8 0 0 0 0 0 0 0 1 0 0 1 0 1 FFEB FFEA 9 0 0 0 0 0 0 0 0 0 0 0 0 0

Sl.49 - Tabela istine kodera prioriteta

87

DIREKTNI PRISTUP MEMORIJI

UVOD Prekidnom U/I prenosu, u zavisnosti od broja spoljnih logičkih sklopova priključenih na istu prekidnu liniju i od izabrane metode za otkrivanje uzročnika prekida, potrebno je vreme za posluživanje prekida, odnosno vreme za prenos jednog elementa iz bloka podataka. Međutim u slučaju postojanja čestih zahteva za U/I prenosom od strane spoljnih logičkih sklopova, te postojanje zahteva za prenos većih blokova podataka, može se očekivati otežano i vrlo usporeno izvođenje glavnog (prekinutog) programa. Rešenje tog problema je u povećanju brzine U/I prenosa podataka i oslobađanju mikroprocesora od tereta U/I prenosa. Pomoću direktnog pristupa memoriji ostvaruje se brz prenos podataka između memorije i spoljnih logičkih sklpova, a da ne sudeluje mikroprocesor i da se ne menja sadržaj njegovih registara. Budući da se taj prenos vrši bez programskog upravljanja, granice brzine postavljene su sa sklopovskim karakteristikama komponenti mikroračunara. Primeri upotrebe metode direktnog pristupa memoriji su pri prenosu podataka između memorije mikroračunara i jedinice diskete, između brzih A/D pretvarača i memorije; između memorije i prikazne jedinice.

ORGANIZACIJA DIREKTNOG PRISTUPA MEMORIJI (DMA) Sl.68 daje šematski prikaz realizacije direktnog pristupa memoriji. U ovom postupku tok podataka, uspostavljen između vanjskog logičkog sklopa i memorije mikroračunara, zaobilazi mikroprocesor, odnosno DMA ima izdvojen kanal za prenos podataka.

Sl.50 - šematski prikaz direktnog pristupa memoriji (DMA) Zbog specifične organizacije mikroračunara, te nepostojanja izdvojenog kanala između memorije i upravljažkog sklopa DMA, pri organizaciji direktnog pristupa mora se upotrebiti ista spoljna sabirnica koju upotrebljava i mikroprocesor (Sl.51). Mikroprocesor i upravljački sklop DMA zajednički dele sabirnice na sledeći način:

88

Sl.51 - Šematski prikaz stvarne organizacije direktnog pristupa memoriji (DMA) za mikroračunar

U primeru “normalnog” delovanja mikroprocesora upravljački sklop DMA se električki odspaja od spoljne sabirnice postavljanjem svojih izlaza u stanje velike impedance (Sl.52).

Sl.52 - Primer “normalnog” delovanja mikroprocesora (šematski prikaz) Pri direktnom pristupu memoriji priključuje se upravljački sklop DMA na spoljnu sabirnicu, a mikroprocesor se odspaja od spoljne sabirnice postavljanjem svojih izlaza u stanje velike impedance (Sl.53). S obzirom na način realizacije direktnog pristupa memoriji, postoje sledeće tehnike: - direktni pristup memoriji zaustavljanjem procesora, - direktni pristup memoriji krađom ciklusa, - kombinacija gornjih metoda, - direktni pristup memoriji multipleksiranjem operacija DMA/MPU (mikroprocesorskih). Direktni pristup memoriji zaustavljanjem procesora najjednostavnija je metoda ali budući da može postojati relativno veliko kašnjenje od trenutka zahteva za prenos DMA do trenutka zaustavljanja procesora u nekim aplikacijama je ta metoda neprihvatljiva. Aktiviranjem (od strane spoljnjeg logičkog sklopa) upravljačkog signala za zaustavljanje, mikroprocesor završava svoju tekuću instrukciju i

89

postavlja adresnu sabirnicu i sabirnicu podataka u stanje velike impedance. Time daje na raspolaganje sabirnice upravljačkom sklopu DMA.

Sl.53 - Primer DMA prenosa (šematski prikaz) Metoda direktnog pristupa memoriji krađom ciklusa ne zaustavlja mikroprocesor, već on samo privremeno obustavlja tok provođenja instrukcije. To omogućava upravljačkom sklopu DMA da za prenos iskoristi vrlo kratke vremenske intervale. Krađa ciklusa mikroprocesoru od strane operacija DMA odražava se na smanjenju brzine delovanja mikroprocesora zbog smanjenja frekvencije signala (takta) vremenskog vođenja. Direktni pristup memoriji krađom ciklusa u stanju kada je procesor zaustavljen kombinacija je opisanih metoda. Takvom kombinacijom koristimo se kao jednom od varijanti organizacije direktnog pristupa memoriji (Halt Steal Mode) u upravljačkom sklopu LSI DMA za mikroprocesor M6800. Pri toj metodi mikroprocesor je u stanju HALT za vreme koje je potrebno da se izvrši prenos samo jednog bajta. Nakon prenosa samo jednog bajta upravljanje se usmerava na mikroprocesor. Metoda direktnog pristupa memoriji multipleksiranjem operacija DMA i delovanja mikroprocesora omogućuje najveću brzinu izvođenja operacija mikroprocesora. Pri toj metodi mikroprocesor se ne zaustavlja, niti smanjuje brzinu operacija uz istovremeni prenos DMA. Operacije mikroprocesora i prenosa DMA su multipleksirane tako da je pristup memoriji od strane mikroprocesora omogućen za vreme jedne faze signala vremenskog vođenja, a pristup memoriji od strane upravljačkog sklopa DMA za vreme druge faze signala vremenskog vođenja (Sl.54)

Sl.54 - Multipleksiranje operacija DMA/MPU

Frekvencija signala vremenskog vođenja u tom slučaju mora biti prilagođena brzini memorije koja se upotrebljava. Obično je perioda toga signala jednaka dvostrukom vremenu trajanja memorijskog ciklusa.

90

ORGANIZACIJA DMA ZA MIKROPROCESOR M6800

Direktni pristup memoriji zaustavljanjem procesora Postavljanjem linije HALT u logičku 0 (HALT ili DMA REQUEST-zahtev za DMA) od strane spoljnjeg logičkog sklopa preko upravljačkog sklopa DMA, zahteva se zaustavljanje mikroproceesora i postavljanje njegovih linija (R/W, adresna sabirnica, sabirnica podataka) u stanje velike impedance. U stanju HALT mikroprocesor se zaustavlja na kraju izvršene instrukcije, signal BA (Bus Available)-sabirnice raspoložive - postaje logičko 1, izlaz mikroprocesora VMA (Valid Memory Address) - adresa pravomoćna - postaje logička 0. Izlazne linije mikroprocesora koje se koriste logikom sa tri stanja prelaze u stanje velike impedance. Signal (takta) vremenskog vođenja φ2 prisutan je bez obzira da li je procesor u stanju HALT ili ne, i služi za sinhronizaciju prenosa podataka pri DMA. Izabrani memorijski čip je omogućen signalom AMV koji je uslovni invertirani signal VMA (mikroprocesora). Uslovljen je upravljačkim signalom od strane sklopa DMA u trenutku prenosa DMA Signal R/W generisan je od strane upravljačkog sklopa DMA, sa zadatkom da upravlja smerom prenosa. Prenos DMA inicijalizovan je postavljanjem HALT linije (DMA REQUEST) u logičku 0. Prelaz na ulazu HALT ne sme se dogoditi za vreme poslednjih 250ns signala φ1. Stoga je pogodno sinhronizovati prelaz signalom φ1 (prednjim bridom). Mikroprocesor uvek završava izvođenje tekuće instrukcije pre zaustavljanja. Ako se prelaz na liniji HALT dogodio unutar 100ns nakon prednjeg brida signala φ1, mikroprocesor će se zaustaviti nakon provođenja tekuće instrukcije. Ako se prelaz dogodio nakon 100 ns, mikroprocesor se zaustavlja tek nakon izvođenja sledeće instrukcije. Vreme odgovora na DMA zahtev zavisi od trajanja instrukcije.

Direktan pristup memoriji krađom ciklusa Osnova ove tehnike DMA je krađa ciklusa mikroprocesoru za prenos DMA. Ta krađa ciklusa mikroprocesoru odražava se u sporijem izvođenju programa za vreme prenosa DMA pri TSC=1. Tada se adresna sabirnica i linija R/W upravljačke sabirnice postavlja u stanje visoke impedance. TSC ne utiče na sabirnicu podataka ali kako pri TSC=1 φ1 mora biti 1 a φ2 mora biti 0 tako i sabirnica podataka prelazi u stanje velike impedance, budući da se signal φ2 upotrbljava za upravljanje ulazom DBE. Postavljanjem signala DBE u 0 (φ2 je nisko za vreme od 4,5 µs), sabirnica podataka prelazi u stanje velike impedance. Kočenje signala (takta) vremenskog vođenja zamrzava za trenutak rad mikroprocesora i dodeljuje sabirnice upravljačkom sklopu DMA. DMA “krade” ciklus (TSC=1 ograničeno je pri DMA na 3µs) i obavlja se prenos. Budući da se “zamrzavanje” može dogoditi u bilo kojem ciklusu, čak i usred izvođenja instrukcije od više ciklusa, maksimalno kašnjenje prenosa DMA je jedan ciklus. To znači da prenos DMA neće nikada čekati duže od 1µs, bez obzira koja se instrukcija izvršava. Za razliku od DMA zaustavljanjem procesora, vreme trajanja mu je ograničeno jer je mikroprocesor dinamička sprava i ovo kočenje može trajati najviše 4.5µs.

Direktan pristup memoriji multipleksiranjem operacija MPU/DMA Kada je memorija najmanje dvaput brža u odnosu na procesor, direktan pristup memoriji može se koristiti jednom polovinom memorijskog ciklusa a da ne utiče na performansu mikroprocesora. Upotrebom dva puta brže memorije omogućeno je da se u jednom normalnom procesorskom ciklusu (npr. 1µs) obave dva prenosa po sabirnici podataka. U prvom prenosu učestvuje upravljački sklop DMA. Signal CDMA upravljačkog sklopa DMA omogućava mu dostup do sabirnice podataka, adresne sabirnice,

91

te do dela upravljačke sabirnice. Istovremeno signal Cµp odspaja mikroprocesor od sabirnica postavljanjem izlaza međuregistra u stanje velike impedancije. Najbolje karakteristike opisane metode su u pogledu vremena izvođenja operacija mikroprocesora i brzine prenosa DMA, ali su potrebni složeni sklopovi i brža memorija. Spomenimo samo da se metoda multipleksiranjam MPU/DMA može primenjivati i na memorije koje nisu brže u odnosu na mikroprocesorski ciklus. To se postiže “rastezanjem” signala φ1 i φ2, odnosno smanjenjem frekvencije signala vremenskog vođenja. Očito je da se tako smanjuje brzina rada i samim tim i performansa mikroprocesora.

Sl.55- Vremenski dijagram direktnog pristupa memoriji multipleksiranjem operacija MPU/DMA PITANJA Prekidni ulazi kod M6800 IRQ NMI RES Prioriteti prekida sa više nivoa prekida Direktan pristup memoriji Tipovi DMA

92

PREGLED SKUPA INSTRUKCIJA (NAREDBI) I ASEMBLER

UVOD Ako digitalne sklopove-komponente mikroračunara prikažemo kao građevne blokove (sastavne jedinice), tada je softver ona vezivna materija, koja te blokove osmišljava i povezuje u funkcionalnu celinu. Realizacija složenijih digitalnih sklopova ili sistema koji se temelje na mikroprocesoru ruši nejasne granice između softvera i hardvera. Od stručnjaka koji rade na području mikroprocesorske tehnike očekuje se i zahteva poznavanje softvera jednako dobro kao i hardvera. Pod hardverom se podrazumeva računarska oprema - elektronski i digitalni sklopovi. Pojavom mikroprocesora javlja se i izraz “firmware” koji se odnosi na programe upisane (obično od strane proizvođača) u ispisne memorije. Uobičajeno je da se izrazom softver podrazumeva program, odnosno pisanje programa. Međutim, program kao rezultat programiranja samo je jedna od komponenti softvera. Softver se odnosi na programsku opremu - odgovarajuće tehnike programiranja, instrukcije, programe i slično. Softver čine tri glavna dela: - aplikativni programi pisani za rešavanje određenih - specifičnih problema, - sistemski programi koji služe za lakši razvoj aplikativnih programa,

- dokumentacija kao nužni deo svakog programa, sa svrhom da omogući efikasnu i pravilnu upotrebu programa.

Razvoj programa (aplikativnog ili sistemskog) prolazi kroz sledeće faze: - definicija problema, - oblikovanje programa, - kodiranje i prevođenje, - testiranje programa i otklanjanje grešaka, - izrada dokumentacije, - upotreba i održavanje programa.

OSNOVNI POJMOVI Nakon faza definisanja problema, izbora algoritma i oblikovanja programa (pisanje algoritma u jednom od algoritamskih jezika ili prikazivanja dijagramom toka) sledi faza kodiranja programa. Program u tome obliku definisan je kao niz instrukcija kojim računar izvršava algoritam. Budući da je konačan cilj programa transformacija ulaznih podataka u izlazne, u programu računara uključeni su i podaci, te njihove memorijske adrese. Računaru, kao izvršiocu, jedino je razumljiv jezik sastavljen od binarnih reči. Takav oblik programa naziva se mašinski ili objektni program (object program). Na primer, programski odsečak u mašinskom jeziku, koji izvodi sabiranje podatka 8A16 sa podatkom koji je na memorijskoj lokaciji 0A0F16 , ima za mikroprocesor M6800 sledeći oblik: 1 0 0 0 0 1 1 0 Instrukcija: Napuni akumulator A sa 8A16 Podatak 1 0 0 0 1 0 1 0 1 0 1 1 1 0 1 1 Instrukcija: Pribroji akumulatoru A podatak sa memorijske lokacije 0A0F16 Adresa 0 0 0 0 1 0 1 0 0 0 0 0 1 1 1 1 1 0 0 1 0 1 1 1 Instrukcija: Skladišti sadržaj akumulatora A na memorijsku lokaciju 0216 Adresa 0 0 0 0 0 0 1 0

93

Računar pribavlja prvu binarnu reč 1000 0110 (mikroračunar je u fazi PRIBAVI). Ona će se smatrati kodom instrukcije LDAA (napunu akumulator A), dok će sbinarna kombinacija 1000 1010 biti podatak koji se puni u akumulator A. Instrukcija 1011 1011 (ADDA - pribroji sadržaju akumulatora A podatak sa memorijske lokacije specificirane sa šesnaest bitnom adresom) - pribraja sadržaju akumulatora A podatak skladišten na adresi 0000 1010 0000 1111. Binarna kombinacija 1001 0111 predstavlja instrukciju STAA (skladišti sadržaj akumulatora A) kojom se sadržaj akumulatora A skladišti na adresu 0000 0010. U uvodnim poglavljima, gde je sistem mikroračunara bio razmatran kao crna kutija, naglašeno je da mikroračunar u svojoj memoriji skladišti podatke i instrukcije u istom obliku, te da instrukcije mogu biti smatrane podacima i obratno (von Neumannov model računara). Na koji način mikroračunar razlikuje instrukcijski kod od podatka ili od adrese? Kada je mikroračunar u fazi PRIBAVI, pribavljena reč bit će smeštena u instrukcijski registar i tumačena kao instrukcijski kod. Taj 8-bitni instrukcijski kod u sebi, pored ostalog, sadrži i informaciju da li je to instrukcijska reč koja se sastoji od 1, 2 ili 3 bajta i šta znače sledeći bajtovi koji je sačinjavaju. Na primer, kod 1011 1011 koji je smešten u instrukcijski registar pokazuje mikroprocesorskoj upravljačkoj jedinici da su sledeća dva bajta adresa operanda, koji će biti pribrojen sadržaju akumulatora A (primer za mikroprocesor M6800). Nakon izvođenja tekuće instrukcije (faze IZVRŠI), mikroprocesor prelazi u fazu PRIBAVI i zna da će sledeći bajt koji se pribavlja biti opet instrukcijski kod. Kodiranje i unošenje programa u mašinskom jeziku u mikroračunar naporan je i mukotrpan postupak, podložan greškama. Budući da je očito u kojoj je meri binarni oblik neprikladan za programera, na raspolaganju je međustapenica prema zbirnom (simboličkom) jeziku - oktalni ili heksadekatni kod. Prethodni programski odsečak prikazan u heksadekadnom kodu sledećeg je oblika: 86 8A BB 0A 0F 97 02 Očito je da je takav način pisanja i unošenja programa poboljšanje u odnosu na binarni. Do zabuna dolazi ređe, a greške se lakše otkrivaju. Postupak nastajanja programa u heksadekadnom ili oktalnom kodu je sledeći: nakon faze oblikovanja programa, programer zapisuje program kao niz mnemoničkih simbola (svaki mikroprocesor ima ovakvu tabelu). Pomoću tablica prevodi mnemoničke simbole u heksadekadni ili oktalni kod (ručno prevođenje). Nakon toga upotrebljava se heksadekadni ili oktalni punilac. U programima napisanim pomoću mnemoničkih simbola, umesto adresa podataka u heksadekadnom kodu upotrebljavaju se simboličke oznake. Programer, koristeći se simboličkim oznakama, na taj način pojednostavljuje postupak pisanja i provere programa. Povećana je i razumljivost programa. Na primer, programski odsečak primenom mnemoničkih simbola dobija oblik: (prevod u heksadekadni kod) LDAA # $8A 86 8A ADDA $ 0A0F BB 0A0F STAA $ 02 97 02 Primenom simboličkih adresa isti programski odsečak ima sledeći oblik: LDAA #DATA1 86 8A ADDA DATA2 BB 0A0F STAA SUMA 97 02 gde je DATA1 simbolička oznaka za podatak 8A, DATA2 i SUMA simboličke oznake za 0A0F i 02.

94

ASEMBLER ZA MIKRORAČUNAR NA OSNOVI MIKROPROCESORA M6800 Izvorni jezik za mikroprocesor M6800 sastoji se od 72 mnemoničke instrukcije i desetak naredbi za upravljanje tokom prevođenja. Izvorni jezik opisan je skupom dopuštenih znakova koje asembler može prepoznati: - Abecedom od A do Z, - Celim brojevima od 0 do 9, - Četiri aritmetičke operacije: +;−; ∗; /. - Znakovi koji se upotrebljavaju kao specijalni prefiksi: # određuje usputno adresiranje, $ određuje heksadekadni broj, @ određuje oktalni broj, % određuje binarni broj, ′ (apostrof) određuje znak ASCII. - Znakovi koji imaju specijalno značenje: B određuje binarni broj, H određuje heksadekadni broj, O (slovo O) određuje oktalni broj, Q određuje oktalni broj. - Četiri simbola - graničnika: prazno mesto (space), horizontalni pomak (Horizontal TAB), CR (Carrige Return), , (zarez). - Komentar u izvornom izrazu (source statement) može sadržavati znak ASCII od heksadekadne vrednosti 20 (SP) do 5F ( ) Izvorni program sastoji se od niza izvornih izraza. Svakoj liniji u izvornom programu odgovara jedan izraz. Linije mogu biti numerisane. Linijski broj je dužine od jedne do pet cifara. Svaki linijski broj mora biti veći od prethodnog u nizu izvornih izraza. Linijski broj nije sastavni deo programa, već služi kao pomoć pri uređivanju i popravljanju programa. Izvorni izraz razdeljen je na četiri polja na sledeći način: (linijski broj) labela operacijski kod (mnemonička oznaka) operand komentar. Polja su odvojena graničnikom ( ), jednim ili više praznih mesta. Na primer: 10 OPET STAA $25 POVRATAK U PETLJU linijski broj komentar graničnik operand labela operacijski kod Labela je simbolička adresa za instrukciju. Na primer, za program:

95

Izvorni program Prevedeni program adrese kodovi ORG 256 0020 0100 START LDAB $AF 0030 0100 C6 AF LDAA DATA 0040 0102 B6 010B - - - - - - JMP START 0080 0108 7E 0100 DATA FCB $10 0090 010B 10 Nakon prevođenja, labeli START je dodeljena adresa označene instrukcije (LDAB #$AF) 0100. Izraz u izvornom jeziku može biti i bez labele. Asembler za M6800 postavlja sledeća ograničenja za labele. - labela se mora sastojati od 1 do 6 alfanumeričkih znakova, - prvi znak mora biti slovo, - labela mora započeti u drugom praznom mestu nakon linujskog broja, - labela ne može biti jedan od znakova A, B i X. Prilikom izbora oznaka za labele potrebno je, pored pridržavanja pravila koje zahteva asembler, voditi ražuna i o sledećem: - Nije preporučljivo koristiti se slovima i oznakama koje mogu dovesti do zabune, na primer slova Z,Q,I mogu biti prilikom unošenja ili ispravki programa zamenjena za 2,0 ili 1. - Zbog lakšeg razumevanja programa i lakšeg ispravljanja grešaka, dobro je upotrebljavati labele koje simbolima asociraju na funkciju - mnemoničke labele. Na primer: START --- - - - JMP START - - - BRA KRAJ - - - KRAJ --- Polje operacijskog koda, odnosno polje mnemoničke oznake, sadrži mnemoničku oznaku instrukcije. Polje operanda, u zavisnosti od operacijskog koda, može biti prazno, sadržavati numeričku vrednost, adresu, labelu ili aritmetižki izraz. Polje se može sastojati od jednog ili dva člana odvojena zarezom. Polje komentara sledi polju operanda i odeljeno je jednim ili više praznih mesta. Tekst komentara ne utiče na mašinski kod i asembler ga ufazi prevođenja ignoriše. Tekst komentara se pojavljuje jedino prilikom ispisivanja izvornog programa i služi kao programska dokumentacija. Asembler omogućava upotrebu instrukcija u izvornom programu, koje se odnose na upravljanje radom asemblera. Takvim mnemoničkim simbolima ne dodeljuju se mašinski kodovi u fazi prevođenja. Instrukcije sa tim svojstvima nazivaju se pseudoinstrukcije. Primer takve pseudoinstrukcije je: ORG (Origin) - definiše numeričku adresu gde će biti skladišten prvi bajt sledeće instrukcije. Tako se asembler sastoji od mašinskih instrukcija, čiji su mnemonički kodovi u principu isti kao i kodovi u tabeli od proizvođača mikroprocesora i dodatnih pseudoinstrukcija koje upravljaju radom asemblera. Za asembler se kaže da je niži programski jezik jer je striktno vezan za konkretan

96

mikroprocesor i uglavnom je prevođenje 1:1 što znači jedna asemblerska instrukcija se prevede u jednu mašinsku (mikroprocesorsku) instrukciju.

97

ULAZNO - IZLAZNI (U/I) MEĐUSKLOPOVI

UVOD Saobraćanje mikroračunara sa spoljnim svetom jedna je od njegovih osnovnih funkcija. Ulazno-izlazni međusklopovi u tehnologiji LSI su komponente mikroračunara koje omogućavaju prenos informacija između mikroračunara i perifernih jedinica mikroračunara (prikazne jedinice CRT, jedinice diska i sl.) ili između mikroračunara i spoljnjeg sveta (npr. koračnog motora, regulatora i sličnih elemenata, koji su sastavni delovi nekog procesa). U/I međusklopovi u tehnologiji LSI obično su programibilni-što znači da im se funkcija može menjati programom upisanim u memoriju mikroračunara. Na primer, upisivanjem određenih kombinacija bitova (upravljačkih reči) u upravljačke registre tih međusklopova određuje se da li će međusklop biti ulazni ili izlazni i da li će moći generisati zahtev za prekid. Proizvođači mikroprocesora i komponenti mikroračunara nude širok izbor međusklopova LSI, koji mogu biti svrstani prema nameni na: - paralelne U/I međusklpove, - serijske U/I međusklopove, - međusklopove za posebne namene. Informacija koja se prenosi preko U/I međusklopova može biti prikazana u paralelnom ili serijskom obliku. Pri paralelnom prenosu savaki bit informacije ima svoju liniju, tako da se cela reč (npr. 8-bita) prenosi istovremeno. Prilikom serijskog prenosa bitovi - elementi reči šalju se u nizu preko jedne linije. Očito je paralelni prenos brži, međutim, treba mu više linija, pa ga se koristi u prenosima na malim udaljenostima. Serijskim prenosom možemo se koristiti na većim udaljenostima. Serijski U/I međusklop u kombinaciji sa modemom (koji također može biti izveden u tehnologiji LSI, npr. MC6860) omogućava prenos podataka preko telefonskih linija. U sklopove za posebne namene ubrajaju se serijski ili paralelni međusklopovi koji omogućavaju saobraćanje s određenom perifernom jedinicom, ili imaju specijalnu funkciju. Primeri takvih međusklopova su upravljački sklop diskete, (floppy disk kontroler), međusklop CRT (upravljački sklop za prikaznu jedinicu), programibilno brojilo (interval timer), upravljač prioritetom prekida i sl. Na primer, na Sl.56 je prikazan paralelni međusklop (sastoji se od dva dela A i B sa po deset U/I linija za rukovanje prenosom) i veze između procesa, U/I međuskolopa i mikroprocesora. Ulaz je tok od procesa ka mikroprocesoru a izlaz od mikroprocesora ka procesu.

Sl.56 - Veza procesa - U/I međusklop

Sl.57 prikazuje primer postupka rukovanja pri unosu podataka u mikroračunar. Od 10 U/I linija osam linija PA0-PA7 predstavljaju linije podataka a preostale dve CA1, CA2 su kontrolne linije koje upravljaju prenosom.

98

Sl.57 - Primer upotrebe linije za rukovanje prenosom pri unosu podataka u mikroračunar Postupak prenosa od međusklopa ka procesu sličan je opisanom postupku, uz zamenu uloga odredišta i izvora podataka. Opisani način prenosa rukovanjem zahteva od mikroprocesora ispitivanje bit-zastavice stanja u upravljačkom registru (da li je proces zahtevao posluživanje?), pa je taj postupak primer uslovnog programiranog prenosa. U načinu prenosa sa rukovanjem uz primenu prekida nije potrebno ispitivanje stanja zastavice. Postavljanjem logičkog 1 na liniji za rukovanje (“Odredište, imam podatak za tebe!”) proces prekida izvođenje glavnog programa mikroprocesora. Mikroprocesor prelazi na izvođenje prekidnog programa, signalizira prihvaćanje poruke, nalazi izvor zahteva za prekid (ako je više U/I međusklopova), vrši prenos podataka i postavlja izlaznu liniju za rukovanje u stanje 0 (“Podatak je primljen, spreman sam za sledeći prenos!”)

99

U/I MEĐUSKLOP PIA ZA M6800

Struktura programabilnog paralelnog U/I međusklopa PIA (Peripheral Interface Adapter) slična je prikazanoj blok-shemi na Sl.56.-57. Sl.58 prikazuje detaljniju internu organizaciju međusklopa PIA.

Sl.58 - Interna organizacija međusklopa PIA

U/I međusklop je podeljen na dve simetrične i nezavisne podstrukture registara. Svaka od njih se sastoji od registra podataka, upravljačkog registra i registra smera podataka. Mikroprocesor, prilikom saobraćanja sa PIA, svaki od tih registara smatra memorijskom lokacijom. Registar podataka i registar smera podataka imaju istu memorijsku adresu. Oni se interno razlikuju u PIA pomoću bita b2 upravljačkog registra. Upisani sadržaj u registru smera podataka određuje smer U/I linija na sledeći način: - ako je bit registra smera podataka 0, onda je odgovarajuća linija podataka ulazna, - ako je bit registra smera podataka 1, onda je njemu odgovarajuća linija podatka izlazna. Na primer, ako je sadržaj u registru smera podataka 11010010, U/I linije imaće na sledeći način određene smerove: PA0, PA2, PA3, PA5 ulazne linije, PA1, PA4, PA6, PA7 izlazne linije. Kada je adresiran registar podataka za vreme operacije upisivanja (R/W=0), u njega se skladište podaci prisutni na sabirnici podataka mikroračunara. Isti podatak pojavljuje se i na U/I linijama koje su programirane kao izlazne. Sadržaj registra podataka može biti izložen uticaju linija koje su programirane

100

kao ulazne, te se njegovi odnosni bitovi menjaju pod uticajem spoljnjih ulaznih signala.U postupku čitanja podaci prisutni na U/I linijama, koje su programirane kao ulazne, direktno se prenose na sabirnicu podataka mikroračunara. Postoje izvesne sklopovske razlike između strane A i B. Samo U/I linije strane B imaju periferni međuregistar sa tri logička stanja. Upravljački registar omogućava mikroprocesoru da uspostavi jedan od načina saobraćanja upravljanjem linijama za rukovanje prenosom (CA1, CA2, CB1, CB2). Uz to, pomoću sadržaja upravljačkog registra programer upravlja linijama zahteva za prekid (IRQA/B). Najznačajniji bitovi upravljačke reči b6 i b7 su bit zastavice za prekid, koje se postavljaju aktivnim prelazom na CA1 i CA2 (organizovanim kao ulazom). Sl.59 prikazuje organizaciju upravljačke reči. Sve što je rečeno u vezi funkcija za stranu A odgovara i za simetričnu stranu.

Sl.59 - Organizacija upravljačke reči za U/I međusklop PIA

Adresiranje međusklopa PIA ima svoje karakteristike:

- celi međusklop PIA predstavlja se mikroprocesoru kao 4-adresna memorija, iako ima 6 dostupnih internih registara,

- PIA ima tri linije za izbor čipa i dva izvoda (RS0, RS1) za izbor internog registra. Izvodi za izbor internog registra (RS0 i RS1) su obično priključeni na najmanje značajne adresne linije. Linije za izbor čipa CS0, CS1, CS2 omogućavaju delimično dekodiranje (čip je izabran pri uslovu CS0=1, CS1=1 i CS2=0). Sl.79 je primer povezivanja PIA na mikroračunar.

Sl.60 - Primer povezivanja međusklopa PIA

Primer adresiranja PIA, ako je međusklop određen adresama 8008, 8009, 800A, 800B Iz tabele se vidi da su registar smera podataka A i registar podataka A na istoj memorijskoj adresi 8008, te da bit b2 upravljačkog registra A interno određuje jedan od njih.

101

Primer adresiranja međusklopa PIA

102

SERIJSKI U/I MEĐUSKLOP Pri serijskom prenosu, informacije između mikroračunara i spoljnjeg sveta šalju se preko jedne linije u obliku niza impulsa. Zadatak serijskog U/I međusklopa je da pretvara paralelni oblik informacija u serijski (i obratno), sa dodatnim bitovima potrebnim za prenos. Prenos se obično vrši između udaljenih tačaka (npr. između dva udaljena terminala). Na Sl.61 je data šema asinhronog međusklopa ACIA (Asynchhronous Communications Interface Adapter) za M6800 .

Sl.61 - Organizacija programibilnog veznog sklopa za serijske prenose ACIA ACIA se mikroprocesoru predstavlja kao dvoadresna memorija, iako ima četiri interna registra. Međutim dva su samo upisna (WRITE ONLY) a dva samo ispisna (READ ONLY). Upisni registri su: - upravljački registar - predajni registar Ispisni registri su: - registar stanja - prijemni registar Na primer, ako se ACIA nalazi na adresi 8010 i 8011. Ako je R/W=0 (upis u registre) onda upravljački registar ima adresu 8010 a predajni registar 8011. Ako je R/W=1 (čitanje iz registara) onda registar stanja ima adresu 8010 a prijmeni registar 8011.

103

Asinhroni prenosi U serijskom prenosu podaci se prenose bit po bit. U njemu uvek postoje minimalno dva učesnika, prijemnik i otpremnik, Ako se radi o prenosima na daljinu, neophodno je vršiti modulaciju signala za prenos; inače, prijemnik i otpremnik mogu da budu jednostavno vezni sklopovi za serijske prenose (fiksni ili programibilni).

Sl.62 - Serijski prenos podataka

Kod asinhronog prenosa kad god mikroprocesor pošalje podatak (5 -8-bitni znak) programabilni vezni sklop na otpremnoj stani automatski dodaje na početak start-bit (niži nivo napona) i na kraj određeni broj stop-bita (viši nivo napona). Takođe, ispred prvog stop-bita dodaje se bit pariteta koji se koristi u proveri ispravnosti prenosa u prijemnoj strani. Na Sl.63. dat je primer formata podatka u serijskom prenosu.

Sl.63 - Otprema i prijem podataka U normalnom stanju, kada nema prenosa, linija je na višem naponu tako da prelazak na niži napon označava pojavu start-bita i početak prenosa podatka. Prelazak na niži napon na prijemnoj liniji označava start-bit i početak rada veznog sklopa kao prijemnika. Brojač bita omogućava identifikaciju podatka, bita pariteta i stop-bita. U slučaju da je prenos bio pogrešan postavlja se zastavica greške pariteta i taj podatak je dostupan mikroprocesoru. Iz ovoga se vidi da se sinhronizacija vrši na nivou jednog podatka (start i stop bit) i da je reakcija na pogrešan prenos podatka moguća neposredno nakon što je podatak prenesen. Osnovni nedostatak ove vrsta prenosa je što se veliki deo vremena troši na nekorisni prenos (start i stop-biti, bit pariteta i, eventualno, ako je korisni deo podatka kraći od 8 bita). Sinhroni serijski prenos Kod sinhronih serijskih prenosa vrši se prenos podataka u blokovima tako da se imaju manji gubici u nekorisnom prenosu. Kada mikroprocesor pošalje prvi podatak za prenos, programabilni vezni sklop generiše oznaku sinhronizacije, SYNC znak ili više uzastopnih SYNC znakova koji označava početak prenosa bloka podataka. Nakon ovoga slede podaci za prenos. Format bloka podataka za sinhroni prenos ispred i iza otpremnika predstavljen je na Sl.64.a. i 64.b. respektivno.

104

Sl.64 - Formati podataka u sinhronom serijskom prenosu

Prenos podataka na daljinu Pri prenosu podataka na daljinu obično se koristi telefonska linija (Sl.65.). Tada se obično koriste asinhroni međusklopovi (UAPP- univerzalni asinhroni primo-predajnik) koji imaju dadatni deo za konekciju sa modemom. Modem je uređaj za transformaciju binarnih signala u tonske (analogne). telefonska UAPP MODEM MODEM UAPP linija PREDAJNIK PRIJEMNIK MODEM: MODULATOR - DEMODULATOR ↓ ↓ prevodi binarrne prevodi signale (0,5V) tonske u tonske signale određenih u naponske frekvenci (0,5V)

Sl.65- Prenos podataka na daljinu

. . . .

105

DIGITALNO - ANALOGNI I ANALOGNO - DIGITALNI KONVERTORI Pri primeni mikroračunara za prikupljanje (akvizicija) i obradu podataka iz procesa i za upravljanje procesom, mikroračunar komunicira sa analognim svetom i za to su neophodni interfejsi posebne namene: D/A i A/D pretvarači (konvertori). Na Sl.66 data je {ema D/A konvertora sa operacionim pojačivačem. To je pojačivač napona sa velikim po apsolutnoj vrednosti a negativnim koeficijentom pojačanja (-A). Na ulazu je digitalna veličina - binaran broj realizovan sa osam naponskih linija (U0 - U7) sa sabirnice podataka mikroračunara. Na izlazu je anlogna veličina - izlazni napon Uiz proporcionalan brojnoj vrednosti na ulazu.

{ } 7,05,0 == iiU

( )4105;2

⋅≥⋅−== AUAURR izii

Zbir struja u čvoru T (Kirhofovo pravilo):

0...7

7

1

1

0

0 =−

+−

++−

+−

RUU

RUU

RUU

RUU iz

Smena : A

UU iz−=

RU

RRA

RRAU

RU

RU

RU iziz ≈

++++−=+++

11...1...707

7

1

1

0

0 N

akon smene : iiRR2

=

∑ ⋅−= i

iiz UU 2 Sl.66. Šema D/A pretvarača sa operacionim pojačivačem

Na Sl.67. prikazan je A/D konvertor za konverzijom metodom probe i greške. Rezultat konverzije se nalazi u brojačkom registru. Kao polazna procena digitalne vrednosti analognog ulaza uzima se nula (resetovanje brojačkog registra). U svakom narednom ciklusu (na pozitivnom bridu taktnog signala φ) sadržaj brojačkog registra (procena digitalne vrednosti analognog ulaza) se inkrementira i u D/A konvertoru se izvrši njegova D/A konverzija. Onog momenta kada rezultat D/A konverzije postane jednak ili premaši veličinu ulaznog napona (poređenje se vrši u komparatoru napona), ne generiše se više signal INCR za inkrementiranje brojačkog registra i A/D konverzija je završena.

>≤

=BABA

Yza0za0

Sl.67. Šema A/D pretvarača metodom probe i greške

Na Sl.68. data je šema vezivanja A/D konvertora za mikroračunar preko univerzalnog paralelnog interfejsa (PIA).

106

Sl.68. Šema vezivanja A/D konvertora za mikroračunar preko (PIA).

SOFTVER REALNOG VREMENA Veliki broj aplikacija mukroračunara spada u klasu aplikacija realnog vremena, odnosno onih u kojima mikroračunar radi uporedo sa određenim procesom prateći njegove promene u vremenu i eventualno delujući na proces. U ovim aplikacijama zahteva se da mikroračunar razlikuje pojedine događaje sa često malom vremenskom rezolucijom, kao i da deluje na proces u okviru dosta strogih vremenskih ograničenja. Pri tome se javlja problem obavljanja velikog broja asinhronih ulazno/izlaznih operacija nad uređajima koji zahtevaju različito složene hardverske vezne sklopove i programe za manipulaciju. U većini primera primene i programiranja računara pretpostavlja se da su ulazno/izlazne operacije apriori rešene. Međutim, treba istaći da je najveći broj primena mikroračunara vezan upravo za probleme izrade veznih sklopova i programa za obavljanje ulazno/izlaznih operacija. Kako stvarne primene podrazumevaju manipulisanje sa više ulazno/izlaznih uređaja, kao i obrade prikupljenih podataka, to se kao osnovni problem javlja integracija više sekvencijalnih programa koji mogu da budu inicirani programskim putem ili spoljnim događajima u celini koja će da obezbedi ispravno vršenje željenih funkcija. Onaj koji realizuje primene mikroračunara za realno vreme sigurno će se naći i u situaciji da izradi kompletan softver uključujući i programe koji vrše koordinaciju i raspoređivanje aplikacionih funkcija i koji čine takozvani izvršni sistem mikroračunara. Realizacija izvršnog sistema krije mnoge zamke i opasnosti, a ključna je za ispravno funkcionisanje celog sistema. Iz tog razloga ćemo u ovom delu opisati jedan pristup njegovoj realizaciji koji je pogodan za veliki broj jednostavnih primena realnog vremena i koji obezbeđuje pouzdano komuniciranje programa koji realizuju aplikacione funkcije.

107

OSNOVNE KARAKTERISTIKE TIPIČNIH PRIMENA REALNOG VREMENA Tipične primene realnog vremena u kojima se koriste mikroračunari obuhvataju sisteme za akviziciju podataka iz procesa i vođenje različitih protokola o ponašanju procesa u vremenu, direktno digitalno upravljanje, sisteme za praćenje laboratorijskih eksperimenata, komunikacione procesore, koncentratore podataka i slično. Kao karakteristične uzmimo primene akvizicije podataka i direktnog digitalnog upravljanja. U ovim primenama zahteva se direktna veza senzora i mernih instrumenata preko multipleksera, A/D konvertora i veznih sklopova za paralelne i serijske prenose sa mikroračunarom, kao i veza izvršnih organa sa mikroračunarom putem D/A konvertora ili drugih veznih sklopova. Takođe, za mikroračunar su često vezani i određeni standardni ulazno/izlazni uređaji, kao što su tastature, štampači, ekrani, displeji, pokazni instrumenti i slično. Senzorski signali i digitalni ulazi prihvataju se u mikroračunar periodično ili na zahtev. Analogni signali se prvo pretvaraju u digitalni oblik putem A/D konvertora. Dalje se vrši analiza prikupljenih podataka i alarmiranje ako njihove vrednosti izlaze iz dozvoljenih opsega, davanje izveštaja na štampaču u obliku predviđenih protokola, prikazivanje određenih podataka i informisanje na ekranu i displejima, obrada podataka korištenjem raznih algoritama, sažimanje podataka i dovođenje u željeni oblik i slično. Pri tome se razlikuju u principu dva načina rada mikroračunarskog sistema: (1) periodično ponavljanje određenih operacija uz korištenje prozivke ulazno/izlaznih uređaja (2) rad uz aktiviranje pojedinih funkcija na zahtev spoljnjih događaja. U oba ova načina rada često se traži da se vodi računa i o vremenu kada su, na primer, vršena merenja ili su se desili određeni događaji. Ovu funkciju obezbeđuje sat realnog vremena. U primenama direktnog digitalnog upravljanja nije dovoljno samo razlikovati pojedine događaje sa unapred zadatom rezolucijom, nego u okviru određenog vremena izdavati komande. Tipično, neophodno je održavati neke kritične promenljive procesa na unapred zadatim vrednostima. Na primer, to je slučaj sa regulacijom pritiska, temperature, nivoa, protoka brzine i slično. U upravljanje je uključen osnovni princip povratne sprege: vrši se poređenje stvarnih i zadatih vrednosti da bi se iz njihove razlike, odstupanja, preko upravljačkog algoritma, delovalo na veličinu pomoću odgovarajućih izvršnih organa. Primer ovakve situacije prikazan je na Sl.89.. Za ilustraciju upravljanja može se uzeti upravljanje nivoom tečnosti u rezervoaru.

Sl.69. Sistem povratne sprege pri upravljanju procesom pomoću računara

Kao izvršni organ može da se pojavi servomotor sa ventilom kome mikroračunar daje komande za otvaranje ili zatvaranje u skladu sa trenutnom vrednošću nivoa. Jasno je da je u velikom broju slučajeva mikroračunar neracionalno iskoristiti samo za upravljanje jednom promenljivom. Na bazi deljenja vremena i uzimanja u obzir minimalnog perioda u kome je potrebno obnoviti upravljanje datom promenljivom, mikroračunar može da prividno istovremeno upravlja sa više promenljivih, odnosno zatvori više regulacinih krugova. Pored nabrojanih funkcija, vrlo često računarski sistem mora da omogući promenu određenih parametara koji su u sklopu sistema za akviziciju i direktno digitalno upravljanje, što nameće potrebu za komuniciranje između čoveka i mikroračunara putem tastature i ekrana i dalje usložnjava programsku

108

organizaciju sistema. Pretpostavimo li da mikroračunar mora da vrši i upravljanje i akviziciju, onda on tipično mora da obavlja sledeće funkcije realizovane kao odvojene sekvencijalne programe: - A/D konverziju - konverziju jedinica u odgovarajuće tehničke jedinice, i obratno (na primer, napon koji odgovara temperaturi izražen u voltima u stepene Kelvina), - ispitivanje da li je veličina u dozvoljenom obimu, - filtriranje ulaznih veličina i eliminaciju šuma, - upravljačke algoritme, - održavanje sata realnog vremena, - ažuriranje slike na ekranu, - štampanje znakova na štampaču, - skaniranje tastature i prihvat znakova, - prikazivanje na ekranu, - aktiviranje zvučnih i svetlosnih alarma. PITANJA Ulazno izlazni međusklopovi - tipovi PIA za M6800 ACIA za M6800 Asinhroni i sinhroni prenos Prenos podataka na daljinu D/A , A/D konvertori Softver realnog vremena - akvizicija i upravljanje procesima