digitalnalogika - skripta

59
1 BELESKE SA KURSA - UVOD U ARHITEKTURU RACUNARA I PREDAVANJE 28.02.2007. god. Racunarstvo je u svetu prilicno sredjena oblast. Skoro 20 godina su stvari sredjene u ovoj oblasti i ne treba da ima nikakve promene. Racunarstvo je novija i egzaktna disciplina. Racunari su precizne sprave. Postoje dve organizacije: IEEE i ACM stare preko 50 godina, nastale su kao profesionalne organizacije u Americi. Association for Computer Machinery (ACM). Institute for Electronical and Electrotechnical Engineering (IEEE). Oba su svetska udruzenja. Pocele su u Americi, pa su se posle sirile po drugim kontinentima. De facto standardizaciona tela u oblasti racunarstva. ISO International Organizacion for Standardization, ali su IEEE i ACM jace od ISO u oblasti racunarstva. Ove dve organizacije se takodje bave i standardima iz oblasti racunarskog obrazovanja. Standarde ove organizacije objavljuju u javnim dokumentima. Prvi dokument je bio iz 1991 godine i onda je obicaj da se svakih 10 godina pregledaju ta dokumenta i 2001 je bila revizija. Sada imamo zato CC2001, i to je glavni autoritet, tj. Racunarska biblija iz racunarskog obrazovanja. Ko ima pojma o racunarstvu, drzi se ovog dokumenta. Jos jedna znacajnija revizija je bio izvestaj iz 2005, ali se i dalje smatra zvanicni dokument CC2001. 2011 ce biti donet ponovo glavni dokument. Ovaj dokument detaljno opisuje sta je to racunarstvo i sta treba da se radi u racunarskom obrazovanju to je glavni vodic kroz zivot i karijeru. Propisano je tacno sta treba da zna svako ko sebe smatra racunarcem (core). Podeljeno je racunarstvo na 12 13 oblasti (mreze, grafika, inteligentni sistemi, operativni sistemi). U svim tim oblastima postoji vise podoblasti, pa unutar podoblasti jos sitnije delove, i za svaki od tih delova lekcije, tj. razgranato do nivoa pojedinog casa. Skole mogu da se razlikuju, ali core (jezgro) mora da se ispostuje. Npr., oblast data structures ima oznaku DS, pa onda imamo DS1, DS2, DS3.... Svima u svetu je poznato to sta je (one oznake koje smo mi radili prilikom akreditacije!!!!). Racunarstvo je podeljeno na 5 grana (medjuizvestaj iz 2005. godine). Sve se to zove computer science (computing, racunarstvo). Informatika je nejasan pojam i trebalo bi ga ukinuti ovo je Tubino misljenje. Dakle imamo, computer science koji se deli na: 1. Computer science (isto kao i glavna oblast, pomalo nejasno, ali je ovde to podoblast) matfakultet, teoretisanje 2. Computer engineering elektrotehnicki, vise prakticno 3. Informational Systems kasnije, sa pojavom bazama podataka, gde je potrebno obradjivati velike kolicine podataka, rezervacija karata, itd. FON, poslovna primena 4. Software engineering programiranje, ali aspekt inzenjerstva jer su u pitanju veliki projekti, pa je potrebno koordinirati veliki broj ljudi 5. IT Information Technology (u dokumentu iz 2005. godine) projektovanje informacionih sistema kao i pod 3, ali vise sa aspekta hardvera, prakticna primena hardvera. Prve tri oblasti su starije, druge dve su se kasnije javile. Sve oblasti se diferenciraju na osnovu 4 kriterijuma: 1. softverski 2. hardverski 3. prakticni 4. teoretski Kod nas se u poslednje vreme IT termin pogresno upotrebljava. Svi IT upotrebljavaju, jer je novo i aktuelno (pogotovo fakulteti za naziv svojih smerova, i to je pogresno). Ovakva podela je zvanicna svetska podela i to je sada zvanicni svetski standard. Ovaj kurs se zove Uvod u arhitekturu racunara. Ovde se radi o hardverskim kursevima, tj. hardverska sekvenca kurseva, fizicke komponente racunara. Ovde imamo dva pojma: 1. arhitektura racunara 2. organizacija racunara I jedna i druga stvar su srodne u smislu da se radi o hardveru. Ako hocemo da pravimo razliku, arhitektura je spoljni aspekt, od cega se sastoji racunar spolja, ali vise sa programerskog aspekta, registri, sta programer radi sa njima. Organizacija je vise unutrasnji aspekt, iznutra, kako je napravljen racunar. Izmesana su ova dva pojma, ali se moze napraviti razlika. Uobicajeno je kada se kaze arhitektura, da se misli i na organizaciju. Ovde se rade obe stvari. Cilj hardverskih kurseva je da se razume kako racunar radi. Kako racunar radi (kako auto radi), a programiranje bi bilo voznja automobilom. Arhitektura su elementi od kojih se sastoji racunar, a organizacija bi bila kako to sve funkcionise, tj. Kako povezani elementi funkconisu. Ovde ce da se napravi kratak uvod, tj. pojednostavljen uvod koji je dobar sa logicko konceptualnog aspekta (razumeju se komponente), ali je sa fizickog aspekta los (ne razume se fizika), ali tako mora jer se nema vremena. Prvi uvod je konceptualno dobar, ali je prakticno neupotrebljiv to se sada radi. A na nekom drugom kursu ce da se dopuni drugim uvodom (primer sa tockom automobila, prvi uvod drveni tocak, a pravi uvod prave gume, pumpanje, profili...). Prvi deo kursa se zapravo zove Digitalna logika razgradjivanje delova na apstraktom nivou, ali u praksi ne radi, pa je drugi deo kursa ono sto je cilj kako racunar radi, pa onda treci deo kursa VLSI dizajn prakticna primena.

Upload: bozapub

Post on 07-Dec-2015

32 views

Category:

Documents


7 download

DESCRIPTION

DIGITALNA LOGIKA

TRANSCRIPT

Page 1: digitalnaLogika - skripta

1

BELESKE SA KURSA - UVOD U ARHITEKTURU RACUNARA I PREDAVANJE – 28.02.2007. god. Racunarstvo je u svetu prilicno sredjena oblast. Skoro 20 godina su stvari sredjene u ovoj oblasti i ne treba da ima nikakve promene. Racunarstvo je novija i egzaktna disciplina. Racunari su precizne sprave. Postoje dve organizacije: IEEE i ACM – stare preko 50 godina, nastale su kao profesionalne organizacije u Americi. Association for Computer Machinery (ACM). Institute for Electronical and Electrotechnical Engineering (IEEE). Oba su svetska udruzenja. Pocele su u Americi, pa su se posle sirile po drugim kontinentima. De facto standardizaciona tela u oblasti racunarstva. ISO – International Organizacion for Standardization, ali su IEEE i ACM jace od ISO u oblasti racunarstva. Ove dve organizacije se takodje bave i standardima iz oblasti racunarskog obrazovanja. Standarde ove organizacije objavljuju u javnim dokumentima. Prvi dokument je bio iz 1991 godine i onda je obicaj da se svakih 10 godina pregledaju ta dokumenta i 2001 je bila revizija. Sada imamo zato CC2001, i to je glavni autoritet, tj. Racunarska biblija iz racunarskog obrazovanja. Ko ima pojma o racunarstvu, drzi se ovog dokumenta. Jos jedna znacajnija revizija je bio izvestaj iz 2005, ali se i dalje smatra zvanicni dokument CC2001. 2011 ce biti donet ponovo glavni dokument. Ovaj dokument detaljno opisuje sta je to racunarstvo i sta treba da se radi u racunarskom obrazovanju – to je glavni vodic kroz zivot i karijeru. Propisano je tacno sta treba da zna svako ko sebe smatra racunarcem (core). Podeljeno je racunarstvo na 12 – 13 oblasti (mreze, grafika, inteligentni sistemi, operativni sistemi). U svim tim oblastima postoji vise podoblasti, pa unutar podoblasti jos sitnije delove, i za svaki od tih delova lekcije, tj. razgranato do nivoa pojedinog casa. Skole mogu da se razlikuju, ali core (jezgro) mora da se ispostuje. Npr., oblast data structures ima oznaku DS, pa onda imamo DS1, DS2, DS3.... Svima u svetu je poznato to sta je (one oznake koje smo mi radili prilikom akreditacije!!!!). Racunarstvo je podeljeno na 5 grana (medjuizvestaj iz 2005. godine). Sve se to zove computer science (computing, racunarstvo). Informatika je nejasan pojam i trebalo bi ga ukinuti – ovo je Tubino misljenje. Dakle imamo, computer science koji se deli na: 1. Computer science (isto kao i glavna oblast, pomalo nejasno, ali je ovde to podoblast) – matfakultet, teoretisanje 2. Computer engineering – elektrotehnicki, vise prakticno 3. Informational Systems – kasnije, sa pojavom bazama podataka, gde je potrebno obradjivati velike kolicine

podataka, rezervacija karata, itd. – FON, poslovna primena 4. Software engineering – programiranje, ali aspekt inzenjerstva jer su u pitanju veliki projekti, pa je potrebno

koordinirati veliki broj ljudi 5. IT – Information Technology (u dokumentu iz 2005. godine) – projektovanje informacionih sistema kao i pod 3, ali

vise sa aspekta hardvera, prakticna primena hardvera. Prve tri oblasti su starije, druge dve su se kasnije javile. Sve oblasti se diferenciraju na osnovu 4 kriterijuma:

1. softverski 2. hardverski 3. prakticni 4. teoretski

Kod nas se u poslednje vreme IT termin pogresno upotrebljava. Svi IT upotrebljavaju, jer je novo i aktuelno (pogotovo fakulteti za naziv svojih smerova, i to je pogresno). Ovakva podela je zvanicna svetska podela i to je sada zvanicni svetski standard. Ovaj kurs se zove Uvod u arhitekturu racunara. Ovde se radi o hardverskim kursevima, tj. hardverska sekvenca kurseva, fizicke komponente racunara. Ovde imamo dva pojma:

1. arhitektura racunara 2. organizacija racunara

I jedna i druga stvar su srodne u smislu da se radi o hardveru. Ako hocemo da pravimo razliku, arhitektura je spoljni aspekt, od cega se sastoji racunar spolja, ali vise sa programerskog aspekta, registri, sta programer radi sa njima. Organizacija je vise unutrasnji aspekt, iznutra, kako je napravljen racunar. Izmesana su ova dva pojma, ali se moze napraviti razlika. Uobicajeno je kada se kaze arhitektura, da se misli i na organizaciju. Ovde se rade obe stvari. Cilj hardverskih kurseva je da se razume kako racunar radi. Kako racunar radi (kako auto radi), a programiranje bi bilo voznja automobilom. Arhitektura su elementi od kojih se sastoji racunar, a organizacija bi bila kako to sve funkcionise, tj. Kako povezani elementi funkconisu. Ovde ce da se napravi kratak uvod, tj. pojednostavljen uvod koji je dobar sa logicko konceptualnog aspekta (razumeju se komponente), ali je sa fizickog aspekta los (ne razume se fizika), ali tako mora jer se nema vremena. Prvi uvod je konceptualno dobar, ali je prakticno neupotrebljiv – to se sada radi. A na nekom drugom kursu ce da se dopuni drugim uvodom (primer sa tockom automobila, prvi uvod – drveni tocak, a pravi uvod – prave gume, pumpanje, profili...). Prvi deo kursa se zapravo zove Digitalna logika – razgradjivanje delova na apstraktom nivou, ali u praksi ne radi, pa je drugi deo kursa ono sto je cilj – kako racunar radi, pa onda treci deo kursa VLSI dizajn – prakticna primena.

Page 2: digitalnaLogika - skripta

2

Sada smo zavrsili uvodni deo koji se odnosi na sve tri dole navedene celine : 1. Digitalna logika (shematizovano) 2. Uvod u arhitekturu (kako racunar radi) 3. VLSI dizajn (isto kao i digitalna, samo prakticna primena)

Sada se pocinje sa digitalnom logikom (nije klasicni kurs digitalne logike, vec je dodato uvodnih nekoliko casova da bi se neki pojmovi razumeli). DIGITALNA LOGIKA Procesori, racunari, uopste, digitalna tehnika su uredjaji paradoksalni, sa mnogo neocekivanih stvari. Oni su prema nama neuporedivo brzi. Ljudi imaju intuiciju, predrasude, bazirane na sopstvenom iskustvu, a racunari su brzi pa intuicija vara cesto. Procesori su najkomplikovaniji uredjaji na izvestan nacin, a sa druge strane su mnogo jednostavni. Kompleksni uredjaji su oni uredjaji koji imaju mnogo sastavnih delova. Ukupan broj delova u jednom racunaru moze da bude milijarda (samo procesor ima par stotina miliona delova). Ali sa druge strane, imamo da iako je taj racunar napravljen od milijardu delova, svi elementi su prakticno jednaki (isti), taj isti deo se ponavlja milijardu puta (to je paradoks). Takodje imamo i dodatnu cinjenicu – kod racunara imamo pitanje sta je gradivni element (pitanje za sebe, sta je taj element, kako da ga poboljsavamo), a drugo pitanje je kako sastaviti te gradivne elemente (ne zanima nas sta je taj gradivni element, vec kako da ih rasporedim). Ova dva pitanja su u potpunosti odvojena. Razvoj racunarske tehnologije zavisi od razvoja tog gradivnog elementa (ovo je veoma dinamicko, brzo napreduje), a drugo pitanje (kako da sklopimo) je staticka oblast i taj deo se ne menja (isto je bilo i pre mnogo godina). Samo u racunarstvu imamo ove dve oblasti koje nisu povezane i potpuno se odvojeno razmatraju.

Gradivni element Dinamicka oblast

Sastavljanje gradivnog elementa Staticka oblast

Znaci, jedno je pitanje gradivnih delova, a drugo je pitanje slaganje tih gradivnih delova, tj. arhitektura. Klasicna digitalna logika se bavi arhitekturom (slaganjem elemenata), medjutim, ona ne ide mnogo nisko. Mi cemo ovde da uradimo i to nisko, da bismo bolje razumeli. U tom gradivnom elementu je sadrzan sav napredak tehnologije i sve sto se desava u racunarima. Tu se uplice eksponencijalni razvoj. Razvoj racunarskog hardvera je eksponencijalan. Mooreov zakon (podpredsednik i koosnivac Intela) – performanse racunarskog hardvera se udvostrucuju svakih 18 meseci (nije dramaticna izreka, ne zvuci narocito). Mi intuitivno nemamo predstavu eksponencijalnosti (10 na 100 nam je isto sto i 10 na 105, ali nije tako). Za Mooreov zakon su ljudi smislili jednu recenicu (da bi pobedili nasu intuiciju). Uzeli su da uporedjuju racunare i automobile. 1945 je pocetna godina nastanka racunara. I uzeli su do 1995 godine (50 godina). Uzeli su ovaj raspon od 50 godina da bi uporedili automobile i racunare. Uzeli su listu parametra koji se uporedjuju (automobili – cena, brzina, racunari – memorija, koliko kostaju…). Ispisu se ti svi parametri za automobile i racunare za 1945 godinu i za 1995 godinu. i doslo se do recenice: Da su se automobili razvijali onom brzinom kojom su se razvijali racunari, isli bi 700 km/h, trosili bi pola deci goriva, kostali bi 2 dolara, a prevozili bi 300 putnika (ovom recenicom se pokazuje kako nasa intuicija nama ne dozvoljava da shvatimo razvoj racunarstva). Dakle, racunari se strahovito brzo razvijaju, a ceo razvoj je skoncentrisan u jednom jedinom grdivnom elementu. Stvari se eksponencijalno unapredjuju samo sa strane tog gradivnog elemnta, a ono kako ih slazemo se ne poboljsava. Postoji isto jedan stari primer eksponencijanog. Prica o navodnom izumitelju igre saha. Pre par hiljada godina, neki covek je izmislio sah, i pokazao je tu igru nekom caru. Ovaj je hteo da ga nagradi, ali taj izumitelj je rekao da bi hteo jedno zrno psenice na prvom polju, a drugom 2 zrna, pa 4, pa 8, 16, pa 256 zrna… Ovde se radi isto sto i u Moorevom zakonu (eksponencijalno, pa to ide u beskonacnost jako brzo…..). Kada su ljudi uzeli to pa preracunavali, isplao bi da je na tu sahovsku tablu stajalo psenice kolika je 200 – godisnja proizvodnja psenica (ovo je primer koji objasnjava koliko mi intuitivno ne razumemo eksponencijalno). Isto tako postoji jos jedan primer. Problem putujuceg trgovca. Posmatramo 20 gradova. Neki putujuci trgovac mora da obidje sve gradove. Za svaki par gradova se zna cena putovanja. Problem je da se nadje najjeftiniji put, tj. da najmanje para potrosi za taj put. (ovaj zadatak deluje veoma razuman). Mnogi bi se uhvatili da to izracunaju za neku nadoknadu (naivni za 100 evra, manje naizvni za 10000 evra…). Za resenje ovog problema bi trebalo 1000 godina, jer je ovaj problem eksponencijalan. Kada izanaliziramo, iz prvo grada moze da ode u bilo koji od 19 gradova, pa iz drugog u bilo koji od mogucih 18… Broj fiksiranih ruta je 19!. To je veoma neugodan broj. Stilingova formula, n! se prilicno ponasa kao n na n!!!! Kada napisemo ovo ne deluje strasno, medjutim nevolja je sto nemamo intuitivan osecaj beskonacnosti. Najbrzi racunar bi radio 1000 godina, pa se tako ovaj problem smatra neresevim. Ovo su bili razliciti primeri eksponencijalnog, koji pokazuju koliko trebamo da budemo obazrivi sa ovim. Sa ovim treba isto da povezemo pojam logaritamski (suprotno od eksponencijanog). Sa eksponencijalnim nema spasa, a kada uspemo nesto da stavimo pod logaritam, onda je mnogo jednostavnije. Naivne stvari su pod eksponentom neuhvatljive, a strasne stvari su pod logaritmom resive. Uzme se neki broj do 1000 (postavljaju se pitanja i onaj ko zamislja broj odgovara sa da ili ne, i onaj koji postavlja pitanja pogodi broj). Ova pitanja ce da naprave logaritamsku pretragu (svakim pitanje prepolovi

Page 3: digitalnaLogika - skripta

3

interval – da li je broj veci od 500, da li je veci od 250, suzavamo hiljadu na interval jedinice). Na ovaj nacin sa logaritmom se i kontrolisu cipovi. Uzememo procesor od milion ili 100 miliona elemenata, i znacemo uz princip logartma tacno koji je koji i cemu sluzi koji cip (procesor je hijerarhijski sredjen, znamo da se on deli na 5, 6 delova, pa se svaki od tih delova deli na jos nekoliko delova, pa sve tako….. i tamo logaritmom u nekoliko desetina koraka mozemo tacno da vidimo sta je koji element). Ovde sve posmatramo kao drvo sa korenom i odredjenim faktorom (na koliko se grana stablo grana), i onda mozemo brzo da dodjemo do detalja (listova, npr naredbi). Ovo sve pomaze kod velikih sistema. Sve kod velikih sistema dobro funkcionise jer su ti sistemi hijerarhijski organizovani i lako mozemo da dodjemo do bilo kog elemenata u samo nekoliko koraka. Kada su razmotrene ove osnovne zakonitosti, idemo ka objasnjavanju tog gradivnog elemnta, kako radi, itd. IV PREDAVANJE – 21.03.2007. god. Dakle, poceli smo digitalnu logiku proslog casa, ali ne njen klasicni deo, vec deo koji joj prethodi. Sada bi trebalo da se prekidac, kao osnovna gradivna jedinica detaljnije pogleda. Osnovni gradivni element jeste prekidac. To je prekidac specijalnih osobina (nije kao prekidac za svetlo, cesma za vodu je isto prekidac – ili pusta ili ne pusta vodu). Ovde nam treba prekidac, koji se kontrolise onim sto on sam kontrolise, da bi bila omogucena kontrolna sprega (svaki prekidac nesto kontrolise, slavina voda, svetlo, struja, ali se oni kontrolisu necim drugim, mehanickom silom,…). Sa gledista arhitekture kazemo, dajte nam 100000 prekidaca, i napravicemo neki procesor. A sa gledista gradivnog elementa, ljudi naprave prekidac i ne zanima ga gde ce da ide. Tokom istorije je bilo raznih vrsta prekidaca. Razvojoj je bio ili kvantitativan ili kvalitativan – naizmenicni napredak (bilo kvalitativan, bilo kvantitativan). Kvalitativan razvoj (kada je napavljen sustinsko drugaciji prekidac), pa kvantitativan… Ovaj prekidac moze da prekida bilo sta – najzgodnije bi bilo struju ili napon. Pitanje bi bilo, koji bi bio najjednostavniji prekidac za struju koji zadovoljava one gore uslove. Ovakvi prekidaci postoje odavno, i interesantno je da sada ljudi imaju manje kontakta sa tim prekidacem i manje znaju o njemu nego pre mnogo godina. Prekidac koji zadovoljava ove osobine zove se relej. Danas su ti releji sakriveniji. Relej je naprava koja se koristi za prekidanje ili uspostavljanje strujnog kola putem elektromagneta koji otvara i zatvara strujne kontakte.

Page 4: digitalnaLogika - skripta

4

Princip rada releja. U gornjem delu slike, relej je isključen. Kontakti dalje od elektromagneta (žuti cilindar) su otvoreni. U donjem delu slike relej je uključen, kotva pomera srednji kontakt koji sad uspostavlja vezu sa desnim. Desni par kontakata je dakle normalno otvoren. Ranije su se releji prodavali na ekskluzivnim mestima, pa su bili vidljiviji (ima ih na autu, kontrolisu paljenje svetla…). Relej je vrlo jednostavan uredjaj, imamo kalem u kome imamo neko jezgro, pa pleh, pa metalni pokrivac, pa kontakt. Pitanje kod releja je da li struja moze da tece, kontrolise se elektromagnetom, a elektromagnet se kontrolise strujom (uslov da kontrolise sam sebe je ispunjen – da li tece struja se kontrolise elektromagnetom, a elektromagnet se kontrolise strujom (samim sobom)). Dakle, ovo je resenje i potrebno je samo da se on fabricki proizvede. Postoji shematski simbol za prekidac (struja tece izmedju a i b, a kontrolise se tackom c). Mi sada kazemo sa aspekta arhitekture da je prekidac dat i sada ih samo slazemo. Sada moze da se razmatra da li moze da se napravi neki drugi prekidac (imamo a, b, c i to je to, samo pitamo da li moze da bude brze, jednostavnije, tj. pokusavamo da optimizujemo ove parametre). Kroz istoriju se pokazalo da je tu moglo da se pronadje nesto sustinski drukcije – kada se prekidacki element sustinski menjao, radi se o novoj generaciji racunara (kvalitativni pomak), pa se onda to sustinski drukcije kvantitativno poboljsava. Ovo sa relejima se koristilo, sada se naravno ne koristi i to se zove nulta generacija racunara (nisu pravi racunari, ali nisu mogli ni da se zanemare, pa su zato nazvani nultom generacijom, vreme pre drugog svetskog rata). Ovaj relej funkcionise, ali iako se on kontrolise i prekida se strujom, ovaj uredjaj radi elektronski, ali radi i mehanicki, a mehanicki uredjaji ne mogu da budu mnogo kvalitetni. Zato sto ovi uredjaji mehanicki prekidaju, ne mogu da budu mnogo brzi (zvonce na vratima radi na ovom istom principu). Ovaj uredjaj moze stotinak puta da prekine u sekundi (dobro je u odnosu na coveka, ali je ograniceno). Krenulo se na trazenje necega drugog. Pred kraj drugog svetskog rata, do 1945 godine, uzet je drugi uredjaj elektronka – elektronska cev (koristio se u radio elektronici). Isto je jednostavne konstrukcije, npr trioda. Iz jednog staklenog balona se izvuce vazduh (napravi se vakum, da se e ne bi sudarali sa vazduhom). Napravi se elektroda koja ce da propusta elektrone. Mora da se podgreje da bi lakse otpustala elektrone. Ovo je nekakav provodnik (kroz vakum se propustaju elektroni). Na ovaj nacin smo dobili istu stvar kao kod releja, A, B i C (isto kontrolise struju i kontrolise se strujom). Razlika u odnosu na relej je sto je ovaj uredjaj potpuno elektronski. Ovaj uredjaj moze da ide i milijardama puta u sekundi (sustinska razlika). Ovi uredjaju su npr od releja x2 skuplji, x2 veci, ali je to zanemarljivo u odnosu na sto sto su milion puta brzi. Ovo je prva generacija racunara (1945, ENICAC je prvi predstavnik tog racunara, ENIAC je imao 18000 elektronki). Veliki broj tih elektronki na jednom mestu, mnogo struje trosi i veliki toplotu oslobadja, pa se onda radilo na smanjenju potrosnje, manjem zagrevanju i to je sve deo tihog razvoja unutar jedne generacije (kvantitativni skok). Posle ovoga je doslo do pojave tranzistora. Ideja prekidaca moze da se uradi i na drugim principima. Jos je 1928 godine razmatrana ideja kako bi mogao da se napravi neki novi tip prekidaca (u praksi tada nije moglo nista da bude od toga). Uzme se plocica od nekog materijala (poluprovodnici, silicijum, germanijum). Napravi se kanal koji ce da ima visak elektrona. Onda se napravi drugi kanal koji isto tako ima visak elektrona. Ta mesta koja imaju visak elektrona bi trebala da provode struju (struja je ustvari prebacivanje elektrona sa jednog mesta na drugi). Stavimo zicu preko koje tecu elektroni. Dakle, 1928 godine ideja nije mogla da se realizuje (3 kockice od germanijumskih materijala i pronadjeni su komplikovani zakoni). Ovo 1928 godine se isto zvao tranzistor i Belove lab zbog komercijalizacije nisu mogle da ga proizvode. I kasnije je moglo da se koristi. Ovo je kvalitativni skok. Elektronka je bila npr 3x3cm, a tranzistor je bio mnogo manji od elektronke po zapremini. I tranzistor nema zagrevanje kao elektronka (1000x manja zapremina, manja

Page 5: digitalnaLogika - skripta

5

putrosnja i manje zagrevanje). Prelazak sa elektronke na tranzistor je poboljsanje od nekoliko miliona. Ovo je potpuno nova generacija racunara. Druga generacija racunara – tranzistori (od sredine 50 – tih godina, pa nadalje). Obicno se prihvata danas, da posle tranzistora postoje jos 3. i 4. generacija. Kod trece generacije se ne radi o sustinski novom gradivnom elementu. Generacije se baziraju na tipu gradivnog elementa koji se koristi. Kod 3. generacije imamo drugaciju organizaciju postojeceg prekidackog elementa. Treca generacija je modularna tehnologija. Nama ne trebaju prekidaci kao pojedinacni delovi (njih cemo u svakom slucaju sastavljati). Zasto mi da vec u fabrici ne sastavljamo te delove, kada nam u svakom slucaju trebaju sastavljeni. Ovako dobijamo nekakve ustede, jer tranzistore spajamo vec u fabrikama (u fabrici ih spojimo na maloj plocici, tranzistori su bili u metalnoj kapici da bi mogli da njima da manipulisemo – 1cm velicine. Bez tih kapica bi bili samo velicine ciode i stavljamo ih u kapice samo zbog toga da bi mogli sa njima da fizicki manipulisemo). Ako ih spajamo u fabrici, ne trebaju nam kapice, jer fizicki ne trebamo da manipulisemo, i zato samo te tranzistore (velicine ciode) stavljamo na male plocice, i onda tim grupama tranzistora na plocicama na manipulisemo. Ovo je pomak jer je opet 1000 puta manje, iako se isto radi o tranzistorima. Ovo je treca generacija (ranih 60 – tih godina). Kasnijih 60 – tih i 70 – tih godina dolazi cetvrta genracija – VLSI. Ovde se vracamo na staru ideju tranzistora cija je najinteresantnija osobina da je on dvodimanezionalan (planaran). Treca dimenzija je toliko tanka, pa se zove dvodim (kao boja na zidu koji farbamo). Bitno je sto on moze da se pravi postupkom koji lici na fotografski postupak (posto je dvodim) – kvalitativni postupak. Ovde raskidamo vezu 1 na prema 1 sa prekidackim elementima (ranije je sve bilo 1 na 1). Ovde ih pravimo sve odjednom (ne jedan po jedan). Dakle, ovde imamo jedno pravljenje i nas se ne tice koliko imamo tranzistora u jednom pravljenju (primer sa slikanjem slike i snimanjem fotografije). Ovde je kvalitativna razlika. Cetvrta generacija se bazira na tehnologiji gde se svi prave odjednom. Ustalilo se da se generacije smenjuju sa periodom od 5 – 10 godina. Medjutim, posle VLSI – ja nema pete generacije. Cetvrta generacija traje od kraja 60 – tih godina do danas. Mooreov zakon nije zaustvljen, jer su unustrasnje tihe promene burnije, a sustinske se ne menjaju. Ovde je sada faktor minijaturizacija. Ovaj faktor se linearno menja, a povrsinski elementi se menjaju kvadratno. Sa minijaturizacijom se pomocu tihih promena odrzava Mooreov zakon. Ovde je uvodni deo o VLSI, nastavak ce biti u sledecem kursu.

Generacija Vreme Gradivni elemnt Objasnjenje Skok

0 Pre II s.r relej Elektro – mehanicki uredjaj

1 do 45 elektronka Potpuno elektronski Kvalitativan

2 od 50 tranzistor poluprovodnici, jos od 1928

Kvalitativan

3 rane 60 tranzistor modularno

Ukidaju se kapice, spajanje u fabrici

Kvantitativan

4 kasne 60, rane 70 VLSI sve odjednom

Dvodimenzionalna tehnologija

Kvalitativan

Ovo je zvanicna podela na cetiri generacije. Generacije racunara se definisu na osnovu prirode prekidackog elementa. Mnogi su pokusali da menjaju ovu definiciju i da smisljaju nove generacije koje ne postoje (neki kazu pojavile se mreze, pojavila se multimedija). Po literaturi se spominje peta generacija (ova generacija ne postoji, 80 – tih godina, kada je bilo vreme da se smene generacije, a smene nije bilo, ovo treba samo informativno da se zna), kaze se da je to bila softverska revolucija. Trebala je da bude bazirana na vestackoj inteligenciji i PROLOG jeziku (pokretac Japanska vlada). Bilo je dosta diskusija o ovome i zato je potrebno da se spomene. Bila je masa glupih clanaka o ovome (srecna buducnost, bice racunari svuda, bice prozori sa racunarom i PROLOGOM…., OVDE PLJUJE SVE TO). Ovde su bile kolateralne stete – PROLOG je bio ta steta (solidan jezik koji je propao zbog ovih prica). Isto se tako pokazalo da je finansiranje Japnske vlade ustvari samo malo (2 miliona dolara). Ovo sto smo ispricali do sada se desavalo. Moze da se uradi i ekstrapolacija na drugu stranu (unazad, ono sto se nije desilo, a moglo je da se desi). Elektronke su izmisljene 1910 godine, i moglo je teoretski vec 1925 godine da se uradi sve sa elektronkama sto se uradilo 1945 godine. Ta ekstrapolacija moze da ide do 1910 godine, ne ranije. Nije morala da bude struja u pitanju, vec je mogla da bude voda. Mogla je da se uzme cesma npr (prekidac koji se kontrolise onim sto sam kontrolise - vodom). U skladu sa celom pricom, ova tehnologija cesme je dovoljna da se napravi prekidac. Mogli smo racunare ekvivalentne ovim racunarima da pravimo u Starom Egiptu (tehnologija prekidaca je postojala, ali je nedostajala arhitektura – znanje, znanje je jedno (arhitektura), a tehnologija prekidaca je drugo). Dakle, tehnologija nije bila potrebna da bude na visokom nivou (prica o polju i cesmama – kako bi egipcani mogli da naprave racunar na polju velikom uz pomoc cesmi, memorijski elementi su kofe, kada se zavrsi, pregledamo kofe, napunjena je 1, prazna je 0). Ova ekstrapolacija izgleda kao sala, ali je skroz moguca. Ovde je zavrsen deo o prekidacima. Sada se prelazi na klasicnu digitalnu logiku.

Page 6: digitalnaLogika - skripta

6

Sada gledamo uvod u slaganje prekidaca. Ima jedna zakonitost, sve sto budemo pravili, bice ustvari logicke funkcije. Ne treba logicke funkcije (booleanske funkcije) posmatrati kako smo navikli. Funckije, preslikavanje iz jednog u drugi skup (specijalan slucaj kada je skup dvoclan, i domen i kodomen su dvoclani skupovi – ovo je definicija booleanske funkcije). Booleanska funckija – funkcija sa 2 elementa, nad dva elementa i kao rezultat dobijamo 2 elementa. Zato su racunari binarni uredjaji (uredjaji koji samo detektuju da li ima ili nema su jednostavni, a uredjaji koji mere nivoe su komplikovani). Racunari su po prirodi booleanski uredjaji, jer barataju samo sa dve velicine. 10 nije jubilaran broj, 10 je nasa izmisljotina (prica sa 3 hrpe kamencica). 10 je jubilaran (10 prstiju). Bavljenjem racunarima, treba da se razbijaju predrasude. Pitanje bi bilo: Koliko ima logickih funkcija jedne varijable, a koliko logickih funkcija 2 varijable? Kod racunara, stvari treba gledati objektivno. Nije vazno ime, vec je vazno sta booleanska funkcija radi. Ako imamo funkciju od k varijabli, argument moze da bude samo 2 (0 ili 1), onda za k varijabli imamo, ako imamo k ulaznih varijabli (one su booleanske), broj mogucih ulaza je broj varijacija sa ponavljanjem, a to je 2 na k, ako imamo dve varijable x i y (4 kombinacije 00, 01, 10, 11). Sa x, y, z, imamo 8 komada. Booleanska funkcija sa 2 varijable jeste kada ulazima dodelimo vrednosti (npr 0101). Kada pravimo funkciju, mi ispisujemo 0 i 1 na sve moguce nacine. Koliko smo imali mogucih ulaza, toliko imamo mogucih mesta (ponovo varijacije sa ponavljanjem), ali na duzinu koju smo malopre izracunali 2 na k je broj razlicitih ulaza, a 2 na 2 na k je broj mogucih nacina popunjavanja tablice sa ulazima. Od k ulaznih argumenata ima 2 na 2 na k mogucih booleanskih funkcija (k=1 je 4, a k=2 je 16).

deo izraza Sta koji znaci

k = 2 broj argumenta 2, x, y – broj elemenata koji treba da budu izabrani (klasa)

2 broj mogucih vrednosti za svaki argument (dvoclani domen), broj elemenata koji mogu da budu izabrani

2k(k=2)

= 4 broj mogucih ulaza (novi domen)

2 broj mogucih vrednosti u izlazu (dvoclani kodomen)

24 = 16 broj funkcija

Dva ulaza (x i y) mogu uzeti po dve vrednosti, pa mi dobijamo 2

2 = 4 moguce vrednosti na ulazu. Imamo jedan skup koji

ima 4 clana (4 razlicita ulaza (00, 01, 10, 11)) i taj skup nazivamo domen. Jedna funkcija preslikava svaki clan domena (svaki ulaz) u odredjeni izlaz. Izlaz moze biti 0 ili 1. Da bi se funkcije razlikovale one ne smeju da imaju iste izlaze za sve ulaze. Npr. f0 preslikava 00→0, 01→0, 10→0, 11→0, a f1 preslikava 00→0, 01→0, 10→0, 11→1, tj. razlikuje im se preslikavanje poslednjeg ulaza (f0 ga preslikava u 0, a f1 u 1). Kada bi dve funkcije dobijale sve iste vrednosti na izlazu to bi bile iste funkcije. Ovde ponovo imamo varijacije sa ponavljanjem, broj elemenata (n) nam je 2, a broj elemenata koji treba da budu izabrani (klasa (k)) je 4, pa zbog formule Vp = n

k sledi broj funkcija = 2

4 = 16.

Funkcije

Ulaz f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15

00 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

01 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1

10 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1

11 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

U praksi znaci ovako: za jedan arugment x, moguci ulazi su 0 i 1, a moguce funkcije su (na 2 mesta treba da rasporedim jedinice na razlicite nacine), 00, 10, 01, 11, to su cetiri moguce funkcije jedne varijable. F0(00), f1(10), f2(01), f3(11) – cetiri moguce funkcije jedne varijable, jer na 2 mesta popunjavamo 0 i 1 na sve moguce nacine. F0(x) ==0 (ne zavisi od x), f1(x)=x (ovo je prihvatljiva funkcija, jedna od mogucih), f2(x)=x nadvuceno (negacija) i f3(x)==1. (greska ljudi da je jedina funkcija jedne varijable samo negacija, x, !x). Sa dve varijable (x i y), moguce ulazne vrednosti su: 00, 01, 10, 11, a moguce funkcije su: 0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1111… – 16 funkcija (dobija se tabela). Mogu da se daju imena f0, f1, f2, f3, f4, f5, f6, f7….f15. Ovo je 15 logickih funcija dve varijable, koje su u fizickom svetu sve vredne i valjane. Mi smo sada neke od njih proglasile za lepse, pa kazemo, da je f1 = konjukcija (AND), f7 = disjunkcija (OR), f9 = ekvivalencija, f6 = eksluzivno ili (XOR). Neke od njih smo izdvojili i dali im imena (ovo je nasa proizvoljnost, fizicki je sve to isto).

Rb Izraz Funkcija Naziv

f0 0000 0 Konstantna nula

f1 0001 X * Y Konjunkcija (AND)

f2 0010 X * Y Zabrana po X

f3 0011 Y Promenljiva Y

f4 0100 X * Y Zabrana po Y

f5 0101 X Promenljiva X

f6 0110 X * Y + X * Y Isklucivo ILI (XOR)

f7 0111 X + Y Disjunkcija ILI (OR)

f8 1000 X * Y Pirsova funkcija, NILI (NOR)

Page 7: digitalnaLogika - skripta

7

f9 1001 X * Y + X * Y Ekvivalencija, komparator

f10 1010 X Negacija X

f11 1011 X + Y Implikacija od X prema Y

f12 1100 Y Negacija Y

f13 1101 X + Y Implikacija od Y prema X

f14 1110 X + Y Seferova funkcija, operacija NI (NAND)

f15 1111 1 Konstantna 1

Sve se sastoji od jednog gradivnog elementa. Kada treba prakticno da pravimo nesto od tih prekidaca, moramo malo da odstupimo. Svi bi se slozili da je to dozvoljeno odstupanje (ne podvala). Imamo dva oblika (modifikacije) jednog prekidaca. Kada nema struje na kontroli, prekidac ne provodi, a kada ima struje on provodi (definiciji bi odgovoaralo i suprotno, kada ima struje ne provodi, kada nema struje, on provodi). Moze i ovako i onako. Ovo je ta modifikacija prekidaca. Fizicka modifikacija je minimalna. Kod modifikacije neutralno provodi, a kada ima struje ne provodi. Vrste prekidaca :

1. pri neutralnom stanju kontrole ne provodi (aktivno stanje provodi) 2. pri neutralnom stanju kontrole provodi (neaktivno stanje provodi, aktivno stanje ne provodi)

Simbol malog kruzica znaci inverzija (obrtanje signala). Realizacija logickih funkcija. Prve bi bile one sa jednom varijablom. Najinteresantnija je negacija. Kada dodje do fizicke realizacije funkcija i kola, moramo da dodamo i neke fizicke velicine (najveci deo razvoja, bilo je stanje kada smo imali +5v je jedanko logickoj jedinici, a 0 volti je jednako 0, ovo je jako dugo vremena vazilo). Ako imamo x, a treba nam f(x). Ako hocemo funkciju f0, imamo x, f(x), f(x)(x), f(x) ne zavisi od x, smao povezemo na masu i dobijemo masu (zicu povezemo na 0), i dobili smo f(0), ako hocemo da dobijemo f1(x), to je funkcija koja je jednaka x, samo jednu zicu sa ulaza vodimo na izlaz i dobili smo funkciju f1(x). Ako nam treba f3(x), odvedemo zicu na plus 5 volti. Ove tri funkcije su u pogledu implementacije trivijalne, samo povezemo zice, ne trebaju nam prekidaci. Kada se prakticno primenjuju prekidaci, mora se malo odstupiti od onog osnovnog oblika prekidaca (idemo na dozvoljeno odstupanje). Dva oblika prekidaca (dve modifikacije prekidaca). C je kontrola i ona odredjuje da li ce od A do B da tece struja ili ne. Kada nema struje na kontroli nece da provodi, a kada ima struje na kontroli, provodice ce (moze i obrnuto). Uvede se simbol kruizic, sto znaci da pri neutralnom stanju kontrole provodi. Ova slika sa kruzicem znaci da taj prekidac pri neutralnom stanju signala (nema struje) provodi. Ovaj kruzic nije slucajno uvden, taj kruzic znaci inverzija. Dakle, prvom kada damo 0 on NE PROVODI, a drugom kada damo 0, ON PROVODI. Ovaj simbol je uveden da bi mi podsvesno tako radili. Svaka logicka funkcija mora da ispostuje neka pravila:

1. za neki ulaz da ima vrednosti izlaza 0 ili 1 2. za sve ulaze mora biti definisana 3. ne sme doci do preklapanja (funkcija) – za razlicite ulaze ne smeju svi izlazi da budu isti 4. ima pull – up (5 v) i pull – down (0 v) granu (fazu)

Da bismo dobili funkciju f0(x), vrednost te funkcije je uvek 0 (imam x i f(x), treba nam f(x) od x. Ovu funkciju realizujemo tako sto zicu koja je izlaz povezemo na 0. Ova funkcija ne zavisi od x. Da bismo dobili f1(x), vrednost ove funkcije ima vrednost x, samo spojimo ulaz i izlaz, ulaz je x, f(x) je izlaz. Ako nam treba f3(x) sto je vrednost 1, izlaz odvedemo na plus 5v (to je uvek 1). Ovde vrednost izlaza ne zavisi od ulaza. Implementacija je jednostavna uz pomoc zica. Dodali smo fizicke velicine:

1. 0 v znaci 0 2. 5 v znaci 1

Vrste kola:

1. kombinatorna kola (ulazi jednozncno uticu na izlaze i ova kola se koriste za izracunavanja) 2. memorijska kola (izlazi zavisi i od proslosti i od ulaza) 3. sekvencijalna kola (prave se kombinacijom kombinatornih i memorijskih i na taj nacin se prave procesori)

Postoje dva nacina standardizacije dijagrama:

1. ako zice nisu spojene nista , a ako su spojene stavimo crni kruzic 2. ako idu jedna preko druge zice to znaci da su spojene, a ako nisu spojene, onda jedna preskace drugu

Znaci imamo dva standarda ovde. Koristimo i jedan i drugi standard. U praksi zavisi od slucaja do slucaja koji cemo standard koristiti. U jednostavnim crtezima Tuba kombinuje oba standarda (kada tacka, onda su spojene, kada jednostavno prelaze zice jedna preko druge, onda su spojene).

Page 8: digitalnaLogika - skripta

8

Negacija

x f (x)

0 1

1 0

Kako da napravimo funkciju inverzije (negacije), uz pomoc 2 varijante prekidaca. Ako povezemo prekidace na ovaj nacin (slika). Povezemo 2 prekidaca (jedan jednog tipa, drugi drugog tipa na donji nacin). Ako stavimo da je x jedanko 1, jedan ce da propusti struju, a drugi kada mu se dovede napon (kada je x = 1), nece da propusti struju. Ovde imamo dve varijante :

1. Ako stavimo da je x jedanko jedan, jedan propusta, a drugi ne propusta. Imamo izlaznu tacku f(x) koja je kroz prekidac vezana za 0, a prekinut joj je put do plus 5v, pa ce da bude f (x) je jedanko 0.

2. Ako stavimo da je x jednako 0, onda ovaj inverzni propusta (prema 0 imamo sasecen put, prema 1 imamo prohodan put) i bice jedinica sa izlazom.

Kada dva slucaja saberemo, imamo da kada je u jednom slucaju bilo 1, izlaz je bio 0, a kada je bilo 0, izlaz je bio 1, pa imamo f(x) je x nadvuceno (inverzno).Ovo je funkcija negacije i naziva se jos inverter ili NOT.

Kod gledanja sta ce biti na izlazu je sustina da se napravi zatvoren put od mase (0V) do izlaza ili od 1 (5V) do izlaza, tj. napraviti da te dve tacke budu na istom potencijalu. Crvena linija oznacava put koji krece od 0V, a plava put koji krece od 5V.

Page 9: digitalnaLogika - skripta

9

Na ovaj nacin smo uspeli da dobijemo prvu funkciju koja ima smilsa. Prethodne tri su bile trivijalne. Za inverter se uzima simbol takodje (pojavljuje se kruzic). Simbol za inverter je :

Ovde vec mozemo da vidimo hijerarhiju. Videli smo kako radi inverter i njega smo analizirali, i sada samo mozemo simbol da nacrtamo. FUNKCIJA NOT AND – NAND

x y f (x, y)

0 0 1

0 1 1

1 0 1

1 1 0

NAND funkcija je netacna za dve 1 na ulazu, tj. tacna je za sve kombinacije ulaza osim za dve 1. Sledeca funkcija je funkcija NAND (NOT AND). Ako pomocu prekidaca napravimo funkcije konjukcije i disjunkcije, logicno je da je konjukcija povezana sa serijskom vezom prekidaca. Ako nema nicega drugoga, sama serijska veza prekidaca je konjukcija. Od tacke x, do tacke y mozemo da prodjemo samo ako nas svi puste. Konjukcija je funkcija koja je jednaka 1 samo ako su joj svi argumenti jednaki 1. Kada svi propuste, moze da se prodje, ako jedan presece, ne moze da se prodje. Disjunkcija bi u skladu sa tim imala veze sa paralelnom vezom prekidaca. Kod disjunkcije necemo da prodjemo samo ako svi preseku. Kod konjukcije je tesko proci, a kod disjunkcije je tesko ne proci. Discjunkcija je netacna samo ako su joj svi argumenti netacni. Konjukcija. Stavimo dva serijski vezana prekidaca i neka to budu x i y, a gore ce da budu drugi prekidaci. Ovakvo kolo ne radi. Ovo je krenulo od zdrave ideje, ali je ispalo da ne radi. Sada moraju da se sprovedu modifikacije. Ako se stave obadve jedinice, jedan propusta onamo, a ako obadve nule, jedan propusta ovamo, a ako se stavi jedna 0 i jedna 1, onda nigde necemo moci da idemo. Resenje je ovo dole, tj. Da ovo gore treba povezati paralelno. Tuba je samo nacrtao resenje NAND kola i nije postupno dolazio do njega, rekao je da je to tako i da to prihvatimo kao cinjenicu. Ovo kolo bi trebalo da se analizira i da se vidi sta to kolo radi. Da bismo proverili kolo sta radi, moramo da ispitamo sve moguce slucaje. Ako imamo 2 ulaza, imamo 4 moguce kombinacije. Da bi smo skratili proceduru, necemo sva 4 slucaja da posmatramo, vec izdvojimo jedan karakteristicni slucaj i ostala 3 slucaja grupisemo. Ovde je karakteristican slucaj da ce tesko da se ne prodje ( samo jednom je na izlazu resenje 0). Dakle, ovde se izdvaja slucaj kada je na ulazu 1, 1. Kada je na ulazu 1, 1, za funkciju imamo 0, a ako je neki drugi slucaj, neki ce da bude

Page 10: digitalnaLogika - skripta

10

presecen i necemo moci da odemo do 0 (glupo receno, ali ako nisu dve jedinice, 0 ne moze da stigne do izlaza). Dokazali smo samo da je u karakteristicnom slucaju (dve 1 na ulazima) 0, ne da je u ostalim 1. Radimo analizu gornje grane. Imamo paralelne grane i tu je karakteristican slucaj da necemo da prodjemo (samo ako nas oba ne pustaju). Ovde su prekidaci tipa koji neutralno pustaju, znaci pustaju kada je signal 0. Kada imamo na ulazu 1, 1, necemo moci da prodjemo. Dakle, u jednom slucjau necemo moci do 1 da dodjemo, a u tri slucaja cemo moci da dodjemo u 1. Sve zajedno gledamo i dodjemo do donje tabele. Kada gledamo pulldown i pullup grane, kada govorimo o serijskim i paralelnim vezama, mislimo da li su serijski ili paralelni prekidaci.

Page 11: digitalnaLogika - skripta

11

Simbol za NAND je:

V PREDAVANJE – 04.04.2007. god. FUNKCIJA NOR (NOT OR)

x y f (x, y)

0 0 1

0 1 0

1 0 0

1 1 0

NOR funkcija je tacna za dve 0 na ulazu, tj. netacna je za sve kombinacije ulaza osim dve 0.

Page 12: digitalnaLogika - skripta

12

Sada nekako postavlja prekidace. Kaze da je sve simetricno slozeno. Sada proverava da li su zadovoljeni uslovi – da pulldown i pushup grana rade u protivfazi. Ako imamo nedefinisana stanja ili dvostruko definisana stanja, nece moci. Gleda prvo pulldown granu i u njoj su paralelni prekidaci i tamo je istaknut slucaj ne proci. Ovde ne moze da prodje ako ga ni levi ni desni ne pusti. Dakle, nece da ga ni levi ni desni puste kada su i levo i desno 0. Istaknut slucaj je 0,0. Ovo znaci da jedino u ovom slucaju nece da ga puste. Ovo znaci da nema 0, ne znaci da ima 1. U svim drugim slucajevima ce da ga puste dole, i onda ima 0. Sada radi simetricnu analizu gore. Gore su serijski prekidaci. Tamo je tezi slucaj da moze da prodje, jedino ako ga svi puste. Istaknut slucaj je gore ponovo 0,0 i jedino u tom slucaju ce moci da prodje, i kada prodje imamo 1, a kada ne prodjemo nemamo 1. Sada spajamo ova dva i gledamo da li su ispunjeni uslovi protivrecnosti. Dakle, analizom je utvrdjeno da je ovo prava funkcija, tj. da za jednoznacni ulaz ima jednoznacni izlaz. Funkcija f7(x,y) je OR, a funkcija f8(x,y) je NOR x,y nadvuceno.

Page 13: digitalnaLogika - skripta

13

Page 14: digitalnaLogika - skripta

14

Simbol za NOR je:

Dakle, do sad smo obradili TRI funkcije. Ovo do sada obradjeno su tri osnovna elementa. Pomocu jednog prekidaca, implementiraju se najjednostavnije funkcije jedne varijable i dve varijable, i sa tim se krece. Iz ove tri se dobija cetvrta funkcija AND, koja se implementira kao NAND sa inverterom (NI + NAND). Ovo je sada komplikovanija funkcija (dobija se iz 2 i 1). A funkcija OR je peta funkcija i ona se dobija iz 3 i 1. NI i NILI su osnovne funkcije, AND i OR su izvedene funkcije u fizickoj implementaciji. Sada imamo 5 pocetnih elemenata i dosli smo do pravog pocetka. FUNKCIJA AND – Logicko mnozenje (konjukcija)

x y f (x, y)

0 0 0

0 1 0

1 0 0

1 1 1

AND funkcija je tacna za dve 1 na ulazu, tj. netacna je za sve kombinacije ulaza osim dve 1.

Page 15: digitalnaLogika - skripta

15

Page 16: digitalnaLogika - skripta

16

Simbol za AND kolo je:

FUNKCIJA OR – logicko sabiranje (disjunkcija)

x y f (x, y)

0 0 0

0 1 1

1 0 1

1 1 1

Page 17: digitalnaLogika - skripta

17

OR funkcija je netacna za dve 0 na ulazu, tj. tacna je za sve kombinacije ulaza osim dve 0. Funkcija OR je tacna ako je bar jedna vrednost na ulazu tacna.

Sada imamo 5 pocetnih elemenata i ovo je prava tacka pocetka. Klasicna digitalna logika uzme 3 elementa i progralasi pocetak, uzme inverter i i i ili i onda se dalje izgradjuje. Digitalna logika uzima onih 3 elementa kao aksiome. Sada se izgradjuju novi elementi koristeci samo ono sto imamo. Sada smo od funkcije 2 varijable booleanske napravili 4, a ima ih 16. Sada moramo jos njih da objasnimo. XOR – EKSLUZIVNO ILI (iskljucivo ili)

x y f (x, y)

0 0 0

0 1 1

1 0 1

1 1 0

XOR funkcija daje istinit rezultat ako je jedna i samo jedna od ulaznih velicina istinita. Ova funkcija moze da se napravi tako sto eksperimentise sa onim sto imamo. I na kraju, uz dosta truda dolazimo do ovoga ispod. Imamo 4 NANDa povezanih na nacin kao sto je na slici. Sada treba da pokazemo sta radi ova funkcija ili drugacije receno da dokazemo da radi XOR. Naravno, moramo da proverimo sve moguce slucajeve. Ispitamo sve mogucnosti i vidimo sta cemo da dobijemo.

Page 18: digitalnaLogika - skripta

18

Page 19: digitalnaLogika - skripta

19

F6 funkciju smo dobili, to je eksluzivno ili i dobili smo je pomocu 4 NANDA. Sada dokazuje da je gore slika tacna. Proveravamo se moguce slucajeve. Sada recimo uzmemo da x i y budu 0. 0 i 0 daju 0, pa zbog negacije daju 1. 0 i 1 daju 0, pa zbog negacije daju 1, 1 i 0 daju 0, pa zbog negacije daju 1, 1 i 1 daju 1, pa zbog negacije daju 0. Kada je 0 i 0, dobicemo na izlazu 0.

Page 20: digitalnaLogika - skripta

20

Sada menjamo y na 1. Srednji deo nece da se promeni, ali se menja 1 i 1 bice 1, pa zbog negacije bice 0. Pa smo imali 1 i 1 bilo 1, pa je 1 i 1 0, pa zbog negacije postaje 1,dakle ovde dodje 1. Ovo kolo je ocito simetricno, tako da ovo sto smo radili na donjoj grani (y promenili u 1), da smo x menjali, sve bi se ponovilo i na gornjoj grani, pa sledi da ce i 1 i 0 da bude 1. I konacno, recimo da oba stavimo na 1. U sredini se menja stvar 1 i 1 daju 1, pa zbog negacije 0. U ovom slucaju dobijamo 0. DAKLE, POSMATRAMO OVU SLIKU GORE SA CETIRI NANDA, i KRECEMO OD PRVOG SLUCAJA KADA SU i X i Y JEDNAKI NULI i GLEDAMO IZLAZ, PA ONDA KADA JE Y JEDNAKO 1, A X JEDNAKO 0, PA ….. KADA SU i X i Y JEDNAKI 1 GLEDAMO IZLAZ. Ispitali smo sve slucajeve i pogledali smo sve moguce izlaze na osnovu svih mogucih ulaza. Pomocu 4 NANDa smo dobili funkciju F6 eksluzivno ili. Simbol je:

Sada se vec vidi kako se pravi jedno preko drugoga. Ovde vec imamo 16 prekidaca i napravili smo kolo sa 16 prekidaca. 4 NANDA svaki sa 4 prekidaca, to je 16 prekidaca kod XORa. Sada hoce da pokaze kako radi ovo kolo preko formula. Sada gledamo gore sliku (uvodi oznake a,b i c). Sada tvrdi da je f(x,y)=NAND (a,b), a to je negirana konjukcija, to je a,b negirano. To je prva tvrdnja Druga tvrdnja: a je x,c negirano Treca tvrdnja: b je y,c negirano Cetvrta tvrdnja: c je x,y negirano Peta tvrdnja:Sada uvrstavamo jedno u drugo. 2 i 3 se uvrsti u 1 f=xc nadvuceno,yc nadvuceno. Sesta tvrtdja: 4 u 5 uvrstavamo, pa je f= Sve u svemu, ona gore formula koja ide uz sliku!!! Formula 6 opisuje povezivanje fizickih komponenti, crtez i formula 6 su ekvifalenti.

Kako mozemo formulom da dokazemo da je neka formula jednaka funkciji Funkcija moze da se predstavi na razlicite nacine. Jedan od nacina je preko normalnih formi. Postoji :

1. normalna konjuktivna forma – logicki proizvod logickih suma – NKF 2. normalna disjunktivna forma – logicka suma logickih proizvoda – NDF

Uzmemo sva mesta gde funkcija ima 1, pa napravimo da i nasa formula bude jednaka 1 na razne nacine. Pravimo sabirke. Kada su ulazi 0 i 1, pa ako obrnemo nula u jedinici, uzememo x nadvuceno y (jedini slucaj kada su oba jednaka jedinici), ili x y nadvuceno – u ova dva slucaja je rezultat 1. OVO JE NDF i UZIMA SE KAO DEFINICIJA XORA. Izvodjenjem smo dobili ono gore f (NDF funkcije XOR) i sada XOR imamo kao dodatni gradivni element

Page 21: digitalnaLogika - skripta

21

Njega smo izabrali jer je bas taj gradivni element pogodan, jer u malom broju koraka dobijamo zanimljive elemente. Vec u sledecem koraku ovaj XOR vodi do necega sto ima veze sa procesorom – uredjaji za sabiranje. Uredjaji za sabiranje Polusabirac Uredjaji za sabiranje su sastavni delovi svakog procesora (osnovne funkcije procesora su da moze da sabira i da uporedjuje sa 0). Pre nego sto se predje na uredjaje za sabiranje potreban je neki uvod. Ovde moramo da razbijemo neke nase predrasude. Predrasuda sa dekadnim sistemom (10 prstiju), (primer sa 3 hrpe kamencica od 9, 10 i 11 kamencica). Dekadni sistem je za nas jako zgodan, jubilaran, ali objektivna stvarnost to ne podrzava. Slicno je i sa ovim. Imamo razne grane matematike (osnovne rac operacije, sab, oduz, mno, delj), pa imamo mat logiku…. Kako stvari objektivno izgledaju? Sve sto mi mozemo da uradimo u racunarima, bilo gde, sve je to matematicka logika. Ostalo su sve drugaciji nacini prikazivanja toga. Sabiranje brojeva ima i te kako veze sa logickim funkcijama (stavljamo posrednike i zaboravimo da se radi o logickim funkcijama). Sabiranje velikih brojeva sastoji se iz sabiranja cifara. Sabiranje cifara se svodi na tablicu. Sve sto mozemo da uradimo dekadno, mozemo i binarno. Bilo koja dva brojna sistema su ekvivalentni (u razlicitim brojnim sistemima se pise na drugi nacin). Cela matematika je na dekadnom sistemu, zato sto je nama tako zgodnije. Prvo operaciju sabiranja svedemo na sabiranje cifara, pa sabiranje cifara svedemo na binarni sistem, pa se onda binarni sistem svede na tablicu, pokaze se da se sve to radi o booleanskom sistemu. Kada ovako gledamo, na najnizem nivou sabiranje se svodi na sabiranje bitova. Kada imamo x i y, imamo dve logicke funkcije. Kada ih saberemo, dobijemo sumu i prenos. Sabiranjem binarnih cifara, mogu da sabiram dugacke binarne brojeve, a oni su ekvivalentni dekadnom sistemu. Sabiranje znaci da imamo dve logicke funkcije. XOR je funkcija koja ce da nas odvede na nove stvari. Da bismo radili to sto mi zovemo sabiranje, dovoljne su nam samo booleanske funkcije (to su dve funkcije XOR i AND). Sabiranje je XOR i AND. Da bi smo dobili taj sabirac, te dve funkcije treba zajedno da implementiramo.

x y S P

0 0 0 0

0 1 1 0

1 0 1 0

1 1 0 1

Ovo kolo sluzi sa sabiranje – sastoji se iz XOR i AND (22 prekidaca ima, 16 + 6) Imamo i sumu i prenos. Ovde je do najsitnijih delova jasno sta je (znamo sta je XOR i AND, pa znamo sta su prekidaci). Pitanje je kako ovo da nazovemo. Ovo bi moglo da se nazove sabirac. Sabiramo cifru po cifru, uzimamo lokalne cifre, pa uzmemo prethodni prenos i dobijemo rezultat i moguci prenos za dalje, i sve tako……Za stvarno sabiranje proizvoljnih brojeva, nama treba uredjaj koji sabira 3 cifre (uzimamo i prenos). Kolo za sabiranje bi trebalo da ima 3 ulaza zbog ovog prenosa. Ovaj uredjaj na slici gore to nema. Sabiranje 3 cifre sastoji se na 2 puta sabiranje po 2 cifre. a + b + c = x + c ( a + b = x ). Ko zna da sabere 2 cifre, dvostrukim ponavljamem sabira i 3 cifre. OVO SE ZBOG SVEGA NAVEDENOG ZOVE POLUSABIRAC.

Simobl: HA – HalfAdder – polusabirac Ovo je sedmi elemenat.

Page 22: digitalnaLogika - skripta

22

Sabirac 32 – bitni sabirac Posle polusabiraca ide prirodno puni sabirac. Samo treba da se vidi na koji nacin da se sastavi puni sabirac. Ovde moze da pomogne intuicija (ko zna da sabere 2 cifre, zna i trecu, na rezultat od 2, doda trecu cifru). Imamo prethodni prenos i dodamo x i y i te tri stvari treba da saberemo. Prvo treba da uzmemo x i y i uvedemo jedan polusabirac HA1 i on nam daje neku sumu s1 i prenos p1. Sada na ovaj zbir treba da dodamo onu trecu. HA2 dodajemo i kada se to sabere, izadje suma S2 i prenos P2. Na kraju su nam ostala dva prenosa P1 i P2, a kao rezultat treba da dobijemo sumu S i prenos P. Puni sabirac bi trebalo spolja da izgleda kao na slici.

Predhodni prenos x y S P

0 0 0 0 0

0 0 1 1 0

0 1 0 1 0

0 1 1 0 1

1 0 0 1 0

1 0 1 0 1

1 1 0 0 1

1 1 1 1 1

Page 23: digitalnaLogika - skripta

23

Osnovna razlika izmedju polusabiraca i sabiraca. Polusabirac je kombinatorno kolo koje sabira 2 binarne cifre i vodi racuna o prenosu. A sabirac je isto to, samo sto sabira 3 binarne cifre. Ovo je booleanska funkcija koja moze da se predstavi tablicom. PP – Prethdni prenos. Nije bitno kako nazivamo, vec je bitno da imamo 3 ulazne varijable (prethodni prenos, i nove cifre koje sabiramo). Kao rezultat treba da dobijemo sumu i prenos. Logickih funkcija 2 varijable ima 16. Booleanskih funkcija 3 varijable ima 256 funkcija. Od 256 funkcija, malo od njih ce da imaju imena, a velika vecina nece. Ovo nam se desilo ovde. Sabiranje 3 binarne cifre (puni sabirac) jeste implementacija sistema ove dve funkcije (funkcije sa 3 varijable, mi smo izabrali 2 od njih). Jedino je pitanje kako da implementiramo ove funkcije. Sada proveravamo sta je ovde dobro. Ako bismo povezali dva HA, dobili smo signale S1, P1, S2, P2 (prosirujemo tablicu). S1 i P1 su rezultat sabiranja x i y. Dodamo jos dve kolone i pisemo S1 i P1 (X+Y). (0 i 0 je 0 pisem, nula pamtim, 0 i 1 je 1 pisem, 0 pamtim….) Sada isto mozemo da vidimo sta su S2 i P2 (dobijaju se sabiranjem S1 + PP). Dodamo jos dve kolone (S2 i P2). Sada gledamo tabelu. Mi sumnjamo da bi S2 trebalo da bude S. Sada gledamo S2 i Gledamo S i uporedjujemo. Dokazali smo da je S2 identicki jednako S. Dokazali smo da je ono sto smo intuitivno radili dobro. Sada imamo P1 i P2, a nama treba P. Kada gledamo ovo, pokaze se da P nije jednako P1, i da P nije jednako P2. Jasno je da ce P da bude kombinacija P1 i P2 (prenos mora da ima veze sa prenosom). Ispadne da kada imamo 0 i 0, onda ova treba da bude 0, pa ponovo kada su dva 0, onda treba da bude 0, pa onda 0 i 1 treba da bude 1, kada su 1 i 0 treba da bude 1, pa kada su 1 i 0 treba 1, pa sve tako…Ispada da ove zakonitosti moraju da budu zadovoljene (0 i 0 treba da daju 0, 1 i 0 treba da daju 1, a 1 i 1 se ne pojavljuje kao ulazna kombinacija!!!). Ispada da su ove funkcije poznate – to su funkcija OR i XOR. S je jednako S2 zato sto smo sabrali prvo x i y i dobili S1 a zatim smo sabrali S1 i PP i dobili S2. S = x + y + PP x + y = S1 S1 + PP = S2 Kada zamenimo u prvoj jednakosti x + y sa S1 dobijemo S = S1 + PP iz cega sledi da je S = S2 Sto se tice prenosa njih bi trebalo logicki sabrati, a to mozemo da ucinimo sa OR ili XOR kolima Logicko sabiranje je OR funkcija, ali ovde moze da se primeni i XOR. Nikada nece doci do varijante da ostatak u oba prenosa bude jednak 1. Da bi P1 bio jednak 1, S1 mora biti jednak 0, a onda je nemoguce da ostatak kod drugog sabiranja (P2) bude jednak 1, jer da bi ostatak bio jednak jedinici oba sabirka moraju biti jednaka 1 (i S1 i PP), tako da je svejedno sta ce biti PP A ako je S1 jednak 1, onda je P1 sigurno jednak 0. Ovako je razreseno pitanje prenosa. Ovako smo dobili puni sabirac (full adder). Imamo 3 ulaza, dva izlaza. Puni sabirac – u njemu se javljaju 2 polusabiraca, po jedno ovo kolo (Ima 50 prekidaca 26 + 34 i sabira 3 binarne cifre). Kada smo ovo napravili, mozemo da napravimo i proizvoljan sabirac – npr 32 – bitni sabirac.

Na slici imamo FA1, FA2, FA3… FA31 i tako redom…Z0, Z1, Z32 su sume. Prenos iz prethodnih idu u sledeci. Izbaci prenos na kraju koji se zove Carry(C) – ako ima ovaj prenos, broj je veci nego sto moze da stane u registar. Ovo ce da se proglasi devetim kolom – SAB32 (32 – bitni sabirac).

Simbol -

Page 24: digitalnaLogika - skripta

24

Ovo bi bio 32 – bitni sabirac (64 – bitni sabirac imamo 2 x 32 – bitni). Sada dolazimo do zanimljive situacije. Imamo kolo koje sabira 32 – bitne brojeve, ono sto ima u danasnjim procesorima (1600 prekidaca). Sada mozemo da idemo u detalje (sa svim vezama izmedju, od prekidaca, preko nanda, pa xora, pa…… do 1600 komada prekidaca, dobijemo cudnu sumu, zastrasujucu sliku dobijemo). Preko celog zida uvecamo tu sliku (1600 prekidaca na sve strane rasporedimo). Ovo je jedan aspekat, to je izuzetno kompleksno. Kazu da je to mnogo pametno. (primer sa pogadjanjem, za svaki prekidac znamo sta je tacno, a celi zid je napunjen sumom, najkomplikovanija shema). Znaci, s jedne strane je kompleksno, ali s druge strane je hijerarhijski organizovano u celine (logaritamskom pretragom ide veoma lako utvrdjivanje sta je sta) DEKODER Ovo je jako cesto korisceno kolo. Cesta funkcija je dekodiranje memorijske adrese. Adresni mehanizam kod memorije je upravo ovaj dekoder (dobije binarni broj i nadje odredjeni registar). Dekoder je kombinatorno kolo koje ima n ulaza i 2 na n izlaza, gde je aktivan tacno jedan izlaz i to onaj ciji redni broj odgovara binarnom broju na ulazu. N ulaza, 2 na n izlaza, ova veza mora da se ispostuje. Na ulazu dajemo binarni broj, i aktivan je tacno jedan izlaz. Aktivan je samo jedan izlaz i to onaj ciji redni broj odgovara binarnom broju na ulazu. Postoje dekoderi 1 na 2, 2 na 4, 3 na 8, 4 na 16. Kada redne brojeve izlaza od 0 do 7 zapisemo binarno. Na ulaz mu damo sifru kao trocifreni binarni broj, a na osnovu toga ce da izabere jedan izlaz. Ovo sluzi za adresiranje memorije. Memorija ima niz od 2 na n registara, damo mu nbitnu adresu i mehanizam izabere tacno odgovarajuci registar. Dekorder sluzi za dekoriranje memorije, ali moze i za druge stvrhe. Sada se postavlja pitanje kako bismo to kolo implementirali. Ovde ide malo drugaciji nacin razmisljanja. Sve sto radimo su booleanske funkcije (ovo je sistem od vise buleanskih funkcija, 3 na 8, ima 3 ulaza, a 8 izlaza i sistem od 8 funkcija predstavlja taj dekoder). Sada crta donju tabelu. Pise 3 ulaza i 8 izlaza.

U prvom redu imamo tri 0, pa je to I0, u drugom redu imamo 1, pa je to I1….. Na kraju dobijemo jedinicnu matricu. I0 do I7 su neke od 256 booleanskih funkcija (to su 8 od 256 funckija). Ovde imamo neke poznate funkcije. Uocimo konjukciju sa 3 ulaza – nju bismo mogli direktno da implementiramo (I7 je konjukcija sa 3 ulaza). Sada se postavlje pitanje sta cemo

Page 25: digitalnaLogika - skripta

25

sa ostalim funkcijama. Sve ostale funkcije jako lice na I7 zato sto imaju po 7 nula i jednu 1. i kolo moze da se modifikuje tako da ne bude prepoznavac samo funkcije tri 111 (samo ce u ovom slucaju da se postavi na 1). Kod AND kola, gde dodamo inverter, postaje univerzalno kolo (nece da prepoznaje samo kada su zapisana tri keca). Jednostavna implementacija ovoga nece da zahteva duboko razmisljanje, nego zahtevace 8 AND kola, svako sa 3 ulaza, gde nekada direktno ulaze, a nekada komplementarno. To je pravilni dizajn. Pravilni dizajn je dizajn za kola proizvoljne velicine koje mozemo da prosirujemo. Ovaj dizajn ide pravilno i po horizontali i po vertikali. Pravilni dizajn se radi tako sto ulazi ulaze sa leve strane, a izlazi izlaze sa desne strane, a kontrole sa komplementima idu po vertikali. Sve jednostavno prosirjemo. Prvo povucemo liniju U0 i napravimo njegov komplement, pa drugu U1, pa njen komplement vertikalno, pa U2 i komplement…Isto tako smo videli da je potrebno 8 kola sa tri ulaza. Prepoznao je na slici da se ovde radi o binarnom brojanju. Sada je dodao jos jednu zicu KONTROLA, koju je stavio kao 4 – ti ulaz na sva ova kola. Ako je kontrola 1, ponasace se kao da je nema (mnozenje sa 1 ne menja stvar). Kada je c=1 NE MENJA STVAR. Medjutim, kada je C=0, celo kolo se gasi, cini ga neaktivnim. C ulaz se moze koristiti kao kontrola da li ce to kolo da radi ili nece da radi. Znaci, 10 – to kolo bi bio dekoder (2 na 4, 3 na 8…)

Ovo bi se zvao klasicni dekoder (kodira binarni broj u redni broj). Dekoder moze da bude bilo sta, neku sifru dekodira u nesto drugo. Dekoder iz jednog brojevnog sistema u drugi sistem….Bilo sta sto je zapisano na jedan nacin, a moze i na drugi, imamo dekoder kao translator. Jedna stvar koja se cesto koristi su – numericki displeji. Sedmosegmentni displeji – ima ih puno. Sada ovo objasnjava. Bcd 7 segment. Sa 4 binarna broja mozemo da predstavimo brojeve od 1 do 15. VI PREDAVANJE – 11.04.2007. god. Ovo do sada su bila kombinatorna kola a sada prelazimo na memorijska kola. Memorijska kola Osnovno memorijsko kolo bi bila jednobitna memorija. Ona se zove data (1 bit), ima ulaz koji se zove npr P, ima izlaz koji se zove npr Q. Kod memorijskog kola mora da postoji kontrola C, koja ce da kaze – sada zapamti (uz pomoc ove C kontrole se pamti, to je sustina memorijskih kola). Kod memorijskog kola, izlaz ne zavisi direktno od ulaza. Na izlazu moze da bude bilo sta, a na ulazu moze da bude bilo sta. Sta ce da bude na izlazu, zavisi od proslosti i ulaza, a ne samo ulaza (zato sto kontrola C kaze sada zapamti). Ovo na slici je min memorijsko kolo od 1 bita, pa se udruzuju i dobiju se bajtovi, pa registri 32 – bitni, pa 64 – bitni. Memorijsko kolo se cesto pravi malo komplikovanije od ovog na slici, jer sa memorijom imamo operacije read i write. 1 kontrola moze da regulise 2 stanja, a 2 kontrole regulisu 4 stanja (mi imamo 3 stanja, pa trebaju 2 kontrole). Jedna se zove enable, a druga se zove read write (kontrola). Enable kontrola omogucava da se bilo sta radi (ako je 0 ne moze nista da se radi, a ako je 1, onda radi, ako je 1 onda moze da cita i da pise). Signalima dajemo imena po pocetnim slovima ono sto on radi. Ako samo napisemo ime signalu, onda se ponasa da taj signal radi kada mu damo 1 (ako je read 1, onda taj signal cita, ako je write 0, onda taj signal pise). Ako samo napisemo ime signalu bez icega, onda se podrazumeva da je on aktivan kada mu damo 1. Medjutim, postoji i obrnuto, signali mogu da budu aktivni kada su 0, i takvi signali se oznacavaju crticom iznad signala (slika). Kada imamo 2 signala na jednoj zici, onda se oni razdvajaju kosom crtom (slika r/w nadvuceno). Sve se uvek radi u odnosu na procesor koji je centar sveta racunara. Dakle, kada se kaze in, misli se u procesor, kada se kaze out, iz procesora, kada se kaze read, cita procesor memoriju, kada se kaze write, onda procesor pise u memoriju. Kada se gleda dakle memorija, onda je kod nje write na ulazu, a read je na izlazu.

Page 26: digitalnaLogika - skripta

26

Flip-Flop Pitanje je kako da se napravi memorija? Memorija moze da se napravi jednim jednostavnim sklopom, koji je sluzio za nesto drugo ranije. Kolo koje nas vodi do jednobitne memorije je kolo flip flop, i to se kolo zove bistabilni element. Bistabilni element kaze da ima dva stabilna stanja (to isto znaci i flip flop). 1 – bitna memorija je u jednom od 2 stanja (ili je zapamtio 0 ili je zapamtio 1). Dakle, bistabilni element, flip flop i 1 – bitna memorija su tri ekvivalentne stvari, s time sto se ovi termini koriste i od ranije pre nego sto su se u racunare ugradjivali (50 – tih, 60 – tih i 70 – tih godina su racunari imali feritne memorije, a flip flopovi su se ugradjivali u nesto drugo sto nije memorija).

RS Flip – flop preko dva NANDA – a Flip flop je 2 NAND – a unakrsno povezanih povratnom spregom (slika). Povratna sprega je sto ide od izlaza prema ulazu, a unakrsna je kada ide od prvog ka drugom i od drugog ka prvom. To je unakrsno povratna sprega. Kako se ovo ponasa? Treba da se ponasa na kvalitativno drugaciji nacin. Ovde bi trebalo da postoji sustinski razlicito ponasanje zbog unakrsno povezane sprege. Sve u svemu kaze, ako jedan parametar promenimo (0 na 1 npr), izazvali smo lancane reakcije (primer kada je jedan otvorio vrata i zaglavio cipelu, otisao, a vrata su ostala otvorena). Ovo kolo je promenilo stanje, ali je samo sebe zablokiralo u tom stanju. Onaj ko je promenio stanje, moze da ode, vise nije bitan, a kolo ce da ostane isto. Izlazi ovog kola ne zavise jednoznacno od ulaza, a sta ce da bude na izlazu, zavisi i od proslosti. Izlaz pamti sta se desilo u proslosti. Ovo kolo ocigledno ima memorijsku funkciju, izlaz ne zavisi jednoznacno od ulaza, vec zavisi od ulaza u proslosti koji je on zapamtio. Izlazi se zovu q i q nadvuceno zato sto su u protiv fazi, a q je po tradiciji. Iz ovog kola besplatno dobijamo komplement. Ulazni signali se zovu S i R nadvuceno, jer rade nesto kada ih odvucemo na 0 (normalno stoje na 1), a S i R se zovu iz stare tradicije, jer se ovo kolo pravilo za druge svrhe (S – set, R – reset, inicijalizacija). Kolo koje ima ovakva svojstva zove se RS Flip flop. Ovaj RS flip flop je elementarna memorijska jedinica, najjednostavnije kolo koje ima memorijsku funkciju, iako ono nije u potpunosti memorija. Mi od memorije ocekujemo da posaljemo signal i kazemo zapamti ovo, a ovde moramo da kada vucemo jednu zicu kazemo zapamti 1, a kada vucemo drugu zicu kazemo zapamti 0.

Page 27: digitalnaLogika - skripta

27

Q = 1 – flip – flop je setovan S = 0, R = 1 Q = 0 – flip – flop je resetovan S = 1, R = 0 Qn+1 = Qn – pamcenje signala S = 1, R = 1 Q = 1 & Q = 1 – nedozvoljena kombinacija S = 0, R = 0 Ovaj flip – flop se aktivira niskim aktivnim signalom (tj. 0), setuje se sa S = 0, a resetuje se sa R = 0 Formula RS flip – flopa preko NAND – ova je: Qn+1 = S + R * Qn Funkcionalna tabela:

S R Qn+1 Qn+1 OPIS

0 0 1 1 Nedozvoljeno stanje

0 1 1 0 Setovanje

1 0 0 1 Resetovanje

1 1 Qn Qn Pamcenje

Eksitaciona tabela

Qn Qn+1 S R Opis

0 0 1 1/0 Ili pamcenje (S = 1, R = 1), ili resetovanje (S = 1, R = 0)

0 1 0 1 Setovanje

1 0 1 0 Resetovanje

1 1 1/0 1 ili pamcenje (S = 1, R = 1) ili setovanje (S = 0, R = 1)

RS Flip – flop preko dva NOR – a

Page 28: digitalnaLogika - skripta

28

Q = 1 – flip – flop je setovan S = 1, R = 0 Q = 0 – flip – flop je resetovan S = 0, R = 1 Qn+1 = Qn – pamcenje signala S = 0, R = 0 Q = 1 & Q = 1 – nedozvoljena kombinacija S = 1, R = 1 Ovaj flip – flop se aktivira visokim aktivnim signalom (tj. 1), setuje se sa S = 1, a resetuje se sa R = 1 Formula RS flip – flopa preko NOR – ova je: Qn+1 = S + R * Qn Funkcionalna tabela:

S R Qn+1 Qn+1 OPIS

0 0 Qn Qn Pamcenje

0 1 0 1 Resetovanje

1 0 1 0 Setovanje

1 1 0 0 Nedozvoljeno stanje

Eksitaciona tabela

Qn Qn+1 S R Opis

0 0 0 1/0 Ili pamcenje (S = 0, R = 0), ili resetovanje (S = 0, R = 1)

0 1 1 0 Setovanje

1 0 0 1 Resetovanje

1 1 1/0 0 ili pamcenje (S = 0, R = 0) ili setovanje (S = 1, R = 0)

Ova slika prikazuje kako za iste ulaze dobijamo razlicite izlaze. Ovo sve gore bi moglo da se uradi i simetricno, da uradimo sa NORovima.Sve ce da bude isto kao i gore (samo ce R i S da obrne mesta i samo kada je 0 oni nece da rade, a kada je 1, oni ce da rade).

Page 29: digitalnaLogika - skripta

29

Ovakvo izvodjenje memorijskog elementa je nezgodno jer imamo dve zice, pa pokusavamo da napravimo varijantu sa jednom. Dodajemo invertor, ali se tada gubi funkcija pamcenja. Kako sada od ovoga gore da napravimo memoriju? Neko bi rekao da mu je nezgodno da ide sa 2 zice, pa proba nesto drugo, da se resi problem sa 2 zice. Dodajemo inverter. Na jednu zicu treba da vucem na 0 da bi se postavila 0 (to je u redu), a na drugu zicu treba da vucem na 0 da bi se postavila 1. Kako bi bilo da povezem jedan inverter i da tu zicu zovem data zica. Kada na tu zicu posaljem 0, on ce da ide na reset i resetovace kolo i bice 0, a kada posaljem 1, preko invertera ce da 1 postane 0, tako da ce 1 na data zici da izazove 0 na set liniji, a set linja ce da postavi kolo na 1 kao i sto treba. Ovako smo resili problem sa 2 zice. Na ovu jednu zicu stavljam i 0 i 1, i bice ono sto treba. Ali, resavajuci ovaj problem, stvorili smo veci problem – ukinuli smo memorijsku funkciju ovog kola. Ovako je postalo kombinatorno kolo (sto je na ulazu, bice i na izlazu, nema pamcenja). Kaze da je ovo sa inverterom dobra ideja, ali smeta sto se izgubila memorijska funkcija. Ovo se resava tako sto se uvede 2 NAND-a. Uvodi 2 NAND – a napred. Kako se ovo ponasa? Kada je C = 1, u AND kolu, kao da ga nema. Ako je C = 1, jedno zavisi samo od S-a, a drugo od R-a samo (ako je S = 1, izlaz ce biti 1, pa zbog nanda da bude 0). S treba drzati na 0, kada ga povucemo na 1, onda ce S nadvuceno da ode na 0 i izvrsice se funkcija setovanja. Isto tako treba R drzati na 0, kada se povuce na 1, onda ce 1 i 1 da da 1, pa zbog negacije 0, i uradice se reset. Isto ce biti RS FlipFlop, samo ce signali biti bez bara, vec su ispravljeni. Dok je C 1, ovo se ponasa kao normalan SR flip flop, samo sa izmenom kvaliteta. Medjutim, ako C stavimo da je 0, onda ovo kolo prekine da prima spoljne ulaze, jer jedna nula na AND kolu daje izlaz 0, dakle, ova nula garantuje da je izlaz iz konjukcije 0, pa negacija dobijamo 1. Tako dugo dok drzimo c na 0, garantujemo da na 2 mesta imaju 1, a to znaci ono stanje da se ne menja, dok oba drzimo na 1, pamtimo ono poslednje sto smo videli, memorijska funkcija. Sa C-om drzimo memorijsku funkciju. Kada je na D = 1 deluje kao set, kada je D = 0, zbog invertera, deluje kao reset. Ovo radi tako dugo dok drzimo C na 1. Kako menjamo D, menjamo i ulaz. Ali, jednog momenta kada hocemo da zapamtimo, stavimo C na 0 i onda kaze, zamampti ono sto si poslednje video (kada je C otislo na 0). Ovakav prosireni flipflop je potpuni memorijski elemenat (i memorija i jedna zica). Ovo je data flip flop, stvarna jednobitna memorija. Iako RS ima mogucnost memorijsanja, ovo je sada klasicna memorija, koja se dobija RS flipFlip sa inverterom i dobija se DATA Flip Flop (ovo je element koji nam treba).

Nastavljamo da usavrsavamo i dodajemo jos dva NAND – a i dobijamo D Flip – flop

Page 30: digitalnaLogika - skripta

30

Q = 1 – flip – flop je setovan D = 1, C = 1 (S = 0, R = 1 – kao RS sa NAND – ovima) Q = 0 – flip – flop je resetovan D = 0, C = 1 (S = 1, R = 0 – kao RS sa NAND – ovima) Qn+1 = Qn – pamcenje signala D = 1/0, C = 0 (kada je C = 0, bilo sta sto udje sa C u prva dva NAND – a, dace 1 na izlazima iz prva dva NAND – a, tj. S = 1, R = 1 i to je kombinacija za pamcenja kod RS flip – flopa sa NAND – ovima) Funkcionalna tabela:

D C Qn+1 Qn+1 OPIS

0 1 0 1 Resetovanje

1 1 1 0 Setovanje

1/0 0 Qn Qn Pamcenje

Eksitaciona tabela

Qn Qn+1 D C Opis

0 0 0 (1/0) 1(0) Resetovanje (D = 0, C = 1) ili pamcenje (D = 1/0, C = 0)

0 1 1 1 Setovanje

1 0 0 1 Resetovanje

1 1 1(1/0) 1(0) Setovanje (D = 1, C = 1) ili pamcenje (D = 1/0, C = 0)

Ove tabele se uvek prave u varijanti da je C = 1. Nema nedozvoljene kombinacije u statickom rezimu, jer ne moze da bude S = R = 0, ali u dinamickom rezimu postoji vreme kasnjenja kroz invertor (Δt), pa kada je C = 1, a D sa 0 postavljamo na 1, mozemo imati probleme.

Vreme C D D S R Opis

t 1 0 1 1 0 Trenutak t, sve je u redu, a u sledecem trenutku hocemo da postavimo D na 1

t + x 1 1 1 0 0 x je neko vreme koje je manje od Δt i tada nastaju problemi, D je postavljeno na 1, a signal jos nije stigao da prodje kroz invertor, pa je i D takodje 1, pa imamo i da su S i R jednaki 0, a to je nedozvoljeno stanje

t + Δt 1 1 0 0 1 Signal je prosao kroz invertor, i sada je D = 0, tako da je sve ok

Nedozvoljeno stanje moze da se desi u rasponu od t do t + Δt.

Jedan problem sa ovim flip flopom jeste sto je to kolo sa 2 ulaza. Ima 4 moguce ulazne kombinacije. 4ta kombinacija je nedozvoljena. Ovaj osnovni flip flop ima stabilno i osnovno stanje 1, 1 (nista se ne desava), a kada jedan povucemo na 0, imamo promenu. Kada oba dva povucemo na 0, obadva izlaza ce otici na 1, a to je nedozvoljeno stanje. Na kraju ce jedan od njih da popusti i otici ce na 1 (jedan pre, jedan malo kasnije). Taj koji ode na 1 malo kasnije je pobedio i on ce

Page 31: digitalnaLogika - skripta

31

da izazove reakciju. U medjuvremenu, bice trenutak, kada su oba na 0, a to je Q i Q komplement (nadvuceno), iako tada nisu komplementi. Ovo je opasno stanje, jer je to logicki protivrecno stanje (Q i Q nadvuceno su jednaki). Kada ovako povezemo sa drugim kolima (racunamo da su 2 strane razlicite), dodje do borbe i kratkih spojeva (spaljivanja). Dakle, ovo 4 – to stanje je logicki i prakticno nedozvoljeno. Ne bi smeli da su na oba dva jednaki. Ovde moze da se spreci nedozvoljeno stanje. Mora flip flop jos malo da se doradi. Uzmemo dva takva flip flopa. Ova dva zajedno posmatramo kao jedan flip flop. Flip flopovi su serijski povezani i zatvoreni u kutiju, spolja izgleda kao da je to jedan flip flop. Ovakav flip flop ima dobra svojstva. Ovakva konstrukcija se zove Master slave, gde jedan kontrolise drugoga. Ovaj flip flop radi u 2 faze. Imamo signal C koji je na 0, pa ga prevucemo na 1. Ovde ce ulazni signal da prihvati sa zadrskom (dam podatak i kazem zapamti, sada dam podatak, pa zapamti do pola, pa kasnije zapamti ceo). U momentu kada signal C povucem na 1, D flip flop ce da proradi, ali ovaj drugi koji je preko invertera ce da se iskljuci. U prvoj fazi, jedan radi, drugi ne radi, ono sto mu dajemo na ulaz, bice zapamceno, ali je nevidljivo spolja (interno), a spolja se nista ne menja, isto stoji kao i ranije. Nakon toga se ulaz presece i prestane prvi da prima nove podatke, ali tada drugi flip flop proradi, i ono sto je bilo dato da zapamti, se pokaze napolju, ali tek onda kada je prekinut ulaz. Ovde se pravi povratna sprega koja ne pravi problem, jer kada se pokaze novi signal, prvi ce da bude vec ugasen (nema trke i konflikata). Kada posaljem drugi signal, prvi je vec zavrsen. Ovo je dvostepeni tajming koji je jako zgodan. Flip flopovi se najcesce prave u master slave varjanti, pa se izlaz pojavljuje u silaznom rubu kontrolnog signala.

JK FLIP – FLOP Kada imamo ovaj JK flip flop, sada moze da se resava ono 4 – to stanje (pominjao je gore). Ljudi su pronasli da bi 4 – ta funkcija koja bi bila korisna je obrtanje signala (togliranje - toggle). Sada imamo 4 funkcije:

1. Ne radi nista 2. postavi na 0 3. postavi na 1 4. promeni se (toggle)

4 – to stanje radi togliranje, menjanje u odnosu na prethodno. Ovo se zove JK flip flop koji zamenjuje SR flip flop (SR ne sme istovremeno da budu aktivni, a JK moze). Uzima D flip flop koji je tipa master slave, pa objasnjava kako crta sliku. Ovaj D flip flop mora da je tipa master slave, jer ima povratnu spregu (ako ne bi imao doslo bi do jurnjave). Sada pravi tablicu i analizira kolo. Registri se prave kao ovi flip flopovi. Ovo sto sada radimo, stvarno obavlja posao (sabirac nije mogao da radi bez registara).

Page 32: digitalnaLogika - skripta

32

Kod JK flip flopa za razliku od RS flip flopa na ulazu mogu da se pojave sve kombinacije vrednosti.

Ovaj flip flop resava problem neodredjenosti (nedozvoljenog izlaza). Q = 1 – Setovanje, J = 1, K = 0 Q = 0 – Resetovanje, J = 0, K = 1 Qn+1 = Qn – Toggle – iranje J = K = 1 Qn+1 = Qn – Pamecenje J = 0, K = 0

Page 33: digitalnaLogika - skripta

33

Formula Qn+1 = J * Qn + K * Qn Funkcionalna tabela

J K C Qn+1 Qn+1 Opis

0 0 1 Qn Qn Pamcenje

0 1 1 0 1 Resetovanje

1 0 1 1 0 Setovanje

1 1 1 Qn Qn Toggle

1/0 1/0 0 Qn Qn Pamcenje

Eksitaciona tabela

Qn Qn+1 J K C Opis

0 0 0(1/0) 1/0 1(0) ili resetovanje (J = 0, K = 1, C = 1) ili ono pamcenje (J = 0, K = 0, C = 1) ili izostavljeno pamcenje (J = 1/0, K = 1/0, C = 0)

0 1 1 1/0 1 ili setovanje (J = 1, K = 0, C = 1) ili toggle – iranje (J = 1, K = 1, C = 1)

1 0 1/0 1 1 ili resetovanje (J = 0, K = 1, C = 1) ili toggle – iranje (J = 1, K = 1, C = 1)

1 1 1/0 0(1/0) 1(0) ili setovanje (J = 1, K = 0, C = 1) ili ono pamcenje (J = 0, K = 0, C = 1) ili izostavljeno pamcenje (J = 1/0, K = 1/0, C = 0)

Moze da se resi i preko 2 AND – a i jednog OR – a.

Ovako izgleda

Page 34: digitalnaLogika - skripta

34

Nema nedozvoljenih stanja jer izlaz iz ova dva AND kola nikada ne moze da bude 2 keca. Ne moze iz oba AND – a izlaz da bude jednak 1 jer: izlaz iz gornjeg = C * K * Q iz cega sledi da bi moralo da bude C = K = Q = 1 izlaz iz donjeg = C * J * Q iz cega sledi da bi moralo da bude C = J = Q = 1 A Q i Q ne moze biti jedan istovremeno Znaci, sada smo izgradili nekoliko flip flopova. i konacno mozemo da napravimo flip flop kome kada god damo signal, on toglira. To je vise teoretski, nego prakticni flip flop. Ovaj ima samo jednu funkciju togliranja. Ovo se ne isplati u praksi da se pravi. Ovu su razne vrste flip flopova koji se koriste. D je klasicni memorijski elemenat.

T Flip – flop

Formula Qn+1 = Qn Kada smo dosli vec do sekvencijalnih kola, ona mogu da budu asinhrona i sinhrona. Asinhrona su retka u praksi, gde bi kombinatorna kola radila kako rade i ti rezultati se smestali u memorijska kola i samo bi se sve regulisalo. Uz pomoc ovoga moze nesto jednostavno da se napravi, a da bi se napravilo nesto komplikovanije, mora da se ide po nekim fazama, a tu je potreban neki spoljni davac takta. Sa fazama je nesto kao hardversko programiranje (izracunamo nesto, pa medjurezultate sacuvamo i sve tako). Treba da imamo neki tajming koji regulise kada se nesto desava (mora da se desava u odredjenom redosledu) i to mora da ima spoljni podsticaj i dirigent spolja treba da bude neki pravilan signal koji se zove signal sata (clock signal). Takav najjednostavniji signal sata bi bio pravilan cetvrtasti digitalni signal (slika dole). Kod ovog signala mozemo da uocimo neke karakteristike. Amplituda je neka karakteristika (ona se ne razmatra, jer je standardna – 0 i 5v). Sa ovog idealnog signala, bitna je frekvencija (reciprocna vrednost periode). Jos jedna bitna karakteristika je odnos dva dela u jednoj periodi. Faza kada je signal visok se zove aktivna faza, a druga se zove pasivna faza. Pitanje procentualnog odnosa aktivne i pasivne faze (kod idealnog signala je 50%). U svakom clock signalu mi tezimo ovom idealnom odnosu, jer remecenje tog odnosa nuzno usporava kolo, jer necemo moci da ostanemo na istoj frekvenciji. Kako odredjujemo kolika ta aktivna faza treba da bude? Imamo kombinatorna kola i da signal prodje kroz ta kola (gateove) treba odredjeno vreme. Za odredjenu tehnologiju zna se koliki je taj delay (vreme). Izracunali smo to vreme (npr 1 mikro sekunda). Ako imamo odnos 50 : 50, i pasivan deo napravimo da bude 1 mikro sekunde, odnosno perida 2 mikro sekunde a frekvencija 500khz. S druge strane, ako nemamo odnos aktivne i pasivne faze 50 prema 50 vec npr 10 na prema 90, aktivna deo moramo da drzimo na 1 mikro sekundu, jer toliko vremena treba da se stabilizuju signali, a ako je signal sata deformisan (odnos 10 : 90), imamo na jednom delu 1 mikro sekundu, a na drugom 9 mikro sekundi,

Page 35: digitalnaLogika - skripta

35

to je ukupno 10 mikro sekundi cela perioda (frekvencija 100khz). Znaci, celo kolo smo 5 puta usporili tako sto smo signal sata poremetili. Moramo da drzimo fiksnu aktivnu faza, a odnos aktivne i pasivne faze resava na racun toga sto se ukupna frekvencija smanji, tj. kolo uspori. U praksi mora se uzme u obzir da signal ne moze da bude idealan (kao ovaj dole na slici). Praktican signal ne moze da ima ostre coskove, kao ni nulto vreme rasta, ni nulto vreme padanja. Sada ima i vreme uspona i pada i nije cisto aktivna ili pasivna, vec ima medjufazu.

Ovakav jednostavan signal sata moze da posluzi za neka kola, ali je najcesce nedovoljan (monoton, samo broji 1-2-1-2…). Mozemo da uvedemo vise takvih signala, pa dobijemo kompleksnije dirigovanje. Praksa je pokazala da je dvofazni sat najbolji kompromis (3 – fazni i 4 – fazni daju unapredjenja, ali ne tolika). 2 – fazni sat najbolje sluzi za organizaciju sekvencijalnih kola. Kada se kaze 2 – fazni sat, podrazumeva se da ima 2 faze, isto tako se misli da te dve faze rade generalno u protivfazi (jedan je komplement drugoga). Ovo u protivfazi ne moze savrseno da se definise, jer se ne radi o idealnim signalima (cetvrtastim) – zato kaze ono generalno. Neka kola su aktivna na jednu fazu, a neka na drugu. S obzirom na nesavrsenosti (vreme uspona, padova), ne mozemo da ih napravimo da radi savrseno u protiv fazi (preklapaju se, jedan radi, pa drugi isto radi, pa prvi ne radi, a treba jedan radi, pa kraj, pa drugi radi pa kraj, pa prvi radi…). U praksi mora drugacije. Ako ne mozemo protivfazu da dobijemo, moramo nesto drugo. Ovi signali imaju aktivne i pasivne faze, i mora biti preklapanja, ali moramo negde da se ogradimo, pa da kazemo da nema bar preklapanja u aktivnim fazama. Pravimo realni dvofazni sat sa zahtevom da se aktivne faze ne preklapaju (pasivne hoce, ovde kada ne mozemo ovo da izbegnemo, bar mozemo da kontrolisemo). Ovo je sada puna definicija – dvofazni nepreklapajucih aktivnih faza sat (misli se isto i da su u protiv fazi). Ako hocemo da imamo taj sat gde se aktivne faze ne preklapaju, pravimo karikiran slucaj, gde su aktivne faze smanjene (jer je tako manja verovatnoca da se te faze preklapaju). – to je isto slika dole. Imamo zonu sigurnosti, kada je jedan definitivno zavrsio, tek malo kasnije drugi pocinje. Sada imamo brojanje na 2 takta, gde mogu da radim poslove na pojedinim fazama, bez bojazni da cu da radim dok prethodno nije zavrsili ili da sledece nije pocelo dok jos radim. Da bi imali ovu sigurnost, platili smo cenu – pasivne faze se preklapaju i jos kako, pa zato samo radim na aktivnim fazama (bolje ovako, nego da se igramo i rizikujemo). Naravno, ovo je samo ideja, jer cena ne sme da bude ovoliko visoka, da se toliko deformise signal. Bilo koji sat, se uglavnom dobija iz jednog analognog kola koje se zove oscilator – analogni oscilator (ovo nije digitalna logika). Imamo raznih oscilatora (klasicni se dobija preko kondenzatora i kalema, prazni se preko kalema, ovaj nije precizan). Precizni oscilatori se prave preko kvarcnog signala. Otkriveno je kada se kristali kvarca iseku na odredjeni nacin, mogu da se ugrade na el kola i oni kontrolisu oscilovanje i to vrlo precizno i nezavisno od promene spoljnih faktora (temperatura…), greske su samo nekoliko sekundi na godinu dana. Propustanje kroz jedan gate (inverter), izaziva kasnjenje. φ2 ce da bude invertovani zakasneli φ1 , φ2 ce da bude komplementaran, ali ce da kasni (imamo zonu preklapanja aktivne i pasivne faze – kada jedan kasni za drugim, imamo sigurno preklapanje). Nepreklapanje je uslov koji moramo da zadovoljimo, pa ovo sa φ1 i φ2 ne radi. Nepreklapajuci sat moze da se napravi pomoci flip flopa. Flip flop sa povezanim inverterom izmedju ulaza daje garanciju da ce sve da bude dobro. Posmatramo 3 signala. Kaze φ je 0 i otici ce jednog trenutka na 1. φ1 je za sada 1 i φ2 je za sada 0. Ovo imamo do nekog trenutka. Prolazenje signala kroz bilo koji gate je konstantno (zavisi od tehnologije, ali je slicno kroz sve gateove). Neka se uzme da je taj delay (prolazak kroz gate) neko vreme delta, kroz 2 gatea 2 * delta…Na kraju smo dobili da je aktivna faza

Page 36: digitalnaLogika - skripta

36

kompletno sadrzna u pasivnoj, φ2 aktivno je sadrzano u φ1 pasivno, i obrnuto. Upravo samo dobili da se aktivne faze ne preklapaju. Dobili smo garanciju da to tako radi, nezavisno od tehnologije, od brzine kola. Jednog momenta se pojavi φ2 kao nova vrednost i to je ulazni parametar za φ. Promena φ1 je posledica promene φ2. Nevazno je ko je i koliko brzi (nand ili inverter),jer je to uzrocno posledicna veza. Jedan signal se menja nakon apsolutno fiksiranog vremena nakon promene prvog. Ovako smo dobili dvofazni nepreklapajuci sat koji se uglavnom u sekvencijalnim kolima koristi.

Demultiplexer Ima jedan ulaz i 2 na n izlaza i n kontrola kod kojeg se ulaz prosledjuje na onaj izlaz ciji redni broj odgovara binarnom broju na kontroli. To je prakticno skretnice. Demultiplexer 1 na 4 izlgleda ovako. Na koji izlaz ce da ide, odredjuje kontrola (c1 i c0).

Page 37: digitalnaLogika - skripta

37

Ovo je novo kolo koje ima svoj smisao. Dekoder i demultiplekser su po definiciji razliciti, medjutim, fizicki su jedno te isto kolo. Ako uzmemo dekoder sa kontrolnim signalom.I uvede se treci signal koji se zvao enable ili sta vec. To bi bio dekoder sa enable signalom (dam mu adresu, izaberem jedan registar). Demultiplexer je sasvim drugo, ne deluje da su dekoder i demultiplexer ista stvar. Demultiplexer ima 1 ulaz, n kontrola i 2 na n izlaza, a dekoder ima n ulaza, 2 na n izlaza i neki poseban signal (1 kontrolni signal). Ocito je da je to 1 na 1, n na n, 2 na n na 2 na n. Izlazi odgovaraju izlazima, kontrole kontrolama. Cudna stvar je da bi ulaz morao da odgovara enable kontroli. Ovo ide aritmeticki ovako. Ako imamo 2 kola sa 1 3 i 8, onda 1 na 1, 3 na 3, 8 na 8, mora tako ako ima nekakve ekvivalencije, a onda kada vidimo sta smo uradili, kazemo moglo bi, ali se dobije da je ulazna linija jednaka enable liniji (na 1 radi sve, na 0 ne radi). Ova funkcija enable je jako jednostavna. U mislima nije jasno kako bi takva enable linija mogla da bude ulazna linija preko koje mi saljemo podatke koji se prosledjuju. Ovo je neobicno, ali je to tako! Mi to tesko prihvatamo, jer mi u glavi pravimo primere koji se odnose na analogni svet. Demultiplexer zamisljamo sa analogne tacke (voz i koloseci, muzicki uredjaj). Analogni primeri su jedno, a digitalno su drugi. Ako gledamo analogno, enable linija je besmislena (voz i koloseci). Predrasude su nam pogresne. Moramo da shvatimo da su to digitalni uredjaji. Oni barataju samo sa 0 ili 1. Oni se ispituju tako sto proveravamo da li su oni u odgovarajuce vreme na odgovarajucem mestu jednaki 0 ili 1. Ovo je sve sto je potrebno za digitalni uredjaj. Kod digitalnog kola sve drugacije utvrdjujemo ( da li je 0 ili je 1, a kod voza pitamo da li se pomerila skretnica za drugi kolosek, ovo je analogno i nema veze sa digitalnom, sto je u analognom lose, u digitalnom je dobro). Ako je ovo ulaz (multiplexeru) i kazemo ako ovde pustimo 0, onda 0 treba da se pojavi na izlazu koji smo izabrali i obrnuto za 1. A ako napravimo tabelu, videcemo da je to u redu, a kada objasnimo kako se to desilo, videcemo da je objasnjenje neobicno, ali je u redu. Kada kazemo, ajde da propustimo 1 na ovo mesto ovde. Mi selektujemo taj izlaz gde hocemo da se pojavi ulaz (odaberemo skretnicom). Stavimo na kontrole 00 mi time izaberemo izlaz. Na tako selektovani izlaz, mi hocemo da nasu 1 da propustimo tamo. Ako je ovde 1, ovde 0, ovde 0, bice 1. Mi smo selekcijom kod obicnog dekodera obezbedili da je tacno jedan izlaz jednak 1 i to je onaj nas, mi smo selekcijom ovde napravili 1 na ovom izlazu, a enable signalu ga nismo ubili, mi nismo nasu 1 propustili tamo, vec smo nasom 1 obezbedili da tudja 1 ne bude ubijena. Nije kako mi tu intuitivno zamisljamo da je nasa 1 prosla tamo, vec smo time obezbedli da tudja 1 ne bude ubijena,ovo je ispravno digitalno, ali je intuitivno tesko da se shvati. Jos je cudnija situacija sa 0. Ajde da propustimo 0 na isti taj izlaz. Ova nasa 0 da se pojavi na izlazu. Mi bismo hteli da aktiviramo izlaz I0 i zato smo selektovali adresu 0 i napravili smo da I0 bude 1, za razliku od ostalih izlaza koji su 0 (to je posao dekodera). Onda kazemo puj pik ne vazi i stavimo enable na 0 i ovo kolo ne radi nista i bude svuda 0. Ukinuli smo kolo. Izgleda cudno, ali je rezultat da je ovde 0. Po definiciji demultiplexera smo trebali da prosledimo 0 tamo i da bude 0. Rezultat je ispravan, ali je objasnjenje cudno, ali je tako. 0 se pojavila na izabranom mestu, ali i na svim ostalim mestima. Nismo mi nasu 0 propustili, vec smo ga nagovorili da napravi 1, pa onda sve ponistimo i pojavi se svuda 0. Kada stavimo ovde 1 i ovde i ovde 0, pojavice se 1 na izlazu. Kada stavimo 0, a ovde 0 i ovde 0, pojavice se ovde 0 i svuda drugde. Ako stvimo 0, 1 odnosilo bi se na prethodno i sve radi. Radi, ali ne kako zamisljamo demultiplexer da nasa 0 ili nasa 1 prodju na drugo mesto, vec smo sa 1 obezbedili da se neka tudja 1 ne ubije, a nasa 0 ubija sve, pa i to mesto koje je trebalo. Ovo funkcionise. Ukratko mi dobijemo jedinicu na izlazu zahvaljujuci selekciji na kontrolama, a onda ulaz iskoristimo da vidimo da li cemo da je ubijemo ili ne. Ako na ulazu stavimo 1, necemo je ubiti, ali ne izlazi 1 sa ulaza vec jedinica sa kontrola, a ako stavimo 0, onda ce na svim izlazima biti 0, ali nas interesuje samo nas izlaz (onaj koji smo odabrali kontrolama.) Ulaz kod demultiplexera se ponasa kao kontrola kod dekodera. Dekoder i demultiplexer je jedno isto kolo. Navodi se u katalozima kao dekoder/demultiplexer. Sta ce da bude, zavisi kako cemo mi da ga koristimo. (Kako cemo da ga okrenemo).

Page 38: digitalnaLogika - skripta

38

Multiplexer Multiplexer bi bio suprotan demultiplexeru. Imamo multiplexer 4 na 1. Sada imamo 4 ulzna kanala i bira se 1 izlaz. Multiplexer bi bio kombinatorno kolo sa 2 na n ulaza, jednim izlazom i n kontrola, gde se na izlaz prosledjuje onaj ulaz ciji redni broj odgovara binarnom broju na kontroli. Od vise ulaza, bira se jedan koji ce moci da prodje na izlaz. Ovo ima primenu (koji se memorijski cip prikljucuje na procesor). Multiplexer se pravi slicno kao i demultiplexer kao i dekoder. Kaze, brisemo enable liniju, jer nam ne treba, ali nam treba nesto drugo. AND kolo koje je osteljivo na sve 1, ili je osetljivo na sve 0, i cesto se koriste teoreme 1*1*1*1*x je jedanko x, kod AND kola koliko god da imamo ulaza 1, zavise od x. Kod OR kola imamo 0+0+0+x, x daje rezultat. Ovo se koristi ovde. Koriste se one gore teoreme ovde. Ja bih hteo da prosledim jedan signal. Kako da obezbedim da jedan signal prodje ili ne prodje. Ovo je kolo selektovano kada je na ulazu 00, onda ovde imamo 11, damo treci signal i sve ce da zavisi od treceg signala. Selektovanjem mi obezbedjuje da je ovo bitan AND elemenat, a kako ce da bude zavisi od treceg signala.Taj signal koji dodajemo je U0. I0 ce biti jednak U0, ali kada je selektovan, tj. kada je na kontroli 00, kada je na kontroli 00, dva dela su ispunjena, a treci deo prolazi (kada je 1, bice 0), ako nije selektovan, onda se ovde garantovano pojavljuje 0. Na izlazu iz svakog anda ce odgovarajuci signal da prodje, ako je selektovan, u zavisnosti sta stavim na c1 i c0, izabracu jedan od 4 AND – a. Ovako smo obezbedili da mi svaki od ulaznih signala prodje onda kada treba da prodje. Ovo je ta skretnica, koja obezbedjuje da jedan prodje. Taj sada koji je prosao ce da se pojavi na izlazu, jer za 3 od njih garantujemo da su jednaki 0, a 4 – ti je 0 ili 1 u zavisnosti kakav je signal, jer smo taj signal propsutili i na taj nacin sve zavisi od tog cetvrtog. Sada sva 4 spojimo paralelno u OR kolo i pojavice se odgovarajuci ulaz na izlazu. Sve ce da zavisi od 4 – tog, ako je 0 bice 0, ako je 1, bice 1, garantovano se pojavljuje onaj koji ce trebati da se pojavi. Multiplexer je opet modifikacija dekodera, dekoder mu je sustinski deo, a onda ga modifikujemo.

Page 39: digitalnaLogika - skripta

39

Kolo Ulazi Izlazi Kontrole Sta radi

Dekoder n 2n 1 aktivan tacno jedan izlaz i to onaj ciji redni broj odgovara binarnom

broju na ulazu

Demultiplexer 1 2n n ulaz prosledjuje na onaj izlaz ciji redni broj odgovara binarnom broju na

kontroli

Multiplexer 2n 1 n na izlaz se prosledjuje onaj ulaz ciji redni broj odgovara binarnom broju

na kontroli

SHIFT Registar Sekvencijalno kolo jer registar ima memorijsko kolo i jos neke elemente. Ovo kolo je primenljivo za razne stvari. Ovo se koristi za mnozenje. Shiftovanje je pomeranje svih bitova za jedno mesto na jednu ili drugu stranu (k – 1, k + 1). Za mnozenje je neophodno, slanje bajtova kroz telefonsku liniju (bit po bit), kada generisemo sliku na ekranu (bit po bit koji se pretvara u napon i na ekranu se ispisuje slika). Shift registar se sastoji od D flip flopova jer su oni najpogodniji za registre. D0, D1, D2 tri D registra. Oni imaju izlaze I0, I1, I2 i imaju ulaze. Imaju i kontrolni signal, on se podrazumeva (ne crtamo ih da ne komplikujemo). Treba da se dogvoorimo kako shift registar treba da shiftuje, levo ili desno. Mi hocemo da imamo kontrolu, da ide levo, da ide desno i da drzi, i da spolja mozemo da napunimo neki sadrzaj. 4 varjante:

1. zadrzi 2. idi levo, 3. idi desno 4. napuni

Ima raznih shiftovanja. Kada se sve pomeri levo ili desno, pitanje pocetka i kraja. Ima tu raznih varijanti, da se sacuva, izgubi, da se puni 0, puni 1, da se napravi krug (shift postaje rotacija onda)…. Ovo nas ne zanima trenutno. Kako da mu zadamo te operacije, moramo binarno. Dogovorimo se oko coda :

1. 00 je hold 2. 01 je shiftr 3. 10 je shiftl 4. 11 je load

Page 40: digitalnaLogika - skripta

40

To je neki nas dogovor. Onda napravimo dekoder 2 na 4, sa kontrolama c0 i c1 koje ce da odrede sta se radi, a mi cemo da imamo 4 zice koje odgovaraju komandama. Ovde smo resili komandi deo, sta hocemo da radi, kako da mu zadajemo komande i kako da ih primi. Mi mu dajemo kao 2 – bitni broj, a dekoder rasclanjava na 4 razlicita signala. Na ulazu treba nesto da mu se da. Ako treba da zadrzi stari sadrzaj, treba da reciklira, ako treba shiftl, sadrzaj dobija od desnog suseda, ako treba shiftr, treba od levog suseda, ako treba load, treba mu sadrzaj spolja. Ulaz u flip flop treba da zapamti jednu od 4 stvari (levi, desni, stari, spolja signal). To je fakticki multiplexer, gde mu se uvek nude 4 moguca signala, a u zavisnosti sta hocemo, izaberemo 1 od 4 signala. Ovde nista novo ne radimo, samo implementiramo multiplexer. Jedan je nacrtan, pa docrtavamo drugi deo (OR kolo). U OR kolo idu cetiri AND kola, moze da dodje ovaj s desna, moze ovaj s leva, moze jedan sam da se vrti, a moze i da dodje neki signal spolja. U svaki bit, u svakom momentu na jedan signal sata mogu da dodju jedna od 4 stvari. A sa 4 signala izaberemo koji hoce da se desi. Sada pokazuje ako hocemo hold, ovaj signal, ako hocemo shiftr, shiftl…. Ovde je vazno da se razume sta se radi, jer je crtez jako neugodan. Shiftregistar funcionise na principu multiplexera, za svaku celuiju se odredjuje jedna od 4 stvari koja treba da udje u nju (mi biramo koja od 4 stvari treba da se desi). Ovo lici vec na jedan mali procesor, kao da smo pravili procesor. Ovo je u stvari dekoder instrukcije, zadajemo mu spolja masinsku instrukciju, pa on odredjuje sta ce da uradi.

Page 41: digitalnaLogika - skripta

41

1. HOLD signal (00) – posalje se jedinica, koja je neutralni element za AND kolo, i onda se pomnozi sa izlaznim signalom iz flip flopa. Ovde vazi teorema x * 1 = x, dakle sta kod je bilo u flip flopu, to ce nastaviti da bude, tj. bice zadrzano.

2. LOAD signal (11) – posalje se jedinica, a kombinuje se sa ulazom spolja, a posto je AND kolo u flip flop ce uci signal spolja i na taj nacin ce se dati novi sadrzaj.

3. SHR signal (01) (Shift right – pomeri desno) – jedinica puta sadrzaj levog flip flopa, tako da u flip flop kolo ulazi sadrzaj levog flip flopa.

4. SHL signal (10) (Shift left – pomeri levo) – jedinica puta sadrzaj desnog flip flopa, tako da u flip flop kolo ulazi sadrzaj desnog flip flopa

Svi signali se kombinuju u jedno OR kolo. Tri AND kola ce na izlazu sigurno imati 0 (jer su tri signala iz multiplexera jednaka 0). Ovde vazi za OR kolo 0 + 0 + 0 + x = x, tako da ce ulaz u flip flop zavisiti od cetvrtog AND kola, tj. onog kola koje smo izabrali multiplexerom. VIII PREDAVANJE – 16.05.2007. god. Brojacki registar Radi se o sekvencijalnim kolima, jer kada se kaze registar znaci da ima sekvencijalna kola. Prvo bi trebalo teoretski da se razmilsi. tj. da se slome neke predrasude. Prva predrasuda je ta sto brojanje vezujemo za matematiku. Ovakav pogled ovde ne valja (u zivotu ima dosta primera koji navode na drugi pogled). U zivotu imamo brojac na automobilu, za potrosenu struju, brojimo korake za hodanje, trcanje… Sat na automobilu (klasicni, mehanicki) nema veze sa matematikom (sajla je povezana na tockove…). Ovde je nasa predrasuda da je taj brojac na automobilu matematika (na automobilu se radi po principu zupcanika, razlicitih velicina i to je cista mehanika). Brojanje bi trebalo posmatrati kao funkciju koja je cisto mehanicke prirode. Pisemo binarno prvih 16 dekadnih brojeva i posmatramo ih mehanicki. 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 … U ova 4 bita gore smo postavili 2 na 4, a to je 16 mogucih vrednosti (0 – 15) Mi posmatramo ove brojeve. Najnizi bit stalno alternira 0-1,0-1…(klackalica) A ovaj drugi to isto radi, samo 2x sporije, 00 – 11, 00 – 11, 00 – 11…. A ovaj treci jos 2x sporije, 0000 – 1111 Ako hocemo da napravimo sekvencu brojanja, mi ne moramo da znamo da brojimo, vec kazemo ovaj menjajte stalno, ovaj svaki drugi put, ovaj cetvrti … TO JE BROJANJE. 0 menjamo na 1 kada smo sve pre njega doterali na 1 (neka cifra se menja kada smo predhodne doterali do maximuma, u dekadnom sistemu su sve 9, a u binarnom su sve 1). Ovo je kao kmh na automobilu. Dakle, treba zaboraviti da brojanje ima veze sa matematikom i postaviti novu definiciju u skladu sa ovim mehanickim nizom. Binarno brojanje je funkcija nad binarnim nizom od n clanova, gde se k – ti clan menja, kada su svi predhdni jednaki jedinici. Ovim je mehanicki funkcija opisana. Ovo je definicija binarnog brojanja i ovakva definicija je pogodno za fizicku implementaciju komponenti – ne vodimo racuna o matematici. Sve sto radimo su logicke funkcije, svaka logicka funkcija se zadaje tabelom i ta tabela moze fizicki da se implementira. To je niz bitova koji radi odredjenu funkciju da se u jednom trenutku menjaju. Moramo zbog niza bitova da imamo flip flopove, tj. memorijska funkcija – osnovni gradivni element je t flip flop. Pravimo 4 t flip flopa (oni prave 4 – bitni registar). Imamo, i1, i2, i3…izlazi i to su izlazi iz flip flopa. A svaki flip flop ima ulaz za togliranje (zamena mesta), koji ce na

Page 42: digitalnaLogika - skripta

42

komandu da se promeni. Definicija kaze da najnizi bit treba stalno da toglira (tj. kada dodje komanda, spoljni signal kaze promeni), a ostale pod nekim uslovima. Znaci, najniza ciftra direktno ce da bude vezana za taj signal za brojanje –C (count). Pretpostavlja se da je signal sata uvek implementiran i da je sat uvek zajednicki signal koji je resen na odgovarajuci nacin (ne crta se zbog komplikovanosti crteza). Count je signal za brojanje i kada on dodje, ovaj najnizi treba da se menja. Sada kaze definicija da se k – ti bit menja kada su svi prethodni jednaki 1. Kako cemo da znamo da su svi predhodni jednaki jedinici? Postoji kolo koje je osetljivo na sve 1 i to je AND kolo. Jedan treba da se promeni, kada su svi prethodni jednaki jedinici. Ovo bi ovako moglo da radi. Ali problem je sto AND kolo ovde ima mnogo ulaza. Koristimo osobinu, ako imamo a * b * c * d * e i iskoristimo asocijativnost mnozenja, pa kazemo da je to ((a * b * ( c)) * d ) * e ovde ga postepeno izracunavamo, i sada prilagodjava sliku tome (da nemamo jedno AND kolo, vec mnogo AND kola tj. da ne bi u to jedno i kolo islo vise ulaza). Svako to i kolo predstavlja jedno parcijalno mnozenje. Ovo je mnogo zgodno, jer ako imamo AND kolo sa 2 ulaza, prakticno mozemo, a ako bi imali AND kolo sa ulaza koliko prethodno ima bitova, to je prakticno nemoguce (64 bita…).

Simbol: Ovo bi bila oznaka za binarni 4 – bitni brojac, koji ima izlaze I0, I1, I2, I3 i koji ima ulaz c za count kada treba da broji, i izlaz p (prenos) koji moze dalje da se iskoristi.

Page 43: digitalnaLogika - skripta

43

C signal ulazi u prvi T flip flop i govori mu da broji, to jest da toglira. U drugi T flip flop ulazi signal koji je proizvod C signala i izlaza iz prvog T flip flopa. Ako je izlaz iz prvog 1, drugi ce dobiti signal da toglira. Na ovaj nacin je ispunjen uslov iz definicije tj. sledeci ce da toglira kada su svi predhodni jednaki 1. Ovo se dalje prosiruje i na ostale T flip flopove. Kada necemo vise da brojima, jednostavno damo 0 na C signalu i onda ce zbog AND kola na kontrolama svih T flip flopova biti 0. Ovo prethodno kolo mozemo vrlo lako da prosirujemo, jer ako uzmemo jos jedan brojac BB4 i spojimo prenos sa sledecim BB4 brojacem, dobijemo 8 – bitni, 16 – bitni, itd, jednostavno se vezu. Medjutim, ovakvo kolo ima jednu manu, kao i oni sabiraci koje smo spominjali ranije. Ovakvo kolo je sporo, jer signal mora da propagira od pocetka do kraja. Ovaj ce da zna da li treba da toglira kada prima signal odavde, a ovaj ce da zna kada prima signal odande, ovaj krece s desna na levo i izgradjuje signal, pa ako je dugacak, potrajace dok se onaj najstariji bit stabilizuje. Kako da se obezbedi da ne treba da ceka od pocetka do kraja, a to su vec detalji prakticne implementacije. Ovakvo brojacko kolo ima i drugi naziv po katalozima – delitelj frekvencije. Prvi se menja stalno, drugi svaka 2x puta, treci svaka 4x puta…. Mozemo da zaboravimo na brojanje, vec dovedemo neki signal ovde i dobicemo signal dalje duplo manje frekvencije, pa opet manje, itd, tj. svaki sledeci deli sa 2. Ako imamo potrebe za delenje frekvencije, mozemo da koristimo to kolo. U praksi se mnogo vise koristi brojac unazad. Brojac unazad Visi jezici rade brojanje unapred. Kada se spustimo vec na C, nizovi idu od 0 do n-1, a kada se spustimo na masinski jezik, ide se od n do 0 u hardveru, jer je na kraju izlazni kriterijum uvek da li smo doterali do 0. Hardverski su uvek counteri count down. Sada posmatramo definiciju brojanja. Posmatramo u drugom smeru. Kada gledamo unazad , kada ce 1000 da se smanji, pa kada smo doterali na 999. Brojanje unazad je funkcija kod koje se k – ti bit menja kada su svi prethdni jednaki 0 (misli se na bitove vece tezine). Uz pomoc gore navedene definicije mozemo da implementiramo brojac. Isto ce biti T flip flopovi. Ovde sada imamo kolo, OR, jer to kolo reaguje na sve nule. Sada treba da detektujemo kada su svi prethodni jednaki 0, pa tada da reagujem. Treba da prepoznamo kada su sve 0, pa ce kolo da bude NILI (NOR). NORovi ce da nam daju 1 jedino u slucaju kada su svi prethodni jednaki 0. Sada AND gate gore zamenjujemo sa NOR gateom i dobijamo brojac unazad. Gde god ima AND gate, zamenimo ga sa NOR gateom i dobijamo brojac unazad. Medjutim, u praksi bi se to pravilo dosta drugacije. Mozemo da iskoristimo mastu sa AND kolima i kazemo. Treba da prepoznam kada su sve prethodne 0, kada su sve prethodne 0, njihovi komplementi su jednaki 1, ako su svi jednaki 0, njihovi komplementi su jednaki 1. Kao prethodni slucaj, ostavimo sada AND kola, samo ne uzimamo odavde, nego odande. Znamo da iz konstrukcije flip flopa, on automatski daje i izlaz i komplementirani izlaz (besplatno). Sada cemo da koristimo komplementirani izlaz (indirektan izlaz iz T flip flopa) jer je besplatan. Hocemo da prepoznamo kada su svi direktni izlazi jednaki 0, to je kada su svi komplementirani jednaki 1, a to se prepoznaje kada se oni prepuste kroz AND kola. Umesto da zamenjujem NOR kolima, razlika izmedju brojaca unapred i unazad je, ako sve ove povezem na q, dobijem brojac unapred, a ako ih sve povezem na q nadvuceno, dobijamo brojac unazad. U praksi se radi, jer je to sve slicno da kada napravimo kolo, ono moze da bude i brojac unapred i unazad, samo se pitamo odakle uzimamo nesto. Imamo q i q nadvuceno i treba da izaberemo da li ce ovaj ili onaj da ode na zajednicki izlaz – ovo je upravo definicija multiplexera (bira neki od ulaza i njega propusta). Ovde se radi o multiplexeru 2 na 1. A on ce da izabere koga ce da propusti na osnovu kontrolnog signala (njega zovem u/d nadvuceno – up/down, jedinica je up, nula je down). Imamo taj spoljni signal koji selektuje up down, u zavisnosti od toga da li je na 0 ili 1 stavljen. I ovu istu stvar ponovimo svuda. Sada se podseca sta je taj selektor (multiplexer 2 na 1). Na ovaj nacin sa ovim jednim kolom resavamo pitanje i brojanja gore i brojanja dole.

Page 44: digitalnaLogika - skripta

44

Izgleda potpuno identicno kao kod brojanja unapred samo sto su nam sada 0 znacajne, a ne 1. Kada na izlaz T flip flopa dodje 0, posalje se signal sledecem T flip flopu da promeni 1 u 0. Ponovo najmanji bit toglira na svaki signal, sledeci je 2 x sporiji, pa 4 x, itd. Dekadni brojac Mozemo isto tako da napravimo i dekadne brojace. Binarni bi bili korisceni interno u samom racunaru, a ako trebaju brojaci nesto spolja da pokazuju (kmh…), trebaju nam dekadni brojaci. Najejdnostavnija veza izmedju ova dva brojaca je preko BCD (Binary Coded Decimal) koda, gde se po 4 binarne cifre koriste za kodiranje jedne dekadne cifre. Uredjaji su po prirodi binarni, a ako hocemo da brzo predjemo na dekadni sistem, jedan 4 – bitni binarni brojac se pretvara u jednocifreni dekadni brojac. BB ide od 0 do 15 pa nazad, pa treba da ga ogranicimo da ne koristi 10, 11, 12, 13, 14 i 15.

Page 45: digitalnaLogika - skripta

45

4 – bitni binarni brojac postaje jednocifreni dekadni brojac, tako sto mu ugradimo mehanizam koji ce da radi kao obican binarni, samo kada prepozna 9, da mu ne dozvolimo da idemo napred na 10 i sasecemo ga i vratimo ga na 0, pa ponovo krene do 9 i tako dalje. Na 0 cemo da ga vratimo tako sto ga nasilno postavljamo na nulu except (tako nesto) signal koji postavlja na 0 bez obzira na sve ostalo. RS flipflopovi su imali R liniju da se kolo resetuje na 0. T flip flop je nastao od JK flip flop, a JK je SR flip flop sa nekim modifikacijama. T flip flop se cesto fizicki ne radi, jer nema svrhe interno vezivati. T ff je JK ff ciji su ulazi povezani. Ovde nam treba i ovo. T flip flop je JK ff sa povezanim ulazima, pa ovde kazemo necemo bas da ih povezemo, nego nekako da ih doteramo. Imamo JK i osim signala C, imamo i signal RST (verovatno neki reset), koji treba da ako je on jednak 1, treba ovo da postavi na 0, a ako nije jednak 1, onda treba ovo da se ponasa kao sto se ponasalo. Kod ovog K stavimo jedno ILI kolo. Pa kazemo ako je RST =1, 1 sigurno prolazi ono sigurno prolazi kroz ili kolo. Kada je RST jednak 1, k je aktivirano i flip flop ce da bud postavljen na 0 (to je ustvari reset signal). Ako rst nije jednak 1, onda C signal treba da se pusti i na J i na K (isto sto i ranije),pa sada kaze da treba negde da se stavi inverter i ovde da stavi signal C. Pa kada je ovaj 0, ovaj je 1,i kada je ovaj 1, kada njih dvojca treba zajedno da daju 1 koja ce da ode i ovamo i onamo. Prema tome, j i k zajedno su 1, kada je ovde 1 i ovde 1, drugim recima kada je ovde 1 i ovde 0, kada necu da resetujem i hocu da brojim. A ako je rst 1, prolazi ovde i resetuje. Uvek moze da se izmisli, treba mi od ovoga i onoga i to se radi. Ovde imamo ideju, kada se rst jednak 1, treba da se povuce na 0, nije jednak 1, treba da radi kao i ranije, kao t ff (sa ova 3 gatea je ostvareno) Sada imamo binarni 4bitni brojac koji ima rst signal. Sada samo treba da ugradimo prepoznavac 9tke i kada je prepoznamo, odradimo reset i dobili smo dekadni brojac. Sada crta, pa kaze uzmemo ovo sto smo radili, pa mu ugradimo prepoznavac 9tke. Lako je prepoznati bilo koji sadrzaj. i je prepoznavalac svih 1, a ILI svih 0, sve sto nije tako,moze da se svede na to. Ako hocu da prepoznam sadrzaj 01101001, trebamo da ovo sto su 0 da propustim kroz inverter, a ono sto su 1 da propustim direktno. Ovo propustim sve kroz jedno i kolo i 1 ce na izlazu da se pojavi tacno kada se na ulazu pojavi ovo sto smo napisali. Na ulazu i kola cu dobiti sve 1, tacno kada je na ulazu sadrzaj ono gore. i kolo se koristi za prepoznavanje bilo kog sadrzaja (mozemo ovo isto da uradimo i sa NOR kolom). I gore i dole imamo prepoznavalac sadrzaja. Ovo bi bilo generalno prepoznavalacko kolo. Ovde treba da prepoznamo 9 a to je 1001, ovde treba samo da ugradim inverter, pa ovde inverter, pa i kolo i povezemo na reset (crta sada). Ovo sada postaje dekadni brojac. U ovoj prici je pitanje sata nedoreceno, finija tehnicka pitanja su izozostavljena (da li je master slave, da li je jednofazni sat ili nije….). Ako bismo ovo hteli prakticno da napravimo, trebali bi da se bavimo tehnickim detaljima. To se ovde ne razmatra. Postoje i druge optimizacije, kaze da bi ovde dovoljno ovako nesto, umesto ovog relativno komplikovanog prepoznavalaca, mozemo da uzmemo samo jedno i kolo. Ako treba da prepoznamo bilo koju 9tku, treba da prepoznamo 1001, a ovde treba da prepoznamo 9 odredjenom kontekstu kada se pojavila, tj. kada dolazi samo posle 8. Do 0 je ovaj signal sve 0, pa je tek od 9tke signal prvi put 1,onog momenta kada se ovde pojavi 1, ovde se pojave tri 0 i kada se pojavi 9tka, pojavi se taj 1. Ovo je jednostavan prepoznavalac devetke u brojacu (gledamo samo ova 2 i oni se aktiviraju). Nama ponekada treba dekadni brojac koji nece da ide do 10, to se odnosi na obicne satove. Ako brojimo sekunde i minute idu do 59, a sati do 12…. Ovi slucajevi se isto regulisu na ovaj nacin. Brojac za sekunde ce biti dvocifren (jedan je normalan od 0 do 9, a drugi ce da prepoznaje 5 i onda ode na 0 (od 0 do 5), kada imamo oba rst, dajemo sledeci na minute i ostalo…).Ovde jedan signal ostaje signal za prenost, prenosimo ga na sledeci. Sati idu od 0 do 24, jedan treba da ide od 0 do 9 i od 10 do 19, pa posebno da ugradimo kada se pojavi 24, odnosno 23, onda se generise rst nazad na 0. Kada znamo sta je prepoznavac i kada imamo rst liniju, mozemo da napravimo bilo sta.

Page 46: digitalnaLogika - skripta

46

Posto se T flip flop dobija preko JK flip flopa, spajanjem J i K ulaza i dodavanjem invertora, a T flip flop se koristi za brojace, ovde su iskorisceni JK flip flopovi. Pored kontrole C imamo i signal RST koji resetuje sve flip flopove na 0, kada dodju do 9. Kada dekadni brojac krene sa radom, RST je jednak 0. Zbog toga on nema uticaja na OR kolo ispred K ulaza, kao ni na AND i kolo jer zbog invertera u AND kolo ulazi kao 1 i ne menja nista. Ta jedinica takodje nema uticaja na NAND kola, izlaz in NAND – a ce biti invertovani C (kada je RST = 0), a izlaz iz AND – a ce biti C (isto kada je RST = 0) i na taj nacin ce ovaj flip flop da toglira. Medjutim kada dodjemo do 9, preko kola za prepoznavanje aktivirace se RST signal i postace jednak 1. Izlaz iz NAND – a postaje jednak 1, i iz OR – a izlazi jedinica, a izlaz iz AND – a je jednak 0. Tako da imamo K = 1 i J = 0, a to je kombinacija za resetovanje JK flip flopa. ROM kolo U stara vremena, racunari su imali feritne memorije, tj. memorije su radile na magnetnom principu. Svaki bit se pravio kao jedan mali feritni konus oko kojeg se namotavala zica i propustanjem struje kroz zicu se taj konus magnetisao i razmagnetiosao i pamtio 0 ili 1, kao sto danas radi HDD. Tada su memorije bile jako skupe. Ovo je imalo jednu prednost – osobinu da ta memorija nije gubila sadrzaj sa nestankom struje. Ovo je ovako bilo decenijama. Onda je doslo vreme kasnih 60 – tih i 70 – tih, kada su pocele da se prave elektronske memorije flip flopovi, koje su po svim parametrima bile bolje, osim jedne stvari – te memorije gube sadrzaj kada nestane struja. Memorija nije vise trajna, i ovde se javio novi problem, kako sada da startujemo racunar. Sa pojavom elektronskih memorija pojavio se problem startovanja racunara. On se resava tako sto u racunar moramo da ugradimo jednu trajnu memoriju i u koju ce da bude upisan program za startovanje racunara. Procesor kaze kada dodje struja, tj. reset signal, idem na adresu, donosim prvu instrukciju, izvrsavam, procesor je jako ogranicen. Obaveza je konstruktora sistema da zna gde ce procesor da ode kada dodje struja i da tamo smesti program koji ce da startuje racunar. Moramo tamo gde ide procesor da ugradimo neku trajnu memoriju, koja ne gubi sadrzaj i sa dolaskom struje procesor ode tamo. Sa pojavom elektronske memorije, sa procesorom moramo da imamo 2 memorije trajnu sa programom za startovanje i drugu normalnu gde mozemo da radimo ono sto trebamo. Pokazalo se da ta memorija koja ne gubi sadrzaj ima jednu dodatnu osobinu, nus pojavu, to je da po njoj ne moze da se pise. Nama treba trajna memorija koja nece da izgubi sadrzaj pri gubitku struje, a ona je tada imala osobinu da po njoj ne moze da se pise. Tada nije moglo zbog toga da ta trajna memorija bude ukupna memorija, vec samo ona za startovanje racunara. Tako dolazimo do te situacije (ovo je jedan evolutivni proces). Danas se kaze da racunari imaju 2 memorije ROM i RAM (to je zbrkana situacije). Ovo nista ne znaci. Read only memory je malo nakarodno, ne treba nam da ne mozemo da pisemo po njoj, vec nam treba da ona ne gubi sadrzaj (primer sa prevozom – tresac kostiju). Dakle, ime ROM je jako glupo, jer je to samo nus pojava ove memorije koja ne gubi sadrzaj kada nema struje. ROM bi se bolje nazivao trajna memorija i onda bi bilo to to.

Page 47: digitalnaLogika - skripta

47

Sa druge strane imamo RAM Random Access Memory. Ovo je isto pogresno, jer nas ne zanima slucajan pristup, vec nas zanima ciljani pristup. Bolje ime bi bilo memorija sa adresnim mehanizmom, memorija sa ciljanim pristupom. Alternativa memoriji sa ciljanim pristupom su alternative memorija sa sekvencijalnim pristupom, LIFO, FIFO… Sekvencijalnim memorijama (magnetne trake), ne mozemo podacima da dodjemo kako hocemo, da bismo dosli do 100 – tog, moramo da prodjemo kroz 99. RAM je altrnativa onom ciljanom, pa je to skroz pogresan naziv. Kako pristupamo ROM – u? Svaki ROM je nuzno RAM (jer oba imaju adresni mehanizam). Smesno je reci imamo ROM i RAM. RAM moze da bude ROM ili ne mora. ROM je jedan deo RAM – a. Ovo je kompletna zbrka pri pisanju. Obe memorije su memorije sa adresnim mehanizmom, jedino je razlika da li gubi sadrzaj ili ne gubi sadrzaj pri nestanku struje. ROM je potreban za startovanje racunara kao trajna memorija. Svaka memorija ima adresni mehanizam, klasicni adresni mehanizam je dekoder (prima adresu i selektuje jedan od registara). Svaka memorija pocinje od dekodera. Svaka memorija se karakterise sa 2 broja 2k puta 4, ili 256 puta 8:

1. prvi broj oznacava adresni prostor (koliko registara memorija ima) 2. drugi broj oznacava sirinu registra (koliko ima bitova u svakoj memoriji)

Ako uzmemo memoriju 4 (broj registra) puta 3 (sirina) (neobican slucaj, u praksi neprimenljiv). Prvo treba da se odredi sadrzaj te memorije, npr 011, 101, 100, 010. Ovo je sadrzaj te trajne memorije i kada nestane struja to ce da stoji sacuvano i procesor ce moci to da procita. Prvo nam treba dekoder 2 na 4, on prima adrese a0 i a1, a selektuje jednu od 4 linije, r0, r1, r2, r3. I sada uzimamo za svaku data liniju po jedno OR kolo i dobijamo d0, d1 i d2. Onda cemo OR kolo da povucemo liniju od svake od ovih. Za sada ovo nece nisa da uradi pametno (daje sve 1 u svakom slucaju). Dovedemo na ulaz neke adrese i kada dovedemo neku adresu, dekoder selektuje tacno jednu od izlaznih linija. Jedna je 1, o ostale su 0. Od nje imamo zicu na sva 3 OR – a. Kada na OR kolu imamo jednu 1, nije vazno sta je ostalo. Ovde se garantuje da ce uvek biti na 3 mesta 1. Sada gledamo, gde se nama ne svidja gde je 1, kaze mogu da uzmem i mogu obrnuto da uradim, da presecm ovu zicu ovde i pita sta sada biva. Kaze kada bude adresa 00, bice selektovana ova zica, a ostale ce biti 0. Secenjem zica na odgovarajucim mestima otpisujemo 0. Secenje odgovarajuce zice obezbedjuje upisivanje nule. Ovakva gotova slika upravo predstavlja ovu trajnu memoriju. Ovde treba da se primeti da je ovo krajnja nerealisticna implementacija. Medjutim, u praksi ovo ne bismo mogli da radimo. Ovde se trazi OR kolo sa onoliko ulaza koliko ima registara (ranije je bilo bar 1000 , 1 kilo), i ovako je jako tesko da se izvede za veliki broj registara. Kako bi se u praksi ovi uredjaji koristili. Ovakav slucaj podrazumeva da mi komuniciramo sa fabrikom, moramo unapred da smislimo sta ce da pise u memoriji i posaljemo u fabriku i onda oni presecaju zice. Ako nam treba 10000 komada, fabrika ce da uradi specijalne slucajeve sa ovako presecanim zicama, a ako nam treba manje, ne moze. U praksi se radi tako sto postoji varijanta koja se zove PROM (Programmable ROM). Ovde se misli na programabilnost na terenu, a ne u fabrici. Fabrika kaze da razni ljudi trebaju razne stvari. Kaze, mi cemo u fabrici da pravimo samo jednu stvar koja moze da se prilagodi i bude dobra svakome. Ona pravi jednu stvar koja je jednostavana i jeftina (gde ima svuda 1, tj. koja ima sve zice), ali ima dodatak, dodatni mehanizam kome cemo moci da spolja dovedemo napon od npr 12 v (obican radi na 5v), i jos dodatni adresni mehanizam kojim cemo moci da selektujemo neku od 12 zica i da dovedemo napon od 12v i da spalimo koju hocemo. Imamo sada jeftin cip koji generise sve 1 i kod kuce mi palimo zice. Dobili smo isto sto je moglo i u fabrici da se napravi. Za ovo postoji uredjaj koji se zove programator (cip utaknemo u njega i kablom na usb). Imamo softver koji ima tabelu gde hocemo sta da pisemo i pokrenemo softver i onda se spaljuju odredjene zice i ovo je u praksi odlicno primenljivo. Mi smo pricali o vise memorija i opet ima ljudskih predrasuda. Spominjali smo do sada kombinatorna, mem i sekvencijalna kola i znamo definicije. U skladu sa tim definicijama, ovo nije nikakva memorija. Sustinsko svojstvo mem je da zapamti ono sto smo mu mi dali. Kombinatorna kola damo ulaz i dobijemo izlaz, izracunavanje logickih funkcija. Dekoder je kombinatorno kolo. Mi u ROM stavimo ulaz i dobijemo izlaz, i ljudi veruju da je to memorija, ali u skladu sa definicijom ovo nije memorija. To je tacno, to nije memorija, vec kombinatorno kolo. A zovemo ga memorija, jer sami sebe lazemo. Mozemo memoriju i drugacije da posmatramo, kazemo memorija je nesto sto koristimo kao memoriju, a to je ako imamo adrese, pa adresni mehanizam, pa procitamo sadrzaj i ovo zadovoljava ovu definiciju. U ovu definiciju bi ROM mogao da se uklopi. Pa se onda kaze ako ROM prihvatimo kako memoriju, zasto AND po ovoj definiciji ne prihvatamo kao memoriju. Ovo je sve mutno. Ovo je nasa proizvoljnost i zbog toga sto ROM ima mnogo funkcija i adresa kazemo da je to memorija (onda ista argumentacija vazi za svaki NAND i NOR). Ovo ROM je klasicno kombinatorno kolo, ali moze da se koristi kao memorija, i zato se zove ROM. Kombinatorna kola izracunavaju logicke funkcije, to isto radi i ROM. ROM izracunava te funkcije na najtrivijalniji nacin, on izracunava logicku funkciju koja je tablicno upisana u njega. Sa ROM – om se logicke funkcije implementiraju trivijalno. Upisemo tablicu u ROM i izracunava se. Napisemo samo tablicu (za XOR, sabirac, sve) i upisemo u ROM i imamo rezultat. Ne zanima nas nista drugo, ni da je XOR 4 NAND – a, ni sve ostalo. ROM na trivijalan nacin implementira funkciju. Samo se upise u ROM. Rom 8 x 2 je puni sabirac. Ima 3 ulaza i 2 izlaza, 8 registara. 3 – bitna adresa ulaz. To su nam 3 ulaza p, x, y, koji daju odgovarajuci s i p koji mogu da se procitaju. Sa jednim takvim 8 x 2 ROM – om dobijamo puni sabirac. Isto tako uzimamo npr dekoder (velika jedinicna matrica), prepisemo jedinicnu matricu u ROM i radimo. Ovo upisivanje u ROM se negde vise isplati, a negde ne. Sve sto radimo su log funkicje, svaka log funkcija se zadaje tablicom i tablica se upisuje u ROM. ROM je univerzalni hardverski uredjaj, sve moze da se upise u ROM. U praksi ne biva tako, jer je nesto malo skupo, malo sporo…. (primer sa kritpografijom – najbolji sistem, kljuc dugacak koliko i poruka i ne ponavlja se, ali je nama nezgodno). Isto je i ovde, sve se lako resava preko ROM – a, samo nece da bude preterano brzo

Page 48: digitalnaLogika - skripta

48

i bice skuplje (potrosice mnogo prekidaca). Moze tako, ali da lupamo glavu, kako da napravimo sabirac, sa dva polusabiraca i to sve radimo da bi bilo brze i jeftinije, sa manje prekidaca.

Page 49: digitalnaLogika - skripta

49

Pomocu ROM – a implementirati bilo sta. Napraviti dvobitni mnozitelj. Imamo ulaze x0x1 i y0y1 i imamo izlaz P3P2P1P0. Imamo tabelu

RB Y1Y0 X1X0 P3P2P1P0

0 00 00 0000

1 00 01 0000

2 00 10 0000

3 00 11 0000

4 01 00 0000

5 01 01 0001

6 01 10 0010

7 01 11 0011

8 10 00 0000

9 10 01 0010

10 10 10 0100

11 10 11 0110

12 11 00 0000

13 11 01 0011

14 11 10 0110

15 11 11 1001

Page 50: digitalnaLogika - skripta

50

Izlaz 2 – bitnog mnozenja ce da bude 4 bita. Najtrivijalnija implementacija je pomocu ROM – a i sve stavimo u ROM 16 x 4 koji ima 4 adresne linije i sadrzaj roma, i kada stavimo odgovarajuce ulaze, dobijemo odgovarajuci 4 – bitni broj. Prepisemo tablicu i gotova stvar. Ovo nije optimalno, jer kada gledamo 4 – ti bit, svuda je 0, samo na jednom mestu 1. Nije najekonomicnije to da se uradi, ali je jednostavno. ROM je univerzalni uredjaj za implementaciju funkcije. Kod ROM – a imamo dobre i lose osobine. Dobro je sto je ROM univerzalni, a nevolja je sto je ROM neracionalan, mnogo trosi. Mi bismo hteli negde izmedju. I pokazalo se da moze da bude ekonomicnije, a to ce se zasnivati na NDF, gde je veza izmedju NDF i tablice trivijalna, iz svake tablice se vidi NDF. Kod NDF uzimamo samo one elemente gde se javlja 1. Pisuci NDF, mozemo dosta da ustedimo. I napravice se metod sa NDF koji ce da ima svojstva resenja sa ROM – om , a sa druge strane ce da bude racionalniji. To je PLA (Programmable logic array). PLA (Programmable Logic Array) Proizovd cu da napravim sa AND kolima, a sumu cu da napravim sa OR kolima. Pravi ulaze u0…uk, pa ulaze provede kroz mrezu AND kola i sve zajedno zove AND Plain (AND ravan), to je ova ravan koja pravi proizvode, pa kaze onda zarotira za 90 stepeni, pa su ti proizvodi ulaz za OR Plain (OR ravan) koja pravi sume, pa onda izlaze izlazi i0…ip.To se i fizicki implementira tako, a zgodno je da se zarotira za 90. Ako u osnovnoj formi, PLA izracunava funkcije, uz pomoc PLA se implementiraju konacni automati, to su jednostavni racunari koji vrse fiksan program, ali bez toga da imaju procesor i memoriju, pa je sve sabijeno u nesto sto se zove unutrasnje stanje. Uz pomoc njih pravimo liftove, ves masine, automate za placanje…Ovi automati se trivijalno implementiraju pomocu PLA. Dvobitni mnozitelj preko PLA Ako pogledamo tablicu za dvobitni mnozitelj, videcemo da nema potrebe implementirati prvih pet redova (0 – 4), jer su sve 0. Ostalo mozemo transformisati u NDF. Gledamo gde izlazi imaju rezultat jednak 1, i pisemo funkciju. Gledamo prvo P3 : P3 ima rezultat 1 samo u poslednjem redu (15), pa sledi P3 = x0 * x1 * y0 * y1. P2 : P2 = (x0 * x1 * y0 * y1)(red 10) + (x0 * x1 * y0 * y1) (red 11) + (x0 * x1 * y0 * y1)(red 14) P1 : P1 = (x0 * x1 * y0 * y1)(red 6) + (x0 * x1 * y0 * y1)(red 7) + (x0 * x1 * y0 * y1)(red 9) + (x0 * x1 * y0 * y1)(red 11) + (x0 * x1 * y0 * y1)(red 13) + (x0 * x1 * y0 * y1)(red 14) P0 : P0 = (x0 * x1 * y0 * y1)(red 5) + (x0 * x1 * y0 * y1)(red 6) + (x0 * x1 * y0 * y1)(red 13) + (x0 * x1 * y0 * y1)(red 15) Ulaza imamo 4 komada. Ulazi uvek idu sa svojim komplementima (uobicajeno gde imamo pravilnu strukturu). Prvo sto treba da uradimo jeste da formiramo proizvode, ali samo one koji nam trebaju. Primecujemo da nam se pojavljuju samo redovi 5, 6, 7, 9, 10, 11, 13, 14 i 15, tj. samo 9 redova, pa cemo praviti 9 AND kola.

Page 51: digitalnaLogika - skripta

51

Usteda u prekidacima : Na osnovu sledeceg :

1. Dekoder 4 – 16 = 4 * inverter + 16 * AND 5 ulaza 2. Kolo sa n ulaza = n – 1 kolo sa 2 ulaza 3. Inverter = 2 prekidaca 4. AND = 6 prekidaca 5. OR = 4 prekidaca

Kod implementacije preko ROM – a, imamo jedan dekoder 4 – 16 i 4 OR kola sa po 16 ulaza. 1 * (Dekoder 4 – 16) + 4 * (OR 16 ulaza) = (4 * inverter + 16 * AND 5 ulaza) + 4 * (OR 16 ulaza) = = (4 * inverter + 16 * 4 * AND) + 4 * (15 * OR) = (4 * inverter + 64 * AND) + 60 * OR = = 4 * 2 prkidaca + 64 * 6 prekidaca + 60 * 4 prekidaca = 8 prekidaca + 384 prekidaca + 240 prekidaca = 632 prekidaca Kod implementacije preko PLA – a, imamo 4 invertera, 9 AND kola sa 8 ulaza i 4 OR kola sa 9 ulaza 4 * inverter + 9 * AND 8 ulaza + 4 * OR 9 ulaza = 4 * iverter + 9 * 7 * AND + 4 * 8 * OR = = 4 * inverter + 63 * AND + 32 * OR = 4 * 2 prekidaca + 63 * 6 prekidaca + 32 * 4 prekidaca = 8 prekidaca + 378 prekidaca + 128 prekidaca = 514 prekidaca < 632 prekidaca Kod slozenijih funkcija, razlika je veca. Ovo je isto unvierzalna primena (radi se iz tablice), ali je dosta racionalnije, bacili smo silne nule (ustedeli smo na prekidacima i povecali brzinu). PLA se zove zato sto je programmable logic array. U fabrici se pravi samo jedna vrsta cipova (cip sa svim mogucim zicama), isto kao i prethodno imamo programator koji se prikljuci na racunar, pa napon od 12v, pa softver kojim selektujemo zice koje ne trebaju, pa ih spalimo. Ovo je interesantno za implementaciju funkcije, kao i za konacne automate (to su kompletni uredjaji, racunari koji rade nesto primitivno, sve je sazeto u unutrasnja stanja).

Page 52: digitalnaLogika - skripta

52

Page 53: digitalnaLogika - skripta

53

Page 54: digitalnaLogika - skripta

54

IX PREDAVANJE – 23.05.2007. god. Ostala je jos jedna stvar iz digitalne logike. To su konacni automati. PLA uglavnom implementira logicke funkcije, ali sa nekim malim modifikacijama moze da implementira konacne automate koji su interesantni. Za semafore, za ves masine, za razne druge uredjaje. Ovde je interesantnije da se vidi generalniji pojam racunara. Opet sklanjamo predrasude, da ne bi usko gledali stvari. Automati su neki mali racunari. Svaki racunar je automat. Mi smo jako dugo sa racunarima, pa koristimo pojmove programiranja, fon neumannove arhitekture, pa smo blizi njemu. Ovde cemo da vidimo racunar koji radi iste funkcije kao i racunar, samo na drugi nacin. Konacni automati imaju unutrasnje stanje i tamo su sabijeni i program i podaci. Da li mozemo 2 varijable da pamtimo u jednoj varijabli. Onda koristimo razne nacine kodiranja, to su trikovi, najjednostavnije kodiranje je da ih pomerimo decimalnim zarezom jednom od druge,pa ako su varijable manje od hiljade, jednu pisemo kao jedinice, drugu kao hiljade. Onda varijable 135 i 52, zapisacemo ih kao 135052, pa ostatak pri jednom deljenju sa 1000 je jedna varijabla, a druga varijabla je celobrojno deljnje sa 1000. Spolja imamo 1 varijablu, a za nas logicki imamo 2 varijable. Ovde smo videli da 1 varijabla moze da vrsi funkciju 2 i 3 varijable. Isto kod ovakvih automata ce u potpunosti i program i varijable da budu sabijeni u unutrasnje stanje koje onda diriguju ponasanje tog automata. Kvantni automati nemaju programe i podatke, imaju spoljne ulazne podatke, izlazne podatke i unutrasnje stanje. Na ovaj nacin obavljaju neku funkciju koja je mogla na klasicnom programskom jeziku da se isporgramira. Dakle, kod konacnog automata, imamo vektor ulaza i vektor stanja, a na osnovu njih se generisu vektor izlaza i vektor novih stanja S` (nova stanja u sledecem ciklusu postaju stara stanja). Ui i Si generisu Ii i Si+1 i to se vrti u krug. Sada uzmemo nove Ui+1 i Si+1 i generisemo Ii+1 i Si+2. Ovo bi bio opis funkcionisanja konacnog automata. E sada kako to u praksi izgleda. Implementacija ce da bude preko PLA. PLA izracunava logicku funkciju (kako sada od ovog sto izracunava logicku funkciju da napravimo konacni automat). Mi cemo ono sto je za nas logicki (ulazi i stanja) da smatramo sve zajedno ulazima, a ono sto su izlaz i nova stanja, smatracemo to izlazima. Ovo je kada se posmatra zajedno logicka funkcija koja ima ovoliko ulaza i ovoliko izlaza.

Page 55: digitalnaLogika - skripta

55

Ulazi se dele na grupe Ui, Si, a opet izlaze, neke cemo da zovemo Ii, a neke Si+1. Fizicki su dve grupe: ulazi i izlazi. Logicki zamisljamo da su neki ulazi pravi, a neki unutrasnja stanja, a izlazi, neki su pravi izlazi, a neki nova unutrasnja stanja. Buduci da postoji povratna veza, stara unutrasnja stanja postaju nova unutrasnja stanja, sve sto treba da uradimo jeste da napravimo povratnu vezu, tj. da se ovi Si+1 vrate na Si. Prema tome, konacni automat po teoretskim definicijama je jedno, a fizicka implementacija je samo PLA sa povratnim spregama i te povratne sprege su u stvari unutrasnja stanja. Ovde je onda najveci posao da se razume realni problem iz fizickog realnog sveta. Primer automata za kafu Recimo da postoje kovanice od 1 din, 2 din i 5 din, a da roba koja se prodaje (kafa) kosta 5 din. Automat ima mesto gde prima novac, gde vraca kusur i gde izdaje robu. Prima novac, izda robu i vrati kusur. Treba da shvatimo problem i da definisemo sta je tu sta. Sta ce da budu ulazi? Spolja se desava – ljudi ubacuju pare. Ulazni podaci su: 0 din, 1 din, 2 din i 5 din. Spolja imamo 4 razlicita dogadjaja i zato imamo 4 stanja (numericke vrednosti nisu bitne, bitna su samo stanja). 4 stanja se siftruju sa 2 bita.

u1 u0 Opis

0 0 Nista nije ubaceno

0 1 Ubacen 1 dinar

1 0 Ubacena 2 dinara

1 1 Ubaceno 5 dinara

On stavlja u0 i u1 kao ulaze (oni znace da nije ubaceno nista, da je ubaceno 1, 2 ili 5 din). Ovde je unutrasnje stanje koliko je do sada automat uzeo para. Ovde ce biti 5 unutrasnjih stanja (ubaceno 0, 1, 2, 3, 4 dinara). Sada kaze imacu S0, S1, S2. 5 stanja moram da sifrujem sa 3 bita, ali cu da koristim samo 000,001,010,011 i 100. Ne treba mi kada ubacim 5 dinara, jer tada racunam da sam izdao kafu.

S2 S1 S0 Opis

0 0 0 0 dinara u automatu

0 0 1 1 dinar u automatu

0 1 0 2 dinara u automatu

0 1 1 3 dinara u automatu

1 0 0 4 dinara u automatu

Sta ce da budu izlazi? Izlazno stanje moze da bude :

1. nikome nista 2. dajem kafu 3. dajem kafu i vracam kusur 1 dinar 4. dajem kafu i vracam kusur 2 dinara 5. dajem kafu i vracam kusur 3 dinara 6. dajem kafu i vracam kusur 4 dinara

Maximalno moze da bude 4 + 5 a to je 9 dinara, pa ce max kusur da bude 4 Ovde ima 6 mogucih slucajeva. Sifrujem ih sa 3 bita, I0, I1, I2.

Page 56: digitalnaLogika - skripta

56

I2 I1 I0 Opis

0 0 0 Daje kafu

0 0 1 Daje kafu i kusur 1 dinar

0 1 0 Daje kafu i kusur od 2 dinara

0 1 1 Daje kafu i kusur od 3 dinara

1 0 0 Daje kafu i kusur od 5 dinara

1 0 1 Ne daje nista

Sada ih numerisemo, nula je dajem kafu plus 0, 1, 2, 3, 4 dinara, pa je onaj jedan ne dam nista. Moze se rasporedjivati kako hocemo, najjednostavnijeje je npr ako imam kusur 1 din da bude izlaz binarni broj 1, pa 2 din da bude izlaz binarni broj 2…Sada kaze tablica da ce ulazi da budu U i S, a izlazi ce da budu izlaz i nova stanja, znaci ulaz i staro stanje definisu izlaz i novo stanje. Generalno 5 – bitni kompozitni ulaz bi imao 32 slucajeva, i od 32 ne koristimo sve ulaze. Ako ispisem i slucajeve koji nam ne trebaju, nije nista ali stedimo prostor. Ovo su moguci ulazi, a unutrasnjih stanja ima 5 a ne 8, pa ne treba 8 puta 4 je 32 vec 5 puta 4 je 20. Sada u skladu sa tim popunjavamo tablicu. Sada treba da vidimo sta treba da se desi. Kako se prave izlazi i nova stanja. Sada ce da dopunjuje tabelu S2`, S1`, S0` - ovo su oznake za novo stanje, a izlazi su I2, I1 i I0. Uzima prvih 5 slucajeva U1 U2 je 00, to znaci da ovaj ne daje pare na ulazu i da se nista ne desava, pa onda celokupno stanje se prepisuje (ne da nista na ulazu, izlaz ne da nista – ni kafu ni kusur), pa prepisuje na I2, I1 i I0. Sada gleda drugu petorku. Na ulazu kaze, ovaj daje dinar, i tada uglavnom pamtimo da je on dao dinar (pamtim povecani sadrzaj, ako sam imao 2, pamtim 3, pa td) i u tom jednom slucaju ako sam imao pre 4 dinara, a on dao dinar, isporucujem robu onda. Ako on da dinar, ja pamtim da sada imam 1, pa povecava…(ako sam imao 1, sada imam 2, a ako sam imao 2, sada imam 3, pa 4, pa 5 i kada dodjem do poslednjeg slucaja, ja dajem robu, ali nema kusura). Znaci i ovde ostaje kao i u prethodnoj petorki, i ovaj je slucaj daje dinar, povecavam kredit, a u petom slucaju dajem kafu, ali nema kusura. Prva petorka on de da nista, automat ne da nista. Druga petorka, on daje dinar, stanje se povecava i u petom stanju tek daje kafu, ali nema kusura, jer kafa kosta 5 din. Treca petorka. On daje 2 dinara, pa se sada isto kao i u prethodnom svuda stanje povecava za 2…kada dodjemo do slucaja da je bilo pre 3 din i on daje 2 din, onda se sistem vraca na 0, a njemu se daje kafa bez kusura. I poslednji slucaj ako je bilo 4 a on je dao 2, sistem se vraca na nulto stanje ponovo i njemu se daje kafa i dinar kusura. Poslednji slucaj. Kada se daje 5 dinara, Ako je bilo 0 din i daje 5 din, sistem ide na 0 i daje kafu, ali nema kusura. Ako nicega nije ni bilo, izdaje se kafa, a ako je bio dinar, onda se izdaje kafa i 1 din kusura, ako je bilo 3, daje se kafa i 3 din, ako je bilo 4 din, daje se kafa i 4 din, a sistem se u svakom slucaju vraca u pocetno stanje. Kaze da je prvi deo da se smisli problem najtezi, pa drugi tabela je laksi, a treci je jos laksi (damo tabelu softveru, i on ce da uradi automat). Ako bismo radili peske, treba da napravimo PLA. PLA se radi po NDF.

Rb ULAZI IZLAZI

u1 u2 Opis S2 S1 S0 Opis S2’ S1’ S0’ Opis I2 I1 I0 Opis

0 0 0 Nista nije ubaceno

0 0 0 Ima 0 0 0 0 Ne menja se

1 0 1 Nema ubacenog novca, pa se nista ni ne desava

1 0 0 0 0 1 Ima 1 0 0 1 1 0 1

2 0 0 0 1 0 Ima 2 0 1 0 1 0 1

3 0 0 0 1 1 Ima 3 0 1 1 1 0 1

4 0 0 1 0 0 Ima 4 1 0 0 1 0 1

5 0 1 Ubacen 1 dinar

0 0 0 Ima 0 0 0 1 sva stanja + 1 dinar 4->5 (0)

1 0 1 Kada u automatu ima 0-3 dinara, ne desava se nista, ali kada ima 4 i ubaci se 1, izbacuje se kafa

6 0 1 0 0 1 Ima 1 0 1 0 1 0 1

7 0 1 0 1 0 Ima 2 0 1 1 1 0 1

8 0 1 0 1 1 Ima 3 1 0 0 1 0 1

9 0 1 1 0 0 Ima 4 0 0 0 0 0 0

10 1 0 Ubaceno 2 dinara

0 0 0 Ima 0 0 1 0 sva stanja + 2 din 3->5 (0) 4->6 (0)

1 0 1 Kada u automatu ima 0-2 dinara, ne desava se nista, ali kada ima 3 i ubaci se 2, izbacuje se kafa, 4+2 = kafa +kusur

11 1 0 0 0 1 Ima 1 0 1 1 1 0 1

12 1 0 0 1 0 Ima 2 1 0 0 1 0 1

13 1 0 0 1 1 Ima 3 0 0 0 0 0 0

14 1 0 1 0 0 Ima 4 0 0 0 0 0 1

15 1 1 Ubaceno 5 dinara

0 0 0 Ima 0 0 0 0 sva stanja prelaze u 0

0 0 0 U svakom slucaju izlazi kafa i kusuri od 1, 2, 3, 4 dinara

16 1 1 0 0 1 Ima 1 0 0 0 0 0 1

17 1 1 0 1 0 Ima 2 0 0 0 0 1 0

18 1 1 0 1 1 Ima 3 0 0 0 0 1 1

19 1 1 1 0 0 Ima 4 0 0 0 1 0 0

Vidi se iz tabele da odmah mozemo da zanemarimo redove 9, 13 i 15 jer su sve 0 na izlazima. Za ostale pisemo funkcije.

Page 57: digitalnaLogika - skripta

57

Mi bi trebalo da napravimo 5 ulaza sa njihovim invertima i dobijemo AND ravan. Sada treba da napravimo proizvode. Kada se pogleda tabela za NDF treba tamo gde su jednake 1, a to su 6 funkcija. Imamo iz tabele 3 slucaja gde su sve tri 0, tu necemo morati nikakav proizvoda da pravimo (od onih 20 jos 3 otpadaju, pa ostaje 17). Sada pravimo 17 AND kola i napravimo sve proizvode koji trebaju. Izlaznih funkcija ima 6 komada. Imamo na kraju 2 ulaza, 3 izlaza i 3 linije koje predstavljaju unutrasnje stanje, staro i novo. I sada pravimo povratne sprege. Da li ce moci direktno povratna sprega ili nesto drugo? Kaze da se presece sa clock linijom f1 i f2 (clock satovi). Onda kaze da je moguce da se stavi i neki registar koji ce privremeno da pamti, a moze i da ne bude registar. Novo izracunato stanje ce u jednom ciklusu da se zapise u registar, a u sledecem f1 na f1 ce da se procita i bice to staro stanje, pa ce da se izracuna novo stanje i zapamti na f2, pa ce opet novo i na f1 da se zapise staro, pa sve tako…Ovo pokrece taj automat. Logicka funkcija je pasivna (damo ulaze i dobijemo izlaze). Ova programska sprega je ono sto programu daje program counter, daje mu zivot, sam se pokrece, ali ovde je vise od PC – a, vec i pamti neko unutrasnje stanje.

Page 58: digitalnaLogika - skripta

58

Sada je ostalo da napravimo dekodere. Ugradimo dekoder 3 na 8. Dobijemo 8 zica (ako imamo kombinacij od 0 do 4 dajemo kafu, a ako ne, ne dajemo kafu). To od 0 do 4 stavimo u OR kolo (el motor koji otvara vrata i daje kafu), a ako je ovo 5, 6 nista se ne desava, a ako je npr 1, imamo jednu dodatnu zicu koja vodi na mesto koja ispusta na vratanca 1 din, pa sve tako… (to su sve mehanicki delovi). Poslednjih godina cemo da cujemo i za mehatronika. Ovo je ono sto smo radili do sada. To je nova vrsta masinstva, gde se sa klasicnog masinstva preorjentisu na novije elektroniku i to je kombinacija elektrotehnike i racunarstva. Ovo bi bio klasican problem ovoga tipa. Treba da se razmisli da je ovo sto smo napravili racunar, ali ne klasicnoga tipa.

Page 59: digitalnaLogika - skripta

59