4 komponente digitalnih sistema -...

57
149 4 Komponente digitalnih sistema Složeni digitalni sistemi projektuju se tako što se najpre ukupna funkcija sistema razloži na više pod-funkcija. Zatim se pod-funkcije realizuju u vidu jednostavnijih digitalnih modula, čijim se povezivanjem konstruiše željeni sistem. Iako je u nekim slučajevima neophodno projektovati module za neke specifične funkcije, ipak, najčće, u praksi, složeniji digitalni sistemi se mogu realizovati korišćenjem standardnih modula ili komponenti . Standardne komponente obavljaju funkcije za koje je uočeno da su korisne za veliki broj različitih primena, a dostupne su u vidu integrisanih kola ili bibliotečkih komponenti i kao takve spremne za direktnu ugradnju u sistem koji se projektuje. Većina digitalnih sistema, uključujući i računare, projektovana je da obrađuje ili transformiše podatke. Ove transformacije mogu biti različitih tipova, uključujući aritmetičke i logičke operacije, kodiranje i dekodiranje podataka i reorganizaciju podataka. U opštem slučaju, navedene transformacije podataka se obavljaju pomo ću kombinacionih komponenti. Osnovna osobina kombinacionih kola jeste činjenica da se njihove izlazne vrednosti izračunavaju isključivo na osnovu tekućih ulaznih vrednosti. Nakon svake promene ulaznih vrednosti, na izlazu se javljaju nove izlazne vrednosti sa kašnjenjem koje je neophodno da bi se izračunao novi rezultat. Kombinaciono kolo nije u stanju da ¨zapamti¨ prethodne rezultate, i da onda tu informaciju, zajedno sa tekućim ulazom, koristi za određivanje novog izlaza. Za razliku od kombinacionih, sekvencijalne komponente sadrže memorijske elemente, kao što su leč kola i flip-flopovi. Kao posledica toga, izlazne vrednosti sekvencijalnih komponenti zavise ne samo od tekućih već i od prethodnih ulaznih vrednosti. Spektar sekvencijalne komponenti se proteže od bazičnih memorijskih elemenata, kao što su leč kola i flip-flopovi, preko registarskih komponenti, kao što su prihvatni, pomerački i brojački registri, i složenijih memorijskih struktura, kao što su RAM, FIFO, stek, do upravljačkih jedinica koje su u mogućnosti da izvršavaju složene algoritme. 4.1 Kombinacione komponente Kombinacione komponente se koriste za: transformaciju podataka, povezivanje, konverziju podataka i upravljanje. Konkretno, kombinacione komponente za transformaciju podataka obavljaju: (1) aritmeti čke operacije (sabiranje, oduzimanje, množenje i deljenje), (2) logi čke operacije (AND, OR, XOR i komplement), (3) operacije poređenja (veće ili jednako, manje) i (4) operacije za manipulaciju nad bitovima (pomeranje, rotiranje, izdvajanje i umetanje bitova). Kombinacione komponente za povezivanje su multiplekseri i magistrale, a koriste se za povezivanje aritmetičkih i memorijskih komponenti. Komponente za konverziju podataka, kao što su koderi i dekoderi, se koriste za konverziju podatka iz jednog u neki drugi kôd. 4.1.1 Dekoderi Dekoderi su digitalna kola koja se koriste za dekodiranje kodiranih informacija. Binarni dekoder, predstavljen na Sl. 4-1, je digitalno kolo sa n ulaza za binarno kodirani podatak i 2 n binarnih izlaza, pri čemu svakom izlazu odgovara jedna kombinacija n logičkih vrednosti na ulazu. Dodatni ulaz za dozvolu rada, E, upravlja izlazom dekodera na sledeći način: ako je E=0, tada ni jedan izlaz dekodera nije aktivan; ako je E=1, aktivan je samo izlaz y i , gde je i ceo broj jednak binarnoj vrednosti ulaza w n-1 , ..., w 1 , w 0 . (Ime ulaza E potiče od engleske reči Enable koja znači dozvola). Ovo kolo se zove binarni dekoder n-u-2 n ili n-to ulazni binarni dekoder . Sl. 4-1 Binarni dekoder n-u-2 n . Na Sl. 4-2 je prikazan binarni dekoder 1-u-2. Grafički simbol ovog dekodera se može videti na Sl. 4-2(a), a tabela istinitosti na Sl. 4-2(b). Dekoder 1-u-2 ima jedan ulaza za podatak w 0 , ulaz za dozvolu rada E i dva izlaza y 1 i y 0 . Sve dok je E=1, važi: y 0 =1 za w 0 =0 ili y 1 =1 za w 0 =1. Logičke jednačine koje definišu dekoder 1-u-2 su oblika: y 0 = E·w 0 ` y 1 = E·w 0 Logička šema dekodera 1-u-2 prikazana je Sl. 4-2(c).

Upload: others

Post on 03-Mar-2020

27 views

Category:

Documents


2 download

TRANSCRIPT

149

4 Komponente digitalnih sistema Složeni digitalni sistemi projektuju se tako što se najpre ukupna funkcija sistema razloži na više pod-funkcija. Zatim se pod-funkcije realizuju u vidu jednostavnijih digitalnih modula, čijim se povezivanjem konstruiše željeni sistem. Iako je u nekim slučajevima neophodno projektovati module za neke specifične funkcije, ipak, najčešće, u praksi, složeniji digitalni sistemi se mogu realizovati korišćenjem standardnih modula ili komponenti. Standardne komponente obavljaju funkcije za koje je uočeno da su korisne za veliki broj različitih primena, a dostupne su u vidu integrisanih kola ili bibliotečkih komponenti i kao takve spremne za direktnu ugradnju u sistem koji se projektuje.

Većina digitalnih sistema, uključujući i računare, projektovana je da obrađuje ili transformiše podatke. Ove transformacije mogu biti različitih tipova, uključujući aritmetičke i logičke operacije, kodiranje i dekodiranje podataka i reorganizaciju podataka. U opštem slučaju, navedene transformacije podataka se obavljaju pomoću kombinacionih komponenti. Osnovna osobina kombinacionih kola jeste činjenica da se njihove izlazne vrednosti izračunavaju isključivo na osnovu tekućih ulaznih vrednosti. Nakon svake promene ulaznih vrednosti, na izlazu se javljaju nove izlazne vrednosti sa kašnjenjem koje je neophodno da bi se izračunao novi rezultat. Kombinaciono kolo nije u stanju da ¨zapamti¨ prethodne rezultate, i da onda tu informaciju, zajedno sa tekućim ulazom, koristi za određivanje novog izlaza.

Za razliku od kombinacionih, sekvencijalne komponente sadrže memorijske elemente, kao što su leč kola i flip-flopovi. Kao posledica toga, izlazne vrednosti sekvencijalnih komponenti zavise ne samo od tekućih već i od prethodnih ulaznih vrednosti. Spektar sekvencijalne komponenti se proteže od bazičnih memorijskih elemenata, kao što su leč kola i flip-flopovi, preko registarskih komponenti, kao što su prihvatni, pomerački i brojački registri, i složenijih memorijskih struktura, kao što su RAM, FIFO, stek, do upravljačkih jedinica koje su u mogućnosti da izvršavaju složene algoritme.

4.1 Kombinacione komponente Kombinacione komponente se koriste za: transformaciju podataka, povezivanje, konverziju podataka i upravljanje. Konkretno, kombinacione komponente za transformaciju podataka obavljaju: (1) aritmetičke operacije (sabiranje, oduzimanje, množenje i deljenje), (2) logičke operacije (AND, OR, XOR i komplement), (3) operacije poređenja (veće ili jednako, manje) i (4) operacije za manipulaciju nad bitovima (pomeranje, rotiranje, izdvajanje i umetanje bitova). Kombinacione komponente za povezivanje su multiplekseri i magistrale, a koriste se za povezivanje aritmetičkih i memorijskih komponenti. Komponente za konverziju podataka, kao što su koderi i dekoderi, se koriste za konverziju podatka iz jednog u neki drugi kôd.

4.1.1 Dekoderi Dekoderi su digitalna kola koja se koriste za dekodiranje kodiranih informacija. Binarni dekoder, predstavljen na Sl. 4-1, je digitalno kolo sa n ulaza za binarno kodirani podatak i 2n binarnih izlaza, pri čemu svakom izlazu odgovara jedna kombinacija n logičkih vrednosti na ulazu. Dodatni ulaz za dozvolu rada, E, upravlja izlazom dekodera na sledeći način: ako je E=0, tada ni jedan izlaz dekodera nije aktivan; ako je E=1, aktivan je samo izlaz yi, gde je i ceo broj jednak binarnoj vrednosti ulaza wn-1, ..., w1, w0. (Ime ulaza E potiče od engleske reči Enable koja znači dozvola). Ovo kolo se zove binarni dekoder n-u-2n ili n-to ulazni binarni dekoder.

Sl. 4-1 Binarni dekoder n-u-2n.

Na Sl. 4-2 je prikazan binarni dekoder 1-u-2. Grafički simbol ovog dekodera se može videti na Sl. 4-2(a), a tabela istinitosti na Sl. 4-2(b). Dekoder 1-u-2 ima jedan ulaza za podatak w0, ulaz za dozvolu rada E i dva izlaza y1 i y0. Sve dok je E=1, važi: y0=1 za w0=0 ili y1=1 za w0=1. Logičke jednačine koje definišu dekoder 1-u-2 su oblika:

y0 = E·w0` y1 = E·w0

Logička šema dekodera 1-u-2 prikazana je Sl. 4-2(c).

150

(a) (b) (c)

Sl. 4-2 Dekoder 1-u-2: (a) grafički simbol; (b) tabela istinitosti; (c) logička mreža.

Dekoder 2-u-4 je predstavljen na Sl. 4-3(a). Uočimo da dekoder 2-u-4 ima dva ulaza za podatak, w1 i w0, ulaz za dozvolu rada, E, i četiri izlaza, y0, ..., y3. Kao što je već objašnjeno, funkcija ovog dekodera je da dekodira binarni broj postavljen na ulazima w1 i w0 i postavi 1 na izlaz čiji je indeks jednak tom broju. Funkcija dekodera 2-u-4 definisana je sledećim sistemom logičkih jednačina:

y0 = E·w1`w0`

y1 = E· w1`w0

y2 = E· w1w0`

y3 = E· w1w0

(a) (b) (c)

Sl. 4-3 Dekoder 2-u-4: (a) grafički simbol; (b) tabela istinitosti; (c) logička mreža.

U opštem slučaju, dekoder n-u-2n može se konstruisati na osnovu sistema logičkih jednačina: yi = E·mi, i = 0, ..., 2n-1, (4.1)

gde je mi i-ti minterm n ulaznih promenljivih wn-1, ...., w0.

Na izlazu dekodera, pod uslovom da je njegov rad dozvoljen, postoji samo jedna jedinica. Za izlaz na kome je prisutna jedinica kažemo da je aktivan. Ovo važi za dekodere sa aktivnim visokim naponskim nivoom na izlazu. Međutim, u upotrebi su i dekoderska kola sa aktivnim niskim naponskim nivoom na izlazu. Kod takvih dekodera, nula je prisutna na jednom izlazu, koji je izabran binarnom kombinacijom na ulazu, dok su na svim ostalim izlazima prisutne jedince. Grafički simbol dekodera 2-u-4 sa aktivnim niskim naponskim nivoom na izlazu prikazan je na Sl. 4-4(a). Uočimo da je aktivan nizak naponski nivo naznačen kružićima na izlaznim priključcima dekodera. Tabela istinitosti ovog dekodera je prikazana na Sl. 4-4(b), a logička mreža na Sl. 4-4(c). Uočimo da je logička mreža, po strukturi, identična onoj sa Sl. 4-3(c), s tom razlikom što se sada umesto I koriste NI kola.

(a) (b) (c)

Sl. 4-4 Dekoder 2-u-4 sa aktivnim niskim naponskim nivoom na izlazu.

Pr. 4-1 Sinteza prekidačkih funkcija na bazi dekodera.

Shodno jednačini (4.1), dekoder n-u-2n se ponaša kao generator minterma od n promenljivih. Kada je rad dekodera dozvoljen, svaki izlaz dekodera se aktivira tačno jednom vrstom tabele istinitosti od n promenljivih. Ako je logička funkcija zadata u obliku tabele istinitosti ili skupom decimalnih indeksa, tada se ona može direktno realizovati pomoću dekodera u vidu kanoničke sume-proizvoda.

151

Na primer, razmotrimo funkciju f zadatu skupom decimalnih indeksa ∑ )5,3,2,0( . Karnoova mapa funkcije f prikazana je na Sl. 4-5(a), a realizacija ove funkcije u obliku minimalne sume-proizvoda na Sl. 4-5(b). Ista funkcija se može realizovati pomoću dekodera 3-u-8, koji generiše sve moguće minterme od tri promenljive, i jednog OR kola, koje sumira minterme funkcije f, kao što je prikazano na Sl. 4-5(c). Na ovaj način, korišćenjem dekodera odgovarajuće veličine, moguće je realizovati proizvoljnu prekidačku funkciju.

(a) (b) (c)

Sl. 4-5 Sinteza funkcije ∑ )5,3,2,0( : (a) Karnoova mapa; (b) logička mreža; (c) realizacija pomoću dekodera 3-u-8.

Iako je opisana tehnika sinteze gotovo trivijalna, ona postaje izrazito neefikasna u slučajevima kada je broj promenljivih veći od nekoliko. Broj minterma, a time i složenost dekodera, raste eksponencijalno sa povećanjem broja promenljivih, tako da će za tipičnu funkciju većeg broj promenljivih, od svih generisani minterma biti iskorišćen tek mali deo.

Danas se dekoderi retko koriste za sintezu prekidačkih funkcija na način koji je opisan u ovom primeru. Međutim, izloženi koncept, sinteze zasnovan na sumiranju generisanih minterma, ili u opštem slučaju, sumiranju generisanih produktnih članova, predstavlja osnovu programabilnih logičkih kola, kao što su ROM, PLA i PAL strukture (sekcija Error! Reference source not found.).

Shodno jednačini (4.1) binarni dekoder n-u-2n se može realizovati pomoću 2n n-to ulaznih I logičkih kola. Međutim, sa povećanjem n ukupan broj logičkih kola i broj ulaza u logička kola postaju ograničavajući faktor, tako da se dekoderi sa većim brojem ulaza obično realizuju u vidu dekoderskih mreža sačinjenih od više manjih dekodera. Razmotrićemo dve tehnike konstrukcije dekoderskih mreža: koincidentno dekodiranje i hijerarhijsko dekodiranje.

Koincidentno dekodiranje

U cilju ilustracije koncepta koincidentnog dekodiranja, razmotrimo realizaciju 8-ulaznog binarnog dekodera pomoću 4-ulaznih binarnih dekodera (Sl. 4-6). Neka su W=w7w6...w0 osam ulaz, a Y= y255y254...y0 256 izlazi dekoderske mreže 8-u-256. Najpre, podelimo ulaze u dve grupe: WH=w7w6w5w4 i WL=w3w2w1w0. Za realizaciju dekoderske mreže koristimo dva dekodera 4-u-16, kao na Sl. 4-6. Grupa ulaza WH se dekodira pomoću jednog, a grupa ulaza WL pomoću drugog 4-ulaznog dekodera. Neka su H=h15h14...h0 i L=l15l14...l0 16-to bitni izlazi ovih dekodera. Izlazi dekoderske mreže 8-u-256 formiraju se pomoću 256 2-ulaznih I kola, tako što se svako I kolo povezuje sa jednim parom signala (hi, lj). Izlazu yk odgovara izlaz I kola čiji su ulazi hi i lj, pri čemu važi: k = 24× i + j. Na primer, izlaz y36 odgovara I kolu čiji su ulazi h2 i l4, s obzirom da važi: 36 = 24 ×2 + 4. Uočimo da je ulaz za dozvolu rada dekoderske mreže, E, povezan sa odgovarajućim ulazom jednog od dekodera 4-u-16, dok je ulaz za dozvolu rada drugog dekodera postavljen na 1. Ako je E=0, tada su svi izlazi iz jednog dekodera jednaki 0, što uslovljava yi=0 za svako i.

U opštem slučaju, n-to ulazni koincidentni dekoder se realizuje pomoću dva n/2 – ulazna binarna dekodera i 2n 2-ulaznih I kola, na način kako je to prikazano na Sl. 4-7.

152

Sl. 4-6 8-ulazni koincidentni dekoder.

Sl. 4-7 n-to ulazni koincidentni dekoder.

Hijerarhijsko dekodiranje

Druga tehnika za konstrukciju većih dekodera je hijerarhijsko dekodiranje. Radi ilustracije ove tehnike razmotrimo realizaciju binarnog dekodera 4-u-16 pomoću dekodera 2-u-4. Kao i kod koincidentnog dekodiranja, ulazi dekoderske mreže, W=w3w2w1w0, se dele u dve grupe: WH=w3w2 i WL=w1w0. Na osnovu ove podele, možemo realizovati dvonivovsku mrežu koja se sastoji iz jednog dekodera 2-u-4 u prvom i četiri dekodera 2-u-4 u drugom nivou, kao što je prikazano na Sl. 4-8. Grupa ulaza WH se dekodira u prvom, a grupa ulaza WL u drugom nivou. Šesnaest izlaza dekoderske mreže su raspoređeni u 4 grupe od po 4 izlaza, gde se svaka grupa generiše na izlazima jednog dekodera sa drugog nivoa. Princip rada je sledeći: Dekodiranjem ulaza WH, dekodera sa prvog nivoa dozvoljava rad jednog dekodera sa drugog nivoa, koji dekodiranjem ulaza WL aktivira jedan od svojih izlaza. Na primer, ako je W=0110, tada je WH=01, a WL=10. To znači da će dekoder DEC dozvoliti rad dekoderu DEC1‚ koji s obzirom na WL=10 aktivira svoj izlaz sa indeksom 2, što odgovara izlazu dekoderske mreže y4x1+2=y6. Uočimo da je ulaz za dozvolu rada dekoderske mreže, E, povezan sa odgovarajućim ulazom dekodera sa prvog nivoa. Ako je E=0, tada su svi izlazi dekodera DEC postavljeni na 0. To znači da je rad svih dekodera sa drugog nivoa zabranjen i da su na svim izlazima dekoderske mreže prisutne nule.

153

Sl. 4-8 4-ulazni hijerarhijski dekoder.

U opštem slučaju, n-to ulazni dekoder se može realizovati u vidu dvo-nivolske dekoderske mreže sa jednim (n/2)-ulaznim dekoderom u prvom i 2n/2 (n/2)-ulaznih dekodera u drugom nivou.

Hijerarhijska dekoderska mreža može imati više od dva nivoa. Na primer, ako za projektovanje koristimo dekodere 1-u-2, dekoder n-u-2n, imaće 2n-1 dekodera 2-u-1, raspoređenih u n nivoa tako da se na svakom nivo dekodira jedan ulazni bit. Drugim rečima, ulaz najveće težine dekodira se jednim dekoderom 1-u-2, sledeći ulaz manje težine dekodira se sa dva dekodera 1-u-2, i tako dalje, sve do ulaza najmanje težine koji se dekodira sa n/2 dekodera 1-u-2. Izlazi dekodera sa određenog nivoa se koriste kao signali dozvole jednog od dekodera sa sledećeg nivoa. Znači, na svakom sledećem nivou, broj dekodera će biti dva puta veći u odnosu na prethodni nivo. Kao primer opisanog postupka konstrukcije dekodera n-u-2n, na Sl. 4-9 je prikazan dekoder 3-u-8 realizovan na bazi dekodera 1-u-2.

Sl. 4-9 3-ulazni hijerarhijski dekoder 3-u-8.

U opštem slučaju, n-to ulazni dekoder se može realizovati u obliku hijerarhijske mreže k-ulaznih dekodera raspoređenih u r nivoa, pri čemu važi n=rk. n ulaza dekoderske mreže se deli na r grupa od po k ulaza, pri čemu se svaka takva grupa dekodira u jednom nivou. Prvi novo sadrži jedan dekoder, a broj dekodera u svakom sledećem nivou je 2k puta veći od broj dekodera u prethodnom nivou. Ukupan broj k-ulaznih dekodera potrebnih za realizaciju n-to ulazne dekoderske mreže iznosi:

1 + 2k + 22k + ... + 2(r-1)k = (2n – 1)/(2k – 1)

Na primer, za n=12 i k=4, broj nivoa je r=3, a broj 4-ulaznih dekodera (212 – 1)/(24 – 1) = 273.

154

4.1.2 Multiplekseri Multiplekser, često u oznaci MUX, je digitalni preklopnik – tj. kolo koje omogućava da se jedan od n izvora podataka logički poveže na zajedničko odredište. Multiplekser ima veći broj ulaza za podatke, jedan ili više selekcionih ulaza i jedan izlaz. Vrednost selekcionih ulaza određuje (tj. bira) jedan od ulaza za podatke čija se vrednost, u datom trenutku, prenosi na izlaz. Na Sl. 4-10(a) je prikazan grafički simbol multipleksera 2-u-1. Ako je s=0, izlaz multipleksera biće f=w0; ako je s=1, izlaz multipleksera je f=w1. Multiplekser 2-u-1 je po funkciji analogan elektro-mehaničkom dvo-položajnom prekidaču sa Sl. 4-10(b), kod koga signal s upravlja položajem preklopnika. Ponašanje multipleksera 2-u-1 opisano je tabelom istinitosti sa Sl. 4-10(c), na osnovu koje lako možemo izvesti logički izraz oblika suma-proizvoda: f=s`w0 + sw1. Ovom izrazu odgovara logička mreža sa Sl. 4-10(d). Na Sl. 4-10(e) je prikazano kako se multiplekser 2-u-1 može realizovati pomoću transmisionih gejtova.

(a) (b) (c)

s

w0

w1

f

s

w0

w1 f

(d) (e)

Sl. 4-10 Multiplekser 2-u-1: (a) grafički simbol; (b) analogija sa elektromehaničkim preklopnikom; (c) tabela istinitosti; (d) logička mreža; (e) realizacija pomoću transmisionih gejtova.

Na Sl. 4-11(a) je prikazan jedan veći multiplekser, sa četiri ulaza za podatke, w0, …, w3 i dva selekciona ulaza s1 i s0. Kao što se može videti iz tabele istinitosti sa Sl. 4-11(b), kombinacija selekcionih ulaza (s1, s0), interpretirana kao binarna celobrojna vrednost i, za prosleđivanje na izlaz f bira ulaz wi. Multiplekseru 4-u-1 odgovara sledeći logički izraz oblika suma-proizvoda:

f = s1`s0`w0 + s1`s0w1 + s1s0`w2 + s1s0w3

Ovom izrazu odgovara logička mreža sa Sl. 4-11(c)

(a) (b) (c)

Sl. 4-11 Multiplekser 4-u-1: (a) grafički simbol; (b) tabela istinitosti; (c) logička mreža.

Korišćenjem istog principa, moguće je realizovati i veće multipleksere. Obično, broj ulaza za podatke, n, je stepen broja 2. Multiplekser n-u-1 zahteva n2log selekcionih ulaza. Veći multiplekseri se takođe mogu realizovati pomoću manjih multipleksera. Na primer, multiplekser n-u-1, gde je n stepen broja 2, može se konstruisati pomoću n-1 multipleksera 2-u-1 raspoređenih u n2log nivoa. Svaki od n/2 multiplekser sa prvog nivoa bira između dva izvora podataka, dok svaki od n/4 multiplekser sa drugog nivoa bira između dva multiplekserska izlaza sa prvog nivoa. Drugim rečima, na svakom nivou, nakon prvog, svaki multiplekser se koristi za izbor između dva izlaza generisana od strane multipleksera sa prethodnog nivoa. Konkretno, za realizaciju multipleksera 8-u-1 potrebna su 8-1=7 multipleksera 2-u-1, a broj nivoa je 3. Na Sl. 4-12(a) je prikazana tabela istinitosti, a na Sl. 4-12(b) realizacija multipleksera 8-u-1 pomoću multipleksera 2-u-1.

155

Sl. 4-12 Multiplekser 8-u-1: (a) tabela istinitosti: (b) struktura.

Na Sl. 4-13(a) prikazan je grafički simbol multipleksera 2xm-u-m. Ovaj simbol na kompaktan način predstavlja strukturu od m paralelno povezanih multipleksera sa Sl. 4-13(b). Pomoću multipleksera 2xm-u-m omogućen je izbor jednog od dva m-bitna operanda. U opštem slučaju, multiplekser kxm-u-m sastoji se iz m multipleksera k-u-1 sa zajedničkim selekcionim ulazima.

mux

2xm

-u-m

Sl. 4-13 Multiplekser 2xm-u-m: (a) grafički simbol; (b) struktura.

Multiplekser 8-u-1 se može realizovati i na način koji je prikazan na Sl. 4-14. U ovom slučaju, za dekodovanje selekcionih signal koristi se dekoder 3-u-8. Iako ovo rešenje izgleda jednostavno, ono, međutim, nije lako proširljivo. Drugim rečima, broj i veličina logičkih kola u dekoderu, kao i veličina izlaznog ILI kola raste sa povećanjem broja ulaza u multiplekser. S obzirom da se logička kola sa velikim brojem ulaza realizuju u vidu stabla logičkih kola sa manjim brojem, cena i kašnjenje se značajno povećavaju. Iz tog razloga, rešenje sa Sl. 4-14 se koriste samo za male vrednosti n, dok se multiplekseri za veće vrednosti n konstruišu ranije opisanom metodom, korišćenjem više nivoa multipleksera 2-u-1 ili 4-u-1.

156

(a) (b)

Sl. 4-14 Realizacija multipleksera pomoću dekodera: (a) tabela istinitosti multipleksera 8-u-1; (b) realizacija na bazi dekodera.

Na Sl. 4-15 je prikazana još jedna realizacija multipleksera pomoću dekodera kod koje se umesto dvo-nivovske I-ILI mreže koristi niz trostatičkih bafera sa kratkospojenim izlazima. Dekoder obezbeđuje da će uvek biti aktivan samo jedan trostatički bafer, koji prosleđuje vrednost sa svog ulaza na zajednički izlaz. Izlazi trostatičkih bafera ne moraju fizički biti spojeni u jednu tačku, već mogu biti povezani vezom (magistralom) koja kontaktira svaki izlaz, što je pogodno u slučajevima kada su izvori podatak (moduli koji generišu signale D0-D3) prostorno razuđeni.

Sl. 4-15 Realizacija multipleksera pomoću dekodera i trostatičkih bafera.

Pr. 4-2 Krozbar prekidač

Na Sl. 4-16(a) prikazano je kolo sa dva ulaza, x1 i x2, i dva izlaza, y1 i y2. Kao što je naznačeno isprekidanim linijama, kolo obezbeđuje kontrolisanu vezu između ulaznih i izlaznih priključaka, tj. omogućava da bilo koji ulaz može biti povezan na bilo koji izlaz. U opštem slučaju, kolo ovog tipa, sa n ulaza i k izlaza, čija je jedina funkcija da obezbedi spregu bilo koji ulaz sa bilo kojim izlazom, zove se krozbar prekidač nxk. Ako postoje dva ulaza i dva izlaza, radi se o krozbar prekidaču 2x2.

Na Sl. 4-16(b) je prikazana realizacija krozbar prekidača 2x2 pomoću multipleksera 2-u-1. Selekcioni ulazi oba multipleksera povezana su na ulazni signal s. Ako je s=0, krozbar povezuje x1 na y1 i x2 na y2; za s=1, veze su ukrštene, tako da se podatak sa ulaza x1 sprovodi na izlaz y2, a podatak sa ulaza x2 na izlaz y1. Krozbar prekidači su korisna kola koja nalaze primenu svuda tamo gde je neophodno povezati dva skupa veza, pri čemu se način sprege menja s vremena na vreme.

157

(a) (b)

Sl. 4-16 Krozbar prekidač: (a) korzbar 2x2; (b) realizacija pomoću multipleksera

4.1.3 Demultiplekseri Kao što je rečeno u odeljku 4.1.2, multiplekser je digitalno kolo sa jednim izlazom, n ulaza za podatke i n2log selekcionih ulaza. Namena multipleksera je da multipleksira n ulaza za podatke preko jedinstvenog izlaza za podatak, pod kontrolom selekcionih ulaza. Kolo koje obavlja suprotnu funkciju – vrednost sa jedinstvenog ulaza za podatak prosleđuje na jedan od više izlaza za podatke, zove se demultiplekser.

Na Sl. 4-17(a) je prikazan grafički simbol demultipleksera 4-u-1. Kao što se vidi iz tabele istinitosti sa Sl. 4-17(b), binarna kombinacija vrednosti selekcionih ulaza s1 i s2 bira jedan od četiri izlaza, y0, ..., y3, na koji se prenosi vrednost jedinstvenog ulaza za podatak, d. Demultiplekser 1-u-4 se može realizovati pomoću dekodera 2-u-4, kao što je prikazano na Sl. 4-17(c). U ovom slučaju, ulaz E dekodera se koristi kao ulaz za podatak demultipleksera, dok su izlazi dekodera izlazi za podatke demultipleksera. Binarna kombinacija w1w0 određuje izlaz koji će biti postavljen na vrednost E. Ako je E=0, tada će svi izlazi dekodera biti 0, uključujući i izlaz koji je izabran kombinacijom w1w0; ako je E=1, tada kombinacija w1w0 postavlja 1 na odgovarajući izlaz. Dakle, uvek važi y(w1w0) = E.

(a) (b) (c) Sl. 4-17 Demultiplekser 1-u-4: (a) grafički simbol; (b) tabela istinitosti; (c) dekoder 2-u-4 kao demultiplekser 1-u-4.

Pr. 4-3 Vremenski multipleks

Par multiplekser-demultiplekser se može koristiti za prenos informacije od n izvora do n odredišta preko jedinstvene komunikacione linije, kao što je to za slučaj n=8, prikazano na Sl. 4-18. Multiplekser bira jedan od n izvora i prenosi podatak tog izvora na komunikacionu liniju. Na drugom kraju linije, demultiplekser usmerava primljeni podatak ka jednom od n odredišta. Izbor para izvor-odredište obavlja se preko selekcionih ulaza multipleksera i demultipleksera. Ovakav način prenosa informacija zove se vremenski multipleks. Uz ograničenje da u bilo kom trenutku može postojati direktna sprega samo jednog para izvor-odredište, vremenski multipleks omogućava značajno smanjenje broja potrebnih prenosnih linija, što može predstavljati značajnu uštedu, naročito ako je rastojanje između izvori i odredišta podataka veliko.

Sl. 4-18 Princip vremenskog multipleksa.

158

4.1.4 Koderi Binarni koder 2n-u-n (Sl. 4-19) kodira (transformiše) informaciju od 2n bita u n-bitnu kodnu reč. Sa ograničenjem da u bilo kom trenutku samo jedan od 2n ulaza može imati vrednost 1, na izlazu binarnog kodera generiše se n-bitni binarni broj koji ukazuje na indeks ulaza čija je vrednost 1. Na Sl. 4-20(a) je prikazana tabela istinitosti kodera 4-u-2. Tabela istinitosti je nepotpuna, jer sadrži samo one slogove koji su dozvoljeni na ulazu binarnog kodera. Za sve ostale slogove, odziv kodera je nedefinisan. Uočimo da izlaz y0 ima vrednost 1 ako je w1=1 ili w3=1. Slično, izlaz y1 ima vrednost 1, ako je w2=1 ili w3=1. Na osnovu ovog zapažanja možemo konstruisati logičku mrežu binarnog kodera 4-u-2 prikazanu na Sl. 4-20(b). U opštem slučaju, binarni koder 2n-u-n može se realizovati pomoću n (2n-1)-to ulaznih OR kola. Svako OR kolo postavlja jedan izlaz. Ulaz wi je povezan sa j-tim OR kolom ako j-ti bit u binarnoj reprezentaciji indeksa i ima vrednost 1.

Sl. 4-19 Binarni koder 2n-u-n.

(a) (b)

Sl. 4-20 Binarni koder 4-u-2: (a) tabela istinitosti; (b) kolo.

Pr. 4-4 Jedna primena binarnog kodera

Na Sl. 4-21 je prikazan osmo-položajni mehanički preklopnik. Preklopnik ima 8 izlaza koji u kodu 1-od-8 kodiraju položaj klizača. U ovoj primeni, binarni koder 8-u-3 se koristi za kodiranje položaj klizača u oblik trobitnog celog broja.

Sl. 4-21 Primena binarnog kodera.

Prioritetni koder

Kod binarnog kodera opisanog u prethodnom odeljku postoji ograničenje da u bilo kom trenutku najviše jedan ulaz sme biti aktivan. Ako se ovo ograničenje ne poštuje, u slučajevim kada je aktivno više od jednog ulaza, izlaz kodera biće pogrešan. Međutim, u mnogim primenama ovo ograničenje se ne može nametnuti. U takvim slučajevima, umesto kodera treba koristiti prioritetni koder.

Kod prioritetnog kodera, svakom ulazu je dodeljen prioritet, a izlaz kodera, interpretiran kao binarni broj, ukazuje na indeks aktivnog ulaza najvišeg prioriteta. Za sve vreme dok je aktivan ulaz visokog prioriteta, svi ulazi nižeg prioriteta se ignorišu. Na Sl. 4-22 je prikazana tabela istinitosti prioritetnog kodera 4-u-2, pod pretpostavkom da ulaz w3 ima najviši, a w0 najniži prioritet. Izlazi y1 i y0 predstavljaju binarni broj koji identifikuje ulaz najvišeg prioriteta koji ima vrednost 1. Pošto je moguće da ni jedan ulaz nema vrednost 1, predviđen je još jedan, dodatni izlaz, z koji treba da ukaže na ovu situaciju. Naime, ako je barem jedan ulaz jednak 1, tada je z=1; inače, ako ni jedan ulaz nije jednak 1, važi z=0.

159

Sl. 4-22 Tabela istinitosti prioritetnog kodera 4-u-2.

Rad prioritetnog kodera se najlakše može razumeti ako najpre razmotrimo poslednju vrstu u tabeli istinitosti. Ova vrsta kazuje da ako je w3=1, izlaz se postavlja na y1y0=11. Pošto ulaz w3 ima najviši prioritet, vrednosti ulaza w2, w1 i w0 nisu od značaja. Da bi se ukazalo na činjenicu da su njihove vrednosti irelevantne, promenljive w2, w1 i w0 su označene simbolom X. Pretposlednja vrsta u tabeli istinitosti kazuje da se za w2=1 izlazi postavljaju na y1y0=10, ali samo ako je pri tome w3=0. Slično, ulaz w1 uslovljava da izlaz bude postavljen na y1y0=01, ali samo pod uslovom da važi w3=w2=0. Konačno, ulaz w0 se kodira na izlazu binarnom kombinacijom y1y0=00, ali samo pod uslovom da je w0 jedini aktivan ulaz.

Sl. 4-23 Realizacija prioritetnog kodera.

Prioritetni koder 2n-u-n se može realizovati kombinovanjem dva modula kao na Sl. 4-23. Prvi modul je kolo za razrešavanje prioriteta koje menja na 0 sve ulaze čija je vrednost 1, osim onog čiji je prioritet najviši. Drugi modul je standardni binarni koder. Modul za razrešavanje prioriteta definisan je sledećim skupom logičkih jednačina:

xi = ii wwww nn'

1'

22'

12 −−−K , i=0, 1, ..., 2n-1

Prethodni izraz kaže da aktivan ulaz xi zadržava vrednost 1 samo ako su svi ulazi višeg prioriteta jednaki 0.

(a) (b)

Sl. 4-24 Modul za razrešavanje prioriteta: (a) paralelna realizacija; (b) iterativna realizacija.

Modul za razrešavanje prioriteta se može realizovati u obliku logičke mreže sa Sl. 4-24(a). Kod ove realizacije, izlaz i se generiše pomoću AND kola sa 2n-i ulaza. Ovakvo rešenje je adekvatno za module sa malim brojem ulaza, ali je nepraktično za veće module, s obzirom da zahteva AND kola sa velikim brojem ulaza. Na Sl. 4-24(b) je prikazana iterativna realizacija istog kola, koja je pogodna za veći broj ulaza, mada ispoljava veće kašnjenje. Ovo rešenje je zasnovano na umnožavanju ćelija definisanih logičkim jednačinama: ci-1 = ci + xi zi = ci`xi

Prosto, xi=1 postavlja ci-1 na 1, što isključuje sve ulaze nižeg prioriteta.

160

Hijerarhijska realizacija prioritetnog kodera

Na Sl. 4-25(a) je prikazana realizacija prioritetnog kodera 4-u-2 pomoću prioritetnih kodera 2-u-1. Ulazi su podeljeni u dve dvobitne grupe i nezavisno kodirani prioritetnim koderima H i L. Drugi nivo strukture sa Sl. 4-25(a), koji se sastoji iz dodatnog prioritetnog kodera 2-u-1, G, i multipleksera 2-u-1, formiran je shodno tabeli istinitosti prioritetnog kodera 4-u-2 sa Sl. 4-22 iz koje sledi da izlaz y1 ukazuje na grupu, H ili L, koja sadrži aktivan ulaz najvišeg prioriteta, a izlaz y0 na poziciju aktivnog ulaza najvišeg prioriteta u okviru grupe na koju ukazuje y1. Na osnovu sličnog rezonovanja, na Sl. 4-25(b) je nacrtana struktura prioritetnog kodera 8-u-3. U opštem slučaju, prioritetni koder 2n-u-n u prvom nivou sadržaće dva prioritetna kodera 2n-1-u-(n-1), a u drugom jedan prioritetni koder 2-u-1, za generisanje izlaza z i yn-1 i multiplekser 2x(n-1)-u-(n-1) za prosleđivanje kodnih izlaza jednog od kodera H ili L na izlaze yn-2, .., y0 (Sl. 4-25(c)).

Koliko je prioritetnih kodera 2-u-1 i multipleksera 2-u-1 potrebno za realizaciju prioritetnog kodera 2n-u-n ?

(a) (b) (c)

Sl. 4-25 Iterativna realizacija prioritetnog kodera.

4.1.5 Komparator magnitude Relacioni izrazi se formiraju uz pomoć tri osnovna operatora: veće (X>Y), jednako (X=Y) i manje (X<Y). Takođe, za svaki od ovih operatora postoji komplementarni operator. Operator “veće ili jednako” (X≥Y) je komplement od “manje”, “manje ili jednako” (X≤Y) je komplement od “veće”, dok je “različito” (X≠Y) komplement od “jednako”. Rezultat bilo kog od navedenih operatora je logička promenljiva koja može imati vrednost 0 ili 1.

Za izračunavanje relacionih operatora koriste se digitalna kola koja se zovu komparatori magnitude ili samo komparatori. Iako je moguće projektovati komparator za bilo koji operator, u ovom odeljku pokazaćemo kao se projektuje univerzalni komparator, koji se koristi za izračunavanje bilo kog od navedenih operatora. U opštem slučaju, n-bitni univerzalni komparator (Sl. 4-26) poredi dva pozitivna cela broja X=xn-1,…,x0 i Y=yn-

1,…,y0 i generiše tri binarna rezultata, G, E i L, koji imaju sledeće značenje: Ako je izlaz G=1, tada je X>Y; E=1 ukazuje na X=Y, a L=1 na X<Y.

Sl. 4-26 n-to bitni univerzalni komparator magnitude.

Logička mreža komparatora se može sintetizovati na osnovu tabele istinitosti u kojoj bi za svaku kombinaciju n-bitnih operanada X i Y bile navedene vrednosti izlaza G, E i L. Međutim, takva tabela bi bila previše velika, čak i za relativno malo n. Zato je bolji pristup da se u cilju realizacije kompartora razmatraju pojedinačni parovi odgovarajućih bitova dva operanda. Razmotrimo konstrukciju 4-bitnog komparatora.

Neka su X=x3x2x1x0 i Y=y3y2y1y0. Definišimo skup internih signala i3, i2, i1 i i0. Signal ik je jednak 1 ako su bitovi sa indeksom k operanada X i Y međusobno jednaki, tj. ik = (xk ⊗ yk). Dva binarna broja su jednaka ako imaju iste bitove. Dakle,

E = i3i2i1i0

Izraz za izlaz G se može izvesti tako što će se bitovi operanada X i Y ispitivati u redosledu počev od bita najveće do bita najmanje težine. Prva bitska pozicija k na kojoj se bitovi xk i yk razlikuju odrediće da li je X veće ili

161

manje od Y. Pri tome, ako je xk=0 i yk=1, važi X<Y; ako je xk=1 i yk=0, važi X<Y. Dakle, izlaz G definisan je sledećim logičkim izrazom:

G = x3y3` + i3x2y2` + i3i2x1y1` + i3i2i1x0y0`

Izlaz L se može odrediti na osnovu druga dva izlaza. Naime, X je manje od Y ako X i Y nisu ni jednaki niti je X veća od Y, tj.

L = (E + G)´

Logička mreža koja realizuje četvorobitni univerzalni komparator prikazana je na Sl. 4-27. Opisana procedura se može primeniti za konstrukcije univerzalnog komparatora za proizvoljno n.

Sl. 4-27 Logička mreža 4-bitnog univerzalnog komparatora.

Pr. 4-5 8-bitni univerzalni komparator

Na Sl. 4-28 je prikazano kako se pomoću dva 4-bitna univerzalna komparatora i dodatnih logičkih kola može realizovati 8-bitni univerzalni komparator. Operande X i Y možemo napisati u obliku:

X = XH×24 + XL Y = YH×24 + YL

gde su XH= x7x6x5x4, XL= x3x2x1x0, YH= y7y6y5y4 i YL= y3y2y1y0 više i niže tetrade brojeva X i Y. Najpre, dva 4-bitna komparatora nezavisno porede više i niže tetrade brojeva X i Y, a zatim se na osnovu njihovih izlaza određuje konačni rezultat. Dva broja su jednaka ako važi XH=YH i XL=YL. X je veće od Y ako je XH>YH ili ako su ako su XH i YH jednaki i pri tome XL>YL. Konačno, X je manje od Y ako je viša tetrada broja X manja od više tetrade broja Y ili ako su više tetrade dva broja jednake i pri tome niža tetrada broja X manja od niže tetrade broja Y.

Sl. 4-28 Realizacija 8-bitnog komparatora pomoću 4-bitnih komparatora.

Pr. 4-6 Realizacija komparatora pomoću binarnog sabirača

Na Sl. 4-29 je prikazano kako se 4-bitni univerzalni komparator može realizovati pomoću 4-bitnog sabirača. Odnos između dva broja X i Y može se odrediti ako se brojevi najpre oduzmu, a zatim ispita rezultat. Oduzimanje X-Y se realizuje kao sabiranje broja X i dvojičnog komplementa broja Y. Kod oduzimanja neoznačenih binarnih brojeva važi pravilo da je izlazni prenos iz sabirača, c4, jednak 0 ako je razlika negativna, odnosno 1 ako je razlika nula ili pozitivna. Drugim rečima, c4=0 ukazuje na X<Y, a c4=1 na X≥Y. Ovo pravilo se lako može proveriti na sledećim konkretnim primerima:

162

Uslov X≥Y se može razložiti na dva uslova X>Y i X=Y ako se dodatno detektuje kada je rezultat 0. Za detekciju uslova “sve nule” može se iskoristiti 4-ulazno NOR kolo, kao što je prikazano na Sl. 4-29. Dakle, ako je razlika 0, brojevi su jednaki; ako je c4=0, tada je X manje od Y, a ako razlika nije jednaka nuli i c4=1, tada je X veće od Y.

n-bitni sabirač

y1 y0

c0c4 1

y3 y2x1 x0x3 x2

E (X=Y)

L (X<Y)

G (X>Y) Sl. 4-29 Realizacija univerzalnog komparatora pomoću binarnog sabirača.

Iterativne komparatorske mreže

Razmotrimo konstrukciju 16-bitnog komparatora na osnovu 4-bitnih komparatorskih modula. Za ovu namenu, ulazni 16-bitni operandi X=x15x14...x0 i Y=y15y14...y0 se razlažu na po četiri 4-bitna vektora:

X(i) = xi*4+3xi*4+2xi*4+1xi*4, i=0,..., 3 Y(i) = yi*4+3yi*4+2yi*4+1yi*4, i=0,..., 3

koji se koriste kao ulazi u pojedinačne 4-bitne komparatorske module. Poređenje se obavlja sukcesivno (tj. iterativno), počev od bit-vektora najmanje težine, X(0) i Y(0), a rezultat poređenja, izražen promenljivama G, E i L se prenosi u naredni stepen. Ako su bit-vektori X(i) i Y(i) jednaki, preuzima se rezultat iz prethodnog stepena; ako se X(i) i Y(i) razlikuju, rezultat prethodnog stepena se zanemaruje, a stepen i dalje prosleđuje rezultat svog poređenja. Izlazi G, E i L su u isto vreme i izrazi celokupne komparatorske mreže. Da bi se omogućila sprega komparatorskih modula, neophodno je strukturu 4-bitnog komparatora sa Sl. 4-26 proširiti sa tri ulazna signala prenosa, kao na Sl. 4-30. Na Sl. 4-31 je prikazana struktura 16-bitnog iterativnog komparatora magnitude, realizovanog pomoću 4-bitnih komparatora sa Sl. 4-31.

Sl. 4-30 4-bitni komparator sa ugrađenim signalima ulaznog prenosa.

Sl. 4-31 16-bitna iterativna komparatorska mreža.

163

Opisani postupak se može primeniti za konstrukciju iterativnog komparatora sa proizvoljno velikim brojem bitova. Međutim, kao i kod sabirača sa rednim prenosom, sa povećanjem broj spregnutih bazičnih modula propagaciono kašnjenje komparatorske mreže linearno raste.

Hijerarhijske komparatorske mreže

Brža struktura za poređenje većih brojeva se može realizovati ako se umesto iterativne koristi hijerarhijska mreža komparatora. Razmotrimo ponovo konstrukciju 16-bitnog komparatora na osnovu 4-bitnih komparatorskih modula, ali sada tako da komparatorski moduli budu povezani u hijerarhijsku strukturu, kao što je ona sa Sl. 4-32. Svaki od četiri modula sa prvog nivoa, K0 do K3 poredi dva bit-vektora od četiri bita. Izlazi iz prvog nivoa se koriste kao ulazi u jedinstveni komparatorski modul sa drugog nivoa, K4, na sledeći način: Svi izlazi G iz komparatorskih modula sa prvog nivoa čine bit-vektor g koji je povezan na grupu ulaza x komparatora K4. Slično, bit-vektor l, koga čine svi izlazi L iz prvog nivoa, povezan je na grupu ulaza y komparatora K4.

Da mreža sa Sl. 4-32 zaista realizuje funkciju 16-bitnog komparatora, može se pokazati sledećom analizom. Na osnovu definicije komparatorskog modula, izlazi hijerarhijske mreže komparatora su:

>

=inace

lgjeakoG

01

=

=inace

lgjeakoE

01

<

=inace

lgjeakoL

01

gde su g i l celi brojevi predstavljeni istoimenim bit-vektorima.

S obzirom da su g i l izlazi iz prvog nivoa komparatorskih modula, nije moguće da oba bita gi i li u isto vreme imaju vrednost 1. Shodno tome, g>l znači da je 1-ca najveće težine u vektoru g teža od 1-ce najveće težine u vektoru l, što odgovara slučajevima kada je X>Y. Slično, g<l sledi iz X<Y. Slučaj g=l se javlja samo ako važi g=l=0, što znači da važi X=Y. Dakle, mreža sa slike realizuje funkciju poređenja brojeva X i Y.

K3

4X(3)

4Y(3)

G E L

K2

4X(2)

4Y(2)

K1

4 4

K0

4 4X(1) Y(1) X(0) Y(0)

K4

G E LG E LG E L

g3 g2 g1 g0 l0l1l2l3

4 4

x y

G E L Sl. 4-32 16-bitni hijerarhijski komparator.

4.1.6 Kombinacioni pomerači i rotatori Operacije pomeranja i rotiranja često se koriste za pakovanje i raspakovanje cifara i karaktera, izdvajanje i umetanje bitskih polja, kao i za realizaciju operacija za rad u pokretnom zarezu. Operacije pomeranja mogu se obavljati u logičkom ili aritmetičkom režimu. Pri logičkom pomeranju, bit-vektor se pomera za m bitskih pozicija ulevo ili udesno. Kao rezultat ove operacije, m bita sa jedne strane vektora se izbacuje, a m novih bita se ubacuje sa druge strane vektora. Pri aritmetičkom pomeranju, pretpostavlja se da bit-vektor koji se pomera predstavlja binarni broj, tako da pomeranje za m pozicija udesno ima isti efekat kao deljenje broja sa 2m, dok je pomeranje za m pozicija ulevo isto što i množenje sa 2m. Ako bit-vektor predstavlja brojnu vrednost u formatu dvojičnog komplementa, tada se prilikom pomeranja udesno, u vektor, sa leve strane, ubacuje m kopija bita znaka. Za slučaj pomeranja ulevo, u vektor se, sa desne stane, ubacuje m nula. Dodatno, nakon pomeranja ulevo, na poziciju bita najveće težine treba postaviti vrednost koja je jednaka bitu znaka polazne reči. Pri operaciji rotiranja, bitovi se ne gube, jer se svaki bit koji izađe sa jedne strane reči, vraća u reč sa druge strane.

Za obavljanje operacija pomeranja i rotiranja koriste se digitalne komponente koje se zovu pomerači i rotatori. Ove komponente se konstruišu pomoću multipleksera. Na primer, na Sl. 4-33(a) je prikazan grafički simbol 8-

164

bitnog univerzalnog pomerača/rotatora, koji može da obavlja logičko pomeranje ili rotiranje za jednu bitsku poziciju na levo ili na desno. Kolo ima 8-bitni ulaz za podatak D=d7...d0, 8-bitni izlaz za podatak Y=y7...y0, i tri selekcione linije, S2, S1 i S0, preko kojih se vrši izbor željene operacije. Ulaz dl definišu bitsku vrednost koja se prilikom pomeranja na desno postavlja na krajni levi izlaz, y7, dok ulaz dl definiše vrednost koja se postavlja na krajnji desni izlaz, y0, prilikom pomeranja na levo. Shodno funkcionalnoj tabeli sa Sl. 4-33(b), kada je S2=0, ulazni podatak se, bez ikakve promene, prenosi na izlaz. Ako je S2=1, nad ulaznim podatkom se obavlja operacija pomeranja ili rotiranja. Smer pomeranja, odnosno rotiranja, zavisi od vrednosti S1: za S1=0 bitski sadržaj podatka se pokreće na levo, a za S0=1 na desno. Konačno, S0 služi za izbor između pomeranja i rotiranja, tako da pri S0=0 pomerač/rotator radi kao pomerač, a pri S0=1 kao rotator. Na Sl. 4-33(c) su ilustrovani različiti režimi rada univerzalnog pomerača/rotatora.

(a) (b)

(c)

Sl. 4-33 Univerzalni pomerač/rotator: (a) grafički simbol; (b) funkcionalna tabela; (c) režimi rada.

Na Sl. 4-34 je prikazana realizacija 8-bitnog univerzalnog pomerača/rotatora. Kao što se može videti, pomerač/rotator je realizovan tako što je za svaku bitsku poziciju iskorišćen jedan multipleksera 4-u-1. Ulazi multipleksera su tako raspoređeni da multiplekser koji zauzima poziciju i, može da bira između ulazih bita i-1, i i i+1. Dodatno, pomerač/rotator ima dva multipleksera 2-u-1, koji služe za izbor krajnjeg levog ili krajnjeg desnog bita.

Sl. 4-34 Realizacija 8-bitnog univerzalnog pomerača/rotatora sa Sl. 4-33 pomoću multipleksera.

165

Barel pomerač

Prethodno opisani pomerač/rotator ima mogućnost pomeranja ili rotiranja za jednu bitsku poziciju ulevo ili udesno. To znači da ako je potrebno obaviti pomeranje ili rotiranje za više od jedne bitske pozicije, podatak bi morao biti propušten kroz pomerač/rotator veći broj puta. Drugim rečima, na ovakvom tipu pomerača, operacija pomeranja za proizvoljan broj pozicija se izvršava sporo. Da bi se izbeglo ovo veliko kašnjenje, kod sistema gde se zahtevaju visoke performanse, koristi se barel pomerač, koji je tako projektovan da može obaviti pomeranje za proizvoljan broj pozicija. n-bitni pomerač ovog tipa, gde je n=2m, sadrži m=log2n nivoa multipleksera raspoređenih tako da i-ti nivo multipleksera (0≤i≤m-1) obavlja pomeranje za 2i pozicija, ako je selekciona linija ovog nivoa Si=1. Ako je Si=0, podatak prolazi kroz i-ti nivo nepromenjen. Drugim rečima, ako želimo da pomerimo podatak za B pozicija, gde je B binarni broj bm-1...b0, tada je potrebno postaviti Si=bi, za 0≤i≤m-1.

Na Sl. 4-35 je prikazano jedno moguće rešenje barel pomerača, kod koga je, u cilju pojednostavljenja, broj funkcija sveden samo na jednu, rotiranje na desno. Kao što se može videti, ovaj 8-bitni barel rotator realizovan je sa tri nivoa multipleksera 2-u-1, koji se kontrolišu sa tri selekcione linije, S0, S1 i S0, na sledeći način: kada je S0=1, prvi nivo obavlja rotiranje za jednu bitsku poziciju; kada je S1=1 drugi nivo obavlja rotiranje za dve, a kada je S2=1 treći nivo obavlja rotiranje za četiri bitske pozicije.

Za konstrukciju složenijih pomerača/rotatora, koji mogu obavljati veći broj različitih operacija, koristi se u suštini isti postupak, s tim da je neophodan veći broj multipleksera sa većim brojem ulaza za podatke.

(a)

(b)

Sl. 4-35 8-bitni barel rotator na desno: (a) tabela istinitosti; (b) struktura.

166

4.2 Aritmetička kola Ovo poglavlje je posvećeno digitalnim kolima koja obavljaju aritmetičke operacije. Biće razmatrana digitalna kola za sabiranje, oduzimanje i množenje.

4.2.1 Sabirač sa rednim prenosom Potpuni sabirač (*)

Binarno sabiranje obavlja se na sličan način kao decimalno sabiranje, s tom razlikom što pojedinačne cifre mogu biti samo 0 ili 1. Sabiranje dva jedno-bitna broja, u opštem slučaju, daje dvo-bitni rezultat, kao što je to ilustrovano na Sl. 4-36(a). Ako su oba sabirka 0, tada će i njihov zbir biti 0, tj. (00)2. Ako je jedan sabirak 0, a drugi 1, zbir je 1, tj. (01)2. Ako su oba sabirka 1, zbir je 2, tj. (10) 2. Bit manje težine ovog zbira zove se bit sume, ili sum, tj. s. Bit veće težine zove se bit prenosa ili carry, tj. c. Na Sl. 4-36(b) prikazana je tabela istinitosti koja definiše operaciju sabiranja dva bita. Lako se može uočiti da je bit sume AND, a bit prenosa XOR funkcija sabiraka. Na Sl. 4-36(c) je prikazana logička mreža koja realizuje funkcije s i c. Kolo koje obavlja sabiranje dva bita zove se polu-sabirač (half-adder - HA). Za predstavljanje polu-sabirača koristićemo grafički simbol sa Sl. 4-36(d).

x y Prenos

cx21 Suma sx20

0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0

(a) (b) (c) (d)

Sl. 4-36 Polu-sabirač: (a) sabiranje dva bita; (b) tabela istinitosti; (c) kolo; (d) grafički simbol.

Polu-sabirač, razmatran kao izolovano kolo, nema neki veći praktični značaj. Od mnogo većeg interesa su kola koja obavljaju sabiranje više-bitnih brojeva. Prilikom sabiranja više-bitnih brojeva, kao i kod sabiranja više-cifarskih decimalnih brojeva, potrebno je sabrati svaki par bitova (cifara), ali za svaku bitsku poziciju i dodatno je potrebno uračunati i prenos koji potiče iz prethodne pozicije, i-1. Na Sl. 4-37 je dat primer sabiranja dva 5-bitna broja X=(01111)2=(15)10 i Y=(01010)2=(10)10. Sa pet bita moguće je predstaviti cele brojeve iz opsega 0 do 31. Pošto u konkretnom slučaju važi S=X+Y=(25)10, pet bita biće dovoljna i za predstavljanje zbira. Uočimo da su na Sl. 4-37, sabirci simbolički označeni sa X=x4x3x2x1x0 i Y=y4y3y2y1y0. Na ovoj slici su takođe prikazani prenosi koji se generišu u toku sabiranja. Na primer, prilikom sabiranja bitova x0=1 i y0=0 dobija se suma s0=1 i prenos c0=0; prilikom sabiranja bitova x1=1 i y1=1 dobija se suma s1=0 i prenos c1=1 i tako dalje. Za ci kažemo da predstavlja izlazni prenos (carry-out) iz pozicije i, odnosno ulazni prenos (carry-in) na poziciju i+1.

Sl. 4-37 Sabiranje višebitnih binarnih brojeva.

Standardni način za projektovanje digitalnih kola polazi od tabele istinitosti. Međutim, ovakav pristup nije praktičan za projektovanje sabirača koji treba da sabira dva 5-bitna broja. 5-bitni sabirač ima 10 ulaza, pa bi za opis njegovog ponašanja bilo potrebno formirati tabelu istinitosti od 210=1024 vrsta! S toga, bolji pristup je nezavisno razmatrati sabiranje svakog para bita xi i yi.

Za poziciju i=0 ne postoji ulazni prenos i s toga se sabiranje obavlja na isti način kao na Sl. 4-36(a). Na svakoj od preostalih poziciju i=1,..., n-1, i-ti bitovi sabiraka, xi i yi, se sabiraju zajedno sa ulaznim prenosom ci. Tako, sada sabiranje na nivou svake bitske pozicije obuhvata tri bita, xi, yi i ci. Kako najveći zbir tri bita iznosi (11)2, to su za njegovo predstavljanje, kao i kod sabiranja dva jednobitna broja, potrebna dva bita: suma si, kao bit manje težine, i izlazni prenos ci+1, kao bit veće težine. Bit sume si predstavlja i-ti bit konačnog rezultata, dok se bit prenosa ci+1 pridodaje poziciji i+1 kao ulazni prenos. Funkcije sume i izlaznog prenosa definisane su tabelom istinitosti sa Sl. 4-38(a). Bit sume si je zbir po modulu 2 bitova xi, yi i ci. Drugim rečima, bit sume je jednak 1 ako neparan broj sabiraka ima vrednost 1, odnosno, 0 ako paran broj sabiraka ima vrednost 1. Izlazni prenos ci+1

167

jednak je 1 ako je zbir bitova xi, yi i ci veći od 1. Karnoove mape za funkcije si i ci+1 prikazane su na Sl. 4-38(a). Na osnovu Karnoovih mapa u mogućnosti smo da izvedemo optimalne izraze oblika zbir-proizvoda za funkcije ci+1 i si:

ci+1 = xiyi + xici + yici si = xi’yici’+xiyi’ci’+xi’yi’ci+xiyici

Efikasnija realizacija funkcija si i ci+1 može se postići korišćenjem XOR kola. XOR funkcija dve promenljive definisana je izrazom x1 ⊕ x2 = x1x2’ + x1’x2. Primenom algebarskih manipulacija, izraz za bit sume može se svesti na formu koja sadrži samo XOR kola, na sledeći način:

si = (xi’yi+xiyi’)ci’+( xi’yi’+xiyi)ci = (xi’yi+xiyi’)ci’+( xi’yi+xiyi’)’ci

= (xi ⊕ yi)ci’+(xi ⊕ yi)’ci

= (xi ⊕ yi) ⊕ ci

U suštini, si predstavlja XOR funkcija tri promenljive. Napomenimo, da je za XOR funkciju karakterističan naizmeničan raspored jedinica u Karnoovoj mapi, koji je takav da onemogućava sažimanje minterma (Sl. 4-38(b)).

Izraz za funkciju ci+1, takođe, možemo preurediti na način da koristi XOR funkciju. Pri tome, treba poći od izraza oblika zbir-minterma:

ci+1 = cixi’yi + cixiyi + cixiyi’ + ci’xiyi = (ci +ci’)xiyi + ci(xi’yi + cixiyi’)

= xiyi + ci(xi ⊕ yi)

Uočimo da se član (xi ⊕ yi) javlja u izrazima za obe funkcije si i ci+1. Ova činjenica omogućava da se prilikom realizacije funkcija si i ci+1 za izračunavanje člana (xi ⊕ yi) koristi jedinstveno XOR kolo. Kombinaciona mreža koja realizuje funkcije si i ci+1 prikazana je na Sl. 4-38(c). Ovo kolo se zove potpuni-sabirač (full-adder - FA). Grafički simbol potpunog sabirača prikazan je na Sl. 4-38(d).

(a) (b) (c) (d)

Sl. 4-38 Potpuni sabirač: (a) tabela istinitosti; (b) Karnoove mape; (c) kolo; (d) grafički simbol.

Imajući u vidu imena kola, polu- i potpuni-sabirač, mogli bi smo naslutiti da je potpuni-sabirač moguće konstruisati pomoću dva polu-sabirača. Zaista, ako pažljivo pogledamo kombinacionu mrežu potpunog sabirača sa Sl. 4-38(c), možemo učiti da se u njoj kriju dva polu-sabirača, uz dodatak jednog OR kola preko kojeg se formira izlaz ci+1, kao što je to naznačeno na Sl. 4-72(a). Na Sl. 4-72(b) je prikazana blok šema potpunog sabirača realizovanog pomoću polu-sabirača.

168

(a) (b)

Sl. 4-39 Realizacija potpunog sabirača na bazi polu-sabirača: (a) identifikacija polu-sabirača; (b) blok dijagram

Sabirač sa rednim prenosom

Kao što dobro znamo, ručno sabiranje se obavlja tako što se krene od cifre najmanje težine i redom sabiraju parovi cifara, sve do cifre najveće težine. Ako se na poziciji i javi prenos, tada se on dodaje ciframa na poziciji i+1. Identičan postupak se može primeniti i za konstrukciju digitalnog kola koje će obavljati sabiranje binarnih brojeva. Binarni sabirač se formira rednim povezivanjem potpunih sabirača, tako što izlazni prenos svakog potpunog sabirača služi kao ulazni prenos za potpuni sabirač koji zauzima prvu narednu bitsku poziciju veće težine. Ovakva vrsta sabirača se zove sabirač sa rednim prenosom ili RCA, prema engleskom nazivu Ripple-Carry Adder. Struktura n-to bitnog sabirača sa rednim prenosom prikazana je na Sl. 4-40(a). Ova struktura se predstavlja grafičkim simbolom sa Sl. 4-40(b).

U opštem slučaju, zbir dva neoznačena n-to bitna broja ima n+1 bita. Kod binarnog sabirača, ovaj dodatni (n+1)-vi bit je predstavljen bitom izlaznog prenosa iz pozicije najveće težine, cn, tako da važi:

(cnsn-1…s1s0) = (xn-1…x1x0) + (yn-1…y1y0) + c0.

(a) (b)

Sl. 4-40 n-bitni sabirač sa rednim prenosom: (a) unutrašnja struktura; (b) grafički simbol.

U strukturi sa Sl. 4-40(a), proces izračunavanja počinje onog trenutka kada se na ulaze sabirača postavi novi par operanada X i Y. Međutim, s obzirom da svako logičko kolo u svakom potpunom sabiraču unosi izvesno kašnjenje, korektna vrednost izlazne sume S se ne generiše istog tog trenutka, već tek nakon nekog vremena. Da bi se u stepenu n-1 odredio bit sume sn-1 neophodna je informacija o prenosu iz stepena n-2, tj. cn-1; da bi se u stepenu n-2 odredio izlazni prenos cn-1 potrebno je imati informaciju o vrednosti cn-2, i td. Neka kašnjenje potpunog sabirača iznosi ∆t – vreme od postavljanja ulaza xi, yi, ci do generisanja korektnih izlaza ci+1 i si. Izlazni prenos iz prvog stepena, c1, stiže do drugog stepena posle vremena ∆t nakon što su postavljeni x0 i y0. Izlazni prenos iz drugog stepena, c2, stiže do ulaza trećeg sa kašnjenjem od 2∆t, i td. Signal cn-1 je važeći posle kašnjenja od (n-1)∆t, a celokupna izlaza suma posle kašnjenja od n∆t.

Napomenimo da vreme sabiranja zavisi i od vrednosti operanada. Kašnjenje od n∆t odgovara slučaju kada je jedan operand 11...11, a drugi 00...01. U ovom slučaju, prenos koji se javlja na poziciji 0, prenosi se kroz sve potpune sabirače postavljajući bitove sume na 0. Za bilo koji drugi par vrednosti operanada, kašnjenje će biti kraće. Na primer, sabiranje brojeva 00...00 i 00...01 traje samo ∆t. U opštem slučaju, vreme sabiranja određeno je najvećim brojem uzastopnih pozicija na kojima oba operanda imaju vrednost 1. Međutim, kao se sabirači koriste za sabiranje operanada proizvoljnih vrednosti, u radu sa sabiračem moramo računati sa maksimalnim kašnjenjem, n∆t, kako bi smo bili sigurni da ćemo sa izlaza sabirača uvek očitati ispravan rezultat.

169

Znači, brzina rada sabirača sa rednim prenosom određena je vremenom prostiranja signala prenosa kroz potpune sabirače. Što je broj bita koji se sabira veći, to je brzina rada manja. Ako se radi sa brojevima velike dužine, 32 ili 64 bita, vreme sabiranja može biti neprihvatljivo dugo. Napomenimo da je sabirač sa rednim prenosom samo jednu od većeg broja različitih konstrukcija sabiračkih kola, koje se razlikuju po složenosti (ukupan broj gejtova) i brzini rada. Sabirač sa rednim prenosom je najjednostavnija, ali ujedno i najsporija varijanta. Konstrukcija brzih sabiračkih kola biće tema odeljka X.

Binarni sabirači sa rednim prenosom se lako sprežu kako bi se formirale sabiračke mreže za veći broj bitova. Na Sl. 4-41 je pokazano kako se sa dva n-bitna sabirača formira 2n-bitni sabirač.

Sl. 4-41 Sprezanje binarnih sabirača.

Pr. 4-7 Projektovati kolo za množenje neoznačenog 8-bitnog broja konstantom 3.

Neka je A=a7a6…a1a0 i P=3A. Za predstavljanje broja P potrebna su 10 bita: P=p9p8…p1p0. Pošto važi 3A=A+A+A, za realizaciju kola možemo upotrebiti binarne sabirače. Na Sl. 4-42(a) je prikazano rešenje koje koristi dva sabirača. Pri sabirač generiše A+A=2A. Njegov rezultat je predstavljen sa 9 bita: 8 bita sume i izlazni prenos sa pozicije najveće težine. Drugi sabirač računa 2A+A=3A. Ovaj sabirač je 9-to bitni, iz razlog što jedan od njegovih operanada, 2A, ima 9 bita. Uočimo da je ulaz x8 drugog sabirača povezan je na konstantu 0, s obzirom da A ima 8-bita.

Na Sl. 4-42(b) je prikazano efikasnije rešenje, koje koristi samo jedan 9-bitni sabirač. Uočimo da je 8-bitni sabirač u rešenju sa Sl. 4-42(a) nepotreban, s obzirom da se 2A može dobiti prostim pomeranjem bitova broja A za jednu poziciju ulevo, što daje: 2A=a7a6…a1a00. Za obavljanje ovog pomeranja nije potrebno nikakvo kolo, već je dovoljno dopisati jednu nulu sa desne strane broja, što upravo odgovara načinu na koji je operand A povezan sa Y ulazom sabirača.

Uočimo, sada, da je u rešenju sa Sl. 4-42(b), ulaz najmanje težine sabirača x0 fiksno postavljen na x0=0. To znači da će bit sume s0 uvek imati vrednost s0=a0. Ovo zapažanje nam omogućava da dodatno pojednostavimo rešenje, tako što ćemo 9-bitni sabirač zameniti 8-bitnim, kao na Sl. 4-42(c).

(a) (b) (c)

Sl. 4-42 Kolo koje množi 8-bitni neoznačeni broj sa 3: (a) polazno rešenje; (b) poboljšano rešenje; (c) konačno rešenje.

Predstavljanje označenih brojeva (*)

U decimalnom brojnom sistemu, znak broja se označava simbolom + ili – levo od cifre najveće težine. U binarnom brojnom sistemu, znak broja se označava dodatnim bitom koji u zapisu broja zauzima krajnju levu poziciju. Za pozitivne brojeve, ovaj bit jednak je 0, a za negativne 1. Znači, kod označenih brojeva, krajnji levi

170

bit ukazuje na znak broja, dok se preostalih n-1 bita predstavlja maginitudu ili apsolutnu vrednost broja, kao što je prikazano na Sl. 4-43. Važno je zapaziti poziciju bita najveće težine (MSB). Kod neoznačenih brojeva svih n bita predstavljaju magnitudu broja – kaže se da su svi bitvi značajni, a MSB se nalazi poziciji n-1. Kod označenih brojeva, značajni su n-1 bita, MSB bit se nalazi na poziciji n-2, dok bit na poziciji n-1 ukazuje na znak broja.

(a) (b)

Sl. 4-43 Formati predstavljana celih brojeva: (a) neoznačeni broj; (b) označeni broj.

Za razliku od pozitivnih brojeva koji se predstavljaju uvek na isti način, korišćenjem pozicionog brojnog sistema, za predstavljanje negativnih brojeva u upotrebi su tri reprezentacije: znak-magnituda, jedinični komplement i dvojični komplement.

Znak magnituda

Kod decimalnog brojnog sistema, magnituda pozitivnih i negativnih brojeva predstavlja se na isti način, a znak je taj koji ukazuje da li se radi o pozitivnom ili negativnom broju. Ovakav način predstavljanja označenih brojeva zove se znak-magnituda, ili znak-apsolutna vrednost. Ista reprezentacija se može primeniti i na binarne brojeve, a razlika je samo u načinu kodiranja znaka: umesto + i – koristimo 0 i 1, respektivno. Na primer, +5 = 0101, a -5=1101.

Brojni sistem koji koristi reprezentaciju znak-magnituda sadrži isti broj pozitivnih i negativnih brojeva, a nula ima dvojnu reprezentaciju. Najveći pozitivni broj koji se u ovom sistemu može iskazati sa n bita je +(2n-1) = 011…11; najmanji negativni broj je –(2n-1) = 111…11, dok se nula predstavlja sa 000…00 ili 100…00.

Jedinični komplement

U formatu jediničnog komplementa, n-bitna reprezentacija negativnog broja K se dobija oduzimanjem njemu odgovarajućeg pozitivnog broja P od 2n-1, tj. K=(2n-1)-P. Na primer, ako je n=4, tada je K = (24-1)-P = (15)10-P = (1111)2-P. Ako +5 konvertujemo u negativan broj, dobićemo -5 = 1111 – 0101 = 1010. Slično, +3=0011, a -3 = 1111 – 0011 = 1100. Jasno se uočava da se jedinični komplement datog binarnog broja dobija komplementiranjem svakog pojedinačnog bita, uključujući i bit znaka.

Najveći pozitivni broj koji se može predstaviti u jediničnom komplementu sa n bita je 011…11 = 2n-1, najmanji negativni broj je 100…00 = -(011…11)2 = -(2n-1), dok nula ima dvojnu reprezentaciju: 000…00 ili 111…11.

Jedinični komplement se lako izvodi, ali ispoljava izvesne nedostatke kada se koristi u aritmetičkim operacijama.

Dvojični komplement

U formatu dvojičnog komplementa, n-bitna reprezentacija negativnog broja K se dobija oduzimanjem njemu odgovarajućeg pozitivnog broja P od 2n, tj. K = 2n - P. Na primer, ako je n = 4, tada je K = 24 - P = (16)10 - P = (10000)2 - P. Da bi smo odredili dvojični komplement broja 5, treba obaviti oduzimanje 10000 – 0101, što daje -5 = 1011. Ili -3 = 10000 – 0011 = 1101. Nalaženje dvojičnog komplementa na ovaj način je naporno jer zahteva da se obavi operacija oduzimanja. Međutim, ako je K1 jedinični, a K2 dvojični komplement broja P tada važi:

K1 = (2n-1) – P K2 = 2n – P

Odakle sledi K2 = K1 + 1. Dakle, jednostavniji način za nalaženje dvojičnog komplementa sastoji se u tome da se na jedinični komplement doda jedinica. Ovo je upravo način na koji se u digitalnoj tehnici dobija dvojični komplement.

Za ručno izvođenje postoji još jedan lakši način za nalaženje dvojičnog komplementa. Neka je dat broj B=bn-1bn-

2 ... b1b0. Dvojični komplement broja B, K=kn-1kn-2 ... k1k0, može se odrediti na sledeći način: krećemo od bita najmanje težine ulevo i prepisujemo bitove broja B sve dok ne naiđemo na prvu jedinicu, zatim prepisujemo i ovu jedinicu, a preostale bitove komplementiramo. Na primer, ako je B=0110, tada prepisujemo k0=b0=0 i k1=b1=1, i komplementiramo preostale bitove, k2=b2`=0 i k3=b3`=1. Znači, K=1010. Ili, na složenijem primeru, ako je B=101101000, tada je K= 010011000.

171

U brojnom sistemu koji koristi dvojični komplement, nula se tretira kao pozitivan broj, i predstavlja na jedinstveni način: 000...00. Iz tog razloga broj pozitivnih brojeva je za jedan manji od broja negativnih. Naime, najveći pozitivni broj koji se može predstaviti sa n bita u formatu dvojičnog komplementa je 011...11 = 2n-1, dok je najmanji negativan broj 10000000 = -(011...11 + 1)2 = -(100...00)2 = -2n.

Sabiranje i oduzimanje označenih brojeva (*)

U prethodnom odeljku opisana su tri standardna načina za binarnu reprezentaciju brojeva. Međutim, nisu svi ovi načini podjednako pogodni za primenu u digitalnim sistemima. Osnovni kriterijum za izbor reprezentacije brojeva je lakoća sa kojom se nad brojevima u konkretnoj reprezentaciji obavljaju osnovne računske operacije, kao što su sabiranje i oduzimanje. U ovom odeljku, na konkretnim primerima, ukazaćemo na dobre i loše strane svake od tri reprezentacije.

Sabiranje pozitivnih brojeva se obavlja na isti način u sve tri reprezentacije, tj. na isti način kao sabiranje neoznačenih brojeva. Međutim, kada se u računicu uvedu i negativni brojevi, između različitih reprezentacija ispoljavaju se značajne razlike.

Sabiranje brojeva u formatu znak-magnituda

Ako oba sabirka imaju isti znak, sabiranje brojeva u formatu znak-magnituda je jednostavno. Magnitude se saberu, a zbiru se dodeli znak sabiraka. Međutim, ako su sabirci različitog znaka, sabiranje postaje složenije. U tom slučaju, operacija sabiranja se svodi na oduzimanje manjeg broja od većeg. To znači da je za obavljanje operacije sabiranja neophodno digitalno kolo koje će ispitati znake sabiraka, uporediti njihove magnitude i biti u mogućnosti da u zavisnosti od ishoda poređenja obavi sabiranje ili oduzimanje. Složenost takvog kola je značajno veća od odgovarajućih kola koja barataju brojevima u komplementarnim reprezentacijama. Iz tog razloga reprezentacija znak-magnituda se ne koristi kod digitalnih sistema.

Sabiranje brojeva u jediničnom komplementu

Očigledna prednost jediničnog u odnosu na dvojični komplement je u tome što se negativni broj lako određuje prostim komplementiranjem svih bitova odgovarajućeg pozitivnog broja. Na Sl. 4-44 je prikazano šta se dešava prilikom sabiranja dva broja predstavljena u jediničnom komplementu. Navedena su četiri slučaja, pri čemu svaki slučaj odgovara jednoj konkretnoj kombinaciji znakova sabiraka. Kao što se može videti na gornjoj polovini slike, izračunavanja 5 + 2 = 7 i (-5) + 2 = (-3) su trivijalna; prostim binarnim sabiranjem operanada, uključujući pri tome i bit znaka, dobija se ispravan rezultat. Međutim, to nije slučaj kod preostala dva primera. Izračunavanje 5 + (-2) = 3 daje bit vektor 10010. Prvo, rezultat ima pet, a ne četiri bita. Dodatni peti bit je posledica izlaznog prenosa iz pozicije znaka. Drugo, preostala četiri bita predstavljaju broj 2, a ne 3, što je očigledno pogrešan rezultat. Međutim, ako uzmemo izlazni prenos sa pozicije znaka i dodamo ga rezultatu na poziciji najmanje težine, novi rezultat biće ispravna suma, tj. 3. Slična situacija se javlja kod sabiranja (-5) + (-2) = (-7). Nakon inicijalnog sabiranja, rezultat je pogrešan, zato što su četiri bita sume 0111, što predstavlja +7, a ne -7. Ali, ponovo, tu je izlazni prenos iz pozicije bita znaka koji može biti iskorišćen za korekciju rezultata, na način kako je prikazano na Sl. 4-44.

Sl. 4-44 Primeri sabiranja u jediničnom komplementu.

Zaključak koji se nameće na osnovu razmatranih primera je da sabiranje brojeva u jediničnom komplementu u nekim slučajevima jednostavno, a u nekima nije. Ako je potrebna korekcija, neophodno je dodatno vreme kako bi se obavilo sabiranje inicijalnog rezultata i izlaznog prenosa. Tako, ukupno vreme sabiranja može biti i dvostruko duže od vremena sabiranja dva neoznačena broja.

Sabiranje brojeva u dvojičnom komplementu

Razmotrimo istu kombinaciju brojeva koju smo koristili u primerima za jedinični komplement. Na Sl. 4-45 je ilustrovano kako se obavlja sabiranje brojeva predstavljenih u dvojičnom komplementu. Sabiranja 5 + 2 = 7 i (-5) + 2 = (-3) su trivijalna. Izračunavanje 5 + (-2) = 3 daje ispravna četiri bita rezultata, 0011. Pri tome, izlazni prenos iz pozicije bita znaka, koji u ovom slučaju postoji, možemo, prosto, ignorisati. Četvrti slučaj je (-5) + (-2) = (-7). Ponovo, četiri bita rezultata, 1001, odgovaraju ispravnoj sumi (-7). I u ovom slučaju, izlazni prenos iz pozicije bita znaka se može ignorisati.

172

Sl. 4-45 Primeri sabiranja u dvojičnom komplementu.

Prethodni primeri pokazuju da je sabiranje brojeva u dvojičnom komplementu veoma jednostavno. Brojevi se sabiranju zajedno sa bitom znaka, a rezultat je uvek ispravan. Eventualni izlazni prenos iz pozicije bita znaka se jednostavno ignoriše. Znači, procedura sabiranja je uvek ista, nezavisno od znaka operanada, i može se obaviti binarnim sabiračem, kao što je onaj sa Sl. 4-40. Zbog svega toga, reprezentacija brojeva u dvojičnom komplementu je veoma pogodna za primenu u digitalnim sistemima.

Oduzimanje u dvojičnom komplementu

Najlakši način da se obavi oduzimanje je da se najpre umanjiocu promeni znak, a da se onda dobijena vrednost sabere sa umanjenikom. Promeni znaka umanjioca odgovara nalaženje njegovog dvojičnog komplementa. Na Sl. 4-46 je na nekoliko karakterističnih primera ilustrovan ovaj postupak. Operacija 5 – (+2) = 3 uključuje nalaženje dvojičnog komplementa broja +2, što daje 1110. Kada se ovaj broj sabere sa 0101 = (+5), dobija se rezultat 0011 = (+3) uz generisanje prenosa iz pozicije bita znaka. Ako ignorišemo prenos, rezultat je tačan. Slična situacija postoji za (-5) + (+2) = (-7). U preostala dva slučaja, izlazni prenos ne postoji i rezultat je tačan.

Sl. 4-46 Primeri oduzimanja u dvojičnom komplementu.

Sl. 4-47 predstavlja jednu vizuelnu ilustraciju procesa sabiranja i oduzimanja 4-bitnih brojeva u dvojičnom komplementu. Slika prikazuje brojčanik po čijem obodu su raspoređene svih 16 4-bitnih kombinacija. Ako bi smo ove binarne kombinacije interpretirali kao neoznačene cele brojeve, tada bi one predstavljale brojeve od 0 do 15. Ako ih tretiramo kao brojeve u dvojičnom komplementu, tada njima odgovara opseg celih označenih brojeva od -8 do 7, kao što je naznačeno po unutrašnjem obodu brojčanika. Kazaljku brojčanika možemo podesiti na bilo koji broj, a zatim na taj broj možemo dodati broj +n tako što ćemo odbrojati n puta unapred, tj. okrenuti kazaljku za n koraka u smeru kretanja kazaljke na časovniku. Jasno je da okretanjem kazaljke za n koraka u suprotnom smeru, od polaznog broja oduzimamo broj n. Naravno, rezultat ovog postupka će biti tačan samo ako je n dovoljno malo da kazaljka prilikom okretanje ne pređe granicu između +7 i -8.

Sl. 4-47 Grafička reprezentacija 4-bitnih brojeva u dvojičnom komplementu.

Interesantno je uočiti još i sledeće. Krajnja pozicija kazaljke biće ista bilo da se ona okrene za n koraka u jednom smeru ili za 16-n koraka u suprotnom smeru. Dakle, umesto da radimo sa brojčanikom čija kazaljka može da se okreće u oba smera, možemo koristiti brojčanik sa kazaljkom koja se okreće samo u smeru kretanja kazaljke na časovniku (odgovara sabiranju), a da u slučajevima kada želimo da obavimo oduzimanje, prethodno preračunamo broj koraka po formuli 16-n. Uočimo da 16-n predstavlja upravo dvojični komplement broja n, a

173

da ova grafička interpretacija potvrđuje naše ranije tvrđenje da se oduzimanje brojeva u dvojičnom komplementu može obaviti sabiranjem umanjenika i dvojičnog komplementa umanjioca.

Sabirač/oduzimač

Jedina razlika između sabiranja i oduzimanja je u tome što je kod oduzimanja potrebno koristiti dvojični komplement jednog od operanada. Neka su X i Y dva broja, koja treba sabrati ili oduzeti i neka je Y broj koji prilikom oduzimanja služi kao umanjilac, tj. neka je S=X±Y. Kao što znamo, dvojični komplement operanda Y se može dobiti dodavanjem jedinice na njegov jedinični komplement. Dodavanje jedinice na poziciju najmanje težine može se postići postavljanjem bita ulaznog prenosa c0 na 1. Jedinični komplement datog broja se dobija komplementiranjem svih njegovih bitova. Komplementiranje broja se može obaviti pomoću NOT gejtova. Međutim, za ovu namenu biće nam potrebno fleksibilnije kolo, kako bi smo mogli da u zavisnosti od željene operacije koristimo pravu ili komplementiranu vrednost operanda Y. Takvo kolo je XOR gejt. Interesantna osobina XOR kola je da jedan od njegovih ulaza možemo koristiti kao upravljačku promenljivu pomoću koje ćemo birati da li će se na izlazu kola generisati prava ili komplementarna vrednost drugog ulaza. Ovo je jasno na osnovu definicije XOR operacije:

z=x ⊗ y = x’y + xy’

Neka je x upravljački ulaz. Za x=0, izlaz će biti identičan ulazu y, tj. z= 0’·y + 0·y’=1·y+0· y’= y. Ali, ako je x=1, izlaz će biti jednak komplementu ulaza y, tj. z= 1’·y + 1·y’=0·y+1· y’= y’. Drugim rečima, za x=1 XOR gejt funkcioniše kao invertor, dok za x=0, jednostavno prenosi vrednost sa ulaza y na izlaz.

Kolo za sabiranje/oduzimanje možemo konstruisati na sledeći način. Pretpostavimo da postoji upravljački signal koji određuje da li treba obaviti sabiranje ili oduzimanje. Neka se ovaj signal zove SubAdd / (prema engleskim nazivima za sabiranje i oduzimanje: addition i subtraction). Takođe, neka vrednost 0 ovog signala bira sabiranje, a 1 oduzimanje. Crta iznad Add upravo ukazuje na ovu činjenicu. Napomenimo da je ovo često korišćena konvencija, tj. da crta iznad imena upravljačkog signala ukazuje da se akcija specificirana tim imenom obavlja kada signal ima vrednost 0. Neka je svaki bit operanda Y povezan na jedan ulaz jednog od XOR gejtova, a da su drugi ulazi svih XOR gejtova povezani na signal SubAdd / . Izlazi XOR gejtova predstavljaju Y, ako je

SubAdd / =0, odnosno Y’, ako je SubAdd / =1. Tako dolazimo do kola sa Sl. 4-48. Glavni deo ovog kola je n-to bitni sabirač, koji može biti realizovan korišćenjem strukture sabirača sa rednim prenosom sa Sl. 4-40(a). Uočimo da je upravljački ulaz SubAdd / povezan i na ulaz c0 sabirača. Na ovaj način, biće c0=1 kada se obavlja oduzimanje, što dodaje jedinicu koja je neophodna da bi se formirao dvojični komplement operanda Y. Kada se obavlja operacija sabiranja, c0 će biti 0 i neće uticati na rezultat.

Sl. 4-48 Sabirač/oduzimač.

Kombinovano kolo za sabiranje i oduzimanje je dobar primer jednog važnog koncepta koji se primenjuje u projektovanju digitalnih sistema. Korisno je projektovati kola koja će biti što je moguće više fleksibilna i na taj način iskoristiti zajedničke delove kola za što više različitih zadataka. Ovakvim pristupom minimizuje se broj gejtova potrebnih za realizaciju sistema. Takođe, značajno se smanjuje složenost povezivanja komponenti sistema.

Aritmetičko prekoračenje

Ako operacija sabiranja ili oduzimanja generiše rezultat koji premašuje opseg brojnog sistema kažemo da je došlo do aritmetičkog prekoračenja. Drugim rečima, aritmetičko prekoračenje se javlja u situacijama kada je rezultat pozitivan i suviše veliki ili negativan i suviše mali tako da ga nije moguće predstaviti raspoloživim značajnim bitovima. Ako za predstavljanje označenih brojeva koristimo n bita, tada rezultat mora biti u opsegu od -2n-1 do (2n-1-1). Kada su sabirci različitog znaka, do aritmetičkog prekoračenja nikada neće doći, zato što će rezultat uvek biti manji od pozitivnog i veći od negativnog sabirka. Međutim, ako su sabirci istog znaka, može

174

se desiti da rezultat bude veći od 2n-1-1, ako su oba sabirka pozitivna, odnosno, manji od -2n-1, ako su sabirci negativni. Da bi se osigurao ispravan rad aritmetičkog kola, neophodno je biti u mogućnosti detektovati pojavu aritmetičkog prekoračenja.

Sl. 4-49 Primeri za određivanje uslova prekoračenja.

Na Sl. 4-49 su prikazana četiri slučaja sabiranja brojeva u dvojičnom komplementu čije su magnitude 7 i 2. S obzirom da u ovom primeru za predstavljanje brojeva koristimo 4 bita, broj značajnih bitova je tri, b0-2. Kao što se vidi sa Sl. 4-49, kada su sabirci različitog znaka rezultat je tačan, tj. nema prekoračenja. Međutim, ako oba broja imaju isti znak, magnituda rezultata je 9 i ne može biti predstavljena sa samo tri značajna bita, tj. dolazi do prekoračenja. Ključ za detekciju pojave prekoračenja su dva prenosa: c3 – izlazni prenos iz pozicije najveće težine i c4 izlazni prenos iz pozicije znaka. Na osnovu primera sa Sl. 4-49, može se zaključiti da se prekoračenje javlja kada ova dva bita imaju različite vrednosti, a da je rezultat ispravan ako su njihove vrednosti iste. Izražen u obliku logičkog izraza, uslov prekoračenja glasi:

Prekoračenje = c3c4’ + c3’c4

= c3 ⊗ c4

Ili, u opštem slučaju, za n bitne brojeve, imamo:

Prekoračenje = cn-1 ⊗ cn

Na Sl. 4-50(a) je prikazana struktura sabirača/oduzimača sa kolom za detekciju prekoračenja koje ispituje izlazne prenose.

Drugi način za detekciju aritmetičkog prekoračenja upoređuje bitove znaka sabiraka i rezultata. Neka su X=xn-

1xn-2…x0 i Y=yn-1yn-2…y0 binarni brojevi u dvojičnom komplementu, i S=sn-1sn-2…s0 rezultat njihovog sabiranja. Bitovi xn-1, yn-1 i sn-1 su bitovi znaka ova tri broja. Aritmetičko prekoračenje postoji ako smo sabiranjem pozitivnih brojeva dobili negativan rezultat ili ako smo sabiranjem negativnih brojeva dobili pozitivan rezultat, tj.:

Prekoračenje = xn-1yn-1sn-1’ + xn-1’yn-1’sn-1

Isto tvrđenje, kazano drugim rečima, glasi: do prekoračenja je došlo ako se rezultat razlikuje po znaku od oba sabirka, tj.:

Prekoračenje = (xn-1 ⊗ sn-1) (yn-1 ⊗ sn-1)

Kolo sabirača/oduzimača kod koga je detekcija prekoračenja realizovana shodno gornjem izrazu prikazano je na Sl. 4-50(b). Uočimo da je prvi način za detekciju prekoračenja, Sl. 4-50(a), jednostavniji, jer zahteva sam još jedno dodatno XOR kolo, za razliku od drugog kod koga je potrebno ugraditi dodatna tri gejta. Međutim, prvo rešenje podrazumeva da je signal izlaznog prenosa cn-1 dostupan, što ne mora biti slučaj ako raspolažemo sabiračem koji se realizovan kao monolitna komponenta. U tom smislu, drugo rešenja je pogodnije jer koristi samo spoljašnje signale sabirača/oduzimača.

175

FA

xn-1

yn-1

sn-1

cn

FA

x1

y1

s1

c2

FA

x0

y0

s0

c1c0

cn-1 . . .

MSBpozicija

LSB pozicija

FA

xn-2

yn-2

sn-2

cn-2

Pozicijaznaka

Prekoračenje

Add/Sub

(a)

(b)

Sl. 4-50 Dva načina za detekciju aritmetičkog prekoračenja: (a) na osnovu izlaznih prenosa; (b) na osnovu znaka sabiraka i rezultata.

Napomenimo da su dva pravila za detekciju aritmetičkog prekoračenja, u suštini, ekvivalentna. Potpuni sabirač na poziciji bita znaka obavlja sledeće izračunavanje: (cn, sn-1) = (xn-1 + yn-1 + cn-1). Ako su oba sabirka pozitivna, xn-1=yn-1=0, izlazni prenos iz pozicije znaka biće cn=0, bez obzira na vrednost cn-1. Za cn-1=0, bit znaka rezultata biće sn-1=0, što ukazuje da je rezultat pozitivan i da zbog toga prekoračenja nema. Međutim, ako je cn-1=1, bit znaka dobija vrednost sn-1=1, što ukazuje na negativan rezultat, tj. na pojavu prekoračenja. Slično, ako su oba sabirka negativna, xn-1=yn-1=1, izlazni prenos iz pozicije znaka biće cn=1, bez obzira na vrednost cn-1. Međutim, za cn-1=0, bit znaka dobija vrednost sn-1=0, što ukazuje na pozitivan rezultat, odnosno na prekoračenje. Dakle, u oba slučaja važi da prekoračenje postoji ako je cn≠cn-1.

Performanse sabirača sa rednim prenosom

Sabiranje i oduzimanje brojeva su bazične operacije koje se često obavljaju u računarskim sistemima. Brzina izvršenja ovih operacija ima veliki uticaj na ukupne performanse računara. Iz tog razloga, razmotrimo brzinu rada kola za sabiranje i oduzimanje. Brzina rada ovog kola određena je kašnjenjem od trenutka kada se na ulaze kola postave operandi X i Y do trenutka kada se na izlazu kola generišu korektne vrednosti svih bitova sume S i izlaznog prenosa cn. Najveći deo ovog kašnjenja potiče od n-bitnog sabirača. Pretpostavimo da je sabirač realizovan korišćenjem strukture sa rednim prenosom (Sl. 4-40), kod koje su potpuni sabirači realizovani kao na Sl. 4-38. Kao što se lako može zaključiti sa Sl. 4-38, kod ove realizacije potpunog sabirača, kašnjenje izlaznog prenosa, ∆t, jednako je kašnjenju kroz dva gejta, tj. ∆t=2tg, gde je tg kašnjenje kroz jedan gejt. Ukupno kašnjenje sabirača sa rednim prenosom iznosi n∆t, što je ekvivalentno kašnjenju kroz 2n gejta. Pored kašnjenja koje je posledica prostiranja signala prenosa kroz sabirač, na ukupno kašnjenje kola za sabiranje i oduzimanje dodatno utiču i ulazna XOR kola. Ako pretpostavimo da je kašnjenje kroz XOR kolo jednako tg, dolazimo do zaključka da kolo za sabiranje i oduzimanje unosi kašnjenje ekvivalentno kašnjenju kroz 2n+1 gejt. Za veće n, npr. n=32 ili n=64, iznos kašnjenja može biti toliko veliki da značajno degradira performanse celog sistema. Zato je bitno ispitati mogućnost alternativne realizacije binarnog sabirača, koja će se odlikovati većom brzinom rada.

Brzina rada bilo kog digitalnog kola ograničena je najvećim kašnjenje duž neke od putanja kroz kolo. U slučaju kola sa Sl. 4-48, najduže kašnjenje se javlja duž putanje koja kreće od ulaza yi, prolazi kroz XOR gejt, a zatim kroz kola za generisanje prenosa svih potpunih sabirača. Najduže kašnjenje se zove kašnjenje kritičnog puta, a putanja koja uslovljava ovo kašnjenje kritična putanja.

176

4.2.2 Brzi sabirači Sabirač sa ubrzanim prenosom

Kašnjenje uzrokovano propagacijom signala prenosa kroz sabirač sa rednim prenosom može se smanjiti ako promenimo strukturu sabirača na način da svaki stepen i, umesto da čeka da od stepena i-1 dobije ulazni prenos ci, pre nego što generiše svoj bit sume si, samostalno pokuša da odredi da li će vrednost ulaznog prenosa biti 0 ili 1. Da bi ukupne performanse sabirača bile poboljšanje, potrebo je da korektna procena vrednosti ulaznog prenosa bude obavljena za što je moguće kraće vreme.

Pođimo od izraza za funkciju izlaznog prenosa i-tog stepena sabirača:

ci+1 = xiyi + xici + yici

Ako ovaj izraz rastavimo na sledeći način:

ci+1 = xiyi + (xi + yi)ci

funkciju ci+1 možemo napisati u obliku:

ci+1 = gi + pici (4.1)

gde je:

gi = xiyi pi = xi + yi

Jednačinu (4.1) možemo protumačiti na sledeći način. Kada je gi=1, tj. xi=yi=1, stepen i generiše izlazni prenos, ci+1=1, bez obzira na vrednost ulaznog prenosa ci. Zato se g zove funkcija generisanog prenosa. Funkcija pi jednaka je 1 ako je barem jedan od ulaza xi i yi jednak 1. U ovom slučaju, ci=1 uslovljava generisanje izlaznog prenosa ci+1, tj. efekat je kao da se ulazni prenos preneo na izlaz. Zbog toga se funkcija p zove funkcija propagiranog prenosa. Dakle, stepen i generiše prenos ako su oba njegova sabirka jednaka 1, a propagira prenos ako je jedan od sabiraka jednak 1.

Jednačina (5.3) nam omogućava da rekurzivnom zamenom člana ci eliminišemo propagaciju prenosa kroz sabirač. Naime, kao što je ci+1 = gi + pici, tako je i ci = gi-1 + pi-1ci-1. Dakle,

ci+1 = gi + pi(gi-1 + pi-1ci-1) = gi + pigi-1 + pipi-1ci-1

Nastavljajući sa smenama, sve do c0, dolazimo do izraza za ci+1 sledećeg oblika:

ci+1 = gi + pigi-1 + pipi-1gi-2 + ... + pipi-1... p2p1g0 + pipi-1...p1p0c0 (4.2)

Dobijeni izraz se može realizovati u vidu tronivovske AND-OR mreže. U prvom nivou računaju se funkcije generisanog i propagiranog prenosa, gi i pi. U drugom nivou, izračunavaju se produktni članovi, koji se, potom, sumiraju u trećem nivou. S obzirom na mali broj nivoa, ci+1 se izračunava veoma brzo. Šta više, kašnjenje u izračunavanju izlaznih prenosa ci+1 je fiksno i ne zavisi od i, što znači da ni ukupno kašnjenje sabirača ne zavisi od obima operanada, tj. n. Binarni sabirač zasnovan na izrazu (4.2) zove se sabirač sa ubrzanim prenosom ili CLA sabirač, prema engleskom nazivu Carry-Lookahead Adder.

Da bi smo bolje razumeli fizičko značenje izraza (4.2) uporedićemo konstrukcije sabirača sa ubrzanim i sabirača sa rednim prenosom. U tom cilju, analizaćemo detaljnu strukturu dva stepena najmanje težine oba sabirača.

Sl. 4-51 prikazuje prva dva stepena sabirača sa rednim prenosom kod koga su funkcije izlaznog prenosa realizovane shodno izrazu (4.1). Mala brzina rada sabirača sa rednim prenosom posledica je dugačke putanje duž koje se prostire signal prenosa. Kao što je posebno naznačeno na Sl. 4-51, kritični put polazi od ulaza x0 i y0 i proteže se do izlaza c2, prolazeći kroz 5 gejta: 3 gejta u stepenu 0 i 2 u stepenu 1. Za sabirač sa n stepena, kritični put se nastavlja dalje sve do izlaza cn, prolazeći kroz svaki sledeći stepen na isti način kao kroz stepen 1. Dakle, kašnjenje kritičnog puta sabirača sa rednim prenosom iznosi 2n+1.

177

Sl. 4-51 Detaljna struktura sabirača sa rednim prenosom.

Na Sl. 4-52 je prikazana detaljna struktura prva dva stepena sabirača sa ubrzanim prenosom. Sada su funkcije izlaznog prenosa realizovane shodno izrazu (4.2), tj.:

c1 = g0 + p0c0 c2 = g1 + p1g0 + p1p0c0

Kao što se može uočiti sa Sl. 4-52, u svakom stepenu sabirača sa rednim prenosom generišu se funkcije generisanog i propagiranog prenosa. Lokalno, ove funkcije se koriste, zajedno sa funkcijama g i p svih prethodnih stepena, za generisanje izlaznog prenosa tog stepene, ali i prosleđuju dalje ka svim narednim stepenima gde se koriste za određivanje njihovih izlaznih prenosa. Kritični put za određivanje izlaznog prenosa c2 naznačen je na Sl. 4-52. U ovom kolu, c2 se određuje jednako brzo kao i c1, tj. nakon vremena koje je jednako kašnjenju kroz tri gejta, tj. 3tg. Čak iako ovu strukturu proširimo na n bita, konačni izlazni prenos cn generisaće se sa kašnjenjem od 3tg. Naravno, što je i veće, tj. kako se krećemo ka pozicijama veće težine, to izrazi za funkcije ci+1 postaju sve složeniji, što zahteva sve veći broj gejetova za njihovu realizaciju. Međutim, bez obzira na složenost, broj nivoa logike za izračunavanje ci+1 ostaje isti, tj. tri.

Ukupno kašnjenje n-to bitnog sabirača sa ubrzanim prenosom isnosi 4tg. Vrednosti svih funkcija gi i pi određuju se nakon vremena tg. Dodatno kašnjenje od 2tg potrebno je za određivanje svih signala prenosa. Konačno, treba sačekati još dodatno vreme tg da bi se na izlazima svih XOR kola generisali bitovi sume.

Sl. 4-52 Prva dva stepena sabirača sa ubrzanim prenosom.

178

Izraz (4.2) se može realizovati pomoću brze, tri-nivolske AND-OR mreže. Međutim, za veliko i broj ulaza u pojedine gejtove, koji su potrebni za realizaciju ove funkcije, postaje isuviše veliki. Kao što je poznato iz poglavlja X, kod većine implementacionih tehnologija broj ulaza u gejtove, tj. fan-in faktor, ograničen je na relativno mali broj. Zato je neophodno prilikom projektovanja sabirača sa ubrzanim prenosom uzeti u obzir i ovu činjenicu. Da bi smo bliže ukazali na ovaj problem, razmotrimo izraze za prvih osam izlaznih prenosa:

c1 = g0 + p0c0 c2 = g1 + p1g0 + p1p0c0

... c8 = g7 + p7g6 + p7p6g5 + p7p6p5g4 + p7p6p5p4g3 + p7p6p5p4p3g2 + p7p6p5p4p3p2g1 + p7p6p5p4p3p2p1g0 + p7p6p5p4p3p2p1p0c0

Pretpostavimo da je fan-in raspoloživih gejtova ograničen na četiri ulaza. Očigledno, pomoću takvih gejtova nije moguće realizovati sve prethodne izraze u obliku tri-nivolske AND-OR mreže. Nejveći problem je c8, gde se čak zahteva jedno AND kolo sa 9 ulaza. Takođi, i za sumiranje produktnih članova potrebno je OR kolo sa 9 ulaza. Potreba za logičkim kolima sa velikim brojem ulaza potiče od produktnih i zbirnih članova sa velikim brojem literala. Međutim, pravilnom faktorizacijom, moguće je smanjiti maksimalnu veličinu članova u logičkom izrazu. Jedno moguće rešenje je sledeće:

c8 = (g7 + p7g6 + p7p6g5 + p7p6p5g4)+ [(p7p6p5p4)(g3 + p3g2 + p3p2g1 +p3p2p1g0)] + (p7p6p5p4)(p3p2p1p0)c0

Za realizaciju ovog izraza potrebna su 11 AND i tri OR gejta. Međutim, sada propagaciono kašnjenje iznosi ne više 3tg već 5tg: jedno tg za određivanje gi i pi; 2tg za sumiranje produktnih članova u zagradama; jedno tg za produktni član u velikim zagradama i još jedno tg za konačno sumiranje. Dakle, ograničenje u pogledu maksimalnog broja ulaza u gejtove manifestuje se u povećanju broja nivoa AND-OR mreže, što neminovno povećava propagaciono kašnjenje. Ovaj zaključak nije ograničen samo na konkretno kolo, već veži generalno za bilo koju logičku mrežu.

Hijerarhijski sabirač sa ubrzanim prenosom

Projektovanje digitalnih sistema po pravilu zahteva nalaženje optimalnog kompromisa između brzine rada sistema i njegove cene (složenosti). Težnja da se što više poveća brzina rada, obično ima za posledicu povećanje cene sistema. Isto tako, složenost sistema obično nije moguće smanjiti, a da to nema za posledicu smanjenje brzine rada. U kontekstu binarnog sabirača, struktura sa rednim prenosom predstavlja najjednostavnije, ali u isto vreme i najsporije rešenje. Sa druge strane, sabirač sa ubrzanim prenosom predstavlja najbrže rešenje, ali zato za neke primene, njegova složenost može biti isuviše velika. Međutim, mogu postojati primene kada ni jedna od ove dve varijante sabirača ne zadovoljava postavljene zahteve – sabirač sa rednim prenosom može biti previše spor, a sabirač sa ubrzanim prenosom previše složen. Zato je bitno raspolagati nekom fleksibilnom sabiračkom strukturom koja će omogućiti lako nalaženje kompromisa između složenosti i brzine rada. Jedna takva struktura je hijerarhijski sabirač sa ubrzanim prenosom.

Pretpostavimo da želimo da projektujemo 32-sabirač. Sabirač možemo podeliti na četiri 8-bitna bloka, tako da bitovi b0-7 pripadaju bloku 0, bitovi b8-15 bloku 1, bitovi b16-23 bloku 2 i bitovi b24-32 bloku 3. Svaki blok možemo realizovati kao 8-bitni sabirač sa ubrzanim prenosom. Signali izlaznog prenosa iz ovih blokova su c8, c16, c24 i c32. Postoje dva načina kako 8-bitne blokove možemo povezati u jedinstveni 32-bitni sabirač. Jedno rešenje je da blokove povežemo na isti način kao što bi smo povezali četiri stepena sabirača sa rednim prenosom (Sl. 4-53). Znači, kod ovog rešenja unutar blokova koristimo tehniku ubrzanog prenosa, dok se između blokva prenos prenosi redno.

Sl. 4-53 Hijerarhijski CLA sabirač sa rednim prenosom između blokova.

Brže kolo se može realizovati ako se i za generisanje prenosa između blokova, umesto rednog prenosa, koristi tehnika ubrzanog prenosa. Na Sl. 4-66 je prikazana struktura hijerarhijskog sabirača sa ubrzanim prenosom kod koga je iskorišćena ova tehnika. Svaki blok na gornjem delu Sl. 4-66 predstavlja jedan 8-bitni sabirač sa ubrzanim prenosom. Unutar bloka, u svakom njegovom unutrašnjem stepenu generišu se signali generisanog i

179

propagiranog prenosa, gi i pi. Međutim, umesto da svaki blok generiše signal izlaznog prenosa iz svoje pozicije naveće težine, kao u rešenju sa Sl. 4-53, sada svaki blok generiše signale generisanog i propagiranog prenosa za celokupan blok. Neka su ovi signali označeni sa Gj i Pj. Signali Gj i Pj se koriste kao ulazi u kola za ubrzanje prenosa drugog nivoa, prikazana u doljem delu Sl. 4-66, koja određuju prenose između blokova. Izraze za funkcije Gj i Pj možemo odrediti na osnovu poznatog izraza za c8:

c8 = g7 + p7g6 + p7p6g5 + p7p6p5g4 + p7p6p5p4g3 + p7p6p5p4p3g2 + p7p6p5p4p3p2g1 + p7p6p5p4p3p2p1g0 + p7p6p5p4p3p2p1p0c0

Poslednji član u ovom izrazu kazuje da ako su sve interne funkcije propagiranog prenosa, pi, i=1,..,7, jednake 1, tada se signal ulaznog prenosa, c0, prenosi kroz celokupan blok. Dakle,

P0 = p7p6p5p4p3p2p1p0

Preostali članovi u izrazu za c8 ukazuju na sve ostale slučajeve kada blok generiše izlazni prenos. Dakle,

G0 = g7 + p7g6 + p7p6g5 + ... + p7p6p5p4p3p2g1 + p7p6p5p4p3p2p1g0

Konačno, izraz za c8 hijerarhijskog sabirača oblika je:

c8 = G0 + P0c0

Za blok 1, izrazi za G1 i P1 imaju istu formu, osim što indeks i treba zameniti indeksom i+8. Izrazi za G2, P2, G3 i P3, određuju se na isti način. Ako znamo funkcije generisanog i propagiranog prenosa na nivou blokova, tada možemo odrediti i izraze za ulazne prenose u svaki pojedinačni blok:

c16 = G1 + P1c8 = G1 + P1G0 +P1P0 c0

Slično, izrazi za c24 i c32 su oblika:

c24 = G2 + P2G1 +P2P1G0 + P2P1P0c0 c32 = G3 + P3G2 +P3P2G1 + P3P2P1G0 + P3P2P1P0c0

Izračunavanje signala prenosa c8, c16, c24 i c32 na osnovu poznatih vrednosti Gj i Pj unosi dva dodatna nivoa logike. Znači, pod pretpostavkom da je fan-in ograničen na 4 ulaza, vreme potrebno da se obavi sabiranje dva 32-bitna broja iznosi: 5tg za određivanje Gj i Pj (na osnovu prethodno sprovedene analize za c8), plus 3tg za ubrzanje prenosa na drugom nivou (zato što dva gejta u izrazu za c32 zahtevaju 5 ulaza i zbog toga moraju biti faktorizovani), plus jedno tg (XOR) za određivanje bitova sume, što u zbiru daje 9tg. Tačnije, konačna suma se generiše posle 8tg zato što c32 ne utiče na bitove sume. Međutim, c32 se koristi za detekciju aritmetičkog prekoračenja (Prekoračenje = c32 ⊗ c31). Dakle, trajanje operacije sabiranja, uključujući detekciju prekoračenja, ekvivalentno je kašnjenju kroz 9 gejtova.

Sl. 4-54 Hijerarhijski sabirač sa ubrzanim prenosom.

Ranije smo utvrdili da sabiranje dva n-to bitna broja pomoću sabirača sa rednim prenosom traje (2n+1)tg, što za n=32 iznosi 65tg. Očigledno, isti zadatak sabirač sa ubrzanim prenosom obavi za oko 7 puta brže. Ovo značajno poboljšanje performansi ostvareno je na račun značajno veće složenosti sabirača sa ubrzanim prenosom.

180

Sabirači sa izborom prenosa

Na Sl. 4-55(a) je prikazan n-bitni sabirač formiran serijskim povezivanjem dva manja sabirača. Sabirač SL obavlja sabiranje na nižim pozicijama (k-1, ..., 0), a SH na višim pozicijama (n-1, ..., k). Ukupno kašnjenje n-bitnog sabirača iznosi tp=tL + tH, gde je tL kašnjenje kroz sabirač SL, a tH kašnjenje kroz sabirač SH. Iako se sabirci istovremeno dovode na oba manja sabirača, sabirač SH nije u mogućnosti da odredi korektan zbir sve dok od sabirača SL ne dobije informaciju od vrednosti prenosa ck. Međutim, uočimo da iako nepoznate vrednosti, ck može biti samo 0 ili 1. Odnosno, zbir koji daje SH može biti

Xn-1, ..., k + Yn-1, ..., k (za ck=0) ili

Xn-1, ..., k + Yn-1, ..., k + 1 (za ck=1).

Ovo zapažanje nas dovodi do osnovne ideje sabirača sa izabranim prenosom (ili CSA – Carry Select Adder). (Sl. 4-55(b)). Umesto jednog koriste se dva sabirača za više pozicije, SH0 i SH1, koji rade paralelno nad istim operandima, s tim da SH0 kao ulazni prenos ima konstantu 0, a SH1 konstantu 1. Na taj način, SH0 generiše Xn-1,

..., k + Yn-1, ..., k, a SH1 Xn-1, ..., k + Yn-1, ..., k + 1. Onog momenta kada tačna vrednost ulaznog prenosa ck postane poznata, kroz multiplekser se na izlaz propušta jedan od dva alternativna rezultata.

SH SLck

Xn-1...k Yn-1...k Xk-1...0 Yk-1...0

Sn-1...k Sk-1...0

SH1 SH0 SL

Xn-1...k Yn-1...k Xn-1...k Yn-1...k Xk-1...0 Yk-1...0

MUX

01

01S

Sn-1...k Sk-1...0

ck

(a) (b)

Sl. 4-55 (a) redna sprega sabirača (b) sabirač sa izborom prenosa.

Zanemarujući kašnjenje kroz multiplekser, kašnjenje n-bitnog sabirača je smanjeno na tp=max{tL,tH}. Veća brzina rada postignuta je zahvaljujući obimnijem hardveru.

4.2.3 Logička jedinica Uopšteno govoreći, logička jedinica nam omogućava da obavimo jednu od nekoliko logičkih funkcija nad dva proizvoljna n-bitna operanda X=xn-1 … x0 i Y=yn-1 … y0. Binarne logičke operacije se primenjuju na više-bitne operande tako što se logička operacije primeni na svaki par odgovarajućih bitova dva operanda. Na primer, logička AND operacije primenjena na dva 4-bitna operanda 1010 i 1100, daje 4-bitni rezultat 1000. Drugim rečima, uvek kada je izabrana funkcija fi, logička jedinica će izračunati rezultat:

S = fi(X,Y)=fi(xn-1,yn-1) … fi(x0,y0)

S obzirom da logička jedinica, koja je sposobna da izračuna svih 16 Bulovih funkcija koje koriste dva operanda, i nije tako složena, iskoristićemo takvu jednu jedinicu kako bi smo demonstrirali opštu proceduru za projektovanje bilo koje logičke jedinice.

Na Sl. 4-56(a) prikazano je svih 16 Bulovih funkcija koje koriste dve promenljive. Pošto je broj funkcija 16, za izbor jedne od njih, potrebne su četiri binarne promenljive, S3, S2, S1 i S0. Kodiranje selekcionih ulaza je takvo da je Si=1, 0≤i≤3, ako i samo ako je minterm mi u izabranoj funkcije jednak mi=1. Na primer, OR funkcija, izražena kao logička suma minterma ima oblik f14=m3+m2+m1, što znači da je njen kod S3S2S1S0=1110. Uočimo da selekcione promenljive interpretirane kao binarni broj imaju vrednost jednaku indeksu izabrane funkcije. Drugim rečima, za funkciju f14 vrednost S3S2S1S0 je jednaka 1110 što odgovara binarnoj reprezentaciji broja 14.

Pošto svaka selekciona promenjiva kontroliše jedan minterm, logička funkcija koja odgovara logičkoj jedinici za jednu bitsku poziciju je oblika:

si = S0m0+S1m1+S2m2+S3m3 = S0xi’yi’+S1xi’yi+S2xiyi’+S3xiyi

Struktura logičke jedinice za jednu bitsku poziciju prikazan je na Sl. 4-56(b), dok je na Sl. 4-56(c) prikazan grafički simbol n-bitne logičke jedinice. U opštem slučaju, bilo koja n-bitna logička jedinica imaće n identičnih

181

segmenata, koji konkurentno obavljaju istu funkciju nad parovima odgovarajućih bitova dva n-bitna operanda. Na Sl. 4-56(d) prikazan je primer 8-bitne logičke jedinice.

Sl. 4-56 Logička jedinica: (a) funkcije od dve promenljive; (b) realizacije logičke jedinice; (c) grafički simbol; (d) 8-

bitna logička jedinica.

4.2.4 Aritmetičko-logička jedinica Aritmetičko-logička jedinica (ili ALU prema engleskom nazivu Arithmetic and Logic Unit) je više-funkcijsko, kombinaciono kolo koje može da obavi bilo koju od više različitih aritmetičkih i logičkih operacija nad parom b-bitnih operanada. Pri tome, jedna od raspoloživih operacija bira se preko skupa selekcionih ulaza. Broj i složenost operacija podržanih od strane ALU modula su pitanje izbora projektanta i mogu značajno da variraju od ALU do ALU modula. Tipične aritmetičke operacije, koje se sreću kod većine ALU modula, obično su zasnovane na sabiranju, kao na primer, sabiranje, oduzimanje, inkrementriranje i dekrementiranje. Inkrementiranje je operacija sabiranja sa 1, a dekrementiranje oduzimanja za 1. Međutim, postoje i ALU moduli koji su u stanju da obavljaju i složenje aritmetičke operacije, kao što su množenje, deljenje, stepenovanje, pomeranje, poređenje i dr. Tipične logičke operacije su AND, OR, komplement, XOR.

Postoje dva glavna razloga za projektovanje ALU jedinica u obliku standardnih modula. Prvo, dostupnost univerzalnih aritmetičkih modula omogućava da se isti modul koristi u mnogim različitim primenama, čime se smanjuje broj različitih modula koji se koriste u projektovanju. Drugo, ALU moduli se mogu efikasno koristiti u sistemima, kao što je procesor, kod kojih operacija koju treba obaviti u datom trenutku bira dinamički, od strane upravljačke jedinice procesora.

U ovom odeljku biće izložen postupak projektovanje jedne konkretne 4-bitne ALU jedinice. S obzirom da su aritmetičke operacija zasnovane na sabiranju, ALU se može projektovati tako što će se modifikovati ulazi binarnog sabirača. Logika koja obavlja ovu modifikciju, a tiče se aritmetičkih operacija, zove se aritmetički ekspander (AE), dok se ona koja se koristi za logičke operacije zove logički ekspander (LE). Ekspanderi su povezani su na ulaz sabirača, na način kako je to prikazano na Sl. 4-57. U nastavku će biti izložena procedura projektovanja ekspandera AE i LE na primeru ALU jedinice koja obavlja četiri aritmetičke i četiri logičke operacije.

182

AE

x3 y3

FA

f3 f2

c3

f1 f0

LE

a3 b3

x2 y2

FAc2

a2 b2

x1 y1

FAc1

a1 b1

x0 y0

FA c0

a0 b0

c4

AELE AELE AELE

Sl. 4-57 4-bitni sabirač u spoju sa aritmetičkim (AE) i logičkim (LE) ekspanderima.

Najpre, neophodan je ulaz za izbor režima rada, M, koji će birati aritmetičke ili logičke operacije, tako da pri M=1, ALU obavlja aritmetičke, a pri M=0 logičke operacije. Takođe, potrebne su dve promenljive za izbor operacije, S1 i S0, koje će, u zavisnosti od vrednosti ulaza M, birati jednu od četiri aritmetičkih ili četiri logičkih operacija, na način kako je to definisano funcijskom tabelom sa Sl. 4-58(a), za aritmetičke, i tabelom sa Sl. 4-59(a), za logičke operacije.

M S1 S0 bi yi 1 0 0 0 1 1 0 0 1 1 1 0 1 0 0 1 0 1 1 1

M S1 S0 Ime funkcije F X Y c0 1 1 0 0 1 1 0 0 Dekrement A-1 A sve jedinice 0 1 1 0 1 0 1 0 1 Sabiranje A+B A B 0 1 1 1 0 0 1 1 0 Oduzimanje A+B'+1 A B' 1 1 1 1 1 0 1 1 1 Inkrement A+1 A sve nule 1 0 X X X 0

(a) (b)

(c) (d)

Sl. 4-58 Aritmetički ekspander: (a) funkcionalna tabela; (b) tabela istinitosti; (c) Karnoova mapa; (d) struktura.

U funkcionalnnoj tabeli sa Sl. 4-58(a), za svaku aritmetičku operaciju, navedene su vrednost izlaza ALU jedinice, F, kao i vrednosti ulaza sabirača, X i Y, i ulaznog prenosa c0 koje su neophodne da bi se dobila odgovarajuća vrednost F. Shodno ovoj tabeli, na ulaz X sabirača uvek se dovodi operand A, dok su na ulazu Y u zavisnosti od izabrane operacije prisutne: sve jedinice, operand B, komplement operanda B, ili sve nule. Vrednosti ulaza Y se generišu uz pomoć AE ekspandera, čija je tabela istinitosti prikazan na Sl. 4-58(b). Ova tabela je dobijena na osnovu funkcionalne tabele sa Sl. 4-58(a) tako što je kolona Y zamenjena kolonama bi i yi. Na Sl. 4-58(c) prikazana je Karnoova mapa AE ekspandera, na osnovu koje sledi izlaz: yi=MS1

’bi+MS0’bi

'. Konačno, struktura AE ekspandera prikazana je na Sl. 4-58(a).

Projektovanje logičkog ekspandera, takođe, započinje funkcionalnom tabelom koja definiše logičke operacije, a koja je prikazana na Sl. 4-59(a). Kao što se može zaključiti analizom ove tabele, za bilo koju logičku operaciju, ulazi Y i c0 sabirača su uvek postavljeni na vrednost 0, dok se na ulaz X postavlja rezultat logičke jednačine koja

183

odgovara izabranoj logičkoj operaciji. Na osnovu funkcionalne tabele sa Sl. 4-59(a), u mogućnosti smo da formiramo tabelu istinitosti logičkog ekspandera, koja je prikazana na Sl. 4-59(b). Na osnovu odgovarajuće Karnoove mape Sl. 4-59(c), sledi logički izraz za jednu bitsku poziciju logičkog ekspandera:

xi=M’S1’S0’ai` +M’S1S0bi+S0aibi+S1ai+Mai

Kombinaciona mreža logičkog ekspandera koja sledi na osnovu dobijenog izraza prikazana je na Sl. 4-59(d).

M S1 S0 Ime funkcije F X Y c0 M S1 S0 xi 0 0 0 Komplement A' A' 0 0 0 0 0 a i' 0 0 1 AND A AND B A AND B 0 0 0 0 1 a ibi 0 1 0 Identitet A A 0 0 0 1 0 a i 0 1 1 OR A OR B A OR B 0 0 0 1 1 a i+bi 1 X X ai

(a) (b)

(c) (d)

Sl. 4-59 Logički ekspander: (a) funkcionalna tabela; (b) tabela istinitosti; (c) Karnoova mapa; (d) struktura.

Nakon obavljenog projektovanja aritmetičkog i logičkog ekspandera, ALU jedinica formira se povezivanjem AE i LE ekspandera sa binarnim sabiračem, na način kao što je prikazano na Sl. 4-60(a). Uočimo da se kod ALU jedinice, logičke operacije obavljaju u logičkim ekspanderima, a da potpuni sabirači (FA) propuštaju na izlaz F rezultat LE ekspandera bez ikakve promene. Drugim rečima, prilikom obavljanja logičkih operacija potpuni sabirači se koriste kao veze sa fiksnim propagacionim kašnjenjem.

Uočimo, takođe, da prlikom izvršenja aritmetičkih operacija nad neoznečenim brojnim vrednostima, signal izlaznog prenosa iz pozicije najveće težine ukazuje na prekoračenje. Za slučaj aritmetičkih operacija nad označenim brojevima (predstavljenim u obliku dvojičnog komplementa), uslov prekoračenja je drugačiji i formira se kao XOR operacija izlaznih prenosa iz dve bitske pozicije najveće težine. Ako je neophodno, 4-bitna ALU jedinica sa slikaa se može proširiti na n-bitnu ALU jedinicu, korišćenjem n-bitnog sabirača u spoju sa n aritmetičkih i n logičkih ekspandera. Grafički simbol ovakve ALU jedinice prikazan je na Sl. 4-60(b). Većina ALU jedinica, koje se koriste u praksi, konstruišu se na opisani način, osim što se razlikuju po tipu i broju aritmetičkih i logičkih operacija koje podržavaju.

184

(a)

(b)

Sl. 4-60 ALU modul: (a) 4-bitna ALU; (b) grafički simbol.

4.2.5 Množači (*)

4.2.6 Specifični formati za predstavljanje brojeva U prethodnim odeljcima bavili smo se isključivo celim binarnim brojevima predstavljenim u pozicionom brojnom sistemu. Međutim, kod digitalnih sistema u upotrebi su i neki drugi, specifični formati za predstavljanje brojeva. U ovom odeljku ukratko ćemo se upoznati sa tri takva formata: brojevi u fiksnom zarezu, brojevi u pokretnom zarezu i binarno-kodirani decimalni brojevi.

Brojevi u fiksnom zarezu

Kod nekih aplikacija, zahteva se manipulacija brojevima koji nisu celobrojnog tipa. Jedno rešenje je korišćenje brojeva u fiksnom zarezu. Broj u fiksnim zarezom, se sastoji iz celog i razlomljenog dela. Ovakav broj se zapisuje u pozicionom brojnom sistemu na sledeći način:

B = bn-1bn-2...b1b0 . b-1b-2...b-k

Pozicije levo od tačke, definišu ceo, a desno od tačke razlomljni deo broja. Težine pozicija u razlomljenom delu su negativni stepeni osnove brojnog sistema. U binarnom brojnom sistemu, vrednost broja B iznosi:

∑−

−=

×=1

2)(n

ki

iibBV

Prevođenje razlomljenog binarnog broja u decimalni ekvivalent je trivijalno i obavlja se primenom prethodne jednačine, pri čemu se sve operacije obavljaju u decimalnom brojnom sistemu. Na primer, decimalni ekvivalent broja (1101.101)2 iznosi:

(1101.101)2 = (1×23 + 1×22 + 0×21 + 1×20 + 1×2-1 + 0×2-2 + 1×2-3)10 = (8 + 4 + 1 + 1/2 + 1/8)10 = (13 + 0.5 + 0.125)10 = (13.562)10

185

Prevođenje decimilanog broja sa tačkom u binarni broj obuhvata nezavnisno prevođenje celog i razlomljenog dela. Celi deo se prevodi na poznati način, tj. uzastopnim deljenjem sa 2 i izdvajanjem ostatka. Slično, razlomljeni deo se prevodi u binarni ekvivalent uzastopnim množenjem sa 2 i izdvajanjem celobrojnog dela iz dobijenog proizvoda. Neka razlomljeni decimalni broj D=0.d-1d-2 ... d-m, vrednosti V, treba konvertovati u binarni broj B=0.b-1b-2 ... b-k. Znači, treba odrediti bitove b-1, b-2, ..., b-k, tako da važi:

V = b-1×2-1 + b-2×2-2 + ... + b-k×2-k

Ako V pomnožimo sa 2, dobićemo:

2×V= b-1×20 + b-2×2-1 ... + b-k×2-(k-1)

Celobrojni deo ovog množenja je b-1, a razlomljeni b-2×21 ... + b-k×2-(k-1), tj. 0.b-2b-3...b-k. Znači, ako množenjem polaznog decimalnog broja dobijemo kao celobrojni deo 0, važi b-1=0, a ako dobijemo 1, važi b-1=1. Množenjem dobijenog razlomljenog broja sa 2, kao celobrojni deo dobićemo b-2, a novi razlomljeni broj biće je: 0.b-3b-4...b-k. Ako nastavimo da množimo novi razlomljeni broj sa 2 i određujemo po jedan bit u svakom koraku, dobićemo sve bitove binarnog broja. Ovaj postupak se nastavlja sve dok razlomljeni broj ne postane jednak 0.

Pr. 4-8 Odrediti binarni ekvivalent decimalnog broja 14.703125.

Celobrojni deo zadatog decimalnog broja je (14)10, a razlomljeni (0.703125)10. Na poznati način nalazimo binarni ekvivalent celog dela:

(14)10 = (1110)2

Da bi smo našli binarni broj koji odgovara razlomljenom delu, primenjujemo prethodno opisanu proceduru konverzije:

0.703125 × 2 = 1.40625 ⇒ b-1=1 0.40625 × 2 = 0.8125 ⇒ b-2=0 0.8125 × 2 = 1.625 ⇒ b-3=1 0.625 × 2 = 1.25 ⇒ b-4=1 0.25 × 2 = 0.5 ⇒ b-5=0 0.5 × 2 = 1.0 ⇒ b-6=1

Dakle, (14.703125)10 = (1110.101101)2

Kao što znamo iz elementrane matematike, racionalan broj je onaj koji iza tačke ima konačan broj cifara. Broj sa beskonačnim brojem cifara iza tačke je iracionalan. Prevođenjem racionalnog binarnog broja u decimalni brojni sistem uvek se dobija racionalni decimalni broj. Međutim, prilikom obrunute konverzije, neki brojevi koji su u decimalnom sistemu racionalni u binarnom sistemu postaju iracionalni.

Pr. 4-9 Odrediti binarni ekvivalent decimalnog broja 0.55.

0.55 × 2 = 1.1 ⇒ b-1=1 0.1 × 2 = 0.2 ⇒ b-2=0 0.2 × 2 = 0.4 ⇒ b-3=0

0.4 × 2 = 0.8 ⇒ b-4=0 0.8 × 2 = 1.6 ⇒ b-5=1 0.6 × 2 = 1.2 ⇒ b-6=1 0.2 × 2 = 0.4 ⇒ b-7=0 0.4 × 2 = 0.8 ⇒ b-8=0

... Proces konverzije možemo nastaviti u nedgled, ali uslov kraja (razlomljeni deo jednak nuli), nikada neće biti ispunjen. Pažljivim analizom procesa konverzije možemo uočiti da će se u nastavku konverzije neprekidno ponavljati sekvenca razlomnjenih brojeva 0.2, 0.4, 0.8, 0.6. Dakle, (0.55)10 = (0.10<0011>)2, gde uglaste zagrade obuhvataju binarnu sekvencu koja se neprekidno ponavlja, do u beskonačnost.

Pošto digitalni sistemi mogu baratati samo brojevima ograničene dužine, konverzija mora biti prekinuta kada se prekorači raspoloživi broj bitova, što naravno unosi grešku. Na primer, ako je u primeru Pr. 4-9 broj bitova za predstavljanje razlomljenog dela ograničen na osam, decimalni broj 0.55 u digitalnom sistemu koji radi sa brojevima u fiksnom zarezu, će biti predstavljen sa: (0.10001100)2, što ustvari odgovara decimalnom broju (0.546875)10.

Digitalna kola koja barataju brojevima u fiksnom zarezu su u suštini ista kao i ona koja se koriste za celobrojne binarne brojeve, pa ih iz tog razloga nećem posebno razmatrati.

186

Brojevi u pokretnom zarezu

Opseg brojeva u fiksnom zarezu ograničen je brojem značajnih cifara koje se koriste za predstavljanje broja. Na primer, ako za predstavljanje celih decimalnih brojeva koristimo 8 cifara i znak, opseg vrednosti koje se mogu predstaviti je 0 do ±999999999. Ako osam cifara koristimo za predstavljanje razlomljenog dela, tada je opseg, obuhvaćen ovakvom reprezentacijom, od 0.0000001 do ±0.99999999. Međutim, kod mnogih tehničkih i naučnih primena, često je neophodno baratati brojevima koji su ili veoma veliki ili veoma mali. Umesto da koristimo reprezentaciju u fiksnom zarezu sa velikim brojem značajnih cifara, bolje rešenje je koristiti reprezentaciju u pokretnom zarezu. Broj u pokretnom zarezu je predstavljen manitsom (M), koja sadrži značajne cifre, i eksponentom (M) osnove R. Format ovog zapisa je sledeći:

M×RE (5.6)

Brojevi se obično normalizuju, tako da je tačka u mantisi uvek postavljena desno od prve nenulte cifre, kao na primer, 5.341 ×1042 ili 3.982×10-31. Dakle, broj u formatu pokretnog zareza se predstavlja parom (matnisa, eksponent), a pri tome se vrednost broja izračunava shodno izrazu (5.6).

Binarna reprezentacija brojeva u formatu pokretnog zareza standardizovana je od strane organizacije IEEE. Ovaj standard definiše dva formata: obična (ili jednostruka) preciznost i dvostruka preciznost. Na Sl. 4-61 su prikazani oblici oba formata.

(a) (b)

Sl. 4-61 IEEE formati brojeva u pokretnom zarezu: (a) jednostruka preciznost; (b) dvostruka preciznost.

Jednostruka preciznost

Format jednostruke preciznosti prikazan je na Sl. 4-61(a). Krajnji levi bit je bit znaka; 0 ukazuje na pozitivan, a 1 na negativan broj. 8-bitno polje E sadrži vrednost eksponenta, a 23-bitno polje M vrednost mantise. Osnova je R=2. Uočimo da se osnova ne zapisuje, već se podrazumeva. Eksponent može biti kako pozitivan tako i negativan. Umesto da se eksponent kodira kao 8-bitni označeni broj, što bi omogućilo predstavljanje vrednosti eksponenta u opsegu -127 do +127, za kodiranje eksponenta, kod IEEE standarda se koristi format “višak-127”. U ovom formatu, sadržaj polja E predstavlja zbir vrednosti stvarnog eksponenta i broja 127, tj. važi:

eksponent = E – 127.

Vrednost 127 se naziva uvećanjem, a E polarizovanim eksponentom. Kodiranje eksponenta u formatu “višak-127” omogućava da se eksponenti mogu lako porediti. S obzirom da je E uvek pozitivan broj, poređenje dva eksponenta se svodi na poređenje dva 8-bitni neoznačena cela brojeva. Dakle, opseg vrednosti polarizovanog eksponenta je 0≤E≤255. Pri tome, krajne vrednosti 0 i 255 imaju posebno značenje. E=0 ukazuju na broj čija je vrednost 0 (“čista nula”); dok E=255 ukazuje na beskonačno veliku vrednost. Izuzimajući ova dva specijalna sučaja, normalni opseg eksponenta brojeva u jednostrukoj preciznosti je -126 do +127, što odgovara opsegu vrednosti u polju E od 1 do 254.

Mantisa se predstavlja sa 23 bita. IEEE standard podrazumera normalizovanu mantisu, što znači da je bit najveće težine mantise uvek jednak 1. Zbog toga, ovaj bit može biti izostavljen iz zapisa mantise. Na taj način se efektivni broj bitava mantise povećava za jedan. Naime, ako je M binarna sekvenca u polju mantise, tada je stvarna vrednost mantise |M| = 1.M, što odgovara 24-bitnoj mantisi. Shodno tome, u formatu sa Sl. 4-61(a) moguće je predstaviti brojeve:

Vrednost = ±1.M×2E-127

Dužina polja mantise od 23 bita omogućava predstavljanje brojeva sa preciznošću koja odgovara preciznosti od oko 7 decimalnih cifara. Opseg eksponenta, 2-126 do 2127, približno odgovara opsegu 10±38.

Dvostruka preciznost

Format za predstavljanje brojeva u pokretnom zarezu dvostruke preciznosti prikazan je na Sl. 4-61(b). Kao što se može videti, format dvostuke preciznosti koristi 64 bita, a u odnosu na jednostruku tačnost prošireni su i eksponent i mantisa. Time je pokriven daleko veći opseg i ostvarena veća preciznost brojeva. Polje za eksponent ima 11 bita i sadrži vrednost eksponenta izraženu u formatu “višak-1023”, tako da važi:

eksponent = E – 1023

187

Opseg polarizovanog eksponent je 0≤E≤2047, pri čemu se, slično kao i kod jednostruke tačnosti, E=0 i E=2047 koriste za predstavljanje vrednosti nula i beskonačno, respektivno. Time je opseg eksponenta ograničen na od 1-1023 = -1022 do 2046 – 1023 = 1023.

Mantisa ima 52 bita. Pošto se podrazumeva normalizovana mantisa, sadržaj ovog polja ukazuje na mantisu oblika 1.M. Dakle, vrednost broja u pokretnom zarezu koje je predstavljen u formatu dvostruke tačnosti iznosi:

Vrednost = ±1.M×2E-1023

Format dvostruke preciznosti omogućava predstavljanje brojeva koji imaju preciznost od oko 16 decimalnih cifara i opseg od oko 10±308.

Sabiranje/oduzimanje brojeva u pokretnom zarezu

Mogu se sabirati/oduzimati samo brojevi u pokretnom zarezu koji imaju isti eksponent. Ako se eksponenti razlikuju, njihova razlika se kompenzuje pomeranjem mantisa. Na primer, neka je potrebno sabrati brojeve 9.95×101 i 5×10-1. Najpre je potrebno izjednačiti eksponente. To se može uraditi tako što će se manji od dva broja, 5×10-1, napisati u obliku 0.05×101, odnosno tako što će se mantisa ovog broja pomeriti za dve pozicije udesno, a eksponent sabrati sa 2. Nakon sabiranja mantisa dobijamo rezultat 10 ×101. Konačno, rezultat se normalizuje na oblik 1×102.

U opštem slučaju važi sledeće. Neka su X1=(M1, E1) i X2=(M2, E2) dva broja u pokertnom zarezu, gde su Mi=Si|Mi| vrednosti mantisa, a Xi=(-1)Si |Mi|REi-uvećanje vrednosti brojeva Xi, i=1,2 i neka je: X=X1±X2 = (M, E). Tada:

E = max{E1, E2},

≤±×>×±=

−−

−−

2121

2121

,,

12

21

EEjeakoMRMEEjeakoRMMM EE

EE

Postupak sabiranja/oduzimanja brojeva u pokretnom zarezu čine sledeća tri koraka:

1. Operandi se svode na jednake eksponente tako što se manji od dva operanda pomera udesno. Broj pozicija za pomeranje jednak je razlici dva eksponenta. Veći eksponent je ujedno i eksponent rezultata.

2. Sabiranje/oduzimanje mantisa (po pravilu za sabiranje/oduzimanje celih brojeva u formatu znak i apsolutna vrednost).

3. Ako je neophodno, mantisa rezultata se normalizuje uz odgovarajuću korekciju eksponenta.

Pr. 4-10 Sabiranje/oduzimanje brojeva u pokretnom zarezu

Neka je R=2 i X1=(M1, E1) = (1001, 10), X2=(M2, E2) = (1100, 00). Odrediti X = X1 - X2.

X = (1001, 10) - (1100, 00)

1. X = (1001, 10) - (0011, 10)

2. X = (0110, 10)

3. X = (1100, 01)

Opisani postupak sabiranja/oduzimanja brojeva u pokretnom zarezu može se predstaviti dijagramom sa Sl. 4-62, koji ukazuje na hardversku strukturu odgovarajućeg digitalnog kola.

188

Sl. 4-62 Sabiranje/oduzimanje brojeva u pokretnom zarezu.

Množenje brojeva u pokretnom zarezu

Množenje brojeva predstavljenih u pokretnom zarezu se obavlja tako što se njihove mantise pomnože, a eksponenti saberu. U opštem slučaju važi sledeće. Neka su X1=(M1, E1) i X2=(M2, E2) dva broja u pokertnom zarezu, gde su Mi=Si|Mi| vrednosti mantisa, a Xi=(-1)Si |Mi|REi-uvećanje vrednosti brojeva Xi, i=1,2 i neka je: X=X1×X2 = (M, E). Tada:

M = M1 ×M2

E =E1 + E2 - uvecanje

Oduzimanje uvećanja (127 kod IEEE formata) od zbira eksponenta je neophodno zato što su E1 i E2 polarizovani eksponenti, jednaki zbiru vrednosti pravog eksponenta (ei) i uvećanja, pa njihov zbir daje E1 + E2 = e1 + e2 + 2×uvecanje.

Dakle, osnovni koraci postupka za množenje u pokretnom zarezu su:

1. Saberu se eksponenti i od dobijenog zbira oduzme uvećanje.

2. Pomnože se mantise brojeva (po pravilu za množenje celih brojeva u formatu znak i apsolutna vrednost).

3. Dobijeni rezultat se normalizuje sličnim postupkom kao kod sabiranja.

4. Broj (binarnih) cifara proizvodu je dvostruko veći od broja cifara vrednost koje su množene; cifre koje su višak se odbacuju u procesu zaokruživanja.

Pr. 4-11 Množenje brojeva u pokretnom zarezu

Neka je R=2 i X1=(M1, E1) = (1010, 01), X2=(M2, E2) = (1010, 10). Odrediti X = X1 × X2.

S obzirom da se eksponent predstavlja sa 2 bita, vrednost uvećanja je 22-1-1 = 1.

X = (1010 × 1010, (01 + 10 - 1)) = (01100110, 10) = (1100, 01) -- zaokruživanje + normalizacija

Opisani postupak sabiranja/oduzimanja brojeva u pokretnom zarezu može se predstaviti dijagramom sa Sl. 4-63, koji ukazuje na hardversku strukturu odgovarajućeg digitalnog kola.

189

Sl. 4-63 Množenje u pokretnom zarezu.

Deljenje brojeva u pokretnom zarezu

Deljenje brojeva predstavljenih u pokretnom zarezu se obavlja tako što se njihove mantise podele, a eksponenti oduzmu. Neka su X1=(M1, E1) i X2=(M2, E2) dva broja u pokertnom zarezu, gde su Mi=Si|Mi| vrednosti mantisa, a Xi=(-1)Si |Mi|REi-uvećanje vrednosti brojeva Xi, i=1,2 i neka je: X=X1×X2 = (M, E). Tada:

M = M1 / M2

E =E1 - E2 + uvecanje

Dodavanje uvećanja na razliku eksponenata je neophodno jer su E1 i E2 polarizovani eksponenti, pa njihova razlika daje E1 - E2 = e1 + uvećanje - (e2 + uvećanje) = e1 - e2, gde su ei prave vrednosti eksponenata.

Dakle, osnovni koraci postupka za deljenje u pokretnom zarezu su:

1. Oduzmu se vrednosti eksponenata i na dobijenu razliku doda uvećanje.

2. Podele se mantise brojeva (deljenje se vrši prema pravilima za deljenje celih brojeva u formatu znak i apsolutne vrednosti).

3. Dobijeni rezultat se normalizuje sličnim postupkom kao kod sabiranja.

4. Dobijeni količnik se zaokružuje prema pravilima za zaokruživanje.

Pr. 4-12 Deljenje u pokretnom zarezu

Neka je R=2 i X1=(M1, E1) = (1010, 01), X2=(M2, E2) = (1010, 00). Odrediti X = X1 / X2.

S obzirom da se eksponent predstavlja sa 2 bita, vrednost uvećanja je 22-1-1 = 1.

X = (1010 / 1010, (01 - 00 + 1)) = (1 0000, 10)

= (1000, 11) -- zaokruživanje + normalizacija

Opisani postupak sabiranja/oduzimanja brojeva u pokretnom zarezu može se predstaviti dijagramom sa Sl. 4-64, koji ukazuje na hardversku strukturu odgovarajućeg digitalnog kola.

Detekcija vodećih nula

i pomerač

M E

M1 M2 E2E1

potkoracenjeprekoracenje

Oduzimanje eksponenta i deljenje mantisa

Postnormalizacija

Sl. 4-64 Deljenje u pokretnom zarezu.

190

4.3 Sekvencijalne komponente Kombinaciona kola, koja su razmatrana u prethodnoj sekciji, imaju osobinu da vrednost svakog njihovog izlaza zavisi isključivo od vrednosti signala prisutnih na njihovim ulazima. Osim kombinacionih, postoji još jedna široka klasa digitalnih kola, kod kojih vrednosti izlaza zavise ne samo od trenutnih vrednosti ulaza, već i od ranijeg ponašanja kola. Ovakva kola sadrže memorijske elemente koji zadržavaju, pamte odnosno memorišu vrednosti logičkih signala. Kaže se da ukupni sadržaj svih memorijskih elemenata u jednom kolu predstavlja stanje tog kola. Kada se promene vrednosti ulaza, kolo ili ostane u istom (tj. tekućem) stanju, ili promeni svoje stanje. Vremenom, kao posledica promena ulaza, kolo prolazi kroz sekvencu stanja. Kolo koja se ponašaju na ovaj način zovu se sekvencijalna kola.

Sekvencijalna kola mogu biti sinhrona ili asinhrona. Asinhrona sekvencijalna kola menjaju svoje stanje uvek kada se desi promena ulaznih vrednosti, dok sinhrona sekvencijalna kola menjaju svoje stanje i izlazne vrednosti samo u fiksnim vremenskim trenucima, koji su određeni rastućom ili opadajućom ivicom taktnog signala. Lečevi su primer asinhronih kola, a flip-flopovi, registarske komponente i konačni automati sinhronih sekvencijalnih kola.

U ovoj sekciji biće razmatrana sinhrona sekvencijalna kola. Najpre će biti opisani različiti tipovi flip-flopova, a zatim i tipične registarske komponente koje se konstruišu pomoću flip-flopova i kombinacionih struktura.

4.3.1 Flip-flopovi (*) Postoji više tipova flip-flopova koji se razlikuju po funkciji i načinu konstrukcije. Opšte karakteristike svih flip-flopova su sledeće: (a) flip-flop menja stanje sa rastućom ili opadajućom ivicom taktnog signala; (b) ulazi podataka moraju biti stabilni u vremenu tsetup pre i vremenu thold nakon aktivne ivice taktnog signala.

U primeni su četiri osnovna tipa flip-flopova: SR, JK, D i T, koji se razlikuju po broju ulaza i načinu na koji flip-flop reaguje na vrednosti koje su postavljene na njegovim ulazima. Flip-flop se opisuje grafičkim simbolom, tabelom prelaza, prenosnom funkcijom i tabelom pobude. Tabela sa Sl. 4-65 sadrži definicije četiri tipa flip-flopova. Grafički simbol pokazuje broj i tipove ulaza i izlaza. Svi flip-flopovi imaju izlazne signale Q i Q’. Vrednost na izlazu Q (pravi izlaz flip-flopa) ukazuje na tekuće stanje flip-flopa. Na izlazu Q’ je uvek prisutna komplementarna vrednost izlaza Q. Takođe, svi flip-flopovi poseduju ulaz za taktni signal. Trougao na ulazu na takt ukazuje da se flip-flop taktuje rastućom ivicom taktnog signala. Suprotno, kružić na ulazu za takt ukazuje na taktnovanje opadajućom ivicom.

Tip flip-flopa Simbol Tabela prelaza Prenosna funkcija Tabela pobude

SR

S Q

R Q’

S R Q(next)

0 0 Q0 1 01 0 11 1 ND

Q(next) = S + R’Q sa ograničenjem SR=0

Q Q(next) S R

0 0 0 X 0 1 1 0 1 0 0 1 1 1 X 0

JK

J Q

K Q’

J K Q(next)

0 0 Q0 1 01 0 11 1 Q’

Q(next) = JQ + K’Q

Q Q(next) J K

0 0 0 X 0 1 1 X 1 0 X 1 1 1 X 0

D

D Q

Q’

D Q(next)

0 01 1

Q(next) = D

T

T Q

Q’

T Q(next)

0 Q1 Q’

Q(next) = TQ’ + T’Q

Sl. 4-65 Tipovi flip-flopova.

191

Svaki flip-flop ima jedan ili dva ulaza podataka. SR flip-flop ima dva ulaza, S (Set) i R (Reset) koji, kada su aktivni, setuju, odnosno resetuju flip-flop. Drugim rečima, pri S=1 i R=0, izlaz flip-flopa Q se postavlja na 1, a pri S=0 i R=1 na 0. Slično SR flip-flopu, JK flip-flop, takođe, ima dva ulaza, J i K, koji, kada su aktivni, setuju ili resetuju flip-flop. Dodatno, kada su oba ulaza J i K aktivna u isto vreme, JK flip-flop menja (tj. komplementira) svoje stanje. D flip-flop ima jedan ulaz, D (Data), koji setuje flip-flop ako je 1, odnosno resetuje flip-flop ako je 0. T flip-flop ima jedan ulaz T, koji, kada je aktivan, menja (tj. komplementira) stanje flip-flopa.

U drugoj koloni tabele sa Sl. 4-65 date su tabele prelaza, koje predstavljaju skraćenu formu tabele istinitosti. U tabeli prelaza, za svaku kombinaciju ulaznih vrednosti i svako tekuće stanje flip-flopa, tj. stanje pre rastuće ivice taktnog signala, navedeno je sledeće stanje flip-flopa, tj. stanje u koje flip-flop prelazi nakon rastuće ivice taktnog signala. Tekuće stanje flip-flopa označeno je sa Q, a sledeće sa Q(next). Tabela prelaza se koristi prilikom analize sekvencijalnog kola, kada su vrednosni ulaza u flip-flop poznate, a mi želimo da odredimo stanje flip-flopa nakon rastuće ivice taktnog signala. Na bazi tabele prelaza mogu se izvesti prenosne funkcije flip-flopova, koje su prikazane u trećoj koloni tabele sa Sl. 4-65.

U četvrtoj koloni tabele sa Sl. 4-65 prikazane su tabele pobude koje se koriste prilikom sinteze sekvencijalnih kola. Tabela pobude je inverzna tabeli prelaza i definiše ulaze flip-flopa koji su potrebni da bi flip-flop iz datog tekućeg stanja, nakon rastuće ivice taktnog signala, prešao u željeno sledeće stanje.

Tip flip-flopa Dijagram stanja

SR

JK

D

T

Sl. 4-66 Dijagrami stanja različitih tipova flip-flopova.

Pored grafičkih simbola, tabela i funkcija, flip-flopovi se mogu jednoznačno opisati i dijagramom prelaza ili grafom stanja, kod koga je svako stanje prikazano krugom, a prelaz između stanja linijom (tj. granom) koja ima strelicu na strani odredišnog stanja. Ovakav način opisa fili-flopova prikazan je u tabeli sa Sl. 4-66. Uočimo da su svakoj grani u grafu stanja pridružene vrednosti ulaznih signala koji uslovljavaju prelaz iz jednog u drugo stanje. Takođe, treba uočiti da isto stanje može biti i izvor i odredište prelaza. Pošto se prelazi dešavaju u trenutku delovanja ivice taktnog signala, svako stanje može se tretirati kao vremenski interval između dve rastuće ivice taktnog signala.

Iz tabele sa Sl. 4-66 vidimo da dijagrami stanja svih flip-flopova imaju isti broj stanja i isti broj prelaza. Flip-flop je u stanju set kada je Q=1, odnosno, u stanju reset kada je Q=0. Uz to, svaki flip-flop može da pređe iz jednog u drugo stanje ili da ostane u istom stanju. Jedina razlika između četiri tipa flip-flopova je u vrednostima ulaznih signala koji iniciraju prelaze. Dijagrami stanja se veoma često koriste za vizuelni prikaz rada flip-flopova, kao i drugih, mnogo složenijih sekvencijalnih kola.

Svaki flip-flop je obično dostupan u dve varijante: sa ili bez ulaza za direktno, ili asinhrono postavljanje, koji se koriste za setovanje (ulaz SET) i resetovanje (ulaz CLR) flip-flopa nezavisno od ostalih ulaza. Ovi ulazi se koriste za postavljanje flip-flopa u poznato početno (ili inicijalno) stanje. Na primer, stanje u koje će se flip-flop spontano postaviti nakon što je uključeno napajanje ne može se predvideti. Zato je neophodno da se pre početka normalnog, sinhronog rada, flip-flop, posredstvom asinhronih ulaza, postaviti u odgovarajuće početno stanje. Ulazi SET i CLR se zovu asinhroni zato što ne zavise od taktnog signala i zbog toga imaju prioritet nad svim

192

ostalim sinhronim ulazima. Drugim rečima, dok je asinhroni ulaz aktivan, vrednosti ostalih ulaza flip-flopa se ignorišu. Dejstvo asinhronog ulaza počinje onog trenutka kada se na ulaz dovede aktivan naponski nivo (0 ili 1), i traje sve dok se ulaz ne deaktivira. Ako flip-flop poseduje oba asinhrona ulaza, SET i CLR, njihovo istovremeno dejstvo nije dozvoljeno. Na Sl. 4-67 su prikazani grafički simboli flip-flopova sa ulazima za direktno postavljanje sa aktivnim niskom naponskim nivoom, što je naznačeno kružićima na odgovarajućim ulazima. Kod asinhronih ulaza sa aktivnim visokim naponskim nivoom, kružići su izostavljeni.

Sl. 4-67 Simboli flip-flopova sa asinhronim ulazima.

4.3.2 Registarske komponente Osnovna namena registarskih komponenti je čuvanje podataka i obavljanje jednostavnih transformacija podataka, kao što su brojanje i pomeranje memorisanog sadržaja. U sekciji biće definisani i projektovani različiti tipovi registarskih komponenti: prihvatni, pomerački i brojački registri i nešto složenije registarske strukture: registarski fajl, stek i FIFO memorija.

4.3.2.1 Prihvatni registar Registar je memorijska komponenta koja se sastoji od n flip-flopova sa zajedničkim taktnim signalom. Sinhronizovano sa rastućom ivicom taktnog signala, u svaki flip-flop upisuje se jedan bit informacije. U svom osnovnom obliku, pored taktnog signala, registar ima n ulaza i n izlaza. Na Sl. 4-68 prikazan je primer 4-bitnog registra. Grafički simbol 4-bitnog registra dat je na Sl. 4-68(a), dok je na Sl. 4-68(b) prikazana njegova unutrašnja struktura, koju čine četiri paralelno povezana D flip-flopa.

I3 I2 I1 I0

Registar

Q3 Q2 Q1 Q0

D3 Q3 D2 Q2 D1 Q1 D0 Q0

Q3 Q2 Q1 Q0

Clk

I3 I2 I0

(a) (b)

Sl. 4-68 4-bitni registar: (a) grafički simbol; (b) unutrašnja struktura.

Funkcionalnost osnovne varijante registra, prikazane na Sl. 4-68, može se proširiti dodavanjem različitih upravljačkih signala. Na primer, ako registar treba biti resetovan ili setovan nezavisno od taktnog signala, bilo pri uključenju napajanja, bilo pri pojavi nekih specifičnih događaja, mogu se dodati signali za asinhrono resetovanje i setovanje. Takvo jedno proširenje se postiže zamenom jednostavnih flip-flopova sa Sl. 4-68(b), flip-flopovima sa ulazima za direktno postavljanje, kao što je prikazano na Sl. 4-69.

Kao što se vidi na Sl. 4-69, kratkotrajnim aktiviranjem signala Clear sadržaj registra se briše ili resetuje, tj. postavlja na “sve nule”. Slično, registar se setuje, tj. njegov sadržaj postaviti na “sve jedinice”, kratkotrajnim aktiviranjem signala Set. (S obzirom da je aktivni nivo signala Clear i Set nizak, aktiviranje jednog od ova dva signala znači postavljanje 0 na odgovarajući ulaz). Ulazi Clear i Set su nezavisni od taktnog signala i imaju prioritet nad njim. To znači da ako je u trenutku pojave rastuće ivice taktnog signala, Set ili Clear jednak 0, ulaz I se ignoriše, a registar se setuje, odnosno resetuje.

193

(a) (b)

Sl. 4-69 4-bitni registar sa asinhronim resetovanjem i setovanjem: (a) grafički simbol; (b) unutrašnja struktura.

Kod obe varijante registra, prikazane na Sl. 4-68 i Sl. 4-69, novi podatak se automatski upisuje u registar sa svakom rastućom ivicom takta. Međutim, kod mnogih digitalnih sistema, podatak koji je upisan u registar ostaje u registru nekoliko taktnih ciklusa pre nego što se upiše novi podatak. Iz tog razloga, mogućnost kontrole upisa predstavlja korisnu funkciju registra. Kontrola upisa se postiže korišćenjem upravljačkog signala Load (ili Enable) koji kada je 1 dozvoljava upis novog podatka u registar. Ovakav tip registra se zove registar sa dozvolom.

Na Sl. 4-70 su prikazani grafički simbol, tabela operacija i unutrašnja struktura registar sa dozvolom. Registar sadrži multipleksere 2-u-1 koji omogućavaju izbor između ulaznog podatka ili podatka koje je već u registru. Signal Load upravlja multiplekserima na takav način da kada je Load=1, u registar se upisuje novi, tj. ulazni podatak. Sa druge strane, ako je Load=0, podatak koji je prethodno upisan u registar se vraća na ulaze flip-flopova i sa sledećom rastućom ivicom takta ponovo upisuje u registar.

(a) (b)

(c)

Sl. 4-70 Registar sa dozvolom: (a) grafički simbol; (b) tabela operacija; (c) unutrašnja struktura.

4.3.2.2 Pomerački registar U prethodnoj sekciji pokazano je kako se postavljanjem multipleksera ispred ulaza flip-flopova može kontrolisati upis u registar. Sledeći sličnu logiku, multiplekseri se mogu iskoristiti i za pomeranje podatka zapamćenog u registru. Ovakav tip registra se zove pomerački registar i omogućava pomeranje upisanog sadržaja za jednu bitsku poziciju. U osnovnoj varijanti, pomerački registar poseduje upravljački signal Shift koji kada je jednak 1 postavlja registar u režim pomeranja. Na Sl. 4-71 je prikazan primer 4-bitnog pomeračkog registra. Serijski ulaz, IL, se koristi za unos novog 1-bitnog podatka u krajnji levi flip-flop registara. Pomerački registar, kao što je registar sa Sl. 4-71, tipično se koristi za konverziju informacije iz serijskog u paralelni oblik.

194

Iz tog razloga, ovakav registar se zove i pomerački registar sa serijskim ulazom i paralelnim izlazom (SIPO – Serial-In, Parallel-Out).

(a) (b)

(c)

Sl. 4-71 Četvorobitni pomerački registar sa serijskim ulazom i paralelnim izlazom: (a) grafički simbol; (b) tabela operacija; (c) unutrašnja struktura.

Korišćenjem multpleksera 4-u-1, umesto multipleksera 2-u-1, moguće je kombinovati funkcije pomeranja i paralelnog upisa. Na primer, pomerački registar sa Sl. 4-72 ima mogućnost kako pomeranja memorisanog sadržaja tako i upisa novog podatka. Takođe, registar sa Sl. 4-72 može da obavlja pomeranje u oba smera. Pri pomeranju na levo 1-bitni podatak sa ulaza IR (serijski ulaz sa desne strane) se upisuje na krajnju desnu poziciju, dok se pri pomeranju na desno, na krajnju levu poziciju se upisuje 1-bitni podatak sa ulaza IL (serijski ulaz sa leve strane). Na Sl. 4-72 (a) i (b) su prikazani grafički simbol i tabela operacija, dok se na Sl. 4-72 (c) može videti unutrašnja struktura ovog multi-funkcijskog registra.

Registar sa Sl. 4-72 čine četiri razreda, gde svaki razred odgovara jednoj bitskoj poziciji i sastoji se od jednog flip-flopa i multipleksera 4-u-1. Postoje tri tipa razreda, koji se neznatno razlikuju u strukturi: krajnji levi, krajnji desni i srednji. Srednji razredi se obično projektuju prvi, pošto je njihova funkcija najočiglednija. Na primer, jednačine ulaza flip-flopova za svaki od tri tipa razreda, dobijene na osnovu tabele operacija sa Sl. 4-72(c) imaju sledeći oblik: D0=S1

’S0’Q0+S1

’S0’I0+S1S0

’IR+S1S0Q1 D1=S1

’Si’Q0+S1

’S0’Ii+S1S0

’Qi-1+S1S0Qi+1, 1≤i≤2 D2=S1

’S0’Q3+S1

’S0’I3+S1S0

’Q2+S1S0IL

Pomerački registar sa paralelnim upisom može se koristiti za konverziju informacija iz serijskog u paralelni oblik i obrnuto, sa opcijom da prilikom paralelno-serijske konverzije prvo generiše bit najmanje ili bit najveće težine. Registri ovog tipa, često se koriste za konverziju računarskih podataka u serijski oblik pogodan za komunikaciju i rekonstrukciju serijski prenetih podataka u cilju obrade unutar računara.

S0 IL I3 I2 I1 I0 IR

S1 Pomerački registar

Q3 Q2 Q1 Q0

Sledeće stanje

S1 S0 Q3 Q2 Q1 Q0

0 0 Bez promene

IL Q3 Q2 Q1

0 1

1 0

1 1

Operacija

Par. upis

Pomeranje na levoPomeranje na desno

Q3 Q2 Q1 Q0

I3 I2 I1 I0

Q2 Q1 Q0 IR

(a) (b)

195

(c)

Sl. 4-72 4-bitni pomerački registar sa paralelnim upisom: (a) grafički simbol; (b) tabela operacija; (c) unutrašnja struktura.

4.3.2.3 Brojač Brojač je posebna vrsta registara koji sadrži inkrementer, što omogućava brojanja naviše ili naniže. Na primer, na Sl. 4-73 je prikazan brojač naviše koji ima dva upravljačka signala: signal dozvole (E), koji kada je 1 omogućava brojanje i signal Clear koji resetuje brojač, tj. postavlja ga u stanje 0. Grafički simbol 4-bitnog binarnog brojača naviše prikazan je na Sl. 4-73(a), a tabela operacija na Sl. 4-73(b). Shodno Sl. 4-73(d) inkrementer se sastoji od niza polu-sabirača (half-adder – HA) raspoređenih tako da su dva ulaza polu-sabirača na bitskoj poziciji i povezani na izlaz i-tog flip-flopa Qi i izlazni prenos polu-sabirača sa pozicije i-1, Ci. Uočimo da će nova vrednost flip-flopa Di biti 1 ako je bilo Qi bilo Ci, ali ne oba, jednako 1. Suprotno tome, izlaz Ci+1 biće jednak 1 samo ako su Qi i Ci oba jednaki 1. Tabela istinitosti polu-sabirača data je na Sl. 4-73(c). Polazeći od ove tabele dolazimo do sledećih jednačine za Di i Ci+1:

Di = Qi ⊕ Ci Ci+1= QiCi

Sve dok je signal E jednak 1, brojač će brojati naviše po modulu 16, dodajući 1 na svoj tekući sadržaj sa svakom rastućom ivicom taktnog signala.

(a) (b) (c)

(c)

Sl. 4-73 4-bitni binarni brojač: (a) grafički simbol; (b) tabela operacija; (c) tabela istinitosti polu-sabirača; (d) unutrašnja struktura.

196

Obostrani brojač, tj. brojač koji može brojati i naviše i naniže, konstruiše se tako što se u brojaču naviše polu-sabirači zamene polu-sabiračima/oduzimačima (half-adder/substractor – HAS). HAS moduli, pod kontrolom signala za izbor smera brojanja, obavljaju inkrementiranje ili dekrementiranje. Na primer, na Sl. 4-74 prikazan je obostrani brojač koji u najvećem delu nalikuje brojaču naviše sa Sl. 4-73 s tom razlikom što poseduje dodatni upravljački ulaz, D. Kao što je ukazano tabelom operacija sa Sl. 4-74(b), svrha ovog dodatnog ulaza je postavljanje brojača u režim brojanja naviše, kada je njegova vrednost 0, odnosno u režim brojanja naniže, kada je njegova vrednost 1. Na osnovu tabela istinitosti polu-sabiračima/oduzimačima sa Sl. 4-74(c) možemo izvesti sledeće jednačine za Di i Ci+1:

Di = Qi ⊕ Ci Ci+1= D’QiCi+ DQi’Ci

Kao što vidimo na Sl. 4-74(d), svaki polu-sabirač/oduzimač se sastoji od jednog XOR kola povezanog na ulaz flip-flopa, kao i dva AND i jednog OR kola koja se koriste za propagaciju izlaznog prenosa.

Važno je uočiti da obostrani brojač sa Sl. 4-74 uvek počinje brojanje od 0. Međutim, u mnogim primenama korisno je imati mogućnost postavljanja brojača na vrednost različitu od nule, a zatim nastaviti sa brojanjem, naviše ili naniže. Ovakav tip brojača se zove brojač sa paralelnim upisom, a konstruiše se kombinovanjem inkrementera/dekrementera i registra sa dozvolom. Kao što je prikazano na Sl. 4-75, brojač sa paralelnim upisom ima tri upravljačka signala: E, D i Load. Signal E omogućava brojanje u smeru koji je određen signalom D, dok signal Load, uvek kada je 1, zabranjuje brojanje i upisuje u registar podatak sa ulaza I. Sa druge strana, ako je Load=0, brojač se ponaša na identičan način kao obostrani brojač sa Sl. 4-75. Tabela operacija i unutrašnja struktura brojača sa paralelnim upisom prikazani su na Sl. 4-75(b) i (c).

DE Obostrani brojač

Clear Q3 Q2 Q1 Q0 0 X Bez promene1 0 Brojanje naviše1 1 Brojanje naniže

E D Operacija

E D Qi Ci Ci+1 Di

1 0 0 0 0 0 1 0 0 1 0 1 1 0 1 0 0 1 1 0 1 1 1 0 1 1 0 0 0 0 1 1 0 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0

(a) (b) (c)

(c)

Sl. 4-74 4-bitni obostrani brojač: (a) grafički simbol; (b) tabela operacija; (c) tabela istinitosti polu-sabirača/oduzimača; (d) unutračnja struktura.

DE Obostrani brojač

Load Q3 Q2 Q1 Q0

0 0 X Bez promene0 1 0 Brojanje naviše0 1 1 Brojanje naniže1 X X Paralelni upis

Load E D Operacija

(a) (b)

197

HAS

1 0 mux

D3 Q3

Q3'

HAS

1 0 mux

D2 Q2

Q2'

HAS

1 0 mux

D1 Q1

Q1'

HAS

1 0 mux

D0 Q0

Q0'

Clk

Load

E

D

Q3 Q2 Q1 Q0Izlazni prenos

I3 I2 I1 I0

(c)

Sl. 4-75 4-bitni obostrani brojač sa pralelenim upisom: (a) grafički simbol; (b) tabela operacija; (c) unutrašnja struktura.

4.3.2.4 Registarski fajl U prethodnim odeljcima opisani su različiti tipovi registara i brojača, od kojih se svaki sastoji od m flip-flopova i dodatne kombinacione logike. Međutim, takođe je moguće rasporediti flip-flopove u dvo-dimenzionalno polje koje će sadržati 2n vrsta od po m flip-flopova. Svaka vrsta u jednoj takvoj dvo-dimenzionalnoj strukturi, koja se zove registarski fajl, može se smatrati jednim registrom. U opštem slučaju, registarski fajl memoriše istu količinu informacije kao i 2n m-bitnih registara. Međutim, s obzirom na regularnost strukture, registarski fajl zahteva manji broj internih veza, a time i manju površinu na mikročipu, u odnosu na odgovarajući broj nezavisnih registara. Uz to, flip-flopovi registarskog fajla se mogu realizovati sa manjim brojem tranzistora. Takođe, uvek se pristupa samo jednom flip-flopu u svakoj koloni.

Registarski fajl čine: dvo-dimenzonalno polje ćelija registarskog fajla (register-file cells – RFC), dekoderi za čitanje i upis i izlazna baferska logika. Kao što je prikazano na Sl. 4-76(a), tipičnu ćeliju registarskog fajla čine jedan D flip-flop i dva logička kola. Osim taktnog signala, ćelija ima tri ulaza i jedan izlaz: Write_select, Read_select, Input i Output. Pri Write_select=1, D flip-flop pamti vrednost signala Input. Kada je Read_select=1, sadržaj D flip-flopa se kroz tro-statički bafer prenosi na izlaz Output.

Na Sl. 4-76(b) prikazan je blok dijagram registarskog fajla kapaciteta 2nxm, dok je na Sl. 4-76(c) prikazana unutrašnja organizacija registarskog fajla kapaciteta 4x4. (Iz razloga jednostavnijeg prikaza, na Sl. 4-76(c) je izostavljen taktni signala.) Registarski fajl kapaciteta 2nxm ima m ulaza Im-1, …, I0, m izlaza Om-1, …, O0 i 2n

vrsta flip-flopova, kao što je prikazano na Sl. 4-76(c). Dekodera za upis služi za izbor vrste u koju će, u trenutku delovanja rastuće ivice taktnog signala, biti smeštena ulazna vrednost. Ulaz dekodera za upis se sastoji od n adresnih linija, WAn-1, …, WA0 i signala za dozvolu upisa, WE. Ako je WE=0, ulazna vrednost se ne upisuje u registarski fajl.

Slično dekoderu za upis, dekoder za čitanja bira vrstu čiji sadržaj se prenosi na izlazu registarskog fajla. Dekoder za čitanje ima n adresnih linija, RAn-1, …, RA0 i signal dozvole čitanja, RE. Pri RE=1, na izlazu registarskog fajla javlja se, nakon manjeg kašnjenja kroz izlazne bafere, sadržaj izabrane vrste. Sa druge strane, ako je RE=0, izlazni signali registarskog fajla su u stanju visoke impedanse.

198

(a) (b)

(c)

Sl. 4-76 Registarski fajl sa jednim portom za upis i jednim portom za čitanje: (a) ćelija registarskog fajla; (b) grafički simbol; (c) unutrašnja struktura.

Glavno ograničenje registarskog fajla sastoj se u činjenici da on omogućava ograničen pristup registrima iz fajla – tj. uvek se može upisivati samo u jedan registar (vrstu) i čitati iz samo jednog registara (vrste). Ovakva situacija može se donekle popraviti konstrukcijom registarskog fajla sa više od jednog porta za čitanje ili upis. Nažalost, cena registarskog fajla raste srazmerno broju portova. Iz tog razloga, većina popularnih tipova registarskih fajlova ima jedan ili dva porta za upis i dva porta za čitanje. Glavno opravdanje za dva porta za čitanje jeste da su većina aritmetičkih i logičkih operacija binarne i da stoga, u isto vreme, zahtevaju dva operanda. Sa dva porta za čitanje i jednim za upis, moguće je, u toku istog taktnog ciklusa, iz registaraskog fajla pribaviti dva operanda i smestiti rezultat nazad u registarski fajl. Sa druge strane, opravdanje za korišćenje dva porta za upis leži u brzini konzumiranja operanada: U svakom taktnom ciklusu koristimo dva operanda da bi smo dobili jedan rezultat. Shodno tome, ako nam je cilj da obavljamo jednu operaciju po taktnom ciklusu, mora postojati mogućnost da se u svakom taktnog ciklusu, pored rezultata koji se vraća u registarski fajl u registarski fajl unese i jedan novi podatak.

(a) (b)

199

RFC RFC RFC RFC

RFC RFC RFC RFC

RFC RFC RFC RFC

RFC RFC RFC RFC

Dekoderza upis2-u-4

Dekoder za čitanje2-u-4

I3 I2 I1 I0

B3 A3

WA1 WA0 WE

0

1

2

3

0

1

2

3

RAB1 REB

Dekoder za čitanje2-u-4

0

1

2

3

RAB0 RAA1 REARAA0

B2 A2 B1 A1 B0 A0 (c)

Sl. 4-77 Registarski fajl sa jednim upisnim portom i dva porta čitanje: (a) ćelija registarskog fajla; (b) grafički simbol; (c) unutrašnja struktura.

Na Sl. 4-77 prikazan je primer registarskog fajla sa jednim portom za upis i dva porta za čitanje. Kao što se vidi na Sl. 4-77(a), ćelija registarskog fajla je modifikovana u odnosu na Sl. 4-77(a) kako bi se obezbedila podrška za dva porta za čitanje. Grafički simbol registarskog fajla prikazan je na Sl. 4-77(b). Na Sl. 4-77(c) prikazana je unutrašnja struktura registarskog fajla kapaciteta 4x4. Uočimo da je dijagram sa Sl. 4-77(c) sličan strukturi registarskog fajla sa Sl. 4-77(c), osim što nova verzija ima dodatni dekoder za čitanje, koji, sa svoje strane, unosi po jednu dodatnu vezu ka svakoj vrsti i koloni. Uz pomoć ovih veza omogućen je prenos sadržaja do drugog porta za čitanje.

Registarski fajlovi spadaju u brze memorijske komponente, zahvaljujući činjenici da su memorijske ćelije realizovane na bazi flip-flopova ili leč kola. Međutim, s obzirom da svaki flip-flop sadrži barem 6 tranzistora, registarski fajl je skupa memorija. Iz tog razloga, registarski fajlovi se tipično koriste kao privremena memorija malog kapaciteta kod aplikacija koje zahtevaju veliku brzinu obrade podataka.

4.3.2.5 FIFO FIFO red je struktura koja se često koristi kada treba uravnotežiti zahteve za nekom obradom. Zamislimo, na primer, ljude kako stoje ispred šaltera u banci ili kako ulaze u autobus, koji moraju čekati u redu dok ne stignu na red da budu opsluženi. Slična situacija se javlja kod različitih procesora, ASIC kola ili bilo kog uređaja koji šalje podatke nekom drugom uređaju radi dalje obrade, u smislu da onda kada u jednom trenutku brzina generisanja podataka nadmaši brzinu kojom se podaci obrađuju, neophodno je između proizvođača i potrošača umetnuti red čekanja, tj. FIFO red. Naravno, u takvim situacijama, brzina kojom proizvođač generiše podatke ne može u nedogled biti veća od brzine kojom potrošač može da prihvata podatke, jer bi to zahtevalo red čekanja beskonačne dužine. U svakom slučaju, u proseku, obe brzine moraju biti iste, a veličina reda čekanja određuje koliko dugo se može tolerisati neujednačenost između zahteva za obradom i brzine obrade.

Svrha FIFO reda je da sačuva podatke upućene potrošaču, koje on trenutno nije u stanju da prihvati, ali koje će u dogledno vreme preuzeti i to u redosledu u kome su oni poslati. Znači, podatak koji je prvi upisan u FIFO, prvi se i čita, i td., kao što je ilustrovano na Sl. 4-78. Na Sl. 4-78(a) je prikazan red čekanja nakon što su brojevi 23 i 34 upisani, ali pre nego što je stigao broj 45. Na Sl. 4-78(b) možemo videti sadržaj FIFO reda nakon upisa broja 45. Uočimo da je nakon čitanja FIFO reda, broj 23 odbačene i da je sadržaj reda pomeren za jednu poziciju na dole. Sadržaj reda čekanja nakon pomeranja prikazan je na Sl. 4-78(c).

200

(a) (b) (c)

Sl. 4-78 Princip rada FIFO reda: (a) sadržaj reda pre upisa broja 45; (b) sadržaj reda posle upis broja 45; (c) sadržaj reda nakon čitanja broja 23.

Na Sl. 4-79 je prikazan blok dijagram FIFO reda. U opštem slučaju, FIFO red ima m ulaznih linija INi i m izlaznih linija OUTi, gde je 0≤i≤m-1. Na izlazu OUT prisutan je podatak sa početka reda, tj. podatak koji je najduže u redu čekanja. Na ulaz IN postavlja se podatak koji treba upisati u red. Takođe, FIFO red ima tri upravljačka signala: R/W, Enable i Reset. Signal R/W služi za izbor operacije, upis ili čitanje. Za R/W=0, a pod dejstvom taktnog signala clk, u FIFO se upisuje podatak prisutan na ulazu IN i smešta na kraj reda čekanja. Za R/W=1, takođe pod dejstvom taktnog signala clk, iz FIFO reda se uklanja podatak sa početka reda (tj. podatak koji je najduže u redu čekanja). Signal Enable se koristi kao dozvola upisa/čitanja. Upis/čitanje je dozvoljeno ako je Enable=1. U suprotnom, Enable=0 onemogućava dejstvo taktni signal (sadržaj FIFO reda ostaje neizmenjen). Signal Reset služi za resetovanje (pražnjenje) FIFO reda. Tipična realizacija FIFO reda ima još dva statusna signala, Full i Empty, koji se koriste za kontrolu proizvođača i potrošača. Kada je red pun, signal Full ima vrednost 1, što predstavlja upozorenje proizvođaču da će svaki naredni poslati podatak biti odbačen. Kada se red isprazan, signal Empty postaje 1, što predstavlja upozorenje potrošaču da novi podaci još uvek nisu stigli.

Sl. 4-79 Blok dijagram FIFO reda.

Imajući u vidu da je unutar reda čekanja redosled pristizanja podataka očuvan, FIFO red možemo konstruisati uz pomoć pomeračkih registara u kombinaciji sa brojačem koji će brojati važeće podatke u redu. Takva jedna realizacija FIFO reda prikazana je na Sl. 4-80(c), a tabela operacija na Sl. 4-80(a). Rešenje koristi m 4-bitnih pomeračkih registara, što znači da je kapacitet reda četiri m bitnih reči. Svaki bit ulaznog m-bitnog podatka se upisuje u odgovarajući pomerački registar. Kraj reda je uvek na poziciji Q0 pomeračkih registara, dok se početak reda pomera za jednu poziciju udesno, pri svakom upisu novog podatka. Pri upisu, pomerački registri pomeraju svoj sadržaj za jednu poziciju udesno (upravljački ulaz pomeračkog registra S ima vrednost S=1), podatak se upisuje na poziciju Q0, a brojač se inkrementira (D=0) tako da njegov sadržaj ponovo ukazuje na prvi upisani podatak. Sa druge strane, pri svakom čitanju podatka iz reda, uz pomoć multipleksera se bira podatak sa početka reda i prenosi na izlaz, a brojač se dekrementira (D=1). Uočimo da se pročitani podatak ne uništava, već samo postaje nevažeći, time što je brojač dekrementiran. Na Sl. 4-80(b) prikazana je tabela upravljanja koja sadrži vrednosti internih upravljačkih signala u zavisnosti od izabrane operacije. U toku operacije čitanja, sadržaj pomeračkih registara se ne menja, a brojač broji za 1 unazad. Međutim, u toku operacije upisa, pomerački registri će obaviti pomeranje za jednu poziciju udesno, a brojač će odbrojati za 1 unapred. Brojač, takođe, upravlja izborom podatka prilikom operacije čitanja. U toku inicijalizacije, brojač se postavlja na 1111, tako da njegovo stanje pri upisu prvog podatka u red postaje 0000. Ovakva inicijalizacija brojača je neophodna kako bi se ostvarila pravilno upravljanje multiplekserima, koji zahtevaju vrednosti 00, 01, 10 i 11 na svojim selekcionim ulazima da bi izabrali jedan od izlaza pomeračkih registara.

Na osnovu tabele upravljanja možemo odrediti jednačine preostalih upravljačkih signala:

S = (R/W)Enable D = (R/W)’Enable E = Enable

201

Svrha izlazne logike je generisanje signala Full i Empty. Red čekanja je prazan (Empty=1) ako je stanje brojača 111, a pun (Full=1) ako je stanje brojača 011. U svim ostalim stanjima brojača, oba signala, Full i Empty, imaju vrednost 0. Dakle:

Full = Q2’Q1Q0

Empty = Q2Q1Q0

Na Sl. 4-80 (c) dat je šematski prikaz FIFO reda dužine 4.

Read/ write Enable Operacija R/W Enable S D E

X 0 Bez promene X 0 0 X 0

0 1 Čitanje 0 1 0 1 1

1 1 Upis 1 1 1 0 1 (a) (b)

(c)

Sl. 4-80 FIFO red dužine 4 reči: (a) tabela operacija; (b) tabela upravljanja; (c) šematski prikaz.

Redovi čekanja veće dužine, obično, umesto pomeračkih registara, za smeštanje podataka koriste RAM memoriju i sadrže dva brojača koji ukazuju na početak i kraj reda. Takva jedna struktura poznata je pod nazivom kružni bafer. Simbolička predstava kružnog bafera prikazana je na Sl. 4-81(a). Uočimo da struktura sa Sl. 4-81(a) koristi RAM memoriju kapaciteta 1K reči i dva brojača, označena kao Početak i Kraj. Brojač Početak sadrži adresu najranije upisanog podatka. Uvek kada se zahteva operacija čitanja, podatak se čita sa adrese na koju ukazuje brojač Početak i postavlja na U/I magistralu, a brojač Početak se inkrementira. Brojač Kraj sadrži adresu prve prazne lokacije u redu. Prilikom operacije upisa, podatak se upisuje na lokaciju na koju ukazuje brojač Kraj, a brojač Kraj se inkrementira. Ukoliko se podaci iz reda češće čitaju nego upisuju, desiće se situacija da bajač Početak ukazuje na istu lokaciju kao i brojač Kraj, što znači da je red prazan. Sa druge strane, ako se u rad podaci češće upisuju nego što se čitaju, brojač Kraj koji se inkrementira po modulu 1024, u jednom trenutku ukazivaće na istu lokaciju kao i brojač Početak, što, međutim, sada znači da je red pun. Da bi se izbegla dvosmislenost u značenju uslova Početak=Kraj, umesto 10-bitnih možemo koristiti 11-bitne (po modulu 2048) brojače. Kod ovakve realizacije, red čekanja je prazan ako su sadržaji oba brojača identični, dok je red pun ako se sadržaji brojača razlikuju samo na bitu najveće težine.

202

Na Sl. 4-81 prikazana je realizacija FIFO reda koja koristi 1K RAM i dva brojača. Takođe, FIFO sadrži multiplekser preko koga se bira jedan od brojača kao izvor adrese za RAM i komparator koji poredi sadržaje brojača. Tabela operacija je prikazana na Sl. 4-81(b), tabela upravljanja na Sl. 4-81 (c), dok je na Sl. 4-81(d) dat konačni šematski izgled FIFO reda zasnovanog na RAM memoriji.

Read/ write Enable Operacija Read/

write Enable S CS RWS E

(Početak) E

(Kraj)

X 0 Bez promene X 0 X 0 X 0 0

0 1 Čitanje 0 1 1 1 0 1 0

prazno

podatak

podatak

podatak

prazno

prazno

. . .

0

1

2

1021

1022

1023

Početak

Kraj

1 1 Upis 1 1 0 1 1 0 1 (a) (b) (c)

(d)

Sl. 4-81 FIFO red realizovan na bazi 1K RAM memorije: (a) princip rada; (b) Tabela operacija; (c) Tabela upravljanja; (d) šematski prikaz.

4.3.2.6 Stek Stek (stack) je memorijska struktura koja se često koristi kako u softveru tako i u hardveru. Po definiciji, stek je memorija sa ograničenim pristupom. Za razliku od RAM memorije gde se bilo kom zapamćenom podatku može pristupati u bilo kom vremenu, podacima zapamćenim u steku pristupa se samo preko jedne lokacije: vrh steka. Drugim rečima, kada se podatak upisuje u stek, ili stavlja na stek (operacije push), on se smešta na vrh steka i pri tome se svi prethodno upisani podaci spuštaju za jednu poziciju niz stek. Suprotno tome, kada se podatak čita iz steka ili uzima sa steka (operacija pop), on se sklanja sa vrha steka i pri tome se svi ostali podaci podižu za jednu poziciju naviše uz stek. Na Sl. 4-82(a) je prikazan stek dubine 4 (tj. kapaciteta 4 reči) koji inicijalno sadrži dva broja: 34 na lokaciji Top i 23 na lokaciji Top-1. Na Sl. 4-82(b) može se videti da stavljanje broja 45 na stek zahteva da brojevi 34 i 23 budu premešteni na lokacije Top-1 i Top-2. Sa druge strane, kada se broj 45 uzima sa steka, brojevi 34 i 23 se pomeraju naviše tako da ponovo zauzimaju lokacije Top i Top-1 (Sl. 4-82(c)). U ovom konkretnom slučaju, na stek se može staviti najviše četiri broja, pre nego što se stek napuni. Nakon toga, svaki novi upis u stek znači gubitak podatka sa dna steka.

203

(a) (b) (c)

Sl. 4-82 Princip rada steka: (a) sadržaj steka pre upisa broja 45; (b) sadržaj steka nakon upisa broj 45; (c) sadržaj steka nakon čitanja broja 45.

Prilikom projektovanja steka, važno je uočiti da se prilikom operacija upisa i čitanja, zapamćeni podaci pomeraju za jednu poziciju naniže, odnosno naviše. Na osnovu ovog zapažanja zaključujemo da za realizaciju steka treba koristiti pomeračke registre u kombinaciji sa obostranim brojačem za detekciju praznog, odnosno punog steka. Ove komponente su korišćene za realizaciju m-bitnog steka dubine 4 koji je prikazan na Sl. 4-83. Uočimo da ovaj stek ima m ulaznih linija INi i m izlaznih linija OUTi, gde je 0≤i≤m-1. Takođe, stek ima tri upravljačka signala, Push/pop, Enable i Reset.

Signal Push/pop upravlja upisom i čitanjem iz steka. Kada je Push/pop=0, podatak se upisuje u stek; kada je Push/pop=1, podatak se čita iz steka. Signal Enable omogućava (dozvoljava) rad steka, dok signal Reset, uvek kada je 0, briše sadržaj pomeračkih registara i resetuje obostrani brojač. Rad steka je opisan tabelom operacija sa Sl. 4-83(a). Uočimo da stek ima dva izlazna signala, Empty i Full, koji ukazuju na status steka, na sledeći način: kada Empty ima vrednost 1, stek je prazan; sa druge strane, kada Full ima vrednost 1, stek je pun.

Push/ pop

Enable Operacija

X 0 Bez promene

0 1 Upis (push)

1 1 Čitanje (pop)

Kontrola pom.

registra

Kontrola brojača Push/

pop Enable S1 S0 D E X 0 0 0 X 0 0 1 1 1 0 1 1 1 1 0 1 1

Izlazi brojača

Q2 Q1 Q0 Empty Full 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 1

(a) (b) (c)

(d) Sl. 4-83 Stek dubine 4. (a) tabela operacija; (b) tabela izlaza; (c) tabela upravljanja; (d) struktura steka.

204

Na Sl. 4-83(d) se može videti da se stek sastoji od m 4-bitnih pomeračkih registara sa paralelnim upisom tako da svakom ulazu odgovara jedan pomerački registar. Pri svakom upisu u stek, svi pomerački registri obavljaju operaciju pomeranja na desno. Slično, pri svakom čitanju iz steka, svi pomerački registri obavljaju operaciju pomeranja na levo. Svaki novi podatak koji se stavlja na stek preko ulaza IL pomeračkog registra i upisuje se na poziciju Q3, koja predstavlja vrh steka. Stanje brojača ukazuje na broj podataka u steku. Sinhronizovano sa svakom rastućom ivicom taktnog signala, pomerački registri obavljaju pomeranje na desno, a brojač broji unapred za 1 (Push/pop=0 i Enable=1), odnosno pomeranje na levo i brojanje unazad (Push/pop=1 i Enable=1). Vrednosti upravljačkih signala pomeračkih registara i brojača mogu se izvesti na osnovu tabele upravljanja koja je prikazana na Sl. 4-83(b). Na osnovu ove tabele možemo izvesti sledeće jednačine:

S1 = Enable S0 = (Push/pop)’Enable D = (Push/pop)Enable E = Enable

Realizacija ovih jednačina predstavlja upravljačku logiku steka.

Na osnovu tabele izlaza sa Sl. 4-83(c), vidi se da izlazna logika dekoduje stanja brojača 000 i 100. Uvek kada je stanje brojača 000, signal Empty biće 1; u bilo kom drugom stanju Empty je 0. Suprotno, uvek kada je stanje brojača 100, signal Full biće 1; u bilo kom drugom stanju Full je 0. Na osnovu toga, možemo izvesti sledeće Bulove jednačine za izlaznu logiku:

Empty = Q2’Q1’Q0’ Full = Q2Q1’Q0’

Radi preglednosti, na Sl. 4-83(d) je izostavljen taktni signal koji pobuđuje pomeračke registre i brojač.

Glavna slabost rešenja steka sa Sl. 4-83 ogleda se u činjenici da je za realizaciju steka veće dubine potreban veliki broj ¨skupih¨ pomeračkih registara. Iz tog razloga, za realizaciju steka većeg kapaciteta koristi se RAM memorija. Sa druge strane, pošto RAM memorija nema mogućnost pomeranja memorisanog sadržaja, push i pop operacije moraju biti realizovane na nešto drugačiji način – promenom tekuće lokacije vrha steka. Drugim rečima, kada se podaci stavljaju na stek, adresa vrha steka biće uvećana za jedan pri svakom upisu novog podatka. Suprotno, kada se podaci uzimaju sa steka, adresa vrha steka biće smanjena za jedan pri svakom čitanju podatka. Neka je, na primer, stek prazan: vrh steka je na adresi 0. Pri svakom upisu podatka, podatak se upisuje na vrh steka, a adresa vrha se uvećava za jedan, tako da vrh steka uvek ukazuje na praznu lokaciju u koju će biti upisan sledeći podatak. Sa druge strane, pri svakom čitanju podatka, podatak se uzima iz lokacije koja se nalazi odmah ispod vrha steka, na adresi za jedan manje od adrese vrha steka. Sledeći ovu logiku, znamo da je za RAM memoriju kapaciteta 2n reči stek prazan ako je vrh steka na adresi 0, a pun ako je vrh na adresi 2n-1. Uočimo da se lokacija sa adresom 2n-1 nikada ne koristi za smeštanje podatka, već samo za određivanje da li je stek prazan. Iako se na ovaj način gubi jedna od 2n raspoloživih reči RAM memorije, opisani pristup značajno pojednostavljuje izlaznu logiku.

Na Sl. 4-84 je prikazana realizacija steka koja koristi RAM memoriju kapaciteta 1K (210) i dva brojača koji ukazuju na vrh steka i prvu lokaciju ispod vrha. Uočimo da su ulazi i izlazi i operacije steka identične kao na Sl. 4-83. Kao što se vidi sa Sl. 4-84(d), stek čine: dva 10-bitna brojača, jedan 10-bitni multiplekser 2-u-1, 1K RAM, upravljačka i izlazna logika. Dva brojača, nazvana Top i Top-1, razlikuju se za 1, i oba se uvećavaju za jedan pri svakoj push operaciji, a umanjuju za jedan pri pop operaciji. Pri operaciji push, adresa RAM-a je sadržaj brojača Top, dok pri operaciji pop, adresa RAM-a je sadržaj brojača Top-1.

Polazeći od prethodnog razmatranja, u mogućnosti smo da konstruišemo tabelu upravljanja koja je prikazana na Sl. 4-84(c) koja sadrži vrednosti svih internih signala koji upravljaju brojačima, multiplekserom i RAM memorijom kako pri push i tako i pri pop operaciji. Na osnovu ove tabele, možemo izvesti sledeće Bulove jednačine za upravljačku logiku:

E = CS = Enable S = RWS = (Push/pop)’Enable

D = (Push/pop)Enable

Izlaznu logiku čine dva gejta koja ukazuju kada je stek pun, odnosno prazan. Pošto je stek prazan uvek kada je sadržaj brojača Top jedak 0, da bi se detektovao uslov Empty koristi se 10-ulazno NOR kolo čiji ulazi su povezani na izlaze brojača Top. Slično, stek je pun uvek kada brojač Top sadrži sve jedinice, što se detektuje 10-ulaznim AND. Šematski prikaz strukture steka zasnovanog na RAM memoriji prikazan je na Sl. 4-84(d).

205

Push/ pop Enable Operacija

X 0 Bez promene

0 1 Upis (push)

1 1 Čitanje (pop)

Kontrola

mem. Kontrola

broj. Push/ pop Enable

Kontrola mux-a

S CS RWS D E X 0 X 0 0 X 0 0 1 1 1 1 0 1 1 1 0 1 0 1 1

(a) (b) (c)

(d)

Sl. 4-84 Realizacija steka na bazi RAM memorije: (a) Simboličko rešenje; (b) Tabela operacija; (c) Tabela upravljanja; (d) šematski prikaz.