Professional Documents
Culture Documents
Digitalna Elektronika
Digitalna Elektronika
Burny Nndor
Divki Szabolcs
Digitalna elektronika
-skripta-
Subotica, 2007.
-1-
Predgovor
Skripta je napisana za studente druge godine Vie Tehnike kole u Subotici i sadri
gradivo predavanja iz predmeta Digitalna elektronika. Ovaj predmet predstavlja neposredni
nastavak predmeta Digitalna tehnika i Analogna elektronika. U Digitalnoj tehnici studenti su se
upoznali sa logikim osnovama digitalnog projektovanja. Glava o logikim kolima u Analognoj
elektronici pruala je uvid u hardverska reenja koja ine osnove digitalnih ureaja.
Skripta obrauje aktuelna reenja za realizaciju digitalnih kola prema programu za
predmet Digitalna elektronika. Polazi se od (I. deo) optih pitanja vezanih za fiziku realizaciju. U
nastavku (II. deo) se razmatra projektovanje zasnovano na kolima malog i srednjeg stepena
integracije (SSI, MSI) koje je svoj vrhunac dostiglo sedamdesetih i osamdesetih godina XX veka.
Sedamdesetih godina XX veka su se pojavila kola koja se programiraju softverski
(mikroprocesori, mikrokontroleri) a ubrzo zatim i kola koja se programiraju hardverski
(programmable logic device PLD). U okviru drugih predmeta e se studenti upoznati sa kolima
koja se softverski programiraju. Digitalno projektovanje zasnovano na PLD-ovima se detaljno
obrauje u okviru ovog predmeta. U cilju toga III. deo skripte prikazuje savremeni alat za
hardversko programiranje, jezik za opis hardvera Verilog. U ovom predmetu se stie do opisa jezika
i do raunarskih simulacija. U okviru predmeta Projektovanje elektronskih ureaja e se studenti
upoznati sa softverima za automatsku sintezu digitalnih kola i sa samim postupkom programiranja.
Karakteristino je za savremeni nain projektovanja da vei deo zadatka u digitalnim
sistemima obavljaju mikroprocesori i mikrokontroleri koji se softverski programiraju kao i PLD-ovi
koji se hardverski programiraju dok je uloga SSI i MSI kola da obavljaju pomone zadatke
(pobuivanje, prilagoavanje nivoa itd.).
Ureaji koji se softverski programiraju imaju iru oblast primene i veoma su pogodni za
obavljanje sloenih zadataka kao to su upravljanje, merenje, prikazivanje rezultata itd. Meutim,
postoje i takvi zadaci obrade signala i upravljanja koji se ne mogu reiti mikroprocesorima ili
mikrokontrolerima, jer su oni previe spori za takve primene. U ovom sluaju reenje nam pruaju
kola sa hardverskim programiranjem.
U izvesnoj meri ureaji koji se softverski programiraju i ureaji koji se hardverski
programiraju su konkurencija jedan drugom ali u velikom broju primena oni se meusobno
dopunjuju. U mnogim ureajima pored mikrokontrolera se mogu nai i jedan ili vie PLD kola.
Programabilna logika kola su danas dostigla takav nivo sloenosti da je u njima mogue
realizovati ak i kompletan mikrokontroler. Na ovaj nain korisnik moe da projektuje i hardverski
programira integrisano kolo sa eljenim hardverskim resursima koji se zatim softverski programira
sa eljenim skupom naredbi. Ovakvi zadaci esto prevazilaze znanje jednog inenjera i zbog toga
proizvoai PLD ureaja podravaju ovaj pravac projektovanja nudei gotova reenja
projektantima.
Autori
-2-
Sadraj
3.
-3-
6.
7.
-4-
9.
10.
HDL opis na nivou ponaanja .................................................................................................................. - 111 10.1.
Struktuirane procedure........................................................................................................................... - 111 10.1.1.
Procedura tipa initial ..................................................................................................................... - 111 10.1.2.
Procedura tipa always ................................................................................................................... - 112 10.2.
Dodela vrednosti u procedurama ........................................................................................................... - 112 10.2.1.
Blokirajue dodele ........................................................................................................................ - 112 10.2.2.
Neblokirajue dodele .................................................................................................................... - 113 10.3.
Vremenska kontrola dodela u opisima na nivou ponaanja ................................................................... - 116 10.3.1.
Vremenska kontrola zadavanjem kanjenja .................................................................................. - 116 10.3.2.
Vremenska kontrola primenom ivinog okidanja i okidanja na nivo............................................ - 117 10.4.
Uslovne dodele ....................................................................................................................................... - 119 10.5.
Viestruka grananja................................................................................................................................ - 119 10.5.1.
Struktura case................................................................................................................................ - 119 10.5.2.
Primena kljunih rei casex casez................................................................................................. - 120 10.6.
Petlje u opisima na nivou ponaanja...................................................................................................... - 121 10.6.1.
Petlja tipa while............................................................................................................................. - 121 10.6.2.
Petlja tipa for................................................................................................................................. - 121 10.6.3.
Petlja tipa repeat ........................................................................................................................... - 122 10.6.4.
Petlja tipa forever .......................................................................................................................... - 122 10.7.
Redni i paralelni blokovi ........................................................................................................................ - 122 10.7.1.
Redni blokovi................................................................................................................................ - 122 10.7.2.
Paralelni blokovi ........................................................................................................................... - 123 10.7.3.
Kombinovani blokovi.................................................................................................................... - 124 10.7.4.
Imenovani blokovi ........................................................................................................................ - 124 10.7.5.
Prekidanje izvravanja imenovanog bloka .................................................................................... - 124 11.
Literatura................................................................................................................................................... - 126 -
-5-
Uvod
Digitalne realizacije su karakteristine u mnogim oblastima savremene tehnike.
Raunarska tehnika, telekomunikacije i upravljanje industrijskim procesima su oblasti koje najvie
prednjae u primeni digitalnih reenja.
U poetku su samo mehaniki i elektromagnetni prekidai (releji) bili na raspolaganju za
realizaciju digitalnih ureaja. Bilo je pokuaja za realizaciju digitalnih ureaja primenom
elektronskih cevi koje su dugo vremena drali monopol na polju analogne obrade signala. Prvi
elektronski raunar je sagraen pomou elektronskih cevi. Velike dimenzije, nedovoljna pouzdanost
u radu i znaajna potronja su bili faktori koji su spreili iru primenu ovih ureaja.
Nakon otkria tranzistora, skoro istovremeno su se pojavile analogne i digitalne primene.
Povezivanjem tranzistora, dioda i otpornika bilo je mogue izgraditi brza digitalna kola malih
dimenzija i male potronje. Od kraja pedesetih godina XX veka osnovu digitalne elektronike
nesporno su dala integrisana reenja. Razvoj tehnologije za proizvodnju poluprovodnikih
komponenata omoguilo je projektovanje (integrisanje) sve komplikovanijih elektrinih kola na
povrini jedne kristalne ploe.
Na poetku razvoja integrisanja elektrinih kola samo nekoliko logikih kapija je bilo mogue smestiti na jednu ploicu. Ova tehnologija je dobila naziv mali stepen integracije (small scale
of integration SSI). Posle ovoga tehnologija srednjeg stepena integracije (medium scale of
integration MSI) je omoguila smetanje sloenijih celina (multipleksori, brojai itd.) na jednu
ploicu. U to vreme projektovanje digitalnih ureaja se sastojalo od spretne kombinacije SSI i MSI
integrisanih kola.
Smatralo se da e pravac razvoja dovesti do sve sloenijih elektrinih kola, koja e u
potpunosti integrisati sva neophodna digitalna reenja za funkcionisanje nekog ureaja. Ovakva
integrisana kola su projektovana npr. za digitalne satove, merne ureaje itd. Meutim, ubrzo je
postalo jasno da su primene toliko brojne da nije ekonomino posebno razvijati integrisana kola za
svaku primenu (application specific integrated circuit ASIC). Razvoj i proizvodnja integrisanih
kola je ekonomina samo ako se proizvodnja istih vri u velikim serijama.
Prepoznavanje ovih ogranienja je usmerilo razvoj u dva pravca. Sa jedne, strane pojavile
su se mikroprocesori koji se ne mogu samostalno primeniti u konkretne svrhe, ali njihovim
povezivanjem sa odgovarajuim pomonim elektrinim kolima (memorije, prilagodni stepeni itd.) i
dodavanjem softvera mogue je reiti proizvoljne probleme. Sa druge strane, digitalna kola koja se
hardverski programiraju (programmable logic device PLD) sadre veliki broj unapred proizvedenih logikih blokova, i hardverskim programiranjem se mogu povezati na nain da obavljaju eljenu
funkciju. Ova elektrina kola pripadaju kolima visokog stepena integracije (large scale integration
LSI) odnosno kolima vrlo visokog stepena integracije (very large scale integration VLSI).
Skriptu predlaemo svakome ko eli da se upozna sa osnovama digitalne elektronike.
Autori
-6-
B
B
Y=A*B
Y=A+B
(a)
ILI
(b)
Slika 1-1: Realizacija (a) I i (b) ILI logike funkcije pomou strujne logike.
Elektrina kola sa strujnom logikom su skoro izala iz upotrebe, ali proteklih godina kod
pojedinih reenja za integrisana kola su ponovo ula u centar interesovanja. Kod veine dananjih
digitalnih kola je naponska logika dominantna. Potrebna logika stanja se i kod naponske logike
postiu zatvaranjem ili otvaranjem prekidaa. U ovom sluaju cilj nije protok struje od ulazne take
(taaka) do izlazne take (taaka) nego dobijanje odreenih standardnih naponskih nivoa za reprezentaciju logike nule i jedinice.
Slika 1-2a prikazuje principijelnu emu jednog digitalnog (logikog) elementa sa naponskom logikom. Dva prekidaa (K1, K2) su redno vezana (mogu se posmatrati kao naponski delitelji). Slobodni izvodi su vezani na izvore koji obezbeuju naponske nivoe koji odgovaraju logikoj
jedinici (1) i nuli (0). Obino je re o jednom izvoru, iji se jedan kraj vee na potencijal zemlje
koji se smatra logikom nulom, dok potencijal prisutan na drugom kraju izvora se smatra logikom
jedinicom. Teoretski gledano, prekidai se mogu ukljuiti na etiri razliita naina koji su prikazani
u tabeli na slici 1-2b.
Funkcionisanje savremenih digitalnih ureaja se obino zasniva na dva naponska nivoa,
odnosno na dvema logikim vrednostima. Vrednost izlaza u prvom redu tabele je neodreena to
ukazuje na odstupanje od definicije dvovalentne logike. Poto su oba prekidaa iskljuena, izlaz Y
prelazi u stanje visoke impedanse koje se jo naziva i tree stanje (engl. three-state ili 3-state). U
tom sluaju drugi elementi prikljueni na istu taku odreuju naponski nivo izlaza datog logikog
elementa. Ova mogunost se koristi kod onih digitalnih ureaja kod kojih se komunikacija izmeu
vie logikih elemenata ostvaruje kroz jedinstveni zajedniki provodnik. U razliitim vremenskim
intervalima se aktiviraju razliiti logiki elementi. Aktivni element u datom trenutku upravlja
provodnikom, dok su drugi elementi u stanju visoke impedanse i njihovi uticaji na vrednost logikog nivoa se mogu zanemariti.
-8-
K1
Y
K2
K1
K2
Trecestanje
Zabranjeno stanje
"0"
(a)
(b)
Slika 1-2: (a) Principijelna ema logikog elementa sa naponskom logikom i (b) varijacije stanja prekidaa.
U drugom redu tabele K2 provodi, dok K1 ne provodi. Znai, izlaz Y je u kratkom spoju
sa zemljom (taka sa nultim potencijalom) i na taj nain se ostvaruje logika nula. Trei red
odgovara suprotnom sluaju, K1 provodi dok K2 ne provodi. Znai, na izlazu se pojavljuje
potencijal koji odgovara stanju logike jedinice. Realni prekidai u ukljuenom stanju ne
predstavljaju idealni kratak spoj i kao rezultat toga dolazi do promene napona na izlazu logikog
elementa pri optereenju. Prema tome, u realnim kolima, vrednosti logikih nivoa odstupaju od
idealnih. Slino ovome, vremena ukljuivanja i iskljuivanja su konana i zato se uticaji
upravljakih signala prenose sa izvesnim kanjenjima to dovodi do kanjenja u funkcionisanju
logikih elemenata. Ovi problemi se detaljno obrauju u narednim poglavljima.
Kombinacija prikazana u poslednjem redu tabele predstavlja nedozvoljeno stanje.
Prekidai K1 i K2 ne smeju biti istovremeno u stanju provoenja, jer bi to kratko spojio krajeve
naponskog izvora. Velika struja koja bi nastala kao posledica kratkog spoja, dovela bi do unitenja
prekidaa.
Prenosna karakteristika
Ako se upravljanje prekidaima logikog elementa prikazanog na slici 1-2a rei na taj
nain da zajedniki upravljaki signal otvara i zatvara te prekidae u protivfazi, dobija se
idealizovana prenosna karakteristika prikazana na slici 1-3a. Dok je vrednost ulaznog upravljakog
napona ispod polovine napona napajanja (VCC/2), vodi gornji prekida i izlaz je na visokom
logikom nivou. U suprotnom sluaju, kada je vrednost upravljakog napona iznad polovine napona
napajanja, provodi donji prekida i izlaz je na niskom logikom nivou. Znai, kada je na ulazu
nizak logiki nivo, izlaz je na visokom i suprotno. Dobijana karakteristika predstavlja NE logiku
funkciju (logiki invertor).
U realnim sluajevima otpornost prekidaa se menja kontinualno pod uticajem
upravljakih signala a ne skokovito. Rezultat ovoga je prenosna karakteristika realnih invertora koja
je prikazana na slici 1-3b. Na dijagramu su oznaene take kod kojih je vrednost nagiba -1. Izmeu
ovih vrednosti ulaznog napona (VIL, VIH) nagib krive je velik i zbog toga mala promena ulaznog
napona je u stanju da promeni nivo izlaznog napona sa logike nule na logiku jedinicu i obrnuto. Iz
ovog razloga nepoeljno je funkcionisanje digitalnih kola u ovom intervalu (zabranjena zona).
-9-
Vo
VDD
VDD
VDD/2
VDD
Vi
VIL VIH
(a)
VDD
Vi
(b)
Slika 1-3: Prenosne karakteristike logikog invertora: (a) idealan sluaj, (b) realan sluaj.
VTL VTH
VDD
Vi
(a)
(b)
Slika 1-4: (a) Prenosna karekteristika invertora sa histerezisom i (b) njegova ematska oznaka.
1.2.2.
Logiki nivoi
Logiki nivoi izlaza (VOL, VOH) digitalnih kola su priblino stabilni za intervale koje se
nalaze ispod i iznad zabranjene zone dok je napon napajanja konstantan i ne zavisi znaajno od
ulaznog signala ili promene struje optereenja. Naponska razlika izmeu dva nivoa se naziva
logikom amplitudom.
Kod paljivo projektovanih digitalnih kola nizak izlazni logiki nivo je u svakom sluaju
znaajno nii od maksimalne vrednosti niskog ulaznog logikog nivoa (VOL<VIL). Slino, visok
izlazni logiki nivo znaajno prevazilazi donju graninu vrednost visokog ulaznog logikog nivoa
(VOH>VIH).
Ova dva uslova je potrebno ispuniti da bi se elementi digitalnih kola (koji mogu biti
kompletna integrisana kola ili njihovi unutranji podsklopovi) mogli vezati u kaskadu. Obrada
signala kod digitalnih sistema se obino vri u vie stepena i zato je kaskadna veza digitalnih kola
neizbena.
1.2.3. Margine smetnji
Kako za ulazne tako i za izlazne logike nivoe kataloki podaci ne sadre konkretne
vrednosti ve su dati intervali koji su funkcije eventualnih promena u naponu napajanja, promene
optereenja, odstupanja u tehnolokom procesu i drugih uticajnih veliina. Prikazivanjem ovih
intervala jedan iznad drugog (slika 1-5), mogue je odrediti maksimalne amplitude smetnji (uma)
na koje su otporni ulazi digitalnih kola. Sve dok su vrednosti amplitude smetnji manje od margine
smetnji, logiki nivoi generisani na izlazu digitalnog kola e biti ispravni.
- 10 -
VOHMIN
VILMAX
VIHMIN
VDD
Prema slici, margina smetnji za nizak ulazni logiki nivo je data sledeom formulom:
NM 0 = VIL max VOL max
dok u sluaju visokog logikog nivoa margina smetnji je:
NM 1 = VOH min V IH min .
Kao to emo kasnije videti, velika margina smetnji predstavlja prednost ali zahteva veliki
napon napajanja koji dovodi do velike potronje. Korienje integrisanih kola sa velikom marginom
smetnji se preporuuje u industrijskim primenama gde je nivo smetnji znaajan.
1.2.4. Kanjenja
Ukljuivanje i iskljuivanje tranzistorskih prekidaa u digitalnim kolima se vri u
konanom vremenu. Kanjenje elektrinog kola je vreme koje protie izmeu pojave ulaznog
(upravljakog) signala i formiranja izlaznog logikog nivoa. Pored konanog vremena ukljuivanja
i iskljuivanja na kanjenja utiu i parazitne kapacitivnosti. Struje koje pune i prazne parazitne
kapacitivnosti su konane i zato se promene logikih nivoa deavaju u konanom vremenu.
Slika 1-6a prikazuje kanjenja jednog logikog invertora pri pobudi sa idealizovanim
ulaznim signalom (pravougaoni signal). Nakon pojave skoka u ulaznom signalu do promene
logikog nivoa izlaza dolazi tek posle proteklog vremena kanjenja tpHL odnosno tpLH. U realnosti
(slika 1-6b) nije mogue obezbediti idealni pravougaoni signal na ulazu digitalnih kola. Umesto
toga, signali koji se dovode na ulaze se dobijaju iz prethodnih stepena koji su veoma slini
posmatranom invertoru. U tom sluaju, kanjenje se rauna kao proteklo vreme izmeu preseka
signala sa linijom koja predstavlja polovinu logike amplitude ili napona napajanja (na slici 1-6b
obeleen sa 50%). Obino se razlikuju kanjenja pri silaznim (tpHL) i uzlaznim ivicama (tpLH).
50%
50%
t pHL
50%
t pLH
t pHL
(a)
t pLH
(b)
Slika 1-6: Kanjenja kod digitalnih kola: (a) pri idealizovanom ulaznom signalu, (b) u sluaju realnog
ulaznog signala.
Slika 1-7: Grafiki prikaz intervala kanjenja u katalokim podacima za digitalna kola.
PDP = PD t p .
Razlog zato se potronja navodi u pJ je to to su kanjenja red veliine ns a potronje su
reda veliine mW. Smatra se da je neka familija integrisanih kola bolja od druge ako je PDP njenih
logikih elemenata realizovanih u datoj tehnologiji manja od druge.
- 12 -
(a)
(b)
(c)
(d)
Slika 1-8: Kuita integrisanih kola: (a) DIL kuite, (b) SMD kuite tipa SO, (c) SMD kuite tipa PLCC,
(d) SMD kuite tipa BGA.
- 13 -
Td
Xd
X
Xd
Yid
Ystv
Prikazane pojave u nekim sluajevima mogu da budu i korisne: na ovaj nain mogue je
generisati kratkotrajne impulse u okolini uzlazne ivice datog signala bez korienja pasivnog
diferencijatora ili nekog monostabilnog kola. U nastavku e se vriti analiza razliitih hazardnih
pojava i traie se reenje za otklanjanje hazarda.
- 14 -
B
I
C
A
Td
II
Ad
(a)
B
t
A
BC
00
01
11
10
(c)
A
Ad
BC
00
0
01
11
10
AB
1
1
AC
redundantni
logicki proizvod
(d)
AdC
Y(bezkasnjenja)
AB+AC
AB+AdC
staticki hazard
BC
Y(otklonjen hazard)
AB+AdC+BC
(b)
Slika 1-10: Statiki hazard i njegovo otklanjanje: (a) minimizirana mrea, (b) vremenski dijagrami, (c)
Karnaugh-ova tabela sa oznaenim logikim proizvodima, (d) Karnaugh-ova tabela za dopunjenu mreu bez
hazarda.
Ako se zanemare sva kanjenja, na ulaz ILI kola dolazi logika jedinica ili iz jednog ili iz
drugog I kola i logiki nivo izlaza se odrava konstantno na logikoj jedinici (slika 1-10b). Ako se
ukljui u razmatranje kanjenje invertora, vrednost logikog proizvoda AB padne na nulu pre nego
to proizvod ( A)C postigne vrednost logike jedinice i kao rezultat, dobija se privremena logika
- 15 -
M1
Y1
Y=Y1Y2d
(a)
M2
Y2
Td
Y2d
Y1id
t
Idealna situacija
(bezhazarda)
Y2id
(b)
Yid=Y1idY2id
Y1
Y2
(c)
Stvarnasituacija
(sahazardom)
Y2d
Dinamicki hazard
Y=Y1Y2d
Kao primer posmatrajmo kolo koje je prikazano na slici 1-11a. Kolo sadri dve podmree
(M1 i M2). Pretpostavimo, da funkcija logike mree M1 stadri statiki hazard koji na izlazu
prouzrokuje privremenu logiku jedinicu. Ako pri tome promena na izlazu mree M2 kasni za Td2,
onda pomou dijagrama na slici 1-11c se moe pokazati, da vrednost izlaza Y nee trajno prei u
- 16 -
(a)
(b)
(c)
BC
00
01
11
10
BC
00
01
11
10
BC
00
01
11
10
Na slici 1-12b se analizira sluaj kada se prvo vrednost promenljive C opadne na logiku
nulu, zatim posle kratkog kanjenja vrednost promenljive B postaje logika jedinica. Ovaj prelaz,
pri kojoj se pojavljuje kratkotrajna lana nula, oznaena je strelicama u Karnaugh-ovoj tabeli.
Kada se vrednosti ulaznih promenljivih menjaju u suprotnom redosledu (prvo se menja B,
a zatim C) tada se, na osnovu slike 1-12c, moe zakljuiti da nee doi do pojave hazarda.
Pristup u otklanjanju funkcionalnih hazarda se moe sastojati od uvoenja planiranih kanjenja ali za sistematsko reenje ovog problema je neophodna sihronizacija ulaza sa taktom.
- 17 -
Na desnoj strani dijagrama su prikazane one familije integrisanih kola (TTL, S, LS, ...) koje
su se poele proizvoditi ezdesetih i sedamdesetih godina XX. veka i njihova popolarnost je ve
opala do danas. Na vrhu dijagrama se nalaze ona kola koja su razvijena osamdesetih godina i danas
su najzastupljeniji proizvodi u industriji.
Na levoj strani su prikazane familije integrisanih kola u povoju koje su izraene novim i
obeavajuim tehnologijama. Veina prikazanih familija integrisanih kola se izrauju u CMOS
tehnologiji zbog manje potronje i bolje prenosne karakteristike. Danas se bipolarne tehnologije
najvie primenjuju u onim oblastima gde su potrebne velike struje za pobudu.
1.4.2. Podela prema naponu napajanja
Za novo razvijena kola je karakteristino da se smanjuju vrednosti napona napajanja i
umesto jedne konstantne vrednosti mogu da se primenjuju u irem intervalu napona. Podela familija
integrisanih kola prema naponu napajanja je prikazana na slici 1-14.
Krugovi na dijagramu oznaavaju one vrednosti napona napajanja koje obezbeuju
optimalno funkcionisanje integrisanih kola iz date familje. Sivi segment predstavlja onaj opseg
napona napajanja za koje su parametri integrisanog kola unutar deklarisanih vrednosti. Unutar
svetlog segmenta integrisano kolo je jo uvek funkcionalno ali su mogua odstupanja od deklarisanih vrednosti u nekim parametrima. Crna linija oznaava granice do koje integrisano kolo
podnosi sve ulazne i izlazne prenapone bez oteenja.
- 18 -
Slika 1-15: Logiki nivoi pojedinih familija integrisanih kola i njihova meusobna kompatibilnost.
- 19 -
Slika 1-16: Zavisnost kanjenja od primenjenog napona napajanja za razne familije logikih kola.
- 20 -
Slika 1-17: Izbor logikih funkcija realizovanih u raznim familijama logikih kola.
- 21 -
2. Kombinacione mree
Kombinacione mree su digitalna kola kod kojih se vrednost izlaza odreuje na osnovu
trenutne vrednosti ulaza. U realnosti je potrebno neko odreeno vreme (zbog kanjenja, poglavlje
1.3) za formiranje vaeeg izlaznog logikog nivoa posle svake promene vrednosti ulaza ali nakon
toga vrednost izlaza je nezavisna od prethodnih vrednosti ulaza. Ovo je naglaeno zbog toga jer
ponaanje sekvencijalnih mrea (3. glava) odstupa od navedenog.
Vrste kombinacionih mrea koje se obrauju u ovoj glavi se proizvode od ezdesetih
godina u obliku SSI i MSI funkcionalnih jedinica. Njihova primena se ne ograniava samo na
izgradnju digitalnih ureaja upotrebom SSI i MSI integrisanih kola. Ova reenja se takoe nalaze i u
strukturi mikrokontrolera, mikroprocesora i PLD-ova. Navedene funkcije se pojavljuju i u jezicima
za opis hardvera koji se koriste pri programiranju PLD-ova (III deo).
(a)
(b)
U jednostavnijim sluajevima kola za sprezanje zahtevaju samo jedan napon napajanja. Ako
je potrebno povezati dve logike jedinice sa razliitim naponima napajanja, ulazni i izlazni deo kola
za sprezanje se povezuje na posebne izvore napajanja.
2.1.2. Kola za sprezanje sa tri stanja
Kada se iz vie izvora (A, B, C, D) prenosi signal prema jedinstvenom korisniku (L) preko
jednog zajednikog provodnika na nain kako je prikazan na slici 2-2, neophodno je koristiti kola za
sprezanje sa tri stanja. Samo jedno kolo za sprezanje sa tri stanja je aktivno u nekom trenutku, dok
se ostali dre u treem stanju (stanje visoke impedanse). Aktivacija se vri pomou signala dozvole
(engl. enable) EA, EB, EC, ED.
Slika 2-2: Prenos signala preko
zajednikog provodnika korienjem
kola za sprezanje sa tri stanja.
EA
EB
EC
ED
- 23 -
(a)
(b)
(c)
Slika 2-3: Vrste kola za sprezanje sa tri stanja.
(d)
2.2. Dekoder
Dekoderi su kombinacione mree sa vie ulaza i izlaza, gde svaka dozvoljena kombinacija
ulaznih promenljivih aktivira poseban izlaz.
2.2.1. Potpuni dekoder
Ulazi potpunog dekodera su binarno kodirani brojevi. Ako je broj ulaznih linija potpunog
dekodera jednak n, onda je broj moguih varijacija logikih nivoa 2n i zato je broj izlaznih linija
jednak 2n. Za svaku ulaznu kombinaciju uvek je samo jedna izlazna linija aktivna. Kombinaciona
tabela potpunog dekodera sa tri ulaza i osam izlaza (3/8) je prikazana u tabeli 2-1.
A2
0
0
0
0
1
1
1
1
A1
0
0
1
1
0
0
1
1
A0
0
1
0
1
0
1
0
1
Y7
0
0
0
0
0
0
0
1
Y6
0
0
0
0
0
0
1
0
Y5
0
0
0
0
0
1
0
0
Y4
0
0
0
0
1
0
0
0
Y3
0
0
0
1
0
0
0
0
Y2
0
0
1
0
0
0
0
0
Y1
0
1
0
0
0
0
0
0
Y0
1
0
0
0
0
0
0
0
Y 0 = A2 A1 A0
Y 1 = A2 A1 A0
Y 2 = A2 A1 A0
Y 3 = A2 A1 A0
Y 4 = A2 A1 A0
Y 5 = A2 A1 A0
Y 6 = A2 A1 A0
Y 7 = A2 A1 A0
- 24 -
A1
A0
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
Y0
Y1
Y2
Y3
DEK
Y4
3/8
Y5
Y6
EN
Y7
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
Y0
Y1
Y2
Y3
DEK
Y4
3/8
Y5
Y6
EN
Y7
Y8
Y9
Y10
Y11
Y12
Y13
Y14
Y15
A0
A1
A2
A0
A1
A2
A2
A1
A0
- 25 -
A2
0
0
0
0
1
1
1
1
0
0
A1
0
0
1
1
0
0
1
1
0
0
A0
0
1
0
1
0
1
0
1
0
1
Y9
0
0
0
0
0
0
0
0
0
1
Y8
0
0
0
0
0
0
0
0
1
0
Y7
0
0
0
0
0
0
0
1
0
0
Y6
0
0
0
0
0
0
1
0
0
0
Y5
0
0
0
0
0
1
0
0
0
0
Y4
0
0
0
0
1
0
0
0
0
0
Y3
0
0
0
1
0
0
0
0
0
0
Y2
0
0
1
0
0
0
0
0
0
0
Y1
0
1
0
0
0
0
0
0
0
0
Y0
1
0
0
0
0
0
0
0
0
0
A2
A1
A0
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
Y8
Y9
A0
A1
A2
Y0
Y1
Y2
Y3
DEK
Y4
3/8
Y5
Y6
Y7
ABC
ABC
ABC
- 26 -
A7
0
0
0
0
0
0
0
1
A6
0
0
0
0
0
0
1
0
A5
0
0
0
0
0
1
0
0
A4
0
0
0
0
1
0
0
0
A3
0
0
0
1
0
0
0
0
A2
0
0
1
0
0
0
0
0
A1
0
1
0
0
0
0
0
0
A0
1
0
0
0
0
0
0
0
Y2
0
0
0
0
1
1
1
1
Y1
0
0
1
1
0
0
1
1
Y0
0
1
0
1
0
1
0
1
Y0=A1+A3+A5+A7
Y1=A2+A3+A6+A7
Y2=A4+A5+A6+A7
Tabela 2-3: Kombinaciona tabela kodera 8/3 i odgovarajue izlazne logike funkcije.
Logika ema koja se dobija na osnovu prethodnih jednaina za koder 8/3 je prikazana na
slici 2-9. Logika vrednost izlaza je netana ako na ulazima logike mree ima vie od jedne
jedinice. Zbog ovih kombinacija, koder se moe proiriti sa jednim logikim kolom koje upozorava
na nedozvoljene kombinacije na ulazima.
A0
A1
A2
A3
A4
A5
A6
A7
Y2
Y1
Y0
- 27 -
Y3
0
0
0
0
0
0
0
0
1
1
Y2
0
0
0
0
1
1
1
1
0
0
Y1
0
0
1
1
0
0
1
1
0
0
Y0
0
1
0
1
0
1
0
1
0
1
Y0=A1+A3+A5+A7+A9
Y1=A2+A3+A6+A7
Y2=A4+A5+A6+A7
Y3=A8+A9
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
Y2
Y1
Y0
- 28 -
Prirodni
Gray-ov
binarni kod kod
000
000
001
001
010
011
011
010
100
110
101
111
110
101
111
100
DEKODER3/8
B0
B1
B2
KODER
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
A0
A1
A2
G2
G1
G0
G2 = B2 B1 B0 + B2 B1 B0 + B2 B1 B0 + B2 B1 B0
G1 = B2 B1 B0 + B2 B1 B0 + B2 B1 B0 + B2 B1 B0
G0 = B2 B1 B0 + B2 B1 B0 + B2 B1 B0 + B2 B1 B0
Pojednostavljena
ema
pretvaraa koda je prikazana na slici
2-12a dok minimizovana logika
mrea prikazana na slici 2-12b
obavlja inverznu operaciju u odnosu
na prethodnu mreu.
G2
G1
B1
G0
B0
(a)
G2
B2
B1
G1
B0
G0
(b)
Slika 2-17: Minimizovani pretvarai koda: (a) iz binarnog u Gray-ov kod i (b) iz Gray-ovog koda u binarni.
- 29 -
Cifra
0
1
2
3
4
5
6
7
8
9
DCBA
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
abcdefg
1111110
0110000
1101101
1111001
0110011
1011011
1011111
1110000
1111111
1111011
g = D + AB + BC + BC
Dobijene logike funkcije se sintetizuju dvostepenim I-ILI logikim mreama koja se
zatim integriu u jedno MSI kolo. Ova kola obino sadre jo i jedan upravljaki ulaz, pomou
kojeg se mogu svi segmenti istovremeno iskljuiti. Korist od upravljakog ulaza je velika ako je
potrebno istovremeno prikazati vie cifara.
Ako se na ulaz reenja koje je prikazano gore dovodi nepostojei kod, prikaz na displeju
e biti besmislen. Malim promenama je mogue reiti da displej prikazuje simbole sa slike 2-14 za
kodne rei heksadecimalnog brojnog sistema od 10 do 15.
Slika 2-14: Nain prikazivanja cifara heksadecimalnog
brojnog sistema vee od devet pomou sedmosegmentnog
displeja.
2.5. Multipleksor
Multipleksor se moe prikazati kao viepoloajni prekida (slika 2-15). Prosleuje signale
(D0...Dn-1) sa svojih ulaza na izlaz. Selekcioni ulazi multipleksora (S0...Sm-1) odreuju ulazni signal
koji e se u datom momentu proslediti na izlaz.
- 30 -
D0
D1
MUX
Dn-1
Dn-1
Sm-1
SEL
(a)
S1 S0
(b)
Realizacija kola se vri korienjem osam komada troulaznih I kola i jednog osmoulaznog
ILI kola. Logika mrea prikazana na slici 2-16 realizuje dati multipleksor, sa time da je izveden i
ulaz za dozvolu rada (E) pomou kojeg je mogue stanje izlaza prevesti u logiku nulu nezavisno
od ulaza za podatke i selekcionih ulaza. Ulaz za dozvolu se moe koristiti i za proirivanje
multipleksora. Ovo je znaajno kada je potreban multipleksor sa vie ulaza za podatke od onoga to
je na raspolaganju u integrisanoj formi (obino se proizvode do 16 ulaza).
D0
D1
D2
D3
D4
D5
D6
D7
S2
S1
S0
Y
E
Slika 2-16: Logika mrea koja realizuje multipleksor sa osam ulaza za podatke.
- 31 -
- 32 -
"1"
D0
D1
D2
D3
D4
D5
D6
D7
A
B
C
MUX
8/1
Y
S0
S1
S2
D0
D1
D2
D3
"1"
MUX
4/1
S0
S1
B
C
2.6. Demultipleksor
Uloga demultipleksora je suprotna od multipleksora: informacija se sa jedne linije podatka
prosleuje na jedan od vie izlaznih linija podataka. Princip funkcionisanja se moe prikazati
pomou jednog viepoloajnog prekidaa (slika 2-20a). Biranje izlazne linije podatka se vri
odgovarajuim kodom na selekcionim ulazima (slika 2-20b, ulazi S0...Sm-1).
Y0
Y1
Y2
Y0
Y1
DMX
1/n
Yn-1
Yn-1
S0 S1
SEL
(a)
Sm-1
(b)
- 33 -
MUX
n/1
Y0
Y1
DMX
1/n
Dn-1
Yn-1
S0 S1
Sm-1
S0 S1
Sm-1
X
VDD
UL./IZL.
UL./IZL.
UL./IZL.
UL./IZL.
VSS
(a)
(b)
Slika 2-22: (a) Konstrukcija analognog prekidaa pomou N kanalnog i P kanalnog mosfeta i (b) ematska
oznaka analognog prekidaa.
- 34 -
Am-1
DEK
m
m/2
Y0
Y1
Y2
Yn-1
S
Wn-1
W1
W0
- 35 -
3. Sekvencijalne mree
Sekvencijalne mree su digitalna kola koja poseduju osobinu pamenja (memorisanja).
Digitalno kolo pamti odreene informacije o stanju samog kola u prolosti i o upravljakim
signalima dovedenim u prosloti. Izlazni signali sekvencijalne mree se formiraju na osnovu
zapamene informacije i novih vrednosti logikih nivoa na ulazima. Sekvencijalne mree se
redovno nazivaju i logikim automatima jer se esto primenjuju u oblasti automatskog upravljanja.
Kapacitet sekvencijalnih mrea za pamenje je najee mali i obino je re o svega
nekoliko bita. Kod n-bitnih sekvencijalnih mrea postoje 2n razliitih stanja. Zbog konanog broja
stanja, sekvencijalne mree se jo nazivaju i automatima sa konanim brojem stanja (engl. finitestate machine) .
Pored memorije, sekvencijalne mree sadre i kombinacione elemente (mree). Na osnovu
unutranje strukture razlikujemo dve vrste logikih automata. Na slici 3-1 je prikazana blok ema
Mealy-jevog automata. Kolo, pored memorije, sadri i dve kombinacione mree: jednu na ulazu,
drugu na izlazu. Ulazna kombinaciona mrea odreuje novo stanje automata na osnovu trenutne
vrednosti logikih nivoa na ulazima i na osnovu trenutnog stanja automata. Istovremeno, izlazna
kombinaciona mrea definie izlazne digitalne signale na osnovu trenutne vrednosti signala na
ulazima i trenutnog stanja automata.
ULAZI
ULAZNA
KOMBINACIONA
MREZA
MEMORIJA
(REGISTARSTANJA)
IZLAZNA
KOMBINACIONA
MREZA
IZLAZI
TAKT
Na slici 3-2 je prikazan Moore-ov automat koji je jednostavnije konstrukcije. Kod ovog
tipa se vrednosti izlaza formiraju samo na osnovu trenutnog stanja automata. Pojednostavljeni
sluaj Moore-ovog automata se dobija kada se izostavlja izlazna kombinaciona mrea a izlazi
memorije (svi ili neki) su ujedno i izlazi automata.
ULAZI
ULAZNA
KOMBINACIONA
MREZA
MEMORIJA
(REGISTARSTANJA)
IZLAZNA
KOMBINACIONA
MREZA
IZLAZI
TAKT
(a)
S
Qn+1
0
0
1
1
0
1
0
1
Qn
0
1
0
(b)
Qn+1
Qn+1
Qn
1
0
0
0
0
1
1
0
1
0
1
1
0
1
Qn
ZABRANJENO
Qn+1
1
1
0
Qn
ZABRANJENO
Slika 3-3: SR latch kolo sa ukrtenim povezivanjem logikih kola: (a) NILI kolima, (b) NI kolima.
- 37 -
Q
R
Dok je signal Enable na visokom logikom nivou svaka promena vrednosti ulaza S i R
utie na stanje latch kola. Ova vrsta sinhronizacije se naziva okidanjem na naponski nivo. Kolo koje
se dobija na ovaj nain se naziva transparentno latch kolo jer je providno za set i reset signale sve
dok je upravljaki signal aktivan.
Nedozvoljene kombinacije ulaznih signala je mogue izbei dodavanjem invertora
prethodnom kolu (slika 3-5a). Uloga invertora je da zatiti kolo od zabranjene kombinacije (kada su
istovremeno prisutni set i reset signali na ulazima). Ovo kolo se naziva D latch kolo jer poseduje
samo jedan ulaz za podatak (Data). Uobiajena ematska oznaka D latch-a je data na slici 3-5b, a
princip rada se moe shvatiti na osnovu dijagrama na slici 3-5c. Osobina transparencije je prisutna i
kod ovog kola. Ulaz Data nema uticaja na izlaz kada je signal dozvole odsutan, dok u suprotnom
sluaju signal sa ulaza (sa malim kanjenjem) prelazi na izlaz. Signal koji je prisutan na izlazu u
trenutku silazne ivice signala dozvole ostaje vaei sve dok signal dozvole ne postane ponovo
aktivan.
Data
Data
Enable
10
20
30
40
50
10
20
30
40
50
10
20
30
40
50
Enable
t
0
(a)
Data
Enable
Q
t
0
(b)
(c)
Slika 3-5: D latch kolo sa sinhronizacijom (a), ematska oznaka (b) i dijagrami za objanjenje
principa rada (c).
3.1.2. Flip-flop-ovi
Flip-flop-ovi su elementarne memorije koje se okidaju na ivicu upravljakog signala. Upis
podatka se vri na uzlaznu ili na silaznu ivicu upravljakog signala, zavisno od realizacije kola.
Podatak koji se upisuje je zadat ulaznim signalom ili ulaznim signalima. U odnosu na izvedbu
ulaza, postoje nekoliko tipova flip-flop-ova. Kao prvi primer, naveemo D flip-flop koji je u
izvesnom srodstvu sa D latch kolom. ematska oznaka D flip-flop-a, tabela koja prikazuje njegov
princip rada i odgovarajui vremenski dijagrami su prikazani na slici 3-6. Kod svake uzlazne ivice
takt signala (na dijagramu je to oznaeno isprekidanom linijom) se upisuje vrednost ulaza D u izlaz
Q. Strelica na ematskoj oznaci uvek oznaava ulaz za takt signal (clk).
- 38 -
clk
clk
t
D
(a)
D
0
0
1
1
Qn
0
1
0
1
Qn+1
0
0
1
1
(c)
(b)
D flip-flop se moe realizovati pomou kaskadne veze dva D latch kola kao to je
prikazano na slici 3-7 (master-slave veza). Sve dok je takt signal na visokom logikom nivou, izlaz
Q prvog latch kola (master) neprekidno preuzima vrednost ulaza D ali je istovremeno drugo latch
kolo u zatvorenom stanju jer je signal dozvole doveden preko jednog invertora.
Data
Master
D
Slave
Q
D latch
Enable
D latch
Q
Enable
clk
Posle silazne ivice takt signala prvo latch kolo se zatvara (zadrava stanje koje je bilo
aktivno pri silaznoj ivici takt signala), dok drugo (slave) latch kolo postaje transparentno.
Posmatrajui spolja moe se rei da upis u flip-flop se vri na silaznoj ivici takt signala.
Za realizaciju D flip-flop-a postoje i druga reenja koja su bolja jer sadre manji broj
logikih kapija i vremena kanjenja su im manja. Slika 3-8 prikazuje jedno takvo kolo koje se okida
uzlaznom ivicom. Sve dok je takt signal na niskom logikom nivou i ulazi S i R su na visokom
logikom nivou i nije mogue izvriti upis u izlazno latch kolo. Po dve logike kapije su prisutne na
ulazima koje se takoe mogu smatrati latch kolima ija je funkcija priprema signala za upis u
izlazno latch kolo. U trenutku promene takt signala na visoki logiki nivo vri se upis pripremljene
vrednosti ulaznog signala u izlazno latch kolo.
clk
R
- 39 -
Qn
Qn+1
0
0
1
1
0
1
0
1
Q
Q
Q
Q
Q
0
1
nijedef.
(a)
(b)
clk
Qn
Qn+1
0
0
1
1
0
1
0
1
Q
Q
Q
Q
Q
0
1
Q
(a)
(b)
T flip-flop poseduje samo jedan ulaz za podatke (slika 3-11a) i zato se njegova kombinaciona tabela sastoji samo od dva reda (slika 3-11b). Ako je na ulazu T logika jedinica onda se
vrednost izlaza invertuje pri svakoj uzlaznoj ivici takt signala, dok za logiku nulu vrednost izlaza
ostaje nepromenjena.
T
clk
Qn
Qn+1
0
1
Q
Q
Q
Q
(a)
(b)
Obino se dva ili etiri flip-flop-a smetaju u zajedniko kuite kod MSI tehnologije.
Pored sinhronizacionih ulaza redovno ovi flip-flop-ovi sadre i asinhrone set i/ili reset ulaze. Na
slici 3-12 su prikazana ematska oznaka i kombinaciona tabela D flip-flop-a sa asinhronim reset
ulazom. Reset ulaz je nezavisan od takt signala. U prikazanom primeru mali krug na Reset ulazu na
ematskoj oznaci ukazuje na osobinu da se proces resetovanja aktivira niskim logikim nivoom.
D
CLK R Q
(a)
- 40 -
R CLK
0
1
1
X
0
1
(b)
Qn Qn+1
0
0
1
1
1
0
J
K
CLK
T
R
CLK
(a)
(c)
J
D
CLK
CLK
(b)
(d)
U dananjoj VLSI tehnologiji vie nije presudan broj korienih logikih kapija za
realizaciju kombinacionog dela sekvencijalnih mea. ak ni minimizacija broja korienih flip-flopova vie nije bitna pri realizaciji. Mnogo je vanije da se nain realizacije prilagodi unutranjoj
strukturi programabilnog logikog kola (PLD) i da se dobije to preglednije i pouzdanije reenje.
- 41 -
01/0
10/0
11/0
a
(0)
b
(1)
00/0
11/1
(a)
(b)
00, 01, 10
(c)
01
10
11
a/0
(00)
00
00
b/0
(01)
11
c/1
(10)
01, 10, 11
Trenutno
Sledee stanje
Izlaz Y
stanje
BA= 00 01 10 11 BA= 00 01 10 11
a (0)
b a a a
0 0 0 0
b (1)
a a a a
0 0 0 1
Trenutno
Sledee stanje
Izlaz
stanje
BA= 00 01 10 11
Y
a (00)
b a a a
0
b (01)
a a a c
0
c (10)
b a a a
1
U tabelu je potrebno upisati sva mogua stanja sekvencijalne mree i sve kombinacije
ulaznih signala. Zatim za sve te kombinacije se odreuju naredna stanja i vrednosti izlaznih
promenljivih. U tabelama 3-1 i 3-2 nazivi trenutnih stanja su upisana u prvu kolonu (a, b odnosno a,
b, c) a odgovarajui kodovi stanja su dati u zagradama. U sredinjem delu tabele se nalaze naredna
stanja, koja kod oba modela zavise i od vrednosti ulaznih promenljivih. Zbog toga su iznad
narednih stanja navedene pripadajue kombinacije ulaznih signala.
Na desnoj strani tabele su definisane vrednosti izlazne promenljive (Y). Kod Mealy-jevog
modela (tabela 3-1) vrednosti izlaza zavise i od trenutnih vrednosti ulaza. Zato su iznad vrednosti
izlaza date sve mogue kombinacije ulaza. Kod Moore-ovog automata vrednosti izlaza su
- 42 -
- 43 -
Qn BA Qn+1=D Y
0 00
1
0
01
0
0
10
0
0
11
0
0
1 00
0
0
01
0
0
10
0
0
11
0
1
Vrednosti izlaznih promenljivih kod Moore-ovog modela zavise samo od trenutnog stanja
mree. Najjednostavniji sluaj je kada su izlazi flip-flop-ova ujedno i izlazi samog automata. Ako to
nije sluaj, izlazni signali se generiu pomou odgovarajue kombinacione mree. Ulazi
kombinacione mree su stanja flip-flop-ova. Na osnovu tabele 3-4 izlazna jednaina Moore-ovog
automata (slika 3-14c) posle minimizacije je:
Y = Q1Q0 .
3.2.6. Formiranje kompletne sekvencijalne mree
Crtanje kompletne sekvencijalne mree se vri sumiranjem dosadanjih rezultata.
Memorijski elementi koji se postavljaju prema odabranom kodu, predstavljaju centralni deo mree.
Na osnovu upravljakih jednaina za flip-flop-ove se crta ulazna kombinaciona mrea. Na kraju,
prema izlaznim jednaina-ma se formira izlazna kombinaciona mrea. Logika mrea Mealy-jevog
automata (slika 3-14b) je
prikazana na slici 3-15.
Slino,
odgovarajua
logika ema Moore-ovog
A
D
Q
automata (slika 3-14c) je
prikazana na slici 3-16.
B
CLK
- 44 -
B
A
D1
Q1
D0
Q0
Y
CLK
Slika 3-16: Logika mrea koja realizuje Moore-ov automat dat na slici 3-14c.
3.3. Registri
Registri su sekvencijalne mree koje slue za privremeno pamenje male koliine podataka. Pamenje podataka obino vri niz D flip-flop-ova ili neki drugi tipovi flip-flop-ova ili latch
kola. Upis i itanje podataka se vri serijski (bit po bit) ili paralelno (svaki bit istovremeno). Postoje
stacionarni i shift registri. Pored pamenja, shift registri su u stanju i da pomeraju podatke bit po bit.
3.3.1. Obini (stacionarni) registri
Na slici 3-17 je prikazana logika ema stacionarnog registra kapaciteta od n bita. Za
pamenje se koriste D flip-flop-ovi kojima se upravlja zajednikim takt (CLK) signalom. Upis se
vri paralelno pri silaznoj ivici takt signala. Sadraj flip-flop-ova se moe anulirati pomou
asinhronih reset ulaza koji su povezani na CLR signal. itanje podataka sa izlaza je uvek mogue,
osim jednog kratkog vremenskog intervala posle upisa, dok izlazi flip-flop-ova ne stignu u novo
stabilno stanje. Ako je potrebno, korienjem takvih flip-flop-ova koji poseduju izlaze sa tri stanja,
mogue je vie registara povezati na jednu zajedniku liniju podataka.
D0
D1
D
CLK
CLR
Dn-1
D
Q0
Q1
Qn-1
RIN
LIN
D
CLK
QA
QB
QC
QD
Q1
Q2
Qn-1
CLK
- 46 -
Q1
Q2
STANJE
0
1
2
3
4
5
6
7
0
Q3
CLK
(a)
Q0
0
1
1
1
1
0
0
0
0
Q1
0
0
1
1
1
1
0
0
0
Q2
0
0
0
1
1
1
1
0
0
Q3
0
0
0
0
1
1
1
1
0
(b)
Slika 3-20: Jedno mogue reenje (a) za logiku emu Donsonovog krunog registra (brojaa) i (b)
odgovarajua tabela stanja.
3.4. Brojai
Registri koji pod uticajem upravljakih impulsa prolaze kroz unapred odreena stanja se
nazivaju brojaima. Upravljaki signali mogu da potiu iz izvora takt signala ili iz bilo kog drugog
kola koje je u stanju da generie digitalne signale. Impulsi su obino periodini, ali brojai mogu da
rade i pod uticajem impulsa koji se pojavljuju u sluajnim vremenskim trenucima. Pored takt ulaza
pojedini brojai imaju i dodatne ulaze kojima se odreuje nain brojanja.
Redosled stanja brojaa moe da bude jednak redosledu binarnih brojeva (binarni broja),
ali po potrebi je mogue formirati i proizvoljan redosled. Broj razliitih stanja kod brojaa se naziva
moduo brojaa. Pored memorijskih elemenata brojai obino sadre i ulaznu kombinacionu mreu
koja obezbeuje odgovarajue promene stanja u registru koji je centralni deo brojaa. Obino,
izlazna kombinaciona mrea koja je svojstvena sekvencijalnim mreama ne postoji kod brojaa.
Izlazi memorijskih elemenata su ujedno i izlazi brojaa. Znai, brojai su mree tipa Moore.
Brojae je mogue svrstati u dve kategorije: asinhroni (serijski) i sinhroni (paralelni)
brojai.
3.4.1. Asinhroni (serijski) brojai
Pri realizaciji asinhronih brojaa flip-flop-ovi nemaju zajedniki upravljaki signal, nego
se izlaz prethodnog flip-flop-a vee na takt ulaz narednog flip-flop-a. Na ovaj nain se kompleksnost
ulazne kombinacione mree znaajno smanjuje ili ak postaje suvian.
Najjednostavnija struktura asinhronog brojaa se dobija kaskadnom vezom flip-flop-ova
(slika 3-21). Upravljaki signal se dovodi na takt ulaz prvog memorijskog elementa, a izlazi
pojedinih flip-flop-ova se povezuju na takt ulaze narednih flip-flop-ova. Ako je potrebno, poetno
stanje brojaa je mogue podesiti reset (CLR) signalom koji se istovremeno dovodi na asihnrone
reset ulaze svih flip-flop-ova.
"1"
"1"
T
CLK
"1"
CLR
Q0
Q1
Q2
Ukoliko korieni flip-flop-ovi reaguju na silaznu ivicu takt signala, broja e brojati
unapred u prironom binarnom kodu. Za sluaj asinhronog brojaa prikazanog na slici 3-21
- 47 -
CLK
Q0
Q1
Q2
0
Q2
0
0
0
0
1
1
1
1
Q1
0
0
1
1
0
0
1
1
Q0
0
1
0
1
0
1
0
1
Na vremenskim dijagramima koji su prikazani na slici 3-22 su zanemarena kanjenja flipflop-ova. Zbog kaskadne veze, pojedina stanja se pojavljuju sa odreenim vremenom kanjenja u
odnosu na upravljaki signal. Ako se snimaju stanja pojedinih flip-flop-ova za vreme prelaznog
procesa, dobijeni rezultat e najverovatnije biti pogrean.
Sa jedne strane, reenje ovog problema se sastoji u ograniavanju frekvencije takt signala
(to obezbeuje dovoljno vremena za iezavanje hazardnih pojava), dok sa druge strane, iitavanje
vrednosti je potrebno vriti neposredno pre pojave narednog upravljakog signala. Kada se
asinhroni broja koristi kao delitelj frekvencije (npr. na slici 3-21 samo izlaz Q2 se vodi dalje),
frekvencija takt signala je ograniena samo sa vremenom kanjenja prvog flip-flop-a.
3.4.2. Sinhroni (paralelni) brojai
Kod sinhronih brojaa takt ulazi pojedinih flip-flop-ova su povezani na zajedniki
upravljaki signal i tako se postie da vrednosti izlaza priblino u istom trenutku postanu vaei. Za
promenu stanja flip-flop-ova u odgovarajuim vremenskim trenucima, neophodna je adekvatna
kombinaciona mrea. Kod binarnih brojaa (tabela 3-5) vrednost izlaza onog flip-flop-a koji je na
mestu najmanje znaajnog bita, menja se u svakoj periodi takt signala. Ovo se najlake realizuje T
flip-flop-om.
Ako se ceo broja gradi pomou T flip-flop-ova i ako je u datom momentu potrebno
menjati stanje nekog flip-flop-a, tada se na njegov ulaz dovodi logika jedinica. Posmatrajui
binarne brojeve na slici 3-26 moe se zakljuiti da bit vee teine se setuje samo kada su vrednosti
svih ostalih bitova sa manjim teinama na logikoj jedinici (npr. posle stanja 0111 sledi stanje
1000). Dekodiranje ovih kombinacija se vri pomou I kapija. Na taj nain je mogue formirati
sinhroni binarni broja koji je prikazan na slici 3-23. Do istog rezultata se dolazi i optom metodom
sinteze sekvencijalnih kola (objanjeno kod logikih automata).
- 48 -
K
Q
K
Q
K
Q
CLK
Q0
Q1
Q2
Q3
Ova ema je samo dvostepena: posle aktivne ivice takt signala potrebno je da proe samo
jedno kanjenje I kola i flip-flop-a kako bi vrednosti izlaza flip-flop-ova postale vaei.
Odgovarajuom promenom ulazne kombinacione mree kod sinhronih brojaa mogue je
postii brojanje unazad. Kod brojaa proizvedenih u MSI tehnologiji postoje i dvosmerna reenja:
kod ovih kola postoje dve posebne ulazne kombinacione mree za oba sluaja (brojanje napred i
nazad) i pomou jednog kontrolnog signala se odreuje koja e od te dve mree biti aktivna.
esto se javlja potreba za poveanjem modula brojanja. MSI kola za brojanje obino
sadre i odgovarajue izlaze (prenos, engl.: carry) i ulaze za kaskadno vezivanje pojedinih
brojakih modula. Prethodni modul, pomou bita prenosa obavetava naredni modul o tome da je
stigao do najveeg broja i da naredni stepen mora da inkrementira vrednost sopstvenog registra.
Moduo brojanja brojaa sastavljenog od n memorijskih elemenata je mogue smanjiti sa
n
2 . Za to postoje dva naina. Prvi nain je primenom metode koja je prikazana kod projektovanja
logikih automata. Taj postupak se sastoji od formiranja dijagrama stanja i tabele stanja. Kod druge
metode polazi se od gotovog brojaa modula 2n, koji na uobiajeni nain funkcionie do
predvienog zadnjeg stanja. Na broja se dodaje jedan dekoder koji je posebno projektovan za
detektovanje zadnjeg stanja (slika 3-24). Kada se detektuje zadnje stanje, dekoder sinhrono ili
asinhrono resetuje sve flip-flop-ove. Posle toga se proces brojanja nastavlja sa nule. U prikazanom
sluaju realizovani broja je modula deset jer se posle devetog stanja (1001) vri paralelni upis
nultih vrednosti preko linija (D0...D3).
CLK
CETVOROBITNI
BINARNI
BROJAC
D0
D1
D2
D3
LOAD
- 49 -
Q0
Q1
Q2
Q3
4. Sloene mree
Digitalna kola koja se razmatraju u nastavku se nazivaju sloenim mreama jer sadre
kako kombinacione tako i sekvencijalne elemente. Memorije su po prirodi sekvencijalne mree kod
kojih se upravljanje realizuje kombinacionim mreama. Aritmetika kola se prvenstveno realizuju
kombinacionim mreama pri emu se za njihovo upravljanje koriste logiki automati. D/A i A/D
pretvarai pored obe vrste (kombinacionih i sekvencijalnih) digitalnih elemenata sadre i analogna
kola.
4.1. Memorije
Memorije su digitalna kola koja slue za trajno ili privremeno pamenje velike koliine
podataka. Uloga registara (poglavlje 3.3) je takoe pamenje podataka, ali pamenje velikih
koliina podataka zahteva efikasniju organizaciju. Danas su ureaji ija je osnovna namena
pamenje podataka veoma raznovrsni (tu spadaju i magnetni- i optiki mediji). Ovde se razmatraju
samo poluprovodnike memorije.
Za sve memorije vai blok dijagram koji je prikazan na slici 4-1. Pomou adresnih linija
(na emi oznaene sa C) se odreuje elementarna elija memorije sa kojom se eli komunicirati.
Preko upravljakih ulaza V se odreuje svrha komunikacije: upis, itanje ili dobijanje povratnih
informacija o stanju memorije (npr. zauzetost). Pomou linija A se prosleuju podaci od drugog
kola ka memoriji ili obrnuto.
random access). Pomou adresiranja mogue je pristupiti bilo kojoj memorijskoj lokaciji za
priblino isto vreme ali je cena toga prilino sloena mrea za adresiranje. Znaajno se
smanjuje kompleksnost memorije ako se podaci serijski upisuju odnosno iitavaju. Ove
memorije poseduju serijski pristup iji je nedostatak da se vreme pristupa poveava sa
poveanjem adrese traene memorijske lokacije.
Veina dananjih memorijskih kola se proizvode u CMOS tehnologiji ali postoje i kola
izraena u bipolarnoj tehnologiji. Veliina podatka emu se moe pristupiti u jednom
koraku (jedno adresiranje ili inkrementiranje adrese) je jedan bit ili vie bita (npr. osam ili
esnaest).
Najvaniji parametri memorijskih kola, pored vrednosti napona napajanja i logikih nivoa,
su kapacitet (broj memorijskih elija) i brzina (upis, itanje i brisanje).
Centralni deo memorije je polje memorijskih elija, koje se sastoji od potrebnog broja
elementarnih memorija. Adresa elije kojoj se eli pristupiti ulazi u adresni dekoder preko adresnog
kola za spregu (bafer). Uloga dekodera je selektovanje (identifikacija) elije sa kojom se eli
ostvariti komunikacija. Sloenost dekodera veoma brzo raste (kvadratno) sa poveanjem broja
memorijskih elija. Zato se elemetarne memorije postavljaju u matrini oblik umesto rednog
(linearnog) rasporeda. U tom sluaju, adresiranje se vri pomou dva manja dekodera (dekoderi
reda i kolone). Ukupan broj korienih logikih kola za realizaciju ta dva dekodera je znaajno
manji nego u sluaju jednog dekodera. Ovaj pristup podrazumeva postojanje dva adresna ulaza za
svaku memorijsku eliju. Zbog tenje za to manjim kuitima, adresne linije dinamikih memorija
velikih kapaciteta se multipleksiraju: posebno se uitavaju i pamte adrese kolona i redova.
Unos podataka odnosno njihovo iitavanje se vri preko kola za spregu za podatke
(bafer). Obino se iste linije podataka koriste za komunikaciju u oba smera. Razlog za to je
uproavanje kuita. Prilikom upisa, podaci moraju biti stabilni ve neko vreme neposredno pre
upisa. Kod iitavanja neophodno je uzeti u obzir kanjenje koje postoji izmeu adresiranja i pojave
podataka na izlazu. Kataloki podaci sadre konkretne vrednosti ovih kanjenja.
Uloga upravljake jedinice je generisanje odgovarajuih upravljakih signala prilikom
upisa, itanja ili brisanja za selektovanu memorijsku eliju. Inicijalizacija upisa se vri pomou WE
(engl.: write enable) signala koji se alje upravljakoj jedinici memorije. Za itanje je potrebno
aktivirati signal OE (engl.: output enable). Upravljaka jedinica poseduje jo jedan ulaz sa nazivom
CS (engl.: chip select) pomou kojeg je mogue zaustaviti ili pokrenuti rad celog kola. Uloga ovog
ulaza je da omogui proirivanje kapaciteta memorije.
4.1.3. Proirivanje kapaciteta
Kapacitet memorije dostupan unutar jednog kuita je esto je nedovoljan. Ili je potrebno
poveati broj bitova (veliinu rei) koji se istovremeno iitavaju ili broj rei u memoriji koji se
moe adresirati. Proirivanje se postie korienjem vie memorijskih kola koja se povezuju na
odgovarajui nain na zajednikoj tampanoj ploi.
- 52 -
Slika 4-4: Poveanje broja adresabilnih memorijskih rei odgovarajuom vezom memorijskih kola.
- 53 -
sf
0
0
1
1
0
1
0
1
0
0
0
1
0
1
1
0
c
sf
(a)
(b)
Na osnovu ovih jednaina je nacrtana ema polusabiraa koja je prikazana na slici 4-5b.
Nedostatak polusabiraa je da se ne mogu povezati u kaskadu kako bi sabirali viebitne brojeve. Za
ovo je potrebno reiti sabiranje bita prenosa iz prethodnog polusabiraa sa bitovima sledeeg
polusabiraa. Na ovaj nain se dobija potpuni sabira za koji vae sledee jednaine:
s = a b ci
co = (a b )ci + ab
ci
co
(a)
co
(b)
Slika 4-6: (a) Logika ema potpunog sabiraa i (b)njegova ematska oznaka.
Kaskadnom vezom potpunih sabiraa na nain koji je prikazan na slici 4-7 mogue je
sabiranje viebitnih brojeva. Formiranje zbira kod date mree se vri paralelno, s tim da se bitovi
- 54 -
b3
a3
ci
co
s4
s3
b2
a2
co
ci
s
s2
b1
a1
co
ci
s
s1
b0
a0
co
ci
s
s0
4.2.2. Mnoai
Digitalni mnoai se mogu realizovati na vie naina. Mnoenje se moe svesti na uzastopno sabiranje: prvi mnoilac se mnoi sa pojedinanim bitovima drugog mnoioca i dobijeni
meurezultati se sabiraju. Ovakav mnoa se reava sekvencijalnom mreom koja pomou jednog
logikog automata usmerava tok podataka izmeu registara.
Mogue je konstruisati mnoa i primenom kombinacione mree. U ovom sluaju
neophodno je formirati takvu kombinacionu tabelu u kojoj su sve mogue varijacije mnoioca uzete
u obzir. Strukture mnoaa koji su formirani pomou sekvencijalnih mrea su jednostavnije (sastoje
se od manjeg broja logikih kapija), ali su znatno sporiji od mnoaa realizovanih pomou
kombinacionih mrea jer se rezultat mnoenja dobija tek nakon vie koraka.
Mogue je konstruisati dvobitni mnoa na bazi kombinacionih mrea i bez odreivanja
njihove kombinacione tabele (slika 4-8). Vrednost najmanje znaajnog bita A0 se mnoi sa ciframa
(bitovima) broja B pomou dva I kola. Najmanje znaajan bit (C0) meurezultata je ujedno i najmanje znaajan bit mnoenja. Sledei znaajniji bit mnoenja (C1) se dobija pomou jednog polusabiraa u koji ulazi bit A1 i najmanje znaajan bit broja B. Najznaajnije bitove mnoenja (C2 i C3) formira drugi polusabira koji sabira eventualni bit prenosa iz prvog sabiranja i logiki proizvod A1B1.
Ispravnost navedenog postupka dokazuje pismeno mnoenje koje je navedeno pored logike eme.
- 55 -
b0
b1
b2
b3
a0
a1
a2
a3
A0
A1
A2
A3
A4
A5
A6
A7
ROM
256x8 bit
D0
D1
D2
D3
D4
D5
D6
D7
p0
p1
p2
p3
p4
p5
p6
p7
U VLSI tehnologiji se realizuju 16x16 bitni ili jo vei mnoai u formi kombinacionih
mrea kao sastavni delovi mikroprocesora.
Kod mnoaa koji se realizuju sekvencijalnim mreama potrebno je skrenuti panju na
dva osnovna principa. Logika mrea koja je prikazana na slici 4-10 pod uticajem START signala
brie sadraj akumulatora, u stacionarni registar upisuje prvog mnoioca, zatim upisuje drugi mnoilac u programabilni broja. Pod uticajem takt signala broja broji unazad dok akumulacioni sabira sabira svaki put aktuelni sadraj akumulatora sa mnoiocem. Proces traje sve dok broja ne stie
do nule. U trenutku kada broja dostie vrednost nula, zahvaljujui sukcesivnom sabiranju, u
akumulatoru se nalazi traeni proizvod.
START
bj-1
LOAD
Dj-1
b2
b1
b0
D2 D1 D0
LOAD
PROGRAMABILNI BROJAC
Qj-1
ak-1
a2
a1
a0
Dk-1
D2 D1 D0
STACIONARNI REGISTAR
Q2 Q1 Q0
DETEKTORNULE
CLK
CLR
AKUMULIRAJUCI SABIRAC
pj+k-1
p2
p1
p0
Drugi osnovni princip se zasniva na proceduri runog mnoenja bit po bit (slika 4-11). Na
poetku procesa prvi mnoilac se smeta u stacionarni registar a drugi mnoilac u pomeraki
registar. Niz I kola vri mnoenje sa pojedinim bitovima drugog mnoioca. Sabira, posle
pomeranja, sabira sopstveni sadraj sa meurezultatom. Mnoenje je zavreno kada je svaki bit
izaao iz pomerakog registra.
- 56 -
an-1
a2
a1
a0
Dn-1
D2
D1
D0
STACIONARNI REGISTAR
Q n-1
LOAD
Q n-2
bn-1
Q0
D n-1
Sout
b2
b1
b0
D2 D1 D0
LOAD
START
POMERACKI REGISTAR
START
p2n-1
CLR
p2n-2
CLK
pn
SABIRAC
D n-1
CLK
D2 D1 D0
Sout
Sin
POMERACKI REGISTAR
p2n-1 p2n-2
CLK
POMERACKI REGISTAR
pn
pn-1
pn-2
p0
Vrednost premenljive AGTB (engl.: greater then) je jednak jedinici samo ako je a > b ,
AEQB (engl.: equal) je jedinica ako je a = b i vrednost ALTB (engl.: less then) je jedinica ako
je a < b . Logika ema univerzalnog komparatora koja je realizovana na osnovu prethodnih
jednaina je data na slici 4-12b.
- 57 -
A
0
0
1
1
AGTB
AEQB
ALTB
(a)
(b)
Slika 4-12: (a) Kombinaciona tabela jednobitnog univerzalnog komparatora i (b) njegova logika ema.
Krajnji cilj u vezi komparatora je projektovanje takvih kola koja vre komparaciju
viebitnih brojeva. Teoretski je mogue napisati kombinacionu tabelu za viebitne komparatore na
nain koji je prikazan na slici 4-12a i na osnovu toga izvriti sintezu odgovarajue mree.
Uporeivanje bit po bit je meutim mnogo svrsishodnije i zbog toga je neophodno izmeniti mreu,
koja je prikazana na slici 4-12b, tako da je mogue izvriti kaskadno povezanje pojedinih stepena.
Nain kaskadnog povezanja jednobitnih komparatora je prikazan na slici 4-13. Smanjena je brzina
komparacije ali i sloenost kola.
a0
b0
GTI
"1"
EQI
LTI
JEDNOBITNI
KOMPARATOR
a1
GTO
GTI
EQO
EQI
LTO
LTI
an-1
b1
JEDNOBITNI
KOMPARATOR
GTO
GTI
EQO
EQI
LTO
LTI
bn-1
JEDNOBITNI
KOMPARATOR
GTO
AGTB
EQO
AEQB
LTO
ALTB
- 58 -
Slika 4-15: (a) ematska oznaka D/A konvertora i (b) njegova prenosna karakteristika.
U integrisanoj tehnici najvei uspeh su doiveli oni D/A konvertori ija se struktura
zasniva na lestviastoj otpornikoj mrei jer je potrebno precizno reprodukovati samo dve vrednosti
otpornosti R i 2R (slika 4-19). Povezivanjem odreenih prekidaa na referentni potencijal se
formiraju pojedinane komponente izlazne struje koja je na desnoj strani eme oznaena sa I.
Najvea komponenta struje se dobija ukljuenjem desnog prekidaa i ta vrednost se prepolovljava
kako se kree ulevo. Konana formula za struju I je:
I=
VREF 1
(2 n 1 Qn 1 + 2 n 2 Qn 2 + ... + 2 2 Q2 + 21 Q1 + 2 0 Q0 )
6 R 2 n 1
- 60 -
R
2R
Q0
Q1
R
2R
Q2
R
2R
R
2R
Qn-2
2R
2R
Qn-1
Vref
Na slici 4-20 je prikazano reenje za realizaciju D/A konvertora koje sadri najmanji broj
komponenata. Prekida K se periodino prebacuje u levi i desni poloaj. Upravljanje prekidaem se
vri tako da je odnos vremena za koje je prekida u levom poloaju i periode ukljuivanja identian
sa odnosom trenutne vrednosti ulaznog kodiranog broja i njegove maksimalne vrednosti (ovo se
naziva impulsno-irinskom modulacijom). Posle odgovarajueg filtriranja (koje vri RC lan)
vrednost izlaznog napona (srednja vrednost impulsa) e biti proporcionalna vrednosti ulaznog broja.
4.3.3. Karakteristike
Glavne karakteristike D/A konvertora su: rezolucija i vreme uspostavljanja. Rezolucija se
zadaje brojem bita pod pretpostavkom da se podaci na ulaz dovode u binarnom kodu. Podatak o
rezoluciji ukazuje ujedno i na tanost pretvaranja. Pretvarae je neophodno tako konstruisati da
njihova prenosna funkcija bude monotona. Na osnovu prethodnih pretpostavki se zakljuuje da je
greka konverzije uvek manja od napona koji odgovara bitu najmanje teine.
Za uspostavljanje stabilnog izlaznog napona je potrebno odreeno ovreme. Kod veine
pretvaraa ovo vreme je reda s ili ns, dok kod impulsno-irinskih pretvaraa je znaajno vee jer je
vremenska konstanta RC lana nekoliko puta vea od periode prekidanja koja je ve sama po sebi
prilino dugaka.
Princip rada
Kod A/D konverzije potrebno je reiti nekoliko zadataka. Prvo, neophodno je u pravilnim
vremenskim razmacima uzeti uzorke iz analognog signala. Ovaj postupak se naziva diskretizacijom
po vremenu. Proces pretvaranja nije trenutan i zbog toga je neophodno tako odabrati periodu
uzorkovanja da se konverzija prethodnog uzorka zavri pre uzimanja narednog.
Drugi zadatak je uporeivanje uzorka sa vrednostima na jednoj diskretnoj skali. Kao
rezultat uporeivanja, vrednost uzorka se zamenjuje jednim brojem sa ove skale koji je najblii po
vrednosti uzorku. Ovaj proces se naziva diskretizacija po amplitudi.
- 61 -
4.4.2. Struktura
Postoje tri razliita reenja za dananje A/D konvertore: direktni (engl.: flash) tip, reenje
sa postepenim pribliavanjem (sukcesivnom aproksimacijom) i sa postupkom brojanja.
Direktni D/A konvertor u sluaju n-bitnih kodova sadri 2n-1 naponskih komparatora
(slika 4-22). Na jedan ulaz komparatora se dovode odgovarajui naponski nivoi prema datoj
prenosnoj karakteristici. Ovi naponi se formiraju otpornikim razdelnikom povezanim na izvor
referentnog napona. Na taj nain se dobija eljena skala diskretnih vrednosti. Na druge ulaze
komparatora se dovodi analogni napon koji treba da se konvertuje.
- 62 -
Na poetku konverzije setuje se bit najvee teine (engl.: most significant bit - MSB) u
registru. Prema toj vrednosti D/A konvertor generie odgovarajui analogni signal a na osnovu toga
komparator javlja registru da li je ulazni signal vei ili manji od vrednosti koja se nalazi na sredini
skale.
Ako je ulazni signal vei, pri odgovarajuoj ivici takt signala, vrednost MSB-a ostaje
nepromenjena dok se u suprotnom sluaju vraa na nulu. Istovremeno, setuje se vrednost susednog
bita u registru. U sledeoj periodi takt signala se ponovo uporeuje vrednost ulaznog signala sa
izlazom D/A konvertora i komparator informie registar o opravdanosti setovanja datog bita. Ako je
setovanje bilo opravdano, vrednost bita ostaje jedinica, ako ne, onda se resetuje. Na kraju periode
takt signala opet se u registru setuje sledei bit.
Ovaj proces se nastavlja sve dok nisu odreene vrednosti svih bitova. Tada se u registru
nalazi digitalni kod koji odgovara ulaznom analognom signalu. U prodaji se mogu nai integrisana
kola koja u sebi sadre kompletan A/D konvertor sa sukcesivnom aproksimacijom.
U trei skup reenja A/D konverzije spadaju brojaka reenja. Razvijeno je vie takvih
postupaka. Osnovni princip kod svih je generisanje pravougaonog impulsa sa vremenom trajanja
srazmernim sa ulaznim analognim signalom. Pri tome uloga brojaa je odreivanje broja perioda
takt signala generisanih za vreme trajanja pravougaonog impulsa. Broj dobijen na kraju brojanja e
biti srazmeran analognom naponu.
Princip rada je prikazan na slici 4-24. Pravougani signal se generie uporeivanjem
analognog signala i linearno rastueg testerastog signala. Naponski komparatori (pomou EX-ILI
kola) dozvoljavaju rad brojaa sve dok je vrednost testerastog signala vea od nule ali jo nije
premaila ulazni napon.
- 63 -
Slika 4-24: Blok ema A/D konvertora koji koristi testerasti signal i broja.
- 64 -
- 65 -
5. Pristupi projektovanju
Ovaj deo skripte je posveen digitalnom projektovanju zasnovanom na jeziku za opis
hardvera (engl.: hadware description language HDL) koji nosi naziv Verilog. Pre upoznavanja sa
jezikim strukturama, prezentovae se uobiajeni pristupi koji se primenjuju pri projektovanja
digitalnih kola.
Postoje dva osnovna pristupa projektovanju:
Top-down pristup:
Definisani sloeni problem se reava deljenjem na vie jednostavnijih podproblema koji se
dalje dele na jo jednostavnije podproblema itd. Proces se nastavlja sve dok podproblemi ne
postanu dovoljno mali i jednostavni za reavanje. Slika 5-1 pokazuje proces projektovanja top-down
metodom.
Bottom-up pristup:
Ova metoda projektovanja polazi od osnovnih blokova koji su na raspolaganju za
reavanje zadatog problema. Njihovim korienjem se grade blokovi vee kompleksnosti. Ovi
blokovi se dalje koriste za dobijanje blokova jo vee kompleksnosti itd. Proces se nastavlja sve dok
se ne rei problem. Slika 5-2 pokazuje proces projektovanja bottom-up metodom.
Pri projktovanju kola u digitalnoj elektronici najee se koristi kombinacija ove dve
metode. Projektanti elektrinih kola definisani problem dele na manje celine, koje posebno
reavaju. Te celine se ponovo dele na podceline sve dok se ne stie do nivoa kada je mogue
- 66 -
- 67 -
Qn
Qn+1
0
0
1
1
0
1
0
1
0
1
1
0
0
1
1
0
Qn
T
0 1
1 1 0
D = T Q + TQ
0
Slika 5-7: Hijerarhijska struktura dobijena pri projektovanju etvorobitnog brojaa top-down metodom.
- 68 -
Centralni deo modula koji nosi naziv telo modula moe da sadri definicije sa etiri
razliita nivoa apstrakcije. Pojedini nivoi se primenjuju prema potrebama projekta. Ista
funkcionalnost se moe opisati korienjem sva etiri nivoa apstrakcije, pojedini nivoi se mogu i
meati.
Nivoi apstrakcije su sledei:
Verilog HDL dozvoljava korienje svih nivoa apstrakcije unutar jednog projekta.
Uobiajeno, izraz RTL (engl.: register transfer level) se odnosi na izvorni kod koji sadri definicije i
na nivou ponaanja i na nivou toka podataka.
Kada raste nivo apstrakcije poveavaju se fleksibilnost i tehnoloka nezavisnost projekta,
a kada se nivo apstrakcije pribliava nivou prekidaa isto se smanjuje. U takvom sluaju mala
promena u opisu zadatka moe izazvati znaajne promene u projektu. Moe se povui paralela sa
- 69 -
5.3. Instance
Modul je uzor na osnovu ega se kreira konkretan objekat. Kada se modul poziva, Verilog
HDL kreira jedinstveni objekat na osnovu uzora. Svaki objekat poseduje jedinstveno ime,
ulazno/izlazni interfejs, parametre i nosioce podataka. Proces kreiranja jedinstvenog objekta na
osnovu uzora (modula) se naziva instanciranje (engl.: instantiation) a novonastali objekat je
instanca (engl.: instance).
etvorobitni broja prikazan na slici 5-4 se sastoji od 4 instance T flip-flop-a. Svaki T flipflop instancira jedan D flip-flop, dva I kola i po jedno NE i ILI kolo. Primer 5-2 sadri definiciju
modula 4-bitnog brojaa. Svaka instanca mora posedovati jedinstveno ime. Dvostruka kosa crta (//)
oznaava jednolinijski komentar. Komentari sadre informacije za projektanta i nemaju uticaja na
digitalni sistem koji se realizuje.
Primer 5-2: Instanciranje modula.
// Pretpostavimo da je modul T flip-flopa ve definisan sa imenom T_FF.
module brojac(q, t, clock, reset);
output [3:0] q;
// etvorobitni izlazni signal
input t, clock, reset;
// jednobitni ulazni signali
T_FF tff0(q[0], 1, clock, reset);
// Instanciranje modula T_FF sa imenom tff0.
T_FF tff1(q[1], 1, q[0], reset);
// Instanciranje modula T_FF sa imenom tff1.
T_FF tff2(q[2], 1, q[1], reset);
// Instanciranje modula T_FF sa imenom tff2.
T_FF tff3(q[3], 1, q[2], reset);
// Instanciranje modula T_FF sa imenom tff3.
endmodule
Verilog HDL ne dozvoljava definisanje modula unutar definicije drugog modula. Umesto
toga se vri instanciranje potrebnog modula.
Pojmovi definicija modula i instanca modula se ne smeju meati. U poreenju ovih
pojmova sa procesom izgradnje zgrade, plan zgrade odgovara definiciji modula, proces izgradnje
zgrade instanciranju a gotova zgrada instanci.
5.4. Simulacija
Pre nego to se primenom odgovarajueg hardvera (PLD) realizuje projektovno kolo i
pristupi testiranju kola realizovanog na bazi HDL opisa, prvo se vri simulacija na raunaru.
Funkcionalnost HDL opisa se proverava primenom ulaznih signala i posmatranjem izlaznih signala.
Treba imati na umu da je takvo ispitivanje dobro u onolikoj meri u kojoj meri pametno odaberemo
ulazne (pobudne) signale. Matematiari rade na razvoju sistematskih postupaka za ispitivanje
ispravnosti HDL opisa ali je zasad to u preliminarnoj fazi.
Blok koji obezbeuje ulazne signale i prima izlazne signale se obino naziva ispitni blok (engl.:
stimulus block ili test bench). Ispitni blok je takoe jedan modul napisan u jeziku za opis hardvera
(HDL). Osnovno pravilo je da se ne sme pomeati ispitni blok sa projekom koji se realizuje. Postoje
dva naina primene ispitnog bloka na objekat koji se testira:
Ispitni blok instancira modul koji se testira i obezbeuje ulazne i prima izlazne signale.
Ispitni blok postaje Verilog modul najvieg nivoa u hijerarhiji projektovanja. Primer koji
ilustruje ovaj princip je prikazan na slici 5-8. Objekat testiranja je etvorobitni broja
prikazan na slici 5-3.
- 70 -
Drugi nain primene ispitnog bloka je da se predmet testiranja i blok koji vri testiranje
instanciraju unutar jednog praznog modula najvieg nivoa u hijerarhiji projektovanja (engl.:
dummy block). Ispitni blok komunicira sa modulom testiranja kroz port-ove. Ovaj nain
primene ispitnog bloka je prikazan na slici 5-9. Jedina funkcija bloka najvieg nivoa je
instanciranje ispitnog modula i modula koji se testira.
- 71 -
/*Ovo je vielinijski
komentar*/
6.1.3. Operatori
Operatore delimo u tri kategorije: imamo unarne, binarne i ternarne operatore (primer 62). Unarni operatori se odnose na jedan operand i stavljaju se ispred operanada, binarni operatori se
stavljaju izmeu dva operanda. Ternarni operatori se sastoje od dva posebna znaka koji razdvajaju
tri operanada.
Primer 6-2: Unarni, binarni i ternarni operatori.
a = ~b;
a = b && c;
a = b ? c : d;
- 72 -
Brojni sistemi koje Verilog HDL podrava su: decimalni sistem (oznaka je d ili D),
binarni sistem (oznaka je b ili B), oktalni sistem (oznaka je o ili O) i heksadecimalni sistem
(oznaka je h ili H).
<Broj> se zadaje ciframa 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f ili podskupom ovih cifara
koji odgovara brojnom sistemu koji se koristi. Cifre se mogu pisati i malim i velikim slovima (a, b,
c, d, e, f ili A, B, C, D, E, F)(primer 6-3).
Primer 6-3: Pisanje brojeva sa veliinom.
3b101
16hfa3e
16HFA3e
Veliinu brojeva u bitovima koji su zadati bez parametra <veliina> odreuje simulator ili
arhitektura raunara (ali duina ne moe biti manja od 32 bita).
Broj koji nema parametar <osnova_brojnog_sistema> je po dogovoru uvek decimalan
broj (primer 6-4).
Primer 6-4: Definisanje brojeva bez veliine.
o7651
hAB3
4556
- 73 -
Znak pitanja
Kada se radi o brojevima, znak pitanja ? (primer 6-8) predstavlja alternativu za stanje
visoke impedanse (z). Znak pitanja se jo koristi u izrazima casex i casez kako bi se poveala
preglednost HDL opisa. Ove dve naredbe emo kasnije detaljno objasniti.
Primer 6-8: Oznaavanje stanja visoke impedanse znakom pitanja.
4b01??
- 74 -
6.1.6. Identifikatori
Identifikatori (engl.: identifier) su imena objekata u Verilog HDL-u koja omoguavaju
jednoznano pozivanje na njih. Identifikatori se grade pomou slova, brojeva, znaka donje crte i
znaka dolara ($). Verilog HDL razlikuje mala i velika slova u identifikatorima. Identifikatori se ne
mogu poeti brojevima i znakom dolara. (Znak dolara kao prvi karakter u identifikatoru je
rezervisan za sistemske funkcije.)
6.1.7. Kljune rei
Kljune rei (engl.: keyword) su specijalni identifikatori rezervisani za definisanje jezikih
konstrukcija. Sve kljune rei se obavezno piu malim slovima (primer 6-10).
Primer 6-10: Primena kljunih rei.
reg broj;
input Input;
Vrednosti
0
1
x
z
Stanja
Logika nula
Logika jedinica
Nepoznato stanje
Stanje visoke impedanse
- 75 -
a
b
Nosioci podataka tipa net se najee deklariu pomou kljune rei wire (primer 6-11).
Podaci su redovno veliine jednog bita osim kada se deklariu kao vektor. U literaturi pojam wire se
esto koristi umesto net. Po dogovoru, vrednost nekog podatka tipa wire koji nije povezan na izlaz
nekog elementa je jednaka stanju visoke impedanse. Ako je dati nosilac podatka povezana sa
izlazom nekog elementa, njegova vrednost postaje logika vrednost izlaza datog elementa.
Primer 6-11: Deklaracija podataka tipa net pomou kljune rei wire.
wire c;
wire a, b;
wire d = 1b0;
Kada je vrednost nekog podatka konstantna kao u sluaju podatka d, nije ga preporuljivo
povezati sa izlazom nekog digitalnog kola. Kada vrednost izlaza datog elementa postaje jedan,
dolazi do kolizije logikih vrednosti jer vrednost podatka d tipa veza treba da je nula.
Potrebno je napomenuti da veza (net) nije kljuna re i predstavlja jednu celu klasu tipa
podataka kao to su wire, wand, wor, tri, triand, trior, trireg itd. Najee se koristi tip wire. Ostali
tipovi podataka se ree koriste.
6.2.3. Registri
Registri su elementi koji slue za pamenje logikih vrednosti. Registri pamte svoje
sadraje sve dok se ne zamene novim vrednostima.
Ne treba meati pojam registra u Verilog HDL-u sa hardverskim registrima sastavljenim
od flip-flop-ova koji dobijaju nove vrednosti na rastuoj ili na opadajuoj ivici takt signala. Pojam
registra u Verilog HDL-u oznaava nosilac podatka koji pamti vrednost koja je njemu dodeljena u
nekom ranijem momentu. Za razliku od veze (net), registru nije potreban drajver (izlaz nekog
logikog kola) da bi imao vrednost razliitu od stanja visoke impedanse. Nosiocima podataka tipa
registar u Verilog HDL-u nisu potrebni takt signali koji sinhroniu promenu stanja. Sadraj registra
u Verilog HDL-u se moe promeniti u bilo kom trenutku putem odgovarajue dodele.
Nosioc podatka tipa registar se deklariu pomou kljune rei reg. Podrazumevana
vrednost podatka tipa reg je neodreeno stanje (tj. x), ta vrednost vai sve dok se registru ne dodeli
neka konkretna vednost. Primer 6-12 prikazuje nain deklarisanja nosioca podatka tipa reg:
Primer 6-12: Deklaracija nosioca podataka tipa registar pomou kljune rei reg.
reg reset;
initial
begin
reset = 1b1;
#100 reset = 1b0;
end
- 76 -
Vektori se deklariu kao [vei_broj : manji_broj] ili [manji_broj : vei_broj]. Levi broj u
uglastoj zagradi uvek predstavlja bit nejvee teine u vektoru. U gornjem primeru za nosilac
podatka ledB najznaajniji bit je bit 15, dok za podatak mem najznaajniji biti je bit 0.
Mogue je adresirati jedan bit ili grupu bitova unutar vektorskog podatka. Ova mogunost
je prikazana u primeru 6-14 nad vektorskim poacima definisanim u prethodnom primeru.
Primer 6-14: Adresiranje pojedinanih ili grupe bitova iz nekog vektora.
ledB [7];
ledA[1:0];
mem [0:1];
- 77 -
6.2.7. Nizovi
Verilog HDL podrava graenje jednodimenzionalnih nizova (engl.: array) od tipova
podataka reg, integer i vektora registara. Nizovi se ne mogu praviti od podataka tipa real i ne mogu
se praviti viedimenzionalni nizovi. Deklaracija nizova se vri u sledeoj formi:
<ime_niza>[vei_broj : manji_broj] ili <ime_niza>[manji_broj : vei_broj] (primer 6-17).
Primer 6-17: Deklaracija nizova.
integer brojevi[0:7];
reg mem[31:0];
reg [3:0] port [0:7];
integer matrix [4:0] [4:0];
brojevi[4];
port[5];
Potrebno je napomenuti da se ne smeju meati pojmovi vektor i niz. Vektor je jedan podatak
irok n-bita, dok je niz skup vie elemenata irokih 1-bit ili n-bita.
6.2.8. Memorije
U savremenom digitalnom projektovanju pomou PLD-ova esto je potrebno ostvariti
registre i memorijske blokove, (RAM, ROM). Memorije se u Verilog HDL-u delariu kao niz
registara (primer 6-18). Elementi memorije se nazivaju reima (engl.: words). Rei mogu biti iroki
1-bit ili n-bita. Potrebno je razlikovati n 1-bitnih registara od jednog n-bitnog registra.
Primer 6-18: Deklaracija memorije kao niza registara.
reg mem1bit[0:1023];
reg [7:0] membyte [0:1023];
membyte[521];
6.2.9. Parametri
Verilog HDL omoguava definisanje konstanti unutar modula pomou kljune rei
parameter (primer 6-19). Parametri se ne mogu koristiti kao podaci.
- 78 -
Pri definisanju i korienju makroa uvek je prisutan znak . Svrha tekstualnih makro-a je da
ubrza pisanje HDL opisa (dugaki tekstovi se mogu zameniti kratkim imenima makro-a) i da
povea njegovu preglednost. Ovo se postie tako to prevodilac zamenjuje ime_makroa sa
tekst_makroa u celom HDL opisu (primer 6-23).
Primer 6-23: Korienje makroa.
define S $stop;
WORD_REG reg32;
- 79 -
7. Moduli i port-ovi
U prethodnim glavama su predstavljeni koncepti hijerarhijskog projektovanja, osnovne
jezike konvencije hardverskog jezika Verilog i raspoloivi tipovi podataka odnosno nosioci
podataka. Ova glava detaljno obrauje ranije uvedeni pojam modula i daje opis i pravila u vezi
port-ova.
7.1. Moduli
U glavi 5 je reeno da je modul gradivni element koji ini osnovu hijerarhijskog
projektovanja u jeziku Verilog. Akcenat je bio na definisanju i instanciranju modula a ne na
unutranjoj strukturi modula. Ova glava detaljno obrauje unutranjost modula.
Modul je tekst fajl formiran od ASCII karaktera. Sastoji od nekoliko razliitih delova kao
to je prikazano na slici 7-1.
Definisanje modula se uvek poinje pomou kljune rei module. Prvo se zadaju ime
modula i lista port-ova, zatim se deklariu vrste port-ova i uvode parametri. Lista portova i
deklaracija portova su prisutni samo ako postoji interakcija modula i okruenja.
Telo modula sainjavaju pet komponenti koje su: deklaracija tipa podataka, izrazi sa nivoa
toka podataka, instanciranje modula niih nivoa, izrazi na nivoau ponaanja i Verilog funkcije.
Navedene komponente se mogu nalaziti u bilo kom redosledu unutar tela modula.
Definicija modula se uvek zavrava pomou kljune rei endmodule. Samo su kljuna re
module, ime modula i kljuna re endmodule obavezni sve ostalo se koristi prema potrebi. Verilog
HDL dozvoljava definisanje vie modula unutar jednog ASCII fajla i to u bilo kom redosledu.
Redosled nema veze sa hijerarhijom.
Razni delovi modula e se ilustrovati pomou
primera modula koji definie RS latch. Slika 7-2 prikazuje
logiku emu RS latch-a koji ima dva ulaza S i R i dva
izlaza Q i NotQ. U primeru 7-1 data je definicija modula za
RS latch i definicija jednog ispitnog modula (pod imenom
Stimulus) koji moe posluiti za testiranje latch-a.
- 80 -
Nisu prisutne sve komponente koje su prikazane na slici 7-1 u definiciji modula RS latch-a.
Ne postoje ni deklaracije tipova podataka ni izrazi na nivoa toka podataka (assign) i nivoa
ponaanja (always ili initial), ipak je definicija modula korektna.
Modul sa imenom Stimulus za RS latch poseduje deklaraciju tipova podataka i izraze na
nivou ponaanja ali nema listu port-ova, deklaraciju port-ova, a nema ni izraza na nivou
toka podataka.
Jo jednom da se naglasi: sve komponente modula osim kljune rei module, ime modula
i kljune rei endmodule su opcionog karaktera i koriste se po potrebi u bilo kom redosledu.
- 81 -
Top je modul najvie hijerarhije i zbog toga nema ulazne signale i ne gernerie izlazne
signale za eventualne vie module u hijerarhiji. Zato nema ni listu port-ova. Modul koji je najvii u
hijerarhiji komunicira samo sa softverom koji obrauje HDL opis, to se ne manifestuje u definiciji
modula.
7.2.2. Deklaracija port-ova
Svaki port koji se nalazi u listi port-ova mora biti deklarisan unutar modula. Pri
deklarisanju zadaje se smer prenosa podataka preko port-a: postoje ulazni, izlazni i dvosmerni portovi (tabela 7-1).
Tip port-a
Opis
input
output
inout
Ulazni port
Izlazni port
Bidirekcioni port
- 82 -
Ako se neki port deklarie kao ulazni, izlazni ili bidirekcioni, tom port-u se automatski
dodeljuje nosilac podatka tipa wire. Prema tome, ako je potreban port tipa wire, dovoljno ga je
deklarisati kljunim reima input, output ili inout, deklaracija tipa podaatka se izostavlja. Funkcija
izlaznih port-ova je esto pamenje odreenih vrednosti i u tim situacijama je potrebno da se za njih
deklarie tip podatka reg.
U gornjem primeru svim port-ovima pripadaju nosioci podataka tipa wire. Primer 7-4
prikazuje deklaraciju port-ova D flip-flop-a, u kome port-u q pripada podatak tipa reg.
Primer 7-4: Deklaracija port-ova D flip-flopa.
modulu DFF(q, d, clock, reset);
output q;
Ulazni i bidirekcioni (input, inout) port-ovi se ne mogu deklarisati kao reg jer nosioci
podataka tipa reg pamte vrednosti a uloga ulaznih port-ova je da prenose promene eksternih signala
modulu.
7.2.3. Pravila za povezivanje port-ova
Port moemo shvatiti kao objekat koji se sastoji iz dva dela koja su meusobno povezana.
Prvi deo pripada unutranjosti modula, dok drugi okruenju. Ova analogija e olakati razumevanje
pravila koja postoje pri instanciranju modula. Prevodilac HDL opisa javlja greku ako su neka od
ovih pravila prekrena. Pravila povezivanja su (slika 7-4):
Ulazni port-ovi
Ulaznim port-ovima modula uvek moraju pripadati podaci tipa net. Mogu se povezati sa
nosiocima podataka tipa reg ili net u okruenju.
Izlazni port-ovi
Podaci koji pripadaju izlaznom port-u modula mogu biti tipa reg ili net. Mogu se povezati u
okruenju samo sa nosiocima podataka tipa net.
Bidirekcioni port-ovi
Bidirekcioni port-ovi modula moraju uvek biti tipa net i u okruenju se mogu povezati samo
sa nosiocima podataka tipa net.
- 83 -
- 84 -
- 85 -
Za dobijanje hijerarhijskih imena zapisuju se imena poetne take i svih instanci koje se
nalaze na putanji do eljenog identifikatora.
U primeru 7-9 su prikazana hijerarhijska imena koja se mogu napisati za sliku 7-5. Obratiti
panju na take kojom se razdvajaju imena nivoa u hijerarhiji.
Primer 7-5: Hijerarhijska imena.
Stimulus.q
Stimulus.notq
Stimulus.reset
Stimulus.set
Stimulus.f1.Q
Stimulus.f1.NotQ
Stimulus.f1.R
Stimulus.f1.S
- 86 -
Stimulus.f1
Stimulus.f1.n1
Stimulus.f1.n2
Ime modula
Funkcija
and
nand
or
nor
xor
xnor
I kolo
NI kolo
ILI kolo
NILI kolo
Iskljuivo ILI kolo
Iskljuivo NILI kolo
Na slici 8-1 su prikazani ematski simboli razmatranih logikih kola sa dva ulaza. Ulazi su
imenovani sa i1 i i2 dok je izlaz naznaen sa out.
i1
i2
out
i1
i2
i1
i2
i1
i2
out
nand
- 87 -
i1
i2
out
nor
out
xor
or
and
Slika 8-1: ematski simboli I / ILI
logikih kola definisanih u Verilog
HDL-u i imena njihovih modula.
out
i1
i2
out
xnor
and
i2
0
1
x
z
- 88 -
0
0
0
0
0
1
x
x
0
x
x
x
0
x
x
x
0 1 x z
0
1
x
z
xor
i2
0 1 x z
i1
or
i2
i1
0
1
x
z
0
1
x
x
1
1
1
1
x
1
x
x
x
1
x
x
i1
0 1 x z
0
1
x
x
1
0
x
x
x
x
x
x
x
x
x
x
nand
i2
0
1
x
z
nor
i2
0
1
x
z
xnor
i2
0
1
x
z
i1
0 1 x z
1
1
1
1
1
0
x
x
1
x
x
x
1
x
x
x
i1
0 1 x z
1
0
x
x
0
0
0
0
x
0
x
x
x
0
x
x
i1
0 1 x z
1
0
x
x
0
1
x
x
x
x
x
x
x
x
x
x
Ime modula
Funkcija
buf
not
bafer
invertor
Slika 8-3 prikazuje ematske oznake kola za sprezanje za sluaj jednog izlaza. Ime
ulaznog port-a je in, a ime izlaznog port-a je out.
in
out
out
in
not
buf
Primer 8-2 prikazuje nain instanciranja kola za sprezanje u Verilog HDL-u. Ponovo se
naglaava da ova logika kola mogu imati vie izlaza ali samo jedan ulaz koji je uvek zadnji u listi
port-ova.
Primer 8-2: Instanciranje bafera i invertora.
// Instanciranje bafera i invertora sa jednim ulazom i izlazom
buf b1(OUT, IN);
not n1(OUT, IN);
// Instanciranje sa vie od jednog izlaza
buf b1_3out(OUT1, OUT2, OUT3, IN);
// Instanciranje invertora bez imena instance
not(OUT1, OUT2, IN);
- 89 -
buf
not
in out
in out
0
1
x
z
0
1
x
z
0
1
x
x
1
0
x
x
Tabela 8-3: Imena modula i funkcije kola za sprezanje sa tri stanja definisana u Verilog HDL-u.
Ova kola za sprezanje se ponaaju kao obina kola za sprezanje (taka 8.1.2) dok su
kontrolni ulazi aktivni. U suprotnom sluaju njihovi izlazi su u stanju visoke impedanse. ematski
simboli kola su prikazani na slici 8-5.
bufif1
in
notif1
out
ctrl
ctrl
bufif0
in
notif0
out
ctrl
out
in
out
in
ctrl
Primer 8-3 prikazuje nain instanciranja kola za sprezanje sa tri stanja. Prvi port u listi portova je izlaz, drugi je ulaz signala a trei je kontrolni ulaz. Radi uproenja i ovde se moe izostaviti
ime pri instanciranju.
Primer 8-3: Instanciranje logikih kola bufif i notif.
// Instanciranje logikih kola bufif
bufif1 b1(out, in, control);
// sa sopstvenim imenom
bufif0 (out, in, control);
// bez sopstvenog imena
// Instanciranje logikih kola notif
notif1 n1(out, in, control);
// sa sopstvenim imenom
notif0 (out, in, control);
// bez sopstvenog imena
Na slici 8-6 su prikazane kombinacione tabele koje definiu ponaanje kola za sprezanje
sa tri stanja. U tabelama su uzete u obzir sve mogue situacije na ulazima (pored logike 0 i 1 i
neodreeno stanje i stanje visoke impedanse).
- 90 -
bufif1
in
0
1
x
z
bufif0
in
0
1
x
z
ctrl
0 1 x z
z
z
z
z
0
1
x
x
x
x
x
x
x
x
x
x
ctrl
0 1 x z
0
1
x
x
z
z
z
z
x
x
x
x
x
x
x
x
notif1
in
0
1
x
z
notif0
in
0
1
x
z
ctrl
0 1 x z
z
z
z
z
1
0
x
x
x
x
x
x
x
x
x
x
ctrl
0 1 x z
1
0
x
x
z
z
z
z
x
x
x
x
x
x
x
x
Kola za sprezanje sa tri stanja u Verilog HDL-u imaju analognu ulogu kao odgovarajua
hardverska kola. Obino se koriste u situacijama kada vie kola treba da koriste zajedniku liniju za
prenos u razliitim vremenskim intervalima (vremenski multpleks). U takvim situacijama signali se
prikljuuju na zajedniku liniju preko kola za sprezanje sa tri stanja od kojih istovremeno uvek
samo jedan dobije dozvolu. Na taj nain se izbegava kolizija signala na zajednikoj liniji.
Pod kolizijom se podrazumeva situacija kada vie izlaza logikih kola vezanih na
zajedniku liniju pokuavaju da ostvare razliite logike nivoe. U takvoj situaciji neki izlazi daju a
neki primaju preveliku struju, nastaju veliki gubici (zagrevanje) i u nekim situacijama moe da doe
i do pregorevanje komponenti. Ne treba zanemariti ni injenicu da se pri koliziji formira naponski
nivo koji nije pravilani logiki nivo to moe da dovodi do neoekivanog ponaanja u kolu.
- 91 -
c_in
sum
c_out
c1
c_out
s1
c2
c_in
sum
Na osnovu gornje eme, u primeru 8-4 je napisan HDL opis jednobitnog potpunog
sabiraa na nivou logikih kapija. Pri instanciranju logikih kapija instance nemaju imena. Nazivi
unutranjih veza (vorova) su istovetni kao na logikoj emi na slici 8-8.
- 92 -
Kaskadnom vezom etiri jednobitna potpuna sabiraa nastaje etvorobitni sabira koji je
prikazan na slici 8-9.
Na osnovu logike eme je formiran Verilog HDL opis etvorobitnog sabiraa dat u primeru
8-5. Pored potrebnih deklaracija ovaj modul vri etiri instanciranja modula jednobitnog potpunog
sabiraa definisnog u primeru 8-4.
Primer 8-5: HDL opis etvorobitnog sabiraa.
// Definicija etvorobitnog sabiraa
- 93 -
Potrebno je naglasiti da se koristi vie istih imena u listi port-ova za modul jednobitnog
potpunog sabiraa i etvorobitnog sabiraa ali se ta imena odnose na razliite podatke. Port sum
jednobitnog potpunog sabiraa je skalarna veliina, dok port sum etvorobitnog sabiraa je
vektorska veliina iroka etiri bita. Imena definisana unutar nekog modula su dostupna samo za taj
modul zato ne dolazi do zbrke. Imena definisana unutar nekog modula su nevidljiva van modula
osim ako se ne navodi celo hijerarhijsko ime datog podatka.
Svakoj instanci modula jednobitnog potpunog sabiraa se moralo pridruiti jedinstveno
ime u procesu instanciranja. Isto nije bilo potrebno pri instanciranju osnovnih elementa (logikih
kapija) pri definisanju modula jednobitnog potpunog sabiraa (primer 8-4).
Kada je projekat zavren, generisanjem ulaznih i posmatranjem izlaznih signala se mora
proveriti funkcionalnost HDL opisa. Potrebno je definisati jedan ispitni modul koji generie ulazne
signale za projekat i prima izlazne signale. Analizom izlaznih signala e projektant ustanoviti da li
dati modul funkcionie pravilno.
U primeru 8-6 je data definicija ispitnog modula pod imenom Stimulus.
Primer 8-6: Modul Stimulus za ispitivanje etvorobitnog sabiraa.
module Stimulus;
// Deklaracija tipova podataka za modul Stimulus
reg [3:0] A, B;
reg C_IN;
wire [3:0] SUM;
wire C_OUT;
// Instanciranje etvorobitnog sabiraa
initial
begin
A = 4d0;
#5
#5
#5
#5
#5
B = 4d0;
A = 4d3;
A = 4d2;
A = 4d9;
A = 4d10;
B = 4d5;
C_IN = 1b0;
B = 4d4;
B = 4d5;
B = 4d9;
B = 4d15;
C_IN = 1b1;
end
endmodule
8.3. Kanjenja
Logika kola koja su se koristila u prethodnim primerima su bila bez kanjenja, odnosno
sa nultim kanjenjem. Kod realnih logikih kola uvek se javlja kanjenje promene na izlazu u
odnosu na promenu na ulazu. To se mora uzeti u obzir i u hardverskim opisima da bi pri simulaciji i
pri kasnijoj realizaciji projekta dobili realne rezultate. Za simulaciju kanjenja u realnim digitalnim
sistemima, Verilog HDL omoguava definisanje tri vrste kanjenja za osnovna logika kola.
- 94 -
Kanjenje porasta
Kanjenje porasta (engl.: rise delay) je vreme
potrebno izlazu da se njegova logika vrednost sa 0, x ili z
vrednosti poraste na 1 (slika 8-10).
0, x ili z
tporasta
Kanjenje opadanja
Kanjenje opadanja (engl.: fall delay) je vreme
potrebno izlazu da se njegova logika vrednost sa 1, x ili
z opadne na 0 (slika 8-11).
1,x ili z
topadanja
Kanjenje iskljuivanja
Kanjenje iskljuivanja (engl.: turn-off delay) je vreme potrebno izlazu da se njegova
logika vrednost sa 0, 1 ili x pree u stanje visoke impedanse (z).
U Verilog HDL-u ne zadaje se posebna vrednost kanjenja izlaza kada se izlaz menja sa
poznate vrednosti (0 ili 1) u nepoznato stanje (x) Softver za prevoenje odnosno simulaciju
automatski uzima minimalnu vrednost od prethodna tri kanjenja.
Verilog HDL podrava tri naina zadavanja gore definisanih kanjenja u logikim kolima:
Jedno kanjenje je zadato i ta vrednost se koristi za sve prelaze.
Dva kanjenja su zadata i odnose se na kanjenje porasta i opadanja. Kanjenje
iskljuivanja postaje manja vrednost od prethodna dva kanjenja.
Sve tri vrste kanjenja su zadata i odnose se redom na kanjenje porasta, opadanja i
iskljuivanja.
Ukoliko ni jedna vrsta kanjenja nije zadata, podrazumevana vrednost je 0, odnosno nema
kanjenja. Jezike konstrukcije za zadavanja kanjenja su prikazane u primeru 8-7.
Primer 8-7: Jezike konstrukcije za zadavanja kanjenja.
// Svi prelazi imaju jednako kanjenje koje je odreeno vrednou parametra delay_time.
- 95 -
Minimalno vreme kanjenja je najkrae potrebno vreme da se pojavi odziv na izlazu nakon
promene ulaza.
Tipino vreme kanjenja je oekivano vreme kanjenja.
Maksimalno vreme kanjenja je najdue potrebno vreme izlaza da odgovori na promenu na
ulazu.
#5
e
#4
out
- 96 -
output out;
input a, b, c;
// Interne veze
wire e;
// Instanciranje potrebnih primitiva za realizaciju date kombinacione mree
and #(5) a1(e, a, b);
// Kanjenje je 5 vremenskih jedinica
or #(4) o1(out, e, c);
// Kanjenje je 4 vremenskih jedinica
endmodule
Ovaj modul se testira ispitnim modulom sa imenom stimulus koji je prikazan u primeru 811.
Primer 8-11: Ispitni modul stimulus za testiranje simple_log_circuit-a.
module stimulus;
// Deklaracija internih nosioca podataka
reg A, B, C;
wire OUT;
// Instanciranje modula simple_log_circuit
initial
begin
#10
#10
#20
A = 1b0;
A = 1b1;
A = 1b1;
$finish;
B = 1b0;
B = 1b1;
B = 1b0;
C = 1b0;
C = 1b1;
C = 1b0;
end
endmodule
- 97 -
A
B
C
xxxx
OUT x x x x x x x x
0
9 10
14 15
20
25
29
- 98 -
40
- 99 -
U sledeoj taki je predstavljen krai nain zapisa kontinualne dodele nosiocima podataka
tipa net.
9.1.1. Implicitna kontinualna dodela
Umesto posebne deklaracije nosioca podatka tipa net i pisanja izraza za kontinualnu
dodelu, Verilog HDL omoguava jedan krai nain opisa gde se te dve operacije vre u jednom
koraku. U primeru 9-3 je prikazan regularan i implicitni nain pisanja kontinualnih dodela.
Primer 9-3: Regularan i implicitni nain kontinualne dodele.
- 100 -
U primeru 9-4 rezultat promene u vrednostima signala in1 i in2 se pojavljuje na izlazu
logikog I kola sa kanjenjem od 10 vremenskih jedinica. Na slici 9-1 su prikazani vremenski
dijagrami signala na nosiocima podataka koji su korieni u primeru 9-4.
in1
in2
out
0
10
15
20
25
30
35
40
45
50
55
60
65
70
75
80
wire out;
assign #10 out = in1 & in2;
- 101 -
wire out;
assign #10 out = in1 & in2;
a^b
addr1[7:4] + addr2[7:4]
in1 | in2
9.3.2. Operandi
Uopteno, operandi mogu biti podaci bilo kog tipa definisanih u poglavlju 6.2. Neke
konstrukcije prihvataju samo odreene tipove operanada. Operand moe biti konstanta, ceo broj
(integer), realan broj (real), net, reg, vektor, deo vektorske veliine (koji moe sadrati jedan ili
vie bitova) ili funkcijski poziv (u ovom opisu, kao to je ve napomenuto, funkcijski pozivi ne
predstavljaju predmet razmatranja). U primeru 9-8 se prikazuju naini korienja operanada.
Primer 9-8: Korienje raznih tipova operanada.
real a, b, c;
c = a b;
- 102 -
d1 && d2
!a[0]
C >> 2
Operacija
Broj operanada
2
mnoenje
2
deljenje
2
sabiranje
2
oduzimanje
2
deljenje po modulu
logika negacija
1
logiko I
2
logiko ILI
2
2
vee od
2
manje od
2
vee ili jednako
2
manje ili jednako
2
jednakost
2
nejednakost
2
case jednakost
2
case nejednakost
bit negacija
1
bit I
2
2
bit ILI
2
bit EX-ILI
2
bit EX-NILI
redukcioni I
1
redukcioni NI
1
1
redukcioni ILI
1
redukcioni NILI
1
redukcioni EX-ILI
1
redukcioni EX-NILI
pomeranje udesno
2
pomeranje ulevo
2
pridruivanje
bilo koji broj
umnoavanje
bilo koji broj
uslovni
3
- 103 -
Binarni operatori
Binarni aritmetiki operatori su: mnoenje ( * ), deljenje ( / ), sabiranje (+), oduzimanje (-)
i deljenje po modulu ( % ). Binarni operatori se primenjuju nad dva operanda. U primeru 9-10 je
prikazan nain primene binarnih operatora.
Primer 9-10: Primeri korienja binarnih aritmetikih operatora.
A = 4b0011; B = 4b0100;
D = 6; E = 4;
A*B
D/E
A+B
BA
// Ako je vrednost nekog bita operanda nepoznata (x), onda je i rezultat celog izraza nepoznat (x).
in1 = 4b101x;
in2 = 4b1011;
sum = in1 + in2; // Rezultat sabiranja e biti: 4bx
// Operator deljenja po modulu daje ostatak pri deljenju dva broja.
13 % 3
// Rezultat je 1.
16 % 4
// Rezultat je 0.
-7 % 2
// Rezultat je -1 jer se uzima predznak prvog operanda.
7 % -2
// Rezultat je 1 iz istog razloga.
Unarni operatori
Operatori + i mogu biti i unarni operatori (primer 9-11). U tom sluaju se koriste za
zadavanje pozitivnog ili negativnog predznaka operanda. Unarni operatori + i imaju vei prioritet
od binarnih operatora + i .
Primer 9-11: Primeri unarnih aritmetikih operatora.
-4
+5
// Minus 4
// Plus 5
Korienje negativnih brojeva se preporuuje samo u tom sluaju kada je tip nosioca
podatka integer ili real. Kod brojeva koji su dati u obliku <veliina><osnova_brojnog_sistema>
<broj> bi trebalo izbegavati korienje negativnog predznaka jer takve brojeve Verilog HDL
prevodi u oblik drugog komplementa i rezultat moe biti neoekivan (primer 9-12).
Primer 9-12: Primer neoekivanog rezultata pri deljenju negativnog broja datog u
obliku <veliina><osnova_brojnog_sistema><broj>.
// Za predstavljanje negativnih brojeva se preporuuje korienje
// nosioca podatka tipa integer ili real.
// Ako se koristi nosioc podatka integer ili real, dobija se oekivani rezultat.
-10 / 5
// Rezultat je -2.
// Izbegavati oblik <veliina><osnova_brojnog_sistema><broj> za predstavljanje neg. brojeva
-d10 / 5
// Rezultat je (drugi komplement od 10) / 5 = (232 10) / 5
- 104 -
A = 3; B = 0;
A && B
A || B
!A
!B
A = 2b0x; B = 2b10;
A && B
A = 4; B = 2;
X = 4b1010; Y = 4b1011; Z = 4b1xxx;
A <= B;
A > B;
Y <= X;
Y < Z;
// Rezultat je 0.
// Rezultat je 1.
// Rezultat je 0.
// Rezultat je x.
- 105 -
Izrazi
Opisi
a==b
Mogue logike
vrednosti
0, 1, x
0, 1, x
0, 1
0, 1
A = 4; B = 3;
X = 4B1010; Y = 4b1101;
Z = 4b1xxz; M = 4b1xxz; N = 4b1xxx;
A == B
X != Y
X == Z
Z === M
Z === N
M !== N
// Rezultat je 0.
// Rezultat je 1.
// Rezultat je x.
// Rezultat je 1 jer svi bitovi se poklapaju ukljuujui x i z.
// Rezultat je 0 jer bitovi sa najmanjom binarnom teinom se razlikuju.
// Rezultat je 1.
X = 4b1010;
~X
X&Y
Y = 4b1101 ;
Z = 4b10x1;
- 106 -
I operacija
bit po bit
ILI operacija
bit po bit
~A
NE operacija
bit po bit
Iskljuciva NILI
operacija bit po bit
Vano je naglasiti razliku izmeu operatora nad bitovima: ~, &, | i logikih operatora: !,
&&, ||. U logikim operacijama operandi se smatraju za jednu logiku promenljivu bez obzira na
broj bita dok se kod opearcija bit po bit operacija izvrava nad pojedinim bitovima operanda
(primer 9-17).
Primer 9-17: Primer koji prikazuje razliku izmeu operacija bit po bit i logikih
operacija.
X = 4b1010;
X | Y;
X || Y;
Y = 4b0000;
- 107 -
X = 4b1010;
&X
|X
^X
X = 4b1100;
Y = X >> 1; // Y = 4b0110. Sadraj vektora X se pomera za jedan bit udesno i
// mesto najvie znaajnog bita se popunjava sa 0.
Y = X << 1; // Y = 4b1000. Sadraj vektora X se pomera za jedan bit ulevo i
// mesto najmanje znaajnog bita se popunjava sa 0.
A = 1b1;
Y = { B, C };
Y = { A, B, C, D, 3b001 };
Y = { A, B[0], C[1] };
// Y = 4b0010
// Y = 11b10010110001
// Y = 3b101
- 108 -
reg A;
reg [1:0] B, C;
A = 1b1; B = 2b00;
Y = { 4{A} };
Y = { 4{A}, 2{B} };
Y = { 4{A}, 2{B}, C };
C = 2b10;
// Y = 4b1111
// Y = 8b11110000
// Y = 10b1111000010
in1
out
control
addr_out
addr_bus
drive_enable
- 109 -
Uslovne operacije je mogue koristiti i na iterativan nain. Izrazi unutar uslovnih operacija
mogu da sadre druge uslovne operacije. Ova mogunost je prikazana preko jednog primera.
Zadatak je da se uporede dva dvobitna broja (A i B). Vrednost izlaza treba da bude logika
jedinica ako su oba broja parna ili neparna, u suprotnom sluaju vrednost izlaza postaje logika
nula. Dovoljno je ispitati parnost bita najmanje teine na nain koji je prikazan u primeru 9-23.
Izlaz se odreuje u dva koraka (na iterativan nain) primenom uslovnih operacija.
Primer 9-23: Uslovne opercije koriene na iterativan nain.
reg [1:0] A, B;
Simboli operatora
Prioriteti
unarni
+-!~
Najvei prioritet
mnoenje, deljenje, deljenje po modulu
*/%
sabiranje, oduzimanje
+pomeranje
<< >>
relacione
< <= > >=
jednakosti
= = != = = = != =
& ~&
redukcioni
^ ~^
| ~|
&& ||
logiki
uslovni
?:
Najmanji prioritet
Tabela 9-2: Hijerarhija operacija
- 110 -
10.
Najvii nivo za opis digitalnih kola pomou hardverskog jezika je nivo ponaanja. Visoki
nivo apstrakcije omoguava da se projektant ne optereuje detaljima realizacije, ve ponaanjem
kola koje se projektuje. Ovi opisi jako lie na programe napisane u programskom jeziku C ali uvek
treba imati na umu da hardverski opis slui za formiranje odreenog digitalnog kola. Na osnovu
HDL opisa softver za sintezu razvije kolo koje se na kraju ostvaruje programiranjem odgovarajueg
PLD-a.
Verilog HDL moduli za opis simulacija obino sadre opise na nivou ponaanja koji nisu
predvieni za hardversku realizaciju, njihova namena je samo ispitivanje drugih modula.
10.1.
Struktuirane procedure
Opisi na nivou ponaanja se mogu pisati u okviru jedne od dve mogue struktuirane
procedure (engl.: structured procedure). Na osnovu kljunih rei kojima se uvode te procedure oni
se zovu initial i always procedure. Instrukcije na nivou ponaanja se mogu pojaviti samo unutar tih
procedura.
Jedan Verilog HDL modul moe da sadri i vie struktuiranih procedura. Definicija nove
procedure se ne moe poeti dok nije zavrena prethodno zapoeta. Sve te procedure u toku
simulacije projektovanog modula poinju u trenutku t=0 i izvravaju se paralelno (konkurentno), za
razliku od softverskih algoritama gde se izvravanje programa deava sekvencijalno, korak po
korak. Ta osobina je povezana sa time da se u digitalnom kolu koje se realizuje na bazi HDL opisa,
razni blokovi takoe rade istovremeno, paralelno obavljaju funkcije.
10.1.1. Procedura tipa initial
Procedura tipa initial poinje sa kljunom rei initial. Posle kljune rei sledi initial blok
koji moe da sadri jednu ili vie dodela vrednosti. Izvravanje operacija u initial bloku poinje u
trenutku t=0 i izvravanje se deava tano jedan puta. Ako jedan modul sadri vie initial
procedura, izvravanje svakog od njih poinje u trenutku t=0, izvravaju se i zavravaju se
meusobno nezavisno.
Pri projektovanju digitalnih kola initial procedure se obino koriste za jednokratna
podeavanja. U veini sluajeva initial procedure se ne odnose na opis nekog kola, ve se koriste u
simulacionim modulima za zadavanje pobudnih signala.
Ako initial procedura sadri samo jednu dodelu vrednosti, ona se pie neposredno iza
kljune rei initial. Ako se iza kljune rei navodi initial blok koji sadri vie dodela, pre bloka
treba napisati kljunu re begin, a na kraj bloka treba staviti kljunu re end. U primeru 10-1 se
mogu videti razne initial procedure.
Primer 10-1: Simulacioni modul koji sadri vie initial procedura.
module Stimulus;
reg a, b, m;
initial
m=1b0;
initial
begin
#5 a=1b1;
#25 b=1b0;
end
initial
#50 $finish;
endmodule
- 111 -
dodela
m=1b0
a=1b1
b=1b0
$finish
module clock_gen;
reg clock;
initial
clock=1b0;
always
#10 clock=~clock;
initial
#1000 $finish;
endmodule
10.2.
Dodele definisane u procedurama tipa initial i always dodeljuju novu vrednost nosiocima
podataka tipa reg, integer i real. Tako dobijene vrednosti se ne menjaju dok se ne vri nova dodela.
Ovo je znaajna razlika u odnosu na dodele na nivou toka podataka: tamo je dodela nove vrednosti
nosiocima podataka tipa net izvravana kontinualno. im se desi neka promena u ulaznim
podacima, odmah je izraunata i dodeljena nova vrednost izlaznom nosiocu podataka.
Dodele o kojima je ovde re se definiu znakom za dodelu, desno od znaka stoji neki
izraz, levo od znaka se navodi ime nekog nosioca podataka, neki njegov bit ili grupa bita ili
pridrueni nosioci podataka.
Razlikujemo dve vrste dodela u procedurama: postoje blokirajue i neblokirajue dodele.
Razlike meu tim dodelama e se objasniti u narednoj taki.
10.2.1. Blokirajue dodele
Znak dodele u blokirajuim dodelama je znak jednakosti (=). Ove dodele se izvravaju u
onom redosledu, kako su navedeni u initial ili always bloku. Dodela koja je trenutno stigla u fazu
izvravanja blokira sledee dodele u tom bloku. Dodele navedene u dvema razliitim initial ili
always procedurama ne blokiraju jedan drugog, izvravaju se nezavisno. U primeru 10-3 se vidi deo
- 112 -
reg x, y, z;
reg [15:0] reg_a, reg_b;
integer count;
initial
begin
x=1b0; y=1b; x=1b1;
count=0;
reg_a=16b0; reg_b=reg_a;
#15 reg_a[2]=1b1;
#10 reg_b[15:13]={x,y,z};
count=count+1;
end
Dodela
x=1b0
y=1b1
z=1b1
count=0
reg_a=1b0
reg_b=reg_a
reg_a[2]=1b1
reg_b[15:13]={x,y,z}
count=count+1
U dodelama se moe desiti da nosilac podatka sa leve strane znaka dodele nema isti broj
bita kao izraunata vrednost izraza sa desne strane znaka dodele. Ako nosilac podatka ima manji
broj bita, bitovi manje teine iz vrednosti izraza se dodeljuju nosiocu podatka, a bitovi vee teine
otpadaju. U suprotnom sluaju nedefinisani bitovi se popunjavaju nulama.
10.2.2. Neblokirajue dodele
U neblokirajuim dodelama se koristi znak <=. Taj znak se ujedno koristi i u operacijama
uporeivanja, ali softver koji tumai HDL opis ume da rastumai da li se radi o uporeenju ili o
dodeli. Kod ovih dodela dodela koja je na redu ne blokira izvravanje narednih dodela. Ponoviemo
primer 10-3, ali tri dodele emo promeniti da budu neblokirajue i pratiemo posledice (primer 104). U tabeli 10-4 je sumirano po kom redosledu pojedine dodele iz primera 10-4 dolaze na
izvravanje i u kom momentu se izvravaju.
Primer 10-4: Deo modula sa blokirajuim i neblokirajuim dodelama.
reg x, y, z;
reg [15:0] reg_a, reg_b;
integer count;
initial
begin
x=1b0; y=1b; x=1b1;
count=0;
reg_a=16b0; reg_b=reg_a;
reg_a[2]<= #15 1b1;
reg_b[15:13]<= #10 {x,y,z};
- 113 -
Dodela
x=1b0
y=1b1
z=1b1
count=0
reg_a=1b0
reg_b=reg_a
reg_a[2]=1b1
reg_b[15:13]={x,y,z}
count=count+1
Moe se rei da se prvih est dodela izvravaju u trenutku t=0, i to u redosledu pisanja
(osobina blokirajuih dodela). Posle toga, ali jo uvek u trenutku t=0, preostale tri dodele dolaze na
izvravanje istovremeno. Ako nije naznaeno nikakvo kanjenje, naznaene dodele se deavaju
odmah (u trenutku t=0). Ako ima kanjenja, nosilac podatka sa leve strane znaka dodele e nakon
isteka kanjenja primiti vrednost koja je izraunata na osnovu vrednosti podataka u izrazu sa desne
strane znaka dodele u trenutku t=0.
Sa neblokirajuim dodelama se obino opisuju digitalna kola u kojima se deava
konkurentni (istovremeni) prenos podataka pod delovanjem zajednikog kontrolnog signala. U
primeru 10-5 se deavaju tri dodele na uzlaznoj ivici takt signala. Vremenska kontrola dodela u
procedurama (pomou takt signala ili drugaije) e se obraditi detaljno u poglavlju 10.3.
Primer 10-5: Konkurentni prenos podataka primenom neblokirajuih dodela.
Odrede se vrednosti podataka u izrazima sa desne strane znakova dodele (in1, in2, in3,
reg1), dotini izrazi se odmah izraunaju i dobijene vrednosti zapisuju u privremenoj
memoriji.
Stvarne dodele se deavaju kada im doe vreme. Prva i trea dodela se odigravaju nakon
kanjenja od jedne vremenske jedinice (zbog naznaenog kanjenja), dok se druga dodela
izvrava na najblioj silaznoj ivici takt signala.
Nije bitno po kom redosledu e se vriti upis u odgovarajue registre (izvravanje dodele)
poto sadraj privremene memorije ne zavisi od redosleda. Npr. u treoj dodeli reg3 dobija
staru vrednost reg1, bez obzira na injenicu da je u prvoj dodeli reg1 dobio novu vrednost.
Da bismo jo bolje utvrdili pravila prenosa podataka kod neblokirajuih dodela, prvo
posmatrajmo primer 10-6.
- 114 -
Navedene dve always procedure kreu istovremeno (pri svakoj uzlaznoj ivici takt signala).
Nijedan od napisanih blokirajuih dodela u navedenim procedurama nema prioritet (poto su
napisane u dvema procedurama) zato e redosled izvravanja biti sluajan. Kada se jedna dodela
izvri, oba registra e sadrati istu vrednost, sledea dodela ve nema efekta.
Efekat protravanja se moe spreiti primenom neblokirajuih dodela (primer 10-7). U
ovom sluaju se prvo zapiu poetne vrednosti podataka sa desne strane znaka za dodelu. Nakon
toga se izvre dodele korienjem zapisanih vrednosti i rezultat nee zavisiti od redosleda
izvravanja.
Primer 10-7: Spreavanje efekta protravanja primenom neblokirajuih dodela.
Na osnovu gornjeg HDL opisa sintetizuje se digitalno kolo (kruni broja) prikazano na
slici 10-1. U kolu e se nakon svake uzlazne ivice takt impulsa (clk) zameniti sadraji flip-flop-ova.
Osnovna osobina ivino okidanih kola je da uzorkuju ulazne signale na odgovarajuoj
ivici takt signala i nakon toga izvre potreban upis u skladu sa uzorkovanim vrednostima. Ako se
ulazni signali promene nakon ivice takt signala, to nee imati nikakvog efekta na upis.
a
clk
Slika 10-1: Digitalno kolo sintetizovano na bazi HDL opisa iz primera 10-7.
- 115 -
initial
begin
#10 y=1b1;
#latency z=1b0;
#(4,5,6) q=1b0;
end
Prva dodela se izvrava nakon kanjenja od deset vremenskih jedinica raunato u odnosu
na t=0. Ako se na desnoj strani znaka dodele pojavljuje neki izraz (umesto konstante u datoj
dodeli), izraunavanje izraza kasni isto toliko. S obzirom na osobine blokirajuih dodela, druga
dodela dolazi na izvravanje tek nakon izvravanja prve dodele. Poto smo kod druge dodele
vrednost kanjenja zadali u vidu identifikatora (konstante), potrebno je saekati vreme odreeno
identifikatorom da bi se dodela izvrila. Nakon izvravanja druge dodele trea dodela dolazi na
izvravanje kod koje smo kanjenje zadali sa min/typ/max izrazom.
Drugi nain pisanja kanjenja je navoenje kanjenja unutar same dodele. Odgovarajue
vreme kanjenja se navodi na desnoj strani znaka za dodelu (= ili <=). U ovom sluaju
izraunavanje vrednosti izraza koji figurie na desnoj strani dodele se vri u momentu dolaska
dodele na izvravanje (ne posle kanjenja, kao to je sluaj kod pravilnog zadavanja kanjenja), a
sama dodela kasni onoliko koliko je propisano. U primeru 10-10 u prvoj initial proceduri kanjenje
je zadato unutar dodele, zato se sabiranje deava u trenutku t=0, dok dodela kasni pet vremenskih
jedinica. Druga initial procedura pokazuje kako se moe postii isti rezultat uvoenjem privremenog nosioca podatka (temp_xz) i pravilnim nainom pisanja kanjenja.
Primer 10-10: Pisanje kanjenja unutar izraza za dodelu.
initial
y= #5 x+z;
initial
begin
temp_xz=x+z
#5 y=temp_xz
end
- 116 -
initial
begin
x=0;
y=0;
end
initial
begin
#0 x=1;
#0 y=1;
end
Primenom pravilne metode opisuje se ivino okidanje, koriste se kljune rei @ i posedge
ili negedge. U primeru 10-12, unutar prve always procedure, dodelu treba izvriti i na uzlaznoj i na
silaznoj ivici takt signala. U drugoj proceduri dodela se vri na uzlaznoj ivici takta, u treoj na
silaznoj ivici takta. U etvrtoj proceduri se memorie vrednost podatka d u momentu kada dodela
dolazi na izvravanje, a dodela te vrednosti nosiocu podatka q se izvrava na uzlaznoj ivici takta.
Primer 10-12: Pravilna metoda vremenske kontrole (definisanje ivinog okidanja).
always @ (clock)
q=d;
always @ (posedge clock)
q=d;
always @ (negedge clock)
q=d;
always
q=@(posedge clock) d;
Potrebno je naglasiti da u hardverskim opisima ne postoji nikakav gotov izvor takt signala,
niti neki poseban, rezervisani naziv za takt signal (u gornjem primeru clock nije kljuna re). Takt
signal koji je potreban za simulaciju HDL opisa mora da formira projektant prema svojim
zahtevima u jednom pomonom modulu. Isti pristup vai i pri hardverskoj realizaciji HDL opisa:
PLD kolo ne sadri unutranji izvor takta, takt signal se mora obezbediti pomou posebnog kola.
Ako vremensku kontrolu planiramo da ostvarimo ekanjem na imenovani dogaaj, prvo
- 117 -
event received_data;
always @(posedge clock)
begin
if (last_data_packet)
->received_data;
end
always @ (received_data)
data_buf={data_pkt[0], data_pkt[1], data_pkt[2], data_pkt[3]};
Primena pravilne metode vremenske kontrole (ivino okidanje) se moe uoptiti tako da se
izvravanje dodele vezuje na promenu jednog signala iz grupe signala. Slian je nain definisanja
ovakve vremenske kontrole, samo se pojedina imena signala povezuju sa kljunom rei or (primer
10-14).
Primer 10-14: Vremenska kontrola ekanjem na ivicu jednog od grupe signala.
always
wait (count_enable) #20 count=count+1;
- 118 -
Uslovne dodele
if (!clock)
buffer=data;
Ako neke dodele treba da se izvravaju pri tanom uslovu a neke pri netanom, koriste se
kljune rei if i else (primer 10-17). Ako je uslov taan, potrebno je izvriti dve dodele navedene
izmeu kljunih rei begin i end, u suprotnom sluaju izvrava se instrukcija $display. Ova
instrukcija ne slui za opisivanje nekog hardvera ve prouzrokuje odreenu akciju kod logikog
simulatora.
Primer 10-17: Vezivanje dodela za taan i netaan uslov.
if (number_queued<MAX_Q_DEPTH)
begin
data_queued=data;
number_queued= number_queued+1;
end
else
$display (Queue full, Try again);
U treem sluaju uslov moe da ima vie od dve vrednosti i pri svakoj vrednosti treba
izvrtiti neku drugu dodelu. U primeru 10-18, pri vrednostima parametra alu_control od 0, 1 ili 2,
izvravaju se odreene propisane dodele, meutim ako nijedan uslov nije ispunjen, aktivira se
instrukcija $display. U prikazanoj jezikoj konstrukciji koristi se lanac kljunih rei if else if
else.
Primer 10-18: Dodele vezane za vie od dva uslova.
if (alu_control==0)
y=x+z;
else if (alu_control==1)
y=x-z;
else if (alu_control==2)
y=x*z;
else
$diplay (Invalid alu control signal);
10.5.
Viestruka grananja
Pisanje if-else struktura iz prethodne take u sluaju veeg broja uslova je komplikovano i
dobijeni opis je nepregledan. U takvim situacijama prikladnije je korienje strukture sa kljunom
rei case.
10.5.1. Struktura case
Za formiranje ove strukture koriste se kljune rei case, endcase i default. Primena
kljune rei default nije obavezna. Ako se koristi, moe da se pojavi samo jednaput. U primeru 1019 prethodnu if-else strukturu smo pretvorili u case strukturu da bi dobili jednostavniji opis.
- 119 -
U gornjem primeru procedura always se svaki put aktivira kada se promeni logiki nivo
bilo kog od ulaznih nosioca podataka. Slino primeru 10-14 i ovde se radi o okidanju na nivo, ali
procedura kree kada se promeni logiki nivo (znai: kod ivice). Kodovi pojedinih sluajeva su
dobijeni povezivanjem jednobitnih selekcionih ulaza (s1, s0). Red sa kljunom rei default se moe
izostaviti, poto nema uticaja na sintezu fizikog kola. Izlazni nosilac podatka (out) je deklarisan da
bude tipa registar, ali se ipak na osnovu datog HDL opisa sintetizuje kombinaciono kolo
(multipleksor).
U case strukturi u pojedinim sluajevima umesto jedne dodele moe da se javi vie njih.
Tada dodele treba grupisati sa kljunim reima begin i end. Pojedini bitovi u kodovima sluajeva
mogu uzimati vrednosti x ili z, na taj nain se neka kola mogu preciznije opisati.
10.5.2. Primena kljunih rei casex casez
Primenom kljunih rei casex i casez mogu se skratiti razni opisi sa grananjima. Pri
korienju kljune rei casez u kodu sluaja na pojedinim pozicijama mogu da stoje z vrednosti i
one nee imati uticaja na izvravanje uslovne dodele. Kod kljune rei casex u kodu mogu biti i x i
z vrednosti i te pozicije se nee razmatrati pri izvravanju dodele. U primeru 10-21 dat je skraeni
opis jednog specijalnog kodera koji izlazni kod formira na osnovu toga da li na odgovarajuoj
poziciji postoji logika jedinica, vrednosti ostalih bitova nemaju uticaja na kod.
Primer 10-21: Primena kljune rei casex za definisanje specijalnog kodera.
reg[3:0] encoding;
integer state;
casex (encoding)
4b1xxx: state=3;
4bx1xx: state=2;
4bxx1x: state=1;
- 120 -
10.6.
integer count;
initial
begin
count=0;
while (count < 127)
begin
$display (count=%d, count);
count=count+1;
end
end
Izraz u zagradi pored instrukcija $display definie ta treba ispisati na monitor raunara na
kojoj se vri simulacija. Pri svakom prolasku kroz petlju na monitoru se pojavi tekst count= i
trenutna vrednost podatka count u decimalnom obliku.
10.6.2. Petlja tipa for
Ova petlja se definie pomou kljune rei for i izraza u zagradi pored te kljune rei.
Izraz sadri tri elementa:
jedan poetni uslov,
proveru uslova za izlazak iz petlje,
jednu dodelu koja modifikuje vrednost podatka kojom je odreen momenat izlaska iz petlje.
Broja dat u prethodnom primeru se jednostavije moe opisati primenom for petlje
(primer 10-23). Treba meutim rei da je petlja tipa while optijeg karaktera i ima iru primenu.
Primer 10-23: Primena petlje tipa for za opis brojaa.
integer count;
initial
for (count=0; count<128; coun=count+1)
$display (count=%d, count);
- 121 -
integer count;
initial
begin
count=0;
repeat (128)
begin
$display (count=%d, count);
count=count+1;
end
end
initial
begin
clock=1b0;
forever #10 clock=~clock;
end
10.7.
Dodele koje ine celinu se grupiu u blokove. Dosad su mnogo puta koriene kljune rei
begin i end kojima se formiraju redni blokovi. U rednim blokovima dodele dolaze na izvravanje u
redosledu pisanja. Pored rednih blokova postoje i paralelni. Dodele u paralelnim blokovima dolaze
na izvravanje istovremeno (vreme izvravanja moe da se razlikuje samo ako su definisana
kanjenja).
10.7.1. Redni blokovi
Redni blokovi se poinju sa kljunom rei begin i zavravaju se sa kljunom rei end.
Dodele navedene izmeu tih kljunih rei se izvravaju u onom redosledu kako su napisane. Novoj
dodeli se ne pristupa sve dok prethodna nije izvrena. Zadate vrednosti kanjenja su relativne
vrednosti: kanjenje navedeno za trenutno aktivnu dodelu se rauna od zavretka prethodne dodele.
U dosadanjim primerima smo ve na puno mesta koristili redne blokove. U primeru 1026 navodimo jedan redni blok bez kanjenja. Navedene etiri dodele se izvravaju u redosledu
pisanja ali se sve to deava u t=0. Na taj nain bitovi podataka y i w se formiraju od prethodno
dodeljenih vrednosti podataka x i y.
Primer 10-26: Redni blok bez kanjenja.
reg x,y;
reg [1:0] z, w;
- 122 -
U primeru 10-27 dodele u rednom bloku sadre kanjenje (izuzev prvog). Poto su kanjenja
nadovezuju, prva dodela se izvrava u t=0, druga u t=5, trea u t=15 a etvrta u t=35.
Primer 10-26: Redni blok sa kanjenjima.
reg x,y;
reg [1:0] z, w;
initial
begin
x=1b0;
#5 y=1b1;
#10 z={x,y};
#20 w={y,x};
end
reg x,y;
reg [1:0] z, w;
initial
fork
x=1b0;
#5 y=1b1;
#10 z={x,y};
#20 w={y,x};
join
Pri korienju paralelnog bloka moe da nastupi efekat protravanja ako sa dva ili vie
dodela pokuavamo istovremeno dodeliti vrednost nekom nosiocu podatka. Takoe moe biti
problematino ako u istom bloku definiemo vrednost nekog podatka i koristimo isto u nekoj drugoj
dodeli. U primeru 10-28 vrednosti z i w su nesigurne u momentu naputanja bloka jer se ne zna da li
su vrednosti x i y definisane na vreme.
Primer 10-28: Paralelni blok bez kanjenja (javlja se efekat protravanja).
reg x,y;
reg [1:0] z, w;
- 123 -
initial
begin
x=1b0;
fork
#5 y=1b1;
#10 z={x,y};
join
#20 w={y,x};
end
U primeru 10-30 nosilac podatka i se pojavljuje unutar dva bloka, ali poto su ti blokovi
imenovani, ne dolazi do zabune. ak ni to nije problem to nosioci podataka nisu istog tipa.
Primer 10-30: Primena imenovanih blokova.
module top;
initial
begin: block1
integer i;
.........
end
initial
fork: block2
reg i;
.........
join
endmodule
- 124 -
initial
begin
flag=16b0010_0000_0000_0000;
i=0;
begin: block1
while (i<16)
begin
if (flag[i])
begin
$display (True bit at element number %d, i);
disable block1;
end
i=i+1;
end
end
end
- 125 -
11.
Literatura
[1] Szittya Ott: Digitlis s analg technika informatikusoknak, I i II tom, LSI Oktatkzpont,
Budapest, 1999.
[2] Dejan ivkovi, Miodrag Popovi: Impulsna i digitalna elektronika, Nauka, Beograd, 1993.
[3] Samir Palnitkar: Verilog HDL, A Guide to Digital Design and Synthesis, Sunsoft Press, 1996.
[4] Michael Ciletti: Advanced Digital Design with the Verilog HDL, Prentice Hall, 2003.
[5] Morris Mano: Digital Design, III izdanje, Prentice Hall, 2002.
[6] Matijevics Istvn: Digitlis Technika, Szabadkai Mszaki Fiskola, Szabadka, 2003.
[7] Janovics Sndor, Tth Mihly: A logikai tervezs mdszerei, Mszaki Knyvkiad Budapest,
1973.
[8] Arat Pter: A logikai rendszerek tervezse, III izdanje, Tanknyvkiad, Budapest, 1990.
[9] Peter Ammon: Kapumtrix ramkrk, Berendezsorientlt ramkrk, Mszaki Knyvkiad,
Budapest, 1989.
[10] Radomir Stankovi, Milena Stankovi: Logiko projektovanje, Nauka, Beograd, 1991.
[11] Tihomir Aleksi: Logika sinteza digitalnih mrea, Nauna knjiga, Beograd, 1975.
[12] Ripka Gbor: Felletre szerelhet alkatrszek, Mszaki Knyvkiad, Budapest, 1992.
[13] Texas Instruments: Logic Selection Guide, Dallas, Texas, 2003.
[14] Fairchild: Logic Selection Guide, 2003.
[15] www.ti.com
[16] www.fairchildsemi.com
[17] www.prenhall.com
[18] www.xilinx.com
[19] www.altera.com
[20] www.atmel.com
[21] www.latticesemiconductor.com
[22] www.simucad.com
- 126 -