- 1

-
Viša Tehnièka Škola - Subotica





Burány Nándor
Divéki Szabolcs









Digitalna elektronika



-skripta-























Subotica, 2007.
id57328250 pdfMachine by Broadgun Software - a great PDF writer! - a great PDF creator! - http://www.pdfmachine.com http://www.broadgun.com
- 2 -
Predgovor

Skripta je napisana za studente druge godine Više Tehnièke Škole u Subotici i sadrži
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 logièkim osnovama digitalnog projektovanja. Glava o logièkim kolima u Analognoj
elektronici pružala je uvid u hardverska rešenja koja èine osnove digitalnih ureðaja.
Skripta obraðuje aktuelna rešenja za realizaciju digitalnih kola prema programu za
predmet Digitalna elektronika. Polazi se od (I. deo) opštih pitanja vezanih za fizièku 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
obraðuje 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 stiže do opisa jezika
i do raèunarskih simulacija. U okviru predmeta Projektovanje elektronskih ureðaja ãe se studenti
upoznati sa softverima za automatsku sintezu digitalnih kola i sa samim postupkom programiranja.
Karakteristièno je za savremeni naèin projektovanja da veãi 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 pomoãne zadatke
(pobuðivanje, prilagoðavanje nivoa itd.).
Ureðaji koji se softverski programiraju imaju širu oblast primene i veoma su pogodni za
obavljanje složenih zadataka kao što su upravljanje, merenje, prikazivanje rezultata itd. Meðutim,
postoje i takvi zadaci obrade signala i upravljanja koji se ne mogu rešiti mikroprocesorima ili
mikrokontrolerima, jer su oni previše spori za takve primene. U ovom sluèaju rešenje nam pružaju
kola sa hardverskim programiranjem.
U izvesnoj meri ureðaji koji se softverski programiraju i ureðaji koji se hardverski
programiraju su konkurencija jedan drugom ali u velikom broju primena oni se meðusobno
dopunjuju. U mnogim ureðajima pored mikrokontrolera se mogu naãi i jedan ili više PLD kola.
Programabilna logièka kola su danas dostigla takav nivo složenosti da je u njima moguãe
realizovati èak i kompletan mikrokontroler. Na ovaj naèin korisnik može 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 inženjera i zbog toga
proizvoðaèi PLD ureðaja podržavaju ovaj pravac projektovanja nudeãi gotova rešenja
projektantima.

Autori
Sadržaj
- 3 -
I. PITANJA VEZANA ZA REALIZACIJU DIGITALNIH ELEKTRIÈNIH KOLA .............. - 7 -
1. Fizièke osobine digitalnih elektriènih kola ....................................................................................................... - 8 -
1.1. Strujna logika-naponska logika .................................................................................................................. - 8 -
1.2. Fizièke karakteristike .................................................................................................................................. - 9 -
1.2.1. Prenosna karakteristika .......................................................................................................................... - 9 -
1.2.2. Logièki nivoi ........................................................................................................................................ - 10 -
1.2.3. Margine smetnji ................................................................................................................................... - 10 -
1.2.4. Kašnjenja ............................................................................................................................................. - 11 -
1.2.5. Opteretljivost izlaza ............................................................................................................................. - 12 -
1.2.6. Potrošnja .............................................................................................................................................. - 12 -
1.2.7. Temperaturni opsezi............................................................................................................................. - 13 -
1.2.8. Kuãišta ................................................................................................................................................. - 13 -
1.3. Posledice kašnjenja: hazardi .................................................................................................................... - 14 -
1.3.1. Statièki hazardi .................................................................................................................................... - 15 -
1.3.2. Dinamièki hazardi ................................................................................................................................ - 16 -
1.3.3. Funkcionalni hazardi ............................................................................................................................ - 17 -
1.4. Tehnologije izrade integrisanih kola ........................................................................................................ - 17 -
1.4.1. Popularnost i životni ciklus familija integrisanih kola ......................................................................... - 18 -
1.4.2. Podela prema naponu napajanja ........................................................................................................... - 18 -
1.4.3. Kompatibilnost ligièkih nivoa .............................................................................................................. - 19 -
1.4.4. Zavisnost kašnjenja od napona napajanja ............................................................................................ - 20 -
1.4.5. Izbor logièkih funkcija po raznim familijama logièkih kola ................................................................ - 20 -
II. DIGITALNO PROJEKTOVANJE PRIMENOM SSI I MSI FUNKCIONALNIH JEDINICA -
22 -
2. Kombinacione mreže ....................................................................................................................................... - 23 -
2.1. Kola za sprezanje ...................................................................................................................................... - 23 -
2.1.1. Neinvertujuãa i invertujuãa kola za sprezanje...................................................................................... - 23 -
2.1.2. Kola za sprezanje sa tri stanja .............................................................................................................. - 23 -
2.1.3. Dvosmerna kola za sprezanje ............................................................................................................... - 24 -
2.2. Dekoder .................................................................................................................................................... - 24 -
2.2.1. Potpuni dekoder ................................................................................................................................... - 24 -
2.2.2. Nepotpuni dekoder ............................................................................................................................... - 25 -
2.2.3. Realizacija logièkih funkcija pomoãu dekodera .................................................................................. - 26 -
2.3. Koder ........................................................................................................................................................ - 27 -
2.3.1. Potpuni koder ....................................................................................................................................... - 27 -
2.3.2. Nepotpuni koder .................................................................................................................................. - 27 -
2.3.3. Prioritetni koder ................................................................................................................................... - 28 -
2.4. Pretvaraèi koda ........................................................................................................................................ - 29 -
2.4.1. Pretvaraè prirodnog binarnog koda u Gray-ov kod ............................................................................. - 29 -
2.4.2. Pretvaraè BCD koda u 7-segmentni kod .............................................................................................. - 30 -
2.5. Multipleksor .............................................................................................................................................. - 30 -
2.5.1. Konstruisanje digitalnih multipleksora ................................................................................................ - 31 -
2.5.2. Proširivanje multipleksora ................................................................................................................... - 31 -
2.5.3. Realizacija logièkih funkcija pomoãu multipleksora ........................................................................... - 32 -
2.6. Demultipleksor.......................................................................................................................................... - 33 -
2.6.1. Prenos više podataka preko zajednièkog kanala .................................................................................. - 34 -
2.6.2. Analogni multipleksor/demultipleksor................................................................................................. - 34 -
3. Sekvencijalne mreže ......................................................................................................................................... - 36 -
3.1. Elementarne memorije .............................................................................................................................. - 37 -
3.1.1. Latch kola ............................................................................................................................................ - 37 -
3.1.2. Flip-flop-ovi ......................................................................................................................................... - 38 -
3.2. Opis i konstruisanje logièkih automata .................................................................................................... - 41 -
3.2.1. Dijagram stanja .................................................................................................................................... - 41 -
3.2.2. Tabela stanja ........................................................................................................................................ - 42 -
3.2.3. Kodiranje stanja ................................................................................................................................... - 43 -
3.2.4. Jednaèine upravljanja za flip-flop-ove ................................................................................................. - 43 -
3.2.5. Formiranje izlaza ................................................................................................................................. - 44 -
3.2.6. Formiranje kompletne sekvencijalne mreže ......................................................................................... - 44 -
Pitanja vezana za realizaciju digitalnih elektriènih kola
- 4 -
3.3. Registri ..................................................................................................................................................... - 45 -
3.3.1. Obièni (stacionarni) registri ................................................................................................................. - 45 -
3.3.2. Pomeraèki (shift) registri ...................................................................................................................... - 45 -
3.3.3. Kružni registri (kružni brojaèi) ............................................................................................................ - 46 -
3.4. Brojaèi ...................................................................................................................................................... - 47 -
3.4.1. Asinhroni (serijski) brojaèi .................................................................................................................. - 47 -
3.4.2. Sinhroni (paralelni) brojaèi .................................................................................................................. - 48 -
4. Složene mreže ................................................................................................................................................... - 50 -
4.1. Memorije ................................................................................................................................................... - 50 -
4.1.1. Podela i osobine memorijskih kola ...................................................................................................... - 50 -
4.1.2. Unutrašnja struktura memorijskih kola ................................................................................................ - 52 -
4.1.3. Proširivanje kapaciteta ......................................................................................................................... - 52 -
4.2. Aritmetièke jedinice .................................................................................................................................. - 53 -
4.2.1. Sabiraèi ................................................................................................................................................ - 54 -
4.2.2. Množaèi ............................................................................................................................................... - 55 -
4.2.3. Aritmetièki komparatori ....................................................................................................................... - 57 -
4.3. D/A konvertori .......................................................................................................................................... - 59 -
4.3.1. Naèin funkcionisanja ........................................................................................................................... - 59 -
4.3.2. Struktura .............................................................................................................................................. - 59 -
4.3.3. Karakteristike ....................................................................................................................................... - 61 -
4.4. A/D konvertori .......................................................................................................................................... - 61 -
4.4.1. Princip rada .......................................................................................................................................... - 61 -
4.4.2. Struktura .............................................................................................................................................. - 62 -
4.4.3. Karakteristike ....................................................................................................................................... - 64 -
III. PROJEKTOVANJE PRIMENOM PROGRAMABILNIH LOGIÈKIH KOLA (PLD) .. - 65 -
5. Pristupi projektovanju ..................................................................................................................................... - 66 -
5.1. Èetvorobitni brojaè ................................................................................................................................... - 67 -
5.2. Moduli u Verilog HDL-u .......................................................................................................................... - 68 -
5.3. Instance ..................................................................................................................................................... - 70 -
5.4. Simulacija ................................................................................................................................................. - 70 -
6. Osnovni koncepti Verilog HDL-a .................................................................................................................... - 72 -
6.1. Jezièke konvencije ..................................................................................................................................... - 72 -
6.1.1. Prazna mesta ........................................................................................................................................ - 72 -
6.1.2. Komentari ............................................................................................................................................ - 72 -
6.1.3. Operatori .............................................................................................................................................. - 72 -
6.1.4. Predstavljanje brojeva u Verilog HDL-u .............................................................................................. - 73 -
6.1.5. Nizovi znakova .................................................................................................................................... - 75 -
6.1.6. Identifikatori ........................................................................................................................................ - 75 -
6.1.7. Kljuène reèi .......................................................................................................................................... - 75 -
6.2. Tipovi podataka i tipovi nosioca podataka ............................................................................................... - 75 -
6.2.1. Logièke vrednosti u Verilog HDL-u .................................................................................................... - 75 -
6.2.2. Èvorovi, veze ....................................................................................................................................... - 75 -
6.2.3. Registri ................................................................................................................................................. - 76 -
6.2.4. Vektori ................................................................................................................................................. - 77 -
6.2.5. Celi brojevi .......................................................................................................................................... - 77 -
6.2.6. Realni brojevi ....................................................................................................................................... - 77 -
6.2.7. Nizovi .................................................................................................................................................. - 78 -
6.2.8. Memorije .............................................................................................................................................. - 78 -
6.2.9. Parametri .............................................................................................................................................. - 78 -
6.2.10. Sistemske funkcije $stop i $finish ................................................................................................... - 79 -
6.2.11. Naredba ’define ............................................................................................................................... - 79 -
7. Moduli i port-ovi ............................................................................................................................................... - 80 -
7.1. Moduli....................................................................................................................................................... - 80 -
7.2. Port-ovi ..................................................................................................................................................... - 82 -
7.2.1. Lista port-ova ....................................................................................................................................... - 82 -
7.2.2. Deklaracija port-ova ............................................................................................................................ - 82 -
7.2.3. Pravila za povezivanje port-ova ........................................................................................................... - 83 -
7.2.4. Povezivanje port-ova sa signalima iz okruženja .................................................................................. - 84 -
7.3. Hijerarhijska imena .................................................................................................................................. - 86 -
Pitanja vezana za realizaciju digitalnih elektriènih kola
- 5 -
8. HDL opis na nivou logièkih kapija ................................................................................................................. - 87 -
8.1. Vrste kapija ............................................................................................................................................... - 87 -
8.1.1. I i ILI kola ............................................................................................................................................ - 87 -
8.1.2. Kola za sprezanje ................................................................................................................................. - 89 -
8.1.3. Kola za sprezanje sa tri stanja .............................................................................................................. - 90 -
8.2. Primer projektovanja na nivou logièkih kapija: èetvorobitni potpuni sabiraè ......................................... - 91 -
8.3. Kašnjenja .................................................................................................................................................. - 94 -
8.3.1. Mininimalne, tipiène i maksimalne vrednosti kašnjenja ...................................................................... - 96 -
8.3.2. Primer za analizu kašnjenja ................................................................................................................. - 96 -
9. HDL opis na nivou toka podataka .................................................................................................................. - 99 -
9.1. Kontinualna dodela .................................................................................................................................. - 99 -
9.1.1. Implicitna kontinualna dodela ............................................................................................................ - 100 -
9.2. Kašnjenja u dodelama ............................................................................................................................ - 100 -
9.2.1. Kašnjenja u regularnim dodelama ...................................................................................................... - 100 -
9.2.2. Kašnjenja u implicitnim kontinualnim dodelama .............................................................................. - 101 -
9.2.3. Kašnjenja definisana pri deklaraciji nosioca podataka tipa net .......................................................... - 102 -
9.3. Izrazi, operandi i operatori ..................................................................................................................... - 102 -
9.3.1. Izrazi .................................................................................................................................................. - 102 -
9.3.2. Operandi ............................................................................................................................................ - 102 -
9.3.3. Operatori ............................................................................................................................................ - 103 -
9.4. Tipovi operatora ..................................................................................................................................... - 103 -
9.4.1. Aritmetièki operatori .......................................................................................................................... - 104 -
9.4.2. Logièki operatori ................................................................................................................................ - 105 -
9.4.3. Relacioni operatori ............................................................................................................................. - 105 -
9.4.4. Operatori jednakosti ........................................................................................................................... - 106 -
9.4.5. Operatori bit po bit ............................................................................................................................. - 106 -
9.4.6. Redukcioni operatori .......................................................................................................................... - 107 -
9.4.7. Operatori pomeranja .......................................................................................................................... - 108 -
9.4.8. Operator pridruživanja ....................................................................................................................... - 108 -
9.4.9. Operator umnožavanja ....................................................................................................................... - 108 -
9.4.10. Uslovni operator ............................................................................................................................ - 109 -
9.4.11. Hijerarhija operacija ...................................................................................................................... - 110 -
10. HDL opis na nivou ponašanja .................................................................................................................. - 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. Blokirajuãe dodele ........................................................................................................................ - 112 -
10.2.2. Neblokirajuãe dodele .................................................................................................................... - 113 -
10.3. Vremenska kontrola dodela u opisima na nivou ponašanja ................................................................... - 116 -
10.3.1. Vremenska kontrola zadavanjem kašnjenja .................................................................................. - 116 -
10.3.2. Vremenska kontrola primenom iviènog okidanja i okidanja na nivo ............................................ - 117 -
10.4. Uslovne dodele ....................................................................................................................................... - 119 -
10.5. Višestruka grananja ................................................................................................................................ - 119 -
10.5.1. Struktura case ................................................................................................................................ - 119 -
10.5.2. Primena kljuènih reèi casex casez ................................................................................................. - 120 -
10.6. Petlje u opisima na nivou ponašanja ...................................................................................................... - 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 izvršavanja imenovanog bloka .................................................................................... - 124 -
11. Literatura ................................................................................................................................................... - 126 -

- 6 -

Uvod

Digitalne realizacije su karakteristiène u mnogim oblastima savremene tehnike.
Raèunarska tehnika, telekomunikacije i upravljanje industrijskim procesima su oblasti koje najviše
prednjaèe u primeni digitalnih rešenja.
U poèetku su samo mehanièki i elektromagnetni prekidaèi (releji) bili na raspolaganju za
realizaciju digitalnih ureðaja. Bilo je pokušaja za realizaciju digitalnih ureðaja primenom
elektronskih cevi koje su dugo vremena držali monopol na polju analogne obrade signala. Prvi
elektronski raèunar je sagraðen pomoãu elektronskih cevi. Velike dimenzije, nedovoljna pouzdanost
u radu i znaèajna potrošnja su bili faktori koji su spreèili širu primenu ovih ureðaja.
Nakon otkriãa tranzistora, skoro istovremeno su se pojavile analogne i digitalne primene.
Povezivanjem tranzistora, dioda i otpornika bilo je moguãe izgraditi brza digitalna kola malih
dimenzija i male potrošnje. Od kraja pedesetih godina XX veka osnovu digitalne elektronike
nesporno su dala integrisana rešenja. Razvoj tehnologije za proizvodnju poluprovodnièkih
komponenata omoguãilo je projektovanje (integrisanje) sve komplikovanijih elektriènih kola na
površini jedne kristalne ploèe.
Na poèetku razvoja integrisanja elektriènih kola samo nekoliko logièkih kapija je bilo mo-
guãe smestiti na jednu ploèicu. 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 omoguãila smeštanje složenijih celina (multipleksori, brojaèi itd.) na jednu
ploèicu. U to vreme projektovanje digitalnih ureðaja se sastojalo od spretne kombinacije SSI i MSI
integrisanih kola.
Smatralo se da ãe pravac razvoja dovesti do sve složenijih elektriènih kola, koja ãe u
potpunosti integrisati sva neophodna digitalna rešenja za funkcionisanje nekog ureðaja. Ovakva
integrisana kola su projektovana npr. za digitalne satove, merne ureðaje itd. Meðutim, ubrzo je
postalo jasno da su primene toliko brojne da nije ekonomièno posebno razvijati integrisana kola za
svaku primenu (application specific integrated circuit – ASIC). Razvoj i proizvodnja integrisanih
kola je ekonomièna samo ako se proizvodnja istih vrši u velikim serijama.
Prepoznavanje ovih ogranièenja 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 odgovarajuãim pomoãnim elektriènim kolima (memorije, prilagodni stepeni itd.) i
dodavanjem softvera moguãe je rešiti proizvoljne probleme. Sa druge strane, digitalna kola koja se
hardverski programiraju (programmable logic device – PLD) sadrže veliki broj unapred proizvede-
nih logièkih blokova, i hardverskim programiranjem se mogu povezati na naèin da obavljaju željenu
funkciju. Ova elektrièna kola pripadaju kolima visokog stepena integracije (large scale integration
– LSI) odnosno kolima vrlo visokog stepena integracije (very large scale integration – VLSI).
Skriptu predlažemo svakome ko želi da se upozna sa osnovama digitalne elektronike.



Autori


I. Pitanja vezana za realizaciju digitalnih
elektronskih kola
Pitanja vezana za realizaciju digitalnih elektriènih kola
- 8 -
1. Fizièke osobine digitalnih elektriènih kola
U ovoj glavi se razmatraju fizièke osobine digitalnih kola. Karakteristike koje se ovde
razmatraju podjednako važe kako za SSI i MSI jednostavna elektrièna kola tako i za komplikovanija
(LSI, VLSI) elektrièna kola koja se hardverski i softverski programiraju. Razlog za to je velika
sliènost u polaznim materijalima i proizvodnim procesima kao i u topološkim rešenjima kod svih
digitalnih elektriènih kola.
1.1. Strujna logika-naponska logika
U poèetku digitalni ureðaji su se gradili pomoãu prekidaèa i releja. Logièke funkcije kod
tih ureðaja su se realizovale pomoãu takozvane strujne logike: ako je struja ulazila u objekat uprav-
ljanja zahvaljujuãi odgovarujuãim stanjima prekidaèa, to se smatralo stanjem logièke jedinice. Ako
nije bilo struje zbog otvorenosti nekog prekidaèa, to se smatralo stanjem logièke nule. Slika 1-1
prikazuje realizaciju strujne logike za I i ILI logièke funkcije.









Slika 1-1: Realizacija (a) I i (b) ILI logièke funkcije pomoãu strujne logike.

Elektrièna kola sa strujnom logikom su skoro izašla iz upotrebe, ali proteklih godina kod
pojedinih rešenja za integrisana kola su ponovo ušla u centar interesovanja. Kod veãine današnjih
digitalnih kola je naponska logika dominantna. Potrebna logièka stanja se i kod naponske logike
postižu zatvaranjem ili otvaranjem prekidaèa. U ovom sluèaju cilj nije protok struje od ulazne taèke
(taèaka) do izlazne taèke (taèaka) nego dobijanje odreðenih standardnih naponskih nivoa za repre-
zentaciju logièke nule i jedinice.
Slika 1-2a prikazuje principijelnu šemu jednog digitalnog (logièkog) elementa sa napon-
skom logikom. Dva prekidaèa (K1, K2) su redno vezana (mogu se posmatrati kao naponski deli-
telji). Slobodni izvodi su vezani na izvore koji obezbeðuju naponske nivoe koji odgovaraju logièkoj
jedinici (“1”) i nuli (“0”). Obièno je reè o jednom izvoru, èiji se jedan kraj veže na potencijal zemlje
koji se smatra logièkom nulom, dok potencijal prisutan na drugom kraju izvora se smatra logièkom
jedinicom. Teoretski gledano, prekidaèi se mogu ukljuèiti na èetiri razlièita naèina koji su prikazani
u tabeli na slici 1-2b.
Funkcionisanje savremenih digitalnih ureðaja se obièno zasniva na dva naponska nivoa,
odnosno na dvema logièkim vrednostima. Vrednost izlaza u prvom redu tabele je neodreðena što
ukazuje na odstupanje od definicije dvovalentne logike. Pošto su oba prekidaèa iskljuèena, izlaz Y
prelazi u stanje visoke impedanse koje se još naziva i treãe stanje (engl. three-state ili 3-state). U
tom sluèaju drugi elementi prikljuèeni na istu taèku odreðuju naponski nivo izlaza datog logièkog
elementa. Ova moguãnost se koristi kod onih digitalnih ureðaja kod kojih se komunikacija izmeðu
više logièkih elemenata ostvaruje kroz jedinstveni zajednièki provodnik. U razlièitim vremenskim
intervalima se aktiviraju razlièiti logièki elementi. Aktivni element u datom trenutku upravlja
provodnikom, dok su drugi elementi u stanju visoke impedanse i njihovi uticaji na vrednost logiè-
kog nivoa se mogu zanemariti.



A B
A
B
Y=A*B I Y=A+B ILI
(a) (b)
Pitanja vezana za realizaciju digitalnih elektriènih kola
- 9 -











Slika 1-2: (a) Principijelna šema logièkog elementa sa naponskom logikom i (b) varijacije stanja prekidaèa.

U drugom redu tabele K2 provodi, dok K1 ne provodi. Znaèi, izlaz Y je u kratkom spoju
sa zemljom (taèka sa nultim potencijalom) i na taj naèin se ostvaruje logièka nula. Treãi red
odgovara suprotnom sluèaju, K1 provodi dok K2 ne provodi. Znaèi, na izlazu se pojavljuje
potencijal koji odgovara stanju logièke jedinice. Realni prekidaèi u ukljuèenom stanju ne
predstavljaju idealni kratak spoj i kao rezultat toga dolazi do promene napona na izlazu logièkog
elementa pri optereãenju. Prema tome, u realnim kolima, vrednosti logièkih nivoa odstupaju od
idealnih. Slièno ovome, vremena ukljuèivanja i iskljuèivanja su konaèna i zato se uticaji
upravljaèkih signala prenose sa izvesnim kašnjenjima što dovodi do kašnjenja u funkcionisanju
logièkih elemenata. Ovi problemi se detaljno obraðuju u narednim poglavljima.
Kombinacija prikazana u poslednjem redu tabele predstavlja nedozvoljeno stanje.
Prekidaèi K1 i K2 ne smeju biti istovremeno u stanju provoðenja, jer bi to kratko spojio krajeve
naponskog izvora. Velika struja koja bi nastala kao posledica kratkog spoja, dovela bi do uništenja
prekidaèa.

1.2. Fizièke karakteristike
Kataloški podaci digitalnih kola pored opisa logièkih funkcija daju i fizièke karakteristike.
U fizièke osobine spadaju: prenosna karakteristika, nominalni logièki nivoi, margine smetnji
(margina šuma), razna kašnjenja, opteretljivost izlaza, potrošnja, temperaturni opsezi, kuãište itd. U
narednim taèkama su date definicije ovih karakteristika i analiza njihovih uticaja na funkcionisanje
digitalnih kola.
1.2.1. Prenosna karakteristika
Ako se upravljanje prekidaèima logièkog elementa prikazanog na slici 1-2a reši na taj
naèin da zajednièki upravljaèki signal otvara i zatvara te prekidaèe u protivfazi, dobija se
idealizovana prenosna karakteristika prikazana na slici 1-3a. Dok je vrednost ulaznog upravljaèkog
napona ispod polovine napona napajanja (V
CC
/2), vodi gornji prekidaè i izlaz je na visokom
logièkom nivou. U suprotnom sluèaju, kada je vrednost upravljaèkog napona iznad polovine napona
napajanja, provodi donji prekidaè i izlaz je na niskom logièkom nivou. Znaèi, kada je na ulazu
nizak logièki nivo, izlaz je na visokom i suprotno. Dobijana karakteristika predstavlja NE logièku
funkciju (logièki invertor).
U realnim sluèajevima otpornost prekidaèa se menja kontinualno pod uticajem
upravljaèkih signala a ne skokovito. Rezultat ovoga je prenosna karakteristika realnih invertora koja
je prikazana na slici 1-3b. Na dijagramu su oznaèene taèke kod kojih je vrednost nagiba -1. Izmeðu
ovih vrednosti ulaznog napona (V
IL
, V
IH
) nagib krive je velik i zbog toga mala promena ulaznog
napona je u stanju da promeni nivo izlaznog napona sa logièke nule na logièku jedinicu i obrnuto. Iz
ovog razloga nepoželjno je funkcionisanje digitalnih kola u ovom intervalu (zabranjena zona).


K1
K2
Y
"1"
"0"
K1 K2 Y
0
1
0
0
1 0
1 1
Trecestanje
Zabranjeno stanje
0
1
(a) (b)
Pitanja vezana za realizaciju digitalnih elektriènih kola
- 10 -









Slika 1-3: Prenosne karakteristike logièkog invertora: (a) idealan sluèaj, (b) realan sluèaj.

Pored jednoznaènih krivih (slika 1-3) primenjuju se i dvoznaène, histerezisne (Šmitove)
krive (slika 1-4a). Zahvaljujuãi odgovarajuãoj unutrašnjoj pozitivnoj povratnoj sprezi, prelaz sa
jednog logièkog nivoa na drugi je skokovit umesto da bude postepen. Na ovaj naèin moguãe je
digitalne signale sa dugaèkim vremenima uzlaza i silaza uoblièiti u pravougaone signale što
poboljšava otpornost na smetnje (taèka 1.2.3). Šematske oznake digitalnih kola sa Šmitovom
prenosnom karakteristikom obièno sadrže i simbol Šmitove prenosne karakteristike: na slici 1-4b je
prikazana šematska oznaka invertora sa Šmitovom prenosnom karakteristikom. Histerezisnu
karakteristiku je moguãe ugraditi u ulazni stepen kod bilo kog digitalnog kola.










Slika 1-4: (a) Prenosna karekteristika invertora sa histerezisom i (b) njegova šematska oznaka.
1.2.2. Logièki nivoi
Logièki nivoi izlaza (V
OL
, V
OH
) digitalnih kola su približno stabilni za intervale koje se
nalaze ispod i iznad zabranjene zone dok je napon napajanja konstantan i ne zavisi znaèajno od
ulaznog signala ili promene struje optereãenja. Naponska razlika izmeðu dva nivoa se naziva
logièkom amplitudom.
Kod pažljivo projektovanih digitalnih kola nizak izlazni logièki nivo je u svakom sluèaju
znaèajno niži od maksimalne vrednosti niskog ulaznog logièkog nivoa (V
OL
<V
IL
). Slièno, visok
izlazni logièki nivo znaèajno prevazilazi donju graniènu vrednost visokog ulaznog logièkog nivoa
(V
OH
>V
IH
).
Ova dva uslova je potrebno ispuniti da bi se elementi digitalnih kola (koji mogu biti
kompletna integrisana kola ili njihovi unutrašnji podsklopovi) mogli vezati u kaskadu. Obrada
signala kod digitalnih sistema se obièno vrši u više stepena i zato je kaskadna veza digitalnih kola
neizbežna.
1.2.3. Margine smetnji
Kako za ulazne tako i za izlazne logièke nivoe kataloški podaci ne sadrže konkretne
vrednosti veã su dati intervali koji su funkcije eventualnih promena u naponu napajanja, promene
optereãenja, odstupanja u tehnološkom procesu i drugih uticajnih velièina. Prikazivanjem ovih
intervala jedan iznad drugog (slika 1-5), moguãe je odrediti maksimalne amplitude smetnji (šuma)
na koje su otporni ulazi digitalnih kola. Sve dok su vrednosti amplitude smetnji manje od margine
smetnji, logièki nivoi generisani na izlazu digitalnog kola ãe biti ispravni.

Vi
Vo
0 VDD
VDD
(a)
Vi
Vo
0 VDD
VDD
(b)
VDD/2 VIL VIH
Vi
Vo
0 VDD
VDD
VTH VTL
(a) (b)
Pitanja vezana za realizaciju digitalnih elektriènih kola
- 11 -





Slika 1-5: Prikaz margine smetnji kod digitalnih kola.

Prema slici, margina smetnji za nizak ulazni logièki nivo je data sledeãom formulom:


max max 0 OL IL
V V NM ÷ =

dok u sluèaju visokog logièkog nivoa margina smetnji je:


min min 1 IH OH
V V NM ÷ = .

Kao što ãemo kasnije videti, velika margina smetnji predstavlja prednost ali zahteva veliki
napon napajanja koji dovodi do velike potrošnje. Korišãenje integrisanih kola sa velikom marginom
smetnji se preporuèuje u industrijskim primenama gde je nivo smetnji znaèajan.
1.2.4. Kašnjenja
Ukljuèivanje i iskljuèivanje tranzistorskih prekidaèa u digitalnim kolima se vrši u
konaènom vremenu. Kašnjenje elektriènog kola je vreme koje protièe izmeðu pojave ulaznog
(upravljaèkog) signala i formiranja izlaznog logièkog nivoa. Pored konaènog vremena ukljuèivanja
i iskljuèivanja na kašnjenja utièu i parazitne kapacitivnosti. Struje koje pune i prazne parazitne
kapacitivnosti su konaène i zato se promene logièkih nivoa dešavaju u konaènom vremenu.
Slika 1-6a prikazuje kašnjenja jednog logièkog invertora pri pobudi sa idealizovanim
ulaznim signalom (pravougaoni signal). Nakon pojave skoka u ulaznom signalu do promene
logièkog nivoa izlaza dolazi tek posle proteklog vremena kašnjenja t
pHL
odnosno t
pLH
. U realnosti
(slika 1-6b) nije moguãe obezbediti idealni pravougaoni signal na ulazu digitalnih kola. Umesto
toga, signali koji se dovode na ulaze se dobijaju iz prethodnih stepena koji su veoma slièni
posmatranom invertoru. U tom sluèaju, kašnjenje se raèuna kao proteklo vreme izmeðu preseka
signala sa linijom koja predstavlja polovinu logièke amplitude ili napona napajanja (na slici 1-6b
obeležen sa 50%). Obièno se razlikuju kašnjenja pri silaznim (t
pHL
) i uzlaznim ivicama (t
pLH
).
Slika 1-6: Kašnjenja kod digitalnih kola: (a) pri idealizovanom ulaznom signalu, (b) u sluèaju realnog
ulaznog signala.

Pored unutrašnjih kašnjenja kod integrisanih kola postoje još i kašnjenja na vodovima.
Ovo je posebno izraženo kod vodova štampanih elektriènih kola ali se ne smeju zanemariti ni kod
LSI, VLSI integrisanih kola jer se na unutrašnjim vezama izmeðu pojedinih blokova javljaju
znaèajna kašnjenja.
Kašnjenja se ne smeju smatrati konstantnim velièinama. Zbog odstupanja izmeðu
pojedinih primeraka u serijskoj proizvodnji, zbog odstupanja u naponu napajanja, temperaturi i u
t
pHL
t
pLH
t
pHL
t
pLH
(a) (b)
t
t t
t
50%
50% 50%
0 VDD
VILMAX
VOLMAX VOHMIN
VIHMIN
Pitanja vezana za realizaciju digitalnih elektriènih kola
- 12 -
drugim velièinama, proizvoðaèi u kataloškim podacima navode intervale kašnjenja umesto
konkretnih vrednosti. Na vremenskim dijagramima se intervali crtaju na naèin koji je prikazan na
slici 1-7. Kod analize uticaja kašnjenja treba uzeti u obzir najnepovoljniji moguãi sluèaj.







Slika 1-7: Grafièki prikaz intervala kašnjenja u kataloškim podacima za digitalna kola.
1.2.5. Opteretljivost izlaza
Otpornost prekidaèa u ukljuèenom stanju kod digitalnih kola je uvek veãa od nule dok u
iskljuèenom stanju manja od beskonaènog. Upravljanje ovim prekidaèima zahteva konaène vred-
nosti struja. Pri projektovanju digitalnih sistema èesto se javlja potreba da izlaz jednog logièkog
elementa obezbeðuje ulazni signal za jedan ili više njemu sliènih elemenata. Retko se javlja
situacija kada je na izlaz potrebno vezati druge potošaèe (LED, prenosne linije itd.).
Zbog konaène vrednosti ulaznih i izlaznih otpornosti, broj logièkih elemenata koji se
mogu vezati na jedan izlaz je konaèan. U sluèaju preoptereãenja izlazni logièki nivoi se pomeraju i
reakcija narednog stepena na promenjene logièke nivoe može da bude pogrešna. Tokom
projektovanja neophodno je uzeti u obzir da sa poveãanjem optereãenja dolazi i do porasta vremena
kašnjenja.
Opteretljivost izlaza se zadaje brojem ulaza logièkih kola koji se mogu vezati na izlaz a ne
velièinom struje koju je u stanju da daje izlaz. Velièine ulaznih struja variraju i unutar jedne familije
integrisanih kola i zbog toga pri odreðivanju opteretljivosti izlaza proizvoðaèi raèunaju sa tzv.
standardnim ulaznim strujama.
Obièno pri razlièitim logièkim nivoima (logièka nula ili jedinica) ulazi nejednako
optereãuju izlaze. Pri odreðivanju opteretljivosti izlaza uvek treba uzeti u obzir najnepovoljniju
situaciju.
1.2.6. Potrošnja
U toku rada, digitalna kola troše struju iz izvora napajanja. U kataloškim podacima se daje
proseèna vrednost struje jer je ona zavisna od logièkih nivoa na izlazu. Pored toga, potrošnja
digitalnih kola zavisi još i od uèestalosti promene logièkih nivoa (frekvencija rada). Razlog za to je
da gornji i donji prekidaèi na slici 1-2a pri promeni logièkih nivoa na kratko vreme provode
istovremeno da bi se smanjila vremena kašnjenja. Otpornost prekidaèa u provodnom stanju je
konaèna i zbog toga u fazi preklapanja (kada oba prekidaèa vode) neãe se javiti beskonaèna struja
ali ãe se potrošnja znaèajno poveãati u odnosu na statièko stanje. Slièno, i punjenje i pražnjenje
parazitnih kapacitivnosti u digitalnim kolima dovodi do poveãanja potrošnje. Zbog kratkotrajnih
strujnih impulsa potrebno je filtrirati napon napajnja digitalnih kola kondezatorima dobrog kvaliteta
smeštenih u blizini samog kola.
Maksimalna frekvencija rada digitalnog kola je u tesnoj vezi sa potrošnjom i kao osnov za
uporeðivanje razlièitih familija integrisanih kola uzima se proizvod potrošnje i kašnjenja. Ovaj
proizvod se oznaèava sa PDP (power-delay product) i jedinica mere je ista kao i za energiju (J
odnosno pJ).


p D
t P PDP = .

Razlog zašto se potrošnja navodi u pJ je to što su kašnjenja red velièine ns a potrošnje su
reda velièine mW. Smatra se da je neka familija integrisanih kola bolja od druge ako je PDP njenih
logièkih elemenata realizovanih u datoj tehnologiji manja od druge.
t
t
Pitanja vezana za realizaciju digitalnih elektriènih kola
- 13 -
1.2.7. Temperaturni opsezi
U kataloškim podacima proizvoðaèi definišu temperaturni opseg rada i skladištenja
integrisanih kola. Postoje tri temperaturna opsega: za komercijalne, industrijske i vojne primene.
Obièno, svaki tip integrisanog kola je proizveden u sve tri verzije, za sva tri temperaturna opsega.
Opseg temperature koju podrazumeva komercijalna upotreba je od 0
o
C do +70
o
C, opseg
temperature za industrijsku primenu je od -25
o
C do +85
o
C, dok za vojnu primenu je od -55
o
C do
+125
o
C. Temperatura skladištenja je jedinstvena za sve tri primene i pripada opsegu od -65
o
C do
+150
o
C.
Unutrašnja temperatura integrisanih kola je funkcija temperature okoline i gubitaka
(potrošnje). Prema kataloškim podacima, najveãa dozvoljena unutrašnja temperatura je obièno
150
o
C. Manja temperatura okoline omoguãava rad sa veãim gubicima u kolu a da se pri tome ne
preðe granica od 150
o
C. Ove zavisnosti se daju tabelarno ili u obliku dijagrama. Neznatno
prekoraèenje opsega radne temperature ne dovodi do trenutnog kvara, ali se karakteristike
integrisanog kola znaèajno menjaju.
Ugradnja integrisanih kola se obièno vrši lemljenjem. Ovo predstavlja znaèajno tempera-
turno optereãenje za kolo. Proizvoðaèi dozvoljavaju lemljenje pri temperaturama od 250
o
C – 300
o
C
u vremenskom trajanju od 10s - 60s. Pri mašinskom lemljenju integrisanih kola definiše se
temperaturni profil koji dato kolo može da izdrži.
1.2.8. Kuãišta
Poluprovodnièke ploèice na kojima su realizovana integrisana kola se smeštaju u
odgovarajuãa kuãišta radi adekvatne mehanièke èvrstoãe i dobijanja masivnih prikljuèaka.
Integrisana kola su dugi niz godina bila proizvedena u takozvanom DIL (dual in line – dvorednom)
kuãištu (slika 1-8a). Ugradnja se sastojala od umetanja nožica integrisanog kola u otvore na
štampanoj ploèici i od samog lemljenja. Rastojanje izmeðu nožica koje se nalaze u jednom redu je
standardno i iznosi 0,1 inèa (2,54 mm). Za izradu kuãišta se koriste materijali koji imaju dobre
izolacione karakteristike kakvi su npr. plastika i keramika.



















Slika 1-8: Kuãišta integrisanih kola: (a) DIL kuãište, (b) SMD kuãište tipa SO, (c) SMD kuãište tipa PLCC,
(d) SMD kuãište tipa BGA.

Poveãanje stepena integracije neminovno je dovelo do poveãanja broja izvoda na
integrisanim kolima. Tehnologija ugradnje integrisanih kola umetanjem nožica u rupe na štampanoj
ploèici nije omoguãavala znaèajno smanjivanje rastojanja meðu nožicama. Ovo je dovelo do pojave
(a) (b)
(c) (d)
Pitanja vezana za realizaciju digitalnih elektriènih kola
- 14 -
novih kuãišta koja se površinski montiraju (surface mounted device – SMD). Kuãište SO (slika 1-
8b) je slièno DIL kuãištu, sa razlikom da su izvodi savijeni u obliku krila galeba kako bi obezbedili
dobro naleganje na površinu štampane ploèice. U poèetku su rastojanja izmeðu nožica SO kuãišta
bila 0,05 inèa (1,27 mm) a kasnije su ove mere još smanjene. Kod PLCC kuãišta (slika 1-8c) postoje
izvodi na sve èetiri strane, a za dodatno smanjenje dimenzija, nožice su savijane ispod kuãišta. Kod
BGA kuãišta (slika 1-8d) ne postoje izvodi u klasiènom smislu. Na donjoj strani kuãišta su
formirana metalna ostrva u ravni sa izolatorom. Pri lemljenju metalna ostrva se pozicioniraju na
lemne kugle smeštene na štampanoj ploèici i zagrevanjem celog integrisanog kola se formiraju
elektrièni kontakti.
Kuãišta za površinsku montažu su bila skuplja u poèetku i proces montaže je bio kompli-
kovan. Meðutim, razlika u cenama je veã oko 1990 godine bila na strani SMD tehnologije s tim da
ugradnju vrše pretežno roboti (osim kod maloserijske proizvodnje i popravki). Primena SMD
komponenti omoguãava montiranje kola sa obe strane štampane ploèice što dalje smanjuje
dimenzije ureðaja.
1.3. Posledice kašnjenja: hazardi
Posledice kašnjenja (taèka 1.2.4), osim kašnjenja u formiranju izlaznih signala mogu biti i
privremene ili trajne greške u funkcionisanju ureðaja. Greške koje nastaju zbog kašnjenja se
nazivaju hazardima jer su nepredvidive i imaju štetne posledice.
Ako se posmatra jednostavno kolo koje je dato na slici 1-9, može se ustanoviti da u
idealnom sluèaju vrednost izlaza bi trebala uvek da bude logièka nula jer (zbog prisustva invertora
na jednom ulazu I kola) ne mogu se pojaviti istovremeno dve jedinice na ulazima što je uslov za
formiranje logièke jedinice na izlazu. U realnim okolnostima neophodno je ukljuèiti u razmatranje i
kašnjenje invertora koje je predstavljeno blokom T
d
. Zbog kašnjenja, nakon uzlazne ivice
promenljive X, na oba ulaza I kola stižu logièke jedinice u kratkom intervalu zbog èega vrednost
izlaza privremeno postaje logièka jedinica.


















Slika 1-9: Pojava hazarda uzrokovana kašnjenjem u jednostavnom digitalnom kolu.

Prikazane pojave u nekim sluèajevima mogu da budu i korisne: na ovaj naèin moguãe je
generisati kratkotrajne impulse u okolini uzlazne ivice datog signala bez korišãenja pasivnog
diferencijatora ili nekog monostabilnog kola. U nastavku ãe se vršiti analiza razlièitih hazardnih
pojava i tražiãe se rešenje za otklanjanje hazarda.
Td
X
X Xd
Y
t
X
X
Xd
Yid
Ystv
Pitanja vezana za realizaciju digitalnih elektriènih kola
- 15 -
1.3.1. Statièki hazardi
Statièkim hazardom nazivamo kratkotrajne pojave impulsa na izlazu nekog logièkog kola
pod uticajem promene u vrednosti ulaznih signala u intervalu kada vrednost logièke funkcije izlaza
treba da bude sve vreme konstantna. Primer na slici 1-9 predstavlja sluèaj statièkog hazarda.
Slika 1-10a prikazuje jedno složenije digitalno kolo sa hazardom koji treba otkloniti. Logi-
èka funkcija prikazanog digitalnog kola se sastoji od zbira dva logièka proizvoda i realizuje se dvo-
stepenom I-ILI logièkom mrežom. Jedino se kašnjenje invertora uzima u obzir radi jednostavnije
analize.


Slika 1-10: Statièki hazard i njegovo otklanjanje: (a) minimizirana mreža, (b) vremenski dijagrami, (c)
Karnaugh-ova tabela sa oznaèenim logièkim proizvodima, (d) Karnaugh-ova tabela za dopunjenu mrežu bez
hazarda.

Ako se zanemare sva kašnjenja, na ulaz ILI kola dolazi logièka jedinica ili iz jednog ili iz
drugog I kola i logièki nivo izlaza se održava konstantno na logièkoj jedinici (slika 1-10b). Ako se
ukljuèi u razmatranje kašnjenje invertora, vrednost logièkog proizvoda AB padne na nulu pre nego
što proizvod C A) (A postigne vrednost logièke jedinice i kao rezultat, dobija se privremena logièka
Td
A
B
C
A Ad
Y
I
II
B
C
A
A
Ad
AB
AC
AdC
AB+AC
AB+AdC
BC
AB+AdC+BC
t
Y(bez kasnjenja)
Y(hazard usledkasnjenja)
Y(otklonjen hazard)
(a)
(b)
1 1
1 1
A
BC
0
1
00 01 11 10
(c)
1 1
1 1
A
BC
0
1
00 01 11 10
(d)
redundantni
logicki proizvod
staticki hazard
Pitanja vezana za realizaciju digitalnih elektriènih kola
- 16 -
nula na izlazu. Ovo se smatra hazardom jer može da dovodi do ozbiljnih smetnji u radu narednih
stepena.
Za otklanjanje hazarda posmatrajmo Karnaugh-ovu tabelu prikazanu na slici 1-10c.
Statièki hazard nastupa zato što se prim implikanti koje saèinjavaju logièku funkciju, dodiruju
umesto da se preklapaju. Ako je pri promeni ulaznih promenljivih potrebno preãi iz jednog prim
implikanta u drugi, može se javiti prelaz ne preko susedne ivice veã preko polja tabele na kojoj je
vrednost logièke funkcije nula. Za vreme takvog prelaza javlja se hazard.
Jedan naèin za otklanjanje hazarda je izmena logike datog digitalnog kola. Uvoðenjem
redundantnog logièkog proizvoda (prikazan isprekidanom linijom na slici 1-10d) koji pokriva mesto
prelaza, otklanja se moguãnost pojave hazarda. Redundantni logièki proizvod je realizovan pomoãu
I kola koje je prikazano isprekidanom linijom na slici 1-10a. Analizom se može pokazati da I kolo
koje je dodato funkciji predstavlja takav logièki proizvod, koji je u toku minimizacije izostavljen jer
(ako se zanemari hazard) je bio suvišan pri realizaciji date logièke funkcije.
Postoje i druge metode za otklanjanje statièkih hazarda. Jedan pristup je da se kašnjenja
nastala u jednoj grani kola, kompenzuju namerno postavljenim kašnjenjima u drugim granama kola.
Drugi, veoma èesto primenjen pristup je korišãenje takt signala za sinhronizaciju. Sinhronizacija
omoguãava kontrolu nad vremenskim trenucima kada je dozvoljeno korišãenje izlaznih vrednosti
digitalnog kola. Zabrana treba da traje dovoljno dugo da eventualni hazard išèezne pre pojave
novog signala dozvole.
1.3.2. Dinamièki hazardi
Dinamièki hazardi se javljaju prilikom promene logièkog nivoa izlaza digitalne mreže.
Pojava višestrukih promena u logièkom nivou izlaza pre ulaska u novo stanje ukazuje na postojanje
dinamièkog hazarda u datom kolu.






















Slika 1-11: Nastanak dinamièkog hazarda.

Kao primer posmatrajmo kolo koje je prikazano na slici 1-11a. Kolo sadrži dve podmreže
(M1 i M2). Pretpostavimo, da funkcija logièke mreže M1 stadrži statièki hazard koji na izlazu
prouzrokuje privremenu logièku jedinicu. Ako pri tome promena na izlazu mreže M2 kasni za T
d2
,
onda pomoãu dijagrama na slici 1-11c se može pokazati, da vrednost izlaza Y neãe trajno preãi u
M1
M2
Y1
Y2 Y2d
Td
Y=Y1Y2d
t
X1...Xn
Y1id
Y2id
Yid=Y1idY2id
Y1
Y2
Y2d
Y=Y1Y2d
Dinamicki hazard
Idealna situacija
(bez hazarda)
Stvarna situacija
(sa hazardom)
(a)
(b)
(c)
Pitanja vezana za realizaciju digitalnih elektriènih kola
- 17 -
stanje logièke nule kada vrednost izlaza Y2 opadne na nulu (što bi bilo u idealnom sluèaju), nego ãe
se javiti jedan niz prelaza 1-0-1-0 na izlazu.
Dinamièki hazardi mogu da prouzrokuju ozbiljne smetnje u radu narednih stepena kod
digitalnih ureðaja. Pojava dinamièkog hazarda je u znaèajnoj meri posledica statièkog hazarda u
nekoj podmreži. Ako se otklone statièki hazardi i dinamièki hazard ãe nestati.
1.3.3. Funkcionalni hazardi
Funkcionalni hazard je jedna druga nepoželjna pojava u digitalnim mrežama. Javlja se
kada se vrednosti dve ili više ulaznih promenljivih menjaju približno istovremeno. Neka se vre-
dnosti promenljivih A, B i C logièke funkcije kojoj odgovara Karnaugh-ova tabela na slici 1-12a
menjaju sa 101 na 110. U principu možemo pretpostaviti da se vrednosti promenljivih B i C
menjaju istovremeno i zato ãe se na izlazu konstatno javljati logièka jedinica. Meðutim, u realnosti
ne mogu se oèekivati taèno istovremene promene.






















Slika 1-12: Nastanak funkcionalnog hazarda.

Na slici 1-12b se analizira sluèaj kada se prvo vrednost promenljive C opadne na logièku
nulu, zatim posle kratkog kašnjenja vrednost promenljive B postaje logièka jedinica. Ovaj prelaz,
pri kojoj se pojavljuje kratkotrajna lažna nula, oznaèena 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, može zakljuèiti da neãe doãi do pojave hazarda.
Pristup u otklanjanju funkcionalnih hazarda se može sastojati od uvoðenja planiranih kaš-
njenja ali za sistematsko rešenje ovog problema je neophodna sihronizacija ulaza sa taktom.
1.4. Tehnologije izrade integrisanih kola
Digitalna kola se mogu realizovati u razlièitim tehnologijama. Pri tome optimizacija
pojedinih parametara se vrši na manji ili veãi uštrb drugih karakteristika. Npr. smanjenem kašnjenja
moguãe je poveãati maksimalnu frekvenciju rada ureðaja ali to povlaèi za sobom i veãe gubitke. Ili,
smanjenjem napona napajanja smanjuju se gubici ali se pogoršava margina smetnji itd.
1
1 1 1
A
BC
0
1
00 01 11 10
ABC: 101 -----> 110
Y : 1 -----> 1
Bi C se menjaju istovremeno.
1
1 1 1
A
BC
0
1
00 01 11 10
ABC: 101 ---> 100 ---> 110
Y : 1 ---> 0 ---> 1
Prvo se menja CzatimB.
1
1 1 1
A
BC
0
1
00 01 11 10
ABC: 101 ---> 111 ---> 110
Y : 1 ---> 1 ---> 1
Prvo se menja BzatimC.
0 0 0
0
0 0 0
0
0 0 0
0
(a)
(b)
(c)
Pitanja vezana za realizaciju digitalnih elektriènih kola
- 18 -
1.4.1. Popularnost i životni ciklus familija integrisanih kola
U poèetku bipolarni tranzistori su korišãeni kao prekidaèki elementi u digitalnim kolima.
Kasnije su se pojavili mosfet prekidaèi, kojima su postignute bolje prenosne karakteristike pri èemu
je i potrošnja smanjena. Digitalna kola izraðena u mosfet tehnologiji su danas više zastupljena ali
nisu nestalala ni bipolarna rešenja. Na slici 1-13 se može videti dijagram koji prikazuje popularnost
onih integrisanih kola koje danas proizvodi Texas Instruments. Trouglovi oznaèavaju one familije
koje su izraðene u bipolarnoj tehnologiji, pravougaonici ukazuju na CMOS familije dok krugovi
oznaèavaju familije sa kombinovanim tehnologijama.

Slika 1-13: Dijagram popularnosti Texas Instruments-ovih digitalnih kola.

Na desnoj strani dijagrama su prikazane one familije integrisanih kola (TTL, S, LS, ...) koje
su se poèele 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 izraðene novim i
obeãavajuãim tehnologijama. Veãina prikazanih familija integrisanih kola se izraðuju u CMOS
tehnologiji zbog manje potrošnje i bolje prenosne karakteristike. Danas se bipolarne tehnologije
najviše primenjuju u onim oblastima gde su potrebne velike struje za pobudu.
1.4.2. Podela prema naponu napajanja
Za novo razvijena kola je karakteristièno 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 oznaèavaju one vrednosti napona napajanja koje obezbeðuju
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 moguãa odstupanja od dekla-
risanih vrednosti u nekim parametrima. Crna linija oznaèava granice do koje integrisano kolo
podnosi sve ulazne i izlazne prenapone bez ošteãenja.






Pitanja vezana za realizaciju digitalnih elektriènih kola
- 19 -

Slika 1-14: Podela familija logièkih kola prema naponu napajanja.
1.4.3. Kompatibilnost ligièkih nivoa
Slika 1-15 prikazuje karakteristiène logièke nivoe za razne familije logièkih kola. Kod
ranije razvijenih logièkih kola u bipolarnoj tehnologiji i sa naponom napajanja od 5V logièki nivoi
su asimetrièni u odnosu na 0V i 5V. Za nove generacije integrisanih kola, posebno kod CMOS kola,
je karakteristièna simetriènost logièkih nivoa.


Slika 1-15: Logièki nivoi pojedinih familija integrisanih kola i njihova meðusobna kompatibilnost.

Pitanja vezana za realizaciju digitalnih elektriènih kola
- 20 -
Tabela u gornjem desnom uglu slike prikazuje kompatibilnost izmeðu pojedinih familija
logièkih kola. Logièki nivoi integrisanih kola unutar jedne familije su uvek kompatibilni.
Povezivanje integrisanih kola iz razlièitih familija je moguãe samo ako su ispunjeni uslovi V
OL
<V
IL

i V
OH
>V
IH
. Ponekad se desi da korišãena familija integrisanih kola ne sadrži potrebnu logièku
funkciju. U takvoj situaciji se potrebno logièko kolo bira iz druge familije koja je kompatibilna sa
prvom. Za postizanje kompatibilnosti mogu se koristiti specijalna kola za sprezanje.
U tabeli su i takve familije oznaèene kao kompatibilne kod kojih je izlazni visoki logièki
nivo (V
OH
) pobudnog kola (D) višlji od napona napajanja (V
CC
) prijemnog kola (R). Takva veza je
dozvoljena samo u sluèaju ako proizvoðaè za datu familiju logièkih kola dozvoljava napon na ulazu
veãi od napona napajanja.
1.4.4. Zavisnost kašnjenja od napona napajanja
Pravac razvoja je decenijama bio sniženje napona napajanja kako bi se smanjili gubici i
kašnjenja. Meðutim, potrebno je naglasiti da kola koja su projektovana za širi opseg napona
napajanja imaju manja kašnjenja kada su prikljuèena na veãe napone napajanja (slika 1-16). Na
dijagramu su nacrtane krive kašnjenja pojedinih familija za deklarisane opsege napona napajanja
prema kataloškim podacima.




















Slika 1-16: Zavisnost kašnjenja od primenjenog napona napajanja za razne familije logièkih kola.

1.4.5. Izbor logièkih funkcija po raznim familijama logièkih kola
Slika 1-17 prikazuje primer tabele koja daje izbor logièkih funkcija iz pojedinih familija
logièkih kola (za proizvoðaè Fairchild). Detaljniji podaci o konkretnim funkcijama se mogu dobiti
iz liste proizvoda konkretnog proizvoðaèa. Na desnoj strani tabele su navedene oblasti u kojima se
preporuèuje primena date familije integrisanih kola. Najveãi izbor logièkih funkcija iz bipolarne
tehnologije imaju familije sa oznakama TTL, S, LS i F. Od CMOS familija, serije AC i ACT su
najzrelije i sadrže najviše ponuðenih rešenja za razne logièke funkcije.
U prikazanom izboru proizvoda su spomenuti samo SSI i MSI kola. Navedene tehnologije
se primenjuju i kod LSI i VLSI integrisanih kola koja se softverski ili hardverski programiraju.



Pitanja vezana za realizaciju digitalnih elektriènih kola
- 21 -


Slika 1-17: Izbor logièkih funkcija realizovanih u raznim familijama logièkih kola.



II. Digitalno projektovanje primenom
SSI i MSI funkcionalnih jedinica
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 23 -

2. Kombinacione mreže
Kombinacione mreže su digitalna kola kod kojih se vrednost izlaza odreðuje na osnovu
trenutne vrednosti ulaza. U realnosti je potrebno neko odreðeno vreme (zbog kašnjenja, poglavlje
1.3) za formiranje važeãeg izlaznog logièkog nivoa posle svake promene vrednosti ulaza ali nakon
toga vrednost izlaza je nezavisna od prethodnih vrednosti ulaza. Ovo je naglašeno zbog toga jer
ponašanje sekvencijalnih mreža (3. glava) odstupa od navedenog.
Vrste kombinacionih mreža koje se obraðuju u ovoj glavi se proizvode od šezdesetih
godina u obliku SSI i MSI funkcionalnih jedinica. Njihova primena se ne ogranièava samo na
izgradnju digitalnih ureðaja upotrebom SSI i MSI integrisanih kola. Ova rešenja se takoðe 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).
2.1. Kola za sprezanje
Povezivanje razlièitih funkcionalnih jedinica se èesto vrši preko kola za sprezanje
(prilagoðenje). Ova kola mogu da menjaju logièke nivoe, prilagoðavaju impedanse i propuštaju
signale u direktnom ili u invertovanom obliku. Kod kola za sprezanja akcenat nije na logièkim
funkcijama, nego na kolima za pojaèavanje koja se koriste u prekidaèkom režimu. Obièno se veãi
broj kola za sprezanje (npr. osam komada) ugraðuje u jedno DIL ili SO kuãište i oni pripadaju
kategoriji SSI kola.
2.1.1. Neinvertujuãa i invertujuãa kola za sprezanje
Neinvertujuãa kola za sprezanje (bafer, engl. buffer) i invertujuãa kola za sprezanje (in-
vertor, engl. inverter) se prave sa velikom ulaznom i malom izlaznom otpornošãu. Ovaj izbor
impedansi omoguãuje vezivanje velikog broja ulaza narednih stepena na izlaz nekog prethodnog
stepena. Odgovarajuãe šematske oznake su prikazane na slici 2-1.


Slika 2-1: Šematske oznake kola za
sprezanje : a) bafer, b) invertor.


U jednostavnijim sluèajevima kola za sprezanje zahtevaju samo jedan napon napajanja. Ako
je potrebno povezati dve logièke jedinice sa razlièitim 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 više izvora (A, B, C, D) prenosi signal prema jedinstvenom korisniku (L) preko
jednog zajednièkog provodnika na naèin 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 drže u treãem stanju (stanje visoke impedanse). Aktivacija se vrši pomoãu signala dozvole
(engl. enable) E
A
, E
B
, E
C
, E
D
.


Slika 2-2: Prenos signala preko
zajednièkog provodnika korišãenjem
kola za sprezanje sa tri stanja.
A A Y Y
(a) (b)
EA EB EC ED
A B C D
L
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 24 -
Èetiri idejna rešenja kola za sprezanje sa tri stanja su u ponudi proizvoðaèa (slika 2-3).
Kola za sprezanje mogu da propuste signal bez invertovanja (slike a i c) ili sa invertovanjem (slike
b i d) dok signal dozvole može da bude aktivan na logièkoj jedinici (slike a i b) ili na logièkoj nuli
(slike c i d). Obièno se i kod kola za sprezanje sa tri stanja veãi broj komada smešta u zajednièko
kuãište.





Slika 2-3: Vrste kola za sprezanje sa tri stanja.
2.1.3. Dvosmerna kola za sprezanje
Kada je potreban dvosmeran prenos signala izmeðu razlièitih funkcionalnih jedinica,
upotrebljavaju se dvosmerna kola za sprezanje. Unutrašnja struktura dvosmernog kola za sprezanje
koji je sposoban za dvosmerni prenos signala je prikazan na slici 2-4. Signal DIR odreðuje smer
prenosa signala i zahvaljujuãi internoj negaciji uvek je samo jedno kolo za sprezanje aktivno. Kolo
za sprezanje koje je iskljuèeno, ne utièe na logièki nivo izlaza jer je u stanju visoke impedanse.
Za dvosmerna kola za sprezanje takoðe važi pravilo da u jedno kuãište se smešta više
primeraka. Proizvode se i takvi tipovi èija je namena povezivanje mreža sa razlièitim naponima
napajanja i razlièitim logièkim nivoima.



Slika 2-4: Unutrašnja struktura dvosmernog kola za
sprezanje.




2.2. Dekoder
Dekoderi su kombinacione mreže sa više 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 moguãih varijacija logièkih nivoa 2
n
i zato je broj izlaznih linija
jednak 2
n
. 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.

0 1 2 0 A A A Y · · =
0 1 2 1 A A A Y · · =
0 1 2 2 A A A Y · · =
0 1 2 3 A A A Y · · =
0 1 2 4 A A A Y · · =
0 1 2 5 A A A Y · · =
0 1 2 6 A A A Y · · =
0 1 2 7 A A A Y · · =

Tabela 2-1: Kombinaciona tabela i logièke funkcije potpunog dekodera 3/8.
A2 A1 A0 Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0
0 0 0 0 0 0 0 0 0 0 1
0 0 1 0 0 0 0 0 0 1 0
0 1 0 0 0 0 0 0 1 0 0
0 1 1 0 0 0 0 1 0 0 0
1 0 0 0 0 0 1 0 0 0 0
1 0 1 0 0 1 0 0 0 0 0
1 1 0 0 1 0 0 0 0 0 0
1 1 1 1 0 0 0 0 0 0 0
A A A A Y Y Y Y
E E E E
(a) (b) (c) (d)
A Y
DIR
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 25 -
Za realizaciju dekodera se koriste logièka I kola sa potrebnim brojem ulaza jer se svaka
izlazna logièka funkcija Y0...Y7 sastoji od jednog logièkog proizvoda (slika 2-5).


















Slika 2-5: Realizacija potpunog dekodera pomoãu I kola.


Integrisana kola namenjena za funkciju
dekodiranja obièno sadrže i ulaz za dozvolu (EN –
enable). Ovo omoguãava poveãanje kapaciteta
dekodera: povezivanjem dva dekodera 3/8 moguãe je
dobiti dekoder 4/16 (slika 2-6), itd.




Slika 2-6: Realizacija dekodera 4/16 pomoãu dva dekodera
3/8.


2.2.2. Nepotpuni dekoder
Potpuni dekoder se može uprostiti ako se pouzdano zna da se nikad neãe pojaviti neke
ulazne kombinacije. Naèin uprošãavanja se sastoji od izostavljanja onih I kola koja realizuju takve
logièke proizvode èije vrednosti nikada ne mogu postati jedinice. Nepotpuni dekoder dobijen na
ovaj naèin ãe ispravno funkcionisati ali moguãe je i dalje uprošãavanje.
Tipièan primer nepotpunog dekodera je BCD dekoder, koji služi za dekodiranje binarno
kodiranih decimalnih cifara. Kombinaciona tabela BCD dekodera se dobija iz kombinacione tabele
dekodera 4/16 izostavljanjem zadnjih šest linija jer kombinacije brojeva od 10 do 15 se ne mogu
pojaviti (tabela 2-2). Minimizacijom logièkih funkcija Y0...Y9 definisanih na ovaj naèin dolazi se do
logièke mreže predstavljenoj na slici 2-7.





A2
A1
A0
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
A0 A1 A2
A0
A1
A2
EN
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
DEK
3/8
A0
A1
A2
EN
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
DEK
3/8
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
Y8
Y9
Y10
Y11
Y12
Y13
Y14
Y15
A3
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 26 -
A3 A2 A1 A0 Y9 Y8 Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0
0 0 0 0 0 0 0 0 0 0 0 0 0 1
0 0 0 1 0 0 0 0 0 0 0 0 1 0
0 0 1 0 0 0 0 0 0 0 0 1 0 0
0 0 1 1 0 0 0 0 0 0 1 0 0 0
0 1 0 0 0 0 0 0 0 1 0 0 0 0
0 1 0 1 0 0 0 0 1 0 0 0 0 0
0 1 1 0 0 0 0 1 0 0 0 0 0 0
0 1 1 1 0 0 1 0 0 0 0 0 0 0
1 0 0 0 0 1 0 0 0 0 0 0 0 0
1 0 0 1 1 0 0 0 0 0 0 0 0 0

Tabela 2-2: Kombinaciona tabela BCD dekodera.

Slika 2-7: Logièka mreža koja realizuje minimizirani BCD dekoder.
2.2.3. Realizacija logièkih funkcija pomoãu dekodera
Dekoderi realizuju logièke proizvode svojih ulaznih promenljivih i zato je moguãe
dodavanjem ILI kola na izlaz dekodera realizovati bilo koju logièku funkciju koja je data u obliku
zbira logièkih proizvoda. Npr. funkcija:
C B A C AB C B A Y + + =
je realizovana na naèin prikazan na slici 2-8.








Slika 2-8: Realizacija logièke funkcije korišãenjem dekodera.
A0
A1
A2
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
DEK
3/8
A
B
C
ABC
ABC
ABC
Y
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 27 -
2.3. Koder
Digitalna obrada se vrši nad kodiranim signalima. Npr. kada se pritisne jedan taster na
tastaturi raèunara, nastaje niz logièkih nula i jedinica (kod). Suština kodiranja je dodeliti razlièit kod
svakoj ulaznoj vrednosti.
2.3.1. Potpuni koder
Izlazni kod dužine n bita potpunog kodera se formira na osnovu 2
n
ulaza. U tabeli 2-3 je
data kombinaciona tabela dekodera sa osam ulaza i tri izlaza (8/3). U tabeli su prikazani samo oni
redovi od svih moguãih 2
8
=256 u kojima samo jedna ulazna promenljiva ima vrednost logièke
jedinice. Na slici su takoðe dati izrazi za logièke funkcije dobijeni logièkom minimizacijom. Funk-
cije dekodera se u ovom sluèaju dobijaju u obliku èistog zbira umesto sume proizvoda.



Y0=A1+A3+A5+A7
Y1=A2+A3+A6+A7
Y2=A4+A5+A6+A7





Tabela 2-3: Kombinaciona tabela kodera 8/3 i odgovarajuãe izlazne logièke funkcije.

Logièka šema koja se dobija na osnovu prethodnih jednaèina za koder 8/3 je prikazana na
slici 2-9. Logièka vrednost izlaza je netaèna ako na ulazima logièke mreže ima više od jedne
jedinice. Zbog ovih kombinacija, koder se može proširiti sa jednim logièkim kolom koje upozorava
na nedozvoljene kombinacije na ulazima.






Slika 2-9: Logièka mreža koja realizuje koder 8/3.






2.3.2. Nepotpuni koder
Koder je nepotpun kada je broj moguãih stanja na ulaznim linijama koja se kodiraju
pomoãu n izlaznih linija manji od 2
n
. Tipièan primer za to je kodiranje cifara decimalnog brojnog
sistema pomoãu èetiri izlazne linije (bit-a). Naziv ovog kodera je DC-BCD koder. Odgovarajuãe
kombinacione tabele su prikazane u tabeli 2-4, gde su date i minimizovane logièke funkcije.





A7 A6 A5 A4 A3 A2 A1 A0 Y2 Y1 Y0
0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 1 0 0 0 1
0 0 0 0 0 1 0 0 0 1 0
0 0 0 0 1 0 0 0 0 1 1
0 0 0 1 0 0 0 0 1 0 0
0 0 1 0 0 0 0 0 1 0 1
0 1 0 0 0 0 0 0 1 1 0
1 0 0 0 0 0 0 0 1 1 1
A0
A1
A2
A3
A4
A5
A6
A7
Y2 Y1 Y0
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 28 -


Y0=A1+A3+A5+A7+A9
Y1=A2+A3+A6+A7
Y2=A4+A5+A6+A7
Y3=A8+A9






Tabela 2-4: Kombinaciona tabela DC/BCD kodera i odgovarajuãe logièke funkcije.





Logièka mreža koja realizuje DC-BCD
koder je prikazana na slici 2-10. Neophodno je
naglasiti da realizacija funkcije zaštite od
istovremene pojave više logièkih jedinica na ulazu
kodera je zadatak korisnika.



Slika 2-10: Logièka mreža koja realizuje DC-BCD
koder.


2.3.3. Prioritetni koder
Reèeno je da oni koderi koji su prikazani u prethodnim taèkama generišu pogrešan kod
odnosno neupotrebljiv kod na izlazima ako su više od jedne logièke jedinice prisutne na ulaznim
linijama. Tipièan primer za ovo je obrada prekida kod mikrokontrolera. Više signala mogu
istovremeno da imaju vrednost logièke jedinice jer je priroda logièkih signala asinhrona (potièu iz
spoljašnjih kola). U takvim situacijama mikrokontroler odluèuje koji zahtev za prekid ãe se prvi
opslužiti. Ovakav zadatak se unutar mikrokontrolera rešava pomoãu prioritetnog kodera.
Ulazi prioritetnog kodera su rangirani po važnostima (prioritetima). Ako su prisutne više
jedinice na ulazima kodera onda se formira kod onog ulaza èiji je prioritet najveãi.
Na slici 2-15 je data kombinaciona tabela prioritetnog kodera
8/3. Sa x smo obeležili one vrednosti ulaza koje ne utièu na
funkcionisanje prioritetnog kodera. Potrebno je napomenuti da u tabeli
nije prikazan sluèaj kada su svi ulazi na logièkoj nuli. Ako je
neophodno uzeti i taj sluèaj u obzir, dodaje se kolo koje je posebno
projektovano za tu namenu.



Tabela 2-5: Kombinaciona tabela prioritetnog kodera 8/3.
Ai Y3 Y2 Y1 Y0
0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 0 1 0 0
5 0 1 0 1
6 0 1 1 0
7 0 1 1 1
8 1 0 0 0
9 1 0 0 1
Ulaz Izlaz (kod)
1xxxxxxx 000
01xxxxxx 001
001xxxxx 010
0001xxxx 011
00001xxx 100
000001xx 101
0000001x 110
00000001 111
A0
A1
A2
A3
A4
A5
A6
A7
Y2 Y1 Y0
A8
A9
Y3
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 29 -
2.4. Pretvaraèi koda
Kombinacione mreže, koje podatke iz jednog kodnog sistema pretvaraju u drugi, naziva-
mo pretvaraèima koda. Teoretski se svaki pretvaraè koda može konstruisati kaskadnom vezom
jednog dekodera i jednog kodera. Meðutim, èesto postoji veliki prostor u minimizaciji jednog
takvog pretvaraèa koda.
2.4.1. Pretvaraè prirodnog binarnog koda u Gray-ov kod
Pretvaranje trobitnog prirodnog binarnog broja u Gray-
ov kod se vrši prema tabeli 2-6. Rešenje koje se dobija
kaskadnom vezom dekodera i kodera prikazano je na slici 2-11.





Tabela 2-6: Uporedna tabela trobitnog prirodnog binarnog koda i
trobitnog Gray-ovog kola.






Slika 2-11: Pretvaraè koda realizovan
kaskadnom vezom dekodera i kodera.


Na osnovu tabele mogu se
napisati sledeãe jednaèine za
pojedinaène bitove Gray-ovog koda:


0 1 2 0 1 2 0 1 2 0 1 2 2
B B B B B B B B B B B B G + + + =

0 1 2 0 1 2 0 1 2 0 1 2 1
B B B B B B B B B B B B G + + + =

0 1 2 0 1 2 0 1 2 0 1 2 0
B B B B B B B B B B B B G + + + =

Minimizacijom prethodnih logièkih funkcija se dobijaju sledeãi, jednostavniji izrazi:


2 2
B G =

1 2 1
B B G © =

0 1 0
B B G © =

Pojednostavljena šema
pretvaraèa koda je prikazana na slici
2-12a dok minimizovana logièka
mreža prikazana na slici 2-12b
obavlja inverznu operaciju u odnosu
na prethodnu mrežu.

Slika 2-17: Minimizovani pretvaraèi koda: (a) iz binarnog u Gray-ov kod i (b) iz Gray-ovog koda u binarni.
Prirodni
binarni kod
Gray-ov
kod
000 000
001 001
010 011
011 010
100 110
101 111
110 101
111 100
A0
A1
A2
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
G2 G1 G0
B0
B1
B2
DEKODER3/8 KODER
B2
B1
B0
G0
G1
G2 B2
B1
B0
G0
G1
G2
(a) (b)
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 30 -
2.4.2. Pretvaraè BCD koda u 7-segmentni kod
Najèešãe korišãen pretvaraè koda je digitalno kolo koje na osnovu binarno kodiranih
decimalnih cifara pokreãe sedmosegmenti displej. Kao naziv za ovaj pretvaraè èesto se u
kataloškim podacima (pogrešno) navodi izraz dekoder. Segmenti LCD ili LED displeja koji služe za
prikazivanje jedne decimalne cifre su postavljene u obliku osmice. Oznake segmenata su prikazane
na slici 2-13a. Slika 2-13b prikazuje kombinacije segmenata koji treba da se aktiviraju za
prikazivanje pojedinih cifara decimalnog brojnog sistema.



Slika 2-13: (a) Oznake segmenata
sedmosegmentog displeja, (b) kombina-
cije segmenata za prikazivanje cifara
decimalnog sistema.

Tabela 2-7 prikazuje kombinacionu tabelu koja
odgovara navedenom pretvaraèu koda.


Tabela 2-7: Kombinaciona tabela pretvaraèa koda iz BCD koda u 7-
segmentni kod.

Za svaki segment je potrebno napisati odgovarajuãe
jednaèine i nakon minimizacije se dolazi do sledeãih rezultata:

C A AC D B a + + + =
B A AB C b + + =
C B A c + + =
C B C A C B A B A D d + + + + =
C A B A e + =
C B C A B A D f + + + =
C B C B B A D g + + + =

Dobijene logièke funkcije se sintetizuju dvostepenim I-ILI logièkim mrežama koja se
zatim integrišu u jedno MSI kolo. Ova kola obièno sadrže još i jedan upravljaèki ulaz, pomoãu
kojeg se mogu svi segmenti istovremeno iskljuèiti. Korist od upravljaèkog ulaza je velika ako je
potrebno istovremeno prikazati više cifara.
Ako se na ulaz rešenja koje je prikazano gore dovodi nepostojeãi kod, prikaz na displeju
ãe biti besmislen. Malim promenama je moguãe rešiti da displej prikazuje simbole sa slike 2-14 za
kodne reèi heksadecimalnog brojnog sistema od 10 do 15.

Slika 2-14: Naèin prikazivanja cifara heksadecimalnog
brojnog sistema veãe od devet pomoãu sedmosegmentnog
displeja.
2.5. Multipleksor
Multipleksor se može prikazati kao višepoložajni prekidaè (slika 2-15). Prosleðuje signale
(D
0
...D
n-1
) sa svojih ulaza na izlaz. Selekcioni ulazi multipleksora (S
0
...S
m-1
) odreðuju ulazni signal
koji ãe se u datom momentu proslediti na izlaz.


Cifra D C B A a b c d e f g
0 0 0 0 0 1 1 1 1 1 1 0
1 0 0 0 1 0 1 1 0 0 0 0
2 0 0 1 0 1 1 0 1 1 0 1
3 0 0 1 1 1 1 1 1 0 0 1
4 0 1 0 0 0 1 1 0 0 1 1
5 0 1 0 1 1 0 1 1 0 1 1
6 0 1 1 0 1 0 1 1 1 1 1
7 0 1 1 1 1 1 1 0 0 0 0
8 1 0 0 0 1 1 1 1 1 1 1
9 1 0 0 1 1 1 1 1 0 1 1
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 31 -


Slika 2-15: (a) Unutrašnja
struktura multipleksora i (b)
njegova šematska oznaka.


2.5.1. Konstruisanje digitalnih multipleksora
Proizvoðaèi obièno u jedno MSI kolo integrišu multipleksor sa 2, 4, 8 ili 16 ulaza, pri
èemu je broj selekcionih ulaza redom 1, 2, 3 i 4. Izlazna funkcija multipleksora sa osam ulaza za
podatke (D0...D7) i tri selekciona ulaza (S0...S2) je:


0 1 2 7 0
1 2
1
0 1 2
0
.... S S S D S S S D S S S D Y + + + = .

Realizacija kola se vrši korišãenjem osam komada troulaznih I kola i jednog osmoulaznog
ILI kola. Logièka mreža prikazana na slici 2-16 realizuje dati multipleksor, sa time da je izveden i
ulaz za dozvolu rada (E) pomoãu kojeg je moguãe stanje izlaza prevesti u logièku nulu nezavisno
od ulaza za podatke i selekcionih ulaza. Ulaz za dozvolu se može koristiti i za proširivanje
multipleksora. Ovo je znaèajno kada je potreban multipleksor sa više ulaza za podatke od onoga što
je na raspolaganju u integrisanoj formi (obièno se proizvode do 16 ulaza).























Slika 2-16: Logièka mreža koja realizuje multipleksor sa osam ulaza za podatke.
2.5.2. Proširivanje multipleksora
Naèin proširivanja multipleksora je prikazan na slici 2-17. Podaci se vode na ulaze odgo-
varajuãeg manjeg multipleksora. Na selekcione ulaze ovih multipleksora se vode isti signali. Izlazni
podaci multipleksora iz prvog stepena se vode na sledeãi multipleksor koji odluèuje o tome koji
podaci se dalje prosleðuju sa prethodnog stepena. Proširivanje se može izvesti u više stepena.

D0
D1
D2
Dn-1
Y
SEL
D0
D1
Dn-1
S0 S1 Sm-1
Y
(a) (b)
MUX
S2
S1
S0
D0 D1 D2 D3 D4 D5 D6 D7
Y
E
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 32 -

Slika 2-17: Principijelna šema za proširivanje multipleksora.
2.5.3. Realizacija logièkih funkcija pomoãu multipleksora
Pored osnovne funkcije (biranje podataka), multipleksori se mogu efikasno primeniti i u
realizaciji logièkih funkcija. Uslov za realizaciju je da funkcija bude izražena u obliku sume
proizvoda i da proizvodi sadrže sve ulazne promenljive. Za realizaciju sledeãe funkcije:

A CB B C A B C Y + + =

neophodno je ovaj izraz prevesti u normalnu formu:

A CB A B C A B C A B C Y + + + =

Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 33 -
Realizacija podrazumeva povezivanje promenljivih A, B i
C na selekcione ulaze i dovoðenje odgovarajuãih naponskih nivoa na
ulaze za podatke. Naponski nivoi se odreðuju na osnovu
normalizovane funkcije. Svakom proizvodu date funkcije odgovara
taèno jedan ulaz za podatke koji se povezuje na logièku jedinicu a
oni ulazi koji nisu pokriveni logièkim proizvodima u datoj funkciji
se vežu na logièku nulu (slika 2-18).

Slika 2-18: Realizacija logièke funkcije od tri promenljive multipleksorom
sa osam ulaza za podatke.

Postoji i efikasniji naèin korišãenja multipleksora u realizaciji logièkih funkcija od onog
koji je dat u prethodnom primeru. Tako npr. pomoãu multipleksora sa osam ulaza za podatke
moguãe je realizovati logièke funkcije od èetiri promenljive odnosno korišãenjem multipleksora sa
èetiri ulaza za podatke moguãe je realizovati logièke funkcije od tri promenljive (slika 2-19).




Slika 2-19: Realizacija logièke funkcije od tri promenljive
multipleksorom 4/1.


Promenljive B i C su na uobièajeni naèin vezani na selekcione ulaze. Zatim na
pojedinaène ulaze za podatke se vezuju logièke nule ili jedinice ako je vrednost funkcije nezavisna
od promenljive A a za date vrednosti promenljivih B i C ima vrednost nulu odnosno jedinicu. Ako
vrednost funkcije zavisi od promenljive A onda se na odgovarajuãi ulaz podatka direktno dovodi
promenljiva A ili njegova invertovana vrednost, tako da se na izlazu multipleksora dobija ispravna
vrednost funkcije.
2.6. Demultipleksor
Uloga demultipleksora je suprotna od multipleksora: informacija se sa jedne linije podatka
prosleðuje na jedan od više izlaznih linija podataka. Princip funkcionisanja se može prikazati
pomoãu jednog višepoložajnog prekidaèa (slika 2-20a). Biranje izlazne linije podatka se vrši
odgovarajuãim kodom na selekcionim ulazima (slika 2-20b, ulazi S
0
...S
m-1
).




Slika 2-20: (a) Funkcija
demultipleksora prikazana
višepoložajnim prekidaèem i (b)
njegova šematska oznaka.


Demultipleksor se može zameniti dekoderima ako se na ulaz za dozvolu kod dekodera
dovode ulazni podaci. Ulazi dekodera se koriste kao selekcioni ulazi. Vrednost izlaza koji se
adresira selekcionim ulazima je logièka jedinica ako je rad kola omoguãen signalom dozvole. Ako
je vrednost ulaznog signala nula, onda je i vrednost izlaza nula jer je rad kola onemoguãen. Na ovaj
naèin, u oba sluèaja se dobija ispravna vrednost na izlaznim kanalima. Proizvoðaèi obièno nude iste
komponente pod nazivima dekoder i demultipleksor.
D0
D1
D2
D3
D4
D5
D6
D7
S0
S1
S2
A
B
C
Y
"1"
MUX
8/1
D0
D1
D2
D3
S0
S1
Y
"1"
A
B
C
MUX
4/1
X
SEL
(a)
Y0
Y1
Y2
Yn-1
Y0
Y1
Yn-1
S0 S1 Sm-1
X
(b)
DMX
1/n
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 34 -
2.6.1. Prenos više podataka preko zajednièkog kanala
Povezivanjem multipleksora i demultipleksora je moguãe preneti digitalne podatke preko
smanjenog broja provodnika. Ako je broj ulaznih linija n=2
m
, moguãe je realizovati prenos
podataka preko m+1 linije. Odgovarajuãa logièka šema je prikazana na slici 2-21. Selekcioni ulazi
su na isti naèin povezani kod oba kola i zato je redosled ulaznih i izlaznih linija identièan.




Slika 2-21: Prenos podataka preko smanjenog
broja linija korišãenjem multipleksora i
demultipleksora.


Nedostatak ove metode je da prenos podataka sa pojedinih ulaznih kanala na pojedine
izlazne kanale se ne dešava istovremeno nego jedno za drugim. Ovaj princip se naziva vremenskim
multipleksom. Kapacitet zajednièkog kanala se deli meðu pojedinim podacima i zbog toga dolazi do
znaèajnih smanjenja u brzini prenosa.
2.6.2. Analogni multipleksor/demultipleksor
Digitalni multipleksori i demultipleksori su pogodni samo za prenos logièkih nivoa za
razliku od višepoložajnih prekidaèa prikazanih na slikama 2-15 i 2-20 koji su u stanju da prenose
digitalne i analogne signale u oba smera. Multipleksiranje/demultipleksiranje analognih signala je
potrebno npr. kod višekanalnih mernih ureðaja.
U integrisanoj tehnici je takoðe moguãe realizovati multipleksore/demultipleksore za ana-
logne signale. Analogni prekidaè èini osnovu ovih kola, koji pod uticajem upravljaèkog signala
otvara ili zatvara poluprovodnièki kanal. Analogni prekidaè se formira paralelnom vezom N i P
kanalnog mosfeta (slika 2-22), ali postoje i druga rešenja. Suština je ta da otpornost kanala u
ukljuèenom stanju treba da bude mala a u iskljuèenom stanju velika.















Slika 2-22: (a) Konstrukcija analognog prekidaèa pomoãu N kanalnog i P kanalnog mosfeta i (b) šematska
oznaka analognog prekidaèa.

Analogni multipleksor/demultipleksor (slika 2-23) se dobija primenom potrebnog broja
analognih prekidaèa kojima se upravlja pomoãu dekodera. Na jednu stranu prekidaèa se dovode
odgovarajuãi analogni signali dok se drugi kraj svih prekidaèa veže u jednu taèku koja predstavlja
izlaz. Uloga dekodera je da obezbedi takvo upravljanje analognim prekidaèima da na bilo koju
kombinaciju upravljaèkih signala uvek samo jedan prekidaè bude u provodnom stanju. Isto kolo se
Y0
Y1
Yn-1
S0 S1 Sm-1
X
DMX
1/n
D0
D1
Dn-1
S0 S1 Sm-1
Y
MUX
n/1
VDD
VSS
X X
UL./IZL. UL./IZL.
(a) (b)
UL./IZL. UL./IZL.
X
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 35 -
može koristiti i kao demultipleksor, jer analogni prekidaèi provode signale u oba smera kada su
ukljuèeni i neprovodni su u oba smera kada su iskljuèeni.


Slika 2-23: Realizacija analognog multipleksora/demultipleksora primenom analognih prekidaèa i dekodera.
A0
A1
A2
Y0
Y1
Y2
DEK
m/2
Yn-1 Am-1
m
W0 W1 Wn-1
S
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 36 -
3. Sekvencijalne mreže
Sekvencijalne mreže su digitalna kola koja poseduju osobinu pamãenja (memorisanja).
Digitalno kolo pamti odreðene informacije o stanju samog kola u prošlosti i o upravljaèkim
signalima dovedenim u proslošti. Izlazni signali sekvencijalne mreže se formiraju na osnovu
zapamãene informacije i novih vrednosti logièkih nivoa na ulazima. Sekvencijalne mreže se
redovno nazivaju i logièkim automatima jer se èesto primenjuju u oblasti automatskog upravljanja.
Kapacitet sekvencijalnih mreža za pamãenje je najèešãe mali i obièno je reè o svega
nekoliko bita. Kod n-bitnih sekvencijalnih mreža postoje 2
n
razlièitih stanja. Zbog konaènog broja
stanja, sekvencijalne mreže se još nazivaju i automatima sa konaènim brojem stanja (engl. finite-
state machine) .
Pored memorije, sekvencijalne mreže sadrže i kombinacione elemente (mreže). Na osnovu
unutrašnje strukture razlikujemo dve vrste logièkih automata. Na slici 3-1 je prikazana blok šema
Mealy-jevog automata. Kolo, pored memorije, sadrži i dve kombinacione mreže: jednu na ulazu,
drugu na izlazu. Ulazna kombinaciona mreža odreðuje novo stanje automata na osnovu trenutne
vrednosti logièkih nivoa na ulazima i na osnovu trenutnog stanja automata. Istovremeno, izlazna
kombinaciona mreža definiše izlazne digitalne signale na osnovu trenutne vrednosti signala na
ulazima i trenutnog stanja automata.

Slika 3-1: Blok šema sekvencijalne mreže Mealy-jevog tipa .

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
sluèaj Moore-ovog automata se dobija kada se izostavlja izlazna kombinaciona mreža a izlazi
memorije (svi ili neki) su ujedno i izlazi automata.

Slika 3-2: Blok šema sekvencijalne mreže Moore-ovog tipa.

Kod projektovanja sekvencijalnih mreža ni Mealy-jev ni Moore-ov tip automata ne uživa
apsolutnu prednost. Prvi tip je obièno brži a drugi je jednostavniji.
Kod veãine sekvencijalnih mreža trenutak promene stanja se sinhronizuje takt signalom
(engl.: clock). Takt signal se obièno sastoji od periodiène povorke pravougaonih impulsa, mada
periodiènost nije neophodan uslov. Takt signal se koristi samo za sinhronizaciju rada memorije, dok
kombinacione mreže funkcionišu bez sinhronizacionih signala. Moguãe je konstruisati i asinhrone
sekvencijalne mreže. Preglednost funkcionisanja takvih mreža je znaèajno smanjena u odnosu na
sinhrone mreže i zato njihovo projektovanje zahteva mnogo više pažnje.
U ovoj glavi prvo ãe se razmotriti memorijski elementi nakon èega slede naèini opisivanja
i konstruisanja sekvencijalnih mreža. Na kraju ove glave se daje pregled èesto korišãenih
sekvencijalnih mreža dostupnih u obliku integrisanih kola SSI odnosno MSI klase.
ULAZNA
TAKT
IZLAZI
ULAZI
KOMBINACIONA
MREZA
MEMORIJA
(REGISTARSTANJA)
IZLAZNA
KOMBINACIONA
MREZA
ULAZNA
KOMBINACIONA
MREZA
MEMORIJA
(REGISTARSTANJA)
IZLAZNA
KOMBINACIONA
MREZA
TAKT
IZLAZI
ULAZI
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 37 -
Pojmovi i metode koje se ovde uvode (osim klasiènog naèina projektovanja primenom SSI
i MSI integrisanih kola) se primenjuju i kod projektovanja primenom programabilnih logièkih kola.
3.1. Elementarne memorije
Memoriju sekvencijalnih mreža saèinjavaju latch-evi i flip-flop-ovi. Ova kola su u stanju
da pamte informaciju velièine jednog bita i sami po sebi predstavljaju sekvencijalnu mrežu.
Informacija se pamti korišãenjem povratne sprege. Upisana informacija se pamti sve dok je napon
napajanja prisutan. Kod pojedinih memorijskih elemenata se primenjuje okidanje na nivo dok kod
drugih ivièno okidanje.
3.1.1. Latch kola
Jednobitna memorijska kola koja se okidaju na nivo se nazivaju latch kolima. Dva
osnovna kola koja mogu da obavljaju ovu funkciju se dobijaju ukrštenim povezivanjem logièkih
kola i nazivamo ih SR latch kolima (slika 3-3).
Na slici 3-3a je prikazana šema SR latch kola konstruisana NILI kolima. Kolo poseduje
dva stabilna stanja zahvljajujuãi ukrštenom povezivanju: prvi sluèaj odgovara setovanom stanju
kada su vrednosti izlaza Q=1, 0 = Q , dok za obrnute vrednosti izlaza se kaže da je kolo u
resetovanom stanju. Slièna je situacija kod SR latch kola izgraðenih od NI kola (slika 3-3b).
Ponašanje kola u zavisnosti od vrednosti S (set) i R (reset) ulaza je prikazano u tabelama ispod
odgovarajuãih šema.













Slika 3-3: SR latch kolo sa ukrštenim povezivanjem logièkih kola: (a) NILI kolima, (b) NI kolima.

SR latch kolo konstruisano NILI kolima se setuje logièkom jedinicom dovedenom na S
ulaz i resetuje se logièkom jedinicom na R ulazu. Za vreme setovanja ili resetovanja drugi ulaz koji
se ne koristi mora da bude na logièkoj nuli. Kada se ne koriste ove operacije, potrebno je oba ulaza
držati na logièkoj nuli i tada se vrednosti izlaza ne menjaju.
Sluèaj kada se na oba ulaza dovode logièke jedinice, naziva se nedozvoljenom kombi-
nacijom. Tada privremeno oba izlaza postaju logièke nule ali je neizvesno koji ãe izlaz ostati na nuli
posle povratka ulaznih vrednosti na nule. Ukoliko se vrednosti ulaza u razlièitim trenucima vraãaju
na nule tada ãe onaj ulaz odrediti stanje izlaza koji se zadnji vratio na nulu. Sa druge strane, ako se
vrednosti ulaza menjaju istovremeno, onda kašnjenja logièkih kapija odluèuju o stanju izlaza.
Upravljanje SR latch kolima konstruisanih od NI kola se vrši pomoãu niskih logièkih
nivoa. U ovom sluèaju ãe nule koje se istovremeno pojavljuju na ulazima, prouzrokovati
neizvesnost u funkcionisanju i zato je neophodno ove situacije izbegavati kod NI kola.
Promene stanja SR latch kola se po potrebi mogu sinhronizovati pomoãu jednog
upravljaèkog signala (Enable) na naèin kako je prikazano na slici 3-4. Sve dok je upravljaèki signal
(signal dozvole) na logièkoj nuli, izlazi ulaznih NI kola su na logièkim jedinicama i vrednosti koji
su upisane u latch kolo se ne mogu menjati. U trenutku promene signala Enable na visoki logièki
(a) (b)
S
R
Q
Q
Q
Q
R
S
S R
0 0
0 1
0 1
1 1
Qn+1 Qn+1
Qn Qn
0 1
1 0
0 0
S R
0 0
0 1
0 1
1 1
Qn+1 Qn+1
Qn Qn
1 0
0 1
1 1
ZABRANJENO
ZABRANJENO
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 38 -
nivo, ulazna NI kola postaju aktivna i propuštaju ulazne S i R signale koji prouzrokuju odgovarajuãu
promenu stanja.





Slika 3-4: SR latch kolo sinhronizovan signalom
dozvole (Enable).


Dok je signal Enable na visokom logièkom nivou svaka promena vrednosti ulaza S i R
utièe na stanje latch kola. Ova vrsta sinhronizacije se naziva okidanjem na naponski nivo. Kolo koje
se dobija na ovaj naèin se naziva transparentno latch kolo jer je “providno” za set i reset signale sve
dok je upravljaèki signal aktivan.
Nedozvoljene kombinacije ulaznih signala je moguãe izbeãi dodavanjem invertora
prethodnom kolu (slika 3-5a). Uloga invertora je da zaštiti 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). Uobièajena šematska oznaka D latch-a je data na slici 3-5b, a
princip rada se može 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
sluèaju signal sa ulaza (sa malim kašnjenjem) prelazi na izlaz. Signal koji je prisutan na izlazu u
trenutku silazne ivice signala dozvole ostaje važeãi sve dok signal dozvole ne postane ponovo
aktivan.

Slika 3-5: D latch kolo sa sinhronizacijom (a), šematska oznaka (b) i dijagrami za objašnjenje
principa rada (c).

3.1.2. Flip-flop-ovi
Flip-flop-ovi su elementarne memorije koje se okidaju na ivicu upravljaèkog signala. Upis
podatka se vrši na uzlaznu ili na silaznu ivicu upravljaèkog 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, navešãemo 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 odgovarajuãi vremenski dijagrami su prikazani na slici 3-6. Kod svake uzlazne ivice
takt signala (na dijagramu je to oznaèeno isprekidanom linijom) se upisuje vrednost ulaza D u izlaz
Q. Strelica na šematskoj oznaci uvek oznaèava ulaz za takt signal (clk).



(c)
Q
Enable
Data
(a)
Data
t
0 10 20 30 40 50
Enable
t
0 10 20 30 40 50
Q
t
0 10 20 30 40 50
Data Q
Q Enable
(b)
S
R
Q
Q
Enable
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 39 -





Slika 3-6: D flip-flop: (a)
šematska oznaka, (b)
kombinaciona tabela, (c)
vremenski dijagrami.




D flip-flop se može realizovati pomoãu kaskadne veze dva D latch kola kao što je
prikazano na slici 3-7 (master-slave veza). Sve dok je takt signal na visokom logièkom 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.


Slika 3-7: Realizacija D flip-flop-a
kaskadnom vezom dva D latch kola (master-
slave veza).



Posle silazne ivice takt signala prvo latch kolo se zatvara (zadržava stanje koje je bilo
aktivno pri silaznoj ivici takt signala), dok drugo (slave) latch kolo postaje transparentno.
Posmatrajuãi spolja može se reãi da upis u flip-flop se vrši na silaznoj ivici takt signala.
Za realizaciju D flip-flop-a postoje i druga rešenja koja su bolja jer sadrže manji broj
logièkih kapija i vremena kašnjenja su im manja. Slika 3-8 prikazuje jedno takvo kolo koje se okida
uzlaznom ivicom. Sve dok je takt signal na niskom logièkom nivou i ulazi S i R su na visokom
logièkom nivou i nije moguãe izvršiti upis u izlazno latch kolo. Po dve logièke kapije su prisutne na
ulazima koje se takoðe mogu smatrati latch kolima èija je funkcija priprema signala za upis u
izlazno latch kolo. U trenutku promene takt signala na visoki logièki nivo vrši se upis pripremljene
vrednosti ulaznog signala u izlazno latch kolo.








Slika 3-8: Efikasnija realizacija D flip-flop-a
sa manjim brojem logièkih kapija i manjim
vremenima kašnjenja.







D Q
Q clk
(a)
(b)
D Qn Qn+1
0 0 0
1 0
1
1
0
1
0
1
1
(c)
clk
t
D
t
Q
t
D Q
Q
clk
Enable
Master
Data
D latch
D Q
Q Enable
Slave
D latch
Q
Q
Q
Q
clk
D
S
R
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 40 -
Postoje i druge vrste flip-flop-ova, koji se od D flip-flop-a razlikuju po broju ulaza i po
upravljaèkom algoritmu. To su RS, T i JK flip-flop-ovi. RS flip-flop se može smatrati kao verzija RS
latch kola koja se okida ivicom takt signala. Njegova šematska oznaka i kombinaciona tabela su
prikazana na slici 3-9.



Slika 3-9: (a) Šematska oznaka RS flip-flop-a i (b)
njegova kombinaciona tabela.


Stanje izlaza RS flip-flop-a, slièno odgovarajuãem latch kolu, je nepredvidljivo u onim
sluèajevima kada su istovremeno prisutne logièke jedinice na oba ulaza. Kao rešenje ovog problema
nastao je JK flip-flop èija su šematska oznaka i kombinaciona tabela prikazana na slici 3-10. JK flip-
flop-ovi invertuju vrednosti svojih izlaza pri svakoj silaznoj ivici takt signala u sluèaju istovremeno
prisutnih logièkih jedinica na oba ulaza.



Slika 3-10: (a) Šematska oznaka JK flip-flop-a i (b)
njegova kombinaciona tabela.




T flip-flop poseduje samo jedan ulaz za podatke (slika 3-11a) i zato se njegova kombinaci-
ona tabela sastoji samo od dva reda (slika 3-11b). Ako je na ulazu T logièka jedinica onda se
vrednost izlaza invertuje pri svakoj uzlaznoj ivici takt signala, dok za logièku nulu vrednost izlaza
ostaje nepromenjena.




Slika 3-11: (a) Šematska oznaka T flip-flop-a i (b)
njegova kombinaciona tabela.



Obièno se dva ili èetiri flip-flop-a smeštaju u zajednièko kuãište kod MSI tehnologije.
Pored sinhronizacionih ulaza redovno ovi flip-flop-ovi sadrže 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 logièkim nivoom.




Slika 3-12: D flip-flop sa asinhronim reset ulazom:
(a) šematska oznaka, (b) kombinaciona tabela.




S Q
Q R
S R Qn Qn+1
0
0
1
1
0
1
1
0
Q
Q
Q
Q
Q
0
1
nijedef.
(a) (b)
J Q
Q clk
K
J K Qn Qn+1
0
0
1
1
0
1
1
0
Q
Q
Q
Q
Q
0
1
(a) (b)
Q
T Q
Q clk
T Qn Qn+1
0
1
Q
Q
Q
(a) (b)
Q
D Q
Q CLK
R
R CLK D Qn+1
0
1
1
X X
0
1
0
0
1
Qn
1
1
0
(a) (b)
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 41 -
Za konstruisanje sekvencijalnih mreža je moguãe primeniti bilo koji tip flip-flop-a. Tip
primenjenog flip-flop-a utièe na realizaciju kombinacionog dela sekvencijalne mreže. Složenost
kombinacionih mreža se znaèajno smanjuje pri optimalnom izboru tipa flip-flop-a. Nažalost, ne
postoji jednoznaèno pravilo za biranje odgovarajuãeg tipa flip-flop-a i jedino ponavljanjem sinteze
sekvencijalne mreže se može odrediti optimalan izbor. Po potrebi flip-flop se može pretvoriti u
drugi flip-flop dodavanjem potrebne kombinacione mreže. Slika 3-13 prikazuje primere takvih
transformacija.
















Slika 3-13: Transformacija flip-flop-ova: (a) Transformacija RS flip-flop-a u JK flip-flop,
(b) transformacija D flip-flop-a u J-K flip flop, (c) transformacija D flip-flop-a u T flip-flop,
(d) transformacija JK flip-flop-a u T flip-flop.

U današnjoj VLSI tehnologiji više nije presudan broj korišãenih logièkih kapija za
realizaciju kombinacionog dela sekvencijalnih meža. Èak ni minimizacija broja korišãenih flip-flop-
ova više nije bitna pri realizaciji. Mnogo je važnije da se naèin realizacije prilagodi unutrašnjoj
strukturi programabilnog logièkog kola (PLD) i da se dobije što preglednije i pouzdanije rešenje.

3.2. Opis i konstruisanje logièkih automata
Sekvencijalne mreže koje su konstruisane za rešavanje problema u automatici ili u obradi
signala nazivamo logièkim automatima. Obièno pri projektovanju logièkih automata se polazi od
jezièkog opisa problema. Na osnovu toga se nacrta dijagram stanja ili njemu ekvivalentna tabela
stanja koja taèno odslikava ponašanje logièkog automata. Na osnovu kombinacione tabela se
odreðuju jednaèine kombinacione mreže logièkog automata. Povezivanjem dobijene kombinacione
mreže sa odgovarajuãim flip-flop-ovima nastaje kompletna mreža.
Na isti naèin projektuju proizvoðaèi registre opšte namene i brojaèe (MSI kola koja se
serijski proizvode) o kojima ãe biti reèi u poglavljima 3.3 i 3.4. Softveri koji služe za sintezu
digitalnih kola unutar programabilnih logièkih kola takoðe na slièan naèin konstruišu logièke
automate.
3.2.1. Dijagram stanja
Dijagram stanja predstavlja precizan i pregledan naèin opisivanja logièkih automata.
Dijagrami stanja na slici 3-14a prikazuju jedan automat, koji daje logièku jedinicu na Y izlazu kada
su se u dve prethodne periode takt signala redom pojavile kombinacije 00 a zatim 11 na ulazima A i
B. U svim ostalim sluèajevima izlaz je na logièkoj nuli.
Èvorovi grafa obeleženi krugovima odgovaraju pojedinim stanjima automata. Stanja se
kodiraju odgovarajuãim brojem flip-flop-ova. U krugove se upisuju kodovi stanja ili neki jasni
S Q
Q R
CLK
J
K
D Q
Q
CLK
J
K
J Q
Q K
T
CLK
D Q
Q
CLK
T
(a)
(b)
(c)
(d)
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 42 -
nazivi stanja. Linije sa strelicama koje povezuju èvorove predstavljaju prelaze izmeðu stanja. Na
linije se pišu ulazne kombinacije pri kojima se dešavaju date promene stanja.
Dijagram stanja se menja u zavisnosti od tipa sekvencijalne mreže (Mealy-jev ili Moore-
ov model). Kod Mealy-jevog modela na granama grafa se prikazuju vrednosti izlaza koji se javljaju
pri odreðenom prelazu (slika 3-14b), dok kod Moore-ovog modela vrednosti izlaza se dobijaju
dekodiranjem trenutnog stanja i zato se vrednosti izlaza upisuju u krugove koji oznaèavaju stanja
(slika 3-14c). I broj stanja kod navedenih modela može biti razlièit: broj stanja Mealy-jevog modela
za dati automat je dva, a kod Moore-ovog modela tri.






Slika 3-14: (a) Jedna
sekvencijalna mreža, (b)
njen dijagram stanja u
sluèaju Mealy-jevog
modela, (c) dijagram
stanja u sluèaju Moore-
ovog modela.



3.2.2. Tabela stanja
Sledeãa faza sinteze automata je formiranje tabele stanja. Tabela sadrži iste podatke koje
sadrži i dijagram stanja ali u pogodnijoj formi za sintezu mreže. Tabele stanja koje odgovaraju
prethodnom dijagramu stanja (slika 3-14) su prikazane u tabelama 3-1 i 3-2.



Tabela 3-1: Tabela stanja datog automata u
sluèaju Mealy-jevog modela.





Tabela 3-2: Tabela stanja datog automata u sluèaju
Moore-ovog modela.


U tabelu je potrebno upisati sva moguãa stanja sekvencijalne mreže i sve kombinacije
ulaznih signala. Zatim za sve te kombinacije se odreðuju 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 odgovarajuãi kodovi stanja su dati u zagradama. U središnjem delu tabele se nalaze naredna
stanja, koja kod oba modela zavise i od vrednosti ulaznih promenljivih. Zbog toga su iznad
narednih stanja navedene pripadajuãe 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 moguãe kombinacije ulaza. Kod Moore-ovog automata vrednosti izlaza su
Trenutno
stanje
Sledeãe stanje
BA= 00 01 10 11
Izlaz Y
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
stanje
Sledeãe stanje
BA= 00 01 10 11
Izlaz
Y
a (00) b a a a 0
b (01) a a a c 0
c (10) b a a a 1
SEKVENCIJALNA
MREZA
(AUTOMAT)
A
B
CLK
Y
(a)
a
(0)
b
(1)
00/0
11/1
00/0, 01/0, 10/0
01/0
10/0
11/0
(b)
a/0
(00)
b/0
(01)
c/1
(10)
01
10
11
00 11
(c)
00, 01, 10 00
01, 10, 11
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 43 -
jednoznaèno odreðene trenutnim stanjima automata i zbog toga su svi izlazi navedeni u jednoj
koloni.
3.2.3. Kodiranje stanja
Pomoãu n flip-flop-ova teoretski je moguãe kodirati najviše 2
n
razlièitih stanja i zato je i
realizacija složenih automata moguãa sa relativno malim brojem elementarnih memorija. Kod
klasiènog naèina projektovanja sekvencijalnih mreža primenom MSI kola težnja je bila da se koristi
minimalan broja flip-flop-ova. Kao rezultat, ulazne i izlazne kombinacione mreže su postale
komplikovane. Posebnu pažnju treba posvetiti izlaznoj kombinacionoj mreži jer dekodiranje stanja
zahteva puno komponenata.
Kod realizacije sa minimalnim brojem flip-flop-ova nije svejedno kako se kodiraju
pojedina stanja. Dobar izbor koda može znaèajno smanjiti složenost realizacije sekvencijalne mreže
pri èemu se i pouzdanost rada poveãava. Za optimizaciju postoje odreðene sistematizovane metode
ali one ne daju uvek optimalna rešenja. Danas se pod optimizacijom podrazumeva raèunarska
sinteza i simulacija razlièitih izvedbi. O konaènom rešenju se odluèuje posle razmatranja pojedinih
rešenja.
Tipovi korišãenih elementarnih memorija (D, T, JK, RS) takoðe utièu na kompleksnost
mreže koja se realizuje. Za odreðivanje optimalnog tipa flip-flop-a takoðe ne postoji sistematizovani
postupak. Postupak optimizacije je još kompleksniji ako se u okviru istog projekta koriste razlièiti
tipovi flip-flop-ova. U ovom sluèaju se posebno preporuèuje raèunarska sinteza. Softveri za
projektovanje omoguãuju brzo analiziranje razlièitih rešenja što skraãuje vreme pronalaženja
najboljeg rešenja.
Kod savremenih naèina projektovanja primenom PLD kola nije neophodno ili nije
svrsishodno kodirati stanja sa minimalnim brojem memorijskih elemenata. Èesto se primenjuje
rešenje: jedno stanje - jedan memorijski element. Kao rezultat, dobije se veliki broj flip-flop-ova ali
je izbegnut proces dekodiranja stanja.
3.2.4. Jednaèine upravljanja za flip-flop-ove
Kod oba modela automata naredno stanje se odreðuje na osnovu trenutnog stanja i
trenutne vrednosti ulaznih promenljivih. Zadatak projektanta je izrada odgovarajuãih kombinacio-
nih mreža (eksitacione mreže) koje na svojim izlazima daju potrebne ulazne signale za flip-flop-ove.
Pod uticajem tih signala upisuje se odgovarajuãa vrednost u flip-flop pri narednoj uzlaznoj ili
silaznoj ivici takt signala.
Najjednostavnija jednaèina za kombinacione mreže flip-flop-ova se dobija za D flip-flop:
na D ulaz treba dovesti novo (sledeãe) stanje flip-flop-a. Kod drugih flip-flop-ova potrebno je uzeti
u obzir koja kombinacija ulaznog signala može da dovede do željenog stanja na izlazu.
Za konstruisanje ulazne i izlazne kombinacione mreže potrebno je tabelu 3-1 (Mealy-jev
model) svesti na takav oblik da postupak izvoðenja jednaèina date mreže bude što jednostavniji
(tabela 3-3).





Tabela 3-1: Eksitaciona i izlazna kombinaciona tabela Mealy-jevog
automata datog na slici 3-14b.





Tražena eksitaciona jednaèina na osnovu date tabele je:
Qn BA Qn+1=D Y
0 00
01
10
11
1
0
0
0
0
0
0
0
1 00
01
10
11
0
0
0
0
0
0
0
1
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 44 -

A B Q D =

Da bi realizacija kola u složenijim sluèajevima bila jednostavnija, potrebno je izvršiti
minimizaciju odgovarajuãih logièkih funkcija.
Eksitacione i izlazne tabele za Moore-ov
model (slika 3-14c) su date u tabeli 3-4. Na osnovu
tabele, u sluèaju realizacije željenog kola sa D flip-flop-
ovima tražene jednaèine za eksitaciju su:

BA Q Q D 0 1 1 =
A B Q A B Q Q A B Q Q D 0 0 1 0 1 0 = + =





Tabela 3-4: Eksitaciona i izlazna kombinaciona tabela
Moore-ovog automata datog na slici 3-14c.


3.2.5. Formiranje izlaza
Kod Mealy-jevog automata broj promenljivih stanja je manji ali je potrebno dovesti i
ulazne promenljive na izlaznu kombinacionu mrežu. Na osnovu tabele 3-1 oblik izlazne jednaèine
je:
QBA Y = .

Vrednosti izlaznih promenljivih kod Moore-ovog modela zavise samo od trenutnog stanja
mreže. Najjednostavniji sluèaj je kada su izlazi flip-flop-ova ujedno i izlazi samog automata. Ako to
nije sluèaj, izlazni signali se generišu pomoãu odgovarajuãe kombinacione mreže. Ulazi
kombinacione mreže su stanja flip-flop-ova. Na osnovu tabele 3-4 izlazna jednaèina Moore-ovog
automata (slika 3-14c) posle minimizacije je:
0 1Q Q Y = .
3.2.6. Formiranje kompletne sekvencijalne mreže
Crtanje kompletne sekvencijalne mreže se vrši sumiranjem dosadašnjih rezultata.
Memorijski elementi koji se postavljaju prema odabranom kodu, predstavljaju centralni deo mreže.
Na osnovu upravljaèkih jednaèina za flip-flop-ove se crta ulazna kombinaciona mreža. Na kraju,
prema izlaznim jednaèina-ma se formira izlazna kombinaciona mreža. Logièka mreža Mealy-jevog
automata (slika 3-14b) je
prikazana na slici 3-15.
Slièno, odgovarajuãa
logièka šema Moore-ovog
automata (slika 3-14c) je
prikazana na slici 3-16.

Slika 3-15: Logièka mreža
koja realizuje Mealy-jev
automat dat na slici 3-14b.
Q1
n
Q0
n
BA Q1
n+1
=D1, Q0
n+1
=D0 Y
00 00
01
10
11
01
00
00
00
0
0
0
0
01 00
01
10
11
00
00
00
10
0
0
0
0
10 00
01
10
11
01
00
00
00
1
1
1
1
11 00
01
10
11
00
00
00
00
0
0
0
0
D Q
CLK
A
B
Y
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 45 -

Slika 3-16: Logièka mreža koja realizuje Moore-ov automat dat na slici 3-14c.

Ulogu prikazanih sekvencijalnih mreža (praãenje ulaznih sekvenci) može da obavlja i
jedan mikrokontroler koji je programiran na odgovarajuãi naèin. Meðutim, ne treba zaboraviti da su
hardverska rešenja u ovakvim sluèajevima neuporedivo jednostavnija i brzina njihovog rada je
znatno veãa.
3.3. Registri
Registri su sekvencijalne mreže koje služe za privremeno pamãenje male kolièine poda-
taka. Pamãenje podataka obièno vrši niz D flip-flop-ova ili neki drugi tipovi flip-flop-ova ili latch
kola. Upis i èitanje podataka se vrši serijski (bit po bit) ili paralelno (svaki bit istovremeno). Postoje
stacionarni i shift registri. Pored pamãenja, shift registri su u stanju i da pomeraju podatke bit po bit.
3.3.1. Obièni (stacionarni) registri
Na slici 3-17 je prikazana logièka šema stacionarnog registra kapaciteta od n bita. Za
pamãenje se koriste D flip-flop-ovi kojima se upravlja zajednièkim takt (CLK) signalom. Upis se
vrši paralelno pri silaznoj ivici takt signala. Sadržaj flip-flop-ova se može anulirati pomoãu
asinhronih reset ulaza koji su povezani na CLR signal. Èitanje podataka sa izlaza je uvek moguãe,
osim jednog kratkog vremenskog intervala posle upisa, dok izlazi flip-flop-ova ne stignu u novo
stabilno stanje. Ako je potrebno, korišãenjem takvih flip-flop-ova koji poseduju izlaze sa tri stanja,
moguãe je više registara povezati na jednu zajednièku liniju podataka.




Slika 3-17: Logièka šema
stacionarnog registra.




3.3.2. Pomeraèki (shift) registri
Kod shift registara moguãe je preneti sadržaj elementarnih memorija u susednu
memorijsku lokaciju pri aktivnoj ivici takt signala. Pomeranje se može vršiti ili u levom ili u
desnom smeru dok kod univerzalnih pomeraèkih registara smer pomeranja se može zadati
odgovarajuãim upravljaèkim signalom. Pri pomeranju sadržaj prethodnog memorijskog elementa se
D Q
D Q
CLK
Q1
Q0
D1
D0
Y
A
B
D Q
Q
R
D Q
Q
R
D Q
Q
R
D0 D1 Dn-1
CLK
Q0 Q1 Qn-1
CLR
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 46 -
upisuje u naredni, dok sadržaj zadnjeg memorijskog elementa se gubi. Kod složenih pomeraèkih
registara, pored serijskog, postoji i moguãnost paralelnog upisa i èitanja.
Na slici 3-18 je prikazana logièka šema univerzalnog èetvorobitnog pomeraèkog registra.
Smer pomeranja se bira pomoãu R L/ signala. RIN predstavlja serijski ulaz pri pomeranju udesno,
dok pri pomeranju ulevo funkciju serijskog ulaza obavlja signal LIN. Serijski izlaz je QA ili QD u
zavisnosti od smera pomeranja. Èitanje je moguãe obaviti i u paralelnom režimu. Kod ovog rešenja
ne postoji moguãnost paralelnog upisa. Takt (CLK) signal, èija je funkcija sinhronizacija pomeranja
podataka, je zajednièki za sve flip-flop-ove.

Slika 3-21: Logièka šema dvosmernog pomeraèkog registra.
3.3.3. Kružni registri (kružni brojaèi)
Spajanjem izlaza pomeraèkog registra na sopstveni serijski ulaz se dobija kružni registar.
Podatak koji je jednom upisan u registar ãe kružiti sve dok je takt signal prisutan na njegovom
upravljaèkom ulazu. Kako ovaj registar u normalnom režimu rada ne poseduje ulaz za podatke i po
svojoj prirodi generiše ponavljajuãe sekvence, ovo kolo se još naziva i kružni brojaè (slika 3-19).









Slika 3-19: Logièka šema kružnog registra (brojaèa).

U praktiènim primenama za kružni tok podataka potrebno je izvršiti upis odgovarajuãeg
sadržaja u brojaè. Ovo se obièno vrši paralelno. Najèešãe se samo jedan flip-flop setuje i u ostale se
upisuje logièka nula ili obrnuto. Postoje i takva rešenja kod kojih su stanja flip-flop-ova nakon
ukljuèenja proizvoljna, ali posle nekoliko periode takt signala samo jedan flip-flop ostaje u
setovanom stanju dok su svi ostali resetovani. Nakon prelaznog režima rad takvog kružnog brojaèa
je pravilan.
Ako se izlaz zadnjeg flip-flop-a vraãa na serijski ulaz kružnog brojaèa u invertovanom
obliku (slika 3-20a) dobija se Džonsonov kružni registar (brojaè). Nule i jedinice u normalnom
D Q
Q
D Q
Q
D Q
Q
D Q
Q
L/ R
RIN LIN
CLK
QA QB QC QD
D Q D Q D Q D Q
Q0 Q1 Q2 Qn-1
CLK
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 47 -
režimu rada kruže prema redosledu koji je dat u tabeli koja je prikazana na slici 3-20b. U sluèaju n
flip-flop-ova, sekvenca istih brojeva se ponavlja posle 2n periode takt signala. Brojaè ãe uãi u
pravilan režim rada i ako se svi flip-flop-ovi resetuju u trenutku ukljuèenja. Ako se to propusti,
moguãe je da kolo na izlazu generiše pogrešne vrednosti. Raznim povratnim spregama je moguãe
obezbediti pravilno funkcionisanje kola.

Slika 3-20: Jedno moguãe rešenje (a) za logièku šemu Džonsonovog kružnog registra (brojaèa) i (b)
odgovarajuãa tabela stanja.

3.4. Brojaèi
Registri koji pod uticajem upravljaèkih impulsa prolaze kroz unapred odreðena stanja se
nazivaju brojaèima. Upravljaèki signali mogu da potièu iz izvora takt signala ili iz bilo kog drugog
kola koje je u stanju da generiše digitalne signale. Impulsi su obièno periodièni, ali brojaèi mogu da
rade i pod uticajem impulsa koji se pojavljuju u sluèajnim vremenskim trenucima. Pored takt ulaza
pojedini brojaèi imaju i dodatne ulaze kojima se odreðuje naèin brojanja.
Redosled stanja brojaèa može da bude jednak redosledu binarnih brojeva (binarni brojaè),
ali po potrebi je moguãe formirati i proizvoljan redosled. Broj razlièitih stanja kod brojaèa se naziva
moduo brojaèa. Pored memorijskih elemenata brojaèi obièno sadrže i ulaznu kombinacionu mrežu
koja obezbeðuje odgovarajuãe promene stanja u registru koji je centralni deo brojaèa. Obièno,
izlazna kombinaciona mreža koja je svojstvena sekvencijalnim mrežama ne postoji kod brojaèa.
Izlazi memorijskih elemenata su ujedno i izlazi brojaèa. Znaèi, brojaèi su mreže tipa Moore.
Brojaèe je moguãe svrstati u dve kategorije: asinhroni (serijski) i sinhroni (paralelni)
brojaèi.
3.4.1. Asinhroni (serijski) brojaèi
Pri realizaciji asinhronih brojaèa flip-flop-ovi nemaju zajednièki upravljaèki signal, nego
se izlaz prethodnog flip-flop-a veže na takt ulaz narednog flip-flop-a. Na ovaj naèin se kompleksnost
ulazne kombinacione mreže znaèajno smanjuje ili èak postaje suvišan.
Najjednostavnija struktura asinhronog brojaèa se dobija kaskadnom vezom flip-flop-ova
(slika 3-21). Upravljaèki 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, poèetno
stanje brojaèa je moguãe podesiti reset (CLR) signalom koji se istovremeno dovodi na asihnrone
reset ulaze svih flip-flop-ova.




Slika 3-21: Asinhroni brojaè
realizovan T flip-flop-ovima.


Ukoliko korišãeni flip-flop-ovi reaguju na silaznu ivicu takt signala, brojaè ãe brojati
unapred u prironom binarnom kodu. Za sluèaj asinhronog brojaèa prikazanog na slici 3-21
D Q
Q
D Q
Q
D Q
Q
D Q
Q
Q0 Q1 Q2 Q3
CLK
STANJE
0
1
2
3
4
5
6
7
0
Q0 Q1 Q2 Q3
0 0 0 0
1
1 1
0 0 0
1 1 1
1 1 1 1
0 0
0
0 1 1 1
0 0 1 1
1
0
0 0 0
0 0 0
(a) (b)
T Q
Q
R
T Q
Q
R
T Q
Q
R
Q0 Q1 Q2
CLK
CLR
"1" "1" "1"
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 48 -
vremenski dijagrami su dati na slici 3-22. Posmatrajuãi redosled stanja kroz koja brojaè prolazi
(tabela 3-5) pri sukcesivnom delovanju takt signala, može se zakljuèiti da brojaè broji po redosledu
binarnih brojeva. Moduo brojanja je osam za sluèaj tri memorijska elementa. U opštem sluèaju,
pomoãu n memorijskih elemenata moguãe je realizovati brojaè modula 2
n
. Ako je potreban brojaè
unazad, koriste se flip-flop-ovi sa okidanjem na uzlaznu ivicu i na takt ulaz narednog flip-flop-a se
dovodi Qumesto izlaza Q.




Slika 3-22: Vremenski
dijagrami takt signala i
pojedinih izlaza asinhronog
brojaèa.











Tabela 3-5: Redosled stanja trobitnog asinhronog brojaèa.


Na vremenskim dijagramima koji su prikazani na slici 3-22 su zanemarena kašnjenja flip-
flop-ova. Zbog kaskadne veze, pojedina stanja se pojavljuju sa odreðenim vremenom kašnjenja u
odnosu na upravljaèki signal. Ako se snimaju stanja pojedinih flip-flop-ova za vreme prelaznog
procesa, dobijeni rezultat ãe najverovatnije biti pogrešan.
Sa jedne strane, rešenje ovog problema se sastoji u ogranièavanju frekvencije takt signala
(to obezbeðuje dovoljno vremena za išèezavanje hazardnih pojava), dok sa druge strane, išèitavanje
vrednosti je potrebno vršiti neposredno pre pojave narednog upravljaèkog signala. Kada se
asinhroni brojaè koristi kao delitelj frekvencije (npr. na slici 3-21 samo izlaz Q2 se vodi dalje),
frekvencija takt signala je ogranièena samo sa vremenom kašnjenja prvog flip-flop-a.
3.4.2. Sinhroni (paralelni) brojaèi
Kod sinhronih brojaèa takt ulazi pojedinih flip-flop-ova su povezani na zajednièki
upravljaèki signal i tako se postiže da vrednosti izlaza približno u istom trenutku postanu važeãi. Za
promenu stanja flip-flop-ova u odgovarajuãim vremenskim trenucima, neophodna je adekvatna
kombinaciona mreža. Kod binarnih brojaèa (tabela 3-5) vrednost izlaza onog flip-flop-a koji je na
mestu najmanje znaèajnog bita, menja se u svakoj periodi takt signala. Ovo se najlakše realizuje T
flip-flop-om.
Ako se ceo brojaè gradi pomoãu T flip-flop-ova i ako je u datom momentu potrebno
menjati stanje nekog flip-flop-a, tada se na njegov ulaz dovodi logièka jedinica. Posmatrajuãi
binarne brojeve na slici 3-26 može se zakljuèiti da bit veãe težine se setuje samo kada su vrednosti
svih ostalih bitova sa manjim težinama na logièkoj jedinici (npr. posle stanja 0111 sledi stanje
1000). Dekodiranje ovih kombinacija se vrši pomoãu I kapija. Na taj naèin je moguãe formirati
sinhroni binarni brojaè koji je prikazan na slici 3-23. Do istog rezultata se dolazi i opštom metodom
sinteze sekvencijalnih kola (objašnjeno kod logièkih automata).
Q2 Q1 Q0
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
1 2 3 4 5 6 7 8 9
CLK
Q0
Q1
Q2
0 1 2 3 4 5 6 7 0
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 49 -

Slika 3-23: Logièka šema sinhronog binarnog brojaèa.

Ova šema je samo dvostepena: posle aktivne ivice takt signala potrebno je da proðe samo
jedno kašnjenje I kola i flip-flop-a kako bi vrednosti izlaza flip-flop-ova postale važeãi.
Odgovarajuãom promenom ulazne kombinacione mreže kod sinhronih brojaèa moguãe je
postiãi brojanje unazad. Kod brojaèa proizvedenih u MSI tehnologiji postoje i dvosmerna rešenja:
kod ovih kola postoje dve posebne ulazne kombinacione mreže za oba sluèaja (brojanje napred i
nazad) i pomoãu jednog kontrolnog signala se odreðuje koja ãe od te dve mreže biti aktivna.
Èesto se javlja potreba za poveãanjem modula brojanja. MSI kola za brojanje obièno
sadrže i odgovarajuãe izlaze (prenos, engl.: carry) i ulaze za kaskadno vezivanje pojedinih
brojaèkih modula. Prethodni modul, pomoãu bita prenosa obaveštava naredni modul o tome da je
stigao do najveãeg broja i da naredni stepen mora da inkrementira vrednost sopstvenog registra.
Moduo brojanja brojaèa sastavljenog od n memorijskih elemenata je moguãe smanjiti sa
2
n
. Za to postoje dva naèina. Prvi naèin je primenom metode koja je prikazana kod projektovanja
logièkih automata. Taj postupak se sastoji od formiranja dijagrama stanja i tabele stanja. Kod druge
metode polazi se od gotovog brojaèa modula 2
n
, koji na uobièajeni naèin funkcioniše do
predviðenog 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
sluèaju realizovani brojaè je modula deset jer se posle devetog stanja (1001) vrši paralelni upis
nultih vrednosti preko linija (D0...D3).






Slika 3-24: Logièka šema brojaèa modula deset
dobijena skraãivanjem modula brojanja.
J Q
Q
K
"1"
J Q
Q
K
J Q
Q
K
J Q
Q
K
CLK
Q0 Q1 Q2 Q3
D0
D1
D2
D3
Q0
Q1
Q2
Q3
LOAD
CLK CETVOROBITNI
BINARNI
BROJAC
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 50 -

4. Složene mreže
Digitalna kola koja se razmatraju u nastavku se nazivaju složenim mrežama jer sadrže
kako kombinacione tako i sekvencijalne elemente. Memorije su po prirodi sekvencijalne mreže kod
kojih se upravljanje realizuje kombinacionim mrežama. Aritmetièka kola se prvenstveno realizuju
kombinacionim mrežama pri èemu se za njihovo upravljanje koriste logièki automati. D/A i A/D
pretvaraèi pored obe vrste (kombinacionih i sekvencijalnih) digitalnih elemenata sadrže i analogna
kola.
4.1. Memorije
Memorije su digitalna kola koja služe za trajno ili privremeno pamãenje velike kolièine
podataka. Uloga registara (poglavlje 3.3) je takoðe pamãenje podataka, ali pamãenje velikih
kolièina podataka zahteva efikasniju organizaciju. Danas su ureðaji èija je osnovna namena
pamãenje podataka veoma raznovrsni (tu spadaju i magnetni- i optièki mediji). Ovde se razmatraju
samo poluprovodnièke memorije.
Za sve memorije važi blok dijagram koji je prikazan na slici 4-1. Pomoãu adresnih linija
(na šemi oznaèene sa C) se odreðuje elementarna ãelija memorije sa kojom se želi komunicirati.
Preko upravljaèkih ulaza V se odreðuje svrha komunikacije: upis, èitanje ili dobijanje povratnih
informacija o stanju memorije (npr. zauzetost). Pomoãu linija A se prosleðuju podaci od drugog
kola ka memoriji ili obrnuto.






Slika 4-1: Blok šema memorijskog kola.
4.1.1. Podela i osobine memorijskih kola
Podelu memorija koje sadrže mnoštvo razlièitih hardverskih rešenja je moguãe izvršiti po
razlièitim principima:
- Pristup memorijama onih ureðaja koji se softverski programiraju treba da bude ostvareno u
što kraãem vremenu i zato se tada primenjuju brze memorije, sa moguãnošãu promene
podataka u njima. Kod ovih ureðaja istovremeno su potrebne i memorije u kojima upisani
podatak ostaje permanentno i služe za pamãenje osnovnih programa.
- Naèin pamãenja podataka u memorijskim ãelijama može biti statièan ili dinamièan. Statièke
memorijske ãelije su zapravo flip-flop-ovi (kao i kod registara), koji se na odgovarajuãi
naèin organizuju kako bi pristup pojedinim ãelijama bio jednostavniji. Statièke ãelije pamte
podatke sve dok se ne izvrši novi upis u njih i dok postoji napajanje. Postoje i takva rešenja
gde memorije poseduju ugraðene Li-ionske ãelije zahvaljujuãi kojima su sposobne da pamte
svoj sadržaj više godina bez spoljašnjeg napajanja.
- Kod dinamièkih ãelija se koriste ulazne kapacitivnosti pojedinih mosfetova za pamãenje
podataka. Prilikom upisa parazitna kapacitivnost se puni ili prazni u zavisnosti od toga da li
je potrebno pamtiti logièku nulu ili jedinicu. Èitanje se vrši proverom stanja kanala mosfeta:
provodno stanje kanala oznaèava upisanu logièku jedinicu dok kanal u zakoèenom stanju
logièku nulu. Naelektrisanja skladištena u kapacitivnosti polako cure i zbog toga upisani
podaci bi nestali posle odreðenog vremena. Rešenje ovog problema je periodièno
osvežavanje podataka. Projektovana su posebna kola za upravljanje procesom osvežavanja
koji je slièan procesu èitanja.
- Identifikacija ãelije sa kojom se želi komunicirati se obièno vrši pomoãu adresiranja.
Adresiranje bilo koje memorijske lokacije se naziva još i neposrednim pristupom (engl. :
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 51 -
random access). Pomoãu adresiranja moguãe je pristupiti bilo kojoj memorijskoj lokaciji za
približno isto vreme ali je cena toga prilièno složena mreža za adresiranje. Znaèajno se
smanjuje kompleksnost memorije ako se podaci serijski upisuju odnosno išèitavaju. Ove
memorije poseduju serijski pristup èiji je nedostatak da se vreme pristupa poveãava sa
poveãanjem adrese tražene memorijske lokacije.
- Veãina današnjih memorijskih kola se proizvode u CMOS tehnologiji ali postoje i kola
izraðena u bipolarnoj tehnologiji. Velièina podatka èemu se može pristupiti u jednom
koraku (jedno adresiranje ili inkrementiranje adrese) je jedan bit ili više bita (npr. osam ili
šesnaest).
- Najvažniji parametri memorijskih kola, pored vrednosti napona napajanja i logièkih nivoa,
su kapacitet (broj memorijskih ãelija) i brzina (upis, èitanje i brisanje).

Postoje razni tipovi memorijskih kola :
- RAM (engl.:random access memory) memorije su memorije sa neposrednim pristupom i
koriste se kao operativne memorije ureðaja jer poseduju brz pristup memorijskim
lokacijama (obièno nekoliko desetina ns). Proizvode se u statièkoj i u dinamièkoj izvedbi.
Dinamièke RAM ãelije su jeftinije od statièkih jer je njihova gustina pakovanja na
silicijumskoj ploèici znatno veãa. Sa druge strane, dinamièke RAM ãelije zahtevaju
spoljašnja kola za osvežavanje sadržaja memorijskih ãelija što komplikuje proces
projektovanja.
- ROM (engl.: read-only memory) memorije su takve memorije èiji se sadržaj ne može
menjati ali ga je moguãe neogranièen broj puta èitati. Analizom se može utvrditi da su ROM
memorije zapravo kombinacione mreže sastavljene od kaskadne veze dekodera i kodera.
Dekoder vrši dekodiranje vrednosti ulaznih adresnih linija a koder formira odgovarajuãe
izlazne vrednosti. Osnovni programi ureðaja se obièno èuvaju u ovom tipu memorije. Upis
sadržaja u memoriju mogu da vrše proizvoðaèi (engl.: mask programmable ROM) ili
korisnici (OTP ROM – engl.: one-time programmable ROM). ROM-ovi se primenjuju samo
u serijskoj proizvodnji jer je moguãnost jednostrukog programiranja u fazi razvoja
nedovoljna.
- EPROM (engl.: electrically programmable ROM) je memorija sa moguãnošãu višestrukog
programiranja pomoãu odgovarajuãih upravljaèkih signala. Pre promene sadržaja EPROM-a
neophodno je izbrisati prethodno upisane podatke pomoãu ultraljubièastih zraka. Ova kola
su prepoznatljiva po prozoru koji se nalazi na gornjoj strani kuãišta gde ulaze ultraljubièasti
zraci tokom brisanja. Upis se vrši na slièan naèin kao i kod dinamièkih memorija sa tom
razlikom da naelektrisanja koja menjaju stanje kanala mosfeta su smeštena tako da ostaju
prisutna i nakon više godina. EPROM se može mnogo puta reprogramirati, ali se mora uzeti
u obzir da proces brisanja traje više minuta što èesto usporava razvoj odnosno proizvodnju
što je dovelo do pada popularnosti EPROM-a.
- Brisanje i upis kod EEPROM-a (engl.: electrically erasable PROM) se vrši pomoãu
elektriènih signala i zato one ne sadrže prozor na svojim kuãištima za propuštanje
ultraljubièastih zraka. Podrazumeva se da je brzina brisanja i upisa znaèajno manja u odnosu
na brzinu brisanja i upisa kod RAM-a. EEPROM-i se èesto proizvode sa serijskim
komunikacionim interfejsom. Ako nije potrebna velika brzina prenosa podataka, razumno je
koristiti serijsku komunikaciju jer znaèajno smanjuje kuãište pošto se koristi samo jedna
linija za podatke.
- Pod nazivom flash EEPROM-i ili jednostavnije flash memorije se podrazumevaju takva kola
koja se realativno brzo mogu brisati elektriènim signalima (red velièine je sekunda). Posle
operacije brisanja moguãe je izvšiti novi upis ali za razliku od EPROM-a i EEPROM-a, one
ne zahtevaju posebno napajanje u toku programiranja odnosno upravljaèke signale
poveãanih amplituda. Operacije brisanja i upisa mogu da vrše i mikrokontroleri koji
upravljaju radom datog sistema. Obièno postoje odreðena ogranièenja pri brisanju odnosno
dozvoljava se samo brisanje po blokovima. Flash memorije se mogu koristiti kao
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 52 -
programske memorije jer je njihova brzina èitanja velika ali ipak ne mogu zameniti RAM
memorije jer je njihovo vreme upisa veliko. Meðutim, trajno pamãenje podataka nakon
iskljuèenja napajanja predstavlja veliku prednost.
4.1.2. Unutrašnja struktura memorijskih kola
Kao što je spomenuto, pamãenje velike kolièine podataka zahteva odreðenu organizaciju
unutar memorije. Struktura onih memorija koje rade na principu adresiranja je prikazana na slici 4-
2.










Slika 4-2: Unutrašnja struktura
memorijskog kola.





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. Složenost dekodera veoma brzo raste (kvadratno) sa poveãanjem broja
memorijskih ãelija. Zato se elemetarne memorije postavljaju u matrièni oblik umesto rednog
(linearnog) rasporeda. U tom sluèaju, adresiranje se vrši pomoãu dva manja dekodera (dekoderi
reda i kolone). Ukupan broj korišãenih logièkih kola za realizaciju ta dva dekodera je znaèajno
manji nego u sluèaju jednog dekodera. Ovaj pristup podrazumeva postojanje dva adresna ulaza za
svaku memorijsku ãeliju. Zbog težnje za što manjim kuãištima, adresne linije dinamièkih memorija
velikih kapaciteta se multipleksiraju: posebno se uèitavaju i pamte adrese kolona i redova.
Unos podataka odnosno njihovo išèitavanje se vrši preko kola za spregu za podatke
(bafer). Obièno se iste linije podataka koriste za komunikaciju u oba smera. Razlog za to je
uprošãavanje kuãišta. Prilikom upisa, podaci moraju biti stabilni veã neko vreme neposredno pre
upisa. Kod išèitavanja neophodno je uzeti u obzir kašnjenje koje postoji izmeðu adresiranja i pojave
podataka na izlazu. Kataloški podaci sadrže konkretne vrednosti ovih kašnjenja.
Uloga upravljaèke jedinice je generisanje odgovarajuãih upravljaèkih signala prilikom
upisa, èitanja ili brisanja za selektovanu memorijsku ãeliju. Inicijalizacija upisa se vrši pomoãu WE
(engl.: write enable) signala koji se šalje upravljaèkoj jedinici memorije. Za èitanje je potrebno
aktivirati signal OE (engl.: output enable). Upravljaèka jedinica poseduje još jedan ulaz sa nazivom
CS (engl.: chip select) pomoãu kojeg je moguãe zaustaviti ili pokrenuti rad celog kola. Uloga ovog
ulaza je da omoguãi proširivanje kapaciteta memorije.
4.1.3. Proširivanje kapaciteta
Kapacitet memorije dostupan unutar jednog kuãišta je èesto je nedovoljan. Ili je potrebno
poveãati broj bitova (velièinu reèi) koji se istovremeno išèitavaju ili broj reèi u memoriji koji se
može adresirati. Proširivanje se postiže korišãenjem više memorijskih kola koja se povezuju na
odgovarajuãi naèin na zajednièkoj štampanoj ploèi.
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 53 -
Proširivanje dužine reèi je jednostavniji zadatak: memorijska kola se poreðaju jedan pored
drugog i adresne i upravljaèke linije sa identiènim oznakama se povezuju (slika 4-3). U konkretnom
sluèaju se radi o ROM memorijama i funkcija jedinog upravljaèkog signala je otvaranje njihovih
izlaza. Izlazne linije podataka se mogu posmatrati kao deo jedne zajednièke magistrale podataka.







Slika 4-3: Naèin proširivanje dužine reèi
pri povezivanju ROM-ova.




Poveãanje broja adresabilnih memorijskih reèi se postiže povezivanjem više memorijskih
kola pri èemu je potrebno dodatno spoljašnje kolo (dekoder) koje naizmenièno aktivira pojedina
memorijska kola (slika 4-4). Linije podataka pojedinih memorijskih kola se spajaju na zajednièku
magistralu podataka. Deo adresnih linija je takoðe zajednièki, dok se ostatak vodi na dekoder koji
odluèuje o tome koje kolo ãe se aktivirati u datom trenutku. U prikazanom sluèaju (povezivanje
ROM-ova), uloga dekodera je generisanje signala dozvole pojedinim memorijskim kolima. Kod
RAM-ova su signali WE i OE zajednièki za sva kola, dok su signali dozvole (CS) jedinstveni za
svaku memoriju i generiše ih spoljašnji dekoder.















Slika 4-4: Poveãanje broja adresabilnih memorijskih reèi odgovarajuãom vezom memorijskih kola.

4.2. Aritmetièke jedinice
Prvi složeniji digitalni ureðaji su bili raèunari koji su razvijeni za izvršavanje masovnih i
komplikovanih proraèuna u kratkom vremenskom intervalu. Glavni zadaci današnjih raèunara su
ureðivanje i pamãenje podataka ali se i dalje znaèajni resursi posveãuju proraèunima.
Aritmetièke jedinice saèinjavaju osnovu proraèuna u raèunarima. Prvenstveno je reè o
kombinacionim mrežama, koje vrednosti na ulazima posmatraju kao binarne brojeve i pomoãu
odgovarajuãih mreža formiraju rezultat željene aritmetièke operacije. U nastavku se razmatraju
jednostavna kola za sabiranje, množenje i aritmetièki komparatori.
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 54 -
4.2.1. Sabiraèi
Osnovna kola u binarnoj aritmetici su sabiraèi. Operacija oduzimanja se realizuje sa-
biranjem u drugom komplementu. Operacija množenja se èesto izvodi korišãenjem sabiraèkih kola.
Osnovnu jedinicu složenijih sabiraèa èine polusabiraèi, koji sabiraju dva jednobitna
binarna broja prema tabeli koja je prikazana na slici 4-5a. Rezultat sabiranja u decimalnom brojnom
sistemu može biti 0, 1 ili 2. Najmanje znaèajan bit u rezultatu predstavlja zbir sabiranja (s
f
) dok je
najznaèajniji bit (c – engl.: carry) predstavlja prenos i formira ulaz za sledeãi stepen.







Slika 4-5: (a) Kombinaciona tabela polusabiraèa i (b)
njegova logièka šema.



Jednaèine koje se dobiju na osnovu prethodne tabele su:

b a b a b a s
f
© = + =
ab c = .

Na osnovu ovih jednaèina je nacrtana šema polusabiraèa koja je prikazana na slici 4-5b.
Nedostatak polusabiraèa je da se ne mogu povezati u kaskadu kako bi sabirali višebitne brojeve. Za
ovo je potrebno rešiti sabiranje bita prenosa iz prethodnog polusabiraèa sa bitovima sledeãeg
polusabiraèa. Na ovaj naèin se dobija potpuni sabiraè za koji važe sledeãe jednaèine:


( ) ab c b a c
c b a s
i o
i
+ © =
© © =


Logièka šema potpunog sabiraèa dobijena na osnovu prethodnih jednaèina je prikazana na
slici 4-6a, a njegova šematska oznaka koja ãe se u nastavku koristiti je data na slici 4-6b.


Slika 4-6: (a) Logièka šema potpunog sabiraèa i (b)njegova šematska oznaka.

Kaskadnom vezom potpunih sabiraèa na naèin koji je prikazan na slici 4-7 moguãe je
sabiranje višebitnih brojeva. Formiranje zbira kod date mreže se vrši paralelno, s tim da se bitovi
(b) (a)
0
a
1
b
1
0
s
1
f
0
c
0
0
1
a
0
b
1
c
1
s
0
f
0 0
1
a
b
c
i
c
o
s
b a c
i
c
o
s
(a) (b)
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 55 -
prenosa prostiru serijski kroz pojedine module sabiraèa što znaèajno usporava rad kola. Postoje kola
koja pomoãu dvostepene logièke mreže odreðuju da li se može oèekivati bit prenosa kod nekog bita.
Takvo rešenje znaèajno ubrzava rad sabiraèa.




Slika 4-7: Sabiranje dva
èetvorobitna broja kaskadnom
vezom potpunih sabiraèa.

4.2.2. Množaèi
Digitalni množaèi se mogu realizovati na više naèina. Množenje se može svesti na uzasto-
pno sabiranje: prvi množilac se množi sa pojedinaènim bitovima drugog množioca i dobijeni
meðurezultati se sabiraju. Ovakav množaè se rešava sekvencijalnom mrežom koja pomoãu jednog
logièkog automata usmerava tok podataka izmeðu registara.
Moguãe je konstruisati množaè i primenom kombinacione mreže. U ovom sluèaju
neophodno je formirati takvu kombinacionu tabelu u kojoj su sve moguãe varijacije množioca uzete
u obzir. Strukture množaèa koji su formirani pomoãu sekvencijalnih mreža su jednostavnije (sastoje
se od manjeg broja logièkih kapija), ali su znatno sporiji od množaèa realizovanih pomoãu
kombinacionih mreža jer se rezultat množenja dobija tek nakon više koraka.
Moguãe je konstruisati dvobitni množaè na bazi kombinacionih mreža i bez odreðivanja
njihove kombinacione tabele (slika 4-8). Vrednost najmanje znaèajnog bita A
0
se množi sa ciframa
(bitovima) broja B pomoãu dva I kola. Najmanje znaèajan bit (C
0
) meðurezultata je ujedno i najma-
nje znaèajan bit množenja. Sledeãi znaèajniji bit množenja (C
1
) se dobija pomoãu jednog polusabi-
raèa u koji ulazi bit A
1
i najmanje znaèajan bit broja B. Najznaèajnije bitove množenja (C
2
i C
3
) for-
mira drugi polusabiraè koji sabira eventualni bit prenosa iz prvog sabiranja i logièki proizvod A
1
B
1
.
Ispravnost navedenog postupka dokazuje pismeno množenje koje je navedeno pored logièke šeme.





















Slika 4-8: Kombinaciona mreža koja množi dva dvobitna broja.

b a c
i
c
o
s
b a c
i
c
o
s
b a c
i
c
o
s
b a c
i
c
o
s
s0 s1 s2 s3
a0 a1 b0 b1 b2 b3 a2 a3
s4
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 56 -
Realizacija digitalnih kola za množenje brojeva od više bita zahteva sve veãi broj logièkih
kapija. Rešenje množaèa za veãe binarne brojeve je u primeni ROM-a. ROM kapaciteta 256x8 bita
(slika 4-9) koji je na odgovarajuãi naèin programiran, može da obavlja funkciju množaèa za dva
èetvorobitna broja. Kada se množioci (A i B) spoje na odgovarajuãe adresne linije, išèita se sadržaj
ROM-a što se može smatrati kao jedna tabela koja sadrži sve moguãe vrednosti proizvoda (P).







Slika 4-9: Realizacija množaèa sa ROM-om.



U VLSI tehnologiji se realizuju 16x16 bitni ili još veãi množaèi u formi kombinacionih
mreža kao sastavni delovi mikroprocesora.
Kod množaèa koji se realizuju sekvencijalnim mrežama potrebno je skrenuti pažnju na
dva osnovna principa. Logièka mreža koja je prikazana na slici 4-10 pod uticajem START signala
briše sadržaj akumulatora, u stacionarni registar upisuje prvog množioca, zatim upisuje drugi mno-
žilac u programabilni brojaè. Pod uticajem takt signala brojaè broji unazad dok akumulacioni sabi-
raè sabira svaki put aktuelni sadržaj akumulatora sa množiocem. Proces traje sve dok brojaè ne stiže
do nule. U trenutku kada brojaè dostiže vrednost nula, zahvaljujuãi sukcesivnom sabiranju, u
akumulatoru se nalazi traženi proizvod.



Slika 4-10: Množenje realizovano sukcesivnim sabiranjem.

Drugi osnovni princip se zasniva na proceduri ruènog množenja bit po bit (slika 4-11). Na
poèetku procesa prvi množilac se smešta u stacionarni registar a drugi množilac u pomeraèki
registar. Niz I kola vrši množenje sa pojedinim bitovima drugog množioca. Sabiraè, posle
pomeranja, sabira sopstveni sadržaj sa meðurezultatom. Množenje je završeno kada je svaki bit
izašao iz pomeraèkog registra.


A0
A1
A2
A3
A4
A5
A6
A7
D0
D1
D2
D3
D4
D5
D6
D7
ROM
256x8 bit
b0
b1
b2
b3
a0
a1
a2
a3
B
A
p0
p1
p2
p3
p4
p5
p6
p7
P
PROGRAMABILNI BROJAC
STACIONARNI REGISTAR
AKUMULIRAJUCI SABIRAC
LOAD
D0 D1 D2 Dj-1 D0 D1 D2 Dk-1
CLR
Q0 Q1 Q2 Qj-1
LOAD
DETEKTORNULE
CLK
START
a0 a1 a2 b0 b1 b2 b a
p p0 p1 p2
j+k-1
k-1 j-1
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 57 -




Slika 4-11: Sekvencijalna mreža koja realizuje množenje bit po bit.
4.2.3. Aritmetièki komparatori
Uporeðivanje dva binarna broja je zadatak koji se èesto javlja u digitalnim sistemima.
Naziv kola koje vrši uporeðivanje je (aritmetièki) komparator. Rezultat komparacije je jednakost
dva broja, ali operaciju komparacije je moguãe proširiti i na odreðivanje relacije koji je broj veãi ili
manji u sluèaju nejednakosti. U nastavku se razmatra samo ovaj, složeniji komparator koji se naziva
univerzalni komparator.
Komparacija dva jednobitna broja se vrši prema kombinacionoj tabeli koja je prikazana na
slici 4-12a. Izlazne promenljive se formiraju prema sledeãim jednaèinama:

b a AGTB =
b a b a ab AEQB © = + =
b a ALTB = .

Vrednost premenljive AGTB (engl.: greater then) je jednak jedinici samo ako je b a > ,
AEQB (engl.: equal) je jedinica ako je b a = i vrednost ALTB (engl.: less then) je jedinica ako
je b a < . Logièka šema univerzalnog komparatora koja je realizovana na osnovu prethodnih
jednaèina je data na slici 4-12b.



POMERACKI REGISTAR
STACIONARNI REGISTAR
SABIRAC
LOAD
D D D D
D D D D
CLR
LOAD
CLK
START
a a a
b b b b
a
p p p
2n-1
n-1
n-1
Sout
Q Q Q 0 1 2
0 1 2
n-1 0 1 2
n-1 0 n-2
n 2n-2
POMERACKI REGISTAR
D D D D
Sout
p p p
2n-1 n 2n-2
START
CLK
n-1 0 1 2
p p p
n-1 0 n-2
POMERACKI REGISTAR
CLK
Sin
0 1 2 n-1
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 58 -








(a) (b)

Slika 4-12: (a) Kombinaciona tabela jednobitnog univerzalnog komparatora i (b) njegova logièka šema.

Krajnji cilj u vezi komparatora je projektovanje takvih kola koja vrše komparaciju
višebitnih brojeva. Teoretski je moguãe napisati kombinacionu tabelu za višebitne komparatore na
naèin koji je prikazan na slici 4-12a i na osnovu toga izvršiti sintezu odgovarajuãe mreže.
Uporeðivanje bit po bit je meðutim mnogo svrsishodnije i zbog toga je neophodno izmeniti mrežu,
koja je prikazana na slici 4-12b, tako da je moguãe izvršiti kaskadno povezanje pojedinih stepena.
Naèin kaskadnog povezanja jednobitnih komparatora je prikazan na slici 4-13. Smanjena je brzina
komparacije ali i složenost kola.


Slika 4-13: Kaskadno povezivanje aritmetièkih komparatora.

Prema slici 4-14, uporeðivanje se može vršiti serijskim postupkom primenom
odgovarajuãe sekvencijalne mreže. Vrednosti koje su upisane u registre se pomeraju korak po korak
i dovode na ulaz jednobitnog komparatora. Uporeðivanje je svrsishodno poèeti od bita najveãe
binarne težine. Èim se uoèi razlika kod nekog bita, izlazi A>B odnosno A<B se mogu trenutno
aktivirati. Sa druge strane, jednakost se može ustanoviti samo kada su veã svi bitovi provereni.
















Slika 4-14: Logièka šema serijskog aritmetièkog komparatora.

A B AGTB AEQB ALTB
0 0 0 1 0
0 1 0 0 1
1 0 1 0 0
1 1 0 1 0
a
b
AGTB
ALTB
AEQB
KOMPARATOR
JEDNOBITNI
GTI
EQI
LTI
GTO
EQO
LTO
a0 b0
KOMPARATOR
JEDNOBITNI
GTI
EQI
LTI
GTO
EQO
LTO
a1 b1
KOMPARATOR
JEDNOBITNI
GTI
EQI
LTI
GTO
EQO
LTO
a b
n-1 n-1
AGTB
AEQB
ALTB
"1"
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 59 -
4.3. D/A konvertori
Kod rešavanja razlièitih tehnièkih problema èesto je potrebno pretvoriti digitalne signale u
analogne. Pri digitalno-analognoj (D/A) konverziji rezultat je napon koji je srazmeran datom broju.
4.3.1. Naèin funkcionisanja
D/A konvertor svakom ulaznom broju dodeljuje jedan napon diskretne vrednosti. Obièno
su moguãe vrednosti napona linearno rasporeðene po nekoj skali. Broj razlièitih vrednosti a time i
rezolucija skale zavisi od broja kodnih reèi u datom kodnom sistemu. Obièno se koristi prirodni
binarni kod i tako pomoãu koda velièine n bita moguãe je definisati 2
n
razlièitih izlaznih vrednosti
za napon. Šematska oznaka i prenosna karakteristika trobitnog D/A konvertora su prikazane na slici
4-15. Broj bitova u praksi je èesto mnogo veãi npr. 8, 10, 12 ili još veãi.














Slika 4-15: (a) Šematska oznaka D/A konvertora i (b) njegova prenosna karakteristika.

D/A konvertor generiše izlazni napon deljenjem iz odgovarajuãeg osnovnog signala
(referentnog napona). Uslov preciznog pretvaranja je taèan i stabilan osnovni signal a takoðe i
deljenje mora biti bez greške.
4.3.2. Struktura
Centralni deo D/A konvertora je jedna otpornièka mreža (slika 4-16) èija je uloga deljenje
osnovnog signala. Odnos deljenja se podešava pomoãu analognih prekidaèa. Upravljanje
prekidaèima mogu direktno da vrše bitovi ulaznog broja ali se može desiti da za dobijanje taènog
rezultata je neophodno izvršiti konverziju tog broja u neki drugi kodni sistem. Izlazni signal
otpornièke mreže je moguãe direktno koristiti ali se obièno pre toga propušta kroz stepene za
pojaèavanje i filtraciju.











Slika 4-16: Blok šema digitalno/analognog konvertora.

Slike od 4-17 do 4-20 prikazuju karakteristiène rasporede otpornièkih mreža i prekidaèa.
Otpornièka mreža kod takozvanog direktnog pretvaraèa (slika 4-17) se sastoji od redne veze
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 60 -
otpornika istih vrednosti. Svaka moguãa vrednost diskretnog napona je na raspolaganju u taèkama
spajanja dva otpornika. Od svih prekidaèa, istovremeno je samo jedan ukljuèen, koji se odreðuje na
osnovu ulazne kodne reèi i tako se izabrana vrednost napona propušta na izlaz (U
K
). Neophodo
birati takav kodni sistem kod kojeg se u svakoj kodnoj reèi nalazi samo jedna jedinica ili se ovaj
problem rešava uvoðenjem dekodera ili kodnog pretvaraèa. Struktura mreže je jednostavna ali se pri
velikoj rezoluciji sastoji od velikog broja prekidaèa i otpornika velike taènosti èija je realizacija
skupa.




Slika 4-17: Principska šema direktnog
D/A kovertora.


Šema èetvorobitnog D/A konvertora sa težinskom otpornièkom mrežom je prikazana na
slici 4-18. Struje koje prolaze kroz pojedine otpornike se sabiraju pomoãu operacionog pojaèavaèa i
na taj naèin se formira diskretni izlazni napon koji odgovara ulazoj kodnoj reèi:
) 2 ... 2 2 2 (
2
1
1
1
2
2
1
1
0
0
÷
÷
+ + + + · · ÷ =
n
n
n REF f O
Q Q Q Q
R
V R V
Promenljive Q
i
su vrednosti pojedinih bitova od ulazne kodne reèi. Najveãu teškoãu kod ovog
rešenja predstavlja realizacija težinskih otpornika sa taènim vrednostima. U integrisanoj tehnici je
posebno teško realizovati otpornike koji imaju veoma male ili veoma velike vrednosti otpornosti sa
velikom taènošãu. Problem je i to da vrednosti struja koje prolaze kroz pojedine prekidaèe su veoma
razlièite i zbog toga su i padovi napona na prekidaèima razlièiti što doprinosi grešci u konverziji.









Slika 4-18: D/A konvertor realizovan
težinskom otpornièkom mrežom.



U integrisanoj tehnici najveãi uspeh su doživeli oni D/A konvertori èija se struktura
zasniva na lestvièastoj otpornièkoj mreži jer je potrebno precizno reprodukovati samo dve vrednosti
otpornosti R i 2R (slika 4-19). Povezivanjem odreðenih prekidaèa na referentni potencijal se
formiraju pojedinaène komponente izlazne struje koja je na desnoj strani šeme oznaèena sa I.
Najveãa komponenta struje se dobija ukljuèenjem desnog prekidaèa i ta vrednost se prepolovljava
kako se kreãe ulevo. Konaèna formula za struju I je:

) 2 2 2 ... 2 2 (
2
1
6
0
0
1
1
2
2
2
2
1
1
1
Q Q Q Q Q
R
V
I
n
n
n
n
n
REF
+ + + + + · · =
÷
÷
÷
÷
÷


gde su Q
i
bitovi ulazne kodne reèi. Prema tome, velièina izlazne struje je i u ovom sluèaju
srazmerna ulaznoj kodnoj reèi. Ovu struju je moguãe direktno koristiti kao izlazni signal ili ako je
potrebno, moguãe ju je pretvoriti u napon pomoãu jednog operacionog pojaèavaèa.
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 61 -







Slika 4-19: D/A konvertor realizovan
lestvièastom otpornièkom mrežom R-
2R.


Na slici 4-20 je prikazano rešenje za realizaciju D/A konvertora koje sadrži najmanji broj
komponenata. Prekidaè K se periodièno prebacuje u levi i desni položaj. Upravljanje prekidaèem se
vrši tako da je odnos vremena za koje je prekidaè u levom položaju i periode ukljuèivanja identièan
sa odnosom trenutne vrednosti ulaznog kodiranog broja i njegove maksimalne vrednosti (ovo se
naziva impulsno-širinskom modulacijom). Posle odgovarajuãeg filtriranja (koje vrši RC èlan)
vrednost izlaznog napona (srednja vrednost impulsa) ãe biti proporcionalna vrednosti ulaznog broja.



Slika 4-20: D/A konvertor koji radi na
principu impulsno-širinske modulacije.

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 taènost pretvaranja. Pretvaraèe je neophodno tako konstruisati da
njihova prenosna funkcija bude monotona. Na osnovu prethodnih pretpostavki se zakljuèuje da je
greška konverzije uvek manja od napona koji odgovara bitu najmanje težine.
Za uspostavljanje stabilnog izlaznog napona je potrebno odreðeno ovreme. Kod veãine
pretvaraèa ovo vreme je reda ìs ili ns, dok kod impulsno-širinskih pretvaraèa je znaèajno veãe jer je
vremenska konstanta RC èlana nekoliko puta veãa od periode prekidanja koja je veã sama po sebi
prilièno dugaèka.
4.4. A/D konvertori
Kada je potrebno analogne signale (vrednost napona ili neke druge kontinualne velièine) u
digitalnoj formi zapamtiti, obraditi, poslati, prikazati itd., neophodno je prethodno izvršiti analogno-
digitalnu konverziju. Uzorku analognog signala se prilikom koverzije dodeljuje odgovarajuãi broj iz
korišãenog kodnog sistema.
4.4.1. Princip rada
Kod A/D konverzije potrebno je rešiti 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 završi pre uzimanja narednog.
Drugi zadatak je uporeðivanje uzorka sa vrednostima na jednoj diskretnoj skali. Kao
rezultat uporeðivanja, vrednost uzorka se zamenjuje jednim brojem sa ove skale koji je najbliži po
vrednosti uzorku. Ovaj proces se naziva diskretizacija po amplitudi.
Zadnja faza konverzije je formiranje izlaznog koda koji odgovara diskretizovanoj vred-
nosti. Ovaj proces se obavlja prema unapred definisanoj prenosnoj karakteristici A/D konvertora
(slika 4-21).
2R R R
2R 2R 2R
R
2R
R
2R
2R I
Vref
Q0 Q1 Q2 Qn-2 Qn-1
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 62 -






Slika 4-21: Prenosna karakteristika trobitnog A/D konvertora.



4.4.2. Struktura
Postoje tri razlièita rešenja za današnje A/D konvertore: direktni (engl.: flash) tip, rešenje
sa postepenim približavanjem (sukcesivnom aproksimacijom) i sa postupkom brojanja.
Direktni D/A konvertor u sluèaju n-bitnih kodova sadrži 2
n
-1 naponskih komparatora
(slika 4-22). Na jedan ulaz komparatora se dovode odgovarajuãi naponski nivoi prema datoj
prenosnoj karakteristici. Ovi naponi se formiraju otpornièkim razdelnikom povezanim na izvor
referentnog napona. Na taj naèin se dobija željena skala diskretnih vrednosti. Na druge ulaze
komparatora se dovodi analogni napon koji treba da se konvertuje.



























Slika 4-22: Direktni A/D konvertor sa trobitnim izlazom.

U zavisnosti od vrednosti napona, izlazi nekih komparatora ãe biti na niskom nivou dok su
drugi na visokom. Diskretizaciju po vremenu vrši takt signal: izlazne vrednosti komparatora
periodièno upisuje u flip-flop-ove. Izlazni stepen se sastoji od jednog prioritetnog kodera: izlazni
kod se formira na osnovu jedinice na izlazu komparatora na najvišem položaju.
Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 63 -
Kod A/D konvertora sa sukcesivnom aproksimacijom izlazni kod velièine n bita se formira
u n koraka. Princip rada je prikazan na slici 4-23. Ulazni signal se uzorkuje na poèetku periode
kovertovanja i ta vrednost se održava konstantnom na ulazu komparatora K do kraja ciklusa
pretvaranja. Konvertor sadrži jedan D/A kovertor èija je rezolucija ista kao i samog A/D konvertora.
Izlaz D/A konvertora je vezan na drugi ulaz komparatora. Izlaz komparatora vrši upravljanje
registrom za sukcesivnu aproksimaciju (engl.: successive approximation register – SAR) koji je
centralni deo šeme.







Slika 4-23: Blok šema
A/D kovertora sa
sukcesivnom
aproksimacijom.



Na poèetku konverzije setuje se bit najveãe težine (engl.: most significant bit - MSB) u
registru. Prema toj vrednosti D/A konvertor generiše odgovarajuãi analogni signal a na osnovu toga
komparator javlja registru da li je ulazni signal veãi ili manji od vrednosti koja se nalazi na sredini
skale.
Ako je ulazni signal veãi, pri odgovarajuãoj ivici takt signala, vrednost MSB-a ostaje
nepromenjena dok se u suprotnom sluèaju vraãa na nulu. Istovremeno, setuje se vrednost susednog
bita u registru. U sledeãoj periodi takt signala se ponovo uporeðuje vrednost ulaznog signala sa
izlazom D/A konvertora i komparator informiše 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 sledeãi bit.
Ovaj proces se nastavlja sve dok nisu odreðene vrednosti svih bitova. Tada se u registru
nalazi digitalni kod koji odgovara ulaznom analognom signalu. U prodaji se mogu naãi integrisana
kola koja u sebi sadrže kompletan A/D konvertor sa sukcesivnom aproksimacijom.
U treãi skup rešenja A/D konverzije spadaju brojaèka rešenja. Razvijeno je više takvih
postupaka. Osnovni princip kod svih je generisanje pravougaonog impulsa sa vremenom trajanja
srazmernim sa ulaznim analognim signalom. Pri tome uloga brojaèa je odreðivanje 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 generiše uporeðivanjem
analognog signala i linearno rastuãeg testerastog signala. Naponski komparatori (pomoãu EX-ILI
kola) dozvoljavaju rad brojaèa sve dok je vrednost testerastog signala veãa od nule ali još nije
premašila ulazni napon.










Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica
- 64 -







Slika 4-24: Blok šema A/D konvertora koji koristi testerasti signal i brojaè.

Nedostatak prikazanog rešenja je da osim strmine testerastog signala i taènost frekvencije
takt signala utièe na taènost konverzije. Strminu testerastog signala je moguãe stabilizovati pomoãu
odgovarajuãeg referentnog napona, ali dodatni problemi mogu nastati zbog pomeranja RC vrednosti
koji definišu testerasti signal. Postoje i druga brojaèka rešenja koja primenjuju testerasti signal
saèinjen od rastuãeg i padajuãeg segmenta. Pomoãu ove tehnike je moguãe izbeãi osetljivost kako
na promene RC èlana tako i na stabilnost frekvencije takt signala. Jedino je važno kod ovog A/D
konvertora da se vrednost referentnog napona održi na konstantnom nivou.
4.4.3. Karakteristike
Proces pretvaranja kod direktnih tipova A/D konvertora je veoma kratak (obièno je vreme
konverzije ispod 1ìs), ali zahtevaju veliki broj komponenata i zbog toga im je cena visoka. Ovo
rešenje se primenjuje do šest ili osam bita rezolucije i samo za konverziju brzo promenljivih signala
(digitalni osciloskopi, telekomunikacije).
Proseèno vreme konverzije A/D konvertora sa sukcesivnom aproksimacijom je nekoliko
ìs. Rezolucija konverzije je obièno osmobitna ili veãa. Oblasti primene ovih kola su najèešãe kod
upravljanja brzim procesima.
Primenom A/D konvertora sa testerastim signalom i brojaèem moguãe je dostiãi veliku
rezoluciju po niskoj ceni jer je broj korišãenih kola relativno mali. Nedostatak ovog tipa je dugaèko
vreme konverzije koje je èesto reda velièine sekunda. Kod digitalnih prenosnih instrumenata se
uvek ugraðuju ovakvi tipovi konvertora jer korisnik ne bi ni bio u stanju da oèita izmerenu vrednost
neke velièine kada bi se cifre brzo menjale. Ovaj tip A/D konvertora je pogodan i za digitalizaciju
sporopromenljivih fizièkih velièina (npr. temperatura, nivo teènosti itd.).
Projektovanje primenom programabilnih logièkih kola (PLD)

- 65 -

III. Projektovanje primenom
programabilnih logièkih kola (PLD)

Jezik za opis hardvera Verilog
Projektovanje primenom programabilnih logièkih kola (PLD)

- 66 -
5. Pristupi projektovanju
Ovaj deo skripte je posveãen digitalnom projektovanju zasnovanom na jeziku za opis
hardvera (engl.: hadware description language – HDL) koji nosi naziv Verilog. Pre upoznavanja sa
jezièkim strukturama, prezentovaãe se uobièajeni pristupi koji se primenjuju pri projektovanja
digitalnih kola.
Postoje dva osnovna pristupa projektovanju:
- Top-down pristup:
Definisani složeni problem se rešava deljenjem na više jednostavnijih podproblema koji se
dalje dele na još jednostavnije podproblema itd. Proces se nastavlja sve dok podproblemi ne
postanu dovoljno mali i jednostavni za rešavanje. Slika 5-1 pokazuje proces projektovanja top-down
metodom.














Slika 5-1: Top-down pristup projektovanju.

 Bottom-up pristup:
Ova metoda projektovanja polazi od osnovnih blokova koji su na raspolaganju za
rešavanje zadatog problema. Njihovim korišãenjem se grade blokovi veãe kompleksnosti. Ovi
blokovi se dalje koriste za dobijanje blokova još veãe kompleksnosti itd. Proces se nastavlja sve dok
se ne reši problem. Slika 5-2 pokazuje proces projektovanja bottom-up metodom.














Slika 5-2: Bottom-up pristup projektovanju.

Pri projktovanju kola u digitalnoj elektronici najèešãe se koristi kombinacija ove dve
metode. Projektanti elektriènih kola definisani problem dele na manje celine, koje posebno
rešavaju. Te celine se ponovo dele na podceline sve dok se ne stiže do nivoa kada je moguãe
Projektovanje primenom programabilnih logièkih kola (PLD)

- 67 -
koristiti gotove blokove koji su unapred definisani i predstavljaju osnovne komponente u razvojnim
okruženjima.
Sa druge strane, inženjeri koji projektuju komponente, polaze od nivoa prekidaèa, koji su
osnovni elementi u datoj tehnologiji integrisanih kola. Na nivou prekidaèa prvo izgraðuju proste
funkcionalne jedinice (npr. logièka kola) zatim kombinacijom tih jedinica se formiraju složeniji
blokovi koji ãe biti gradivni elementi razvojnog okruženja.
Metode koje su prezentovane podjednako se primenjuju kod projektovanja digitalnih kola
sa SSI, MSI komponentama ili PLD kolima. Za ilustraciju navedenih pristupa projektovanju
poslužiãemo se primerom èetvorobitnog brojaèa sa asinhronim reset signalom. Brojaè treba
projektovati tako da ima moguãnost asinhronog resetovanja i da se okida na silaznu ivicu takt
impulsa.
5.1. Èetvorobitni brojaè
Brojaè ãe imati èetiri izlaza (q0, q1, q2 i q3) i dva ulaza (clock i reset) kao što je prikazano
na slici 5-3.



Slika 5-3: Šematski simbol èetvorobitnog brojaèa.


Pretpostavimo da razvojno okruženje koje se koristi za realizaciju datog brojaèa kao
osnovne gradivne elemente poseduje D flip-flop i sva potrebna logièka kola. Projektovanje
èetvorobitnog brojaèa pomoãu D flip-flop-ova i logièkih kola u jednom koraku bi predstavljalo
težak zadatak. Meðutim korišãenjem T flip-flop-ova se veoma lako projektuje zahtevani brojaè.
Slika 5-4 prikazuje šemu èetvorobitnog brojaèa realizovog T flip-flop-ovima.




Sledeãi korak u rešavanju zadatka je sinteza T flip-flop-a pomoãu D flip-flop-a i potrebnih
logièkih kola. Kombinaciona tabela za sintezu T flip-flop-a pomoãu D flip-flop-a je prikazana u
tabeli 5-1. Slika 5-5 prikazuje minimizaciju logièke funkcije ulaza D flip-flop-a pomoãu Karnaugh-
ove tabele. Slika 5-6 predstavlja šematski prikaz realizacije T flip-flop-a pomoãu jednog D flip-flop-
a i potrebnih logièkih kola.




Tabela 5-1:Kombinaciona tabela za sintezu T flip-flop-a
pomoãu D flip-flop-a.






T Q
n
Q
n+1
D
0 0 0 0
0 1 1 1
1 0 1 1
1 1 0 0
Slika 5-4: Ostvarivanje èetvorobitnog
brojaèa T flip-flop-ovima

Projektovanje primenom programabilnih logièkih kola (PLD)

- 68 -
D Q
Q
T
Q
T flip-flop
clock
0
0
1
1
Q
n
T
0 1
0
1
Q T Q T D · + · =


Slika 5-5: Karnaugh-ova tabela za minimizaciju ulazne logièke
funkcije D flip-flop-a.








Slika 5-6: Logièka šema ostvarivanja T flip-flop-a pomoãu D
flip-flop-a i potrebnih logièkih kola.



Za rešavanje ovog zadatka koristio se top-down pristup projektovanju. Dobijena
hijerarhijska struktura je prikazana blok dijagramom na slici 5-7.



Slika 5-7: Hijerarhijska struktura dobijena pri projektovanju èetvorobitnog brojaèa top-down metodom.

U procesu projektovanja èetvorobitnog brojaèa top-down metodom, prvi korak je bio
definisanje bloka najvišeg nivoa koji opisuje funkciju brojanja. Na sledeãem nivou brojaè je
implementiran T flip-flop-ovima. Na treãem nivou T flip-flop-ovi su realizovani pomoãu D flip-flop-
ova i potrebnih ILI, I i NE logièkih kola. Na ovom nivou se dodiruju top-down i bottom-up metode
jer su korišãeni D flip-flop-ovi i logièka kola koja su osnovni gradivni elementi razvojnog okruženja
nastali bottom-up pristupom projektovanju.
Umesto korišãenja D flip-flop-a kao osnovnog gradivnog elementa razvojnog okruženja, D
flip-flop bi se mogao projektovati pomoãu logièkih kola. Rezultat bi bio još jedan nivo u hijerarhiji
top-down metode projektovanja. U tom sluèaju dodirna taèka top-down i bottom-up metode
projektovanja bi bila èisto na nivou logièkih kapija.
5.2. Moduli u Verilog HDL-u
U Verilog HDL-u je hijerarhijsko projektovanje omoguãeno uvoðenjem koncepta
modula (engl.: module). Moduli su gradivni elementi u Verilog HDL-u i predstavljaju skup
osnovnih gradivnih elemenata (engl.: primitive) i/ili gradivnih elemenata nižih nivoa.
Projektovanje primenom programabilnih logièkih kola (PLD)

- 69 -
Koncept modula omoguãava da se skup elemenata koji saèinjavaju modul koristi na više
mesta u projektu. Moduli se povezuju sa okolinom preko svojih port-ova (ulazi i izlazi).
Korišãenjem port-ova unutrašnjost modula je sakrivena od okoline. Kada se jedan modul posmatra
iz perspektive njegove okoline sve što se vidi to su njegove ulazne i izlazne linije (port-ovi). Ovo
omoguãuje promene unutar modula a da se pri tome ne mora menjati ostatak projekta. Druga
prednost koju pruža korišãenje port-ova je moguãnost timskog rada na istom projektu.
Za timski rad je potrebno hijerarhijski organizovati projekat, opisati funkcije modula i
definisati port-ove. Nakon toga projektovanje odreðenih modula ili grupe modula se dodeljuje
pojedinim èlanovima tima.
Primeri modula sa slike 5-7 su èetvorobitni brojaè i T flip-flop.
Definicija modula u Verilog HDL-u poèinje pomoãu kljuène reèi module i završava se sa
endmodule. Svaki modul mora posedovati jedinstveno ime kako bi se mogao razlikovati od ostalih
modula. Takoðe, svaka definicija modula mora sadržati listu port-ova koja opisuje ulazne i izlazne
linije modula.
Oblik definicije modula u Verilog HDL-u je prikazan u primeru 5-1:

Primer 5-1: Najvažniji elementi definicije svakog modula.
module <ime_modula> (<lista_port-ova>);

< telo_modula>

endmodule


Centralni deo modula koji nosi naziv telo modula može da sadrži definicije sa èetiri
razlièita nivoa apstrakcije. Pojedini nivoi se primenjuju prema potrebama projekta. Ista
funkcionalnost se može opisati korišãenjem sva èetiri nivoa apstrakcije, pojedini nivoi se mogu i
mešati.
Nivoi apstrakcije su sledeãi:


- Nivo ponašanja ili nivo algoritma (engl.: behavioral or algorithmic level):
Predstavlja najviši nivo apstrakcije u Verilog HDL-u. Na ovom nivou je težište na
odreðivanju algoritma koji rešava problem a ne na samoj hardverskoj realizaciji (koji ãe se
elementi koristiti i kako ãe se oni povezati). Projektovanje je veoma slièno programiranju u
C jeziku.
- Nivo toka podataka (engl.: dataflow level):
Na ovom nivou se projektovanje vrši definisanjem toka podataka izmeðu registara i naèin
njihove obrade u registrima.
- Nivo kapija (engl.: gate level):
Moduli se implementiraju korišãenjem logièkih kola i elektriènih veza kojima se kola
povezuju.
- Nivo prekidaèa (engl.: switch level):
Predstavlja najniži nivo apstrakcije koji Verilog HDL podržava. Moduli se grade pomoãu
prekidaèa (tranzistorskih), memorijskih elemenata i veza kojima se ovi elementi meðusobno
povezuju.


Verilog HDL dozvoljava korišãenje svih nivoa apstrakcije unutar jednog projekta.
Uobièajeno, izraz RTL (engl.: register transfer level) se odnosi na izvorni kod koji sadrži definicije i
na nivou ponašanja i na nivou toka podataka.
Kada raste nivo apstrakcije poveãavaju se fleksibilnost i tehnološka nezavisnost projekta,
a kada se nivo apstrakcije približava nivou prekidaèa isto se smanjuje. U takvom sluèaju mala
promena u opisu zadatka može izazvati znaèajne promene u projektu. Može se povuãi paralela sa
Projektovanje primenom programabilnih logièkih kola (PLD)

- 70 -
programiranjem u C jeziku i u asembleru. Lakše je programirati u višim programskim jezicima kao
što je jezik C nego u asembleru. Program napisan u C jeziku se lako prenosi na druge raèunare dok
program napisan u asembleru je specifièan raèunaru na kojem je napisan i ne može se lako preneti
na druge.

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 flip-
flop instancira jedan D flip-flop, dva I kola i po jedno NE i ILI kolo. Primer 5-2 sadrži definiciju
modula 4-bitnog brojaèa. Svaka instanca mora posedovati jedinstveno ime. Dvostruka kosa crta (//)
oznaèava jednolinijski komentar. Komentari sadrže 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 vrši instanciranje potrebnog modula.
Pojmovi definicija modula i instanca modula se ne smeju mešati. U poreðenju 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 odgovarajuãeg hardvera (PLD) realizuje projektovno kolo i
pristupi testiranju kola realizovanog na bazi HDL opisa, prvo se vrši simulacija na raèunaru.
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. Matematièari rade na razvoju sistematskih postupaka za ispitivanje
ispravnosti HDL opisa ali je zasad to u preliminarnoj fazi.
Blok koji obezbeðuje ulazne signale i prima izlazne signale se obièno naziva ispitni blok (engl.:
stimulus block ili test bench). Ispitni blok je takoðe jedan modul napisan u jeziku za opis hardvera
(HDL). Osnovno pravilo je da se ne sme pomešati ispitni blok sa projekom koji se realizuje. Postoje
dva naèina primene ispitnog bloka na objekat koji se testira:

- Ispitni blok instancira modul koji se testira i obezbeðuje ulazne i prima izlazne signale.
Ispitni blok postaje Verilog modul najvišeg 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.
Projektovanje primenom programabilnih logièkih kola (PLD)

- 71 -





Slika 5-8: Ispitni blok (modul) instancira modul kojim
se realizuje postavljeni zadatak.





- Drugi naèin primene ispitnog bloka je da se predmet testiranja i blok koji vrši testiranje
instanciraju unutar jednog praznog modula najvišeg nivoa u hijerarhiji projektovanja (engl.:
dummy block). Ispitni blok komunicira sa modulom testiranja kroz port-ove. Ovaj naèin
primene ispitnog bloka je prikazan na slici 5-9. Jedina funkcija bloka najvišeg nivoa je
instanciranje ispitnog modula i modula koji se testira.








Slika 5-9: Jedan prazan modul instancira ispitni
modul i projektovani modul (èetvorobitni
brojaè).
Projektovanje primenom programabilnih logièkih kola (PLD)

- 72 -
6. Osnovni koncepti Verilog HDL-a
Ova glava se bavi osnovnim pojmovima i konvencijama Verilog HDL-a. Izložena materija
je prilièno suvoparna ali je neophodna za razumevanje i praãenje narednih glava.
6.1. Jezièke konvencije
Osnovne jezièke konvencije Verilog HDL-a su veoma sliène pravilima programskog
jezika C. Verilog jezièke konstrukcije se sastoje od niza zapisa (engl.: token). Ti zapisi mogu biti
sledeãeg tipa: primedbe (komentari), znakovi za razdvajanje, brojevi, nizovi znakova (engl: string),
identifikatori (engl.: identifier) i kljuène reèi (engl.: keyword). Verilog HDL je case-sensitive jezik,
što znaèi da razlikuje mala i velika slova. Na primer, identifikatori brojac i Brojac se ne odnose na
isti podatak jer prvi identifikator poèinje sa malim slovom b a drugi sa velikim B. Sve kljuène reèi
su definisane malim slovima u Verilog HDL-u.
6.1.1. Prazna mesta
Prazan karakter, tabulator i nova linija zajednièkim imenom se u Verilog HDL-u nazivaju
praznim mestima. Prazni karakteri se u procesu prevoðenja Verilog HDL opisa ignorišu osim kada
se koriste za meðusobno razdvajanje komentara, brojeva, identifikatora, stringova i kljuènih reèi.
Kod string-ova uzimaju se u obzir i prazna mesta.
6.1.2. Komentari
Komentari su neophodni u softverskim jezicima radi dokumentovanja i lakšeg
razumevanja programskog koda pri kasnijem analiziranju. Isto važi i za jezike za opis hardvera.
Osnovno pravilo je da se stavi komentar svugde gde postoji sumnja da ãe jedna naredba ili grupa
naredbi predstaviti problem za razumevanje posle nedelju ili mesec dana. Oni koji se ipak ustežu od
pisanja komentara treba da imaju na umu da pisanje komentara ne umanjuje inteligenciju
programera.
Postoje dva naèina pisanja komentara (primer 6-1):
- Jednolinijski komentari. Znaci „//“ nalažu prevodiocu opisa na hardverskom jeziku da sve
što sledi od te taèke pa do kraja reda preskaèe u procesu prevoðenja.
- Višelinijski komentari. Višelinijski komentar poèinje znacima „/*“ i završava se sa
znacima „*/“.


Primer 6-1: Pisanje jednolinijskih i višelinijskih komentara.
a = b + c; // Ovo je jednolinijski komentar

/*Ovo je višelinijski
komentar*/

6.1.3. Operatori
Operatore delimo u tri kategorije: imamo unarne, binarne i ternarne operatore (primer 6-
2). Unarni operatori se odnose na jedan operand i stavljaju se ispred operanada, binarni operatori se
stavljaju izmeðu dva operanda. Ternarni operatori se sastoje od dva posebna znaka koji razdvajaju
tri operanada.


Primer 6-2: Unarni, binarni i ternarni operatori.
a = ~b; // ~ je unarni operator. b je operand.
a = b && c; // && je binarni operator. b i c su operandi.
a = b ? c : d; // ?: je ternarni operator. b, c i d su operandi.

Projektovanje primenom programabilnih logièkih kola (PLD)

- 73 -
6.1.4. Predstavljanje brojeva u Verilog HDL-u
U Verilog HDL-u brojevi se mogu navoditi na dva naèina: sa velièinom broja ili bez
velièine.

- Brojevi sa velièinom (engl.: sized numbers):

Brojevi sa velièinom su sledeãeg oblika:

<velièina>’<osnova_brojnog_sistema><broj>

<velièina> je decimalni broj koji predstavlja broj bitova pomoãu kojih se zapisuje dati broj.

Brojni sistemi koje Verilog HDL podržava 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 velièinom.
3’b101 // trobitni binaran broj
16’hfa3e // 16-bitni heksadecimalan broj
16’HFA3e // Isti broj kao prethodni samo su neka slova velika


- Brojevi bez velièine (engl.: unsized numbers):

Velièinu brojeva u bitovima koji su zadati bez parametra <velièina> odreðuje simulator ili
arhitektura raèunara (ali dužina ne može 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 velièine.
‘o7651 // 32-bitni oktalni broj
‘hAB3 // 32-bitni heksadecimalan broj
4556 // 32-bitni decimalan broj


- x i z vrednosti meðu ciframa

Verilog HDL poseduje dva specifièna simbola: jedno za nepoznato stanje (x) a drugo za
stanje visoke impedanse (z) (primer 6-5). Ovi simboli su neophodni pri modeliranju rada
realnih kola.


Primer 6-5: Korišãenje x i z vrednosti u ciframa broja.
12’h13x // 12-bitni heksadecimalni broj. Vrednosti èetiri
// najmanje znaèajna bita su nepoznate.
6’hx // 6-bitni heksadecimalni broj nepoznate vrednosti.
32’bz // 32-bitni binarnan broj. Sve binarne pozicije su u
// stanju visoke impedanse.




Projektovanje primenom programabilnih logièkih kola (PLD)

- 74 -
Vrednosti x i z u sluèaju heksadecimalnog brojnog sistema zamenjuju 4 bita, u sluèaju
oktalnog 3 bita a u sluèaju binarnog brojnog sistema jedan bit.
Važno je objasniti šta se dešava u sluèaju kada je broj zadatih cifara manji od velièine
broja. Ako je cifra najveãe težine zadatog broja 0, x ili z, neodreðeni bitovi veãe težine se takoðe
dopunjuju sa vrednostima 0, x ili z. Ovo omoguãuje jednostavan naèin dodeljivanja vrednosti 0, x ili
z celom vektoru. Ako je cifra najveãe težine 1, neodreðeni bitovi se dopunjuju sa 0.
Slika 6-1 prikazuje sluèajeve kada je broj definisanih cifara manji od velièine broja.
Brojevi su u oktalnom brojnom sistemu.









Slika 6-1: Primeri brojeva kod kojih je broj zadatih
cifara manji od definisane velièine broja.





- Pisanje negativnih brojeva

Negativni brojevi se zadaju stavljanjem znaka minus pre parametra za velièinu broja. Nije
dozvoljeno staviti znak minus izmeðu parametra za brojni sistem i samog broja (primer 6-6).
Pri obradi Verilog HDL izvornog koda (simulacija, sinteza) za predstavljanje negativnih
brojeva softveri koriste drugi komplement.


Primer 6-6: Zadavanje negativnih brojeva.
-8’hA1 // 8-bitni negativan broj
8’h-A1 // Pogrešno zadavanje negativnog broja


- Znak donja crta

Znak donja crta „_“ je dozvoljen pri zadavanju brojeva na bilo kojem mestu osim ispred
prvog karaktera. Jedini razlog zašto je dozvoljena donja crta jeste da poboljša preglednost HDL
opisa (primer 6-7). Znak donja crta u brojevima se ignoriše u procesu tumaèenja HDL opisa.

Primer 6-7: Korišãenje znaka donja crta.
12’b1100_0101_1111 // Znak donja crta se koristi kako bi se poveãala preglednost
// HDL opisa

- 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 poveãala
preglednost HDL opisa. Ove dve naredbe ãemo kasnije detaljno objasniti.

Primer 6-8: Oznaèavanje stanja visoke impedanse znakom pitanja.
4’b01?? // Identièan izrazu: 4’b01zz
Projektovanje primenom programabilnih logièkih kola (PLD)

- 75 -
6.1.5. Nizovi znakova
Nizovi znakova (engl.: string) su skupovi karaktera koji se nalazi izmeðu dva navodnika.
Jedino ogranièenje pri zadavanju string-ova je da se mora nalaziti u jednoj liniji, ne može se
prostirati u više linija (primer 6-9).


Primer 6-9: Definisanje stringa.
“Ovo je jedan string.“
6.1.6. Identifikatori
Identifikatori (engl.: identifier) su imena objekata u Verilog HDL-u koja omoguãavaju
jednoznaèno pozivanje na njih. Identifikatori se grade pomoãu slova, brojeva, znaka donje crte i
znaka dolara ($). Verilog HDL razlikuje mala i velika slova u identifikatorima. Identifikatori se ne
mogu poèeti brojevima i znakom dolara. (Znak dolara kao prvi karakter u identifikatoru je
rezervisan za sistemske funkcije.)
6.1.7. Kljuène reèi
Kljuène reèi (engl.: keyword) su specijalni identifikatori rezervisani za definisanje jezièkih
konstrukcija. Sve kljuène reèi se obavezno pišu malim slovima (primer 6-10).


Primer 6-10: Primena kljuènih reèi.
reg broj; // reg je kljuèna reè; broj je identifikator
input Input; // input je kljuèna reè; Input je identifikator
// input i Input nisu isti jer Verilog HDL razlikuje velika i
// mala slova.

6.2. Tipovi podataka i tipovi nosioca podataka
Ovo poglavlje je posveãeno tipovima podataka koji se koriste u jeziku Verilog. Uvode se
kljuène reèi koje se koriste za njihovu definiciju i pravila vezana za pojedine tipove nosioca
podataka.
6.2.1. Logièke vrednosti u Verilog HDL-u
Kao što je navedeno kod objašnjenja naèina pisanja brojnih vrednosti (taèka 6.4.1) Verilog
HDL podržava èetiri logièke vrednosti koje su prikazane u tabeli 6-1. To su moguãe vrednosti za
sve vrste podataka.



Tabela 6-1 : Logièke vrednosti koje Verilog HDL podržava.



6.2.2. Èvorovi, veze
Osnovni tip podatka u Verilog HDL-u je logièko stanje veze odnosno èvora (engl.: net)
koje služi za povezivanje hardverskih elemenata. Kao i u realnim kolima, logièka vrednost net-a
(veze) je odreðena izlazom hardverskog elementa koji je povezan na taj net.
Na slici 6-2 izlaz ILI logièkog kola je povezan na nosilac podatka c, tipa net. Logièki nivo
podatka c na izlazu kola u svakom trenutku je odreðena vrednošãu izlaza ILI kola.


Vrednosti Stanja
0 Logièka nula
1 Logièka jedinica
x Nepoznato stanje
z Stanje visoke impedanse
Projektovanje primenom programabilnih logièkih kola (PLD)

- 76 -


Slika 6-2: Primer za nosioce podatka tipa net.


Nosioci podataka tipa net se najèešãe deklarišu pomoãu kljuène reèi wire (primer 6-11).
Podaci su redovno velièine jednog bita osim kada se deklarišu 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 logièka vrednost izlaza datog elementa.


Primer 6-11: Deklaracija podataka tipa net pomoãu kljuène reèi wire.
wire c; // Deklariše se podatak c, tipa veza koja je
// povezana sa izlazom ILI kola. (Slika 6-2)
wire a, b; // Deklarišu se podaci a i b, tipa veza koje su
// povezane na ulaz ILI kola. (Slika 6-2)
wire d = 1’b0; // Podatak d je tipa veza i ima konstantnu
// vrednost nula.


Kada je vrednost nekog podatka konstantna kao u sluèaju podatka d, nije ga preporuèljivo
povezati sa izlazom nekog digitalnog kola. Kada vrednost izlaza datog elementa postaje jedan,
dolazi do kolizije logièkih vrednosti jer vrednost podatka d tipa veza treba da je nula.
Potrebno je napomenuti da veza (net) nije kljuèna reè i predstavlja jednu celu klasu tipa
podataka kao što su wire, wand, wor, tri, triand, trior, trireg itd. Najèešãe se koristi tip wire. Ostali
tipovi podataka se reðe koriste.
6.2.3. Registri
Registri su elementi koji služe za pamãenje logièkih vrednosti. Registri pamte svoje
sadržaje sve dok se ne zamene novim vrednostima.
Ne treba mešati pojam registra u Verilog HDL-u sa hardverskim registrima sastavljenim
od flip-flop-ova koji dobijaju nove vrednosti na rastuãoj ili na opadajuãoj ivici takt signala. Pojam
registra u Verilog HDL-u oznaèava nosilac podatka koji pamti vrednost koja je njemu dodeljena u
nekom ranijem momentu. Za razliku od veze (net), registru nije potreban drajver (izlaz nekog
logièkog kola) da bi imao vrednost razlièitu od stanja visoke impedanse. Nosiocima podataka tipa
registar u Verilog HDL-u nisu potrebni takt signali koji sinhronišu promenu stanja. Sadržaj registra
u Verilog HDL-u se može promeniti u bilo kom trenutku putem odgovarajuãe dodele.
Nosioc podatka tipa registar se deklarišu pomoãu kljuène reèi reg. Podrazumevana
vrednost podatka tipa reg je neodreðeno stanje (tj. x), ta vrednost važi sve dok se registru ne dodeli
neka konkretna vednost. Primer 6-12 prikazuje naèin deklarisanja nosioca podatka tipa reg:


Primer 6-12: Deklaracija nosioca podataka tipa registar pomoãu kljuène reèi reg.
reg reset; // Nosilac podatka reset pamti dodeljene vrednosti.
initial // Jezièka konstrukcija koja ãe biti objašnjena kasnije.
begin
reset = 1’b1; // Pomoãu reset signala se resetuje neko digitalno kolo.
#100 reset = 1’b0; // Posle 100 vremenskih jedinica reset signal se deaktivira.
end

a
b
c
Projektovanje primenom programabilnih logièkih kola (PLD)

- 77 -
6.2.4. Vektori
Nosioci podataka tipa net i reg se mogu deklarisati kao vektorske velièine (širina je veãa
od jednog bita). Ako nije navedena širina podatka u bitovima, podrazumevana vrednost je jedan bit.
U tom sluèaju podatka je skalarna velièina (primer 6-13).

Primer 6-13: Deklaracija vektora.
wire izlaz; // izlaz je skalarni nosilac podatka tipa veza (net).
wire [7..0] led_indikator; // 8-bitni vektorski nosilac podatka
wire [15..0] ledA, ledB; // dva 16-bitna vektorska nosioca podataka
reg takt_signal; // skalarni nosilac podatka
reg [0..255] mem; // 256-bitni vektorski nosilac podatka


Vektori se deklarišu kao [veãi_broj : manji_broj] ili [manji_broj : veãi_broj]. Levi broj u
uglastoj zagradi uvek predstavlja bit nejveãe težine u vektoru. U gornjem primeru za nosilac
podatka ledB najznaèajniji bit je bit 15, dok za podatak mem najznaèajniji biti je bit 0.
Moguãe je adresirati jedan bit ili grupu bitova unutar vektorskog podatka. Ova moguãnost
je prikazana u primeru 6-14 nad vektorskim poacima definisanim u prethodnom primeru.


Primer 6-14: Adresiranje pojedinaènih ili grupe bitova iz nekog vektora.
ledB [7]; // Oznaèava sedmi bit podatka ledB
ledA[1:0]; // Dva najmanje znaèajna bita podatka ledA
// Sintaksa ledA[0:1] je nelegalna jer najznaèajniji bit
// se uvek mora nalaziti na levoj strani opsega.
mem [0:1]; // Dva najviše znaèajna bita podatka mem.

6.2.5. Celi brojevi
Kao nosioc podatka za ceo broj (engl.: integer) se koristi nosilac opšte namene
registarskog tipa. Za njihovu deklaraciju se koristi kljuèna reè integer (primer 6-15). Za cele
brojeve moguãe je koristiti i deklaraciju reg ali je uobièajeno da se podatak tipa integer koristi za
potrebe brojanja. Podrazumevana širina podatka integer zavisi od širine reèi raèunara na kome se
vrši simulacija, minimalna širina je 32 bita. Nosilac podatka tipa reg pamti podatke kao pozitivne
cele brojeve, dok nosilac podatka tipa integer može da pamti i negativne brojeve.


Primer 6-15: Deklaracija podataka tipa integer.
integer brojac; // Nosilac podatka brojac je tipa integer.
initial
brojac = -1; // Poèetna vrednost podatka brojac je -1.

6.2.6. Realni brojevi
Realni brojevi su takoðe podaci registarskog tipa u Verilog HDL-u. Deklaracija se vrši
pomoãu kljuène reèi real. Vrednosti podatka real se mogu zadati u decimalnom obliku (tj. 3.14) ili
u eksponencijalnom obliku (tj. 3e2 = 300) (primer 6-16). Treba obratiti pažnju da se za odvajanje
razlomljenog dela broja u Verilog HDL-u se koristi taèka umesto zareza.
Velièinu nosioca podatka tipa real zavisi od raèunara na kome se vrši simulacija.
Podrazumevana vrednost podatka real pri deklarisanju je 0. U sluèaju dodele vrednosti nosiocu
podatka real nosiocu integer vrši se zaokruživanje na najbliži celi broj.



Projektovanje primenom programabilnih logièkih kola (PLD)

- 78 -
Primer 6-16: Deklaracija i korišãenje nosica podataka tipa real.
real alfa; // Podatak alfa je tipa real.
initial
begin
alfa = 4e10; // Nosiocu podatka alfa se dodeljuje broj u eksponencijalnom
// obliku.
alfa = 5.31;
end
integer i; // Podatak i je definisan kao integer.
i = alfa; // Nosioc podatka i poprima vrednost 5 ( 5.31 je zaokružen
// na najbliži ceo broj).


6.2.7. Nizovi
Verilog HDL podržava graðenje 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 višedimenzionalni nizovi. Deklaracija nizova se vrši u sledeãoj formi:
<ime_niza>[veãi_broj : manji_broj] ili <ime_niza>[manji_broj : veãi_broj] (primer 6-17).


Primer 6-17: Deklaracija nizova.
integer brojevi[0:7]; // Niz od 8 podataka tipa integer.
reg mem[31:0]; // Niz od 32 1-bitnih podataka tipa reg.
reg [3:0] port [0:7]; // Niz od 8 port-ova. Svaki port je 4-bitni.
integer matrix [4:0] [4:0]; // Ilegalna deklaracija. Verilog HDL ne podržava
// višedimenzionalne nizove.
brojevi[4]; // Oznaèava èetvrti element niza brojevi.
port[5]; // Peti element niza port.


Potrebno je napomenuti da se ne smeju mešati pojmovi vektor i niz. Vektor je jedan podatak
širok n-bita, dok je niz skup više elemenata širokih 1-bit ili n-bita.

6.2.8. Memorije
U savremenom digitalnom projektovanju pomoãu PLD-ova èesto je potrebno ostvariti
registre i memorijske blokove, (RAM, ROM). Memorije se u Verilog HDL-u delarišu kao niz
registara (primer 6-18). Elementi memorije se nazivaju reèima (engl.: words). Reèi 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]; // Memorija mem1bit je skup 1024 1-bitnih reèi
reg [7:0] membyte [0:1023]; // Memorija membyte je skup 1024
// 8-bitnih reèi (bajta).
membyte[521]; // Uèitava se reè velièine jednog bajta
// èija je adresa 521 u nizu membyte.

6.2.9. Parametri
Verilog HDL omoguãava definisanje konstanti unutar modula pomoãu kljuène reèi
parameter (primer 6-19). Parametri se ne mogu koristiti kao podaci.

Projektovanje primenom programabilnih logièkih kola (PLD)

- 79 -
Primer 6-19: Deklarisanje parametara.
parameter broj_dioda = 5; // broj_dioda je deklarisan kao konstanta
// sa vrednošãu 5.


Poželjno je koristiti parametre u definiciji Verilog HDL modula. Potrebno je izbegavati
brojèane vrednosti jer njihovo korišãenje poveãava verovatnoãu greške u HDL opisu. Korišãenje
parametara poveãava preglednost i fleksibilinost HDL opisa i olakšava njegovu izmenu.
6.2.10. Sistemske funkcije $stop i $finish
Sistemska funkcija $stop privremeno zaustavlja izvršavanje simulaciju koja je definisana u
HDL opisu kako bi se omoguãilo pregledanje vrednosti onih signala koji su od interesa. Sintaksa
$stop funkcije je prikazana u primeru 6-20.


Primer 6-20: Sistemska funkcija $stop.
$stop;

Sistemska funkcija $finish prekida izvršavanje simulacije (primer 6-21).


Primer 6-21: Sistemska funkcija $finish.
$finish;

6.2.11. Naredba ’define
Direktiva ‘define se koristi za definisanje tekstualnih makro-a koje ãe program prevodilac
tumaèiti na odgovarajuãi naèin. Naèin definisanja tekstualnih makroa je prikazan u primeru 6-22.


Primer 6-22: Definisanje tekstualnih makroa.
’<ime_makroa> <tekst_makroa>


Pri definisanju i korišãenju makroa uvek je prisutan znak ’. Svrha tekstualnih makro-a je da
ubrza pisanje HDL opisa (dugaèki tekstovi se mogu zameniti kratkim imenima makro-a) i da
poveãa njegovu preglednost. Ovo se postiže tako što prevodilac zamenjuje ime_makroa sa
tekst_makroa u celom HDL opisu (primer 6-23).


Primer 6-23: Korišãenje makroa.
‘define S $stop; // Simboli ‘S se zamenjuju svugde u programu sa $stop.

‘define WORD_REG reg [31:0]

// Sada se može definisati 32-bitni registar u programu kao:
‘WORD_REG reg32; // Nosilac podatka reg32 je 32-bitni registar.
Projektovanje primenom programabilnih logièkih kola (PLD)

- 80 -
7. Moduli i port-ovi
U prethodnim glavama su predstavljeni koncepti hijerarhijskog projektovanja, osnovne
jezièke konvencije hardverskog jezika Verilog i raspoloživi tipovi podataka odnosno nosioci
podataka. Ova glava detaljno obraðuje ranije uvedeni pojam modula i daje opis i pravila u vezi
port-ova.
7.1. Moduli
U glavi 5 je reèeno da je modul gradivni element koji èini osnovu hijerarhijskog
projektovanja u jeziku Verilog. Akcenat je bio na definisanju i instanciranju modula a ne na
unutrašnjoj strukturi modula. Ova glava detaljno obraðuje unutrašnjost modula.
Modul je tekst fajl formiran od ASCII karaktera. Sastoji od nekoliko razlièitih delova kao
što je prikazano na slici 7-1.











Slika 7-1: Sastavni delovi modula.







Definisanje modula uvek poèinje pomoãu kljuène reèi module. Prvo se zadaju ime modula
i lista port-ova, zatim se deklarišu vrste port-ova i uvode parametri. Lista portova i deklaracija
portova su prisutni samo ako postoji interakcija modula i okruženja.
Telo modula saèinjavaju pet komponenti koje su: deklaracija tipa podataka, izrazi sa nivoa
toka podataka, instanciranje modula nižih nivoa, izrazi na nivoau ponašanja i Verilog funkcije.
Navedene komponente se mogu nalaziti u bilo kom redosledu unutar tela modula.
Definicija modula se uvek završava pomoãu kljuène reèi endmodule. Samo su kljuèna reè
module, ime modula i kljuèna reè endmodule obavezni sve ostalo se koristi prema potrebi. Verilog
HDL dozvoljava definisanje više modula unutar jednog ASCII fajla i to u bilo kom redosledu.
Redosled nema veze sa hijerarhijom.
Razni delovi modula ãe se ilustrovati pomoãu
primera modula koji definiše RS latch. Slika 7-2 prikazuje
logièku š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 može poslužiti za testiranje latch-a.



Slika 7-2:Logièka šema RS latch-a.
moduleIme_modula, port_lista
Deklaracija_portova (ako postoje)
Parametri (opciono)
Deklaracija wire, reg i drugih
promenljivih
Izrazi sa nivoa toka podataka
(assign izrazi)
Inicijalizacija modula ni žih
nivoa
always and initial blokovi.
Svi izrazi sa nivoa ponašanja
pripadaju ovim blokovima
Task-ovi i funkcije
endmodule
Projektovanje primenom programabilnih logièkih kola (PLD)

- 81 -
Primer 7-1: Definisanje modula za RS latch-a i ispitnog modula.
// Ime modula i lista port-ova
module RS_latch(Q, NotQ, R, S);

// Deklaracija vrste port-ova
output Q, NotQ;
input R, S;
// Instanciranje modula nižih nivoa. U ovom sluèaju se instanciraju NI kapije koji su
// osnovni gradivni elementi (primitive) koji su definsani malim slovima
// u Verilog HDL-u.
nand n1(Q, ~S, NotQ);
nand n2(NotQ, ~R, Q);

// Kraj modula, koji je obavezan
endmodule

// Ime modula i lista port-ova
module Stimulus;
// Nema liste port-ova jer je modul Stimulus modul najvišeg nivoa.

// Deklaracija tipova podataka.
wire q, notq;
reg set, reset;

// Instanciranje modula nižeg nivoa èija definicija je data gore.
RS_latch f1(q, notq, set, reset);

// Blok koji pripada nivou ponašanja (engl. behavioral level), služi za
// zadavanje pobudnih signala.
initial
begin
set = 0; reset = 0;
#5 reset = 1;
#5 reset = 0;
#5 set = 1;
#5 $finish;
end

// Obavezna kljuèna reè na kraju modula.
endmodule


Kod prethodnog primera možemo zapaziti nekoliko karakteristiènih detalja:

- 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
ponašanja (always ili initial), ipak je definicija modula korektna.
- Modul sa imenom Stimulus za RS latch poseduje deklaraciju tipova podataka i izraze na
nivou ponašanja 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 kljuène reèi module, ime modula
i kljuène reèi endmodule su opcionog karaktera i koriste se po potrebi u bilo kom redosledu.
Projektovanje primenom programabilnih logièkih kola (PLD)

- 82 -

7.2. Port-ovi
Port-ovi su sprežne taèke modula preko kojih se omoguãava komunikaciju sa drugim
modulima. U Verilog HDL opisu uloga port-ova je analogna nožicama kod integrisanih kola. Jedini
naèin da okruženje komunicira sa modulom je preko njegovih port-ova. Unutrašnja struktura
modula je nevidljiva iz okruženja. Ovo daje veliku fleksibilnost u projektovanju jer se mogu
naèiniti promene u konstrukciji modula bez uticaja na naèin komuniciranja sa drugim modulima.
Port-ovi se još nazivaju i terminali (engl.: terminal).
7.2.1. Lista port-ova
U definiciji modula lista port-ova je opcionog karaktera. Ukoliko ne postoji komunikacija
izmeðu okruženja (drugi moduli) i datog modula, port-ovi nisu potrebni.
Na slici 7-3 je prikazana struktura sa modulom Top koji nema listu port-ova i modula
full_add_4 koji se instancira u modulu Top i zato ima listu port-ova. Prvi redovi u definiciji
navedenih modula su prikazani u primeru 7-2.



Slika 7-3: I/O portovi Top i full_add_4 modula.






Primer 7-2: Lista port-ova.
module full_add_4(sum, c_out, a, b, c_in); // Modul sa listom port-ova.
module Top; // Modul bez liste port-ova.

Top je modul najviše hijerarhije i zbog toga nema ulazne signale i ne gerneriše izlazne
signale za eventualne više module u hijerarhiji. Zato nema ni listu port-ova. Modul koji je najviši u
hijerarhiji komunicira samo sa softverom koji obraðuje 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 port-
ovi (tabela 7-1).



Tabela 7-1: Vrste portova



Primer 7-3 prikazuje deklaraciju port-ova na primeru 4-bitnog potpunog sabiraèa
prikazanog na slici 7-3.


Primer 7-3: Deklaracija port-ova.
module full_add_4(sum, c_out, a, b, c_in);

// Poèetak deklaracije port-ova
output [3:0] sum;
output c_out;
Tip port-a Opis
input Ulazni port
output Izlazni port
inout Bidirekcioni port
Projektovanje primenom programabilnih logièkih kola (PLD)

- 83 -

input [3:0] a, b;
input c_in;
// Kraj deklaracije port-ova

//------------------------------------
// Telo modula
//------------------------------------
endmodule


Ako se neki port deklariše 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 kljuènim reèima input, output ili inout, deklaracija tipa podaatka se izostavlja. Funkcija
izlaznih port-ova je èesto pamãenje odreðenih vrednosti i u tim situacijama je potrebno da se za njih
deklariše 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; // Pošto je port q deklarisan kao izlaz, posle deklaracije
// mu automatski pripada nosilac podatka tipa wire.
reg q; // Pošto izlazna vrednost treba da se pamti,
// podatka koji mu pripada
// se posebno deklariše kao podatak tipa reg.
input d, clock, reset;
//------------------------------------
// Telo modula
//------------------------------------
endmodule

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 možemo shvatiti kao objekat koji se sastoji iz dva dela koja su meðusobno povezana.
Prvi deo pripada unutrašnjosti modula, dok drugi okruženju. Ova analogija ãe olakšati razumevanje
pravila koja postoje pri instanciranju modula. Prevodilac HDL opisa javlja grešku ako su neka od
ovih pravila prekršena. 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 okruženju.
- Izlazni port-ovi
Podaci koji pripadaju izlaznom port-u modula mogu biti tipa reg ili net. Mogu se povezati u
okruženju samo sa nosiocima podataka tipa net.
- Bidirekcioni port-ovi
Bidirekcioni port-ovi modula moraju uvek biti tipa net i u okruženju se mogu povezati samo
sa nosiocima podataka tipa net.

Projektovanje primenom programabilnih logièkih kola (PLD)

- 84 -






Slika 7-4: Pravila za povezivanje
portova.




- Poklapanje broja bita podataka
Verilog HDL omoguãava povezivanje nosioca podataka razlièitih velièina pri povezivanju
modul. Program prevodilac ãe generisati poruku sa upozorenjem o nepoklapanju velièina
povezanih nosioca podataka.
- Nepovezani port-ovi
Verilog HDL dozvoljava postojanje nepovezanih port-ova (nisu povezani ni sa kojim
drugim port-om. Npr. uloga nekih port-ova može biti pružanje informacije u procesu
debagovanja i u tom sluèaju ostaju nepovezani. Pri kasnijoj hardverskoj realizaciji takve
portove treba izostaviti.

Primer 7-5 ilustruje pravila povezivanja port-ova. Pretpostavimo da se modul full_add_4
instancira u modulu Top prema slici 7-3. Naèin povezivanja port-ova je u veãini sluèajeva pravilan,
meðutim nosilac podatka SUM ne može da se deklariše na tip reg unutar modula Top pošto je
povezan sa izlaznim port-om instanciranog modula i mora da prati vrednosti koje dolaze odatle.


Primer 7-5: Nedozvoljeno povezivanje port-ova.
module Top;

// Deklaracija nosioca podataka koji povezuju modul Top sa modulom full_add_4.
reg [3:0] A, B;
reg C_IN;
reg [3:0] SUM; // Ispravno: wire [3:0] SUM;
wire C_OUT;

// Instanciranje modula full_add_4 sa jedinstvenim imenom fa0.

full_add_4 fa0(SUM, C_OUT, A, B, C_IN);

// Instanciranje modula full_add_4 sadrži jedno ilegalno povezivanje
// port-ova. Nosioc podatka SUM tipa reg u modulu full_add_4 je povezan
// sa nosiocem podatka SUM u Top modulu koji je isto tipa reg.
//------------------------------------
// Tu dolazi HDL opis koji predstavlja ispitni deo modula Top.
//------------------------------------
endmodule

7.2.4. Povezivanje port-ova sa signalima iz okruženja
Postoje dva naèina povezivanja port-ova navedenih u listi port-ova sa spoljnim
okruženjem (port-ovima drugih modula). Ove dve metode se ne mogu mešati.

Projektovanje primenom programabilnih logièkih kola (PLD)

- 85 -
- Povezivanje preko ureðene liste (engl.: ordered list)
Korišãenje ureðenih lista u povezivanju signala je najintuitivnija metoda za poèetne
projektante. Signali koji se povezuju ovom metodom se navode u istom redosledu i u instanciranju
modula i u definiciji modula. Ponovo ãemo se poslužiti primerom 4-bitnog potpunog sabiraèa sa
slike 7-3.
HDL opis koji prikazuje povezivanje port-ova modula Top i full_add_4 korišãenjem
ureðene liste je prikazan u primeru 7-6. Podaci iz modula Top: SUM, C_OUT, A, B i C_IN se
pojavljuju u istom redosledu pri instanciranju modula full_add_4 kao port-ovi sum, c_out, a, b i
c_in u listi port-ova pri definisanju tog modula.
Važno je naglasiti da imena nosioca podataka i port-ova koji se povezuju na bazi ureðene
liste ne moraju biti identièna. U primeru 7-6 sum i SUM su dva razlièita identifikatora jer Verilog
HDL razlikuje mala i velika slova.


Primer 7-6: Povezivanje korišãenjem ureðene liste.
module full_add_4(sum, c_out, a, b, c_in);

output [3:0] sum;
output c_out;
input [3:0] a, b;
input c_in;

//------------------------------------
// Telo modula
//------------------------------------

endmodule

module Top;

reg [3:0] A, B;
reg C_IN;
wire [3:0] SUM;
wire C_OUT;

// Instanciranje modula full_add_4 sa jedinstvenim imenom fa0.
// Podaci se povezuju na osnovu pozicije koju zauzimaju u listi port-ova.

full_add_4 fa0(SUM, C_OUT, A, B, C_IN);

//------------------------------------
// Tu dolazi HDL opis koji predstavlja ispitni deo modula Top.
//------------------------------------

endmodule

- Povezivanje port-ova na osnovu njihovih imena
Veliki projekti mogu sadržati module sa 50 i više port-ova. Pamãenje redosleda port-ova
pri definisanju modula u takvom sluèaju je nepraktièno i velika je verovatnoãa greške u
programiranju. Kao rešenje ovog problema Verilog HDL omoguãava povezivanje port-ova na
osnovu njihovih imena. U tom sluèaju redosled port-ova je nebitan. Primer 7-7 prikazuje
povezivanje podataka modula Top sa port-ovima èetvorobitnog potpunog sabiraèa na osnovu
njihovih imena.
Primer 7-7: Povezivanje port-ova na osnovu imena za primer 7-6.
full_add_4 fa0(.c_out(C_OUT), .sum(SUM), .b(B), .c_in(C_IN), .a(A));

Projektovanje primenom programabilnih logièkih kola (PLD)

- 86 -
Važno je napomenuti da se ne moraju navesti svi port-ovi kada se koristi povezivanje
port-ova na osnovu njihovih imena. Port-ovi koji su nepotrebni u datoj primeni se mogu izostaviti
pri povezivanju. Kada je u gornjem primeru port c_out nepotreban, naèin instanciranja modula
full_add_4 je prikazan u primeru 7-8.


Primer 7-8: Nepotpuno povezivanje port-ova na osnovu imena za primer 7-6 ako je
port c_out nepotreban.
full_add_4 fa0(.sum(SUM), .b(B), .c_in(C_IN), .a(A));

7.3. Hijerarhijska imena
U glavi 5 je objašnjen koncept hijerarhijskog projektovanja kojeg podržava Verilog HDL.
U toku projektovanja svakoj instanci modula i nosiocu podatka treba dodeliti identifikator (ime).
Svaki identifikator poseduje jedinstveno mesto u hijerarhiji projekta. Dobijena struktura omoguãava
dodeljivanje jedinstvenog (hijerarhijskog) imena svakom indentifikatoru. Hijerarhijsko ime je niz
identifikatora razdvojenih taèkom (“.”). Ime se formira tako da se obezbedi moguãnost adresiranja
identifikatora sa bilo kog mesta u projektu navoðenjem hijerarhijskog imena.
Pri kreiranja hijerarhijskog imena poèetna taèka je modul najvišeg nivoa. Hijerarhijsko
ime identifikatora opisuje taènu putanju (engl.: path) izmeðu poèetne taèke i datog identifikatora u
hijerarhiji projekta. Proces kreiranja hijerarhijskih imena ãe se prikazati za sluèaj RS latch-a iz
primera 7-1. Hijerarhijska struktura projekta je prikazana na slici 7-5.
Za ovu simulaciju modul na vrhu
hijerarhije je modul Stimulus. Identifikatori
koji su definisani u ovom modulu su q, notq,
reset i set. Stimulus modul instancira f1 koji
je modul tipa RS_latch. Instanca f1 instancira
n1 i n2 ILI kola. Q, NotQ, R i S su nosioci
podataka u instanci f1.



Slika 7-5:Hijerarhijska struktura formirana za
simulaciju RS latch-a.



Za dobijanje hijerarhijskih imena zapisuju se imena poèetne taèke 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
pažnju na taèke kojom se razdvajaju imena nivoa u hijerarhiji.

Primer 7-5: Hijerarhijska imena.
Stimulus.q Stimulus.f1.Q
Stimulus.notq Stimulus.f1.NotQ Stimulus.f1
Stimulus.reset Stimulus.f1.R Stimulus.f1.n1
Stimulus.set Stimulus.f1.S Stimulus.f1.n2
Projektovanje primenom programabilnih logièkih kola (PLD)

- 87 -
8. HDL opis na nivou logièkih kapija
U glavi 5, 6 i 7 su postavljeni temelji projektovanja u Verilog HDL-u razmatranjem
pristupa projektovanju, jezièkih konvencija, tipova podataka i strukture modula. Spomenuto je da se
HDL pisi mogu formirati na èetiri mguãa nivoa. U ovoj glavi se detaljno razmatra nivo logièkih
kapija (engl.: gate level).
Nivo logièkih kapija je drugi nivo apstrakcije i veãina projekata se izraðuje na ovom ili na
višim nivoima apstrakcije. Najniži nivo apstrakcije odnosno prvi nivo je nivo prekidaèa (engl.:
switch level) koji je pogodan alat samo za projektante digitalnih komponenti: kašnjenja u kolu se
mogu precizno pratiti i može se dobro oceniti efikasnost korišãenja osnovnih elemenata.
Projektovanje na nivou logièkih kapija je važno pre svega zbog toga što se na tom nivou
mogu primeniti mnogi dosadašnji rezultati projektovanja: složenija kola projektovana primenom
tradicionalnih SSI i MSI kola se tako najlakše mogu preneti u svet PLD-ova. Sa druge strane
projektovanje na nivou logièkih kapija je najbliže projektantima sa osnovnim znanjem iz
tradicionalne digitalne elektronike jer postoji korespondencija jedan na prema jedan izmeðu logièke
šeme i Verilog HDL opisa digitalnog kola. Ovo je bio razlog za opredeljenje da se u ovom tekstu
poèinje sa opisom na nivou logièkih kapija.
8.1. Vrste kapija
Verilog HDL podržava projektovanje koje polazi od prostih logièkih kola. Logièka kola su
prisutna u hardverskom jeziku kao predefinisani osnovni elementi (engl.: primitive. Njihova
primena se vrši instanciranjem isto tako kao bilo kog drugog modula. Jedina razlika je da nije
potrebno definisati module osnovnih elemenata jer su njihove definicije veã sadržane u Verilog
HDL-u. Postoje dve klase osnovnih elemenata (logièkih kola):
- I i ILI kola,
- kola za sprezanje.
8.1.1. I i ILI kola
I i ILI kola imaju jedan jednobitni (skalarni) izlaz i više jednobitnih (skalarnih) ulaza. Prvi
port u listi port-ova je izlazni a svi ostali su ulazni port-ovi. Princip rada osnovnih logièkih kola u
Verilog HDL-u je identièan onim logièkim kolima koja su realizovana kao posebna integrisana
kola: posle svake promene vrednosti nekog ulaznog signala se vrši izraèunavanje novog izlaznog
logièkog nivoa i njeno postavljanje na izlaz logièkog kola.
Imena definisanih modula za I i ILI logièka kola u Verilog HDL-u su prikazana u tabeli 8-
1. Ta imena se uvek navode na prikazani naèin kao što je sluèaj i sa kljuènim reèima.






Tabela 8-1: Imena modula za I i ILI kola definisana u Verilog
HDL-u


Na slici 8-1 su prikazani šematski simboli razmatranih logièkih kola sa dva ulaza. Ulazi su
imenovani sa i1 i i2 dok je izlaz naznaèen sa out.




Slika 8-1: Šematski simboli I / ILI
logièkih kola definisanih u Verilog
HDL-u i imena njihovih modula.
Ime modula Funkcija
and I kolo
nand NI kolo
or ILI kolo
nor NILI kolo
xor Iskljuèivo ILI kolo
xnor Iskljuèivo NILI kolo
i
1
i
2
out
i
1
i
2
out
and
nand
i
1
i
2
out
i
1
i
2
out
or
nor
out
out
i
1
i
2
out
i
1
i
2
out
xor
xnor
Projektovanje primenom programabilnih logièkih kola (PLD)

- 88 -
Primeri instanciranja logièkih kola koja su definisana u Verilog HDL-u su dati u primeru
8-1. Kod svake instance, izlazni port logièke kapije (out) je vezan na nosilac podatka tipa net sa
imenom OUT i nosioci podataka istog tipa IN1 i IN2 su prikljuèeni na ulaze logièkih kola i1 i i2.
Meðusobno povezivanje izlaza logièkih kola koje je prisutno u datom opisu nije uobièajeno.
U pimeru 8-1 prvih šest instanci odgovaraju dvoulaznim logièkim kapijama, sedma
instanca je troulazno NI kolo. U Verilog HDL-u I i ILI logièke kapije mogu imati proizvoljan broj
ulaza.
Osma instanca u primeru 8-1 nema ime. U sluèaju logièkih kapija takvo instanciranje se
takoðe smatra pravilnim. Mogu se instancirati logièka kola na stotine bez ijednog imena instanci.


Primer 8-1: Instaciranje I / ILI logièkih kola.
wire OUT, IN1, IN2, IN3;

// Instanciranje osnovnih logièkih kapija sa imenima
and a1(OUT, IN1, IN2);
nand na1(OUT, IN1, IN2);
or or1(OUT, IN1, IN2);
nor nor1(OUT, IN1, IN2);
xor x1(OUT, IN1, IN2);
xnor nx1(OUT, IN1, IN2);

// Instanciranje NI kola sa tri ulaza
nand na1_3inp(OUT, IN1, IN2, IN3);

// Instanciranje I kola bez imena
and (OUT, IN1, IN2); // Dozvoljen naèin instanciranja logièkih kola



Izlazne vrednosti datih logièkih kola na
sve moguãe varijacije ulaznih vrednosti se
odreðuju na osnovu kombinacionih tabela.
Kombinacione tabele za data logièka kola su
definisane za dva ulaza i prikazane su na slici 8-2.
Izlazne vrednosti logièkih kola sa više od dva
ulaza se izraèunavaju iterativnim postupkom na
osnovu kombinacione tabele za dva ulaza.








Slika 8-2: Kombinacione tabele dvoulaznih I / ILI
logièka kola.







nand
0 1 x z
0
1
x
z
1 1 1 1
1 0 x x
1 x x x
1 x x x
i1
i2
and
0 1 x z
0
1
x
z
0 0 0 0
0 1 x x
0 x x x
0 x x x
i1
i2
nor
0 1 x z
0
1
x
z
1 0 x x
0 0 0 0
x 0 x x
x 0 x x
i1
i2
or
0 1 x z
0
1
x
z
0 1 x x
1 1 1 1
x 1 x x
x 1 x x
i1
i2
xnor
0 1 x z
0
1
x
z
1 0 x x
0 1 x x
x x x x
x x x x
i1
i2
xor
0 1 x z
0
1
x
z
0 1 x x
1 0 x x
x x x x
x x x x
i1
i2
Projektovanje primenom programabilnih logièkih kola (PLD)

- 89 -
Kod uobièajenih kombinacionih tabela se redovno navode samo varijacije definisanih
ulaznih logièkih nivoa (nula ili jedinica). U gornjim tabelama je dato ponašanje kola i pri
neodreðenom logièkom nivou i pri stanju visoke impedanse. To je raðeno iz razloga što se i pri
fizièkoj realizaciji javljaju navedene situacije.
Logièko kolo na svom izlazu formira logièku nulu ili logièku jedinicu (meðuvrednosti nisu
karakteristiène), bez obzira na neodreðeno stanje ili stanje visoke impedanse na ulazu. Jedini
problem je da se u mnogim situacijama ne zna, koji od logièkih nivoa ãe se uspostaviti. Tabele koje
važe u hardverskim jezicima, u maksimalnoj meri prate ono što se dešava pri fizièkoj realizaciji:
ako se izlazni logièki nivo može odrediti na bazi ulaza, u tabelu je upisana 0 ili 1, ako se ne može
odrediti, navodi se x (nepoznata, neodreðena vrednost).
8.1.2. Kola za sprezanje
Ova logièka kola imaju jedan skalarni ulaz i jedan ili više skalarnih izlaza. Zadnji port
naveden u listi port-ova je prikljuèen na ulaz a svi ostali na izlaz. Naredna razmatranja u ovoj taèki
ãe se odnostiti samo na logièka kola sa jednim izlazom. Primena više izlaza je pogodna kada iz
istog kola treba pobuditi više linija.
Verilog HDL podržava dva tipa kola za sprezanje: bafere (neinvertujuãi) i invertore
(invertujuãi). Imena definisanih bafera u Verilog HDL-u su prikazana u tabeli 8-2. Ta imena se uvek
pišu na isti naèin kao što je sluèaj i kod kljuènih reèi.



Tabela 8-2: Imena definisanih modula za kola za sprezanje u
Verilog HDL-u.

Slika 8-3 prikazuje šematske oznake kola za sprezanje za sluèaj jednog izlaza. Ime
ulaznog port-a je in, a ime izlaznog port-a je out.

Slika 8-3: Šematske oznake i imena modula za
neinverujuãe i invertujuãe kolo za sprezanje..

Primer 8-2 prikazuje naèin instanciranja kola za sprezanje u Verilog HDL-u. Ponovo se
naglašava da ova logièka kola mogu imati više 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 više od jednog izlaza
buf b1_3out(OUT1, OUT2, OUT3, IN);

// Instanciranje invertora bez imena instance
not(OUT1, OUT2, IN);

Kombinacione tabele navedenih kola za sprezanje za
sluèaj sa jednim izlazom su prikazane na slici 8-4.



Slika 8-4: Kombinacione tabele kola za sprezanje.


Ime modula Funkcija
buf bafer
not invertor
in out
0 0
1 1
x x
z x
buf
in out
0 1
1 0
x x
z x
not
out in out in
buf not
Projektovanje primenom programabilnih logièkih kola (PLD)

- 90 -
8.1.3. Kola za sprezanje sa tri stanja
U Verilog HDL-u postoje i kola za sprezanje sa kontrolnim ulazom isto kao kod
hardverskih rešenje (taèka 2.1.2). Postoje èetiri varijante tih kola: njihova imena modula i funkcije
su sumirane u tabeli 8-3. I ova imena modula se koriste samo u istovetnoj formi.










Tabela 8-3: Imena modula i funkcije kola za sprezanje sa tri stanja definisana u Verilog HDL-u.

Ova kola za sprezanje se ponašaju kao obièna kola za sprezanje (taèka 8.1.2) dok su
kontrolni ulazi aktivni. U suprotnom sluèaju njihovi izlazi su u stanju visoke impedanse. Šematski
simboli kola su prikazani na slici 8-5.






Slika 8-5: Šematski simboli kola za sprezanje sa tri
stanja.





Primer 8-3 prikazuje naèin instanciranja kola za sprezanje sa tri stanja. Prvi port u listi port-
ova je izlaz, drugi je ulaz signala a treãi je kontrolni ulaz. Radi uprošãenja i ovde se može izostaviti
ime pri instanciranju.


Primer 8-3: Instanciranje logièkih kola bufif i notif.
// Instanciranje logièkih kola bufif
bufif1 b1(out, in, control); // sa sopstvenim imenom
bufif0 (out, in, control); // bez sopstvenog imena

// Instanciranje logièkih 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 definišu ponašanje kola za sprezanje
sa tri stanja. U tabelama su uzete u obzir sve moguãe situacije na ulazima (pored logièke 0 i 1 i
neodreðeno stanje i stanje visoke impedanse).





Ime modula Funkcija
bufif1 neinvertujuãi bafer, signal dozvole je aktivan na logièku jedinicu
bufif0 neinvertujuãi bafer, signal dozvole je aktivan na logièku nulu
notif1 invertujuãi bafer, signal dozvole je aktivan na logièku jedinicu
notif0 invertujuãi bafer, signal dozvole je aktivan na logièku nulu
out in out in
ctrl ctrl
bufif1 notif1
out in out in
ctrl ctrl
bufif0 notif0
Projektovanje primenom programabilnih logièkih kola (PLD)

- 91 -












Slika 8-6: Kombinacione tabele kola za
sprezanjesa tri stanja definisanih u Verilog
HDL-u.






Kola za sprezanje sa tri stanja u Verilog HDL-u imaju analognu ulogu kao odgovarajuãa
hardverska kola. Obièno se koriste u situacijama kada više kola treba da koriste zajednièku liniju za
prenos u razlièitim vremenskim intervalima (vremenski multpleks). U takvim situacijama signali se
prikljuèuju na zajednièku liniju preko kola za sprezanje sa tri stanja od kojih istovremeno uvek
samo jedan dobije dozvolu. Na taj naèin se izbegava kolizija signala na zajednièkoj liniji.
Pod kolizijom se podrazumeva situacija kada više izlaza logièkih kola vezanih na
zajednièku liniju pokušavaju da ostvare razlièite logièke nivoe. U takvoj situaciji neki izlazi daju a
neki primaju preveliku struju, nastaju veliki gubici (zagrevanje) i u nekim situacijama može da doðe
i do pregorevanje komponenti. Ne treba zanemariti ni èinjenicu da se pri koliziji formira naponski
nivo koji nije pravilani logièki nivo što može da dovodi do neoèekivanog ponašanja u kolu.

8.2. Primer projektovanja na nivou logièkih kapija: èetvorobitni potpuni
sabiraè
Ranije (taèka 4.2.1) smo se upoznali sa pojmom jednobitnog polusabiraèa i potpunog
sabiraèa i videli smo kako se može izgraditi višebitni sabiraè kaskadnom vezom potpunih sabiraèa.
U ovoj taèki ãe se formirati opis èetvorobitnog potpunog sabiraèa na hardverskom jeziku.

Lista port-ova je veã bila definisana u primeru 7-2. Za projektovanje se koriste iskljuèivo
logièka kola. Na kraju projektovanja ãe se formirati ispitni modul kojim ãe se proveriti
funkcionalnost èetvorobitnog potpunog sabiraèa. Primeniãemo top-down pristup projektovanju:
èetvorobitni sabiraè ãe se rašèlaniti na èetiri jednobitna potpuna sabiraèa.
Kombinaciona tabela jednobitnog potpunog sabiraèa je prikazana na slici 8-7. Korišãene
su sledeãe oznake:

- c_in (carry input): ulazni bit prenosa.
- a, b: ulazni jednobitni binarni brojevi.
- sum: zbir jednobitnih binarnih brojeva a i b.
- c_out (carry out): izlazni bit prenosa.



notif1
0 1 x z
0
1
x
z
z 1 x x
z 0 x x
z x x x
z x x x
ctrl
in
bufif1
0 1 x z
0
1
x
z
z 0 x x
z 1 x x
z x x x
z x x x
ctrl
in
notif0
0 1 x z
0
1
x
z
1 z x x
0 z x x
x z x x
x z x x
ctrl
in
bufif0
0 1 x z
0
1
x
z
0 z x x
1 z x x
x z x x
x z x x
ctrl
in
Projektovanje primenom programabilnih logièkih kola (PLD)

- 92 -








Slika 8-7: Kombinaciona tabela jednobitnog potpunog
sabiraèa.







Logièke jednaèine izlaznih funkcija sum i c_out su:

( )
( ) b a c_in b a c_out
c_in b a sum
© · + · =
© © =


Polazeãi od jednaèina dobija se logièka šema jednobitnog potpunog sabiraèa koja je prikazana na
slici 8-8.











Slika 8-8: Logièka šema jednobitnog potpunog
sabiraèa






Na osnovu gornje šeme, u primeru 8-4 je napisan HDL opis jednobitnog potpunog
sabiraèa na nivou logièkih kapija. Pri instanciranju logièkih kapija instance nemaju imena. Nazivi
unutrašnjih veza (èvorova) su istovetni kao na logièkoj šemi na slici 8-8.







c_in a b sum c_out
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
1
0
1
0
0
1
0
0
0
1
0
1
1
1
a b
c_in
sum
c_out
c1
c2
s1
Projektovanje primenom programabilnih logièkih kola (PLD)

- 93 -
Primer 8-4: Verilog HDL opis jednobitnog potpunog sabiraèa.
// Definicija modula
module FullAdder1bit(sum, c_out, a, b, c_in);

// Deklaracije port-ova
output sum, c_out;
input a, b, c_in;

// deklaracije internih veza
wire s1, c1, c2;

// Instanciranje logièkih kapija (bez imena instanci)
xor (s1, a, b);
xor (sum, s1, c_in);

and (c1, a, b);
and (c2, s1, c_in);

or (c_out, c1, c2);

endmodule


Kaskadnom vezom èetiri jednobitna potpuna sabiraèa nastaje èetvorobitni sabiraè koji je
prikazan na slici 8-9.

Slika 8-9: Logièka šema èetvorobitnog sabiraèa.

Na osnovu logièke šeme je formiran Verilog HDL opis èetvorobitnog sabiraèa dat u primeru
8-5. Pored potrebnih deklaracija ovaj modul vrši èetiri instanciranja modula jednobitnog potpunog
sabiraèa definisnog u primeru 8-4.


Primer 8-5: HDL opis èetvorobitnog sabiraèa.
// Definicija èetvorobitnog sabiraèa
module FullAdder4_bit(sum, c_out, a, b, c_in);

// Deklaracija port-ova
output [3:0] sum;
output c_out;

input [3:0] a, b;
input c_in;

// Deklaracija internih veza (èvorova)
wire c1, c2, c3;

// Instanciranja èetiri jednobitna potpuna sabiraèa
Projektovanje primenom programabilnih logièkih kola (PLD)

- 94 -
FullAdder1bit fa0(sum[0], c1, a[0], b[0], c_in);
FullAdder1bit fa1(sum[1], c2, a[1], b[1], c1);
FullAdder1bit fa2(sum[2], c3, a[2], b[2], c2);
FullAdder1bit fa3(sum[3], c_out, a[3], b[3], c3);

endmodule


Potrebno je naglasiti da se koristi više istih imena u listi port-ova za modul jednobitnog
potpunog sabiraèa i èetvorobitnog sabiraèa ali se ta imena odnose na razlièite podatke. Port sum
jednobitnog potpunog sabiraèa je skalarna velièina, dok port sum èetvorobitnog sabiraèa je
vektorska velièina š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 sabiraèa se moralo pridružiti jedinstveno
ime u procesu instanciranja. Isto nije bilo potrebno pri instanciranju osnovnih elementa (logièkih
kapija) pri definisanju modula jednobitnog potpunog sabiraèa (primer 8-4).
Kada je projekat završen, generisanjem ulaznih i posmatranjem izlaznih signala se mora
proveriti funkcionalnost HDL opisa. Potrebno je definisati jedan ispitni modul koji generiše ulazne
signale za projekat i prima izlazne signale. Analizom izlaznih signala ãe projektant ustanoviti da li
dati modul funkcioniše pravilno.
U primeru 8-6 je data definicija ispitnog modula pod imenom Stimulus.


Primer 8-6: Modul Stimulus za ispitivanje èetvorobitnog sabiraèa.
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 sabiraèa
FullAdder4_bit FA1(SUM, C_OUT, A, B, C_IN);

// Definisanje ulaznih signala za èetvorobitni sabiraè
initial
begin
A = 4’d0; B = 4’d0; C_IN = 1’b0;

#5 A = 4’d3; B = 4’d4;
#5 A = 4’d2; B = 4’d5;
#5 A = 4’d9; B = 4’d9;
#5 A = 4’d10; B = 4’d15;
#5 B = 4’d5; C_IN = 1’b1;
end

endmodule

8.3. Kašnjenja
Logièka kola koja su se koristila u prethodnim primerima su bila bez kašnjenja, odnosno
sa nultim kašnjenjem. Kod realnih logièkih kola uvek se javlja kašnjenje 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 kašnjenja u realnim digitalnim
sistemima, Verilog HDL omoguãava definisanje tri vrste kašnjenja za osnovna logièka kola.
Projektovanje primenom programabilnih logièkih kola (PLD)

- 95 -
- Kašnjenje porasta
Kašnjenje porasta (engl.: rise delay) je vreme
potrebno izlazu da se njegova logièka vrednost sa 0, x ili z
vrednosti poraste na 1 (slika 8-10).

Slika 8-10: Prikaz vremena kašnjenja kod rastuãe ivice signala.

- Kašnjenje opadanja
Kašnjenje opadanja (engl.: fall delay) je vreme
potrebno izlazu da se njegova logièka vrednost sa 1, x ili
z opadne na 0 (slika 8-11).

Slika 8-11: Prikaz vremena kašnjenja kod opadajuãe ivice
signala.


- Kašnjenje iskljuèivanja
Kašnjenje iskljuèivanja (engl.: turn-off delay) je vreme potrebno izlazu da se njegova
logièka vrednost sa 0, 1 ili x preðe u stanje visoke impedanse (z).
U Verilog HDL-u ne zadaje se posebna vrednost kašnjenja izlaza kada se izlaz menja sa
poznate vrednosti (0 ili 1) u nepoznato stanje (x) Softver za prevoðenje odnosno simulaciju
automatski uzima minimalnu vrednost od prethodna tri kašnjenja.
Verilog HDL podržava tri naèina zadavanja gore definisanih kašnjenja u logièkim kolima:
- Jedno kašnjenje je zadato i ta vrednost se koristi za sve prelaze.
- Dva kašnjenja su zadata i odnose se na kašnjenje porasta i opadanja. Kašnjenje
iskljuèivanja postaje manja vrednost od prethodna dva kašnjenja.
- Sve tri vrste kašnjenja su zadata i odnose se redom na kašnjenje porasta, opadanja i
iskljuèivanja.

Ukoliko ni jedna vrsta kašnjenja nije zadata, podrazumevana vrednost je 0, odnosno nema
kašnjenja. Jezièke konstrukcije za zadavanja kašnjenja su prikazane u primeru 8-7.

Primer 8-7: Jezièke konstrukcije za zadavanja kašnjenja.
// Svi prelazi imaju jednako kašnjenje koje je odreðeno vrednošãu parametra delay_time.
and #(delay_time) a1(out1, in1, in2);

// Za kašnjenje porasta i opadanja su zadate razlièite vrednosti.
or #(rise_value, fall_value) o1(out2, in1, in2);

// Za kašnjenje porasta, opadanja i iskljuèivanja su zadate tri razlièite vrednosti.
and #(rise_val, fall_value, turn_off_value) b1(out3, in, control);


U primeru 8-8 su prikazani konkretni sluèajevi za zadavanje kašnjenja. Potrebno je naglasiti
da su zadate brojne vrednosti relativne vrednosti, ne pretpostavlja se nikakva konkretna merna
jedinica.


Primer 8-8: Primeri kašnjenja.
and #(5) a1(out1, in1, in2); // Svi prelazi imaju kašnjenje od 5
// vremenskih jedinica.
and #(4,6) a2(out2, in1, in2); // Vreme porasta = 4, vreme opadanja = 6.
bufif0 #(3,4,5) b1(out3, in1, in2); // Vreme porasta = 3, vreme opadanja = 4,
// vreme iskljuèivanja = 5
t
porasta
0, x ili z 1
0
1,x ili z
t
opadanja
Projektovanje primenom programabilnih logièkih kola (PLD)

- 96 -
8.3.1. Mininimalne, tipiène i maksimalne vrednosti kašnjenja
Na današnjem nivou tehnološkog razvoja nije moguãe proizvesti dva integrisana kola sa
istim karaktreristikama. Posledica ovog tehnološkog ogranièenja je da kašnjenja integrisanih kola
istih tipova variraju unutar odreðenih granica. Uvoðenjem minimalnog, tipiènog i maksimalnog
vremena kašnjenja moguãe je proveriti ispravnost rada digitalnih kola bez obzira na to koji
konkretan primerak integrisanog kola ãe se koristiti.
Smisao pojedinih vrednosti je sledeãi:

- Minimalno vreme kašnjenja je najkraãe potrebno vreme da se pojavi odziv na izlazu nakon
promene ulaza.
- Tipièno vreme kašnjenja je oèekivano vreme kašnjenja.
- Maksimalno vreme kašnjenja je najduže potrebno vreme izlaza da odgovori na promenu na
ulazu.

Verilog HDL omoguãava definisanje minimalnog, tipiènog i maksilnog kašnjenja umesto
jedne jedine konkretne vrednosti npr. za vreme porasta. Pomoãu odgovarajuãeg izbora u
simulacionom softveru se odluèuje koja ãe se vrednost kašnjenja koristiti pri simulaciji. Izbor se
odnosi na sva logièka kola u projektu tako da ãe se recimo simulacija sprovesti sa minimalnim
vremenima za sve instance.
Ako se za odreðeno kašnjenja zadaje samo jedna vrednost, podrazumeva se da je to tipièna
vrednost kašnjenja. Primer 8-9 prikazuje naèin zadavanja minimalnih, tipiènih i maksimalnih
vrednosti kašnjenja.


Primer 8-9: Minimalne, tipiène i maksimalne vrednosti kašnjenja.
and #(4:5:6) a1(out1, i1, i2);
// Vremena kašnjenja porasta, opadanja i iskljuèivanja su jednaka:
// Min = 4, Tip = 5, Max = 6.

and #(3:4:5, 5:6:7) a2(out2, in1, in2);
// Vremena porasta: Min = 3, Tip = 4, Max = 5
// Vremena opadanja: Min = 6, Tip = 7, Max = 8
// Vremena iskljuèivanja: Min = 3, Tip = 4, Max = 5
// U sluèaju kada su zadata samo vremena porasta i opadanja, vreme iskljuèivanja se raèuna
// kao minimalna vrednost od vremena porasta i opadanja

and #(2:3:4, 3:4:5, 4:5:6) a3(out3, in1, in2);
// Vremena porasta: Min = 2, Tip = 3, Max = 4
// Vremena opadanja: Min = 3, Tip = 4, Max = 5
// Vremena iskljuèivanja: Min = 4, Tip = 5, Max = 6

8.3.2. Primer za analizu kašnjenja
Neka je dat modul simple_log_circuit u kojoj je implementirana logièka funkcija:
c b a out + · = . Implementacija ovog modula na nivou kapija šematski je prikazana na slici 8-12.
Verilog HDL opis modula simple_log_circuit je dat u primeru 8-10.







Slika 8-12: Logièka šema za simple_log_circuit.

a
b
c
out
simple_log_circuit
e
#5
#4
Projektovanje primenom programabilnih logièkih kola (PLD)

- 97 -

Primer 8-10: Definicija modula simple_log_circuit u hardverskom jeziku.
module simple_log_circuit(out, a, b, c);

// Deklaracija port-ova
output out;
input a, b, c;

// Interne veze
wire e;

// Instanciranje potrebnih primitiva za realizaciju date kombinacione mreže
and #(5) a1(e, a, b); // Kašnjenje je 5 vremenskih jedinica
or #(4) o1(out, e, c); // Kašnjenje je 4 vremenskih jedinica

endmodule


Ovaj modul se testira ispitnim modulom sa imenom stimulus koji je prikazan u primeru 8-
11.


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
simple_log_circuit slc1(OUT, A, B, C);

// Definisanje ulaznih signala za modul simple_log_circuit.
// Primenjene jezièke konstrukcije ãe se objasniti kasnije.
// Simulacija se završava posle 40 vremenskih jedinica
initial
begin
A = 1’b0; B = 1’b0; C = 1’b0;
#10 A = 1’b1; B = 1’b1; C = 1’b1;
#10 A = 1’b1; B = 1’b0; C = 1’b0;
#20 $finish;
end

endmodule


Na slici 8-13 su prikazani vremenski dijagrami dobijeni simulacijom. Logièke vrednosti
signala e i OUT se ne mogu znati pre isteka odgovarajuãih kašnjenja zato je simulator na poèetku
dijagrama stavio znakove x.











Projektovanje primenom programabilnih logièkih kola (PLD)

- 98 -



Slika 8-13: Vremeski dijagram dobijen simulacijom modula simple_log_circuit

A
B
C
e
x x x x
x x x x x x x x
0 5 10 9 14 15 20 25 29 40
OUT
Projektovanje primenom programabilnih logièkih kola (PLD)

- 99 -

9. HDL opis na nivou toka podataka
Projektovanje na nivou logièkih kapija je svrsishodno kada je reè o jednostavnim
digitalnim kolima èija logièka šema je poznata od ranije ili se lako razvije. U takvoj prilici za
projektanta je najjedostavnije da instancira i poveže potrebna logièka kola u okviru jednog Verilog
HDL opisa na nivou logièkih kapija.
Kod kompleksnijih projekata u kojima je broj logièkih kola velik, proces projektovanja na
nivou logièkih kapija postaje neefikasan. Rešenje je da se proces projektovanja podigne na jedan
viši nivo apstrakcije da bi se projektanti mogli koncentrisati samo na traženu obradu podataka i da
se ne optereãuju sa fizièkom implementaciju pomoãu logièkih kola.
U Verilog HDL-u nivo toka podataka obezbeðuje jedan viši nivo apstrakcije gde je
akcenat na toku i naèinu obrade podataka umesto da se bavimo instanciranjem i povezivanjem
logièkih kapija.
Brzo poveãavanje broja logièkih kapija koji se mogu integrisati u jedno programabilno
kolo je dovelo do sve veãe popularnosti projektovanja na nivou toka podataka. Više nijedna
kompanija ne može sebi priuštiti luksuz da resurse svojih inženjera troši na projektovanje na nivou
logièkih kapija.
I danas se za realizaciju digitalnih kola koriste logièke kapije ali formiranje konkretnih
kola vrše softveri za projektovanje na osnovu HDL opisa. Ovaj proces se naziva (automatizovanom)
logièkom sintezom. Logièka sinteza je postala popularna zato što su na raspolaganju moãni softveri
za sintezu i od strane proizvoðaèa PLD-ova i od strane nezavisnih softverskih kuãa. Ovaj pristup
omoguãava projektantima da se koncentrišu na optimizaciju toka podataka u digitalnim kolima
umjesto da gube vreme oko hardverskih detalja.
Za maksimalnu fleksibilnost u procesu projektovanja, projektanti obièno koriste HDL
opise koji kombinuju nivo toka podataka i nivo ponašanja. Izraz RTL (engl.: Register Transfer
Level) koji se sreãe u literaturi se odnosi na HDL opise koji modeliraju i na nivou toka podataka i
na nivou ponašanja.
9.1. Kontinualna dodela
Kontinualna dodela je osnovni naèin dodele neke vrednosti nosiocu podatka tipa net na
nivou toka podataka. U ovom smislu kontinualna dodela zamenjuje logièke kapije u HDL opisima
ali se pri tome poveãava nivo apstrakcije, omoguãava opis kombinacionog kola bilo koje složenosti.
Izraz za kontinualnu dodelu se poèinje kljuènom reèi assign. Odgovarajuãa jezièka konstrukcija je
prikazana u primeru 9-1.


Primer 9-1: Jezièka konstrukcija za kontinualnu dodelu vrednosti.
assign <kašnjenje> <izraz>;


Vrednost <kašnjenje> u izrazima kontinualne dodele je opcionalnog karaktera i služi za
zadavanje vremenskog intervala izmeðu promene vrednosti desne strane assign izraza i pojave te
promene na levoj strani izraza.
Kontinualne dodele imaju sledeãe karakteristike:
- Izraz za definisanje dodele sadrži znak jednakosti. Na levoj strani kljuène reèi znaka
jednakosti mora biti skalarni ili vektorski podatak tipa net ili pridruženi skalarni ili
vektorski podatak tipa net. Operacija pridruživanja je objašnjena u taèki 9.4.8. Na levoj
strani znaka jednakosti ne može da stoji podatak tipa reg.
- Kontinualne dodele su uvek aktivne. Pri svakoj promeni vrednosti operanada na desnoj
strani znaka jednakosti odmah se izraèunava nova vrednost izraza koja se odmah ili nakon
propisanog kašnjenja dodeljuje nosiocu podatka na levoj strani izraza.
Projektovanje primenom programabilnih logièkih kola (PLD)

- 100 -
- Operandi na desnoj strani izraza mogu biti podaci tipa reg, net ili Verilog HDL funkcijski
pozivi (ovo poslednje nije obraðeno u ovom opisu). Nosioci podataka tipa reg i net mogu
biti skalarnog ili vektorsk0g karaktera.


Primeri kontinualnih dodela su prikazani u primeru 9-2. Operatori kao što su &, ^, |, {, } i
+ su objašnjeni u poglavlju 9.4. U ovom momentu je važno samo obratiti pažnju na oblik assign
izraza.


Primer 9-2: Primeri kontinualne dodele.
// Kontinualna dodela. Podaci out, in1 i in2 su tipa net.
assign out = in1 & in2;

// Kontinualna dodela vektorskim podacima tipa net
// addr1_bits i addr2_bits su 16-bitni vektorski podaci tipa reg.
assign addr[15:0] = addr1_bits[15:0] ^ addr2_bits[15:0];

// U izrazu kontinualne dodele je prisutna operacija pridruživanja skalarne
// i vektorske promenlive tipa net
assign {c_out, sum[3:0]} = a[3:0] + b[3:0] + c_in;


U sledeãoj taèki je predstavljen kraãi naèin 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 omoguãava jedan kraãi naèin opisa gde se te dve operacije vrše u jednom
koraku. U primeru 9-3 je prikazan regularan i implicitni naèin pisanja kontinualnih dodela.


Primer 9-3: Regularan i implicitni naèin kontinualne dodele.
//Regularan naèin pisanja kontinualne dodele,
// prvo se deklariše nosioc podatka.
wire out;
assign out = in1 + in2;

// Isti efekat se postiže implicitnom kontinualnom dodelom.
wire out = in1 + in2;

9.2. Kašnjenja u dodelama
Vrednostima kašnjenja se odreðuje potrebno vreme da se promena u vrednosti operanada
na desnoj strani jednaèine odrazi na vrednost operanda na levoj strani jednaèine. Kašnjenja u
izrazima kontinualne dodele se mogu deklarisati na tri naèina:
- kašnjenja u regularnim dodelama (definisani kljuènom reèi assign),
- kašnjenja kod implicitnih dodela,
- kašnjenja definisana pri deklaraciji nosioca podataka tipa net.
9.2.1. Kašnjenja u regularnim dodelama
Prvi naèin zadavanje kašnjenja se koristi u regularnim izrazima za kontinualnu dodelu.
Vrednost kašnjenja se stavlja posle kljuène reèi assign. Primer 9-4 (realizuje I logiãku funkciju)
prikazuje naèin zadavanja kašnjenja u regularnoj dodeli.


Projektovanje primenom programabilnih logièkih kola (PLD)

- 101 -
Primer 9-4: Zadavanje kašnjenja u regularnoj dodeli.
assign #10 out = in1 & in2;


U primeru 9-4 rezultat promene u vrednostima signala in1 i in2 se pojavljuje na izlazu
logièkog I kola sa kašnjenjem od 10 vremenskih jedinica. Na slici 9-1 su prikazani vremenski
dijagrami signala na nosiocima podataka koji su korišãeni u primeru 9-4.


Slika 9-1: Vremenski dijagram signala na nosiocima podataka iz primera 9-4

Vremenski dijagrami prikazuju sledeãe:
- U vremenskom trenutku 10 oba ulaza su na jedinici, dok se jedinica na izlazu pojavljuje na
izlazu tek u trenutku 20, sa kašnjenjem od 10 vremenskih jedinica, u skladu sa kašnjenjem
definisanim u primeru 9-4.
- in2 ima vrednost nula u intervalu od 30 do 35, koja bi trebala vrednost izlaza promeniti u
nulu u vremenskom intervalu izmeðu 40 i 45, ali se to ne dešava jer je trajanje logièke nule
suviše kratko (kraãe od kašnjenja koje je definisano kao 10 vremenskih jedinica).
- logièke vrednosti na oba nosioca podatka na desnoj strani znaka jednakosti u vremenskom
intervalu od 60 do 65 vremenskih jedinica su jedinice. Kao posledica, izlazni signal out bi
trebao da ima vrednost jedan u intervalu vremena od 70 do 75, ali se ni to ne dešava jer
istovremeno trajanje jedinica je kraãe od kašnjenja.
- Na poèetnom delu dijagrama out (pre isteka kašnjenja) naznaèene su nepoznate vrednosti (x)
jer u tom intervalu se ne može odrediti leva strana izraza (smatra se da logièko stanje zavisi
od dogaðanja pre posmatranog intervala).

Ponašanje da logièka stanja kratkog trajanja u kontinualnim dodelama ne uzrokuju
promene na levoj strani assign izraza zove se inercijalno kašnjenje. Slièna pojava je bila prisutna i
pri opisu na nivou logièkih kapija, što je objašnjeno u poglavlju 8.3.
9.2.2. Kašnjenja u implicitnim kontinualnim dodelama
Spomenuto je (taèka 9.1.1) da Verilog HDL omoguãava definisanje implicitne kontinualne
dodele pri deklaraciji tipa podatka. Istovremeno se mogu zadati i kašnjenja. Zadavanje kašnjenja u
implicitnoj dodeli je prikazano u primeru 9-5:

Primer 9-5: Primer zadavanja kašnjenja u implicitnoj dodeli.
wire #10 out = in1 & in2;

// Gornji izraz ima isti efekat kao posebna deklaracija tipa podatka i
// pisanje izraza za kontinualnu dodelu sa kašnjenjem.
wire out;
assign #10 out = in1 & in2;
in1
in2
0 5 10 15 20 25 30 35 40
out
45 50 55 60 65 70 75 80
Projektovanje primenom programabilnih logièkih kola (PLD)

- 102 -
9.2.3. Kašnjenja definisana pri deklaraciji nosioca podataka tipa net
Kašnjenje je moguãe definisati za podatak tipa net, bez upotrebe izraza za kontinualnu
dodelu. Ako je kašnjenje definisano za podatak tipa net, onda se svaka promena prenosi na nosilac
podatka tipa net sa datom vrednošãu kašnjenja. U primeru 9-6 je prikazana odgovarajuãa jezièka
konstrukcija za kašnjenja koja su definisana pri deklaraciji tipa nosioca podatka. Ovaj naèin
definisanja kašnjenja se može koristiti i pri opisu na nivou logièkih kapija.


Primer 9-6: Kašnjenje definisano pri deklaraciji podatka tipa net.
wire #10 out;
assign out = in1 & in2;

// Gornji izrazi imaju isti efekat kao i sledeãi:
wire out;
assign #10 out = in1 & in2;


Posle kratkog upoznavanja sa osnovnim pravilima za kontinualnu dodelu i kašnjenja, slede
pravila u vezi izraza, operatora i operanada koji se koriste u izrazima kontinualne dodele.
9.3. Izrazi, operandi i operatori
Nivo toka podataka opisuje digitalno kolo korišãenjem matematièkih izraza umesto
instanciranja logièkih kola. Ti matematièki izrazi i operatori i operandi u njima èine osnovu
modeliranja na nivou toka podataka.
9.3.1. Izrazi
Izrazi su kostrukcije koje kombinuju operatore i operande radi dobijanja željene obrade
podataka (primer 9-7).


Primer 9-7: Tri izraza koji kombinuju razne operatore i operande.
a ^ b
addr1[7:4] + addr2[7:4]
in1 | in2

9.3.2. Operandi
Uopšteno, operandi mogu biti podaci bilo kog tipa definisanih u poglavlju 6.2. Neke
konstrukcije prihvataju samo odreðene tipove operanada. Operand može biti konstanta, ceo broj
(integer), realan broj (real), net, reg, vektor, deo vektorske velièine (koji može sadržati jedan ili
više bitova) ili funkcijski poziv (u ovom opisu, kao što je veã napomenuto, funkcijski pozivi ne
predstavljaju predmet razmatranja). U primeru 9-8 se prikazuju naèini korišãenja operanada.


Primer 9-8: Korišãenje raznih tipova operanada.
integer count, final_count;
final_count = count + 1; // count je operand tipa integer

real a, b, c;
c = a – b; // a i b su operandi tipa real

reg [7:0] reg1, reg2;
reg [3:0] reg_out;
reg_out = reg1 [3:0] ^ reg2[3:0]; // reg1[3:0] i reg2[3:0] su operandi koji
// predstavljaju deo vektorskih
// podataka reg1 i reg2
Projektovanje primenom programabilnih logièkih kola (PLD)

- 103 -
9.3.3. Operatori
Nad operandima se primenjuju razne operacije s ciljem dobijanja željenih rezultata.
Opreacije se definišu pomoãu operatora. U Verilog HDL-u je na raspolaganju veliki broj operatora
(primer 9-9). Tipovi operatora su predstavljeni u poglavlju 9.4.

Primer 9-9: Primeri korišãenja operatora.
d1 && d2 // && je binarni operator nad operandima d1 i d2.
!a[0] // ! je unarni operator nad operandom a[0].
C >> 2 // >> je binarni operator nad operandima C i 2.

9.4. Tipovi operatora
Verilog HDL pruža moguãnost za korišãenje velikog broja razlièitih tipova operatora.
Operatori mogu biti aritmetièki, logièki, relacioni, redukcioni, pomeraèki, pridruživaèki ili uslovni.
Neki operatori su slièni operatorima korišãenih u C programskom jeziku. Svaki operator ima
jedinstveni simbol. Tabela 9-1 prikazuje sve operatore grupisane po kategorijama.



Tip operatora Simbol operatora Operacija Broj operanada
Aritmetièki *
/
+
-
%
množenje
deljenje
sabiranje
oduzimanje
deljenje po modulu
2
2
2
2
2
Logièki !
&&
||
logièka negacija
logièko I
logièko ILI
1
2
2
Relacioni >
<
> =
< =
veãe od
manje od
veãe ili jednako
manje ili jednako
2
2
2
2
Jednakosti = =
!=
= = =
!= =
jednakost
nejednakost
case jednakost
case nejednakost
2
2
2
2
Bit ~
&
|
^
^~ ili ~^
bit negacija
bit I
bit ILI
bit EX-ILI
bit EX-NILI
1
2
2
2
2
Redukcioni &
~&
|
~|
^
^~ ili ~^
redukcioni I
redukcioni NI
redukcioni ILI
redukcioni NILI
redukcioni EX-ILI
redukcioni EX-NILI
1
1
1
1
1
1
Pomeraèki >>
<<
pomeranje udesno
pomeranje ulevo
2
2
Pridruživanje
Umnožavanje
{ }
{ { } }
pridruživanje
umnožavanje
bilo koji broj
bilo koji broj
Uslovni ? : uslovni 3
Tabela 9-1: Lista svih operatora grupisanih po kategorijama
Projektovanje primenom programabilnih logièkih kola (PLD)

- 104 -
9.4.1. Aritmetièki operatori
Aritmetièke operacije se mogu odnositi na jedan operand (unarne operacije) ili na dva
operanda (binarne operacije).

- Binarni operatori

Binarni aritmetièki operatori su: množenje ( * ), deljenje ( / ), sabiranje (+), oduzimanje (-)
i deljenje po modulu ( % ). Binarni operatori se primenjuju nad dva operanda. U primeru 9-10 je
prikazan naèin primene binarnih operatora.


Primer 9-10: Primeri korišãenja binarnih aritmetièkih operatora.
A = 4’b0011; B = 4’b0100; // Podatak A i B su vektorske velièine tipa reg
D = 6; E = 4; // Podaci D i E su tipa integer

A * B // Množenje A i B. Rezultat je 4’b1100.
D / E // Deljenje D sa E. Rezultat je 1. Ostatak deljenja se odbacuje.
A + B // Sabiranje A i B. Rezultat je 4’b0111.
B – A // Oduzimanje A od B. Rezultat je 4’b0001.

// Ako je vrednost nekog bita operanda nepoznata (x), onda je i rezultat celog izraza nepoznat (x).
in1 = 4’b101x;
in2 = 4’b1011;

sum = in1 + in2; // Rezultat sabiranja ãe biti: 4’bx

// 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 sluèaju se koriste za
zadavanje pozitivnog ili negativnog predznaka operanda. Unarni operatori + i – imaju veãi prioritet
od binarnih operatora + i –.


Primer 9-11: Primeri unarnih aritmetièkih operatora.
-4 // Minus 4
+5 // Plus 5


Korišãenje negativnih brojeva se preporuèuje samo u tom sluèaju kada je tip nosioca
podatka integer ili real. Kod brojeva koji su dati u obliku <velièina>’<osnova_brojnog_sistema>
<broj> bi trebalo izbegavati korišãenje negativnog predznaka jer takve brojeve Verilog HDL
prevodi u oblik drugog komplementa i rezultat može biti neoèekivan (primer 9-12).


Primer 9-12: Primer neoèekivanog rezultata pri deljenju negativnog broja datog u
obliku <velièina>’<osnova_brojnog_sistema><broj>.
// Za predstavljanje negativnih brojeva se preporuèuje korišãenje
// nosioca podatka tipa integer ili real.
// Ako se koristi nosioc podatka integer ili real, dobija se oèekivani rezultat.
-10 / 5 // Rezultat je -2.

// Izbegavati oblik <velièina>’<osnova_brojnog_sistema><broj> za predstavljanje neg. brojeva
-‘d10 / 5 // Rezultat je (drugi komplement od 10) / 5 = (2
32
– 10) / 5
Projektovanje primenom programabilnih logièkih kola (PLD)

- 105 -
// gde 32 je podrazumevana širina reèi datog raèunara.
// Rezultat je neoèekivan i pogrešan.

9.4.2. Logièki operatori
Logièki operatori koji se mogu koristiti u Verilog HDL-u su: logièko I (znak &&), ILI (
znak || ) i NE (znak ! ) operatori (primer 9-13). Operatori && i || povezuju dva operanda (binarni
operatori). Operator ! se odnosi na jedan operand (unarni operator). Rad logièkih operatora odreðuju
sledeãa pravila:
 Rezultat logièkih operacija je uvek velièine jedan bit i može biti 0 (netaèan), 1 (taèan) ili x
(neodreðen).
 Ako je vrednost operanda razlièita od nule, njegov logièki ekvivalent je 1 (taèan). Ako je
vrednost operanda jednaka nuli, njegov logièki ekvivalent je 0 (netaèan). Ako je vrednost
jednog ili više bita kod nekog operanda x ili z, njegov logièki ekvivalent je x (neodreðeno).
 U logièkim operacijama operandi mogu biti nosioci podataka i izrazi.

Korišãenje zagrada za grupisanje logièkih izraza je preporuèljivo kako bi se poveãala
preglednost HDL opisa. Druga prednost korišãenja zagrada je da se ne mora paziti na prioritete
korišãenih operatora.


Primer 9-13: Primeri korišãenja logièkih operatora.
// Prosti sluèajevi.
A = 3; B = 0;
A && B // Rezultat je: ( 1 && 0 ) = 0.
A || B // Rezultat je: (1 || 0 ) = 1.
!A // Rezultat je: NE( 1 ) = 0.
!B // Rezultat je: NE( 0 ) = 1.

// Neodreðeni bitovi u operandima.
A = 2’b0x; B = 2’b10;
A && B // Rezulat je: ( x && 1 ) = x.

// Primena izraza kao operanda.
(a == 1 ) && ( b == 3 ) // Rezultat je 1 ako su oba uslova taèna.
// Rezultat je 0 ako je barem jedan od ta dva uslova netaèan.

9.4.3. Relacioni operatori
Relacione operacije su: veãe od ( znak > ), manje od (znak < ), veãe ili jednako (znak
>=), manje ili jednako (znak <= ). Rezultat relacione operacije je 1 ako je iskaz taèan, odnosno 0
ako je iskaz netaèan. Ukoliko jedan od operanada u iskazu sadrži x ili z vrednost, rezultat relacione
operacije je x. Ovi operatori funkcionišu na identièan naèin kao njihovi odgovarajuãi operatori u
programskom jeziku C. U primeru 9-14 su prikazani naèini primene relacionih operatora.


Primer 9-14: Primeri korišãenja relacionih operacija.
A = 4; B = 2;
X = 4’b1010; Y = 4’b1011; Z = 4’b1xxx;

A <= B; // Rezultat je 0.
A > B; // Rezultat je 1.
Y <= X; // Rezultat je 0.
Y < Z; // Rezultat je x.
Projektovanje primenom programabilnih logièkih kola (PLD)

- 106 -
9.4.4. Operatori jednakosti
U ovu grupu spadaju operacije logièke jednakosti ( znak = = ), logièke nejednakosti (znak
!=), case jednakosti (znak = = = ) i case nejednakosti (znak != =). Opreacije jednakosti kao
rezultat daju 1 ako je iskaz taèan, odnosno 0 ako je netaèan (tabela 9-2). Ovi operatori uporeðuju
operande bit po bit. Ako su operandi razlièitih velièina, dopuni se operand manje velièine sa nulama
sa strane veãe težine pre uporeðivanja.


Izrazi Opisi
Moguãe logièke
vrednosti
a = = b a jednako b, rezultat je neodreðen ako je x ili z prisutan meðu
bitovima a ili b
0, 1, x
a != b a nije jednako b, rezultat je neodreðen ako je x ili z prisutan meðu
bitovima a ili b
0, 1, x
a = = =
b
a jednako b, pri ispitivanj jednakosti se razmatraju i vrednosti x ili z
u bitovima a i b
0, 1
a != = b a nije jednako b, pri ispitivanj jednakosti se razmatraju i vrednosti x
ili z u bitovima a i b
0, 1

Tabela 9-2: Opisi operacija jednakosti.


Važno je naglasiti razliku izmeðu operatora logièke jednakosti ( = =, != ) i case
jednakosti ( = = =, != = ) (primer 9-15). Operatori logièke jednakosti (= =, != ) kao rezultat
proveravanja jednakosti dva operanda daju x, ako barem jedan od dva operanda sadrži x ili z. Za
razliku od toga, operatori case jednakosti ( = = =, != = ) proveravaju oba operanda bit po bit,
ukljuèujuãi i vrednosti x i z. Operatori case jednakosti nikada ne daju rezultat x.


Primer 9-15: Primeri korišãenja operacija jednakosti.
A = 4; B = 3;
X = 4’B1010; Y = 4’b1101;
Z = 4’b1xxz; M = 4’b1xxz; N = 4’b1xxx;

A == B // Rezultat je 0.
X != Y // Rezultat je 1.
X == Z // Rezultat je x.
Z === M // Rezultat je 1 jer svi bitovi se poklapaju ukljuèujuãi x i z.
Z === N // Rezultat je 0 jer bitovi sa najmanjom binarnom težinom se razlikuju.
M !== N // Rezultat je 1.

9.4.5. Operatori bit po bit
Operacije nad bitovima su: negacija (znak ~ ), I ( znak & ), ILI (znak | ), EX-ILI (znak ^ ),
EX-NILI (znak ^~ ili ~^ ). Operatori bit po bit izvršavaju bit po bit operacije nad jednim ili dva
operanda. Pri negaciji, pojedinaèno se negiraju bitovi operanda. U preostalim sluèajevima aktuelna
operacija se izvršava redom nad pojedinaènim bitovima prvog operanda i njemu odgovarajuãim
bitom drugog operanda. Ako su dva operanda razlièitih velièina, manji ãe se proširiti nulama na
velièinu veãeg operanda. U primeru 9-16 su prikazane primene operatora tipa bit po bit.


Primer 9-16: Primeri upotrebe operacija bit po bit.
X = 4’b1010; Y = 4’b1101 ; Z = 4’b10x1;

~X // Negacija bit po bit. Rezultat je 4’b0101.
X & Y // I operacija bit po bit. Rezultat je 4’b1000.
Projektovanje primenom programabilnih logièkih kola (PLD)

- 107 -
X | Y // ILI operacija bit po bit. Rezultat je 4’b1111.
X ^ Y // EX-ILI operacija bit po bit. Rezultat je 4’b0111.
X ^~ Y // EX-NILI operacija bit po bit. Rezultat je 4’b1000.
X & Z // I operacija bit po bit. Rezultat je 4’b10x0.


Kombinacione tabele za operacije bit po bit su prikazane na slici 9-2. Vrednost z u
operacijama bit po bit se tretira kao vrednost x. U suštini, na isti naèin smo postupili i pri
projektovanju na nivou logièkih kapija (8. fejezet).















Slika 9-2: Kombinacione tabele
za operacije bit po bit.




Važno je naglasiti razliku izmeðu operatora nad bitovima: ~, &, | i logièkih operatora: !,
&&, ||. U logièkim operacijama operandi se smatraju za jednu logièku promenljivu bez obzira na
broj bita dok se kod opearcija bit po bit operacija izvršava nad pojedinim bitovima operanda
(primer 9-17).


Primer 9-17: Primer koji prikazuje razliku izmeðu operacija bit po bit i logièkih
operacija.
X = 4’b1010; Y = 4’b0000;

X | Y; // ILI operacija bit po bit. Rezultat je 4’b1010;
X || Y; // Logièka ILI operacija. Izraz je ekvivalentan sa 1 || 0 = 1.

9.4.6. Redukcioni operatori
Redukcione operacije su: I (znak &), NI (znak ~&), ILI (znak | ), NILI (znak ~| ), EX-ILI
(znak ^) i EX-NILI (znak ~^ ili ^~). Redukcioni operatori se odnose samo na jedan operand (unarne
operacije). Izvršavaju se operacije nad bitovima operanda i kao rezultat uvek se dobija jedan bit.
Kombinacione tabele redukcionih operatora se poklapaju sa kombinacionim tabelama
operacija bit po bit prikazanih u taèki 9.4.5 (slika 9-2). Razlika izmeðu njih je da se redukcione
operacije izvršavaju nad bitovima jednog operanda kreãuãi se od bita najveãe težine prema bitu
najmanje težine, dok se operacije bit po bit izvršavaju nad bitom (bitovima) odreðene težine jednog
ili dva operanda. Ovo je prikazano u primeru 9-18.


Iskljuciva NILI
operacija bit po bit
0 1 x
0
1
x
1 0 x
0 1 x
x x x
Iskljuciva ILI operacija
bit po bit
0 1 x
0
1
x
1 0 x
0 1 x
x x x
ILI operacija
bit po bit
0 1 x
0
1
x
0 1 x
1 1 x
x x x
I operacija
bit po bit
0 1 x
0
1
x
0 0 x
0 1 x
x x x ~A A
0
1
x
1
0
x
NE operacija
bit po bit
Projektovanje primenom programabilnih logièkih kola (PLD)

- 108 -
Primer 9-18: Primeri sa redukcionim operacijama.
X = 4’b1010;

&X // Izraèunava se pomoãu jednaèine: 1 & 0 & 1 & 0 = 1’b0.
|X // Izraèunava se pomoãu jednaèine: 1 | 0 | 1 | 0 = 1’b1.
^X // Izraèunava se pomoãu jednaèine: 1 ^ 0 ^ 1 ^ 0 = 1’b0.

// Redukcione operacije EX-ILI ili EX-NILI se mogu iskoristiti za generisanje
// bita parnosti ili neparnosti nekog vektora.

9.4.7. Operatori pomeranja
Operacije pomeranja su: pomeranje udesno ( znak >> ) i pomeranje ulevo (znak << ). Pri
ovim operacijama pomera se sadržaj vektorskog operanda udesno ili ulevo za dati broj binarnih
mesta. Prvi operand je vektor èiji se sadržaj pomera a drugi operand je vrednost koja odreðuje broj
binarnih mesta za koja se vrši pomeranje. Prazna binarna mesta se tokom pomeranja ne popunjavaju
bitovima koji su ispali veã nulama. Naèini primene operatora pomeranja su prikazani u primeru 9-
19.


Primer 9-19: Primeri sa operacijama pomeranja.
X = 4’b1100;

Y = X >> 1; // Y = 4’b0110. Sadržaj vektora X se pomera za jedan bit udesno i
// mesto najviše znaèajnog bita se popunjava sa 0.
Y = X << 1; // Y = 4’b1000. Sadržaj vektora X se pomera za jedan bit ulevo i
// mesto najmanje znaèajnog bita se popunjava sa 0.
Y = X << 2; // Y = 4’b0000. Sadržaj vektora X se pomera za dva bita ulevo i
// mesta dva najmanje znaèajnih bitova se popunjavaju sa 0.


Operatori pomeranja su korisni jer omoguãuju implementaciju algoritama za množenje (koji
se sastoje od pomeranja i sabiranja), algoritama za kodovanje u telekomunikacijama itd.
9.4.8. Operator pridruživanja
Operacija pridruživanja ( znak {, } ) omoguãava povezivanje više operanada u jedan
operand. Operandi moraju imati specificiranu velièinu. Operandi bez zadate velièine su
nedozvoljeni jer se ne bi mogla izraèunati velièina rezultata.
Operacija pridruživanja se sastoji od niza operanada razdvojenih zarezom unutar vitièastih
zagrada. Operandi mogu biti skalarni podaci tipa net ili reg, vektorski podaci tipa net ili reg, deo
vektorskog podatka ili konstante sa velièinom (primer 9-20).


Primer 9-20: Primeri sa operacijama pridruživanja.
A = 1’b1; B = 2’b00; C = 2’b10; D = 3’b110;

Y = { B, C }; // Y = 4’b0010
Y = { A, B, C, D, 3’b001 }; // Y = 11’b10010110001
Y = { A, B[0], C[1] }; // Y = 3’b101

9.4.9. Operator umnožavanja
Operacija umnožavanja ( znak { { } } ) ima dva operanda. Prvi operand je konstanta koja
odreðuje koliko puta je potrebno uzastopno napisati drugi operand (primer 9-21). Operatore
umnožavanja i pridruživanja unutar jednog izraza je moguãe kombinovati na sledeãi naèin:

Projektovanje primenom programabilnih logièkih kola (PLD)

- 109 -
{ konst
1
{broj
1
}, konst
2
{broj
2
}, ..., konst
n
{broj
n
} }


Primer 9-21: Primeri operacija umnožavanja u kombinaciji sa pridruživanjem.
reg A;
reg [1:0] B, C;
A = 1’b1; B = 2’b00; C = 2’b10;
Y = { 4{A} }; // Y = 4’b1111
Y = { 4{A}, 2{B} }; // Y = 8’b11110000
Y = { 4{A}, 2{B}, C }; // Y = 10’b1111000010

9.4.10. Uslovni operator
Uslovni operator ( znak ?: ) ima tri operanda. Naèin upotrebe je sledeãi:


uslov ? izraz_za_sluèaj_taènog_uslova : izraz_za_sluèaj_netaènog_uslova;


Pri izvršavanju uslovne operacije, prvo se izraèunava taènost (logièka vrednost) iskaza
uslov. Ako je uslov taèan, koristi se izraz_za_sluèaj_taènog_uslova. Ako je uslov netaèan, koristi se
izraz_za_sluèaj_netaènog_uslova.
Ako je taènost iskaza uslov neodreðena (x) onda se izraèunavaju vrednosti oba izraza
(izraz_za_sluèaj_taènog_uslova : izraz_za_sluèaj_netaènog_uslova) i rezultat se formira
uporeðivanjem izraza. Rezultat se odreðuje bit po bit: na onim binarnim mestima gde oba izraza
daju istu logièku vrednost, stavlja se ta vrednost dok u sluèaju nepoklapanja stavlja se vrednost x.
Uslovni operatori se èesto koriste na nivou toka podataka za modeliranje uslovnih
dodeljivanja: taènost uslova odreðuje, vrednost kojeg izraza ãe se dodeliti nosiocu podatka na levoj
strani assign izraza.
Uslovna dodela radi kao digitalni
multipleksor 2/1 (slika 9-3, primer 9-22) tako
da se uslovna operacija može koristiti za
opisivanje multipleksora.





Slika 9-3: Demonstracija funkcionisanja uslovne
operacije pomoãu multipleksora 2/1.



Pored opisivanja multipleksora na nivou toka podataka, uslovni operatori se primenjuju i
za opisivanje bafera sa tri stanja (slika 9-4, primer 9-22).




Slika 9-4: Kolo za sprezanje sa tri stanja.





addr_bus addr_out
drive_enable
Multipleksor
2/1
0
out
1
in0
in1
control
Projektovanje primenom programabilnih logièkih kola (PLD)

- 110 -
Primer 9-22: Opisivanje multipleksora i kola za sprezanje sa tri stanja pomoãu uslovne
operacije.
// Opisivanje multipleksora 2/1 (slika 9-3) pomoãu uslovne operacije.
assign out = control ? in1 ? in2;

// Modeliranje kola za sprezanje sa tri stanja (slika 9-4)
// korišãenjem uslovne opercije.
assign addr_bus = drive_enable ? addr_out : 36’bz;


Uslovne operacije je moguãe koristiti i na iterativan naèin. Izrazi unutar uslovnih operacija
mogu da sadrže druge uslovne operacije. Ova moguãnost je prikazana preko jednog primera.
Zadatak je da se uporede dva dvobitna broja (A i B). Vrednost izlaza treba da bude logièka
jedinica ako su oba broja parna ili neparna, u suprotnom sluèaju vrednost izlaza postaje logièka
nula. Dovoljno je ispitati parnost bita najmanje težine na naèin koji je prikazan u primeru 9-23.
Izlaz se odreðuje u dva koraka (na iterativan naèin) primenom uslovnih operacija.


Primer 9-23: Uslovne opercije korišãene na iterativan naèin.
reg [1:0] A, B; // Podaci A, B su reg tipa, velièine 2 bita.

assign out = A[0] ? ( B[0] ? 1’b1 : 1’b0 ) : ( B[0] ? 1’b0 : 1’b1);

9.4.11. Hijerarhija operacija
Prioritete operacija u izrazima bez zagrada Verilog HDL odreðuje prema tabeli 9-2.
Preporuèuje se korišãenje zagrada za razdvajanje izraza kako bi se izbegli problemi oko odreðivanja
prioriteta operacija. Izuzetak èine unarne operacije kod kojih ne postoji neizvesnost oko prioriteta.



Operacije Simboli operatora Prioriteti
unarni
množenje, deljenje, deljenje po modulu
+ - ! ~
* / %
Najveãi prioritet
sabiranje, oduzimanje
pomeranje
+ -
<< >>

relacione
jednakosti
< <= > >=
= = != = = = != =

redukcioni


logièki
& ~&
^ ~^
| ~|
&& ||

uslovni ? : Najmanji prioritet

Tabela 9-2: Hijerarhija operacija

Projektovanje primenom programabilnih logièkih kola (PLD)

- 111 -
10. HDL opis na nivou ponašanja
Najviši nivo za opis digitalnih kola pomoãu hardverskog jezika je nivo ponašanja. Visoki
nivo apstrakcije omoguãava da se projektant ne optereãuje detaljima realizacije, veã ponašanjem
kola koje se projektuje. Ovi opisi jako lièe na programe napisane u programskom jeziku C ali uvek
treba imati na umu da hardverski opis služi za formiranje odreðenog digitalnog kola. Na osnovu
HDL opisa softver za sintezu razvije kolo koje se na kraju ostvaruje programiranjem odgovarajuãeg
PLD-a.
Verilog HDL moduli za opis simulacija obièno sadrže opise na nivou ponašanja koji nisu
predviðeni za hardversku realizaciju, njihova namena je samo ispitivanje drugih modula.

10.1. Struktuirane procedure
Opisi na nivou ponašanja se mogu pisati u okviru jedne od dve moguãe struktuirane
procedure (engl.: structured procedure). Na osnovu kljuènih reèi kojima se uvode te procedure oni
se zovu initial i always procedure. Instrukcije na nivou ponašanja se mogu pojaviti samo unutar tih
procedura.
Jedan Verilog HDL modul može da sadrži i više struktuiranih procedura. Definicija nove
procedure se ne može poèeti dok nije završena prethodno zapoèeta. Sve te procedure u toku
simulacije projektovanog modula poèinju u trenutku t=0 i izvršavaju se paralelno (konkurentno), za
razliku od softverskih algoritama gde se izvršavanje programa dešava sekvencijalno, korak po
korak. Ta osobina je povezana sa time da se u digitalnom kolu koje se realizuje na bazi HDL opisa,
razni blokovi takoðe rade istovremeno, paralelno obavljaju funkcije.

10.1.1. Procedura tipa initial
Procedura tipa initial poèinje sa kljuènom reèi initial. Posle kljuène reèi sledi initial blok
koji može da sadrži jednu ili više dodela vrednosti. Izvršavanje operacija u initial bloku poèinje u
trenutku t=0 i izvršavanje se dešava taèno jedan puta. Ako jedan modul sadrži više initial
procedura, izvršavanje svakog od njih poèinje u trenutku t=0, izvršavaju se i završavaju se
meðusobno nezavisno.
Pri projektovanju digitalnih kola initial procedure se obièno koriste za jednokratna
podešavanja. U veãini sluèajeva initial procedure se ne odnose na opis nekog kola, veã se koriste u
simulacionim modulima za zadavanje pobudnih signala.
Ako initial procedura sadrži samo jednu dodelu vrednosti, ona se piše neposredno iza
kljuène reèi initial. Ako se iza kljuène reèi navodi initial blok koji sadrži više dodela, pre bloka
treba napisati kljuènu reè begin, a na kraj bloka treba staviti kljuènu reè end. U primeru 10-1 se
mogu videti razne initial procedure.

Primer 10-1: Simulacioni modul koji sadrži više initial procedura.
module Stimulus;
reg a, b, m;
initial
m=1’b0; // U sluèaju jedne dodele nisu potrebne kljuène reèi begin i end.
initial
begin
#5 a=1’b1; // U sluèaju dve dodele veã je potrebna primena kljuènih reèi
#25 b=1’b0; // begin i end. Kašnjenja u procedurama ãe se objasniti kasnije.
end
initial
#50 $finish; // Procedura tipa initial koja sadrži jednu instrukciju koja definiše
// kraj simulacije.
endmodule

Projektovanje primenom programabilnih logièkih kola (PLD)

- 112 -
U toku simulacije gore navedenog modula sve tri initial procedure kreãu u trenutku t=0.
Pojedina dodeljivanja ãe se izvršavati sa kašnjenjem, ako je tako definisano u opisu. Stvarna
vremena izvršavanja dodeljivanja i instrukcija su data u tabeli 10-1.

vreme dodela
0 m=1’b0
5 a=1’b1
30 b=1’b0
50 $finish

Tabela 10-1: Stvarna vremena izvršavanja dodela i instrukcija iz primera 10-1.

10.1.2. Procedura tipa always
Definisanje always procedure poèinje sa kljuènom reèi always, nakon èega sledi always
blok sa jednom ili više dodela. I u ovom sluèaju je potrebno koristiti kljuène reèi begin i end ako se
radi o bloku koji sadrži više dodela. Dodele iz always bloka se ciklièki ponavljaju u toku celog
vremena simulacije (ako je reè o simulacionom modulu) ili za sve vreme rada projektovanog kola.
U primeru 10-2 je dat modul za generisanje takt signala (koji sadrži always proceduru), potreban za
simulaciju nekog kola.

Primer 10-2: Modul za generisanje takt signala sa always procedurom.
module clock_gen;
reg clock;
initial
clock=1’b0; // Takt signal kreãe sa niskog logièkog nivoa.
always
#10 clock=~clock; // Posle svakih deset vremenskih jedinica treba invertovati
// logièku vrednost takt signala.
initial
#1000 $finish; // Procedura tipa initial za definisanje kraja simulacije.
endmodule


10.2. Dodela vrednosti u procedurama
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 vrši nova dodela.
Ovo je znaèajna razlika u odnosu na dodele na nivou toka podataka: tamo je dodela nove vrednosti
nosiocima podataka tipa net izvršavana kontinualno. Èim se desi neka promena u ulaznim
podacima, odmah je izraèunata i dodeljena nova vrednost izlaznom nosiocu podataka.
Dodele o kojima je ovde reè se definišu 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
pridruženi nosioci podataka.
Razlikujemo dve vrste dodela u procedurama: postoje blokirajuãe i neblokirajuãe dodele.
Razlike meðu tim dodelama ãe se objasniti u narednoj taèki.

10.2.1. Blokirajuãe dodele
Znak dodele u blokirajuãim dodelama je znak jednakosti (=). Ove dodele se izvršavaju u
onom redosledu, kako su navedeni u initial ili always bloku. Dodela koja je trenutno stigla u fazu
izvršavanja blokira sledeãe dodele u tom bloku. Dodele navedene u dvema razlièitim initial ili
always procedurama ne blokiraju jedan drugog, izvršavaju se nezavisno. U primeru 10-3 se vidi deo
Projektovanje primenom programabilnih logièkih kola (PLD)

- 113 -
jednog modula sa blokirajuãim dodelama, a u tabeli 10-2 je sumirano po kom redosledu pojedine
dodele dolaze na izvršavanje i u kom momentu se izvršavaju.


Primer 10-3: Deo modula sa blokirajuãim dodelama.
reg x, y, z;
reg [15:0] reg_a, reg_b;
integer count;
initial
begin
x=1’b0; y=1’b; x=1’b1;
count=0;
reg_a=16’b0; reg_b=reg_a;
#15 reg_a[2]=1’b1;
#10 reg_b[15:13]={x,y,z};
count=count+1;
end








Tabela 10-2: Redosled dolaska na
izvršavanje i vreme izvršavanja dodela iz
primera 10-3.



U dodelama se može desiti da nosilac podatka sa leve strane znaka dodele nema isti broj
bita kao izraèunata vrednost izraza sa desne strane znaka dodele. Ako nosilac podatka ima manji
broj bita, bitovi manje težine iz vrednosti izraza se dodeljuju nosiocu podatka, a bitovi veãe težine
otpadaju. U suprotnom sluèaju nedefinisani bitovi se popunjavaju nulama.

10.2.2. Neblokirajuãe dodele
U neblokirajuãim dodelama se koristi znak <=. Taj znak se ujedno koristi i u operacijama
uporeðivanja, ali softver koji tumaèi HDL opis ume da rastumaèi da li se radi o uporeðenju ili o
dodeli. Kod ovih dodela dodela koja je na redu ne blokira izvršavanje narednih dodela. Ponoviãemo
primer 10-3, ali tri dodele ãemo promeniti da budu neblokirajuãe i pratiãemo posledice (primer 10-
4). U tabeli 10-4 je sumirano po kom redosledu pojedine dodele iz primera 10-4 dolaze na
izvršavanje i u kom momentu se izvršavaju.

Primer 10-4: Deo modula sa blokirajuãim i neblokirajuãim dodelama.
reg x, y, z;
reg [15:0] reg_a, reg_b;
integer count;
initial
begin
x=1’b0; y=1’b; x=1’b1;
count=0;
reg_a=16’b0; reg_b=reg_a;
reg_a[2]<= #15 1’b1;
reg_b[15:13]<= #10 {x,y,z};
Redosled dolaska
na izvršavanje
Vreme
izvršavanja
Dodela
1 0 x=1’b0
2 0 y=1’b1
3 0 z=1’b1
4 0 count=0
5 0 reg_a=1’b0
6 0 reg_b=reg_a
7 15 reg_a[2]=1’b1
8 25 reg_b[15:13]={x,y,z}
9 25 count=count+1
Projektovanje primenom programabilnih logièkih kola (PLD)

- 114 -
count<=count+1;
end









Tabela 10-3: Redosled dolaska dodela na
izvršavanje iz primera 10-4 i stvarna
vremena njihovog izvršavanja.




Može se reãi da se prvih šest dodela izvršavaju u trenutku t=0, i to u redosledu pisanja
(osobina blokirajuãih dodela). Posle toga, ali još uvek u trenutku t=0, preostale tri dodele dolaze na
izvršavanje istovremeno. Ako nije naznaèeno nikakvo kašnjenje, naznaèene dodele se dešavaju
odmah (u trenutku t=0). Ako ima kašnjenja, nosilac podatka sa leve strane znaka dodele ãe nakon
isteka kašnjenja primiti vrednost koja je izraèunata na osnovu vrednosti podataka u izrazu sa desne
strane znaka dodele u trenutku t=0.
Sa neblokirajuãim dodelama se obièno opisuju digitalna kola u kojima se dešava
konkurentni (istovremeni) prenos podataka pod delovanjem zajednièkog kontrolnog signala. U
primeru 10-5 se dešavaju tri dodele na uzlaznoj ivici takt signala. Vremenska kontrola dodela u
procedurama (pomoãu takt signala ili drugaèije) ãe se obraditi detaljno u poglavlju 10.3.


Primer 10-5: Konkurentni prenos podataka primenom neblokirajuãih dodela.
always @ (posedge clock)
begin
reg1<=#1 in1;
reg2<=@(negedge clock) in2^in3;
reg3<=#1 reg1;
end


U gornjem primeru na uzlaznoj ivici takt signala dešavaju se sledeãe stvari:

- Odrede se vrednosti podataka u izrazima sa desne strane znakova dodele (in1, in2, in3,
reg1), dotièni izrazi se odmah izraèunaju i dobijene vrednosti zapisuju u privremenoj
memoriji.
- Stvarne dodele se dešavaju kada im doðe vreme. Prva i treãa dodela se odigravaju nakon
kašnjenja od jedne vremenske jedinice (zbog naznaèenog kašnjenja), dok se druga dodela
izvršava na najbližoj silaznoj ivici takt signala.
- Nije bitno po kom redosledu ãe se vršiti upis u odgovarajuãe registre (izvršavanje dodele)
pošto sadržaj privremene memorije ne zavisi od redosleda. Npr. u treãoj 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 neblokirajuãih dodela, prvo
posmatrajmo primer 10-6.


Redosled dolaska
na izvršavanje
Vreme
izvršavanja
Dodela
1 0 x=1’b0
2 0 y=1’b1
3 0 z=1’b1
4 0 count=0
5 0 reg_a=1’b0
6 0 reg_b=reg_a
7 15 reg_a[2]=1’b1
7 10 reg_b[15:13]={x,y,z}
7 0 count=count+1
Projektovanje primenom programabilnih logièkih kola (PLD)

- 115 -
Primer 10-6: HDL opis sa blokirajuãim dodelama koji dovodi do efekta protrèavanja.
always @ (posedge clock)
a=b;
always @ (posedge clock)
b=a;


Navedene dve always procedure kreãu istovremeno (pri svakoj uzlaznoj ivici takt signala).
Nijedan od napisanih blokirajuãih dodela u navedenim procedurama nema prioritet (pošto su
napisane u dvema procedurama) zato ãe redosled izvršavanja biti sluèajan. Kada se jedna dodela
izvrši, oba registra ãe sadržati istu vrednost, sledeãa dodela veã nema efekta.
Efekat protrèavanja se može spreèiti primenom neblokirajuãih dodela (primer 10-7). U
ovom sluèaju se prvo zapišu poèetne vrednosti podataka sa desne strane znaka za dodelu. Nakon
toga se izvrše dodele korišãenjem zapisanih vrednosti i rezultat neãe zavisiti od redosleda
izvršavanja.


Primer 10-7: Spreèavanje efekta protrèavanja primenom neblokirajuãih dodela.
always @ (posedge clock)
a<=b;
always @ (posedge clock)
b<=a;


Na osnovu gornjeg HDL opisa sintetizuje se digitalno kolo (kružni brojaè) prikazano na
slici 10-1. U kolu ãe se nakon svake uzlazne ivice takt impulsa (clk) zameniti sadržaji flip-flop-ova.
Osnovna osobina ivièno okidanih kola je da uzorkuju ulazne signale na odgovarajuãoj
ivici takt signala i nakon toga izvrše potreban upis u skladu sa uzorkovanim vrednostima. Ako se
ulazni signali promene nakon ivice takt signala, to neãe imati nikakvog efekta na upis.










Slika 10-1: Digitalno kolo sintetizovano na bazi HDL opisa iz primera 10-7.


Efekat protrèavanja se može izbeãi i primenom blokirajuãih dodela i to na naèin prikazan
u primeru 10-8. Uvoðenjem (privremenih) nosilaca podataka temp_a i temp_b, poèetne vrednosti se
zapisuju i tražena smena podataka se pravilno odigrava.


Primer 10-8: Spreèavanje efekta protrèavanja privremenim memorisanjem podataka.
always @ (posedge clock)
begin
temp_a=a;
temp_b=b;
a=temp_b;
b=temp_a;
end

D Q D Q
a
clk
b
Projektovanje primenom programabilnih logièkih kola (PLD)

- 116 -
10.3. Vremenska kontrola dodela u opisima na nivou ponašanja
Ako u proceduralnim dodelama prilikom opisa na nivou ponašanja ne navodimo nikakvu
vremensku kontrolu, u toku simulacije opisa neãe biti napredovanja na vremenskoj skali. Pri
projektovanju realnih kola preciznije modelovanje zahteva primenu vremenske kontrole. U
struktuiranim procedurama (initial i always) vremenska kontrola se može vršiti na tri naèina:
- zadavanjem kašnjenja;
- iviènim okidanjem;
- okidanjem na nivo signala.
10.3.1. Vremenska kontrola zadavanjem kašnjenja
Zadavanjem kašnjenja definišemo vreme koje treba da proðe izmeðu dolaska dodele na
izvršavanje i njenog stvarnog izvršavanja. Kašnjenja uvodimo sa znakom #, posle znaka se piše
vrednost kašnjenja u vidu brojèane vrednosti, identifikatora ili min/typ/max izraza.
Pri pravilnom naèinu pisanja, kašnjenje se navodi pre dodele. Ovaj sluèaj je prikazan u
primeru 10-9.

Primer 10-9: Pravilan naèin pisanja kašnjenja kod dodela.
initial
begin
#10 y=1’b1;
#latency z=1’b0;
#(4,5,6) q=1’b0;
end


Prva dodela se izvršava nakon kašnjenja od deset vremenskih jedinica raèunato u odnosu
na t=0. Ako se na desnoj strani znaka dodele pojavljuje neki izraz (umesto konstante u datoj
dodeli), izraèunavanje izraza kasni isto toliko. S obzirom na osobine blokirajuãih dodela, druga
dodela dolazi na izvršavanje tek nakon izvršavanja prve dodele. Pošto smo kod druge dodele
vrednost kašnjenja zadali u vidu identifikatora (konstante), potrebno je saèekati vreme odreðeno
identifikatorom da bi se dodela izvršila. Nakon izvršavanja druge dodele treãa dodela dolazi na
izvršavanje kod koje smo kašnjenje zadali sa min/typ/max izrazom.
Drugi naèin pisanja kašnjenja je navoðenje kašnjenja unutar same dodele. Odgovarajuãe
vreme kašnjenja se navodi na desnoj strani znaka za dodelu (= ili <=). U ovom sluèaju
izraèunavanje vrednosti izraza koji figuriše na desnoj strani dodele se vrši u momentu dolaska
dodele na izvršavanje (ne posle kašnjenja, kao što je sluèaj kod pravilnog zadavanja kašnjenja), a
sama dodela kasni onoliko koliko je propisano. U primeru 10-10 u prvoj initial proceduri kašnjenje
je zadato unutar dodele, zato se sabiranje dešava u trenutku t=0, dok dodela kasni pet vremenskih
jedinica. Druga initial procedura pokazuje kako se može postiãi isti rezultat uvoðenjem privre-
menog nosioca podatka (temp_xz) i pravilnim naèinom pisanja kašnjenja.


Primer 10-10: Pisanje kašnjenja unutar izraza za dodelu.
initial
y= #5 x+z;

initial
begin
temp_xz=x+z
#5 y=temp_xz
end


Kao što je veã napomenuto ranije, izvršavanje svih initial i always procedura poèinje u
trenutku t=0. Ne može se meðutim utvrditi redosled izvršavanja dodela u pojedinim procedurama
Projektovanje primenom programabilnih logièkih kola (PLD)

- 117 -
koja su naznaèena za trenutak t=0, zato može nastupiti efekat protrèavanja. Zadavanjem nultog
kašnjenja može se utvrditi redosled.
U primeru 10-11 sve dodele se izvršavaju u t=0, ali dodele unutar prve procedure se
izvršavaju pre dodela u drugoj proceduri, pa ãe krajnji rezultat biti x=y=1. U principu, rizièno je
nosiocu podataka istovremeno dodeliti vrednost u dvema procedurama, ali uvoðenjem nultog
kašnjenja, redosled izvršavanja dodela se može dodatno precizirati.


Primer 10-11: Pisanje nultog vremena kašnjenja radi preciziranja redosleda
izvršavanja.
initial
begin
x=0;
y=0;
end

initial
begin
#0 x=1;
#0 y=1;
end


10.3.2. Vremenska kontrola primenom iviènog okidanja i okidanja na nivo
Veãina savremenih digitalnih sistema je sinhrona mreža, a sinhronizacija se u veãini
sluèajeva izvodi iviènim okidanjem. Ivièno okidanje i okidanje na nivo se može naznaèiti na
sledeãa èetiri naèina u hardverskim opisima na nivou ponašanja:
- pravilno ivièno okidanje,
- èekanje na imenovani dogaðaj,
- èekanje na ivicu jednog od grupe signala,
- èekanje na odgovarajuãi logièki nivo.

Primenom pravilne metode opisuje se ivièno okidanje, koriste se kljuène reèi @ i posedge
ili negedge. U primeru 10-12, unutar prve always procedure, dodelu treba izvršiti i na uzlaznoj i na
silaznoj ivici takt signala. U drugoj proceduri dodela se vrši na uzlaznoj ivici takta, u treãoj na
silaznoj ivici takta. U èetvrtoj proceduri se memoriše vrednost podatka d u momentu kada dodela
dolazi na izvršavanje, a dodela te vrednosti nosiocu podatka q se izvršava na uzlaznoj ivici takta.


Primer 10-12: Pravilna metoda vremenske kontrole (definisanje iviènog 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 kljuèna reè). Takt
signal koji je potreban za simulaciju HDL opisa mora da formira projektant prema svojim
zahtevima u jednom pomoãnom modulu. Isti pristup važi i pri hardverskoj realizaciji HDL opisa:
PLD kolo ne sadrži unutrašnji izvor takta, takt signal se mora obezbediti pomoãu posebnog kola.
Ako vremensku kontrolu planiramo da ostvarimo èekanjem na imenovani dogaðaj, prvo
Projektovanje primenom programabilnih logièkih kola (PLD)

- 118 -
treba deklarisati dogaðaj. Naznaèena dodela ãe se izvršiti kada nastupi taj dogaðaj. Deklaracija
dogaðaja se vrši sa kljuènom reèi event, aktiviranje dogaðaja se vrši sa znakom ->, a dogaðaj se
uzima u obzir (izvrši se dodela) kod znaka @.
U primeru 10-13 deklaracija dogaðaja je uraðena u prvom redu HDL opisa. Sledi proce-
dura tipa always koja definiše kada se javlja imenovani dogaðaj (šta je ustvari dogaðaj koji se èeka).
Naèin korišãenja kljuène reèi if koja se koristi u ovoj jezièkoj konstrukciji ãe se objasniti u
sledeãem poglavlju (10.4). U sledeãoj always proceduri je navedena dodela koju treba izvršiti kada
se desi imenovani dogaðaj.


Primer 10-13: Vremenska kontrola èekanjem na imenovani dogaðaj.
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 (ivièno okidanje) se može uopštiti tako da se
izvršavanje dodele vezuje na promenu jednog signala iz grupe signala. Slièan je naèin definisanja
ovakve vremenske kontrole, samo se pojedina imena signala povezuju sa kljuènom reèi or (primer
10-14).


Primer 10-14: Vremenska kontrola èekanjem na ivicu jednog od grupe signala.
always @(reset or clock or d)
begin
if (reset)
q=1’b0;
else if(clock)
q=d;
end


Može da dovodi do nesporazuma to što je u gornjem primeru primenjena sinhronizacija
dodele na ivicu signala, ipak ãe se na osnovu ovog opisa sintetizovati D latch kolo (taèka 3.1.1) sa
okidanjem na nivo. Procedura always kreãe na uzlaznoj ili silaznoj ivici jednog od signala reset,
clock i d jer se kod kola sa okidanjem na nivo može oèekivati promena u ponašanju kada se pomeni
nivo ulaznih signala (a to se dešava kod ivice signala). Znaèi, ako se desi promena u jednom od tri
ulazna signala, u zavisnosti od novih logièkih nivoa, ili ãe se izvršiti asinhroni reset latch kola
(q=1’b0), ili ãe latch postati transparentan (q=d) ili se, u sluèaju niskog nivoa clock signala,
zadržava zateèeno stanje.
Pored iviènog okidanja u HDL opisima se može koristiti i okidanje na nivo. To se ne radi
sa znakom @ veã sa kljuènom reèi wait. U primeru 10-15 inkrementiranje podatka count se dešava
nakon svakih dvadeset vremenskih jedinica pod uslovom da je signal count_enable na visokom
logièkom nivou.

Primer 10-15: Vremenska kontrola èekanjem na logièki nivo (okidanje na nivo).
always
wait (count_enable) #20 count=count+1;

Projektovanje primenom programabilnih logièkih kola (PLD)

- 119 -
10.4. Uslovne dodele
U struktuiranim procedurama primenom kljuènih reèi if i else se može definisati pod
kojim uslovima treba izvršiti naznaèenu dodelu i pod kojim uslovima treba izostaviti tu dodelu iz
obrade. Postoje tri sluèaja u opisivanju uslovnih dodela.
U prvom sluèaju (primer 10-16) koristimo samo kljuènu reè if. Ako je u primeru clock
signal na niskom logièkom nivou, izvršiãe se dodela, inaèe ne.

Primer 10-16: Izvršavanje dodele vezano za taèan uslov.
if (!clock) buffer=data;


Ako neke dodele treba da se izvršavaju pri taènom uslovu a neke pri netaènom, koriste se
kljuène reèi if i else (primer 10-17). Ako je uslov taèan, potrebno je izvršiti dve dodele navedene
izmeðu kljuènih reèi begin i end, u suprotnom sluèaju izvršava se instrukcija $display. Ova
instrukcija ne služi za opisivanje nekog hardvera veã prouzrokuje odreðenu akciju kod logièkog
simulatora.


Primer 10-17: Vezivanje dodela za taèan i netaèan uslov.
if (number_queued<MAX_Q_DEPTH)
begin
data_queued=data;
number_queued= number_queued+1;
end
else
$display (“Queue full, Try again”);


U treãem sluèaju uslov može da ima više od dve vrednosti i pri svakoj vrednosti treba
izvrštiti neku drugu dodelu. U primeru 10-18, pri vrednostima parametra alu_control od 0, 1 ili 2,
izvršavaju se odreðene propisane dodele, meðutim ako nijedan uslov nije ispunjen, aktivira se
instrukcija $display. U prikazanoj jezièkoj konstrukciji koristi se lanac kljuènih reèi if – else if –
else.


Primer 10-18: Dodele vezane za više 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. Višestruka grananja
Pisanje if-else struktura iz prethodne taèke u sluèaju veãeg broja uslova je komplikovano i
dobijeni opis je nepregledan. U takvim situacijama prikladnije je korišãenje strukture sa kljuènom
reèi case.
10.5.1. Struktura case
Za formiranje ove strukture koriste se kljuène reèi case, endcase i default. Primena
kljuène reèi default nije obavezna. Ako se koristi, može da se pojavi samo jednaput. U primeru 10-
19 prethodnu if-else strukturu smo pretvorili u case strukturu da bi dobili jednostavniji opis.

Projektovanje primenom programabilnih logièkih kola (PLD)

- 120 -
Primer 10-19: HDL opis iz primera 10-18 preraðen na case strukturu.
reg [1:0] alu_control;

case (alu_control)
2’d0: y=x+z;
2’d0: y=x-z;
2’d0: y=x*z;
default: $diplay (“Invalid alu control signal”);
endcase


Opis multipleksora (poglavlje 2.5) je najsvrsishodnije primenom case strukture. Primer
10-20 daje opis multipleksora 4/1 (prikazan je ceo modul).


Primer 10-20: HDL opis multipleksora 4/1 primenom case strukture.
module mux4_to_1(out, i0, i1, i2, i3, s1, s0);
output out;
input i0, i1, i2, i3;
input s1, s0;
reg out;
always @(s1 or s0 or i0 or i1 or i2 or i3)
case ({s1, s0})
2’d0: out=i0;
2’d1: out=i1;
2’d2: out=i2;
2’d3: out=i3;
default: $diplay (“Invalid control signals”);
endcase
endmodule

U gornjem primeru procedura always se svaki put aktivira kada se promeni logièki nivo
bilo kog od ulaznih nosioca podataka. Slièno primeru 10-14 i ovde se radi o okidanju na nivo, ali
procedura kreãe kada se promeni logièki nivo (znaèi: kod ivice). Kodovi pojedinih sluèajeva su
dobijeni povezivanjem jednobitnih selekcionih ulaza (s1, s0). Red sa kljuènom reèi default se može
izostaviti, pošto nema uticaja na sintezu fizièkog 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 sluèajevima umesto jedne dodele može da se javi više njih.
Tada dodele treba grupisati sa kljuènim reèima begin i end. Pojedini bitovi u kodovima sluèajeva
mogu uzimati vrednosti x ili z, na taj naèin se neka kola mogu preciznije opisati.
10.5.2. Primena kljuènih reèi casex casez
Primenom kljuènih reèi casex i casez mogu se skratiti razni opisi sa grananjima. Pri
korišãenju kljuène reèi casez u kodu sluèaja na pojedinim pozicijama mogu da stoje z vrednosti i
one neãe imati uticaja na izvršavanje uslovne dodele. Kod kljuène reèi casex u kodu mogu biti i x i
z vrednosti i te pozicije se neãe razmatrati pri izvršavanju dodele. U primeru 10-21 dat je skraãeni
opis jednog specijalnog kodera koji izlazni kod formira na osnovu toga da li na odgovarajuãoj
poziciji postoji logièka jedinica, vrednosti ostalih bitova nemaju uticaja na kod.


Primer 10-21: Primena kljuène reèi casex za definisanje specijalnog kodera.
reg[3:0] encoding;
integer state;
casex (encoding)
4’b1xxx: state=3;
4’bx1xx: state=2;
4’bxx1x: state=1;
Projektovanje primenom programabilnih logièkih kola (PLD)

- 121 -
4’bxxx1: state=0;
default: state=0;
endcase

10.6. Petlje u opisima na nivou ponašanja
Pri opisivanju na nivou ponašanja always procedure prouzrokuju stalno ponavljanje
dodela za celo vreme simulacije ili (kod ostvarenog hardvera) za celo vreme rada kola. Primenom
petlji u Verilog HDL-u ponavljanje dodela se može vezati za neki uslov. Na taj naèin se može
podešavati broj ponavljanja ili vreme izvršavanja.
Postoje èetiri kljuène reèi za definisanje petlji, to su: while, for, repeat i forever. Petlje se
mogu definisati samo u opisima na nivou ponašanja, prema tome mogu se pojaviti samo u initial i
always procedurama.
10.6.1. Petlja tipa while
Ova petlja se definiše pomoãu kljuène reèi while i izraza u zagradi pored te kljuène reèi.
Dodele koje pripadaju petlji se ponavljaju dok izraz u zagradi daje taènu vrednost. Dodele se neãe
izvršiti nijednom ako je izraz netaèan u startu. Ako ima više od jedne dodele u petlji, oni treba da se
smeste izmeðu kljuènih reèi begin i end. U primeru 10-22 prikazan je deo jednog modula koji
opisuje sedmobitni brojaè pomoãu petlje tipa while.


Primer 10-22: Korišãenje petlje tipa while za opisivanje brojaèa.
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 definiše šta treba ispisati na monitor raèunara na
kojoj se vrši 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 definiše pomoãu kljuène reèi for i izraza u zagradi pored te kljuène reèi.
Izraz sadrži tri elementa:
- jedan poèetni uslov,
- proveru uslova za izlazak iz petlje,
- jednu dodelu koja modifikuje vrednost podatka kojom je odreðen momenat izlaska iz petlje.

Brojaè dat u prethodnom primeru se jednostavije može opisati primenom for petlje
(primer 10-23). Treba meðutim reãi da je petlja tipa while opštijeg karaktera i ima širu primenu.


Primer 10-23: Primena petlje tipa for za opis brojaèa.
integer count;
initial
for (count=0; count<128; coun=count+1)
$display (“count=%d”, count);

Projektovanje primenom programabilnih logièkih kola (PLD)

- 122 -
10.6.3. Petlja tipa repeat
Ova petlja se definiše pomoãu kljuène reèi repeat i brojèane vrednosti u zagradi pored te
kljuène reèi. Umesto brojèane vrednosti može da se pojavi i neki identifikator ili neki izraz, ali se
njegova vrednost sraèuna pre ulaska u petlju i unutar petlje se smatra konstantom. Prema tome,
petlja tipa repeat se koristi u situacijama kada dodele navedene u petlji treba izvršiti odreðeni broj
puta. U primeru 10-24 dat je opis brojaèa iz prethodnih primera primenom petlje repeat.


Primer 10-24: Primena petlje tipa repeat za formiranje brojaèa.
integer count;
initial
begin
count=0;
repeat (128)
begin
$display (“count=%d”, count);
count=count+1;
end
end
10.6.4. Petlja tipa forever
Ova petlja se definiše pomoãu kljuène reèi forever. Definicija ne sadrži uslov za izlazak iz
petlje, zato se petlja u principu neogranièeno izvršava (pri simulacijama trajaãe do kraja simulacije,
pri hardverskoj realizaciji trajaãe sve dok kolo dobije napajanje). U primeru 10-25 formira se takt
signal primenom petlje tipa forever.


Primer 10-25: Primena petlje tipa forever za formiranje takt signala.
initial
begin
clock=1’b0;
forever #10 clock=~clock;
end

10.7. Redni i paralelni blokovi
Dodele koje èine celinu se grupišu u blokove. Dosad su mnogo puta korišãene kljuène reèi
begin i end kojima se formiraju redni blokovi. U rednim blokovima dodele dolaze na izvršavanje u
redosledu pisanja. Pored rednih blokova postoje i paralelni. Dodele u paralelnim blokovima dolaze
na izvršavanje istovremeno (vreme izvršavanja može da se razlikuje samo ako su definisana
kašnjenja).
10.7.1. Redni blokovi
Redni blokovi se poèinju sa kljuènom reèi begin i završavaju se sa kljuènom reèi end.
Dodele navedene izmeðu tih kljuènih reèi se izvršavaju u onom redosledu kako su napisane. Novoj
dodeli se ne pristupa sve dok prethodna nije izvršena. Zadate vrednosti kašnjenja su relativne
vrednosti: kašnjenje navedeno za trenutno aktivnu dodelu se raèuna od završetka prethodne dodele.
U dosadašnjim primerima smo veã na puno mesta koristili redne blokove. U primeru 10-
26 navodimo jedan redni blok bez kašnjenja. Navedene èetiri dodele se izvršavaju u redosledu
pisanja ali se sve to dešava u t=0. Na taj naèin bitovi podataka y i w se formiraju od prethodno
dodeljenih vrednosti podataka x i y.


Primer 10-26: Redni blok bez kašnjenja.
reg x,y;
reg [1:0] z, w;
Projektovanje primenom programabilnih logièkih kola (PLD)

- 123 -
initial
begin
x=1’b0;
y=1’b1;
z={x,y};
w={y,x};
end


U primeru 10-27 dodele u rednom bloku sadrže kašnjenje (izuzev prvog). Pošto su kašnjenja
nadovezuju, prva dodela se izvršava u t=0, druga u t=5, treãa u t=15 a èetvrta u t=35.


Primer 10-26: Redni blok sa kašnjenjima.
reg x,y;
reg [1:0] z, w;
initial
begin
x=1’b0;
#5 y=1’b1;
#10 z={x,y};
#20 w={y,x};
end

10.7.2. Paralelni blokovi
Dodelama u paralelnom bloku prethodi kljuèna reè fork a na kraju stoji kljuèna reè join.
Dodele iz paralelnog bloka dolaze na izvršenje istovremeno, slièno kao kod neblokirajuãih dodela
(taèka 10.2.2) ali se u ovom sluèaju ne vrši memorisanje podataka pri ulasku u blok.
Vremena izvršavanja možemo podešavati zadavanjem kašnjenja, èekanjem na dogaðaj,
iviènim okidanjem i okidanjem na nivo (taèka 10.3.2). Kašnjenja se raèunaju u odnosu na momenat
ulaska u blok. Redosled navoðenja dodela nema uticaja na redosled izvršavanja.
U primeru 10-27 je ponovljen prethodni primer ali umesto rednog bloka koristi se paralel-
ni. Na kraju nosioci podataka dobijaju iste vrednosti, ali menjaju se vremena izvršavanja. Navedena
kašnjenja se tumaèe kao apsolutne vrednosti.

Primer 10-27: Paralelni blok sa kašnjenjima.
reg x,y;
reg [1:0] z, w;
initial
fork
x=1’b0;
#5 y=1’b1;
#10 z={x,y};
#20 w={y,x};
join


Pri korišãenju paralelnog bloka može da nastupi efekat protrèavanja ako sa dva ili više
dodela pokušavamo istovremeno dodeliti vrednost nekom nosiocu podatka. Takoðe može biti
problematièno ako u istom bloku definišemo vrednost nekog podatka i koristimo isto u nekoj drugoj
dodeli. U primeru 10-28 vrednosti z i w su nesigurne u momentu napuštanja bloka jer se ne zna da li
su vrednosti x i y definisane na vreme.


Primer 10-28: Paralelni blok bez kašnjenja (javlja se efekat protrèavanja).
reg x,y;
reg [1:0] z, w;
Projektovanje primenom programabilnih logièkih kola (PLD)

- 124 -
initial
fork
x=1’b0;
y=1’b1;
z={x,y};
w={y,x};
join

10.7.3. Kombinovani blokovi
Redni i paralelni blokovi se mogu i kombinovati (primer 10-29). U prikazanom sluèaju
glavni blok je rednog tipa, dok je unutrašnji blok paralelnog tipa. Razume se da ãe se prvo izvršiti
prva dodela rednog bloka, zatim dolaze dve dodele unutar paralelnog bloka i na kraju sledi zadnja
dodela iz rednog bloka. Dodele u paralelnom bloku dolaze na red u istom momentu ali zbog
navedenih kašnjenja izvršavaju se tek u momentima t=5 i t=10.


Primer 10-29: Kombinacija rednog i paralelnog bloka.
initial
begin
x=1’b0;
fork
#5 y=1’b1;
#10 z={x,y};
join
#20 w={y,x};
end

10.7.4. Imenovani blokovi
Blokovi se mogu imenovati. Kod tako dobijenih imenovanih blokova:
- možemo deklarisati lokalne nosioce podataka,
- pojedinim nosiocima podataka možemo pristupiti preko hijerarhijskih imena,
- možemo prekinuti izvršavanje.

U primeru 10-30 nosilac podatka i se pojavljuje unutar dva bloka, ali pošto 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

10.7.5. Prekidanje izvršavanja imenovanog bloka
Korišãenjem instrukcije disable može se prekinuti imenovani blok. Tako se mogu
izostaviti izvesne dodele ili se može izaãi iz petlje. U primeru 10-31 prikazan je naèin izlaska iz
Projektovanje primenom programabilnih logièkih kola (PLD)

- 125 -
petlje tipa while. Ako je naredni bit vektora flag jedinica, prekida se izvršenje bloka pod imenom
block1. Primenom instrukcije disable može se prekinuti bilo koji blok, ne samo onaj u kome je
navedena instrukcija disable. Ovo je znaèajno odstupanje od pravila softverskih jezika, kod kojih se
može prekinuti samo onaj program/potprogram koji se tog momenta izvršava.

Primer 10-31: Prekidanje imenovanog bloka.
initial
begin
flag=16’b0010_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

Projektovanje primenom programabilnih logièkih kola (PLD)

- 126 -
11. Literatura

[1] Szittya Ottó: Digitális és analóg technika informatikusoknak, I i II tom, LSI Oktatóközpont,
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 István: Digitális Technika, Szabadkai Mûszaki Fõiskola, Szabadka, 2003.

[7] Janovics Sándor, Tóth Mihály: A logikai tervezés módszerei, Mûszaki Könyvkiadó Budapest,
1973.

[8] Arató Péter: A logikai rendszerek tervezése, III izdanje, Tankönyvkiadó, Budapest, 1990.

[9] Peter Ammon: Kapumátrix áramkörök, Berendezésorientált áramkörök, Mûszaki Könyvkiadó,
Budapest, 1989.

[10] Radomir Stankoviã, Milena Stankoviã: Logièko projektovanje, Nauka, Beograd, 1991.

[11] Tihomir Aleksiã: Logièka sinteza digitalnih mreža, Nauèna knjiga, Beograd, 1975.

[12] Ripka Gábor: Felületre szerelhetõ alkatrészek, Mûszaki Könyvkiadó, 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


Predgovor
Skripta je napisana za studente druge godine Više Tehnièke Škole u Subotici i sadrži 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 logièkim osnovama digitalnog projektovanja. Glava o logièkim kolima u Analognoj elektronici pružala je uvid u hardverska rešenja koja èine osnove digitalnih ureðaja. Skripta obraðuje aktuelna rešenja za realizaciju digitalnih kola prema programu za predmet Digitalna elektronika. Polazi se od (I. deo) opštih pitanja vezanih za fizièku 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 obraðuje 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 stiže do opisa jezika i do raèunarskih simulacija. U okviru predmeta Projektovanje elektronskih ureðaja ãe se studenti upoznati sa softverima za automatsku sintezu digitalnih kola i sa samim postupkom programiranja. Karakteristièno je za savremeni naèin projektovanja da veãi 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 pomoãne zadatke (pobuðivanje, prilagoðavanje nivoa itd.). Ureðaji koji se softverski programiraju imaju širu oblast primene i veoma su pogodni za obavljanje složenih zadataka kao što su upravljanje, merenje, prikazivanje rezultata itd. Meðutim, postoje i takvi zadaci obrade signala i upravljanja koji se ne mogu rešiti mikroprocesorima ili mikrokontrolerima, jer su oni previše spori za takve primene. U ovom sluèaju rešenje nam pružaju kola sa hardverskim programiranjem. U izvesnoj meri ureðaji koji se softverski programiraju i ureðaji koji se hardverski programiraju su konkurencija jedan drugom ali u velikom broju primena oni se meðusobno dopunjuju. U mnogim ureðajima pored mikrokontrolera se mogu naãi i jedan ili više PLD kola. Programabilna logièka kola su danas dostigla takav nivo složenosti da je u njima moguãe realizovati èak i kompletan mikrokontroler. Na ovaj naèin korisnik može 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 inženjera i zbog toga proizvoðaèi PLD ureðaja podržavaju ovaj pravac projektovanja nudeãi gotova rešenja projektantima. Autori

-2-

Sadržaj

I. PITANJA VEZANA ZA REALIZACIJU DIGITALNIH ELEKTRIÈNIH KOLA .............. - 7 1. Fizièke osobine digitalnih elektriènih kola ....................................................................................................... - 8 1.1. Strujna logika-naponska logika .................................................................................................................. - 8 1.2. Fizièke karakteristike .................................................................................................................................. - 9 1.2.1. Prenosna karakteristika .......................................................................................................................... - 9 1.2.2. Logièki nivoi ........................................................................................................................................ - 10 1.2.3. Margine smetnji ................................................................................................................................... - 10 1.2.4. Kašnjenja ............................................................................................................................................. - 11 1.2.5. Opteretljivost izlaza ............................................................................................................................. - 12 1.2.6. Potrošnja .............................................................................................................................................. - 12 1.2.7. Temperaturni opsezi............................................................................................................................. - 13 1.2.8. Kuãišta ................................................................................................................................................. - 13 1.3. Posledice kašnjenja: hazardi .................................................................................................................... - 14 1.3.1. Statièki hazardi .................................................................................................................................... - 15 1.3.2. Dinamièki hazardi ................................................................................................................................ - 16 1.3.3. Funkcionalni hazardi............................................................................................................................ - 17 1.4. Tehnologije izrade integrisanih kola ........................................................................................................ - 17 1.4.1. Popularnost i životni ciklus familija integrisanih kola ......................................................................... - 18 1.4.2. Podela prema naponu napajanja ........................................................................................................... - 18 1.4.3. Kompatibilnost ligièkih nivoa .............................................................................................................. - 19 1.4.4. Zavisnost kašnjenja od napona napajanja ............................................................................................ - 20 1.4.5. Izbor logièkih funkcija po raznim familijama logièkih kola ................................................................ - 20 -

II. DIGITALNO PROJEKTOVANJE PRIMENOM SSI I MSI FUNKCIONALNIH JEDINICA 22 2. Kombinacione mreže ....................................................................................................................................... - 23 2.1. Kola za sprezanje...................................................................................................................................... - 23 2.1.1. Neinvertujuãa i invertujuãa kola za sprezanje...................................................................................... - 23 2.1.2. Kola za sprezanje sa tri stanja .............................................................................................................. - 23 2.1.3. Dvosmerna kola za sprezanje ............................................................................................................... - 24 2.2. Dekoder .................................................................................................................................................... - 24 2.2.1. Potpuni dekoder ................................................................................................................................... - 24 2.2.2. Nepotpuni dekoder ............................................................................................................................... - 25 2.2.3. Realizacija logièkih funkcija pomoãu dekodera .................................................................................. - 26 2.3. Koder ........................................................................................................................................................ - 27 2.3.1. Potpuni koder ....................................................................................................................................... - 27 2.3.2. Nepotpuni koder .................................................................................................................................. - 27 2.3.3. Prioritetni koder ................................................................................................................................... - 28 2.4. Pretvaraèi koda ........................................................................................................................................ - 29 2.4.1. Pretvaraè prirodnog binarnog koda u Gray-ov kod ............................................................................. - 29 2.4.2. Pretvaraè BCD koda u 7-segmentni kod .............................................................................................. - 30 2.5. Multipleksor .............................................................................................................................................. - 30 2.5.1. Konstruisanje digitalnih multipleksora ................................................................................................ - 31 2.5.2. Proširivanje multipleksora ................................................................................................................... - 31 2.5.3. Realizacija logièkih funkcija pomoãu multipleksora ........................................................................... - 32 2.6. Demultipleksor.......................................................................................................................................... - 33 2.6.1. Prenos više podataka preko zajednièkog kanala .................................................................................. - 34 2.6.2. Analogni multipleksor/demultipleksor................................................................................................. - 34 Sekvencijalne mreže ......................................................................................................................................... - 36 3.1. Elementarne memorije .............................................................................................................................. - 37 3.1.1. Latch kola ............................................................................................................................................ - 37 3.1.2. Flip-flop-ovi ......................................................................................................................................... - 38 3.2. Opis i konstruisanje logièkih automata .................................................................................................... - 41 3.2.1. Dijagram stanja .................................................................................................................................... - 41 3.2.2. Tabela stanja ........................................................................................................................................ - 42 3.2.3. Kodiranje stanja ................................................................................................................................... - 43 3.2.4. Jednaèine upravljanja za flip-flop-ove ................................................................................................. - 43 3.2.5. Formiranje izlaza ................................................................................................................................. - 44 3.2.6. Formiranje kompletne sekvencijalne mreže ......................................................................................... - 44 -

3.

-3-

..................................75 6.....75 6............ ....................1.......79 6....................75 6................................................ Jezièke konvencije....... Moduli u Verilog HDL-u ........ ............... Simulacija ................2................................1..............................11........................................................... Lista port-ova ............................................................................................ ................................................... Tipovi podataka i tipovi nosioca podataka ...............2.......................2.......................52 4........................59 4....1.66 5.................................................................................... Pristupi projektovanju ...................................................79 Moduli i port-ovi ..........................................................................1..........77 6.... Karakteristike ................ Nizovi znakova .....2..86 - 6..................4........................ .... Sistemske funkcije $stop i $finish . ......... A/D konvertori ............................................. Sabiraèi ...........................1.................1.......70 5..................3.............1... .........................................................3..................................................... Unutrašnja struktura memorijskih kola ........... Nizovi ................................ .......................................................................................... .... Kljuène reèi ..........1......61 4................. .... ..........................................................................................1....................... .................................. .........................72 6........................................2..............45 3............... Deklaracija port-ova ............................................................................ ..............2.............. Memorije............ Identifikatori .........................Pitanja vezana za realizaciju digitalnih elektriènih kola 3........... . .............2....2...........3..............2........3................ Obièni (stacionarni) registri ....62 4.........1..... ............................84 7........................................ .................................................................................................45 3....................................... Èetvorobitni brojaè .....2......70 Osnovni koncepti Verilog HDL-a .....2......................76 6...................................... ......................2.............................72 6.... ...................................................................... D/A konvertori ....................................................................................................................2....................................................................2. Komentari ........................................................ .......4..........................................................................53 4.............46 3... Prazna mesta .. ................................................................................... .......................... Pravila za povezivanje port-ova ............................................4.................. Sinhroni (paralelni) brojaèi ...........................65 5...............82 7....59 4...................................................... .......................................3...................................... Množaèi ............................ Struktura .............................3.........................3........................................................................................................................................72 6........1....................................... ............................10............................ ................................................................ Moduli.......................50 4.................................54 4............................................................................................................................................ -4- .. Pomeraèki (shift) registri.......................... ............4........................................... Registri ..................4.................................... .............................................................. ...................... Realni brojevi ...........................................................................50 4..........6.................... Složene mreže .................................................................................................................... ..................... ....................... Operatori .............4.............. .................................2.............................................................. .......................59 4.............................................................................4.................82 7...................... ........... Brojaèi ..1................................................ .............3.2.............................................................................................4... Parametri ................... ............ .............7............................61 4............................1....... ... Port-ovi .......................1....................... .................................... Aritmetièke jedinice .....67 5............. Kružni registri (kružni brojaèi) .................................47 3..................................... PROJEKTOVANJE PRIMENOM PROGRAMABILNIH LOGIÈKIH KOLA (PLD) ......78 6............................3....55 4.......... Proširivanje kapaciteta ............. ..........9............................ Èvorovi.................. ..........................3.......................................................... Predstavljanje brojeva u Verilog HDL-u .....2.................... ..............................3.............................................................................. Struktura .............................................. ....................................................61 4...................................3.......................... Hijerarhijska imena ................. Vektori .................................................75 6............45 3. 7................ ...............................................................................................78 6...........2......................................................................................................3.......... .......................5...................................................4.................75 6..4........................................................82 7....................2..2..................... Naèin funkcionisanja ............................................. Logièke vrednosti u Verilog HDL-u .........................68 5.......1.........................................1......................... Povezivanje port-ova sa signalima iz okruženja .............................. ....................................57 4...................................................48 4........................................................................................52 4............77 6...............................................................................................72 6.....2....2....................................................... Podela i osobine memorijskih kola ...........2........................ ....................77 6.... Celi brojevi .....................................2.............3..............2...........................1................2.............47 3..........................1...1.............................................2......8..................................................................................4.......................80 7...... . .................. ......1..................50 4.....................................73 6.....................2.............................................................3.............................................. Naredba ’define .............................2................................. .........................................................................................................................2.............7.......... ..............64 - III...3...................................................................................................................... ...................2.......... Karakteristike ........6...1......................... ........................................................... .......................................... ....................5.........................................3.............. Instance.......................................................................................................78 6......1..83 7......... Asinhroni (serijski) brojaèi .........................................................1. .............................72 6........... .................................................................................................................80 7.......... Princip rada ....... Aritmetièki komparatori................ .................................................................75 6. Memorije ...... veze ....... ..3.. Registri ..

108 9.4...............................................................................................7...................................................................................................................116 10................... ...............124 11..........7................................. ....................................7.. .................................... Izrazi .............................119 10.................6.........................................................................................8........................................................................... Višestruka grananja .113 10.......3........102 9.......................3....................... ................................. ........................................................................................................ ..............119 10..............1.............................................................. Uslovne dodele ..103 9..... ........................109 9. Implicitna kontinualna dodela ....................................................... Struktura case .......6.................... HDL opis na nivou logièkih kapija .................................................................................. ......................................... Literatura .......................................................................1.........................9...................1.................................. .............................. ......... Logièki operatori..... .......................3..........7........ Operatori jednakosti ......................5.. ............2.........................117 10............................ operandi i operatori..............................................................2......... 10.......................................................126 - -5- ................................... Operator pridruživanja ..6............................102 9..1.................................................................2.....................................................102 9........ Kombinovani blokovi....................121 10......................2......................... Neblokirajuãe dodele ....................... ... tipiène i maksimalne vrednosti kašnjenja .......121 10................................ ......................... Hijerarhija operacija .........................................1.................. ............... Procedura tipa always ............3.. Aritmetièki operatori.................... Operator umnožavanja ..........1..............................................111 10................................. Redni i paralelni blokovi ..................................................123 10................ Vremenska kontrola dodela u opisima na nivou ponašanja ...... ....................103 9.....................................................2.................... ..........90 8........1.... ...........................................................119 10........................................................................ ............................................................4............... Primer projektovanja na nivou logièkih kapija: èetvorobitni potpuni sabiraè .............................112 10.......................... Primena kljuènih reèi casex casez ..........................2...... Petlja tipa repeat ............3................................ .... ......................................................................1...................................................122 10.................... Redni blokovi .....................................................................108 9...............................124 10..............2.......... I i ILI kola ....99 9............................ Petlja tipa for ..........................................................96 8.............1...................... Tipovi operatora .................................. ......................................96 HDL opis na nivou toka podataka ...........2..4.......106 9.........................5....................4.....................3.3. ................................................... Kašnjenja u dodelama ...........7.........................................3..........................4.................120 10.......................... ...91 8....................107 9... .......................1...................102 9...... Petlje u opisima na nivou ponašanja ..............................7............................ ........3............... ... Paralelni blokovi ....2...............4...3..................... Kašnjenja u implicitnim kontinualnim dodelama ....... ...............111 10............2.....2.............4............................3.... ............... ...................7...........87 8..............................................3....................................................1.............................................4..1.......................................... ................................................ ...........................................4.......... Kola za sprezanje .2.................................. .............6......3....................................... .................................................................................. Procedura tipa initial ............99 9..........................................................100 9..........................................................................87 8.................................................. .............1.4.................................. .........89 8........................................112 10...2........................... Imenovani blokovi ...................... Operatori pomeranja ....1.................. ............. Primer za analizu kašnjenja ................... .......................11.............................. ...................................124 10........ Struktuirane procedure .....121 10....... ............................... ..............105 9.......................................................3......1............ Operatori bit po bit ....... .................. ..........1............6.........................6....... ................................................................110 - 9. Vrste kapija . Izrazi...... Kontinualna dodela ......... ......1..................... Relacioni operatori .................................... ... ..111 10..................... Blokirajuãe dodele ....................................4........................................106 9..2...........2............................................3...4.......................................................................................................................4.......................................................10....................................108 9..........................................112 10..... Dodela vrednosti u procedurama ..........100 9...... Prekidanje izvršavanja imenovanog bloka ...................................4.......................................5.................................. Vremenska kontrola zadavanjem kašnjenja ........116 10............................1................................122 10....................... ..... Petlja tipa while ..104 9...................87 8........................................... .................94 8.......................................................................................... Petlja tipa forever .................... Operatori .......... ....... ... Kašnjenja u regularnim dodelama.......... Kašnjenja ......................................................4..............................................100 9...........................Pitanja vezana za realizaciju digitalnih elektriènih kola 8....................... ...............2.......1........................................................................................1..2... Vremenska kontrola primenom iviènog okidanja i okidanja na nivo ............................. ..122 10.5.................2............2................................................................................... ............................................ Uslovni operator ................................................ Redukcioni operatori............................................... ........... ....................................................... Kašnjenja definisana pri deklaraciji nosioca podataka tipa net ........3...105 9...1....................................................................... HDL opis na nivou ponašanja .......................... Mininimalne..........................4....... Operandi .........122 10.......................................................................................... Kola za sprezanje sa tri stanja .................................................. ................................... ..............................................................................101 9.......................5.

Smatralo se da ãe pravac razvoja dovesti do sve složenijih elektriènih kola. digitalna kola koja se hardverski programiraju (programmable logic device – PLD) sadrže veliki broj unapred proizvedenih logièkih blokova. nedovoljna pouzdanost u radu i znaèajna potrošnja su bili faktori koji su spreèili širu primenu ovih ureðaja.Uvod Digitalne realizacije su karakteristiène u mnogim oblastima savremene tehnike. za digitalne satove. U poèetku su samo mehanièki i elektromagnetni prekidaèi (releji) bili na raspolaganju za realizaciju digitalnih ureðaja. Razvoj i proizvodnja integrisanih kola je ekonomièna samo ako se proizvodnja istih vrši u velikim serijama. Bilo je pokušaja za realizaciju digitalnih ureðaja primenom elektronskih cevi koje su dugo vremena držali monopol na polju analogne obrade signala. i hardverskim programiranjem se mogu povezati na naèin da obavljaju željenu funkciju. Raèunarska tehnika. telekomunikacije i upravljanje industrijskim procesima su oblasti koje najviše prednjaèe u primeni digitalnih rešenja. U to vreme projektovanje digitalnih ureðaja se sastojalo od spretne kombinacije SSI i MSI integrisanih kola. Sa jedne. merne ureðaje itd. Skriptu predlažemo svakome ko želi da se upozna sa osnovama digitalne elektronike. ali njihovim povezivanjem sa odgovarajuãim pomoãnim elektriènim kolima (memorije. Na poèetku razvoja integrisanja elektriènih kola samo nekoliko logièkih kapija je bilo moguãe smestiti na jednu ploèicu. Autori -6- . koja ãe u potpunosti integrisati sva neophodna digitalna rešenja za funkcionisanje nekog ureðaja. Razvoj tehnologije za proizvodnju poluprovodnièkih komponenata omoguãilo je projektovanje (integrisanje) sve komplikovanijih elektriènih kola na površini jedne kristalne ploèe.) na jednu ploèicu. prilagodni stepeni itd. Sa druge strane. ubrzo je postalo jasno da su primene toliko brojne da nije ekonomièno posebno razvijati integrisana kola za svaku primenu (application specific integrated circuit – ASIC). Prvi elektronski raèunar je sagraðen pomoãu elektronskih cevi. Ova elektrièna kola pripadaju kolima visokog stepena integracije (large scale integration – LSI) odnosno kolima vrlo visokog stepena integracije (very large scale integration – VLSI). Posle ovoga tehnologija srednjeg stepena integracije (medium scale of integration – MSI) je omoguãila smeštanje složenijih celina (multipleksori. Ova tehnologija je dobila naziv mali stepen integracije (small scale of integration – SSI). dioda i otpornika bilo je moguãe izgraditi brza digitalna kola malih dimenzija i male potrošnje. Povezivanjem tranzistora. Ovakva integrisana kola su projektovana npr. Nakon otkriãa tranzistora. brojaèi itd.) i dodavanjem softvera moguãe je rešiti proizvoljne probleme. skoro istovremeno su se pojavile analogne i digitalne primene. Velike dimenzije. Meðutim. Od kraja pedesetih godina XX veka osnovu digitalne elektronike nesporno su dala integrisana rešenja. strane pojavile su se mikroprocesori koji se ne mogu samostalno primeniti u konkretne svrhe. Prepoznavanje ovih ogranièenja je usmerilo razvoj u dva pravca.

Pitanja vezana za realizaciju digitalnih elektronskih kola .I.

-8- . three-state ili 3-state). ali proteklih godina kod pojedinih rešenja za integrisana kola su ponovo ušla u centar interesovanja. èiji se jedan kraj veže na potencijal zemlje koji se smatra logièkom nulom.1. Elektrièna kola sa strujnom logikom su skoro izašla iz upotrebe. odnosno na dvema logièkim vrednostima. Razlog za to je velika sliènost u polaznim materijalima i proizvodnim procesima kao i u topološkim rešenjima kod svih digitalnih elektriènih kola. Pošto su oba prekidaèa iskljuèena. U razlièitim vremenskim intervalima se aktiviraju razlièiti logièki elementi. Potrebna logièka stanja se i kod naponske logike postižu zatvaranjem ili otvaranjem prekidaèa. A A B B Y=A* B I Y=A+ B ILI (a) (b) Slika 1-1: Realizacija (a) I i (b) ILI logièke funkcije pomoãu strujne logike. to se smatralo stanjem logièke jedinice. izlaz Y prelazi u stanje visoke impedanse koje se još naziva i treãe stanje (engl. Funkcionisanje savremenih digitalnih ureðaja se obièno zasniva na dva naponska nivoa. Dva prekidaèa (K1. dok potencijal prisutan na drugom kraju izvora se smatra logièkom jedinicom. Ova moguãnost se koristi kod onih digitalnih ureðaja kod kojih se komunikacija izmeðu više logièkih elemenata ostvaruje kroz jedinstveni zajednièki provodnik. U ovom sluèaju cilj nije protok struje od ulazne taèke (taèaka) do izlazne taèke (taèaka) nego dobijanje odreðenih standardnih naponskih nivoa za reprezentaciju logièke nule i jedinice. dok su drugi elementi u stanju visoke impedanse i njihovi uticaji na vrednost logièkog nivoa se mogu zanemariti. prekidaèi se mogu ukljuèiti na èetiri razlièita naèina koji su prikazani u tabeli na slici 1-2b. Obièno je reè o jednom izvoru. Karakteristike koje se ovde razmatraju podjednako važe kako za SSI i MSI jednostavna elektrièna kola tako i za komplikovanija (LSI. U tom sluèaju drugi elementi prikljuèeni na istu taèku odreðuju naponski nivo izlaza datog logièkog elementa. Kod veãine današnjih digitalnih kola je naponska logika dominantna. Strujna logika-naponska logika U poèetku digitalni ureðaji su se gradili pomoãu prekidaèa i releja. Fizièke osobine digitalnih elektriènih kola U ovoj glavi se razmatraju fizièke osobine digitalnih kola. K2) su redno vezana (mogu se posmatrati kao naponski delitelji). Aktivni element u datom trenutku upravlja provodnikom. to se smatralo stanjem logièke nule. Ako nije bilo struje zbog otvorenosti nekog prekidaèa. Slika 1-1 prikazuje realizaciju strujne logike za I i ILI logièke funkcije.Pitanja vezana za realizaciju digitalnih elektriènih kola 1. Logièke funkcije kod tih ureðaja su se realizovale pomoãu takozvane strujne logike: ako je struja ulazila u objekat upravljanja zahvaljujuãi odgovarujuãim stanjima prekidaèa. VLSI) elektrièna kola koja se hardverski i softverski programiraju. Slobodni izvodi su vezani na izvore koji obezbeðuju naponske nivoe koji odgovaraju logièkoj jedinici (“1”) i nuli (“0”). Slika 1-2a prikazuje principijelnu šemu jednog digitalnog (logièkog) elementa sa naponskom logikom. 1. Teoretski gledano. Vrednost izlaza u prvom redu tabele je neodreðena što ukazuje na odstupanje od definicije dvovalentne logike.

U suprotnom sluèaju. U drugom redu tabele K2 provodi. Velika struja koja bi nastala kao posledica kratkog spoja. Znaèi. na izlazu se pojavljuje potencijal koji odgovara stanju logièke jedinice. razna kašnjenja. dovela bi do uništenja prekidaèa. -9- . Na dijagramu su oznaèene taèke kod kojih je vrednost nagiba -1. 1. Znaèi. u realnim kolima. izlaz Y je u kratkom spoju sa zemljom (taèka sa nultim potencijalom) i na taj naèin se ostvaruje logièka nula. vrednosti logièkih nivoa odstupaju od idealnih. vremena ukljuèivanja i iskljuèivanja su konaèna i zato se uticaji upravljaèkih signala prenose sa izvesnim kašnjenjima što dovodi do kašnjenja u funkcionisanju logièkih elemenata. Dobijana karakteristika predstavlja NE logièku funkciju (logièki invertor). kada je na ulazu nizak logièki nivo. temperaturni opsezi. Slièno ovome. provodi donji prekidaè i izlaz je na niskom logièkom nivou. Iz ovog razloga nepoželjno je funkcionisanje digitalnih kola u ovom intervalu (zabranjena zona). Dok je vrednost ulaznog upravljaèkog napona ispod polovine napona napajanja (VCC/2). Prenosna karakteristika Ako se upravljanje prekidaèima logièkog elementa prikazanog na slici 1-2a reši na taj naèin da zajednièki upravljaèki signal otvara i zatvara te prekidaèe u protivfazi. Rezultat ovoga je prenosna karakteristika realnih invertora koja je prikazana na slici 1-3b. margine smetnji (margina šuma). jer bi to kratko spojio krajeve naponskog izvora. Izmeðu ovih vrednosti ulaznog napona (VIL. U fizièke osobine spadaju: prenosna karakteristika. opteretljivost izlaza. Ovi problemi se detaljno obraðuju u narednim poglavljima. Znaèi. Treãi red odgovara suprotnom sluèaju.2.2.Pitanja vezana za realizaciju digitalnih elektriènih kola " 1" K1 K 1 Y K 2 0 0 1 1 " 0" K 2 0 1 0 1 Y Trecestan je 0 1 Za branjen stanje o (a) (b) Slika 1-2: (a) Principijelna šema logièkog elementa sa naponskom logikom i (b) varijacije stanja prekidaèa. potrošnja. 1. Prema tome. nominalni logièki nivoi. vodi gornji prekidaè i izlaz je na visokom logièkom nivou. izlaz je na visokom i suprotno.1. Fizièke karakteristike Kataloški podaci digitalnih kola pored opisa logièkih funkcija daju i fizièke karakteristike. dobija se idealizovana prenosna karakteristika prikazana na slici 1-3a. Realni prekidaèi u ukljuèenom stanju ne predstavljaju idealni kratak spoj i kao rezultat toga dolazi do promene napona na izlazu logièkog elementa pri optereãenju. K1 provodi dok K2 ne provodi. kada je vrednost upravljaèkog napona iznad polovine napona napajanja. Prekidaèi K1 i K2 ne smeju biti istovremeno u stanju provoðenja. U realnim sluèajevima otpornost prekidaèa se menja kontinualno pod uticajem upravljaèkih signala a ne skokovito. U narednim taèkama su date definicije ovih karakteristika i analiza njihovih uticaja na funkcionisanje digitalnih kola. VIH) nagib krive je velik i zbog toga mala promena ulaznog napona je u stanju da promeni nivo izlaznog napona sa logièke nule na logièku jedinicu i obrnuto. dok K1 ne provodi. kuãište itd. Kombinacija prikazana u poslednjem redu tabele predstavlja nedozvoljeno stanje.

2. Obrada signala kod digitalnih sistema se obièno vrši u više stepena i zato je kaskadna veza digitalnih kola neizbežna.3). moguãe je odrediti maksimalne amplitude smetnji (šuma) na koje su otporni ulazi digitalnih kola. odstupanja u tehnološkom procesu i drugih uticajnih velièina. Histerezisnu karakteristiku je moguãe ugraditi u ulazni stepen kod bilo kog digitalnog kola. Naponska razlika izmeðu dva nivoa se naziva logièkom amplitudom. VOH) digitalnih kola su približno stabilni za intervale koje se nalaze ispod i iznad zabranjene zone dok je napon napajanja konstantan i ne zavisi znaèajno od ulaznog signala ili promene struje optereãenja.2. Slièno. visok izlazni logièki nivo znaèajno prevazilazi donju graniènu vrednost visokog ulaznog logièkog nivoa (VOH>VIH). Kod pažljivo projektovanih digitalnih kola nizak izlazni logièki nivo je u svakom sluèaju znaèajno niži od maksimalne vrednosti niskog ulaznog logièkog nivoa (VOL<VIL). histerezisne (Šmitove) krive (slika 1-4a). Logièki nivoi Logièki nivoi izlaza (VOL. Sve dok su vrednosti amplitude smetnji manje od margine smetnji.10 - . Na ovaj naèin moguãe je digitalne signale sa dugaèkim vremenima uzlaza i silaza uoblièiti u pravougaone signale što poboljšava otpornost na smetnje (taèka 1. Margine smetnji Kako za ulazne tako i za izlazne logièke nivoe kataloški podaci ne sadrže konkretne vrednosti veã su dati intervali koji su funkcije eventualnih promena u naponu napajanja. 1. Šematske oznake digitalnih kola sa Šmitovom prenosnom karakteristikom obièno sadrže i simbol Šmitove prenosne karakteristike: na slici 1-4b je prikazana šematska oznaka invertora sa Šmitovom prenosnom karakteristikom. . (b) realan sluèaj. promene optereãenja. Zahvaljujuãi odgovarajuãoj unutrašnjoj pozitivnoj povratnoj sprezi. logièki nivoi generisani na izlazu digitalnog kola ãe biti ispravni.2. Ova dva uslova je potrebno ispuniti da bi se elementi digitalnih kola (koji mogu biti kompletna integrisana kola ili njihovi unutrašnji podsklopovi) mogli vezati u kaskadu. 1. Prikazivanjem ovih intervala jedan iznad drugog (slika 1-5). Vo VDD 0 VTL VTH VDD Vi (a) (b) Slika 1-4: (a) Prenosna karekteristika invertora sa histerezisom i (b) njegova šematska oznaka.3.Pitanja vezana za realizaciju digitalnih elektriènih kola Vo VDD VDD Vo 0 VDD/2 VDD Vi 0 VIL VIH VDD Vi (a) (b) Slika 1-3: Prenosne karakteristike logièkog invertora: (a) idealan sluèaj.2. prelaz sa jednog logièkog nivoa na drugi je skokovit umesto da bude postepen. Pored jednoznaènih krivih (slika 1-3) primenjuju se i dvoznaène.

2. Obièno se razlikuju kašnjenja pri silaznim (tpHL) i uzlaznim ivicama (tpLH). Korišãenje integrisanih kola sa velikom marginom smetnji se preporuèuje u industrijskim primenama gde je nivo smetnji znaèajan. Pored konaènog vremena ukljuèivanja i iskljuèivanja na kašnjenja utièu i parazitne kapacitivnosti. 50% t t 50% t t pHL t pLH t pHL t pLH 50% t (a) (b) Slika 1-6: Kašnjenja kod digitalnih kola: (a) pri idealizovanom ulaznom signalu. 1. Kašnjenje elektriènog kola je vreme koje protièe izmeðu pojave ulaznog (upravljaèkog) signala i formiranja izlaznog logièkog nivoa. temperaturi i u . Ovo je posebno izraženo kod vodova štampanih elektriènih kola ali se ne smeju zanemariti ni kod LSI. Pored unutrašnjih kašnjenja kod integrisanih kola postoje još i kašnjenja na vodovima. Umesto toga. velika margina smetnji predstavlja prednost ali zahteva veliki napon napajanja koji dovodi do velike potrošnje. U tom sluèaju.Pitanja vezana za realizaciju digitalnih elektriènih kola VOLMAX VILMAX 0 VOHMIN VIHMIN VDD Slika 1-5: Prikaz margine smetnji kod digitalnih kola. margina smetnji za nizak ulazni logièki nivo je data sledeãom formulom: NM 0  V IL max  VOL max dok u sluèaju visokog logièkog nivoa margina smetnji je: NM 1  VOH min  VIH min . signali koji se dovode na ulaze se dobijaju iz prethodnih stepena koji su veoma slièni posmatranom invertoru. Slika 1-6a prikazuje kašnjenja jednog logièkog invertora pri pobudi sa idealizovanim ulaznim signalom (pravougaoni signal). (b) u sluèaju realnog ulaznog signala. Kašnjenja se ne smeju smatrati konstantnim velièinama.11 - . zbog odstupanja u naponu napajanja. Kašnjenja Ukljuèivanje i iskljuèivanje tranzistorskih prekidaèa u digitalnim kolima se vrši u konaènom vremenu. Zbog odstupanja izmeðu pojedinih primeraka u serijskoj proizvodnji.4. Struje koje pune i prazne parazitne kapacitivnosti su konaène i zato se promene logièkih nivoa dešavaju u konaènom vremenu. Nakon pojave skoka u ulaznom signalu do promene logièkog nivoa izlaza dolazi tek posle proteklog vremena kašnjenja tpHL odnosno tpLH. U realnosti (slika 1-6b) nije moguãe obezbediti idealni pravougaoni signal na ulazu digitalnih kola. Kao što ãemo kasnije videti. kašnjenje se raèuna kao proteklo vreme izmeðu preseka signala sa linijom koja predstavlja polovinu logièke amplitude ili napona napajanja (na slici 1-6b obeležen sa 50%). VLSI integrisanih kola jer se na unutrašnjim vezama izmeðu pojedinih blokova javljaju znaèajna kašnjenja. Prema slici.

Potrošnja U toku rada. Upravljanje ovim prekidaèima zahteva konaène vrednosti struja. Pri odreðivanju opteretljivosti izlaza uvek treba uzeti u obzir najnepovoljniju situaciju.6. U kataloškim podacima se daje proseèna vrednost struje jer je ona zavisna od logièkih nivoa na izlazu. Kod analize uticaja kašnjenja treba uzeti u obzir najnepovoljniji moguãi sluèaj. Retko se javlja situacija kada je na izlaz potrebno vezati druge potošaèe (LED. Zbog kratkotrajnih strujnih impulsa potrebno je filtrirati napon napajnja digitalnih kola kondezatorima dobrog kvaliteta smeštenih u blizini samog kola. Smatra se da je neka familija integrisanih kola bolja od druge ako je PDP njenih logièkih elemenata realizovanih u datoj tehnologiji manja od druge. Pri projektovanju digitalnih sistema èesto se javlja potreba da izlaz jednog logièkog elementa obezbeðuje ulazni signal za jedan ili više njemu sliènih elemenata. 1. potrošnja digitalnih kola zavisi još i od uèestalosti promene logièkih nivoa (frekvencija rada). broj logièkih elemenata koji se mogu vezati na jedan izlaz je konaèan. Tokom projektovanja neophodno je uzeti u obzir da sa poveãanjem optereãenja dolazi i do porasta vremena kašnjenja. Obièno pri razlièitim logièkim nivoima (logièka nula ili jedinica) ulazi nejednako optereãuju izlaze.2. Opteretljivost izlaza se zadaje brojem ulaza logièkih kola koji se mogu vezati na izlaz a ne velièinom struje koju je u stanju da daje izlaz. Razlog za to je da gornji i donji prekidaèi na slici 1-2a pri promeni logièkih nivoa na kratko vreme provode istovremeno da bi se smanjila vremena kašnjenja. Opteretljivost izlaza Otpornost prekidaèa u ukljuèenom stanju kod digitalnih kola je uvek veãa od nule dok u iskljuèenom stanju manja od beskonaènog. Slièno. prenosne linije itd. digitalna kola troše struju iz izvora napajanja. PDP  PD t p . Zbog konaène vrednosti ulaznih i izlaznih otpornosti. Ovaj proizvod se oznaèava sa PDP (power-delay product) i jedinica mere je ista kao i za energiju (J odnosno pJ). 1.2.Pitanja vezana za realizaciju digitalnih elektriènih kola drugim velièinama. Maksimalna frekvencija rada digitalnog kola je u tesnoj vezi sa potrošnjom i kao osnov za uporeðivanje razlièitih familija integrisanih kola uzima se proizvod potrošnje i kašnjenja.12 - .). . t t Slika 1-7: Grafièki prikaz intervala kašnjenja u kataloškim podacima za digitalna kola. standardnim ulaznim strujama. Razlog zašto se potrošnja navodi u pJ je to što su kašnjenja red velièine ns a potrošnje su reda velièine mW. Otpornost prekidaèa u provodnom stanju je konaèna i zbog toga u fazi preklapanja (kada oba prekidaèa vode) neãe se javiti beskonaèna struja ali ãe se potrošnja znaèajno poveãati u odnosu na statièko stanje. Na vremenskim dijagramima se intervali crtaju na naèin koji je prikazan na slici 1-7. proizvoðaèi u kataloškim podacima navode intervale kašnjenja umesto konkretnih vrednosti. U sluèaju preoptereãenja izlazni logièki nivoi se pomeraju i reakcija narednog stepena na promenjene logièke nivoe može da bude pogrešna. Velièine ulaznih struja variraju i unutar jedne familije integrisanih kola i zbog toga pri odreðivanju opteretljivosti izlaza proizvoðaèi raèunaju sa tzv. i punjenje i pražnjenje parazitnih kapacitivnosti u digitalnim kolima dovodi do poveãanja potrošnje. Pored toga.5.

13 - . Temperaturni opsezi U kataloškim podacima proizvoðaèi definišu temperaturni opseg rada i skladištenja integrisanih kola. Temperatura skladištenja je jedinstvena za sve tri primene i pripada opsegu od -65oC do +150oC. Postoje tri temperaturna opsega: za komercijalne.60s. Ovo predstavlja znaèajno temperaturno optereãenje za kolo. Poveãanje stepena integracije neminovno je dovelo do poveãanja broja izvoda na integrisanim kolima. Ovo je dovelo do pojave . najveãa dozvoljena unutrašnja temperatura je obièno 150oC. ali se karakteristike integrisanog kola znaèajno menjaju. Neznatno prekoraèenje opsega radne temperature ne dovodi do trenutnog kvara. (a) (b) (c) (d) Slika 1-8: Kuãišta integrisanih kola: (a) DIL kuãište.54 mm). Integrisana kola su dugi niz godina bila proizvedena u takozvanom DIL (dual in line – dvorednom) kuãištu (slika 1-8a). Ove zavisnosti se daju tabelarno ili u obliku dijagrama. Ugradnja se sastojala od umetanja nožica integrisanog kola u otvore na štampanoj ploèici i od samog lemljenja.8. za sva tri temperaturna opsega. Pri mašinskom lemljenju integrisanih kola definiše se temperaturni profil koji dato kolo može da izdrži.1 inèa (2. plastika i keramika. svaki tip integrisanog kola je proizveden u sve tri verzije.Pitanja vezana za realizaciju digitalnih elektriènih kola 1. Unutrašnja temperatura integrisanih kola je funkcija temperature okoline i gubitaka (potrošnje).2. Opseg temperature koju podrazumeva komercijalna upotreba je od 0oC do +70oC. 1. Za izradu kuãišta se koriste materijali koji imaju dobre izolacione karakteristike kakvi su npr. industrijske i vojne primene. dok za vojnu primenu je od -55oC do +125oC.2. Ugradnja integrisanih kola se obièno vrši lemljenjem. Kuãišta Poluprovodnièke ploèice na kojima su realizovana integrisana kola se smeštaju u odgovarajuãa kuãišta radi adekvatne mehanièke èvrstoãe i dobijanja masivnih prikljuèaka. Tehnologija ugradnje integrisanih kola umetanjem nožica u rupe na štampanoj ploèici nije omoguãavala znaèajno smanjivanje rastojanja meðu nožicama. (d) SMD kuãište tipa BGA. Obièno. Proizvoðaèi dozvoljavaju lemljenje pri temperaturama od 250oC – 300oC u vremenskom trajanju od 10s . Rastojanje izmeðu nožica koje se nalaze u jednom redu je standardno i iznosi 0. opseg temperature za industrijsku primenu je od -25oC do +85oC. Prema kataloškim podacima. (c) SMD kuãište tipa PLCC.7. (b) SMD kuãište tipa SO. Manja temperatura okoline omoguãava rad sa veãim gubicima u kolu a da se pri tome ne preðe granica od 150oC.

sa razlikom da su izvodi savijeni u obliku krila galeba kako bi obezbedili dobro naleganje na površinu štampane ploèice. Kod BGA kuãišta (slika 1-8d) ne postoje izvodi u klasiènom smislu.3. Prikazane pojave u nekim sluèajevima mogu da budu i korisne: na ovaj naèin moguãe je generisati kratkotrajne impulse u okolini uzlazne ivice datog signala bez korišãenja pasivnog diferencijatora ili nekog monostabilnog kola. nožice su savijane ispod kuãišta. Na donjoj strani kuãišta su formirana metalna ostrva u ravni sa izolatorom. Primena SMD komponenti omoguãava montiranje kola sa obe strane štampane ploèice što dalje smanjuje dimenzije ureðaja. Y X X Td X d X X X d Yid Ystv t Slika 1-9: Pojava hazarda uzrokovana kašnjenjem u jednostavnom digitalnom kolu. Kuãište SO (slika 18b) je slièno DIL kuãištu.05 inèa (1. može se ustanoviti da u idealnom sluèaju vrednost izlaza bi trebala uvek da bude logièka nula jer (zbog prisustva invertora na jednom ulazu I kola) ne mogu se pojaviti istovremeno dve jedinice na ulazima što je uslov za formiranje logièke jedinice na izlazu. Greške koje nastaju zbog kašnjenja se nazivaju hazardima jer su nepredvidive i imaju štetne posledice. Zbog kašnjenja.Pitanja vezana za realizaciju digitalnih elektriènih kola novih kuãišta koja se površinski montiraju (surface mounted device – SMD). nakon uzlazne ivice promenljive X. Posledice kašnjenja: hazardi Posledice kašnjenja (taèka 1. U realnim okolnostima neophodno je ukljuèiti u razmatranje i kašnjenje invertora koje je predstavljeno blokom Td. na oba ulaza I kola stižu logièke jedinice u kratkom intervalu zbog èega vrednost izlaza privremeno postaje logièka jedinica. . osim kašnjenja u formiranju izlaznih signala mogu biti i privremene ili trajne greške u funkcionisanju ureðaja. a za dodatno smanjenje dimenzija. Ako se posmatra jednostavno kolo koje je dato na slici 1-9. Meðutim.27 mm) a kasnije su ove mere još smanjene. 1. Pri lemljenju metalna ostrva se pozicioniraju na lemne kugle smeštene na štampanoj ploèici i zagrevanjem celog integrisanog kola se formiraju elektrièni kontakti.14 - . U poèetku su rastojanja izmeðu nožica SO kuãišta bila 0.4). Kod PLCC kuãišta (slika 1-8c) postoje izvodi na sve èetiri strane.2. U nastavku ãe se vršiti analiza razlièitih hazardnih pojava i tražiãe se rešenje za otklanjanje hazarda. razlika u cenama je veã oko 1990 godine bila na strani SMD tehnologije s tim da ugradnju vrše pretežno roboti (osim kod maloserijske proizvodnje i popravki). Kuãišta za površinsku montažu su bila skuplja u poèetku i proces montaže je bio komplikovan.

Jedino se kašnjenje invertora uzima u obzir radi jednostavnije analize. na ulaz ILI kola dolazi logièka jedinica ili iz jednog ili iz drugog I kola i logièki nivo izlaza se održava konstantno na logièkoj jedinici (slika 1-10b). Logièka funkcija prikazanog digitalnog kola se sastoji od zbira dva logièka proizvoda i realizuje se dvostepenom I-ILI logièkom mrežom. B A C A Td Ad II I Y (a) B C A A Ad AB 1 AC AdC AB +AC AB +AdC B C AB +AdC C +B Y(o tklon n hazard) je Y(b kasn nja) ez je Y(h azard usled k asnjen ja) 1 1 B C A 0 00 01 1 11 1 10 redu antni nd log ki proizvo ic d t B C A 0 1 00 01 1 11 1 1 1 10 (c) (d) staticki hazard (b) Slika 1-10: Statièki hazard i njegovo otklanjanje: (a) minimizirana mreža.Pitanja vezana za realizaciju digitalnih elektriènih kola 1. (c) Karnaugh-ova tabela sa oznaèenim logièkim proizvodima. (b) vremenski dijagrami. Ako se zanemare sva kašnjenja. Primer na slici 1-9 predstavlja sluèaj statièkog hazarda. vrednost logièkog proizvoda AB padne na nulu pre nego što proizvod ( A)C postigne vrednost logièke jedinice i kao rezultat. Ako se ukljuèi u razmatranje kašnjenje invertora. Statièki hazardi Statièkim hazardom nazivamo kratkotrajne pojave impulsa na izlazu nekog logièkog kola pod uticajem promene u vrednosti ulaznih signala u intervalu kada vrednost logièke funkcije izlaza treba da bude sve vreme konstantna.15 - . dobija se privremena logièka .3. Slika 1-10a prikazuje jedno složenije digitalno kolo sa hazardom koji treba otkloniti.1. (d) Karnaugh-ova tabela za dopunjenu mrežu bez hazarda.

X M 1 Y1 Y=Y1 Y2d (a) M 2 Y2 Td Y2d Y1id Y2id t Idealn s a ituacija (bezha zarda) (b) Yid= 1idY2 Y id Y1 Y2 (c) Y2d Y=Y1 Y2d Dinam haza icki rd Stvarnasituacija (sahazardom ) Slika 1-11: Nastanak dinamièkog hazarda.Pitanja vezana za realizaciju digitalnih elektriènih kola nula na izlazu. Jedan pristup je da se kašnjenja nastala u jednoj grani kola. Zabrana treba da traje dovoljno dugo da eventualni hazard išèezne pre pojave novog signala dozvole. Analizom se može pokazati da I kolo koje je dodato funkciji predstavlja takav logièki proizvod. Ovo se smatra hazardom jer može da dovodi do ozbiljnih smetnji u radu narednih stepena. Za otklanjanje hazarda posmatrajmo Karnaugh-ovu tabelu prikazanu na slici 1-10c. Kao primer posmatrajmo kolo koje je prikazano na slici 1-11a.16 - . može se javiti prelaz ne preko susedne ivice veã preko polja tabele na kojoj je vrednost logièke funkcije nula. Ako je pri promeni ulaznih promenljivih potrebno preãi iz jednog prim implikanta u drugi. Za vreme takvog prelaza javlja se hazard. Sinhronizacija omoguãava kontrolu nad vremenskim trenucima kada je dozvoljeno korišãenje izlaznih vrednosti digitalnog kola.2. Postoje i druge metode za otklanjanje statièkih hazarda. Redundantni logièki proizvod je realizovan pomoãu I kola koje je prikazano isprekidanom linijom na slici 1-10a. 1. Kolo sadrži dve podmreže (M1 i M2).. onda pomoãu dijagrama na slici 1-11c se može pokazati. Drugi. da funkcija logièke mreže M1 stadrži statièki hazard koji na izlazu prouzrokuje privremenu logièku jedinicu. X n 1. kompenzuju namerno postavljenim kašnjenjima u drugim granama kola.. Statièki hazard nastupa zato što se prim implikanti koje saèinjavaju logièku funkciju. Jedan naèin za otklanjanje hazarda je izmena logike datog digitalnog kola.3. koji je u toku minimizacije izostavljen jer (ako se zanemari hazard) je bio suvišan pri realizaciji date logièke funkcije. otklanja se moguãnost pojave hazarda. Ako pri tome promena na izlazu mreže M2 kasni za Td2. Pojava višestrukih promena u logièkom nivou izlaza pre ulaska u novo stanje ukazuje na postojanje dinamièkog hazarda u datom kolu. da vrednost izlaza Y neãe trajno preãi u . dodiruju umesto da se preklapaju. Dinamièki hazardi Dinamièki hazardi se javljaju prilikom promene logièkog nivoa izlaza digitalne mreže. veoma èesto primenjen pristup je korišãenje takt signala za sinhronizaciju. Uvoðenjem redundantnog logièkog proizvoda (prikazan isprekidanom linijom na slici 1-10d) koji pokriva mesto prelaza. Pretpostavimo.

Pri tome optimizacija pojedinih parametara se vrši na manji ili veãi uštrb drugih karakteristika.3. enja (b) 1 B C A 0 00 0 0 01 1 1 11 0 1 10 0 1 AB 101 ---> 111 ---> 110 C: Y : 1 ---> 1 ---> 1 Prvo sem BzatimC. . B C A 0 00 0 0 01 1 1 11 0 1 10 0 1 AB 101 -----> 110 C: Y : 1 -----> 1 Bi Csem enjaju istovrem eno. može zakljuèiti da neãe doãi do pojave hazarda. B i C logièke funkcije kojoj odgovara Karnaugh-ova tabela na slici 1-12a menjaju sa 101 na 110. nego ãe se javiti jedan niz prelaza 1-0-1-0 na izlazu.4. Funkcionalni hazardi Funkcionalni hazard je jedna druga nepoželjna pojava u digitalnim mrežama.17 - .3. (a) 1 B C A 0 00 0 0 01 1 1 11 0 1 10 0 1 AB 101 ---> 100 ---> 110 C: Y : 1 ---> 0 --->1 Prvo sem CzatimB. na osnovu slike 1-12c. 1. Tehnologije izrade integrisanih kola Digitalna kola se mogu realizovati u razlièitim tehnologijama. u realnosti ne mogu se oèekivati taèno istovremene promene. enja (c) 1 Slika 1-12: Nastanak funkcionalnog hazarda. smanjenjem napona napajanja smanjuju se gubici ali se pogoršava margina smetnji itd. Pojava dinamièkog hazarda je u znaèajnoj meri posledica statièkog hazarda u nekoj podmreži. smanjenem kašnjenja moguãe je poveãati maksimalnu frekvenciju rada ureðaja ali to povlaèi za sobom i veãe gubitke. 1. Dinamièki hazardi mogu da prouzrokuju ozbiljne smetnje u radu narednih stepena kod digitalnih ureðaja. Javlja se kada se vrednosti dve ili više ulaznih promenljivih menjaju približno istovremeno. pri kojoj se pojavljuje kratkotrajna lažna nula. Npr. oznaèena je strelicama u Karnaugh-ovoj tabeli. Ako se otklone statièki hazardi i dinamièki hazard ãe nestati. Ili. zatim posle kratkog kašnjenja vrednost promenljive B postaje logièka jedinica. Meðutim. Pristup u otklanjanju funkcionalnih hazarda se može sastojati od uvoðenja planiranih kašnjenja ali za sistematsko rešenje ovog problema je neophodna sihronizacija ulaza sa taktom. U principu možemo pretpostaviti da se vrednosti promenljivih B i C menjaju istovremeno i zato ãe se na izlazu konstatno javljati logièka jedinica. Ovaj prelaz. a zatim C) tada se. Na slici 1-12b se analizira sluèaj kada se prvo vrednost promenljive C opadne na logièku nulu.Pitanja vezana za realizaciju digitalnih elektriènih kola stanje logièke nule kada vrednost izlaza Y2 opadne na nulu (što bi bilo u idealnom sluèaju). Kada se vrednosti ulaznih promenljivih menjaju u suprotnom redosledu (prvo se menja B. Neka se vrednosti promenljivih A.

Veãina prikazanih familija integrisanih kola se izraðuju u CMOS tehnologiji zbog manje potrošnje i bolje prenosne karakteristike. Unutar svetlog segmenta integrisano kolo je još uvek funkcionalno ali su moguãa odstupanja od deklarisanih vrednosti u nekim parametrima. . pravougaonici ukazuju na CMOS familije dok krugovi oznaèavaju familije sa kombinovanim tehnologijama.. Crna linija oznaèava granice do koje integrisano kolo podnosi sve ulazne i izlazne prenapone bez ošteãenja. Danas se bipolarne tehnologije najviše primenjuju u onim oblastima gde su potrebne velike struje za pobudu.1. S.4. Digitalna kola izraðena u mosfet tehnologiji su danas više zastupljena ali nisu nestalala ni bipolarna rešenja.18 - . Sivi segment predstavlja onaj opseg napona napajanja za koje su parametri integrisanog kola unutar deklarisanih vrednosti.Pitanja vezana za realizaciju digitalnih elektriènih kola 1. 1. Krugovi na dijagramu oznaèavaju one vrednosti napona napajanja koje obezbeðuju optimalno funkcionisanje integrisanih kola iz date familje. Podela prema naponu napajanja Za novo razvijena kola je karakteristièno da se smanjuju vrednosti napona napajanja i umesto jedne konstantne vrednosti mogu da se primenjuju u širem intervalu napona. LS.4. Kasnije su se pojavili mosfet prekidaèi. . Na levoj strani su prikazane familije integrisanih kola u povoju koje su izraðene novim i obeãavajuãim tehnologijama.. veka i njihova popolarnost je veã opala do danas. Na slici 1-13 se može videti dijagram koji prikazuje popularnost onih integrisanih kola koje danas proizvodi Texas Instruments. Slika 1-13: Dijagram popularnosti Texas Instruments-ovih digitalnih kola. kojima su postignute bolje prenosne karakteristike pri èemu je i potrošnja smanjena.2. Podela familija integrisanih kola prema naponu napajanja je prikazana na slici 1-14. Popularnost i životni ciklus familija integrisanih kola U poèetku bipolarni tranzistori su korišãeni kao prekidaèki elementi u digitalnim kolima.) koje su se poèele proizvoditi šezdesetih i sedamdesetih godina XX. Na vrhu dijagrama se nalaze ona kola koja su razvijena osamdesetih godina i danas su najzastupljeniji proizvodi u industriji. Na desnoj strani dijagrama su prikazane one familije integrisanih kola (TTL. Trouglovi oznaèavaju one familije koje su izraðene u bipolarnoj tehnologiji.

3. posebno kod CMOS kola. . je karakteristièna simetriènost logièkih nivoa. 1. Slika 1-15: Logièki nivoi pojedinih familija integrisanih kola i njihova meðusobna kompatibilnost.4. Kompatibilnost ligièkih nivoa Slika 1-15 prikazuje karakteristiène logièke nivoe za razne familije logièkih kola. Kod ranije razvijenih logièkih kola u bipolarnoj tehnologiji i sa naponom napajanja od 5V logièki nivoi su asimetrièni u odnosu na 0V i 5V.Pitanja vezana za realizaciju digitalnih elektriènih kola Slika 1-14: Podela familija logièkih kola prema naponu napajanja. Za nove generacije integrisanih kola.19 - .

20 - . Takva veza je dozvoljena samo u sluèaju ako proizvoðaè za datu familiju logièkih kola dozvoljava napon na ulazu veãi od napona napajanja. U prikazanom izboru proizvoda su spomenuti samo SSI i MSI kola. LS i F. Izbor logièkih funkcija po raznim familijama logièkih kola Slika 1-17 prikazuje primer tabele koja daje izbor logièkih funkcija iz pojedinih familija logièkih kola (za proizvoðaè Fairchild). Od CMOS familija. Navedene tehnologije se primenjuju i kod LSI i VLSI integrisanih kola koja se softverski ili hardverski programiraju. 1. Najveãi izbor logièkih funkcija iz bipolarne tehnologije imaju familije sa oznakama TTL. U takvoj situaciji se potrebno logièko kolo bira iz druge familije koja je kompatibilna sa prvom. 1. Detaljniji podaci o konkretnim funkcijama se mogu dobiti iz liste proizvoda konkretnog proizvoðaèa.4. Logièki nivoi integrisanih kola unutar jedne familije su uvek kompatibilni.4. Za postizanje kompatibilnosti mogu se koristiti specijalna kola za sprezanje.4.Pitanja vezana za realizaciju digitalnih elektriènih kola Tabela u gornjem desnom uglu slike prikazuje kompatibilnost izmeðu pojedinih familija logièkih kola. Na desnoj strani tabele su navedene oblasti u kojima se preporuèuje primena date familije integrisanih kola. U tabeli su i takve familije oznaèene kao kompatibilne kod kojih je izlazni visoki logièki nivo (VOH) pobudnog kola (D) višlji od napona napajanja (VCC) prijemnog kola (R).5. Povezivanje integrisanih kola iz razlièitih familija je moguãe samo ako su ispunjeni uslovi VOL<VIL i VOH>VIH. serije AC i ACT su najzrelije i sadrže najviše ponuðenih rešenja za razne logièke funkcije. Meðutim. Na dijagramu su nacrtane krive kašnjenja pojedinih familija za deklarisane opsege napona napajanja prema kataloškim podacima. potrebno je naglasiti da kola koja su projektovana za širi opseg napona napajanja imaju manja kašnjenja kada su prikljuèena na veãe napone napajanja (slika 1-16). Ponekad se desi da korišãena familija integrisanih kola ne sadrži potrebnu logièku funkciju. . Slika 1-16: Zavisnost kašnjenja od primenjenog napona napajanja za razne familije logièkih kola. S. Zavisnost kašnjenja od napona napajanja Pravac razvoja je decenijama bio sniženje napona napajanja kako bi se smanjili gubici i kašnjenja.

21 - .Pitanja vezana za realizaciju digitalnih elektriènih kola Slika 1-17: Izbor logièkih funkcija realizovanih u raznim familijama logièkih kola. .

Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica .II.

b) invertor.1. 2. B.3) za formiranje važeãeg izlaznog logièkog nivoa posle svake promene vrednosti ulaza ali nakon toga vrednost izlaza je nezavisna od prethodnih vrednosti ulaza. ulazni i izlazni deo kola za sprezanje se povezuje na posebne izvore napajanja. glava) odstupa od navedenog.Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica 2. Ova rešenja se takoðe nalaze i u strukturi mikrokontrolera. osam komada) ugraðuje u jedno DIL ili SO kuãište i oni pripadaju kategoriji SSI kola. U realnosti je potrebno neko odreðeno vreme (zbog kašnjenja.1. Ako je potrebno povezati dve logièke jedinice sa razlièitim naponima napajanja.1. dok se ostali drže u treãem stanju (stanje visoke impedanse). poglavlje 1. nego na kolima za pojaèavanje koja se koriste u prekidaèkom režimu. C. A Y A Y (a) (b) U jednostavnijim sluèajevima kola za sprezanje zahtevaju samo jedan napon napajanja. D) prenosi signal prema jedinstvenom korisniku (L) preko jednog zajednièkog provodnika na naèin kako je prikazan na slici 2-2. Kombinacione mreže Kombinacione mreže su digitalna kola kod kojih se vrednost izlaza odreðuje na osnovu trenutne vrednosti ulaza. Neinvertujuãa i invertujuãa kola za sprezanje Neinvertujuãa kola za sprezanje (bafer. Kod kola za sprezanja akcenat nije na logièkim funkcijama. prilagoðavaju impedanse i propuštaju signale u direktnom ili u invertovanom obliku.1. ED. A B C D Slika 2-2: Prenos signala preko zajednièkog provodnika korišãenjem kola za sprezanje sa tri stanja. Slika 2-1: Šematske oznake kola za sprezanje : a) bafer. neophodno je koristiti kola za sprezanje sa tri stanja. buffer) i invertujuãa kola za sprezanje (invertor. EB. EC.2. mikroprocesora i PLD-ova.23 - . Ova kola mogu da menjaju logièke nivoe. inverter) se prave sa velikom ulaznom i malom izlaznom otpornošãu. Vrste kombinacionih mreža koje se obraðuju u ovoj glavi se proizvode od šezdesetih godina u obliku SSI i MSI funkcionalnih jedinica. Odgovarajuãe šematske oznake su prikazane na slici 2-1. EA EB EC ED L . 2. Njihova primena se ne ogranièava samo na izgradnju digitalnih ureðaja upotrebom SSI i MSI integrisanih kola. Kola za sprezanje Povezivanje razlièitih funkcionalnih jedinica se èesto vrši preko kola za sprezanje (prilagoðenje). Kola za sprezanje sa tri stanja Kada se iz više izvora (A. Ovaj izbor impedansi omoguãuje vezivanje velikog broja ulaza narednih stepena na izlaz nekog prethodnog stepena. engl. Ovo je naglašeno zbog toga jer ponašanje sekvencijalnih mreža (3. Navedene funkcije se pojavljuju i u jezicima za opis hardvera koji se koriste pri programiranju PLD-ova (III deo). enable) EA. engl. Aktivacija se vrši pomoãu signala dozvole (engl. Obièno se veãi broj kola za sprezanje (npr. Samo jedno kolo za sprezanje sa tri stanja je aktivno u nekom trenutku. 2.

Za svaku ulaznu kombinaciju uvek je samo jedna izlazna linija aktivna. Dvosmerna kola za sprezanje Kada je potreban dvosmeran prenos signala izmeðu razlièitih funkcionalnih jedinica.2. Kombinaciona tabela potpunog dekodera sa tri ulaza i osam izlaza (3/8) je prikazana u tabeli 2-1. DIR Slika 2-4: Unutrašnja struktura dvosmernog kola za sprezanje. Ako je broj ulaznih linija potpunog dekodera jednak n. Potpuni dekoder Ulazi potpunog dekodera su binarno kodirani brojevi.Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica Èetiri idejna rešenja kola za sprezanje sa tri stanja su u ponudi proizvoðaèa (slika 2-3). Kolo za sprezanje koje je iskljuèeno. Unutrašnja struktura dvosmernog kola za sprezanje koji je sposoban za dvosmerni prenos signala je prikazan na slici 2-4. Kola za sprezanje mogu da propuste signal bez invertovanja (slike a i c) ili sa invertovanjem (slike b i d) dok signal dozvole može da bude aktivan na logièkoj jedinici (slike a i b) ili na logièkoj nuli (slike c i d). . Proizvode se i takvi tipovi èija je namena povezivanje mreža sa razlièitim naponima napajanja i razlièitim logièkim nivoima. gde svaka dozvoljena kombinacija ulaznih promenljivih aktivira poseban izlaz. Za dvosmerna kola za sprezanje takoðe važi pravilo da u jedno kuãište se smešta više primeraka. E A Y A E Y A E Y A E Y (a) (b) (c) Slika 2-3: Vrste kola za sprezanje sa tri stanja. Dekoder Dekoderi su kombinacione mreže sa više ulaza i izlaza. 2. ne utièe na logièki nivo izlaza jer je u stanju visoke impedanse. upotrebljavaju se dvosmerna kola za sprezanje.1. onda je broj moguãih varijacija logièkih nivoa 2n i zato je broj izlaznih linija jednak 2n. Signal DIR odreðuje smer prenosa signala i zahvaljujuãi internoj negaciji uvek je samo jedno kolo za sprezanje aktivno.2. 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 Tabela 2-1: Kombinaciona tabela i logièke funkcije potpunog dekodera 3/8.1.24 - . A Y 2. (d) 2. Obièno se i kod kola za sprezanje sa tri stanja veãi broj komada smešta u zajednièko kuãište.3.

. Minimizacijom logièkih funkcija Y0. Naèin uprošãavanja se sastoji od izostavljanja onih I kola koja realizuju takve logièke proizvode èije vrednosti nikada ne mogu postati jedinice. Tipièan primer nepotpunog dekodera je BCD dekoder. Nepotpuni dekoder dobijen na ovaj naèin ãe ispravno funkcionisati ali moguãe je i dalje uprošãavanje. Slika 2-6: Realizacija dekodera 4/16 pomoãu dva dekodera 3/8.. A2 A1 A0 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 Slika 2-5: Realizacija potpunog dekodera pomoãu I kola.Y9 definisanih na ovaj naèin dolazi se do logièke mreže predstavljenoj na slici 2-7.25 - . Y0 Y1 Y2 Y3 DEK Y4 3/8 Y5 EN Y6 Y7 A0 A1 A2 Y0 Y1 Y2 Y3 DEK Y4 3/8 Y5 EN Y6 Y7 A0 A1 A2 A3 A2 A1 A0 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9 Y10 Y11 Y12 Y13 Y14 Y15 Integrisana kola namenjena za funkciju dekodiranja obièno sadrže i ulaz za dozvolu (EN – enable). ..2.Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica Za realizaciju dekodera se koriste logièka I kola sa potrebnim brojem ulaza jer se svaka izlazna logièka funkcija Y0. Nepotpuni dekoder Potpuni dekoder se može uprostiti ako se pouzdano zna da se nikad neãe pojaviti neke ulazne kombinacije.. Ovo omoguãava poveãanje kapaciteta dekodera: povezivanjem dva dekodera 3/8 moguãe je dobiti dekoder 4/16 (slika 2-6). Kombinaciona tabela BCD dekodera se dobija iz kombinacione tabele dekodera 4/16 izostavljanjem zadnjih šest linija jer kombinacije brojeva od 10 do 15 se ne mogu pojaviti (tabela 2-2).2.Y7 sastoji od jednog logièkog proizvoda (slika 2-5). 2. itd. koji služi za dekodiranje binarno kodiranih decimalnih cifara.

funkcija: Y  ABC  ABC  A BC je realizovana na naèin prikazan na slici 2-8.Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica A3 0 0 0 0 0 0 0 0 1 1 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 Tabela 2-2: Kombinaciona tabela BCD dekodera. Npr.3. 2.2. Realizacija logièkih funkcija pomoãu dekodera Dekoderi realizuju logièke proizvode svojih ulaznih promenljivih i zato je moguãe dodavanjem ILI kola na izlaz dekodera realizovati bilo koju logièku funkciju koja je data u obliku zbira logièkih proizvoda. A B C A0 A1 A2 Y0 Y1 Y2 Y3 DEK Y4 3/8 Y5 Y6 Y7 ABC ABC ABC Y Slika 2-8: Realizacija logièke funkcije korišãenjem dekodera.26 - . . Slika 2-7: Logièka mreža koja realizuje minimizirani BCD dekoder.

Funkcije dekodera se u ovom sluèaju dobijaju u obliku èistog zbira umesto sume proizvoda. Naziv ovog kodera je DC-BCD koder. Odgovarajuãe kombinacione tabele su prikazane u tabeli 2-4. Logièka šema koja se dobija na osnovu prethodnih jednaèina za koder 8/3 je prikazana na slici 2-9. U tabeli su prikazani samo oni redovi od svih moguãih 28=256 u kojima samo jedna ulazna promenljiva ima vrednost logièke jedinice. . 2. koder se može proširiti sa jednim logièkim kolom koje upozorava na nedozvoljene kombinacije na ulazima.1. Tipièan primer za to je kodiranje cifara decimalnog brojnog sistema pomoãu èetiri izlazne linije (bit-a). Nepotpuni koder Koder je nepotpun kada je broj moguãih stanja na ulaznim linijama koja se kodiraju pomoãu n izlaznih linija manji od 2n. Y2 Y1 Y0 2.2.3. Npr. kada se pritisne jedan taster na tastaturi raèunara. A0 A1 A2 A3 A4 A5 A6 A7 Slika 2-9: Logièka mreža koja realizuje koder 8/3. 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 odgovarajuãe izlazne logièke funkcije. gde su date i minimizovane logièke funkcije. Logièka vrednost izlaza je netaèna ako na ulazima logièke mreže ima više od jedne jedinice. Suština kodiranja je dodeliti razlièit kod svakoj ulaznoj vrednosti. Koder Digitalna obrada se vrši nad kodiranim signalima.3. Potpuni koder Izlazni kod dužine n bita potpunog kodera se formira na osnovu 2n ulaza.3. Zbog ovih kombinacija.Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica 2. Na slici su takoðe dati izrazi za logièke funkcije dobijeni logièkom minimizacijom. U tabeli 2-3 je data kombinaciona tabela dekodera sa osam ulaza i tri izlaza (8/3). nastaje niz logièkih nula i jedinica (kod).27 - .

Ako je 001xxxxx 010 neophodno uzeti i taj sluèaj u obzir. Na slici 2-15 je data kombinaciona tabela prioritetnog kodera Ulaz Izlaz (kod) 8/3. Ako su prisutne više jedinice na ulazima kodera onda se formira kod onog ulaza èiji je prioritet najveãi.Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica Ai 0 1 2 3 4 5 6 7 8 9 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 Tabela 2-4: Kombinaciona tabela DC/BCD kodera i odgovarajuãe logièke funkcije. Ovakav zadatak se unutar mikrokontrolera rešava pomoãu prioritetnog kodera. Slika 2-10: Logièka mreža koja realizuje DC-BCD koder. Tipièan primer za ovo je obrada prekida kod mikrokontrolera. Potrebno je napomenuti da u tabeli 01xxxxxx 001 nije prikazan sluèaj kada su svi ulazi na logièkoj nuli. Više signala mogu istovremeno da imaju vrednost logièke jedinice jer je priroda logièkih signala asinhrona (potièu iz spoljašnjih kola). Sa x smo obeležili one vrednosti ulaza koje ne utièu na 1xxxxxxx 000 funkcionisanje prioritetnog kodera. 00001xxx 100 000001xx 101 0000001x 110 00000001 111 Tabela 2-5: Kombinaciona tabela prioritetnog kodera 8/3. A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 Logièka mreža koja realizuje DC-BCD koder je prikazana na slici 2-10. Prioritetni koder Reèeno je da oni koderi koji su prikazani u prethodnim taèkama generišu pogrešan kod odnosno neupotrebljiv kod na izlazima ako su više od jedne logièke jedinice prisutne na ulaznim linijama. . U takvim situacijama mikrokontroler odluèuje koji zahtev za prekid ãe se prvi opslužiti. Neophodno je naglasiti da realizacija funkcije zaštite od istovremene pojave više logièkih jedinica na ulazu kodera je zadatak korisnika.3.3.28 - . Ulazi prioritetnog kodera su rangirani po važnostima (prioritetima). Y3 Y2 Y1 Y0 2. dodaje se kolo koje je posebno 0001xxxx 011 projektovano za tu namenu.

4. DE KODER3 /8 B 0 B 1 B 2 A0 A1 A2 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 Prirodni Gray-ov binarni kod kod 000 000 001 001 010 011 011 010 100 110 101 111 110 101 111 100 KODE R Slika 2-11: Pretvaraè koda realizovan kaskadnom vezom dekodera i kodera. Pretvaraè prirodnog binarnog koda u Gray-ov kod Pretvaranje trobitnog prirodnog binarnog broja u Grayov kod se vrši prema tabeli 2-6. Meðutim. nazivamo pretvaraèima koda.29 - . Pretvaraèi koda Kombinacione mreže. 2. Teoretski se svaki pretvaraè koda može konstruisati kaskadnom vezom jednog dekodera i jednog kodera. Rešenje koje se dobija kaskadnom vezom dekodera i kodera prikazano je na slici 2-11. Na osnovu tabele mogu se napisati sledeãe jednaèine za pojedinaène bitove Gray-ovog koda: G2 G1 G0 G 2  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 Minimizacijom prethodnih logièkih funkcija se dobijaju sledeãi. èesto postoji veliki prostor u minimizaciji jednog takvog pretvaraèa koda.1. koje podatke iz jednog kodnog sistema pretvaraju u drugi. G 1 B 1 G 1 B 1 G 0 B 0 G 0 B 0 (a) (b) Slika 2-17: Minimizovani pretvaraèi koda: (a) iz binarnog u Gray-ov kod i (b) iz Gray-ovog koda u binarni. jednostavniji izrazi: G 2  B2 G1  B2  B1 G0  B1  B0 B 2 G 2 G 2 B 2 Pojednostavljena šema pretvaraèa koda je prikazana na slici 2-12a dok minimizovana logièka mreža prikazana na slici 2-12b obavlja inverznu operaciju u odnosu na prethodnu mrežu. Tabela 2-6: Uporedna tabela trobitnog prirodnog binarnog koda i trobitnog Gray-ovog kola.4.Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica 2. .

Malim promenama je moguãe rešiti da displej prikazuje simbole sa slike 2-14 za kodne reèi heksadecimalnog brojnog sistema od 10 do 15.. Multipleksor Multipleksor se može prikazati kao višepoložajni prekidaè (slika 2-15). Ako se na ulaz rešenja koje je prikazano gore dovodi nepostojeãi kod.Dn-1) sa svojih ulaza na izlaz. . Pretvaraè BCD koda u 7-segmentni kod Najèešãe korišãen pretvaraè koda je digitalno kolo koje na osnovu binarno kodiranih decimalnih cifara pokreãe sedmosegmenti displej.4. 2. Slika 2-13: (a) Oznake segmenata sedmosegmentog displeja. pomoãu kojeg se mogu svi segmenti istovremeno iskljuèiti..2. Tabela 2-7 prikazuje kombinacionu tabelu koja odgovara navedenom pretvaraèu koda. Tabela 2-7: Kombinaciona tabela pretvaraèa koda iz BCD koda u 7segmentni kod. Kao naziv za ovaj pretvaraè èesto se u kataloškim podacima (pogrešno) navodi izraz dekoder.Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica 2.Sm-1) odreðuju ulazni signal koji ãe se u datom momentu proslediti na izlaz. Oznake segmenata su prikazane na slici 2-13a.. Selekcioni ulazi multipleksora (S0. prikaz na displeju ãe biti besmislen. Korist od upravljaèkog ulaza je velika ako je potrebno istovremeno prikazati više cifara. Ova kola obièno sadrže još i jedan upravljaèki ulaz.. Za svaki segment je potrebno napisati odgovarajuãe jednaèine i nakon minimizacije se dolazi do sledeãih rezultata: a  B  D  AC  AC b  C  AB  A B c  A B C d  D  AB  A BC  AC  BC e  AB  AC f  D  A B  AC  BC g  D  AB  BC  BC 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 Dobijene logièke funkcije se sintetizuju dvostepenim I-ILI logièkim mrežama koja se zatim integrišu u jedno MSI kolo.30 - . Slika 2-14: Naèin prikazivanja cifara heksadecimalnog brojnog sistema veãe od devet pomoãu sedmosegmentnog displeja. (b) kombinacije segmenata za prikazivanje cifara decimalnog sistema. Segmenti LCD ili LED displeja koji služe za prikazivanje jedne decimalne cifre su postavljene u obliku osmice.5. Prosleðuje signale (D0. Slika 2-13b prikazuje kombinacije segmenata koji treba da se aktiviraju za prikazivanje pojedinih cifara decimalnog brojnog sistema.

2.D7) i tri selekciona ulaza (S0. pri èemu je broj selekcionih ulaza redom 1.. Proširivanje se može izvesti u više stepena. 4. sa time da je izveden i ulaz za dozvolu rada (E) pomoãu kojeg je moguãe stanje izlaza prevesti u logièku nulu nezavisno od ulaza za podatke i selekcionih ulaza.5.5. Logièka mreža prikazana na slici 2-16 realizuje dati multipleksor.31 - . Ovo je znaèajno kada je potreban multipleksor sa više ulaza za podatke od onoga što je na raspolaganju u integrisanoj formi (obièno se proizvode do 16 ulaza).. D0 S2 D1 D2 D3 D4 D5 D6 D7 S1 S0 Y E Slika 2-16: Logièka mreža koja realizuje multipleksor sa osam ulaza za podatke. 3 i 4.. Izlazni podaci multipleksora iz prvog stepena se vode na sledeãi multipleksor koji odluèuje o tome koji podaci se dalje prosleðuju sa prethodnog stepena.. Na selekcione ulaze ovih multipleksora se vode isti signali. 2. .S2) je: Y  D0 S 2 S 1 S 0  D1 S 2 S 1 S 0  ..Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica D0 D1 D2 D0 D1 Y Dn-1 Dn-1 SEL (a) Sm -1 (b) S1 S0 M UX Y Slika 2-15: (a) Unutrašnja struktura multipleksora i (b) njegova šematska oznaka.2... Izlazna funkcija multipleksora sa osam ulaza za podatke (D0. 2. Proširivanje multipleksora Naèin proširivanja multipleksora je prikazan na slici 2-17. Realizacija kola se vrši korišãenjem osam komada troulaznih I kola i jednog osmoulaznog ILI kola.  D7 S 2 S1 S 0 . Konstruisanje digitalnih multipleksora Proizvoðaèi obièno u jedno MSI kolo integrišu multipleksor sa 2. Podaci se vode na ulaze odgovarajuãeg manjeg multipleksora. Ulaz za dozvolu se može koristiti i za proširivanje multipleksora. 8 ili 16 ulaza.1.

Realizacija logièkih funkcija pomoãu multipleksora Pored osnovne funkcije (biranje podataka).32 - .3. multipleksori se mogu efikasno primeniti i u realizaciji logièkih funkcija. Uslov za realizaciju je da funkcija bude izražena u obliku sume proizvoda i da proizvodi sadrže sve ulazne promenljive. 2.Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica Slika 2-17: Principijelna šema za proširivanje multipleksora.5. Za realizaciju sledeãe funkcije: Y  C B A  C B  CB A neophodno je ovaj izraz prevesti u normalnu formu: Y  C B A  C B A  C B A  CB A .

. Princip funkcionisanja se može prikazati pomoãu jednog višepoložajnog prekidaèa (slika 2-20a). Y0 Y1 Y2 Y0 Y1 DM X Slika 2-20: (a) Funkcija demultipleksora prikazana višepoložajnim prekidaèem i (b) njegova šematska oznaka. " 1" D0 D1 D2 D3 D4 D5 D6 D7 A B C S 0 S 1 S 2 M UX 8/1 Y Postoji i efikasniji naèin korišãenja multipleksora u realizaciji logièkih funkcija od onog koji je dat u prethodnom primeru. Ako vrednost funkcije zavisi od promenljive A onda se na odgovarajuãi ulaz podatka direktno dovodi promenljiva A ili njegova invertovana vrednost. tako da se na izlazu multipleksora dobija ispravna vrednost funkcije..Sm-1). Slika 2-18: Realizacija logièke funkcije od tri promenljive multipleksorom sa osam ulaza za podatke.33 - . Zatim na pojedinaène ulaze za podatke se vezuju logièke nule ili jedinice ako je vrednost funkcije nezavisna od promenljive A a za date vrednosti promenljivih B i C ima vrednost nulu odnosno jedinicu. Proizvoðaèi obièno nude iste komponente pod nazivima dekoder i demultipleksor. Biranje izlazne linije podatka se vrši odgovarajuãim kodom na selekcionim ulazima (slika 2-20b.Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica Realizacija podrazumeva povezivanje promenljivih A. Demultipleksor Uloga demultipleksora je suprotna od multipleksora: informacija se sa jedne linije podatka prosleðuje na jedan od više izlaznih linija podataka. Na ovaj naèin. X Yn-1 SE L X 1/n Yn-1 S S 0 1 S -1 m (a) (b) Demultipleksor se može zameniti dekoderima ako se na ulaz za dozvolu kod dekodera dovode ulazni podaci. Ulazi dekodera se koriste kao selekcioni ulazi. pomoãu multipleksora sa osam ulaza za podatke moguãe je realizovati logièke funkcije od èetiri promenljive odnosno korišãenjem multipleksora sa èetiri ulaza za podatke moguãe je realizovati logièke funkcije od tri promenljive (slika 2-19). Ako je vrednost ulaznog signala nula. Vrednost izlaza koji se adresira selekcionim ulazima je logièka jedinica ako je rad kola omoguãen signalom dozvole. Tako npr. 2. u oba sluèaja se dobija ispravna vrednost na izlaznim kanalima. B C Promenljive B i C su na uobièajeni naèin vezani na selekcione ulaze. Naponski nivoi se odreðuju na osnovu normalizovane funkcije. B i C na selekcione ulaze i dovoðenje odgovarajuãih naponskih nivoa na ulaze za podatke. . Svakom proizvodu date funkcije odgovara taèno jedan ulaz za podatke koji se povezuje na logièku jedinicu a oni ulazi koji nisu pokriveni logièkim proizvodima u datoj funkciji se vežu na logièku nulu (slika 2-18). onda je i vrednost izlaza nula jer je rad kola onemoguãen.6. D0 D1 D2 D3 S 0 S 1 " 1" A M UX 4/1 Y Slika 2-19: Realizacija logièke funkcije od tri promenljive multipleksorom 4/1. ulazi S0.

6. moguãe je realizovati prenos podataka preko m+1 linije. X V SS (a) (b) Slika 2-22: (a) Konstrukcija analognog prekidaèa pomoãu N kanalnog i P kanalnog mosfeta i (b) šematska oznaka analognog prekidaèa.2. D0 D1 MUX Y X DMX Y0 Y1 n/1 1/n Yn-1 Slika 2-21: Prenos podataka preko smanjenog broja linija korišãenjem multipleksora i demultipleksora.34 - . Kapacitet zajednièkog kanala se deli meðu pojedinim podacima i zbog toga dolazi do znaèajnih smanjenja u brzini prenosa./IZL. Analogni prekidaè se formira paralelnom vezom N i P kanalnog mosfeta (slika 2-22). Analogni multipleksor/demultipleksor (slika 2-23) se dobija primenom potrebnog broja analognih prekidaèa kojima se upravlja pomoãu dekodera. 2. kod višekanalnih mernih ureðaja. Analogni multipleksor/demultipleksor Digitalni multipleksori i demultipleksori su pogodni samo za prenos logièkih nivoa za razliku od višepoložajnih prekidaèa prikazanih na slikama 2-15 i 2-20 koji su u stanju da prenose digitalne i analogne signale u oba smera./IZL. Prenos više podataka preko zajednièkog kanala Povezivanjem multipleksora i demultipleksora je moguãe preneti digitalne podatke preko smanjenog broja provodnika. UL. U integrisanoj tehnici je takoðe moguãe realizovati multipleksore/demultipleksore za analogne signale.6./IZL. Analogni prekidaè èini osnovu ovih kola. Odgovarajuãa logièka šema je prikazana na slici 2-21. X X V DD UL. Multipleksiranje/demultipleksiranje analognih signala je potrebno npr. Ako je broj ulaznih linija n=2m.Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica 2. Dn-1 S0 S1 Sm-1 S0 S1 Sm-1 Nedostatak ove metode je da prenos podataka sa pojedinih ulaznih kanala na pojedine izlazne kanale se ne dešava istovremeno nego jedno za drugim.1. Ovaj princip se naziva vremenskim multipleksom. U L. ali postoje i druga rešenja. Isto kolo se . Na jednu stranu prekidaèa se dovode odgovarajuãi analogni signali dok se drugi kraj svih prekidaèa veže u jednu taèku koja predstavlja izlaz. koji pod uticajem upravljaèkog signala otvara ili zatvara poluprovodnièki kanal. Suština je ta da otpornost kanala u ukljuèenom stanju treba da bude mala a u iskljuèenom stanju velika. UL./IZL. Uloga dekodera je da obezbedi takvo upravljanje analognim prekidaèima da na bilo koju kombinaciju upravljaèkih signala uvek samo jedan prekidaè bude u provodnom stanju. Selekcioni ulazi su na isti naèin povezani kod oba kola i zato je redosled ulaznih i izlaznih linija identièan.

A0 A1 A2 Y0 Y1 Y2 D EK m m /2 Y n-1 S Am -1 W n-1 W 1 W 0 Slika 2-23: Realizacija analognog multipleksora/demultipleksora primenom analognih prekidaèa i dekodera. jer analogni prekidaèi provode signale u oba smera kada su ukljuèeni i neprovodni su u oba smera kada su iskljuèeni. .35 - .Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica može koristiti i kao demultipleksor.

Takt signal se koristi samo za sinhronizaciju rada memorije. Kod veãine sekvencijalnih mreža trenutak promene stanja se sinhronizuje takt signalom (engl. drugu na izlazu. Istovremeno. ULAZI ULAZN A KOM IN IONA B AC M EZA R M OR EM IJA (R IS EG TARS NJA) TA IZLAZNA KOM IN IONA B AC M EZA R IZLAZI TAK T Slika 3-2: Blok šema sekvencijalne mreže Moore-ovog tipa. U ovoj glavi prvo ãe se razmotriti memorijski elementi nakon èega slede naèini opisivanja i konstruisanja sekvencijalnih mreža. Preglednost funkcionisanja takvih mreža je znaèajno smanjena u odnosu na sinhrone mreže i zato njihovo projektovanje zahteva mnogo više pažnje. ULAZI ULAZN A KOM IN IONA B AC M EZA R IZLAZNA KOM IN IONA B AC M EZA R M OR EM IJA (R IS EG TARS NJA) TA IZLAZI TAK T Slika 3-1: Blok šema sekvencijalne mreže Mealy-jevog tipa . Kapacitet sekvencijalnih mreža za pamãenje je najèešãe mali i obièno je reè o svega nekoliko bita. mada periodiènost nije neophodan uslov. dok kombinacione mreže funkcionišu bez sinhronizacionih signala. Pored memorije. Kod n-bitnih sekvencijalnih mreža postoje 2n razlièitih stanja. Sekvencijalne mreže Sekvencijalne mreže su digitalna kola koja poseduju osobinu pamãenja (memorisanja). izlazna kombinaciona mreža definiše izlazne digitalne signale na osnovu trenutne vrednosti signala na ulazima i trenutnog stanja automata. Moguãe je konstruisati i asinhrone sekvencijalne mreže. Kod ovog tipa se vrednosti izlaza formiraju samo na osnovu trenutnog stanja automata. Na osnovu unutrašnje strukture razlikujemo dve vrste logièkih automata. Pojednostavljeni sluèaj Moore-ovog automata se dobija kada se izostavlja izlazna kombinaciona mreža a izlazi memorije (svi ili neki) su ujedno i izlazi automata. Ulazna kombinaciona mreža odreðuje novo stanje automata na osnovu trenutne vrednosti logièkih nivoa na ulazima i na osnovu trenutnog stanja automata.: clock). sekvencijalne mreže sadrže i kombinacione elemente (mreže).Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica 3. Digitalno kolo pamti odreðene informacije o stanju samog kola u prošlosti i o upravljaèkim signalima dovedenim u proslošti. Na slici 3-2 je prikazan Moore-ov automat koji je jednostavnije konstrukcije. Na slici 3-1 je prikazana blok šema Mealy-jevog automata. Kolo. Takt signal se obièno sastoji od periodiène povorke pravougaonih impulsa. Izlazni signali sekvencijalne mreže se formiraju na osnovu zapamãene informacije i novih vrednosti logièkih nivoa na ulazima. sadrži i dve kombinacione mreže: jednu na ulazu. . Zbog konaènog broja stanja. finitestate machine) . Prvi tip je obièno brži a drugi je jednostavniji. Kod projektovanja sekvencijalnih mreža ni Mealy-jev ni Moore-ov tip automata ne uživa apsolutnu prednost. sekvencijalne mreže se još nazivaju i automatima sa konaènim brojem stanja (engl. Sekvencijalne mreže se redovno nazivaju i logièkim automatima jer se èesto primenjuju u oblasti automatskog upravljanja. pored memorije. Na kraju ove glave se daje pregled èesto korišãenih sekvencijalnih mreža dostupnih u obliku integrisanih kola SSI odnosno MSI klase.36 - .

Informacija se pamti korišãenjem povratne sprege.37 - . (b) NI kolima. naziva se nedozvoljenom kombinacijom. Sa druge strane. Dva osnovna kola koja mogu da obavljaju ovu funkciju se dobijaju ukrštenim povezivanjem logièkih kola i nazivamo ih SR latch kolima (slika 3-3). 3. Ukoliko se vrednosti ulaza u razlièitim trenucima vraãaju na nule tada ãe onaj ulaz odrediti stanje izlaza koji se zadnji vratio na nulu. prouzrokovati neizvesnost u funkcionisanju i zato je neophodno ove situacije izbegavati kod NI kola. Elementarne memorije Memoriju sekvencijalnih mreža saèinjavaju latch-evi i flip-flop-ovi. Upravljanje SR latch kolima konstruisanih od NI kola se vrši pomoãu niskih logièkih nivoa.1. Ponašanje kola u zavisnosti od vrednosti S (set) i R (reset) ulaza je prikazano u tabelama ispod odgovarajuãih šema. U ovom sluèaju ãe nule koje se istovremeno pojavljuju na ulazima. ako se vrednosti ulaza menjaju istovremeno. dok za obrnute vrednosti izlaza se kaže da je kolo u resetovanom stanju. Tada privremeno oba izlaza postaju logièke nule ali je neizvesno koji ãe izlaz ostati na nuli posle povratka ulaznih vrednosti na nule. R Q S Q Q S R Q (a) S 0 0 1 1 R 0 1 0 1 Qn+ 1 Qn 0 1 0 Qn+ 1 Qn 1 0 0 S 0 0 1 1 R 0 1 0 1 (b) Qn+ 1 1 0 1 Qn Qn+ 1 1 1 0 Qn ZAB AN R JENO ZAB AN R JENO Slika 3-3: SR latch kolo sa ukrštenim povezivanjem logièkih kola: (a) NILI kolima. Sve dok je upravljaèki signal (signal dozvole) na logièkoj nuli. izlazi ulaznih NI kola su na logièkim jedinicama i vrednosti koji su upisane u latch kolo se ne mogu menjati.1. Za vreme setovanja ili resetovanja drugi ulaz koji se ne koristi mora da bude na logièkoj nuli. SR latch kolo konstruisano NILI kolima se setuje logièkom jedinicom dovedenom na S ulaz i resetuje se logièkom jedinicom na R ulazu.Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica Pojmovi i metode koje se ovde uvode (osim klasiènog naèina projektovanja primenom SSI i MSI integrisanih kola) se primenjuju i kod projektovanja primenom programabilnih logièkih kola. Sluèaj kada se na oba ulaza dovode logièke jedinice. Upisana informacija se pamti sve dok je napon napajanja prisutan. Ova kola su u stanju da pamte informaciju velièine jednog bita i sami po sebi predstavljaju sekvencijalnu mrežu. potrebno je oba ulaza držati na logièkoj nuli i tada se vrednosti izlaza ne menjaju. Promene stanja SR latch kola se po potrebi mogu sinhronizovati pomoãu jednog upravljaèkog signala (Enable) na naèin kako je prikazano na slici 3-4. 3. Kolo poseduje dva stabilna stanja zahvljajujuãi ukrštenom povezivanju: prvi sluèaj odgovara setovanom stanju kada su vrednosti izlaza Q=1.1. Kod pojedinih memorijskih elemenata se primenjuje okidanje na nivo dok kod drugih ivièno okidanje. Latch kola Jednobitna memorijska kola koja se okidaju na nivo se nazivaju latch kolima. Na slici 3-3a je prikazana šema SR latch kola konstruisana NILI kolima. onda kašnjenja logièkih kapija odluèuju o stanju izlaza. U trenutku promene signala Enable na visoki logièki . Q  0 . Slièna je situacija kod SR latch kola izgraðenih od NI kola (slika 3-3b). Kada se ne koriste ove operacije.

. R Q Dok je signal Enable na visokom logièkom nivou svaka promena vrednosti ulaza S i R utièe na stanje latch kola. Uobièajena šematska oznaka D latch-a je data na slici 3-5b. Šematska oznaka D flip-flop-a. Uloga invertora je da zaštiti kolo od zabranjene kombinacije (kada su istovremeno prisutni set i reset signali na ulazima). Podatak koji se upisuje je zadat ulaznim signalom ili ulaznim signalima. Flip-flop-ovi Flip-flop-ovi su elementarne memorije koje se okidaju na ivicu upravljaèkog signala. Da ta Da ta Q t Enable 0 Enable t 10 20 30 40 50 (a) D ta a Q 0 Q 10 20 30 40 50 t Enable Q 0 10 20 30 40 50 (b) (c) Slika 3-5: D latch kolo sa sinhronizacijom (a). tabela koja prikazuje njegov princip rada i odgovarajuãi vremenski dijagrami su prikazani na slici 3-6. navešãemo D flip-flop koji je u izvesnom srodstvu sa D latch kolom.Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica nivo.2. šematska oznaka (b) i dijagrami za objašnjenje principa rada (c). Nedozvoljene kombinacije ulaznih signala je moguãe izbeãi dodavanjem invertora prethodnom kolu (slika 3-5a). 3. Kao prvi primer. dok u suprotnom sluèaju signal sa ulaza (sa malim kašnjenjem) prelazi na izlaz. Kod svake uzlazne ivice takt signala (na dijagramu je to oznaèeno isprekidanom linijom) se upisuje vrednost ulaza D u izlaz Q. Ulaz Data nema uticaja na izlaz kada je signal dozvole odsutan. S Q Enable Slika 3-4: SR latch kolo sinhronizovan signalom dozvole (Enable). Kolo koje se dobija na ovaj naèin se naziva transparentno latch kolo jer je “providno” za set i reset signale sve dok je upravljaèki signal aktivan. Signal koji je prisutan na izlazu u trenutku silazne ivice signala dozvole ostaje važeãi sve dok signal dozvole ne postane ponovo aktivan. U odnosu na izvedbu ulaza. a princip rada se može shvatiti na osnovu dijagrama na slici 3-5c. postoje nekoliko tipova flip-flop-ova. Ova vrsta sinhronizacije se naziva okidanjem na naponski nivo. Upis podatka se vrši na uzlaznu ili na silaznu ivicu upravljaèkog signala. zavisno od realizacije kola. Ovo kolo se naziva D latch kolo jer poseduje samo jedan ulaz za podatak (Data). Osobina transparencije je prisutna i kod ovog kola.38 - . ulazna NI kola postaju aktivna i propuštaju ulazne S i R signale koji prouzrokuju odgovarajuãu promenu stanja.1. Strelica na šematskoj oznaci uvek oznaèava ulaz za takt signal (clk).

Po dve logièke kapije su prisutne na ulazima koje se takoðe mogu smatrati latch kolima èija je funkcija priprema signala za upis u izlazno latch kolo. Sve dok je takt signal na visokom logièkom nivou. dok drugo (slave) latch kolo postaje transparentno. U trenutku promene takt signala na visoki logièki nivo vrši se upis pripremljene vrednosti ulaznog signala u izlazno latch kolo. Sve dok je takt signal na niskom logièkom nivou i ulazi S i R su na visokom logièkom nivou i nije moguãe izvršiti upis u izlazno latch kolo.39 - .Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica clk D Q t clk Q D Slika 3-6: D flip-flop: (a) šematska oznaka. Za realizaciju D flip-flop-a postoje i druga rešenja koja su bolja jer sadrže manji broj logièkih kapija i vremena kašnjenja su im manja. 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. Master Data D D latch Enable clk Q Q D D latch Enable Q Q Slave Q Q Slika 3-7: Realizacija D flip-flop-a kaskadnom vezom dva D latch kola (masterslave veza). (b) kombinaciona tabela. (a) D 0 0 1 1 Qn 0 1 0 1 Qn+1 0 0 1 1 t Q t (b) (c) D flip-flop se može realizovati pomoãu kaskadne veze dva D latch kola kao što je prikazano na slici 3-7 (master-slave veza). S Q clk Slika 3-8: Efikasnija realizacija D flip-flop-a sa manjim brojem logièkih kapija i manjim vremenima kašnjenja. Q R D . Slika 3-8 prikazuje jedno takvo kolo koje se okida uzlaznom ivicom. Posmatrajuãi spolja može se reãi da upis u flip-flop se vrši na silaznoj ivici takt signala. (c) vremenski dijagrami. Posle silazne ivice takt signala prvo latch kolo se zatvara (zadržava stanje koje je bilo aktivno pri silaznoj ivici takt signala).

R Qn Qn+1 Slika 3-9: (a) Šematska oznaka RS flip-flop-a i (b) njegova kombinaciona tabela. R Q (a) (b) Stanje izlaza RS flip-flop-a.40 - . To su RS.Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica Postoje i druge vrste flip-flop-ova. CLK R Q 1 1 0 (a) (b) . T i JK flip-flop-ovi. Ako je na ulazu T logièka jedinica onda se vrednost izlaza invertuje pri svakoj uzlaznoj ivici takt signala. (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). Kao rešenje ovog problema nastao je JK flip-flop èija su šematska oznaka i kombinaciona tabela prikazana na slici 3-10. RS flip-flop se može smatrati kao verzija RS latch kola koja se okida ivicom takt signala. Reset ulaz je nezavisan od takt signala. dok za logièku nulu vrednost izlaza ostaje nepromenjena. je nepredvidljivo u onim sluèajevima kada su istovremeno prisutne logièke jedinice na oba ulaza. koji se od D flip-flop-a razlikuju po broju ulaza i po upravljaèkom algoritmu. D Q R CLK 0 1 1 X D X 0 1 Qn Qn+1 0 0 1 Slika 3-12: D flip-flop sa asinhronim reset ulazom: (a) šematska oznaka. Pored sinhronizacionih ulaza redovno ovi flip-flop-ovi sadrže i asinhrone set i/ili reset ulaze. U prikazanom primeru mali krug na Reset ulazu na šematskoj oznaci ukazuje na osobinu da se proces resetovanja aktivira niskim logièkim nivoom. clk Q (a) (b) Obièno se dva ili èetiri flip-flop-a smeštaju u zajednièko kuãište kod MSI tehnologije. J J Q 0 0 1 1 0 1 0 1 Q Q Q Q Q 0 1 Q K clk Q K Qn Qn+1 Slika 3-10: (a) Šematska oznaka JK flip-flop-a i (b) njegova kombinaciona tabela. slièno odgovarajuãem latch kolu. (b) kombinaciona tabela. JK flipflop-ovi invertuju vrednosti svojih izlaza pri svakoj silaznoj ivici takt signala u sluèaju istovremeno prisutnih logièkih jedinica na oba ulaza. S S Q 0 0 1 1 0 1 0 1 Q Q Q Q Q 0 1 nijedef. Na slici 3-12 su prikazana šematska oznaka i kombinaciona tabela D flip-flop-a sa asinhronim reset ulazom. T Q T 0 1 Qn Q Q Qn+1 Q Q Slika 3-11: (a) Šematska oznaka T flip-flop-a i (b) njegova kombinaciona tabela. Njegova šematska oznaka i kombinaciona tabela su prikazana na slici 3-9.

U krugove se upisuju kodovi stanja ili neki jasni .3 i 3. Stanja se kodiraju odgovarajuãim brojem flip-flop-ova. Opis i konstruisanje logièkih automata Sekvencijalne mreže koje su konstruisane za rešavanje problema u automatici ili u obradi signala nazivamo logièkim automatima. Èak ni minimizacija broja korišãenih flip-flopova više nije bitna pri realizaciji. Dijagram stanja Dijagram stanja predstavlja precizan i pregledan naèin opisivanja logièkih automata. Na osnovu toga se nacrta dijagram stanja ili njemu ekvivalentna tabela stanja koja taèno odslikava ponašanje logièkog automata.2. (b) transformacija D flip-flop-a u J-K flip flop. J K S Q CLK R Q T CLK (c) D Q Q (a) J K CLK D Q T CLK J Q Q K Q (b) (d) Slika 3-13: Transformacija flip-flop-ova: (a) Transformacija RS flip-flop-a u JK flip-flop. U današnjoj VLSI tehnologiji više nije presudan broj korišãenih logièkih kapija za realizaciju kombinacionog dela sekvencijalnih meža. Nažalost. Po potrebi flip-flop se može pretvoriti u drugi flip-flop dodavanjem potrebne kombinacione mreže.1.4. Na osnovu kombinacione tabela se odreðuju jednaèine kombinacione mreže logièkog automata. U svim ostalim sluèajevima izlaz je na logièkoj nuli.41 - . Slika 3-13 prikazuje primere takvih transformacija. Tip primenjenog flip-flop-a utièe na realizaciju kombinacionog dela sekvencijalne mreže. koji daje logièku jedinicu na Y izlazu kada su se u dve prethodne periode takt signala redom pojavile kombinacije 00 a zatim 11 na ulazima A i B. Mnogo je važnije da se naèin realizacije prilagodi unutrašnjoj strukturi programabilnog logièkog kola (PLD) i da se dobije što preglednije i pouzdanije rešenje. (c) transformacija D flip-flop-a u T flip-flop. Softveri koji služe za sintezu digitalnih kola unutar programabilnih logièkih kola takoðe na slièan naèin konstruišu logièke automate. Na isti naèin projektuju proizvoðaèi registre opšte namene i brojaèe (MSI kola koja se serijski proizvode) o kojima ãe biti reèi u poglavljima 3. Povezivanjem dobijene kombinacione mreže sa odgovarajuãim flip-flop-ovima nastaje kompletna mreža. Obièno pri projektovanju logièkih automata se polazi od jezièkog opisa problema. 3.Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica Za konstruisanje sekvencijalnih mreža je moguãe primeniti bilo koji tip flip-flop-a. Složenost kombinacionih mreža se znaèajno smanjuje pri optimalnom izboru tipa flip-flop-a. 3. (d) transformacija JK flip-flop-a u T flip-flop. Dijagrami stanja na slici 3-14a prikazuju jedan automat.2. ne postoji jednoznaèno pravilo za biranje odgovarajuãeg tipa flip-flop-a i jedino ponavljanjem sinteze sekvencijalne mreže se može odrediti optimalan izbor. Èvorovi grafa obeleženi krugovima odgovaraju pojedinim stanjima automata.

Na desnoj strani tabele su definisane vrednosti izlazne promenljive (Y). Zbog toga su iznad narednih stanja navedene pripadajuãe kombinacije ulaznih signala. Linije sa strelicama koje povezuju èvorove predstavljaju prelaze izmeðu stanja. (b) njen dijagram stanja u sluèaju Mealy-jevog modela. Kod Mealy-jevog modela na granama grafa se prikazuju vrednosti izlaza koji se javljaju pri odreðenom prelazu (slika 3-14b). (a) 00. 01. 10. Zato su iznad vrednosti izlaza date sve moguãe kombinacije ulaza. 10 01 10 11 a/0 (00) 00 b/0 (01) (b) 00 11 c/1 (10) (c) 01. b. Dijagram stanja se menja u zavisnosti od tipa sekvencijalne mreže (Mealy-jev ili Mooreov model). Tabele stanja koje odgovaraju prethodnom dijagramu stanja (slika 3-14) su prikazane u tabelama 3-1 i 3-2. koja kod oba modela zavise i od vrednosti ulaznih promenljivih. Zatim za sve te kombinacije se odreðuju naredna stanja i vrednosti izlaznih promenljivih. Kod Mealy-jevog modela (tabela 3-1) vrednosti izlaza zavise i od trenutnih vrednosti ulaza. dok kod Moore-ovog modela vrednosti izlaza se dobijaju dekodiranjem trenutnog stanja i zato se vrednosti izlaza upisuju u krugove koji oznaèavaju stanja (slika 3-14c). a kod Moore-ovog modela tri.2. Kod Moore-ovog automata vrednosti izlaza su . Trenutno Sledeãe 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 Sledeãe 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 Tabela 3-1: Tabela stanja datog automata u sluèaju Mealy-jevog modela.Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica nazivi stanja. U tabelama 3-1 i 3-2 nazivi trenutnih stanja su upisana u prvu kolonu (a. (c) dijagram stanja u sluèaju Mooreovog modela.42 - . Tabela 3-2: Tabela stanja datog automata u sluèaju Moore-ovog modela. A B C LK S V IJALNA EK ENC M EZA R (AU TOM AT) Y 01/0 10/0 11/0 a (0) 00/0.2. b odnosno a. I broj stanja kod navedenih modela može biti razlièit: broj stanja Mealy-jevog modela za dati automat je dva. 10/0 00/0 11/1 b (1) Slika 3-14: (a) Jedna sekvencijalna mreža. U tabelu je potrebno upisati sva moguãa stanja sekvencijalne mreže i sve kombinacije ulaznih signala. Tabela stanja Sledeãa faza sinteze automata je formiranje tabele stanja. 01/0. Tabela sadrži iste podatke koje sadrži i dijagram stanja ali u pogodnijoj formi za sintezu mreže. U središnjem delu tabele se nalaze naredna stanja. c) a odgovarajuãi kodovi stanja su dati u zagradama. Na linije se pišu ulazne kombinacije pri kojima se dešavaju date promene stanja. 11 3.

3. Tipovi korišãenih elementarnih memorija (D. Dobar izbor koda može znaèajno smanjiti složenost realizacije sekvencijalne mreže pri èemu se i pouzdanost rada poveãava. Kodiranje stanja Pomoãu n flip-flop-ova teoretski je moguãe kodirati najviše 2n razlièitih stanja i zato je i realizacija složenih automata moguãa sa relativno malim brojem elementarnih memorija. O konaènom rešenju se odluèuje posle razmatranja pojedinih rešenja.Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica jednoznaèno odreðene trenutnim stanjima automata i zbog toga su svi izlazi navedeni u jednoj koloni.jedan memorijski element.43 - . Kao rezultat. Danas se pod optimizacijom podrazumeva raèunarska sinteza i simulacija razlièitih izvedbi. Èesto se primenjuje rešenje: jedno stanje . dobije se veliki broj flip-flop-ova ali je izbegnut proces dekodiranja stanja. Najjednostavnija jednaèina za kombinacione mreže flip-flop-ova se dobija za D flip-flop: na D ulaz treba dovesti novo (sledeãe) stanje flip-flop-a. Jednaèine upravljanja za flip-flop-ove Kod oba modela automata naredno stanje se odreðuje na osnovu trenutnog stanja i trenutne vrednosti ulaznih promenljivih. Posebnu pažnju treba posvetiti izlaznoj kombinacionoj mreži jer dekodiranje stanja zahteva puno komponenata. Postupak optimizacije je još kompleksniji ako se u okviru istog projekta koriste razlièiti tipovi flip-flop-ova. Zadatak projektanta je izrada odgovarajuãih kombinacionih mreža (eksitacione mreže) koje na svojim izlazima daju potrebne ulazne signale za flip-flop-ove. Kod realizacije sa minimalnim brojem flip-flop-ova nije svejedno kako se kodiraju pojedina stanja.2.4. Kod drugih flip-flop-ova potrebno je uzeti u obzir koja kombinacija ulaznog signala može da dovede do željenog stanja na izlazu. Kod savremenih naèina projektovanja primenom PLD kola nije neophodno ili nije svrsishodno kodirati stanja sa minimalnim brojem memorijskih elemenata. Pod uticajem tih signala upisuje se odgovarajuãa vrednost u flip-flop pri narednoj uzlaznoj ili silaznoj ivici takt signala.2. Za optimizaciju postoje odreðene sistematizovane metode ali one ne daju uvek optimalna rešenja. T. 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 Tabela 3-1: Eksitaciona i izlazna kombinaciona tabela Mealy-jevog automata datog na slici 3-14b. Softveri za projektovanje omoguãuju brzo analiziranje razlièitih rešenja što skraãuje vreme pronalaženja najboljeg rešenja. Za odreðivanje optimalnog tipa flip-flop-a takoðe ne postoji sistematizovani postupak. U ovom sluèaju se posebno preporuèuje raèunarska sinteza. ulazne i izlazne kombinacione mreže su postale komplikovane. Za konstruisanje ulazne i izlazne kombinacione mreže potrebno je tabelu 3-1 (Mealy-jev model) svesti na takav oblik da postupak izvoðenja jednaèina date mreže bude što jednostavniji (tabela 3-3). RS) takoðe utièu na kompleksnost mreže koja se realizuje. JK. 3. Tražena eksitaciona jednaèina na osnovu date tabele je: . Kod klasiènog naèina projektovanja sekvencijalnih mreža primenom MSI kola težnja je bila da se koristi minimalan broja flip-flop-ova.3. Kao rezultat.

predstavljaju centralni deo mreže. Najjednostavniji sluèaj je kada su izlazi flip-flop-ova ujedno i izlazi samog automata.5. Eksitacione i izlazne tabele za Moore-ov Q1 Q0 BA Q1 =D1.Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica D  QB A Da bi realizacija kola u složenijim sluèajevima bila jednostavnija. Memorijski elementi koji se postavljaju prema odabranom kodu.44 - . 3. u sluèaju realizacije željenog kola sa D flip-flop01 00 0 ovima tražene jednaèine za eksitaciju su: 10 00 0 11 00 0 D1  Q1Q 0 BA 01 00 00 0 01 00 0 D 0  Q1Q 0 B A  Q1Q 0 B A  Q 0 B A 10 00 0 11 10 0 10 00 01 1 01 00 1 10 00 1 11 00 1 Tabela 3-4: Eksitaciona i izlazna kombinaciona tabela 11 00 00 0 Moore-ovog automata datog na slici 3-14c. Na osnovu tabele 3-4 izlazna jednaèina Moore-ovog automata (slika 3-14c) posle minimizacije je: Y  Q1Q 0 . CLK Y . Na osnovu tabele 3-1 oblik izlazne jednaèine je: Y  QBA . Slièno. Na osnovu 00 00 01 0 tabele. Ako to nije sluèaj. Formiranje izlaza Kod Mealy-jevog automata broj promenljivih stanja je manji ali je potrebno dovesti i ulazne promenljive na izlaznu kombinacionu mrežu. odgovarajuãa logièka šema Moore-ovog A D Q automata (slika 3-14c) je prikazana na slici 3-16. Formiranje kompletne sekvencijalne mreže Crtanje kompletne sekvencijalne mreže se vrši sumiranjem dosadašnjih rezultata.2. potrebno je izvršiti minimizaciju odgovarajuãih logièkih funkcija. prema izlaznim jednaèina-ma se formira izlazna kombinaciona mreža. Na osnovu upravljaèkih jednaèina za flip-flop-ove se crta ulazna kombinaciona mreža.2. izlazni signali se generišu pomoãu odgovarajuãe kombinacione mreže. 01 00 0 10 00 0 11 00 0 3. Q0 =D0 Y n n n+1 n+1 model (slika 3-14c) su date u tabeli 3-4. Na kraju.6. Ulazi kombinacione mreže su stanja flip-flop-ova. Vrednosti izlaznih promenljivih kod Moore-ovog modela zavise samo od trenutnog stanja mreže. Logièka mreža Mealy-jevog automata (slika 3-14b) je prikazana na slici 3-15. B Slika 3-15: Logièka mreža koja realizuje Mealy-jev automat dat na slici 3-14b.

1. Obièni (stacionarni) registri Na slici 3-17 je prikazana logièka šema stacionarnog registra kapaciteta od n bita. Postoje stacionarni i shift registri. 3. shift registri su u stanju i da pomeraju podatke bit po bit. dok izlazi flip-flop-ova ne stignu u novo stabilno stanje. Upis se vrši paralelno pri silaznoj ivici takt signala. Registri Registri su sekvencijalne mreže koje služe za privremeno pamãenje male kolièine podataka. Ulogu prikazanih sekvencijalnih mreža (praãenje ulaznih sekvenci) može da obavlja i jedan mikrokontroler koji je programiran na odgovarajuãi naèin. Pomeranje se može vršiti ili u levom ili u desnom smeru dok kod univerzalnih pomeraèkih registara smer pomeranja se može zadati odgovarajuãim upravljaèkim signalom. 3. Pamãenje podataka obièno vrši niz D flip-flop-ova ili neki drugi tipovi flip-flop-ova ili latch kola. Pored pamãenja.2. Pri pomeranju sadržaj prethodnog memorijskog elementa se . moguãe je više registara povezati na jednu zajednièku liniju podataka.3.3.45 - . Upis i èitanje podataka se vrši serijski (bit po bit) ili paralelno (svaki bit istovremeno). CLK R CLR Q R Q R Q Q0 Q1 Qn-1 3. Pomeraèki (shift) registri Kod shift registara moguãe je preneti sadržaj elementarnih memorija u susednu memorijsku lokaciju pri aktivnoj ivici takt signala.Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica B A D1 D Q Q1 D0 D Q Q0 Y CLK Slika 3-16: Logièka mreža koja realizuje Moore-ov automat dat na slici 3-14c. Za pamãenje se koriste D flip-flop-ovi kojima se upravlja zajednièkim takt (CLK) signalom.3. Meðutim. D0 D Q D1 D Q Dn-1 D Q Slika 3-17: Logièka šema stacionarnog registra. osim jednog kratkog vremenskog intervala posle upisa. Èitanje podataka sa izlaza je uvek moguãe. ne treba zaboraviti da su hardverska rešenja u ovakvim sluèajevima neuporedivo jednostavnija i brzina njihovog rada je znatno veãa. Sadržaj flip-flop-ova se može anulirati pomoãu asinhronih reset ulaza koji su povezani na CLR signal. Ako je potrebno. korišãenjem takvih flip-flop-ova koji poseduju izlaze sa tri stanja.

U praktiènim primenama za kružni tok podataka potrebno je izvršiti upis odgovarajuãeg sadržaja u brojaè. Smer pomeranja se bira pomoãu L / R signala. Najèešãe se samo jedan flip-flop setuje i u ostale se upisuje logièka nula ili obrnuto. Serijski izlaz je QA ili QD u zavisnosti od smera pomeranja. Nakon prelaznog režima rad takvog kružnog brojaèa je pravilan. L/R RIN LIN D CLK Q QA D Q QB D Q QC D Q QD Q Q Q Q Slika 3-21: Logièka šema dvosmernog pomeraèkog registra. Kod složenih pomeraèkih registara.46 - . èija je funkcija sinhronizacija pomeranja podataka. je zajednièki za sve flip-flop-ove. ali posle nekoliko periode takt signala samo jedan flip-flop ostaje u setovanom stanju dok su svi ostali resetovani. Èitanje je moguãe obaviti i u paralelnom režimu. Postoje i takva rešenja kod kojih su stanja flip-flop-ova nakon ukljuèenja proizvoljna. postoji i moguãnost paralelnog upisa i èitanja. dok pri pomeranju ulevo funkciju serijskog ulaza obavlja signal LIN.3. Kako ovaj registar u normalnom režimu rada ne poseduje ulaz za podatke i po svojoj prirodi generiše ponavljajuãe sekvence. pored serijskog. Ovo se obièno vrši paralelno. Kod ovog rešenja ne postoji moguãnost paralelnog upisa. Kružni registri (kružni brojaèi) Spajanjem izlaza pomeraèkog registra na sopstveni serijski ulaz se dobija kružni registar. dok sadržaj zadnjeg memorijskog elementa se gubi. ovo kolo se još naziva i kružni brojaè (slika 3-19). Q0 Q1 Q2 Qn-1 D Q D Q D Q D Q CLK Slika 3-19: Logièka šema kružnog registra (brojaèa).Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica upisuje u naredni. Ako se izlaz zadnjeg flip-flop-a vraãa na serijski ulaz kružnog brojaèa u invertovanom obliku (slika 3-20a) dobija se Džonsonov kružni registar (brojaè). Takt (CLK) signal. RIN predstavlja serijski ulaz pri pomeranju udesno.3. Podatak koji je jednom upisan u registar ãe kružiti sve dok je takt signal prisutan na njegovom upravljaèkom ulazu. 3. Na slici 3-18 je prikazana logièka šema univerzalnog èetvorobitnog pomeraèkog registra. Nule i jedinice u normalnom .

Brojaè ãe uãi u pravilan režim rada i ako se svi flip-flop-ovi resetuju u trenutku ukljuèenja. Asinhroni (serijski) brojaèi Pri realizaciji asinhronih brojaèa flip-flop-ovi nemaju zajednièki upravljaèki signal. Upravljaèki signali mogu da potièu iz izvora takt signala ili iz bilo kog drugog kola koje je u stanju da generiše digitalne signale. Na ovaj naèin se kompleksnost ulazne kombinacione mreže znaèajno smanjuje ili èak postaje suvišan. Impulsi su obièno periodièni. Redosled stanja brojaèa može da bude jednak redosledu binarnih brojeva (binarni brojaè).47 - .4. "1" "1" "1" T CLK Q T Q T Q R Q R Q R Q Slika 3-21: Asinhroni brojaè realizovan T flip-flop-ovima. Broj razlièitih stanja kod brojaèa se naziva moduo brojaèa. nego se izlaz prethodnog flip-flop-a veže na takt ulaz narednog flip-flop-a. 3. Brojaèi Registri koji pod uticajem upravljaèkih impulsa prolaze kroz unapred odreðena stanja se nazivaju brojaèima. Najjednostavnija struktura asinhronog brojaèa se dobija kaskadnom vezom flip-flop-ova (slika 3-21). poèetno stanje brojaèa je moguãe podesiti reset (CLR) signalom koji se istovremeno dovodi na asihnrone reset ulaze svih flip-flop-ova. Obièno. Ako je potrebno. Izlazi memorijskih elemenata su ujedno i izlazi brojaèa. CLR Q0 Q1 Q2 Ukoliko korišãeni flip-flop-ovi reaguju na silaznu ivicu takt signala. 3. izlazna kombinaciona mreža koja je svojstvena sekvencijalnim mrežama ne postoji kod brojaèa.4. brojaèi su mreže tipa Moore. Za sluèaj asinhronog brojaèa prikazanog na slici 3-21 . Pored memorijskih elemenata brojaèi obièno sadrže i ulaznu kombinacionu mrežu koja obezbeðuje odgovarajuãe promene stanja u registru koji je centralni deo brojaèa. Raznim povratnim spregama je moguãe obezbediti pravilno funkcionisanje kola. U sluèaju n flip-flop-ova. Znaèi. Upravljaèki signal se dovodi na takt ulaz prvog memorijskog elementa. Pored takt ulaza pojedini brojaèi imaju i dodatne ulaze kojima se odreðuje naèin brojanja. moguãe je da kolo na izlazu generiše pogrešne vrednosti. sekvenca istih brojeva se ponavlja posle 2n periode takt signala. Ako se to propusti.Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica režimu rada kruže prema redosledu koji je dat u tabeli koja je prikazana na slici 3-20b. Brojaèe je moguãe svrstati u dve kategorije: asinhroni (serijski) i sinhroni (paralelni) brojaèi. ali po potrebi je moguãe formirati i proizvoljan redosled. Q0 Q1 Q2 Q3 STANJE 0 1 2 3 4 5 6 7 0 (b) 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 D Q Q D Q Q D Q Q D Q Q CLK (a) Slika 3-20: Jedno moguãe rešenje (a) za logièku šemu Džonsonovog kružnog registra (brojaèa) i (b) odgovarajuãa tabela stanja. ali brojaèi mogu da rade i pod uticajem impulsa koji se pojavljuju u sluèajnim vremenskim trenucima. brojaè ãe brojati unapred u prironom binarnom kodu.1. a izlazi pojedinih flip-flop-ova se povezuju na takt ulaze narednih flip-flop-ova.

Ako se ceo brojaè gradi pomoãu T flip-flop-ova i ako je u datom momentu potrebno menjati stanje nekog flip-flop-a. Ako se snimaju stanja pojedinih flip-flop-ova za vreme prelaznog procesa. dok sa druge strane. Za promenu stanja flip-flop-ova u odgovarajuãim vremenskim trenucima. tada se na njegov ulaz dovodi logièka jedinica. Ako je potreban brojaè unazad. Na taj naèin je moguãe formirati sinhroni binarni brojaè koji je prikazan na slici 3-23.48 - . na slici 3-21 samo izlaz Q2 se vodi dalje). koriste se flip-flop-ovi sa okidanjem na uzlaznu ivicu i na takt ulaz narednog flip-flop-a se dovodi Q umesto izlaza Q. Posmatrajuãi binarne brojeve na slici 3-26 može se zakljuèiti da bit veãe težine se setuje samo kada su vrednosti svih ostalih bitova sa manjim težinama na logièkoj jedinici (npr. Dekodiranje ovih kombinacija se vrši pomoãu I kapija. 1 CLK Q0 Q1 Q2 0 1 2 3 4 5 6 7 0 2 3 4 5 6 7 8 9 Slika 3-22: Vremenski dijagrami takt signala i pojedinih izlaza asinhronog brojaèa. frekvencija takt signala je ogranièena samo sa vremenom kašnjenja prvog flip-flop-a.Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica vremenski dijagrami su dati na slici 3-22. Posmatrajuãi redosled stanja kroz koja brojaè prolazi (tabela 3-5) pri sukcesivnom delovanju takt signala. Moduo brojanja je osam za sluèaj tri memorijska elementa. 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 kašnjenja flipflop-ova. Kada se asinhroni brojaè koristi kao delitelj frekvencije (npr. posle stanja 0111 sledi stanje 1000). pojedina stanja se pojavljuju sa odreðenim vremenom kašnjenja u odnosu na upravljaèki signal. Kod binarnih brojaèa (tabela 3-5) vrednost izlaza onog flip-flop-a koji je na mestu najmanje znaèajnog bita. . dobijeni rezultat ãe najverovatnije biti pogrešan.4. neophodna je adekvatna kombinaciona mreža. pomoãu n memorijskih elemenata moguãe je realizovati brojaè modula 2n. rešenje ovog problema se sastoji u ogranièavanju frekvencije takt signala (to obezbeðuje dovoljno vremena za išèezavanje hazardnih pojava). menja se u svakoj periodi takt signala. može se zakljuèiti da brojaè broji po redosledu binarnih brojeva. Zbog kaskadne veze. U opštem sluèaju. Sa jedne strane. 3. Tabela 3-5: Redosled stanja trobitnog asinhronog brojaèa.2. išèitavanje vrednosti je potrebno vršiti neposredno pre pojave narednog upravljaèkog signala. Do istog rezultata se dolazi i opštom metodom sinteze sekvencijalnih kola (objašnjeno kod logièkih automata). Ovo se najlakše realizuje T flip-flop-om. Sinhroni (paralelni) brojaèi Kod sinhronih brojaèa takt ulazi pojedinih flip-flop-ova su povezani na zajednièki upravljaèki signal i tako se postiže da vrednosti izlaza približno u istom trenutku postanu važeãi.

Odgovarajuãom promenom ulazne kombinacione mreže kod sinhronih brojaèa moguãe je postiãi brojanje unazad. Na brojaè se dodaje jedan dekoder koji je posebno projektovan za detektovanje zadnjeg stanja (slika 3-24). U prikazanom sluèaju realizovani brojaè je modula deset jer se posle devetog stanja (1001) vrši paralelni upis nultih vrednosti preko linija (D0. Kod brojaèa proizvedenih u MSI tehnologiji postoje i dvosmerna rešenja: kod ovih kola postoje dve posebne ulazne kombinacione mreže za oba sluèaja (brojanje napred i nazad) i pomoãu jednog kontrolnog signala se odreðuje koja ãe od te dve mreže biti aktivna.Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica "1" J K Q J K Q J K Q J K Q Q CLK Q0 Q Q Q Q1 Q2 Q3 Slika 3-23: Logièka šema sinhronog binarnog brojaèa. Kada se detektuje zadnje stanje. .D3). koji na uobièajeni naèin funkcioniše do predviðenog zadnjeg stanja. Posle toga se proces brojanja nastavlja sa nule. Za to postoje dva naèina. Kod druge metode polazi se od gotovog brojaèa modula 2n.: carry) i ulaze za kaskadno vezivanje pojedinih brojaèkih modula. Prvi naèin je primenom metode koja je prikazana kod projektovanja logièkih automata. Moduo brojanja brojaèa sastavljenog od n memorijskih elemenata je moguãe smanjiti sa 2n. Ova šema je samo dvostepena: posle aktivne ivice takt signala potrebno je da proðe samo jedno kašnjenje I kola i flip-flop-a kako bi vrednosti izlaza flip-flop-ova postale važeãi. MSI kola za brojanje obièno sadrže i odgovarajuãe izlaze (prenos. C LK C ETV O OR BITNI B R INA NI B OJA R C D0 D1 D2 D3 LOAD Q0 Q1 Q2 Q3 Slika 3-24: Logièka šema brojaèa modula deset dobijena skraãivanjem modula brojanja. dekoder sinhrono ili asinhrono resetuje sve flip-flop-ove. Prethodni modul. Taj postupak se sastoji od formiranja dijagrama stanja i tabele stanja. pomoãu bita prenosa obaveštava naredni modul o tome da je stigao do najveãeg broja i da naredni stepen mora da inkrementira vrednost sopstvenog registra. engl.. Èesto se javlja potreba za poveãanjem modula brojanja.49 - ..

Memorije Memorije su digitalna kola koja služe za trajno ili privremeno pamãenje velike kolièine podataka. Danas su ureðaji èija je osnovna namena pamãenje podataka veoma raznovrsni (tu spadaju i magnetni. Memorije su po prirodi sekvencijalne mreže kod kojih se upravljanje realizuje kombinacionim mrežama.50 - . Statièke memorijske ãelije su zapravo flip-flop-ovi (kao i kod registara). Prilikom upisa parazitna kapacitivnost se puni ili prazni u zavisnosti od toga da li je potrebno pamtiti logièku nulu ili jedinicu.  Kod dinamièkih ãelija se koriste ulazne kapacitivnosti pojedinih mosfetova za pamãenje podataka. èitanje ili dobijanje povratnih informacija o stanju memorije (npr. : . zauzetost).1.  Identifikacija ãelije sa kojom se želi komunicirati se obièno vrši pomoãu adresiranja. Slika 4-1: Blok šema memorijskog kola.Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica 4. Èitanje se vrši proverom stanja kanala mosfeta: provodno stanje kanala oznaèava upisanu logièku jedinicu dok kanal u zakoèenom stanju logièku nulu.i optièki mediji). Pomoãu linija A se prosleðuju podaci od drugog kola ka memoriji ili obrnuto.1. Projektovana su posebna kola za upravljanje procesom osvežavanja koji je slièan procesu èitanja. Postoje i takva rešenja gde memorije poseduju ugraðene Li-ionske ãelije zahvaljujuãi kojima su sposobne da pamte svoj sadržaj više godina bez spoljašnjeg napajanja. Pomoãu adresnih linija (na šemi oznaèene sa C) se odreðuje elementarna ãelija memorije sa kojom se želi komunicirati.  Naèin pamãenja podataka u memorijskim ãelijama može biti statièan ili dinamièan. Za sve memorije važi blok dijagram koji je prikazan na slici 4-1. D/A i A/D pretvaraèi pored obe vrste (kombinacionih i sekvencijalnih) digitalnih elemenata sadrže i analogna kola.3) je takoðe pamãenje podataka. Kod ovih ureðaja istovremeno su potrebne i memorije u kojima upisani podatak ostaje permanentno i služe za pamãenje osnovnih programa. Aritmetièka kola se prvenstveno realizuju kombinacionim mrežama pri èemu se za njihovo upravljanje koriste logièki automati. Ovde se razmatraju samo poluprovodnièke memorije. Preko upravljaèkih ulaza V se odreðuje svrha komunikacije: upis. 4. sa moguãnošãu promene podataka u njima.1. koji se na odgovarajuãi naèin organizuju kako bi pristup pojedinim ãelijama bio jednostavniji. 4. Rešenje ovog problema je periodièno osvežavanje podataka. Naelektrisanja skladištena u kapacitivnosti polako cure i zbog toga upisani podaci bi nestali posle odreðenog vremena. Adresiranje bilo koje memorijske lokacije se naziva još i neposrednim pristupom (engl. ali pamãenje velikih kolièina podataka zahteva efikasniju organizaciju. Statièke ãelije pamte podatke sve dok se ne izvrši novi upis u njih i dok postoji napajanje. Složene mreže Digitalna kola koja se razmatraju u nastavku se nazivaju složenim mrežama jer sadrže kako kombinacione tako i sekvencijalne elemente. Podela i osobine memorijskih kola Podelu memorija koje sadrže mnoštvo razlièitih hardverskih rešenja je moguãe izvršiti po razlièitim principima:  Pristup memorijama onih ureðaja koji se softverski programiraju treba da bude ostvareno u što kraãem vremenu i zato se tada primenjuju brze memorije. Uloga registara (poglavlje 3.

Operacije brisanja i upisa mogu da vrše i mikrokontroleri koji upravljaju radom datog sistema. EEPROM-i se èesto proizvode sa serijskim komunikacionim interfejsom. Ove memorije poseduju serijski pristup èiji je nedostatak da se vreme pristupa poveãava sa poveãanjem adrese tražene memorijske lokacije. Posle operacije brisanja moguãe je izvšiti novi upis ali za razliku od EPROM-a i EEPROM-a. Proizvode se u statièkoj i u dinamièkoj izvedbi. Pomoãu adresiranja moguãe je pristupiti bilo kojoj memorijskoj lokaciji za približno isto vreme ali je cena toga prilièno složena mreža za adresiranje. Sa druge strane.Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica random access). EPROM (engl. dinamièke RAM ãelije zahtevaju spoljašnja kola za osvežavanje sadržaja memorijskih ãelija što komplikuje proces projektovanja. Upis se vrši na slièan naèin kao i kod dinamièkih memorija sa tom razlikom da naelektrisanja koja menjaju stanje kanala mosfeta su smeštena tako da ostaju prisutna i nakon više godina. razumno je koristiti serijsku komunikaciju jer znaèajno smanjuje kuãište pošto se koristi samo jedna linija za podatke. Najvažniji parametri memorijskih kola.51 -        . Ova kola su prepoznatljiva po prozoru koji se nalazi na gornjoj strani kuãišta gde ulaze ultraljubièasti zraci tokom brisanja. Veãina današnjih memorijskih kola se proizvode u CMOS tehnologiji ali postoje i kola izraðena u bipolarnoj tehnologiji. Dekoder vrši dekodiranje vrednosti ulaznih adresnih linija a koder formira odgovarajuãe izlazne vrednosti. Osnovni programi ureðaja se obièno èuvaju u ovom tipu memorije. su kapacitet (broj memorijskih ãelija) i brzina (upis. ROM-ovi se primenjuju samo u serijskoj proizvodnji jer je moguãnost jednostrukog programiranja u fazi razvoja nedovoljna.: read-only memory) memorije su takve memorije èiji se sadržaj ne može menjati ali ga je moguãe neogranièen broj puta èitati. Flash memorije se mogu koristiti kao . Pre promene sadržaja EPROM-a neophodno je izbrisati prethodno upisane podatke pomoãu ultraljubièastih zraka. Obièno postoje odreðena ogranièenja pri brisanju odnosno dozvoljava se samo brisanje po blokovima. Brisanje i upis kod EEPROM-a (engl. Pod nazivom flash EEPROM-i ili jednostavnije flash memorije se podrazumevaju takva kola koja se realativno brzo mogu brisati elektriènim signalima (red velièine je sekunda). ROM (engl.: electrically erasable PROM) se vrši pomoãu elektriènih signala i zato one ne sadrže prozor na svojim kuãištima za propuštanje ultraljubièastih zraka. Znaèajno se smanjuje kompleksnost memorije ako se podaci serijski upisuju odnosno išèitavaju.:random access memory) memorije su memorije sa neposrednim pristupom i koriste se kao operativne memorije ureðaja jer poseduju brz pristup memorijskim lokacijama (obièno nekoliko desetina ns).: mask programmable ROM) ili korisnici (OTP ROM – engl. Analizom se može utvrditi da su ROM memorije zapravo kombinacione mreže sastavljene od kaskadne veze dekodera i kodera. pored vrednosti napona napajanja i logièkih nivoa. one ne zahtevaju posebno napajanje u toku programiranja odnosno upravljaèke signale poveãanih amplituda. Upis sadržaja u memoriju mogu da vrše proizvoðaèi (engl. Ako nije potrebna velika brzina prenosa podataka.: electrically programmable ROM) je memorija sa moguãnošãu višestrukog programiranja pomoãu odgovarajuãih upravljaèkih signala. Dinamièke RAM ãelije su jeftinije od statièkih jer je njihova gustina pakovanja na silicijumskoj ploèici znatno veãa. osam ili šesnaest). Podrazumeva se da je brzina brisanja i upisa znaèajno manja u odnosu na brzinu brisanja i upisa kod RAM-a. Velièina podatka èemu se može pristupiti u jednom koraku (jedno adresiranje ili inkrementiranje adrese) je jedan bit ili više bita (npr. EPROM se može mnogo puta reprogramirati. Postoje razni tipovi memorijskih kola : RAM (engl. ali se mora uzeti u obzir da proces brisanja traje više minuta što èesto usporava razvoj odnosno proizvodnju što je dovelo do pada popularnosti EPROM-a. èitanje i brisanje).: one-time programmable ROM).

koje se sastoji od potrebnog broja elementarnih memorija. Centralni deo memorije je polje memorijskih ãelija. Obièno se iste linije podataka koriste za komunikaciju u oba smera. Ukupan broj korišãenih logièkih kola za realizaciju ta dva dekodera je znaèajno manji nego u sluèaju jednog dekodera.3. U tom sluèaju. podaci moraju biti stabilni veã neko vreme neposredno pre upisa. 4. 4. Kod išèitavanja neophodno je uzeti u obzir kašnjenje koje postoji izmeðu adresiranja i pojave podataka na izlazu. Inicijalizacija upisa se vrši pomoãu WE (engl. èitanja ili brisanja za selektovanu memorijsku ãeliju. Unutrašnja struktura memorijskih kola Kao što je spomenuto. Proširivanje kapaciteta Kapacitet memorije dostupan unutar jednog kuãišta je èesto je nedovoljan. Uloga upravljaèke jedinice je generisanje odgovarajuãih upravljaèkih signala prilikom upisa. Za èitanje je potrebno aktivirati signal OE (engl. Ili je potrebno poveãati broj bitova (velièinu reèi) koji se istovremeno išèitavaju ili broj reèi u memoriji koji se može adresirati.: output enable). Uloga ovog ulaza je da omoguãi proširivanje kapaciteta memorije. Upravljaèka jedinica poseduje još jedan ulaz sa nazivom CS (engl. adresne linije dinamièkih memorija velikih kapaciteta se multipleksiraju: posebno se uèitavaju i pamte adrese kolona i redova. Unos podataka odnosno njihovo išèitavanje se vrši preko kola za spregu za podatke (bafer). Zbog težnje za što manjim kuãištima. Proširivanje se postiže korišãenjem više memorijskih kola koja se povezuju na odgovarajuãi naèin na zajednièkoj štampanoj ploèi. Kataloški podaci sadrže konkretne vrednosti ovih kašnjenja.52 - . adresiranje se vrši pomoãu dva manja dekodera (dekoderi reda i kolone). Ovaj pristup podrazumeva postojanje dva adresna ulaza za svaku memorijsku ãeliju. Razlog za to je uprošãavanje kuãišta. Slika 4-2: Unutrašnja struktura memorijskog kola.1.2. Meðutim. Složenost dekodera veoma brzo raste (kvadratno) sa poveãanjem broja memorijskih ãelija.: chip select) pomoãu kojeg je moguãe zaustaviti ili pokrenuti rad celog kola.: write enable) signala koji se šalje upravljaèkoj jedinici memorije. Struktura onih memorija koje rade na principu adresiranja je prikazana na slici 42. trajno pamãenje podataka nakon iskljuèenja napajanja predstavlja veliku prednost. Prilikom upisa. Zato se elemetarne memorije postavljaju u matrièni oblik umesto rednog (linearnog) rasporeda. Adresa ãelije kojoj se želi pristupiti ulazi u adresni dekoder preko adresnog kola za spregu (bafer).1. . Uloga dekodera je selektovanje (identifikacija) ãelije sa kojom se želi ostvariti komunikacija. pamãenje velike kolièine podataka zahteva odreðenu organizaciju unutar memorije.Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica programske memorije jer je njihova brzina èitanja velika ali ipak ne mogu zameniti RAM memorije jer je njihovo vreme upisa veliko.

Slika 4-3: Naèin proširivanje dužine reèi pri povezivanju ROM-ova. Kod RAM-ova su signali WE i OE zajednièki za sva kola.Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica Proširivanje dužine reèi je jednostavniji zadatak: memorijska kola se poreðaju jedan pored drugog i adresne i upravljaèke linije sa identiènim oznakama se povezuju (slika 4-3). Prvenstveno je reè o kombinacionim mrežama. Aritmetièke jedinice Prvi složeniji digitalni ureðaji su bili raèunari koji su razvijeni za izvršavanje masovnih i komplikovanih proraèuna u kratkom vremenskom intervalu. Slika 4-4: Poveãanje broja adresabilnih memorijskih reèi odgovarajuãom vezom memorijskih kola. koje vrednosti na ulazima posmatraju kao binarne brojeve i pomoãu odgovarajuãih mreža formiraju rezultat željene aritmetièke operacije. množenje i aritmetièki komparatori. Glavni zadaci današnjih raèunara su ureðivanje i pamãenje podataka ali se i dalje znaèajni resursi posveãuju proraèunima. Deo adresnih linija je takoðe zajednièki. U konkretnom sluèaju se radi o ROM memorijama i funkcija jedinog upravljaèkog signala je otvaranje njihovih izlaza. dok se ostatak vodi na dekoder koji odluèuje o tome koje kolo ãe se aktivirati u datom trenutku.53 - . Aritmetièke jedinice saèinjavaju osnovu proraèuna u raèunarima. U nastavku se razmatraju jednostavna kola za sabiranje. Poveãanje broja adresabilnih memorijskih reèi se postiže povezivanjem više memorijskih kola pri èemu je potrebno dodatno spoljašnje kolo (dekoder) koje naizmenièno aktivira pojedina memorijska kola (slika 4-4). Izlazne linije podataka se mogu posmatrati kao deo jedne zajednièke magistrale podataka. uloga dekodera je generisanje signala dozvole pojedinim memorijskim kolima. Linije podataka pojedinih memorijskih kola se spajaju na zajednièku magistralu podataka. . 4. U prikazanom sluèaju (povezivanje ROM-ova). dok su signali dozvole (CS) jedinstveni za svaku memoriju i generiše ih spoljašnji dekoder.2.

Nedostatak polusabiraèa je da se ne mogu povezati u kaskadu kako bi sabirali višebitne brojeve. ci a b co co s s b a ci (a) (b) Slika 4-6: (a) Logièka šema potpunog sabiraèa i (b)njegova šematska oznaka. s tim da se bitovi . b a a 0 0 1 1 b 0 1 0 1 c 0 0 0 1 sf 0 1 1 0 c sf Slika 4-5: (a) Kombinaciona tabela polusabiraèa i (b) njegova logièka šema. a njegova šematska oznaka koja ãe se u nastavku koristiti je data na slici 4-6b. Osnovnu jedinicu složenijih sabiraèa èine polusabiraèi. Najmanje znaèajan bit u rezultatu predstavlja zbir sabiranja (sf) dok je najznaèajniji bit (c – engl. (a) (b) Jednaèine koje se dobiju na osnovu prethodne tabele su: s f  ab  ab  a  b c  ab . Operacija oduzimanja se realizuje sabiranjem u drugom komplementu. Na ovaj naèin se dobija potpuni sabiraè za koji važe sledeãe jednaèine: s  a  b  ci co  a  b ci  ab Logièka šema potpunog sabiraèa dobijena na osnovu prethodnih jednaèina je prikazana na slici 4-6a.2. Kaskadnom vezom potpunih sabiraèa na naèin koji je prikazan na slici 4-7 moguãe je sabiranje višebitnih brojeva.1. Za ovo je potrebno rešiti sabiranje bita prenosa iz prethodnog polusabiraèa sa bitovima sledeãeg polusabiraèa. Operacija množenja se èesto izvodi korišãenjem sabiraèkih kola.Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica 4. Rezultat sabiranja u decimalnom brojnom sistemu može biti 0. koji sabiraju dva jednobitna binarna broja prema tabeli koja je prikazana na slici 4-5a. 1 ili 2. Na osnovu ovih jednaèina je nacrtana šema polusabiraèa koja je prikazana na slici 4-5b.: carry) predstavlja prenos i formira ulaz za sledeãi stepen.54 - . Formiranje zbira kod date mreže se vrši paralelno. Sabiraèi Osnovna kola u binarnoj aritmetici su sabiraèi.

Sledeãi znaèajniji bit množenja (C1) se dobija pomoãu jednog polusabiraèa u koji ulazi bit A1 i najmanje znaèajan bit broja B. Množenje se može svesti na uzastopno sabiranje: prvi množilac se množi sa pojedinaènim bitovima drugog množioca i dobijeni meðurezultati se sabiraju. Strukture množaèa koji su formirani pomoãu sekvencijalnih mreža su jednostavnije (sastoje se od manjeg broja logièkih kapija). Takvo rešenje znaèajno ubrzava rad sabiraèa. Vrednost najmanje znaèajnog bita A0 se množi sa ciframa (bitovima) broja B pomoãu dva I kola. Najmanje znaèajan bit (C0) meðurezultata je ujedno i najmanje znaèajan bit množenja. Najznaèajnije bitove množenja (C2 i C3) formira drugi polusabiraè koji sabira eventualni bit prenosa iz prvog sabiranja i logièki proizvod A1B1. b3 b a3 a ci b2 b a2 a ci b1 b a1 a ci b0 b a0 a ci Slika 4-7: Sabiranje dva èetvorobitna broja kaskadnom vezom potpunih sabiraèa. Ispravnost navedenog postupka dokazuje pismeno množenje koje je navedeno pored logièke šeme. Ovakav množaè se rešava sekvencijalnom mrežom koja pomoãu jednog logièkog automata usmerava tok podataka izmeðu registara. . ali su znatno sporiji od množaèa realizovanih pomoãu kombinacionih mreža jer se rezultat množenja dobija tek nakon više koraka. Množaèi Digitalni množaèi se mogu realizovati na više naèina.2. co s4 s s3 co s s2 co s s1 co s s0 4. U ovom sluèaju neophodno je formirati takvu kombinacionu tabelu u kojoj su sve moguãe varijacije množioca uzete u obzir. Moguãe je konstruisati dvobitni množaè na bazi kombinacionih mreža i bez odreðivanja njihove kombinacione tabele (slika 4-8).2.Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica prenosa prostiru serijski kroz pojedine module sabiraèa što znaèajno usporava rad kola.55 - . Moguãe je konstruisati množaè i primenom kombinacione mreže. Slika 4-8: Kombinaciona mreža koja množi dva dvobitna broja. Postoje kola koja pomoãu dvostepene logièke mreže odreðuju da li se može oèekivati bit prenosa kod nekog bita.

može da obavlja funkciju množaèa za dva èetvorobitna broja. Proces traje sve dok brojaè ne stiže do nule. ROM kapaciteta 256x8 bita (slika 4-9) koji je na odgovarajuãi naèin programiran. sabira sopstveni sadržaj sa meðurezultatom. Drugi osnovni princip se zasniva na proceduri ruènog množenja bit po bit (slika 4-11). Niz I kola vrši množenje sa pojedinim bitovima drugog množioca. U trenutku kada brojaè dostiže vrednost nula.56 - . posle pomeranja. zatim upisuje drugi množilac u programabilni brojaè. S R TA T bj-1 LOAD Dj-1 b2 b1 b0 LO AD a k-1 Dk-1 a2 a1 a0 D2 D D0 1 D2 D1 D0 PR R AB I B O OG AM ILN R JAC Qj-1 Q2 Q Q0 1 DETEK TORN ULE C LK C LR S TAC IONA NI R IS R R EG TA AKU ULIR M AJUC S IR I AB AC pj+ k-1 p2 p1 p0 Slika 4-10: Množenje realizovano sukcesivnim sabiranjem. Sabiraè. zahvaljujuãi sukcesivnom sabiranju. . Pod uticajem takt signala brojaè broji unazad dok akumulacioni sabiraè sabira svaki put aktuelni sadržaj akumulatora sa množiocem.Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica Realizacija digitalnih kola za množenje brojeva od više bita zahteva sve veãi broj logièkih kapija. Množenje je završeno kada je svaki bit izašao iz pomeraèkog registra. Na poèetku procesa prvi množilac se smešta u stacionarni registar a drugi množilac u pomeraèki registar. išèita se sadržaj ROM-a što se može smatrati kao jedna tabela koja sadrži sve moguãe vrednosti proizvoda (P). u stacionarni registar upisuje prvog množioca. u akumulatoru se nalazi traženi proizvod. Rešenje množaèa za veãe binarne brojeve je u primeni ROM-a. Kada se množioci (A i B) spoje na odgovarajuãe adresne linije. Logièka mreža koja je prikazana na slici 4-10 pod uticajem START signala briše sadržaj akumulatora. b0 b1 b2 b3 a0 a1 a2 a3 A0 A1 A2 A3 A4 A5 A6 A7 D0 D1 D2 D3 D4 D5 D6 D7 p0 p1 p2 p3 p4 p5 p6 p7 B ROM 256x8 bit P Slika 4-9: Realizacija množaèa sa ROM-om. Kod množaèa koji se realizuju sekvencijalnim mrežama potrebno je skrenuti pažnju na dva osnovna principa. A U VLSI tehnologiji se realizuju 16x16 bitni ili još veãi množaèi u formi kombinacionih mreža kao sastavni delovi mikroprocesora.

: greater then) je jednak jedinici samo ako je a  b . Rezultat komparacije je jednakost dva broja.3. 4. Aritmetièki komparatori Uporeðivanje dva binarna broja je zadatak koji se èesto javlja u digitalnim sistemima.57 - . .: less then) je jedinica ako je a  b . AEQB (engl.Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica an-1 D n-1 S C N R I R IS R TA IO A N EG TA Q n-1 Q n-2 a2 D 2 a1 D 1 a0 D 0 LOA D Q0 bn-1 D n-1 S out b2 b1 b0 S R TA T C LK D2 D1 D0 LO D A PO ER C I R IS R M A K EG TA S R TA T p2n-1 C LR p2n-2 SB A A IR C pn D n-1 C LK D2 D1 D0 S out S in PO ER C I R IS R M A K EG TA C LK PO ER C I R IS R M A K EG TA p2n-1 p2n-2 pn pn-1 pn-2 p0 Slika 4-11: Sekvencijalna mreža koja realizuje množenje bit po bit.: equal) je jedinica ako je a  b i vrednost ALTB (engl. Logièka šema univerzalnog komparatora koja je realizovana na osnovu prethodnih jednaèina je data na slici 4-12b. Izlazne promenljive se formiraju prema sledeãim jednaèinama: AGTB  ab AEQB  ab  ab  a  b ALTB  ab . Komparacija dva jednobitna broja se vrši prema kombinacionoj tabeli koja je prikazana na slici 4-12a. ali operaciju komparacije je moguãe proširiti i na odreðivanje relacije koji je broj veãi ili manji u sluèaju nejednakosti. Vrednost premenljive AGTB (engl.2. složeniji komparator koji se naziva univerzalni komparator. Naziv kola koje vrši uporeðivanje je (aritmetièki) komparator. U nastavku se razmatra samo ovaj.

Sa druge strane.58 - . Uporeðivanje je svrsishodno poèeti od bita najveãe binarne težine. a0 G TI " 1" b0 G TO EQ O LTO G TI a1 b1 G TO EQ O LTO G TI an-1 bn-1 G TO EQ O LTO A TB G A B EQ A LTB N ITN EQ JED OB I I K M R TO O PA A R LTI NB I EQ JED O ITN I K M R TO O PA A R LTI NB I EQ JED O ITN I K M R TO O PA A R LTI Slika 4-13: Kaskadno povezivanje aritmetièkih komparatora. Èim se uoèi razlika kod nekog bita. Smanjena je brzina komparacije ali i složenost kola. jednakost se može ustanoviti samo kada su veã svi bitovi provereni. Naèin kaskadnog povezanja jednobitnih komparatora je prikazan na slici 4-13. uporeðivanje se može vršiti serijskim postupkom primenom odgovarajuãe sekvencijalne mreže. Prema slici 4-14.Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica a AGTB A 0 0 1 1 B AGTB AEQB ALTB 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 (a) AEQB ALTB b (b) Slika 4-12: (a) Kombinaciona tabela jednobitnog univerzalnog komparatora i (b) njegova logièka šema. tako da je moguãe izvršiti kaskadno povezanje pojedinih stepena. koja je prikazana na slici 4-12b. izlazi A>B odnosno A<B se mogu trenutno aktivirati. Uporeðivanje bit po bit je meðutim mnogo svrsishodnije i zbog toga je neophodno izmeniti mrežu. . Vrednosti koje su upisane u registre se pomeraju korak po korak i dovode na ulaz jednobitnog komparatora. Slika 4-14: Logièka šema serijskog aritmetièkog komparatora. Krajnji cilj u vezi komparatora je projektovanje takvih kola koja vrše komparaciju višebitnih brojeva. Teoretski je moguãe napisati kombinacionu tabelu za višebitne komparatore na naèin koji je prikazan na slici 4-12a i na osnovu toga izvršiti sintezu odgovarajuãe mreže.

D/A konvertori Kod rešavanja razlièitih tehnièkih problema èesto je potrebno pretvoriti digitalne signale u analogne. Odnos deljenja se podešava pomoãu analognih prekidaèa. Slike od 4-17 do 4-20 prikazuju karakteristiène rasporede otpornièkih mreža i prekidaèa. Struktura Centralni deo D/A konvertora je jedna otpornièka mreža (slika 4-16) èija je uloga deljenje osnovnog signala. 4. Izlazni signal otpornièke mreže je moguãe direktno koristiti ali se obièno pre toga propušta kroz stepene za pojaèavanje i filtraciju. Obièno su moguãe vrednosti napona linearno rasporeðene po nekoj skali.2. 8.Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica 4. Upravljanje prekidaèima mogu direktno da vrše bitovi ulaznog broja ali se može desiti da za dobijanje taènog rezultata je neophodno izvršiti konverziju tog broja u neki drugi kodni sistem.3. Broj razlièitih vrednosti a time i rezolucija skale zavisi od broja kodnih reèi u datom kodnom sistemu.1. 12 ili još veãi. 10.3. Uslov preciznog pretvaranja je taèan i stabilan osnovni signal a takoðe i deljenje mora biti bez greške.59 - . Pri digitalno-analognoj (D/A) konverziji rezultat je napon koji je srazmeran datom broju. Slika 4-16: Blok šema digitalno/analognog konvertora. Broj bitova u praksi je èesto mnogo veãi npr. D/A konvertor generiše izlazni napon deljenjem iz odgovarajuãeg osnovnog signala (referentnog napona). Obièno se koristi prirodni binarni kod i tako pomoãu koda velièine n bita moguãe je definisati 2n razlièitih izlaznih vrednosti za napon. Otpornièka mreža kod takozvanog direktnog pretvaraèa (slika 4-17) se sastoji od redne veze . Slika 4-15: (a) Šematska oznaka D/A konvertora i (b) njegova prenosna karakteristika.3. Šematska oznaka i prenosna karakteristika trobitnog D/A konvertora su prikazane na slici 4-15. Naèin funkcionisanja D/A konvertor svakom ulaznom broju dodeljuje jedan napon diskretne vrednosti. 4.

Povezivanjem odreðenih prekidaèa na referentni potencijal se formiraju pojedinaène komponente izlazne struje koja je na desnoj strani šeme oznaèena sa I. Najveãa komponenta struje se dobija ukljuèenjem desnog prekidaèa i ta vrednost se prepolovljava kako se kreãe ulevo.  2n 1 Qn 1 ) 2 R Promenljive Qi su vrednosti pojedinih bitova od ulazne kodne reèi.. Najveãu teškoãu kod ovog rešenja predstavlja realizacija težinskih otpornika sa taènim vrednostima. Struje koje prolaze kroz pojedine otpornike se sabiraju pomoãu operacionog pojaèavaèa i na taj naèin se formira diskretni izlazni napon koji odgovara ulazoj kodnoj reèi: 1 VO   R f  VREF  n ( 20 Q0  21 Q1  2 2 Q2  . moguãe ju je pretvoriti u napon pomoãu jednog operacionog pojaèavaèa. Prema tome. Struktura mreže je jednostavna ali se pri velikoj rezoluciji sastoji od velikog broja prekidaèa i otpornika velike taènosti èija je realizacija skupa. Problem je i to da vrednosti struja koje prolaze kroz pojedine prekidaèe su veoma razlièite i zbog toga su i padovi napona na prekidaèima razlièiti što doprinosi grešci u konverziji. Konaèna formula za struju I je: I V REF 1   ( 2 n 1 Qn 1  2 n  2 Qn  2  . U integrisanoj tehnici najveãi uspeh su doživeli oni D/A konvertori èija se struktura zasniva na lestvièastoj otpornièkoj mreži jer je potrebno precizno reprodukovati samo dve vrednosti otpornosti R i 2R (slika 4-19).  2 2 Q2  21 Q1  2 0 Q0 ) 6 R 2 n 1 gde su Qi bitovi ulazne kodne reèi.. Slika 4-17: Principska šema direktnog D/A kovertora. koji se odreðuje na osnovu ulazne kodne reèi i tako se izabrana vrednost napona propušta na izlaz (UK). Od svih prekidaèa. velièina izlazne struje je i u ovom sluèaju srazmerna ulaznoj kodnoj reèi.. . Šema èetvorobitnog D/A konvertora sa težinskom otpornièkom mrežom je prikazana na slici 4-18. Neophodo birati takav kodni sistem kod kojeg se u svakoj kodnoj reèi nalazi samo jedna jedinica ili se ovaj problem rešava uvoðenjem dekodera ili kodnog pretvaraèa. Ovu struju je moguãe direktno koristiti kao izlazni signal ili ako je potrebno. Slika 4-18: D/A konvertor realizovan težinskom otpornièkom mrežom. Svaka moguãa vrednost diskretnog napona je na raspolaganju u taèkama spajanja dva otpornika. U integrisanoj tehnici je posebno teško realizovati otpornike koji imaju veoma male ili veoma velike vrednosti otpornosti sa velikom taènošãu.Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica otpornika istih vrednosti..60 - . istovremeno je samo jedan ukljuèen.

3. Drugi zadatak je uporeðivanje uzorka sa vrednostima na jednoj diskretnoj skali. Karakteristike Glavne karakteristike D/A konvertora su: rezolucija i vreme uspostavljanja. Ovaj proces se obavlja prema unapred definisanoj prenosnoj karakteristici A/D konvertora (slika 4-21). Na osnovu prethodnih pretpostavki se zakljuèuje da je greška konverzije uvek manja od napona koji odgovara bitu najmanje težine. dok kod impulsno-širinskih pretvaraèa je znaèajno veãe jer je vremenska konstanta RC èlana nekoliko puta veãa od periode prekidanja koja je veã sama po sebi prilièno dugaèka. prikazati itd. poslati.61 - . Q0 Q1 Q2 Qn-2 Qn-1 Vref Na slici 4-20 je prikazano rešenje za realizaciju D/A konvertora koje sadrži najmanji broj komponenata. Slika 4-20: D/A konvertor koji radi na principu impulsno-širinske modulacije. Ovaj proces se naziva diskretizacija po amplitudi. Rezolucija se zadaje brojem bita pod pretpostavkom da se podaci na ulaz dovode u binarnom kodu. Kao rezultat uporeðivanja. Upravljanje prekidaèem se vrši tako da je odnos vremena za koje je prekidaè u levom položaju i periode ukljuèivanja identièan sa odnosom trenutne vrednosti ulaznog kodiranog broja i njegove maksimalne vrednosti (ovo se naziva impulsno-širinskom modulacijom). Podatak o rezoluciji ukazuje ujedno i na taènost pretvaranja. Proces pretvaranja nije trenutan i zbog toga je neophodno tako odabrati periodu uzorkovanja da se konverzija prethodnog uzorka završi pre uzimanja narednog. A/D konvertori Kada je potrebno analogne signale (vrednost napona ili neke druge kontinualne velièine) u digitalnoj formi zapamtiti. 4.3. obraditi.Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica 2R R 2R R 2R 2R R R 2R 2R 2R I Slika 4-19: D/A konvertor realizovan lestvièastom otpornièkom mrežom R2R.4. Princip rada Kod A/D konverzije potrebno je rešiti nekoliko zadataka. Prvo.. vrednost uzorka se zamenjuje jednim brojem sa ove skale koji je najbliži po vrednosti uzorku. Uzorku analognog signala se prilikom koverzije dodeljuje odgovarajuãi broj iz korišãenog kodnog sistema. Prekidaè K se periodièno prebacuje u levi i desni položaj. 4. 4. Za uspostavljanje stabilnog izlaznog napona je potrebno odreðeno ovreme.4. Posle odgovarajuãeg filtriranja (koje vrši RC èlan) vrednost izlaznog napona (srednja vrednost impulsa) ãe biti proporcionalna vrednosti ulaznog broja. Zadnja faza konverzije je formiranje izlaznog koda koji odgovara diskretizovanoj vrednosti. Pretvaraèe je neophodno tako konstruisati da njihova prenosna funkcija bude monotona. Ovaj postupak se naziva diskretizacijom po vremenu. neophodno je prethodno izvršiti analognodigitalnu konverziju. neophodno je u pravilnim vremenskim razmacima uzeti uzorke iz analognog signala. . Kod veãine pretvaraèa ovo vreme je reda ìs ili ns.1.

Direktni D/A konvertor u sluèaju n-bitnih kodova sadrži 2n-1 naponskih komparatora (slika 4-22).Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica Slika 4-21: Prenosna karakteristika trobitnog A/D konvertora. izlazi nekih komparatora ãe biti na niskom nivou dok su drugi na visokom. Izlazni stepen se sastoji od jednog prioritetnog kodera: izlazni kod se formira na osnovu jedinice na izlazu komparatora na najvišem položaju. Na druge ulaze komparatora se dovodi analogni napon koji treba da se konvertuje.: flash) tip. rešenje sa postepenim približavanjem (sukcesivnom aproksimacijom) i sa postupkom brojanja. . Na taj naèin se dobija željena skala diskretnih vrednosti.62 - . Diskretizaciju po vremenu vrši takt signal: izlazne vrednosti komparatora periodièno upisuje u flip-flop-ove. Slika 4-22: Direktni A/D konvertor sa trobitnim izlazom. U zavisnosti od vrednosti napona. 4. Na jedan ulaz komparatora se dovode odgovarajuãi naponski nivoi prema datoj prenosnoj karakteristici. Ovi naponi se formiraju otpornièkim razdelnikom povezanim na izvor referentnog napona. Struktura Postoje tri razlièita rešenja za današnje A/D konvertore: direktni (engl.2.4.

Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica Kod A/D konvertora sa sukcesivnom aproksimacijom izlazni kod velièine n bita se formira u n koraka. vrednost MSB-a ostaje nepromenjena dok se u suprotnom sluèaju vraãa na nulu. Na kraju periode takt signala opet se u registru setuje sledeãi bit. . Prema toj vrednosti D/A konvertor generiše odgovarajuãi analogni signal a na osnovu toga komparator javlja registru da li je ulazni signal veãi ili manji od vrednosti koja se nalazi na sredini skale. Ako je ulazni signal veãi.63 - . Princip rada je prikazan na slici 4-23. ako ne. U sledeãoj periodi takt signala se ponovo uporeðuje vrednost ulaznog signala sa izlazom D/A konvertora i komparator informiše registar o opravdanosti setovanja datog bita.: most significant bit .: successive approximation register – SAR) koji je centralni deo šeme. Naponski komparatori (pomoãu EX-ILI kola) dozvoljavaju rad brojaèa sve dok je vrednost testerastog signala veãa od nule ali još nije premašila ulazni napon. U treãi skup rešenja A/D konverzije spadaju brojaèka rešenja. Konvertor sadrži jedan D/A kovertor èija je rezolucija ista kao i samog A/D konvertora. Osnovni princip kod svih je generisanje pravougaonog impulsa sa vremenom trajanja srazmernim sa ulaznim analognim signalom. Pravougani signal se generiše uporeðivanjem analognog signala i linearno rastuãeg testerastog signala. Na poèetku konverzije setuje se bit najveãe težine (engl. Izlaz D/A konvertora je vezan na drugi ulaz komparatora. setuje se vrednost susednog bita u registru. Pri tome uloga brojaèa je odreðivanje broja perioda takt signala generisanih za vreme trajanja pravougaonog impulsa. Slika 4-23: Blok šema A/D kovertora sa sukcesivnom aproksimacijom. Broj dobijen na kraju brojanja ãe biti srazmeran analognom naponu. pri odgovarajuãoj ivici takt signala. Razvijeno je više takvih postupaka. Princip rada je prikazan na slici 4-24. Tada se u registru nalazi digitalni kod koji odgovara ulaznom analognom signalu. Ovaj proces se nastavlja sve dok nisu odreðene vrednosti svih bitova.MSB) u registru. Istovremeno. Izlaz komparatora vrši upravljanje registrom za sukcesivnu aproksimaciju (engl. U prodaji se mogu naãi integrisana kola koja u sebi sadrže kompletan A/D konvertor sa sukcesivnom aproksimacijom. vrednost bita ostaje jedinica. Ako je setovanje bilo opravdano. Ulazni signal se uzorkuje na poèetku periode kovertovanja i ta vrednost se održava konstantnom na ulazu komparatora K do kraja ciklusa pretvaranja. onda se resetuje.

Primenom A/D konvertora sa testerastim signalom i brojaèem moguãe je dostiãi veliku rezoluciju po niskoj ceni jer je broj korišãenih kola relativno mali. Jedino je važno kod ovog A/D konvertora da se vrednost referentnog napona održi na konstantnom nivou. Proseèno vreme konverzije A/D konvertora sa sukcesivnom aproksimacijom je nekoliko ìs. nivo teènosti itd. Rezolucija konverzije je obièno osmobitna ili veãa. Ovaj tip A/D konvertora je pogodan i za digitalizaciju sporopromenljivih fizièkih velièina (npr. Nedostatak prikazanog rešenja je da osim strmine testerastog signala i taènost frekvencije takt signala utièe na taènost konverzije.4. Postoje i druga brojaèka rešenja koja primenjuju testerasti signal saèinjen od rastuãeg i padajuãeg segmenta. Oblasti primene ovih kola su najèešãe kod upravljanja brzim procesima.). ali dodatni problemi mogu nastati zbog pomeranja RC vrednosti koji definišu testerasti signal. temperatura. Kod digitalnih prenosnih instrumenata se uvek ugraðuju ovakvi tipovi konvertora jer korisnik ne bi ni bio u stanju da oèita izmerenu vrednost neke velièine kada bi se cifre brzo menjale. Strminu testerastog signala je moguãe stabilizovati pomoãu odgovarajuãeg referentnog napona. Karakteristike Proces pretvaranja kod direktnih tipova A/D konvertora je veoma kratak (obièno je vreme konverzije ispod 1ìs).Digitalno projektovanje primenom SSI i MSI funkcionalnih jedinica Slika 4-24: Blok šema A/D konvertora koji koristi testerasti signal i brojaè. Pomoãu ove tehnike je moguãe izbeãi osetljivost kako na promene RC èlana tako i na stabilnost frekvencije takt signala. Nedostatak ovog tipa je dugaèko vreme konverzije koje je èesto reda velièine sekunda.3. telekomunikacije). ali zahtevaju veliki broj komponenata i zbog toga im je cena visoka. . 4. Ovo rešenje se primenjuje do šest ili osam bita rezolucije i samo za konverziju brzo promenljivih signala (digitalni osciloskopi.64 - .

Projektovanje primenom programabilnih logièkih kola (PLD) Jezik za opis hardvera Verilog .65 - .Projektovanje primenom programabilnih logièkih kola (PLD) III.

prezentovaãe se uobièajeni pristupi koji se primenjuju pri projektovanja digitalnih kola.66 - . Te celine se ponovo dele na podceline sve dok se ne stiže do nivoa kada je moguãe . Proces se nastavlja sve dok se ne reši problem. Bottom-up pristup: Ova metoda projektovanja polazi od osnovnih blokova koji su na raspolaganju za rešavanje zadatog problema.  Slika 5-2: Bottom-up pristup projektovanju. Postoje dva osnovna pristupa projektovanju:  Top-down pristup: Definisani složeni problem se rešava deljenjem na više jednostavnijih podproblema koji se dalje dele na još jednostavnije podproblema itd.: hadware description language – HDL) koji nosi naziv Verilog. Pristupi projektovanju Ovaj deo skripte je posveãen digitalnom projektovanju zasnovanom na jeziku za opis hardvera (engl. Pre upoznavanja sa jezièkim strukturama. Slika 5-1: Top-down pristup projektovanju. Ovi blokovi se dalje koriste za dobijanje blokova još veãe kompleksnosti itd. koje posebno rešavaju. Slika 5-1 pokazuje proces projektovanja top-down metodom. Pri projktovanju kola u digitalnoj elektronici najèešãe se koristi kombinacija ove dve metode. Proces se nastavlja sve dok podproblemi ne postanu dovoljno mali i jednostavni za rešavanje. Projektanti elektriènih kola definisani problem dele na manje celine.Projektovanje primenom programabilnih logièkih kola (PLD) 5. Njihovim korišãenjem se grade blokovi veãe kompleksnosti. Slika 5-2 pokazuje proces projektovanja bottom-up metodom.

Slika 5-3: Šematski simbol èetvorobitnog brojaèa. Slika 5-6 predstavlja šematski prikaz realizacije T flip-flop-a pomoãu jednog D flip-flopa i potrebnih logièkih kola. Sa druge strane. 5. polaze od nivoa prekidaèa. Èetvorobitni brojaè Brojaè ãe imati èetiri izlaza (q0. Kombinaciona tabela za sintezu T flip-flop-a pomoãu D flip-flop-a je prikazana u tabeli 5-1. Na nivou prekidaèa prvo izgraðuju proste funkcionalne jedinice (npr. q1.1. q2 i q3) i dva ulaza (clock i reset) kao što je prikazano na slici 5-3. Slika 5-4 prikazuje šemu èetvorobitnog brojaèa realizovog T flip-flop-ovima. Metode koje su prezentovane podjednako se primenjuju kod projektovanja digitalnih kola sa SSI. Pretpostavimo da razvojno okruženje koje se koristi za realizaciju datog brojaèa kao osnovne gradivne elemente poseduje D flip-flop i sva potrebna logièka kola. Projektovanje èetvorobitnog brojaèa pomoãu D flip-flop-ova i logièkih kola u jednom koraku bi predstavljalo težak zadatak. Za ilustraciju navedenih pristupa projektovanju poslužiãemo se primerom èetvorobitnog brojaèa sa asinhronim reset signalom. inženjeri koji projektuju komponente. T Tabela 5-1:Kombinaciona tabela za sintezu T flip-flop-a pomoãu D flip-flop-a. MSI komponentama ili PLD kolima. Slika 5-5 prikazuje minimizaciju logièke funkcije ulaza D flip-flop-a pomoãu Karnaughove tabele. logièka kola) zatim kombinacijom tih jedinica se formiraju složeniji blokovi koji ãe biti gradivni elementi razvojnog okruženja. koji su osnovni elementi u datoj tehnologiji integrisanih kola. Meðutim korišãenjem T flip-flop-ova se veoma lako projektuje zahtevani brojaè. Slika 5-4: Ostvarivanje èetvorobitnog brojaèa T flip-flop-ovima Sledeãi korak u rešavanju zadatka je sinteza T flip-flop-a pomoãu D flip-flop-a i potrebnih logièkih kola. Brojaè treba projektovati tako da ima moguãnost asinhronog resetovanja i da se okida na silaznu ivicu takt impulsa.Projektovanje primenom programabilnih logièkih kola (PLD) koristiti gotove blokove koji su unapred definisani i predstavljaju osnovne komponente u razvojnim okruženjima. Qn 0 1 0 1 Qn+1 0 1 1 0 D 0 1 1 0 0 0 1 1 .67 - .

Rezultat bi bio još jedan nivo u hijerarhiji top-down metode projektovanja. U tom sluèaju dodirna taèka top-down i bottom-up metode projektovanja bi bila èisto na nivou logièkih kapija. Na sledeãem nivou brojaè je implementiran T flip-flop-ovima.68 - .: primitive) i/ili gradivnih elemenata nižih nivoa. Umesto korišãenja D flip-flop-a kao osnovnog gradivnog elementa razvojnog okruženja. 5.: module).2.Projektovanje primenom programabilnih logièkih kola (PLD) Slika 5-5: Karnaugh-ova tabela za minimizaciju ulazne logièke funkcije D flip-flop-a. Slika 5-7: Hijerarhijska struktura dobijena pri projektovanju èetvorobitnog brojaèa top-down metodom. . 4Q 7         D  T Q  TQ 7IOLSIORS Slika 5-6: Logièka šema ostvarivanja T flip-flop-a pomoãu D flip-flop-a i potrebnih logièkih kola. U procesu projektovanja èetvorobitnog brojaèa top-down metodom. Moduli su gradivni elementi u Verilog HDL-u i predstavljaju skup osnovnih gradivnih elemenata (engl. Moduli u Verilog HDL-u U Verilog HDL-u je hijerarhijsko projektovanje omoguãeno uvoðenjem koncepta modula (engl. I i NE logièkih kola. Na treãem nivou T flip-flop-ovi su realizovani pomoãu D flip-flopova i potrebnih ILI. 7 ' 4 4 4 FORFN Za rešavanje ovog zadatka koristio se top-down pristup projektovanju. D flip-flop bi se mogao projektovati pomoãu logièkih kola. Na ovom nivou se dodiruju top-down i bottom-up metode jer su korišãeni D flip-flop-ovi i logièka kola koja su osnovni gradivni elementi razvojnog okruženja nastali bottom-up pristupom projektovanju. prvi korak je bio definisanje bloka najvišeg nivoa koji opisuje funkciju brojanja. Dobijena hijerarhijska struktura je prikazana blok dijagramom na slici 5-7.

69 - . memorijskih elemenata i veza kojima se ovi elementi meðusobno povezuju. Za timski rad je potrebno hijerarhijski organizovati projekat. Takoðe. pojedini nivoi se mogu i mešati. izraz RTL (engl.Projektovanje primenom programabilnih logièkih kola (PLD) Koncept modula omoguãava da se skup elemenata koji saèinjavaju modul koristi na više mesta u projektu. Kada se jedan modul posmatra iz perspektive njegove okoline sve što se vidi to su njegove ulazne i izlazne linije (port-ovi).: behavioral or algorithmic level): Predstavlja najviši nivo apstrakcije u Verilog HDL-u. Korišãenjem port-ova unutrašnjost modula je sakrivena od okoline. Svaki modul mora posedovati jedinstveno ime kako bi se mogao razlikovati od ostalih modula. a kada se nivo apstrakcije približava nivou prekidaèa isto se smanjuje. Nakon toga projektovanje odreðenih modula ili grupe modula se dodeljuje pojedinim èlanovima tima. < telo_modula> endmodule Centralni deo modula koji nosi naziv telo modula može da sadrži definicije sa èetiri razlièita nivoa apstrakcije.: register transfer level) se odnosi na izvorni kod koji sadrži definicije i na nivou ponašanja i na nivou toka podataka. Nivo toka podataka (engl. Druga prednost koju pruža korišãenje port-ova je moguãnost timskog rada na istom projektu. Nivoi apstrakcije su sledeãi: Nivo ponašanja ili nivo algoritma (engl. U takvom sluèaju mala promena u opisu zadatka može izazvati znaèajne promene u projektu. Oblik definicije modula u Verilog HDL-u je prikazan u primeru 5-1: Primer 5-1: Najvažniji elementi definicije svakog modula. Na ovom nivou je težište na odreðivanju algoritma koji rešava problem a ne na samoj hardverskoj realizaciji (koji ãe se elementi koristiti i kako ãe se oni povezati). Kada raste nivo apstrakcije poveãavaju se fleksibilnost i tehnološka nezavisnost projekta.: dataflow level): Na ovom nivou se projektovanje vrši definisanjem toka podataka izmeðu registara i naèin njihove obrade u registrima. Moduli se grade pomoãu prekidaèa (tranzistorskih).: switch level): Predstavlja najniži nivo apstrakcije koji Verilog HDL podržava. Uobièajeno. Može se povuãi paralela sa . Ovo omoguãuje promene unutar modula a da se pri tome ne mora menjati ostatak projekta. Primeri modula sa slike 5-7 su èetvorobitni brojaè i T flip-flop. Projektovanje je veoma slièno programiranju u C jeziku. Ista funkcionalnost se može opisati korišãenjem sva èetiri nivoa apstrakcije. Moduli se povezuju sa okolinom preko svojih port-ova (ulazi i izlazi). Pojedini nivoi se primenjuju prema potrebama projekta. module <ime_modula> (<lista_port-ova>).     Verilog HDL dozvoljava korišãenje svih nivoa apstrakcije unutar jednog projekta. Definicija modula u Verilog HDL-u poèinje pomoãu kljuène reèi module i završava se sa endmodule.: gate level): Moduli se implementiraju korišãenjem logièkih kola i elektriènih veza kojima se kola povezuju. svaka definicija modula mora sadržati listu port-ova koja opisuje ulazne i izlazne linije modula. Nivo prekidaèa (engl. Nivo kapija (engl. opisati funkcije modula i definisati port-ove.

// Instanciranje modula T_FF sa imenom tff1. Verilog HDL kreira jedinstveni objekat na osnovu uzora. Umesto toga se vrši instanciranje potrebnog modula. 1. module brojac(q. proces izgradnje zgrade instanciranju a gotova zgrada instanci. Svaki T flipflop instancira jedan D flip-flop. U poreðenju ovih pojmova sa procesom izgradnje zgrade. // Instanciranje modula T_FF sa imenom tff2. T_FF tff3(q[3]. clock. Ispitni blok je takoðe jedan modul napisan u jeziku za opis hardvera (HDL). q[2]. prvo se vrši simulacija na raèunaru. ulazno/izlazni interfejs.4. // Pretpostavimo da je modul T flip-flopa veã definisan sa imenom T_FF. 5.70 - .  . Dvostruka kosa crta (//) oznaèava jednolinijski komentar. Primer 5-2 sadrži definiciju modula 4-bitnog brojaèa. 1. clock. Primer 5-2: Instanciranje modula. Simulacija Pre nego što se primenom odgovarajuãeg hardvera (PLD) realizuje projektovno kolo i pristupi testiranju kola realizovanog na bazi HDL opisa. reset). Pojmovi definicija modula i instanca modula se ne smeju mešati. Program napisan u C jeziku se lako prenosi na druge raèunare dok program napisan u asembleru je specifièan raèunaru na kojem je napisan i ne može se lako preneti na druge. // èetvorobitni izlazni signal input t. Ispitni blok postaje Verilog modul najvišeg nivoa u hijerarhiji projektovanja. reset). Proces kreiranja jedinstvenog objekta na osnovu uzora (modula) se naziva instanciranje (engl. t. reset.: instantiation) a novonastali objekat je instanca (engl. Lakše je programirati u višim programskim jezicima kao što je jezik C nego u asembleru. q[0]. Funkcionalnost HDL opisa se proverava primenom ulaznih signala i posmatranjem izlaznih signala. 1.Projektovanje primenom programabilnih logièkih kola (PLD) programiranjem u C jeziku i u asembleru. T_FF tff1(q[1].3.: stimulus block ili test bench). endmodule Verilog HDL ne dozvoljava definisanje modula unutar definicije drugog modula. reset).: instance). Postoje dva naèina primene ispitnog bloka na objekat koji se testira: Ispitni blok instancira modul koji se testira i obezbeðuje ulazne i prima izlazne signale. q[1]. Kada se modul poziva. Primer koji ilustruje ovaj princip je prikazan na slici 5-8. T_FF tff2(q[2]. Svaki objekat poseduje jedinstveno ime. 1. reset). reset). Matematièari rade na razvoju sistematskih postupaka za ispitivanje ispravnosti HDL opisa ali je zasad to u preliminarnoj fazi. clock. 5. Objekat testiranja je èetvorobitni brojaè prikazan na slici 5-3. parametre i nosioce podataka. // jednobitni ulazni signali T_FF tff0(q[0]. // Instanciranje modula T_FF sa imenom tff3. Instance Modul je uzor na osnovu èega se kreira konkretan objekat. Treba imati na umu da je takvo ispitivanje dobro u onolikoj meri u kojoj meri pametno odaberemo ulazne (pobudne) signale. // Instanciranje modula T_FF sa imenom tff0. Blok koji obezbeðuje ulazne signale i prima izlazne signale se obièno naziva ispitni blok (engl. Èetvorobitni brojaè prikazan na slici 5-4 se sastoji od 4 instance T flip-flop-a. dva I kola i po jedno NE i ILI kolo. Svaka instanca mora posedovati jedinstveno ime. Komentari sadrže informacije za projektanta i nemaju uticaja na digitalni sistem koji se realizuje. plan zgrade odgovara definiciji modula. output [3:0] q. Osnovno pravilo je da se ne sme pomešati ispitni blok sa projekom koji se realizuje.

: dummy block).Projektovanje primenom programabilnih logièkih kola (PLD) Slika 5-8: Ispitni blok (modul) instancira modul kojim se realizuje postavljeni zadatak.71 - . Ispitni blok komunicira sa modulom testiranja kroz port-ove.  Drugi naèin primene ispitnog bloka je da se predmet testiranja i blok koji vrši testiranje instanciraju unutar jednog praznog modula najvišeg nivoa u hijerarhiji projektovanja (engl. Jedina funkcija bloka najvišeg nivoa je instanciranje ispitnog modula i modula koji se testira. Ovaj naèin primene ispitnog bloka je prikazan na slici 5-9. Slika 5-9: Jedan prazan modul instancira ispitni modul i projektovani modul (èetvorobitni brojaè). .

: keyword). Isto važi i za jezike za opis hardvera. Osnovni koncepti Verilog HDL-a Ova glava se bavi osnovnim pojmovima i konvencijama Verilog HDL-a. Primer 6-1: Pisanje jednolinijskih i višelinijskih komentara. // && je binarni operator. c i d su operandi. Primer 6-2: Unarni.1. Jezièke konvencije Osnovne jezièke konvencije Verilog HDL-a su veoma sliène pravilima programskog jezika C.3.: identifier) i kljuène reèi (engl. a = b && c. nizovi znakova (engl: string). // ?: je ternarni operator.1. b. Ti zapisi mogu biti sledeãeg tipa: primedbe (komentari).1. Znaci „//“ nalažu prevodiocu opisa na hardverskom jeziku da sve što sledi od te taèke pa do kraja reda preskaèe u procesu prevoðenja. identifikatori (engl. // ~ je unarni operator. 6. Operatori Operatore delimo u tri kategorije: imamo unarne. Verilog HDL je case-sensitive jezik.Projektovanje primenom programabilnih logièkih kola (PLD) 6. Sve kljuène reèi su definisane malim slovima u Verilog HDL-u. tabulator i nova linija zajednièkim imenom se u Verilog HDL-u nazivaju praznim mestima. Prazni karakteri se u procesu prevoðenja Verilog HDL opisa ignorišu osim kada se koriste za meðusobno razdvajanje komentara.1. identifikatora.2. Unarni operatori se odnose na jedan operand i stavljaju se ispred operanada. Oni koji se ipak ustežu od pisanja komentara treba da imaju na umu da pisanje komentara ne umanjuje inteligenciju programera. /*Ovo je višelinijski komentar*/ // Ovo je jednolinijski komentar 6.1. Komentari Komentari su neophodni u softverskim jezicima radi dokumentovanja i lakšeg razumevanja programskog koda pri kasnijem analiziranju. binarni i ternarni operatori. a = b + c. binarni operatori se stavljaju izmeðu dva operanda. Ternarni operatori se sastoje od dva posebna znaka koji razdvajaju tri operanada. brojeva.72 - . 6. stringova i kljuènih reèi. binarne i ternarne operatore (primer 62). identifikatori brojac i Brojac se ne odnose na isti podatak jer prvi identifikator poèinje sa malim slovom b a drugi sa velikim B.  Višelinijski komentari. 6. Osnovno pravilo je da se stavi komentar svugde gde postoji sumnja da ãe jedna naredba ili grupa naredbi predstaviti problem za razumevanje posle nedelju ili mesec dana. Kod string-ova uzimaju se u obzir i prazna mesta. . a = ~b. brojevi. Na primer.: token). Postoje dva naèina pisanja komentara (primer 6-1):  Jednolinijski komentari. Izložena materija je prilièno suvoparna ali je neophodna za razumevanje i praãenje narednih glava. a = b ? c : d. b i c su operandi. Višelinijski komentar poèinje znacima „/*“ i završava se sa znacima „*/“. Verilog jezièke konstrukcije se sastoje od niza zapisa (engl. Prazna mesta Prazan karakter. b je operand. znakovi za razdvajanje. što znaèi da razlikuje mala i velika slova.

1.: unsized numbers): Velièinu brojeva u bitovima koji su zadati bez parametra <velièina> odreðuje simulator ili arhitektura raèunara (ali dužina ne može biti manja od 32 bita). // 6-bitni heksadecimalni broj nepoznate vrednosti. // 32-bitni binarnan broj. c. Ovi simboli su neophodni pri modeliranju rada realnih kola. ‘o7651 ‘hAB3 4556 // 32-bitni oktalni broj // 32-bitni heksadecimalan broj // 32-bitni decimalan broj  x i z vrednosti meðu ciframa Verilog HDL poseduje dva specifièna simbola: jedno za nepoznato stanje (x) a drugo za stanje visoke impedanse (z) (primer 6-5). 12’h13x 6’hx 32’bz // 12-bitni heksadecimalni broj. f ili podskupom ovih cifara koji odgovara brojnom sistemu koji se koristi. 7. d. D. 4. E.4. <Broj> se zadaje ciframa 0. b. Sve binarne pozicije su u // stanju visoke impedanse. 3.: sized numbers):  Brojevi sa velièinom su sledeãeg oblika: <velièina>’<osnova_brojnog_sistema><broj> <velièina> je decimalni broj koji predstavlja broj bitova pomoãu kojih se zapisuje dati broj. e. Brojni sistemi koje Verilog HDL podržava su: decimalni sistem (oznaka je ‘d ili ‘D). Broj koji nema parametar <osnova_brojnog_sistema> je po dogovoru uvek decimalan broj (primer 6-4). f ili A. e. a. c. F)(primer 6-3). 2. 3’b101 16’hfa3e 16’HFA3e // trobitni binaran broj // 16-bitni heksadecimalan broj // Isti broj kao prethodni samo su neka slova velika Brojevi bez velièine (engl. b. C.  Primer 6-4: Definisanje brojeva bez velièine. Cifre se mogu pisati i malim i velikim slovima (a. 1. Vrednosti èetiri // najmanje znaèajna bita su nepoznate. 8. oktalni sistem (oznaka je ‘o ili ‘O) i heksadecimalni sistem (oznaka je ‘h ili ‘H). d. Primer 6-5: Korišãenje x i z vrednosti u ciframa broja. 6.73 - . . 5. 9. Predstavljanje brojeva u Verilog HDL-u U Verilog HDL-u brojevi se mogu navoditi na dva naèina: sa velièinom broja ili bez velièine. Brojevi sa velièinom (engl. Primer 6-3: Pisanje brojeva sa velièinom. B.Projektovanje primenom programabilnih logièkih kola (PLD) 6. binarni sistem (oznaka je ‘b ili ‘B).

x ili z. neodreðeni bitovi se dopunjuju sa 0. znak pitanja „?“ (primer 6-8) predstavlja alternativu za stanje visoke impedanse (z). 12’b1100_0101_1111 // Znak donja crta se koristi kako bi se poveãala preglednost // HDL opisa  Znak pitanja Kada se radi o brojevima.  Pisanje negativnih brojeva Negativni brojevi se zadaju stavljanjem znaka minus pre parametra za velièinu broja. Primer 6-7: Korišãenje znaka donja crta. Slika 6-1 prikazuje sluèajeve kada je broj definisanih cifara manji od velièine broja. sinteza) za predstavljanje negativnih brojeva softveri koriste drugi komplement. 4’b01?? // Identièan izrazu: 4’b01zz . Brojevi su u oktalnom brojnom sistemu. Slika 6-1: Primeri brojeva kod kojih je broj zadatih cifara manji od definisane velièine broja. Pri obradi Verilog HDL izvornog koda (simulacija. neodreðeni bitovi veãe težine se takoðe dopunjuju sa vrednostima 0. Primer 6-8: Oznaèavanje stanja visoke impedanse znakom pitanja.74 - . Primer 6-6: Zadavanje negativnih brojeva. Znak donja crta u brojevima se ignoriše u procesu tumaèenja HDL opisa. Ove dve naredbe ãemo kasnije detaljno objasniti. Ako je cifra najveãe težine 1. Nije dozvoljeno staviti znak minus izmeðu parametra za brojni sistem i samog broja (primer 6-6).Projektovanje primenom programabilnih logièkih kola (PLD) Vrednosti x i z u sluèaju heksadecimalnog brojnog sistema zamenjuju 4 bita. Ako je cifra najveãe težine zadatog broja 0. Važno je objasniti šta se dešava u sluèaju kada je broj zadatih cifara manji od velièine broja. -8’hA1 8’h-A1 // 8-bitni negativan broj // Pogrešno zadavanje negativnog broja  Znak donja crta Znak donja crta „_“ je dozvoljen pri zadavanju brojeva na bilo kojem mestu osim ispred prvog karaktera. Ovo omoguãuje jednostavan naèin dodeljivanja vrednosti 0. u sluèaju oktalnog 3 bita a u sluèaju binarnog brojnog sistema jedan bit. Znak pitanja se još koristi u izrazima casex i casez kako bi se poveãala preglednost HDL opisa. x ili z celom vektoru. x ili z. Jedini razlog zašto je dozvoljena donja crta jeste da poboljša preglednost HDL opisa (primer 6-7).

Kao i u realnim kolima. 6. Primer 6-9: Definisanje stringa. (Znak dolara kao prvi karakter u identifikatoru je rezervisan za sistemske funkcije.2. veze Osnovni tip podatka u Verilog HDL-u je logièko stanje veze odnosno èvora (engl.75 - . // reg je kljuèna reè. Primer 6-10: Primena kljuènih reèi. Logièke vrednosti u Verilog HDL-u Kao što je navedeno kod objašnjenja naèina pisanja brojnih vrednosti (taèka 6.Projektovanje primenom programabilnih logièkih kola (PLD) 6. Identifikatori se grade pomoãu slova. To su moguãe vrednosti za sve vrste podataka. Na slici 6-2 izlaz ILI logièkog kola je povezan na nosilac podatka c.1.1) Verilog HDL podržava èetiri logièke vrednosti koje su prikazane u tabeli 6-1.4. Kljuène reèi Kljuène reèi (engl.2.7. Logièki nivo podatka c na izlazu kola u svakom trenutku je odreðena vrednošãu izlaza ILI kola. Uvode se kljuène reèi koje se koriste za njihovu definiciju i pravila vezana za pojedine tipove nosioca podataka. Jedino ogranièenje pri zadavanju string-ova je da se mora nalaziti u jednoj liniji.) 6. Input je identifikator // input i Input nisu isti jer Verilog HDL razlikuje velika i // mala slova. logièka vrednost net-a (veze) je odreðena izlazom hardverskog elementa koji je povezan na taj net.2. Identifikatori se ne mogu poèeti brojevima i znakom dolara. reg broj. znaka donje crte i znaka dolara ($). 6. Sve kljuène reèi se obavezno pišu malim slovima (primer 6-10). tipa net.: keyword) su specijalni identifikatori rezervisani za definisanje jezièkih konstrukcija.5.“ 6. brojeva. Identifikatori Identifikatori (engl.: identifier) su imena objekata u Verilog HDL-u koja omoguãavaju jednoznaèno pozivanje na njih. Nizovi znakova Nizovi znakova (engl.2. input Input. “Ovo je jedan string.: net) koje služi za povezivanje hardverskih elemenata.: string) su skupovi karaktera koji se nalazi izmeðu dva navodnika. ne može se prostirati u više linija (primer 6-9).1.1. . Verilog HDL razlikuje mala i velika slova u identifikatorima. Èvorovi. 6.6. Tipovi podataka i tipovi nosioca podataka Ovo poglavlje je posveãeno tipovima podataka koji se koriste u jeziku Verilog. Vrednosti 0 1 x z Stanja Logièka nula Logièka jedinica Nepoznato stanje Stanje visoke impedanse Tabela 6-1 : Logièke vrednosti koje Verilog HDL podržava.1. broj je identifikator // input je kljuèna reè.

Podrazumevana vrednost podatka tipa reg je neodreðeno stanje (tj. Za razliku od veze (net). Podaci su redovno velièine jednog bita osim kada se deklarišu kao vektor. Primer 6-11: Deklaracija podataka tipa net pomoãu kljuène reèi wire. wor. end // Nosilac podatka reset pamti dodeljene vrednosti. nije ga preporuèljivo povezati sa izlazom nekog digitalnog kola. // Deklariše se podatak c. Ako je dati nosilac podatka povezana sa izlazom nekog elementa. Nosiocima podataka tipa registar u Verilog HDL-u nisu potrebni takt signali koji sinhronišu promenu stanja. Najèešãe se koristi tip wire. #100 reset = 1’b0. triand. Po dogovoru. . registru nije potreban drajver (izlaz nekog logièkog kola) da bi imao vrednost razlièitu od stanja visoke impedanse. Pojam registra u Verilog HDL-u oznaèava nosilac podatka koji pamti vrednost koja je njemu dodeljena u nekom ranijem momentu. tri. njegova vrednost postaje logièka vrednost izlaza datog elementa. Ne treba mešati pojam registra u Verilog HDL-u sa hardverskim registrima sastavljenim od flip-flop-ova koji dobijaju nove vrednosti na rastuãoj ili na opadajuãoj ivici takt signala. trior. Registri pamte svoje sadržaje sve dok se ne zamene novim vrednostima. // Jezièka konstrukcija koja ãe biti objašnjena kasnije. Sadržaj registra u Verilog HDL-u se može promeniti u bilo kom trenutku putem odgovarajuãe dodele. // Posle 100 vremenskih jedinica reset signal se deaktivira. (Slika 6-2) // Deklarišu se podaci a i b. x). ta vrednost važi sve dok se registru ne dodeli neka konkretna vednost.3. Primer 6-12 prikazuje naèin deklarisanja nosioca podatka tipa reg: Primer 6-12: Deklaracija nosioca podataka tipa registar pomoãu kljuène reèi reg. wand. a b c Nosioci podataka tipa net se najèešãe deklarišu pomoãu kljuène reèi wire (primer 6-11).76 - . Registri Registri su elementi koji služe za pamãenje logièkih vrednosti. dolazi do kolizije logièkih vrednosti jer vrednost podatka d tipa veza treba da je nula. wire d = 1’b0. tipa veza koje su // povezane na ulaz ILI kola.2. U literaturi pojam wire se èesto koristi umesto net. b. wire c. wire a. vrednost nekog podatka tipa wire koji nije povezan na izlaz nekog elementa je jednaka stanju visoke impedanse. trireg itd. initial begin reset = 1’b1. tipa veza koja je // povezana sa izlazom ILI kola. (Slika 6-2) // Podatak d je tipa veza i ima konstantnu // vrednost nula.Projektovanje primenom programabilnih logièkih kola (PLD) Slika 6-2: Primer za nosioce podatka tipa net. Nosioc podatka tipa registar se deklarišu pomoãu kljuène reèi reg. reg reset. 6. Kada je vrednost nekog podatka konstantna kao u sluèaju podatka d. Kada vrednost izlaza datog elementa postaje jedan. Potrebno je napomenuti da veza (net) nije kljuèna reè i predstavlja jednu celu klasu tipa podataka kao što su wire. // Pomoãu reset signala se resetuje neko digitalno kolo. Ostali tipovi podataka se reðe koriste.

Za cele brojeve moguãe je koristiti i deklaraciju reg ali je uobièajeno da se podatak tipa integer koristi za potrebe brojanja. ledA[1:0]. . // Poèetna vrednost podatka brojac je -1. Ako nije navedena širina podatka u bitovima. Ova moguãnost je prikazana u primeru 6-14 nad vektorskim poacima definisanim u prethodnom primeru. podrazumevana vrednost je jedan bit.2. ledB. mem [0:1]. Nosilac podatka tipa reg pamti podatke kao pozitivne cele brojeve.255] mem. // Oznaèava sedmi bit podatka ledB // Dva najmanje znaèajna bita podatka ledA // Sintaksa ledA[0:1] je nelegalna jer najznaèajniji bit // se uvek mora nalaziti na levoj strani opsega. Podrazumevana vrednost podatka real pri deklarisanju je 0. // izlaz je skalarni nosilac podatka tipa veza (net). // 8-bitni vektorski nosilac podatka // dva 16-bitna vektorska nosioca podataka // skalarni nosilac podatka // 256-bitni vektorski nosilac podatka Vektori se deklarišu kao [veãi_broj : manji_broj] ili [manji_broj : veãi_broj].: integer) se koristi nosilac opšte namene registarskog tipa. 3. wire izlaz. Velièinu nosioca podatka tipa real zavisi od raèunara na kome se vrši simulacija. Celi brojevi Kao nosioc podatka za ceo broj (engl. 6. U sluèaju dodele vrednosti nosiocu podatka real nosiocu integer vrši se zaokruživanje na najbliži celi broj.0] ledA. Realni brojevi Realni brojevi su takoðe podaci registarskog tipa u Verilog HDL-u. U gornjem primeru za nosilac podatka ledB najznaèajniji bit je bit 15. initial brojac = -1.6. wire [15. 6. Treba obratiti pažnju da se za odvajanje razlomljenog dela broja u Verilog HDL-u se koristi taèka umesto zareza. reg takt_signal.2. Vektori Nosioci podataka tipa net i reg se mogu deklarisati kao vektorske velièine (širina je veãa od jednog bita).. Deklaracija se vrši pomoãu kljuène reèi real. Moguãe je adresirati jedan bit ili grupu bitova unutar vektorskog podatka.2. reg [0.. dok nosilac podatka tipa integer može da pamti i negativne brojeve. Primer 6-13: Deklaracija vektora. integer brojac. // Nosilac podatka brojac je tipa integer.5.0] led_indikator.. Levi broj u uglastoj zagradi uvek predstavlja bit nejveãe težine u vektoru. Podrazumevana širina podatka integer zavisi od širine reèi raèunara na kome se vrši simulacija. Za njihovu deklaraciju se koristi kljuèna reè integer (primer 6-15).14) ili u eksponencijalnom obliku (tj.4. wire [7.Projektovanje primenom programabilnih logièkih kola (PLD) 6.77 - . U tom sluèaju podatka je skalarna velièina (primer 6-13). 3e2 = 300) (primer 6-16). ledB [7]. Primer 6-14: Adresiranje pojedinaènih ili grupe bitova iz nekog vektora. Vrednosti podatka real se mogu zadati u decimalnom obliku (tj. Primer 6-15: Deklaracija podataka tipa integer. minimalna širina je 32 bita. // Dva najviše znaèajna bita podatka mem. dok za podatak mem najznaèajniji biti je bit 0.

Projektovanje primenom programabilnih logièkih kola (PLD)
Primer 6-16: Deklaracija i korišãenje nosica podataka tipa real. real alfa; initial begin alfa = 4e10; alfa = 5.31; end integer i; i = alfa; // Podatak alfa je tipa real. // Nosiocu podatka alfa se dodeljuje broj u eksponencijalnom // obliku. // Podatak i je definisan kao integer. // Nosioc podatka i poprima vrednost 5 ( 5.31 je zaokružen // na najbliži ceo broj).

6.2.7. Nizovi Verilog HDL podržava graðenje 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 višedimenzionalni nizovi. Deklaracija nizova se vrši u sledeãoj formi: <ime_niza>[veãi_broj : manji_broj] ili <ime_niza>[manji_broj : veãi_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]; // Niz od 8 podataka tipa integer. // Niz od 32 1-bitnih podataka tipa reg. // Niz od 8 port-ova. Svaki port je 4-bitni. // Ilegalna deklaracija. Verilog HDL ne podržava // višedimenzionalne nizove. // Oznaèava èetvrti element niza brojevi. // Peti element niza port.

Potrebno je napomenuti da se ne smeju mešati pojmovi vektor i niz. Vektor je jedan podatak širok n-bita, dok je niz skup više elemenata širokih 1-bit ili n-bita. 6.2.8. Memorije U savremenom digitalnom projektovanju pomoãu PLD-ova èesto je potrebno ostvariti registre i memorijske blokove, (RAM, ROM). Memorije se u Verilog HDL-u delarišu kao niz registara (primer 6-18). Elementi memorije se nazivaju reèima (engl.: words). Reèi 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]; // Memorija mem1bit je skup 1024 1-bitnih reèi // Memorija membyte je skup 1024 // 8-bitnih reèi (bajta). // Uèitava se reè velièine jednog bajta // èija je adresa 521 u nizu membyte.

6.2.9. Parametri Verilog HDL omoguãava definisanje konstanti unutar modula pomoãu kljuène reèi parameter (primer 6-19). Parametri se ne mogu koristiti kao podaci.

- 78 -

Projektovanje primenom programabilnih logièkih kola (PLD)
Primer 6-19: Deklarisanje parametara. parameter broj_dioda = 5; // broj_dioda je deklarisan kao konstanta // sa vrednošãu 5.

Poželjno je koristiti parametre u definiciji Verilog HDL modula. Potrebno je izbegavati brojèane vrednosti jer njihovo korišãenje poveãava verovatnoãu greške u HDL opisu. Korišãenje parametara poveãava preglednost i fleksibilinost HDL opisa i olakšava njegovu izmenu. 6.2.10. Sistemske funkcije $stop i $finish Sistemska funkcija $stop privremeno zaustavlja izvršavanje simulaciju koja je definisana u HDL opisu kako bi se omoguãilo pregledanje vrednosti onih signala koji su od interesa. Sintaksa $stop funkcije je prikazana u primeru 6-20.
Primer 6-20: Sistemska funkcija $stop. $stop;

Sistemska funkcija $finish prekida izvršavanje simulacije (primer 6-21).
Primer 6-21: Sistemska funkcija $finish. $finish;

6.2.11. Naredba ’define Direktiva ‘define se koristi za definisanje tekstualnih makro-a koje ãe program prevodilac tumaèiti na odgovarajuãi naèin. Naèin definisanja tekstualnih makroa je prikazan u primeru 6-22.
Primer 6-22: Definisanje tekstualnih makroa. ’<ime_makroa> <tekst_makroa>

Pri definisanju i korišãenju makroa uvek je prisutan znak ’. Svrha tekstualnih makro-a je da ubrza pisanje HDL opisa (dugaèki tekstovi se mogu zameniti kratkim imenima makro-a) i da poveãa njegovu preglednost. Ovo se postiže tako što prevodilac zamenjuje ime_makroa sa tekst_makroa u celom HDL opisu (primer 6-23).
Primer 6-23: Korišãenje makroa. ‘define S $stop; // Simboli ‘S se zamenjuju svugde u programu sa $stop.

‘define WORD_REG reg [31:0] // Sada se može definisati 32-bitni registar u programu kao: // Nosilac podatka reg32 je 32-bitni registar.

‘WORD_REG reg32;

- 79 -

Projektovanje primenom programabilnih logièkih kola (PLD)

7. Moduli i port-ovi
U prethodnim glavama su predstavljeni koncepti hijerarhijskog projektovanja, osnovne jezièke konvencije hardverskog jezika Verilog i raspoloživi tipovi podataka odnosno nosioci podataka. Ova glava detaljno obraðuje ranije uvedeni pojam modula i daje opis i pravila u vezi port-ova.

7.1. Moduli
U glavi 5 je reèeno da je modul gradivni element koji èini osnovu hijerarhijskog projektovanja u jeziku Verilog. Akcenat je bio na definisanju i instanciranju modula a ne na unutrašnjoj strukturi modula. Ova glava detaljno obraðuje unutrašnjost modula. Modul je tekst fajl formiran od ASCII karaktera. Sastoji od nekoliko razlièitih delova kao što je prikazano na slici 7-1. moduleIme_modula, port_lista Deklaracija_portova (ako postoje) Parametri (opciono)
Deklaracija wire, reg i drugih promenljivih Izrazi sa nivoa toka podataka (assign izrazi)

Inicijalizacija modula ni žih nivoa

always and initial blokovi. Svi izrazi sa nivoa ponašanja pripadaju ovim blokovima

Slika 7-1: Sastavni delovi modula.
Task-ovi i funkcije

endmodule Definisanje modula uvek poèinje pomoãu kljuène reèi module. Prvo se zadaju ime modula i lista port-ova, zatim se deklarišu vrste port-ova i uvode parametri. Lista portova i deklaracija portova su prisutni samo ako postoji interakcija modula i okruženja. Telo modula saèinjavaju pet komponenti koje su: deklaracija tipa podataka, izrazi sa nivoa toka podataka, instanciranje modula nižih nivoa, izrazi na nivoau ponašanja i Verilog funkcije. Navedene komponente se mogu nalaziti u bilo kom redosledu unutar tela modula. Definicija modula se uvek završava pomoãu kljuène reèi endmodule. Samo su kljuèna reè module, ime modula i kljuèna reè endmodule obavezni sve ostalo se koristi prema potrebi. Verilog HDL dozvoljava definisanje više modula unutar jednog ASCII fajla i to u bilo kom redosledu. Redosled nema veze sa hijerarhijom. Razni delovi modula ãe se ilustrovati pomoãu primera modula koji definiše RS latch. Slika 7-2 prikazuje logièku š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 može poslužiti za testiranje latch-a.

Slika 7-2:Logièka šema RS latch-a.

- 80 -

~R. Ne postoje ni deklaracije tipova podataka ni izrazi na nivoa toka podataka (assign) i nivoa ponašanja (always ili initial). behavioral level). endmodule Kod prethodnog primera možemo zapaziti nekoliko karakteristiènih detalja: Nisu prisutne sve komponente koje su prikazane na slici 7-1 u definiciji modula RS latch-a. RS_latch f1(q. wire q. // Blok koji pripada nivou ponašanja (engl. reset). input R. reset. služi za // zadavanje pobudnih signala. notq.   Još jednom da se naglasi: sve komponente modula osim kljuène reèi module. // Instanciranje modula nižeg nivoa èija definicija je data gore. end // Obavezna kljuèna reè na kraju modula. nand n1(Q. NotQ.Projektovanje primenom programabilnih logièkih kola (PLD) Primer 7-1: Definisanje modula za RS latch-a i ispitnog modula. set. // Instanciranje modula nižih nivoa. U ovom sluèaju se instanciraju NI kapije koji su // osnovni gradivni elementi (primitive) koji su definsani malim slovima // u Verilog HDL-u. R. // Nema liste port-ova jer je modul Stimulus modul najvišeg nivoa. reg set. ipak je definicija modula korektna. S. NotQ). // Ime modula i lista port-ova module RS_latch(Q.81 - . deklaraciju port-ova. . Modul sa imenom Stimulus za RS latch poseduje deklaraciju tipova podataka i izraze na nivou ponašanja ali nema listu port-ova. ime modula i kljuène reèi endmodule su opcionog karaktera i koriste se po potrebi u bilo kom redosledu. ~S. koji je obavezan endmodule // Ime modula i lista port-ova module Stimulus. notq. nand n2(NotQ. #5 set = 1. initial begin set = 0. NotQ. #5 reset = 0. #5 reset = 1. #5 $finish. Q). // Kraj modula. a nema ni izraza na nivou toka podataka. // Deklaracija tipova podataka. S). reset = 0. // Deklaracija vrste port-ova output Q.

Zato nema ni listu port-ova. izlazni i dvosmerni portovi (tabela 7-1).82 - . Ovo daje veliku fleksibilnost u projektovanju jer se mogu naèiniti promene u konstrukciji modula bez uticaja na naèin komuniciranja sa drugim modulima. Port-ovi Port-ovi su sprežne taèke modula preko kojih se omoguãava komunikaciju sa drugim modulima. Prvi redovi u definiciji navedenih modula su prikazani u primeru 7-2. Jedini naèin da okruženje komunicira sa modulom je preko njegovih port-ova. Primer 7-3: Deklaracija port-ova. Port-ovi se još nazivaju i terminali (engl. Unutrašnja struktura modula je nevidljiva iz okruženja. port-ovi nisu potrebni.2. Modul koji je najviši u hijerarhiji komunicira samo sa softverom koji obraðuje HDL opis.2. a. 7. . Ukoliko ne postoji komunikacija izmeðu okruženja (drugi moduli) i datog modula. što se ne manifestuje u definiciji modula.2. c_out. // Modul sa listom port-ova.1. Tip port-a Tabela 7-1: Vrste portova Opis Ulazni port Izlazni port Bidirekcioni port input output inout Primer 7-3 prikazuje deklaraciju port-ova na primeru 4-bitnog potpunog sabiraèa prikazanog na slici 7-3. Primer 7-2: Lista port-ova. c_in). Top je modul najviše hijerarhije i zbog toga nema ulazne signale i ne gerneriše izlazne signale za eventualne više module u hijerarhiji. Pri deklarisanju zadaje se smer prenosa podataka preko port-a: postoje ulazni. c_out.Projektovanje primenom programabilnih logièkih kola (PLD) 7. U Verilog HDL opisu uloga port-ova je analogna nožicama kod integrisanih kola.2. a. Slika 7-3: I/O portovi Top i full_add_4 modula. module full_add_4(sum. module full_add_4(sum. c_in). output c_out. b. module Top. 7. Na slici 7-3 je prikazana struktura sa modulom Top koji nema listu port-ova i modula full_add_4 koji se instancira u modulu Top i zato ima listu port-ova. b. // Poèetak deklaracije port-ova output [3:0] sum.: terminal). Lista port-ova U definiciji modula lista port-ova je opcionog karaktera. // Modul bez liste port-ova. Deklaracija port-ova Svaki port koji se nalazi u listi port-ova mora biti deklarisan unutar modula.

7.2.3. Mogu se povezati sa nosiocima podataka tipa reg ili net u okruženju. b. reset. modulu DFF(q. tom port-u se automatski dodeljuje nosilac podatka tipa wire. Prvi deo pripada unutrašnjosti modula. d.  Bidirekcioni port-ovi Bidirekcioni port-ovi modula moraju uvek biti tipa net i u okruženju se mogu povezati samo sa nosiocima podataka tipa net. reg q. u kome port-u q pripada podatak tipa reg.Projektovanje primenom programabilnih logièkih kola (PLD) input [3:0] a. izlazni ili bidirekcioni. Funkcija izlaznih port-ova je èesto pamãenje odreðenih vrednosti i u tim situacijama je potrebno da se za njih deklariše tip podatka reg. Pravila povezivanja su (slika 7-4):  Ulazni port-ovi Ulaznim port-ovima modula uvek moraju pripadati podaci tipa net. reset). Prema tome. output ili inout. // podatka koji mu pripada // se posebno deklariše kao podatak tipa reg. dok drugi okruženju. clock. U gornjem primeru svim port-ovima pripadaju nosioci podataka tipa wire. posle deklaracije // mu automatski pripada nosilac podatka tipa wire. input c_in. // Pošto je port q deklarisan kao izlaz. // Kraj deklaracije port-ova //-----------------------------------// Telo modula //-----------------------------------endmodule Ako se neki port deklariše kao ulazni.  Izlazni port-ovi Podaci koji pripadaju izlaznom port-u modula mogu biti tipa reg ili net. input d. //-----------------------------------// Telo modula //-----------------------------------endmodule Ulazni i bidirekcioni (input. output q. // Pošto izlazna vrednost treba da se pamti. Prevodilac HDL opisa javlja grešku ako su neka od ovih pravila prekršena. deklaracija tipa podaatka se izostavlja. Pravila za povezivanje port-ova Port možemo shvatiti kao objekat koji se sastoji iz dva dela koja su meðusobno povezana. Mogu se povezati u okruženju samo sa nosiocima podataka tipa net.83 - . clock. . Primer 7-4: Deklaracija port-ova D flip-flopa. dovoljno ga je deklarisati kljuènim reèima input. Primer 7-4 prikazuje deklaraciju port-ova D flip-flop-a. ako je potreban port tipa wire. Ova analogija ãe olakšati razumevanje pravila koja postoje pri instanciranju modula. 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.

Pri kasnijoj hardverskoj realizaciji takve portove treba izostaviti. // Ispravno: wire [3:0] SUM. C_OUT.   Poklapanje broja bita podataka Verilog HDL omoguãava povezivanje nosioca podataka razlièitih velièina pri povezivanju modul. meðutim nosilac podatka SUM ne može da se deklariše na tip reg unutar modula Top pošto je povezan sa izlaznim port-om instanciranog modula i mora da prati vrednosti koje dolaze odatle. reg [3:0] A.Projektovanje primenom programabilnih logièkih kola (PLD) Slika 7-4: Pravila za povezivanje portova. reg C_IN.84 - . Primer 7-5: Nedozvoljeno povezivanje port-ova. uloga nekih port-ova može biti pružanje informacije u procesu debagovanja i u tom sluèaju ostaju nepovezani. //-----------------------------------endmodule 7. full_add_4 fa0(SUM.2. Nosioc podatka SUM tipa reg u modulu full_add_4 je povezan // sa nosiocem podatka SUM u Top modulu koji je isto tipa reg. module Top. // Instanciranje modula full_add_4 sa jedinstvenim imenom fa0. //-----------------------------------// Tu dolazi HDL opis koji predstavlja ispitni deo modula Top. B. // Instanciranje modula full_add_4 sadrži jedno ilegalno povezivanje // port-ova. Pretpostavimo da se modul full_add_4 instancira u modulu Top prema slici 7-3. C_IN). wire C_OUT. Program prevodilac ãe generisati poruku sa upozorenjem o nepoklapanju velièina povezanih nosioca podataka. Naèin povezivanja port-ova je u veãini sluèajeva pravilan. reg [3:0] SUM. Nepovezani port-ovi Verilog HDL dozvoljava postojanje nepovezanih port-ova (nisu povezani ni sa kojim drugim port-om.4. Ove dve metode se ne mogu mešati. . Npr. Primer 7-5 ilustruje pravila povezivanja port-ova. B. A. Povezivanje port-ova sa signalima iz okruženja Postoje dva naèina povezivanja port-ova navedenih u listi port-ova sa spoljnim okruženjem (port-ovima drugih modula). // Deklaracija nosioca podataka koji povezuju modul Top sa modulom full_add_4.

output [3:0] sum. C_OUT. . full_add_4 fa0(SUM. Primer 7-7 prikazuje povezivanje podataka modula Top sa port-ovima èetvorobitnog potpunog sabiraèa na osnovu njihovih imena.sum(SUM). a.c_in(C_IN). A. reg [3:0] A. output c_out. module full_add_4(sum. Važno je naglasiti da imena nosioca podataka i port-ova koji se povezuju na bazi ureðene liste ne moraju biti identièna. C_IN). b. c_out. C_OUT. U tom sluèaju redosled port-ova je nebitan. reg C_IN. B. wire [3:0] SUM. c_out. HDL opis koji prikazuje povezivanje port-ova modula Top i full_add_4 korišãenjem ureðene liste je prikazan u primeru 7-6. Kao rešenje ovog problema Verilog HDL omoguãava povezivanje port-ova na osnovu njihovih imena.85 - . input [3:0] a. B. b. Podaci iz modula Top: SUM. Ponovo ãemo se poslužiti primerom 4-bitnog potpunog sabiraèa sa slike 7-3. B i C_IN se pojavljuju u istom redosledu pri instanciranju modula full_add_4 kao port-ovi sum.  Primer 7-7: Povezivanje port-ova na osnovu imena za primer 7-6.a(A)).Projektovanje primenom programabilnih logièkih kola (PLD) Povezivanje preko ureðene liste (engl. U primeru 7-6 sum i SUM su dva razlièita identifikatora jer Verilog HDL razlikuje mala i velika slova. full_add_4 fa0(. // Instanciranje modula full_add_4 sa jedinstvenim imenom fa0.c_out(C_OUT).: ordered list) Korišãenje ureðenih lista u povezivanju signala je najintuitivnija metoda za poèetne projektante. c_in). . wire C_OUT. //-----------------------------------endmodule Povezivanje port-ova na osnovu njihovih imena Veliki projekti mogu sadržati module sa 50 i više port-ova. input c_in.  Primer 7-6: Povezivanje korišãenjem ureðene liste. Signali koji se povezuju ovom metodom se navode u istom redosledu i u instanciranju modula i u definiciji modula. b i c_in u listi port-ova pri definisanju tog modula. //-----------------------------------// Tu dolazi HDL opis koji predstavlja ispitni deo modula Top. . // Podaci se povezuju na osnovu pozicije koju zauzimaju u listi port-ova. A. Pamãenje redosleda port-ova pri definisanju modula u takvom sluèaju je nepraktièno i velika je verovatnoãa greške u programiranju.b(B). . . //-----------------------------------// Telo modula //-----------------------------------endmodule module Top. a.

naèin instanciranja modula full_add_4 je prikazan u primeru 7-8. Hijerarhijska struktura projekta je prikazana na slici 7-5. Instanca f1 instancira n1 i n2 ILI kola. Stimulus. Proces kreiranja hijerarhijskih imena ãe se prikazati za sluèaj RS latch-a iz primera 7-1.q Stimulus.f1. U toku projektovanja svakoj instanci modula i nosiocu podatka treba dodeliti identifikator (ime).a(A)).: path) izmeðu poèetne taèke i datog identifikatora u hijerarhiji projekta. Hijerarhijska imena U glavi 5 je objašnjen koncept hijerarhijskog projektovanja kojeg podržava Verilog HDL.sum(SUM). Dobijena struktura omoguãava dodeljivanje jedinstvenog (hijerarhijskog) imena svakom indentifikatoru. Stimulus modul instancira f1 koji je modul tipa RS_latch.f1.n2 . .reset Stimulus. Primer 7-5: Hijerarhijska imena.notq Stimulus. notq. Za ovu simulaciju modul na vrhu hijerarhije je modul Stimulus. Kada je u gornjem primeru port c_out nepotreban.Projektovanje primenom programabilnih logièkih kola (PLD) Važno je napomenuti da se ne moraju navesti svi port-ovi kada se koristi povezivanje port-ova na osnovu njihovih imena.b(B). R i S su nosioci podataka u instanci f1.set Stimulus.f1. Hijerarhijsko ime je niz identifikatora razdvojenih taèkom (“. Ime se formira tako da se obezbedi moguãnost adresiranja identifikatora sa bilo kog mesta u projektu navoðenjem hijerarhijskog imena.Q Stimulus.f1. Primer 7-8: Nepotpuno povezivanje port-ova na osnovu imena za primer 7-6 ako je port c_out nepotreban. Port-ovi koji su nepotrebni u datoj primeni se mogu izostaviti pri povezivanju.”). full_add_4 fa0(.R Stimulus. reset i set. Pri kreiranja hijerarhijskog imena poèetna taèka je modul najvišeg nivoa. .f1. Hijerarhijsko ime identifikatora opisuje taènu putanju (engl. U primeru 7-9 su prikazana hijerarhijska imena koja se mogu napisati za sliku 7-5.f1 Stimulus. . Slika 7-5:Hijerarhijska struktura formirana za simulaciju RS latch-a. Svaki identifikator poseduje jedinstveno mesto u hijerarhiji projekta. NotQ. Q.n1 Stimulus.3. 7.86 - . Za dobijanje hijerarhijskih imena zapisuju se imena poèetne taèke i svih instanci koje se nalaze na putanji do željenog identifikatora.S Stimulus.f1.c_in(C_IN). Identifikatori koji su definisani u ovom modulu su q. Obratiti pažnju na taèke kojom se razdvajaju imena nivoa u hijerarhiji.NotQ Stimulus.

tipova podataka i strukture modula. i1 i2 and Slika 8-1: Šematski simboli I / ILI logièkih kola definisanih u Verilog HDL-u i imena njihovih modula. Ulazi su imenovani sa i1 i i2 dok je izlaz naznaèen sa out. 8.: primitive. Nivo logièkih kapija je drugi nivo apstrakcije i veãina projekata se izraðuje na ovom ili na višim nivoima apstrakcije. Vrste kapija Verilog HDL podržava projektovanje koje polazi od prostih logièkih kola.1. Spomenuto je da se HDL pisi mogu formirati na èetiri mguãa nivoa. Projektovanje na nivou logièkih kapija je važno pre svega zbog toga što se na tom nivou mogu primeniti mnogi dosadašnji rezultati projektovanja: složenija kola projektovana primenom tradicionalnih SSI i MSI kola se tako najlakše mogu preneti u svet PLD-ova. 6 i 7 su postavljeni temelji projektovanja u Verilog HDL-u razmatranjem pristupa projektovanju.87 - . Sa druge strane projektovanje na nivou logièkih kapija je najbliže projektantima sa osnovnim znanjem iz tradicionalne digitalne elektronike jer postoji korespondencija jedan na prema jedan izmeðu logièke šeme i Verilog HDL opisa digitalnog kola. Logièka kola su prisutna u hardverskom jeziku kao predefinisani osnovni elementi (engl. 8.1. Imena definisanih modula za I i ILI logièka kola u Verilog HDL-u su prikazana u tabeli 81.Projektovanje primenom programabilnih logièkih kola (PLD) 8. I i ILI kola I i ILI kola imaju jedan jednobitni (skalarni) izlaz i više jednobitnih (skalarnih) ulaza. Postoje dve klase osnovnih elemenata (logièkih kola):  I i ILI kola. Ta imena se uvek navode na prikazani naèin kao što je sluèaj i sa kljuènim reèima. out i1 i2 or i1 i2 nor out i1 i2 xor i1 i2 xnor out i1 i2 nand out out out . Princip rada osnovnih logièkih kola u Verilog HDL-u je identièan onim logièkim kolima koja su realizovana kao posebna integrisana kola: posle svake promene vrednosti nekog ulaznog signala se vrši izraèunavanje novog izlaznog logièkog nivoa i njeno postavljanje na izlaz logièkog kola. U ovoj glavi se detaljno razmatra nivo logièkih kapija (engl.: gate level).: switch level) koji je pogodan alat samo za projektante digitalnih komponenti: kašnjenja u kolu se mogu precizno pratiti i može se dobro oceniti efikasnost korišãenja osnovnih elemenata. jezièkih konvencija. HDL opis na nivou logièkih kapija U glavi 5.1. Najniži nivo apstrakcije odnosno prvi nivo je nivo prekidaèa (engl. Prvi port u listi port-ova je izlazni a svi ostali su ulazni port-ovi.  kola za sprezanje. Ime modula and nand or nor xor xnor Funkcija I kolo NI kolo ILI kolo NILI kolo Iskljuèivo ILI kolo Iskljuèivo NILI kolo Tabela 8-1: Imena modula za I i ILI kola definisana u Verilog HDL-u Na slici 8-1 su prikazani šematski simboli razmatranih logièkih kola sa dva ulaza. Jedina razlika je da nije potrebno definisati module osnovnih elemenata jer su njihove definicije veã sadržane u Verilog HDL-u. Ovo je bio razlog za opredeljenje da se u ovom tekstu poèinje sa opisom na nivou logièkih kapija. Njihova primena se vrši instanciranjem isto tako kao bilo kog drugog modula.

IN2). nor nor1(OUT. IN2). U Verilog HDL-u I i ILI logièke kapije mogu imati proizvoljan broj ulaza. i1 and 0 1 x z 0 1 x z 0 0 0 0 0 1 x x 0 x x x 0 x x x nand 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 i2 i2 i1 or 0 1 x z 0 1 x z 0 1 x x 1 1 1 1 x 1 x x x 1 x x nor 0 1 x z i1 0 1 x z 1 0 x x 0 0 0 0 x 0 x x x 0 x x i2 i2 Slika 8-2: Kombinacione tabele dvoulaznih I / ILI logièka kola. IN2). IN1. IN1. IN3. IN3). IN2. Kombinacione tabele za data logièka kola su definisane za dva ulaza i prikazane su na slici 8-2.88 - . IN2). IN2). izlazni port logièke kapije (out) je vezan na nosilac podatka tipa net sa imenom OUT i nosioci podataka istog tipa IN1 i IN2 su prikljuèeni na ulaze logièkih kola i1 i i2. Osma instanca u primeru 8-1 nema ime. IN1. IN2). // Dozvoljen naèin instanciranja logièkih kola Izlazne vrednosti datih logièkih kola na sve moguãe varijacije ulaznih vrednosti se odreðuju na osnovu kombinacionih tabela. // Instanciranje osnovnih logièkih kapija sa imenima and a1(OUT. Mogu se instancirati logièka kola na stotine bez ijednog imena instanci. IN1. IN2. wire OUT. xnor nx1(OUT. Kod svake instance. xor x1(OUT. // Instanciranje NI kola sa tri ulaza nand na1_3inp(OUT. Primer 8-1: Instaciranje I / ILI logièkih kola. IN1. Meðusobno povezivanje izlaza logièkih kola koje je prisutno u datom opisu nije uobièajeno. IN1. or or1(OUT. xor 0 1 x z 0 1 x x 1 0 x x i1 0 1 x z x x x x x x x x xnor 0 1 x z i1 0 1 x z 1 0 x x 0 1 x x x x x x x x x x i2 i2 . IN1. U pimeru 8-1 prvih šest instanci odgovaraju dvoulaznim logièkim kapijama. U sluèaju logièkih kapija takvo instanciranje se takoðe smatra pravilnim. IN1. IN2). sedma instanca je troulazno NI kolo.Projektovanje primenom programabilnih logièkih kola (PLD) Primeri instanciranja logièkih kola koja su definisana u Verilog HDL-u su dati u primeru 8-1. Izlazne vrednosti logièkih kola sa više od dva ulaza se izraèunavaju iterativnim postupkom na osnovu kombinacione tabele za dva ulaza. nand na1(OUT. IN1. // Instanciranje I kola bez imena and (OUT.

Primer 8-2: Instanciranje bafera i invertora.Projektovanje primenom programabilnih logièkih kola (PLD) Kod uobièajenih kombinacionih tabela se redovno navode samo varijacije definisanih ulaznih logièkih nivoa (nula ili jedinica). // Instanciranje invertora bez imena instance not(OUT1. Tabele koje važe u hardverskim jezicima. U gornjim tabelama je dato ponašanje kola i pri neodreðenom logièkom nivou i pri stanju visoke impedanse. Ime modula Tabela 8-2: Imena definisanih modula za kola za sprezanje u Verilog HDL-u. navodi se x (nepoznata. // Instanciranje bafera i invertora sa jednim ulazom i izlazom buf b1(OUT. Logièko kolo na svom izlazu formira logièku nulu ili logièku jedinicu (meðuvrednosti nisu karakteristiène). ako se ne može odrediti. Jedini problem je da se u mnogim situacijama ne zna. in out in out buf not Primer 8-2 prikazuje naèin instanciranja kola za sprezanje u Verilog HDL-u..89 - . Verilog HDL podržava dva tipa kola za sprezanje: bafere (neinvertujuãi) i invertore (invertujuãi). IN). Ime ulaznog port-a je in. IN). OUT2. Naredna razmatranja u ovoj taèki ãe se odnostiti samo na logièka kola sa jednim izlazom. neodreðena vrednost). Funkcija bafer invertor buf not Slika 8-3 prikazuje šematske oznake kola za sprezanje za sluèaj jednog izlaza. a ime izlaznog port-a je out. OUT3. bez obzira na neodreðeno stanje ili stanje visoke impedanse na ulazu. // Instanciranje sa više od jednog izlaza buf b1_3out(OUT1. Primena više izlaza je pogodna kada iz istog kola treba pobuditi više linija. IN).1. u tabelu je upisana 0 ili 1. IN). Zadnji port naveden u listi port-ova je prikljuèen na ulaz a svi ostali na izlaz. Slika 8-3: Šematske oznake i imena modula za neinverujuãe i invertujuãe kolo za sprezanje. . Kola za sprezanje Ova logièka kola imaju jedan skalarni ulaz i jedan ili više skalarnih izlaza. To je raðeno iz razloga što se i pri fizièkoj realizaciji javljaju navedene situacije. 8. not n1(OUT. Imena definisanih bafera u Verilog HDL-u su prikazana u tabeli 8-2. Kombinacione tabele navedenih kola za sprezanje za sluèaj sa jednim izlazom su prikazane na slici 8-4. Ponovo se naglašava da ova logièka kola mogu imati više izlaza ali samo jedan ulaz koji je uvek zadnji u listi port-ova. buf in out 0 1 x z 0 1 x x not in out 0 1 x z 1 0 x x Slika 8-4: Kombinacione tabele kola za sprezanje. OUT2.2. koji od logièkih nivoa ãe se uspostaviti. u maksimalnoj meri prate ono što se dešava pri fizièkoj realizaciji: ako se izlazni logièki nivo može odrediti na bazi ulaza. Ta imena se uvek pišu na isti naèin kao što je sluèaj i kod kljuènih reèi.

signal dozvole je aktivan na logièku jedinicu neinvertujuãi bafer. Ime modula Funkcija bufif1 bufif0 notif1 notif0 neinvertujuãi bafer. in. in. // bez sopstvenog imena Na slici 8-6 su prikazane kombinacione tabele koje definišu ponašanje kola za sprezanje sa tri stanja. drugi je ulaz signala a treãi je kontrolni ulaz.3. in. signal dozvole je aktivan na logièku nulu invertujuãi bafer. U tabelama su uzete u obzir sve moguãe situacije na ulazima (pored logièke 0 i 1 i neodreðeno stanje i stanje visoke impedanse). Ova kola za sprezanje se ponašaju kao obièna kola za sprezanje (taèka 8. signal dozvole je aktivan na logièku jedinicu invertujuãi bafer. // Instanciranje logièkih kola bufif bufif1 b1(out. Postoje èetiri varijante tih kola: njihova imena modula i funkcije su sumirane u tabeli 8-3. . control). // sa sopstvenim imenom notif0 (out.1. I ova imena modula se koriste samo u istovetnoj formi.90 - . control). // sa sopstvenim imenom bufif0 (out.1. signal dozvole je aktivan na logièku nulu Tabela 8-3: Imena modula i funkcije kola za sprezanje sa tri stanja definisana u Verilog HDL-u.2) dok su kontrolni ulazi aktivni. bufif0 in ctrl out in notif0 out ctrl Primer 8-3 prikazuje naèin instanciranja kola za sprezanje sa tri stanja. Šematski simboli kola su prikazani na slici 8-5. control). bufif1 in ctrl out in notif1 out ctrl Slika 8-5: Šematski simboli kola za sprezanje sa tri stanja.2). Radi uprošãenja i ovde se može izostaviti ime pri instanciranju. U suprotnom sluèaju njihovi izlazi su u stanju visoke impedanse. Kola za sprezanje sa tri stanja U Verilog HDL-u postoje i kola za sprezanje sa kontrolnim ulazom isto kao kod hardverskih rešenje (taèka 2.1.Projektovanje primenom programabilnih logièkih kola (PLD) 8. Primer 8-3: Instanciranje logièkih kola bufif i notif. control). in. Prvi port u listi portova je izlaz. // bez sopstvenog imena // Instanciranje logièkih kola notif notif1 n1(out.

Pod kolizijom se podrazumeva situacija kada više izlaza logièkih kola vezanih na zajednièku liniju pokušavaju da ostvare razlièite logièke nivoe. sum: zbir jednobitnih binarnih brojeva a i b. Na taj naèin se izbegava kolizija signala na zajednièkoj liniji. a. b: ulazni jednobitni binarni brojevi.     .2. Ne treba zanemariti ni èinjenicu da se pri koliziji formira naponski nivo koji nije pravilani logièki nivo što može da dovodi do neoèekivanog ponašanja u kolu.1) smo se upoznali sa pojmom jednobitnog polusabiraèa i potpunog sabiraèa i videli smo kako se može izgraditi višebitni sabiraè kaskadnom vezom potpunih sabiraèa. nastaju veliki gubici (zagrevanje) i u nekim situacijama može da doðe i do pregorevanje komponenti. ctrl bufif0 0 1 x z 0 1 x z 0 1 x x z z z z x x x x x x x x notif0 0 1 x z ctrl 0 1 x z 1 0 x x z z z z x x x x x x x x in in Kola za sprezanje sa tri stanja u Verilog HDL-u imaju analognu ulogu kao odgovarajuãa hardverska kola. Primer projektovanja na nivou logièkih kapija: èetvorobitni potpuni sabiraè Ranije (taèka 4. U takvoj situaciji neki izlazi daju a neki primaju preveliku struju. Lista port-ova je veã bila definisana u primeru 7-2. U takvim situacijama signali se prikljuèuju na zajednièku liniju preko kola za sprezanje sa tri stanja od kojih istovremeno uvek samo jedan dobije dozvolu.Projektovanje primenom programabilnih logièkih kola (PLD) ctrl bufif1 0 1 x z 0 1 x z z z z z 0 1 x x x x x x x x x x notif1 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 in in Slika 8-6: Kombinacione tabele kola za sprezanjesa tri stanja definisanih u Verilog HDL-u. 8. Korišãene su sledeãe oznake: c_in (carry input): ulazni bit prenosa. Za projektovanje se koriste iskljuèivo logièka kola. Primeniãemo top-down pristup projektovanju: èetvorobitni sabiraè ãe se rašèlaniti na èetiri jednobitna potpuna sabiraèa. Kombinaciona tabela jednobitnog potpunog sabiraèa je prikazana na slici 8-7. Na kraju projektovanja ãe se formirati ispitni modul kojim ãe se proveriti funkcionalnost èetvorobitnog potpunog sabiraèa. Obièno se koriste u situacijama kada više kola treba da koriste zajednièku liniju za prenos u razlièitim vremenskim intervalima (vremenski multpleks). c_out (carry out): izlazni bit prenosa.91 - . U ovoj taèki ãe se formirati opis èetvorobitnog potpunog sabiraèa na hardverskom jeziku.2.

0 0 1 1 1 1 Logièke jednaèine izlaznih funkcija sum i c_out su: sum  a  b  c_in  c_out  a  b  c_in  a  b  Polazeãi od jednaèina dobija se logièka šema jednobitnog potpunog sabiraèa koja je prikazana na slici 8-8.92 - . Pri instanciranju logièkih kapija instance nemaju imena. a b c1 c_out s1 c2 c_in Slika 8-8: Logièka šema jednobitnog potpunog sabiraèa sum Na osnovu gornje šeme. .Projektovanje primenom programabilnih logièkih kola (PLD) c_in 0 0 a 0 0 1 1 0 0 1 1 b 0 1 0 1 0 1 0 1 sum 0 1 1 0 1 0 0 1 c_out 0 0 0 1 0 1 1 1 Slika 8-7: Kombinaciona tabela jednobitnog potpunog sabiraèa. Nazivi unutrašnjih veza (èvorova) su istovetni kao na logièkoj šemi na slici 8-8. u primeru 8-4 je napisan HDL opis jednobitnog potpunog sabiraèa na nivou logièkih kapija.

Slika 8-9: Logièka šema èetvorobitnog sabiraèa. b. and (c1. a. // Definicija èetvorobitnog sabiraèa output [3:0] sum. c2. a. // deklaracije internih veza wire s1. // Instanciranje logièkih kapija (bez imena instanci) xor (s1. c1. b). Primer 8-5: HDL opis èetvorobitnog sabiraèa. b. s1. output c_out. b. input a. Pored potrebnih deklaracija ovaj modul vrši èetiri instanciranja modula jednobitnog potpunog sabiraèa definisnog u primeru 8-4. a. c1. c_in. b). c_out. c_in). xor (sum. and (c2. endmodule Kaskadnom vezom èetiri jednobitna potpuna sabiraèa nastaje èetvorobitni sabiraè koji je prikazan na slici 8-9. input c_in. c_out. c2). b. // Definicija modula module FullAdder1bit(sum. c_in).93 - . s1. c2. or (c_out. c_in). // Deklaracije port-ova output sum. c3. // Deklaracija port-ova wire c1. c_out.Projektovanje primenom programabilnih logièkih kola (PLD) Primer 8-4: Verilog HDL opis jednobitnog potpunog sabiraèa. Na osnovu logièke šeme je formiran Verilog HDL opis èetvorobitnog sabiraèa dat u primeru 8-5. module FullAdder4_bit(sum. // Deklaracija internih veza (èvorova) // Instanciranja èetiri jednobitna potpuna sabiraèa . a. input [3:0] a. c_in).

A = 4’d2. C_IN = 1’b1. Za simulaciju kašnjenja u realnim digitalnim sistemima. // Instanciranje èetvorobitnog sabiraèa initial begin // Definisanje ulaznih signala za èetvorobitni sabiraè A = 4’d0. B = 4’d9. a[0]. C_OUT. c1. endmodule Potrebno je naglasiti da se koristi više istih imena u listi port-ova za modul jednobitnog potpunog sabiraèa i èetvorobitnog sabiraèa ali se ta imena odnose na razlièite podatke. Potrebno je definisati jedan ispitni modul koji generiše ulazne signale za projekat i prima izlazne signale. c_in). A = 4’d10. FullAdder1bit fa2(sum[2]. module Stimulus. a[1]. Imena definisana unutar nekog modula su nevidljiva van modula osim ako se ne navodi celo hijerarhijsko ime datog podatka. FullAdder1bit fa3(sum[3]. Imena definisana unutar nekog modula su dostupna samo za taj modul zato ne dolazi do zbrke. reg C_IN. A = 4’d3. b[1]. Analizom izlaznih signala ãe projektant ustanoviti da li dati modul funkcioniše pravilno. b[0]. Isto nije bilo potrebno pri instanciranju osnovnih elementa (logièkih kapija) pri definisanju modula jednobitnog potpunog sabiraèa (primer 8-4).94 - . FullAdder1bit fa1(sum[1]. Kada je projekat završen. generisanjem ulaznih i posmatranjem izlaznih signala se mora proveriti funkcionalnost HDL opisa. A. c2. To se mora uzeti u obzir i u hardverskim opisima da bi pri simulaciji i pri kasnijoj realizaciji projekta dobili realne rezultate. c1). 8. wire [3:0] SUM. Kod realnih logièkih kola uvek se javlja kašnjenje promene na izlazu u odnosu na promenu na ulazu. C_IN = 1’b0. . Primer 8-6: Modul Stimulus za ispitivanje èetvorobitnog sabiraèa. c3. B. B = 4’d5. B = 4’d15.Projektovanje primenom programabilnih logièkih kola (PLD) FullAdder1bit fa0(sum[0]. Kašnjenja Logièka kola koja su se koristila u prethodnim primerima su bila bez kašnjenja. B. a[3]. Verilog HDL omoguãava definisanje tri vrste kašnjenja za osnovna logièka kola. B = 4’d4. c3). A = 4’d9. Port sum jednobitnog potpunog sabiraèa je skalarna velièina. reg [3:0] A.3. c2). #5 #5 #5 #5 #5 end endmodule B = 4’d0. a[2]. B = 4’d5. Svakoj instanci modula jednobitnog potpunog sabiraèa se moralo pridružiti jedinstveno ime u procesu instanciranja. wire C_OUT. // Deklaracija tipova podataka za modul Stimulus FullAdder4_bit FA1(SUM. U primeru 8-6 je data definicija ispitnog modula pod imenom Stimulus. b[3]. odnosno sa nultim kašnjenjem. dok port sum èetvorobitnog sabiraèa je vektorska velièina široka èetiri bita. b[2]. c_out. C_IN).

95 - .6) a2(out2. // Za kašnjenje porasta i opadanja su zadate razlièite vrednosti. and #(4.4. fall_value) o1(out2. in1.  Sve tri vrste kašnjenja su zadata i odnose se redom na kašnjenje porasta. in2). // Vreme porasta = 4. vreme opadanja = 4. and #(delay_time) a1(out1. in2). turn_off_value) b1(out3. x ili z tporasta 1 Kašnjenje opadanja Kašnjenje opadanja (engl. Jezièke konstrukcije za zadavanja kašnjenja su prikazane u primeru 8-7. in2). // Svi prelazi imaju jednako kašnjenje koje je odreðeno vrednošãu parametra delay_time. 1.x ili z topadanja 0 Kašnjenje iskljuèivanja Kašnjenje iskljuèivanja (engl. ne pretpostavlja se nikakva konkretna merna jedinica.  Ukoliko ni jedna vrsta kašnjenja nije zadata. // Za kašnjenje porasta. in1.Projektovanje primenom programabilnih logièkih kola (PLD) Kašnjenje porasta Kašnjenje porasta (engl. in. vreme opadanja = 6. Verilog HDL podržava tri naèina zadavanja gore definisanih kašnjenja u logièkim kolima:  Jedno kašnjenje je zadato i ta vrednost se koristi za sve prelaze. odnosno nema kašnjenja. 0. in2). 1 ili x preðe u stanje visoke impedanse (z). x ili z opadne na 0 (slika 8-11). control).  Dva kašnjenja su zadata i odnose se na kašnjenje porasta i opadanja.: turn-off delay) je vreme potrebno izlazu da se njegova logièka vrednost sa 0. or #(rise_value. opadanja i iskljuèivanja su zadate tri razlièite vrednosti.  Slika 8-11: Prikaz vremena kašnjenja kod opadajuãe ivice signala. opadanja i iskljuèivanja. Potrebno je naglasiti da su zadate brojne vrednosti relativne vrednosti. Primer 8-8: Primeri kašnjenja. in1. in1. x ili z vrednosti poraste na 1 (slika 8-10). // Vreme porasta = 3.5) b1(out3. U Verilog HDL-u ne zadaje se posebna vrednost kašnjenja izlaza kada se izlaz menja sa poznate vrednosti (0 ili 1) u nepoznato stanje (x) Softver za prevoðenje odnosno simulaciju automatski uzima minimalnu vrednost od prethodna tri kašnjenja.: fall delay) je vreme potrebno izlazu da se njegova logièka vrednost sa 1.: rise delay) je vreme potrebno izlazu da se njegova logièka vrednost sa 0. // vreme iskljuèivanja = 5 . in1. Primer 8-7: Jezièke konstrukcije za zadavanja kašnjenja. Kašnjenje iskljuèivanja postaje manja vrednost od prethodna dva kašnjenja. and #(rise_val. in2). bufif0 #(3. podrazumevana vrednost je 0. fall_value. U primeru 8-8 su prikazani konkretni sluèajevi za zadavanje kašnjenja.  Slika 8-10: Prikaz vremena kašnjenja kod rastuãe ivice signala. and #(5) a1(out1. // Svi prelazi imaju kašnjenje od 5 // vremenskih jedinica.

. simple_log_circuit a b c e #4 out #5 Slika 8-12: Logièka šema za simple_log_circuit. Smisao pojedinih vrednosti je sledeãi: Minimalno vreme kašnjenja je najkraãe potrebno vreme da se pojavi odziv na izlazu nakon promene ulaza. Primer 8-9 prikazuje naèin zadavanja minimalnih. Tip = 5. i1. Implementacija ovog modula na nivou kapija šematski je prikazana na slici 8-12. Ako se za odreðeno kašnjenja zadaje samo jedna vrednost. Tip = 4. Mininimalne. podrazumeva se da je to tipièna vrednost kašnjenja. Tipièno vreme kašnjenja je oèekivano vreme kašnjenja. Verilog HDL opis modula simple_log_circuit je dat u primeru 8-10. Max = 6.96 - . and #(3:4:5.3. za vreme porasta. 5:6:7) a2(out2. tipiènog i maksimalnog vremena kašnjenja moguãe je proveriti ispravnost rada digitalnih kola bez obzira na to koji konkretan primerak integrisanog kola ãe se koristiti. Max = 5 Min = 4. Tip = 5. Max = 8 // Vremena iskljuèivanja: Min = 3. Pomoãu odgovarajuãeg izbora u simulacionom softveru se odluèuje koja ãe se vrednost kašnjenja koristiti pri simulaciji. in1. // Vremena kašnjenja porasta. tipiène i maksimalne vrednosti kašnjenja.3. // Vremena porasta: Min = 3. in2).1. Max = 6 8. Maksimalno vreme kašnjenja je najduže potrebno vreme izlaza da odgovori na promenu na ulazu. in2). Uvoðenjem minimalnog. in1. Max = 5 // Vremena opadanja: Min = 6. tipiènog i maksilnog kašnjenja umesto jedne jedine konkretne vrednosti npr. Tip = 4. 4:5:6) a3(out3. tipiènih i maksimalnih vrednosti kašnjenja.2. Max = 4 Min = 3. and #(4:5:6) a1(out1. Max = 5 // U sluèaju kada su zadata samo vremena porasta i opadanja. vreme iskljuèivanja se raèuna // kao minimalna vrednost od vremena porasta i opadanja and #(2:3:4. Primer 8-9: Minimalne. Tip = 7.    Verilog HDL omoguãava definisanje minimalnog. // Vremena porasta: // Vremena opadanja: // Vremena iskljuèivanja: Min = 2. Primer za analizu kašnjenja Neka je dat modul simple_log_circuit u kojoj je implementirana logièka funkcija: out  a  b  c . opadanja i iskljuèivanja su jednaka: // Min = 4. 3:4:5. Tip = 4. Tip = 3. tipiène i maksimalne vrednosti kašnjenja Na današnjem nivou tehnološkog razvoja nije moguãe proizvesti dva integrisana kola sa istim karaktreristikama.Projektovanje primenom programabilnih logièkih kola (PLD) 8. Posledica ovog tehnološkog ogranièenja je da kašnjenja integrisanih kola istih tipova variraju unutar odreðenih granica. Izbor se odnosi na sva logièka kola u projektu tako da ãe se recimo simulacija sprovesti sa minimalnim vremenima za sve instance. i2).

// Instanciranje modula simple_log_circuit // Definisanje ulaznih signala za modul simple_log_circuit. Na slici 8-13 su prikazani vremenski dijagrami dobijeni simulacijom. b). A = 1’b1. module stimulus. // Interne veze // Instanciranje potrebnih primitiva za realizaciju date kombinacione mreže and #(5) a1(e. C = 1’b0. // Kašnjenje je 5 vremenskih jedinica or #(4) o1(out. B = 1’b0. a. A = 1’b1. Primer 8-11: Ispitni modul stimulus za testiranje simple_log_circuit-a. B = 1’b1. b. wire OUT.Projektovanje primenom programabilnih logièkih kola (PLD) Primer 8-10: Definicija modula simple_log_circuit u hardverskom jeziku.97 - . // Deklaracija internih nosioca podataka simple_log_circuit slc1(OUT. a. input a. // Primenjene jezièke konstrukcije ãe se objasniti kasnije. c. B. . module simple_log_circuit(out. c). C. B. $finish. e. C = 1’b1. C). // Simulacija se završava posle 40 vremenskih jedinica initial begin #10 #10 #20 end endmodule A = 1’b0. b. // Deklaracija port-ova wire e. c). output out. Logièke vrednosti signala e i OUT se ne mogu znati pre isteka odgovarajuãih kašnjenja zato je simulator na poèetku dijagrama stavio znakove x. B = 1’b0. reg A. C = 1’b0. // Kašnjenje je 4 vremenskih jedinica endmodule Ovaj modul se testira ispitnim modulom sa imenom stimulus koji je prikazan u primeru 811. A.

Projektovanje primenom programabilnih logièkih kola (PLD) A B C e xxxx OUT x x x x x x x x 0 5 9 10 14 15 20 25 29 40 Slika 8-13: Vremeski dijagram dobijen simulacijom modula simple_log_circuit .98 - .

Ovaj pristup omoguãava projektantima da se koncentrišu na optimizaciju toka podataka u digitalnim kolima umjesto da gube vreme oko hardverskih detalja. Odgovarajuãa jezièka konstrukcija je prikazana u primeru 9-1. Na levoj strani kljuène reèi znaka jednakosti mora biti skalarni ili vektorski podatak tipa net ili pridruženi skalarni ili vektorski podatak tipa net. Više nijedna kompanija ne može sebi priuštiti luksuz da resurse svojih inženjera troši na projektovanje na nivou logièkih kapija.: Register Transfer Level) koji se sreãe u literaturi se odnosi na HDL opise koji modeliraju i na nivou toka podataka i na nivou ponašanja. HDL opis na nivou toka podataka Projektovanje na nivou logièkih kapija je svrsishodno kada je reè o jednostavnim digitalnim kolima èija logièka šema je poznata od ranije ili se lako razvije. Za maksimalnu fleksibilnost u procesu projektovanja. Izraz za kontinualnu dodelu se poèinje kljuènom reèi assign. Operacija pridruživanja je objašnjena u taèki 9.99 - .1.Projektovanje primenom programabilnih logièkih kola (PLD) 9.4. Logièka sinteza je postala popularna zato što su na raspolaganju moãni softveri za sintezu i od strane proizvoðaèa PLD-ova i od strane nezavisnih softverskih kuãa. U takvoj prilici za projektanta je najjedostavnije da instancira i poveže potrebna logièka kola u okviru jednog Verilog HDL opisa na nivou logièkih kapija. . projektanti obièno koriste HDL opise koji kombinuju nivo toka podataka i nivo ponašanja. Ovaj proces se naziva (automatizovanom) logièkom sintezom. Primer 9-1: Jezièka konstrukcija za kontinualnu dodelu vrednosti. Kontinualna dodela Kontinualna dodela je osnovni naèin dodele neke vrednosti nosiocu podatka tipa net na nivou toka podataka. I danas se za realizaciju digitalnih kola koriste logièke kapije ali formiranje konkretnih kola vrše softveri za projektovanje na osnovu HDL opisa. U Verilog HDL-u nivo toka podataka obezbeðuje jedan viši nivo apstrakcije gde je akcenat na toku i naèinu obrade podataka umesto da se bavimo instanciranjem i povezivanjem logièkih kapija. Pri svakoj promeni vrednosti operanada na desnoj strani znaka jednakosti odmah se izraèunava nova vrednost izraza koja se odmah ili nakon propisanog kašnjenja dodeljuje nosiocu podatka na levoj strani izraza. U ovom smislu kontinualna dodela zamenjuje logièke kapije u HDL opisima ali se pri tome poveãava nivo apstrakcije. assign <kašnjenje> <izraz>. Vrednost <kašnjenje> u izrazima kontinualne dodele je opcionalnog karaktera i služi za zadavanje vremenskog intervala izmeðu promene vrednosti desne strane assign izraza i pojave te promene na levoj strani izraza. omoguãava opis kombinacionog kola bilo koje složenosti. Kod kompleksnijih projekata u kojima je broj logièkih kola velik.8. Rešenje je da se proces projektovanja podigne na jedan viši nivo apstrakcije da bi se projektanti mogli koncentrisati samo na traženu obradu podataka i da se ne optereãuju sa fizièkom implementaciju pomoãu logièkih kola. Kontinualne dodele imaju sledeãe karakteristike:  Izraz za definisanje dodele sadrži znak jednakosti. proces projektovanja na nivou logièkih kapija postaje neefikasan. Na levoj strani znaka jednakosti ne može da stoji podatak tipa reg. Izraz RTL (engl. 9. Brzo poveãavanje broja logièkih kapija koji se mogu integrisati u jedno programabilno kolo je dovelo do sve veãe popularnosti projektovanja na nivou toka podataka.  Kontinualne dodele su uvek aktivne.

Verilog HDL omoguãava jedan kraãi naèin opisa gde se te dve operacije vrše u jednom koraku.2. // U izrazu kontinualne dodele je prisutna operacija pridruživanja skalarne // i vektorske promenlive tipa net assign {c_out. Kašnjenja u izrazima kontinualne dodele se mogu deklarisati na tri naèina:  kašnjenja u regularnim dodelama (definisani kljuènom reèi assign). 9. net ili Verilog HDL funkcijski pozivi (ovo poslednje nije obraðeno u ovom opisu). U ovom momentu je važno samo obratiti pažnju na oblik assign izraza. Implicitna kontinualna dodela Umesto posebne deklaracije nosioca podatka tipa net i pisanja izraza za kontinualnu dodelu. // Isti efekat se postiže implicitnom kontinualnom dodelom.1.2. // prvo se deklariše nosioc podatka. in1 i in2 su tipa net. Primer 9-2: Primeri kontinualne dodele.1. //Regularan naèin pisanja kontinualne dodele.4. Primeri kontinualnih dodela su prikazani u primeru 9-2. wire out. |. U primeru 9-3 je prikazan regularan i implicitni naèin pisanja kontinualnih dodela. {. Kašnjenja u dodelama Vrednostima kašnjenja se odreðuje potrebno vreme da se promena u vrednosti operanada na desnoj strani jednaèine odrazi na vrednost operanda na levoj strani jednaèine. assign addr[15:0] = addr1_bits[15:0] ^ addr2_bits[15:0]. Nosioci podataka tipa reg i net mogu biti skalarnog ili vektorsk0g karaktera. 9. Kašnjenja u regularnim dodelama Prvi naèin zadavanje kašnjenja se koristi u regularnim izrazima za kontinualnu dodelu. } i + su objašnjeni u poglavlju 9. // Kontinualna dodela vektorskim podacima tipa net // addr1_bits i addr2_bits su 16-bitni vektorski podaci tipa reg. Primer 9-4 (realizuje I logiãku funkciju) prikazuje naèin zadavanja kašnjenja u regularnoj dodeli.  kašnjenja definisana pri deklaraciji nosioca podataka tipa net. Operatori kao što su &. . U sledeãoj taèki je predstavljen kraãi naèin zapisa kontinualne dodele nosiocima podataka tipa net.100 - . Vrednost kašnjenja se stavlja posle kljuène reèi assign. sum[3:0]} = a[3:0] + b[3:0] + c_in. Podaci out. Primer 9-3: Regularan i implicitni naèin kontinualne dodele. // Kontinualna dodela. assign out = in1 & in2. assign out = in1 + in2. 9.Projektovanje primenom programabilnih logièkih kola (PLD)  Operandi na desnoj strani izraza mogu biti podaci tipa reg.  kašnjenja kod implicitnih dodela. wire out = in1 + in2. ^.1.

1. što je objašnjeno u poglavlju 8. sa kašnjenjem od 10 vremenskih jedinica. wire out. izlazni signal out bi trebao da ima vrednost jedan u intervalu vremena od 70 do 75. u skladu sa kašnjenjem definisanim u primeru 9-4. . Zadavanje kašnjenja u implicitnoj dodeli je prikazano u primeru 9-5: Primer 9-5: Primer zadavanja kašnjenja u implicitnoj dodeli. Slièna pojava je bila prisutna i pri opisu na nivou logièkih kapija. ali se ni to ne dešava jer istovremeno trajanje jedinica je kraãe od kašnjenja.2. logièke vrednosti na oba nosioca podatka na desnoj strani znaka jednakosti u vremenskom intervalu od 60 do 65 vremenskih jedinica su jedinice. Na poèetnom delu dijagrama out (pre isteka kašnjenja) naznaèene su nepoznate vrednosti (x) jer u tom intervalu se ne može odrediti leva strana izraza (smatra se da logièko stanje zavisi od dogaðanja pre posmatranog intervala). Ponašanje da logièka stanja kratkog trajanja u kontinualnim dodelama ne uzrokuju promene na levoj strani assign izraza zove se inercijalno kašnjenje. 9. in2 ima vrednost nula u intervalu od 30 do 35. U primeru 9-4 rezultat promene u vrednostima signala in1 i in2 se pojavljuje na izlazu logièkog I kola sa kašnjenjem od 10 vremenskih jedinica.1) da Verilog HDL omoguãava definisanje implicitne kontinualne dodele pri deklaraciji tipa podatka. in1 in2 out 0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 Slika 9-1: Vremenski dijagram signala na nosiocima podataka iz primera 9-4     Vremenski dijagrami prikazuju sledeãe: U vremenskom trenutku 10 oba ulaza su na jedinici. assign #10 out = in1 & in2. Na slici 9-1 su prikazani vremenski dijagrami signala na nosiocima podataka koji su korišãeni u primeru 9-4. wire #10 out = in1 & in2. assign #10 out = in1 & in2. dok se jedinica na izlazu pojavljuje na izlazu tek u trenutku 20.3. // Gornji izraz ima isti efekat kao posebna deklaracija tipa podatka i // pisanje izraza za kontinualnu dodelu sa kašnjenjem.2.101 - . Kašnjenja u implicitnim kontinualnim dodelama Spomenuto je (taèka 9. ali se to ne dešava jer je trajanje logièke nule suviše kratko (kraãe od kašnjenja koje je definisano kao 10 vremenskih jedinica). Kao posledica. Istovremeno se mogu zadati i kašnjenja. koja bi trebala vrednost izlaza promeniti u nulu u vremenskom intervalu izmeðu 40 i 45.Projektovanje primenom programabilnih logièkih kola (PLD) Primer 9-4: Zadavanje kašnjenja u regularnoj dodeli.

deo vektorske velièine (koji može sadržati jedan ili više bitova) ili funkcijski poziv (u ovom opisu.2.3. final_count. final_count = count + 1. c = a – b.3.102 - . Primer 9-7: Tri izraza koji kombinuju razne operatore i operande. // a i b su operandi tipa real reg [7:0] reg1.3.Projektovanje primenom programabilnih logièkih kola (PLD) 9. Operandi Uopšteno. // reg1[3:0] i reg2[3:0] su operandi koji // predstavljaju deo vektorskih // podataka reg1 i reg2 . net. kao što je veã napomenuto. operatora i operanada koji se koriste u izrazima kontinualne dodele. Primer 9-8: Korišãenje raznih tipova operanada. Ako je kašnjenje definisano za podatak tipa net. Izrazi. vektor. realan broj (real). wire out. 9. Neke konstrukcije prihvataju samo odreðene tipove operanada. U primeru 9-8 se prikazuju naèini korišãenja operanada. assign out = in1 & in2. // Gornji izrazi imaju isti efekat kao i sledeãi: Posle kratkog upoznavanja sa osnovnim pravilima za kontinualnu dodelu i kašnjenja. a^b addr1[7:4] + addr2[7:4] in1 | in2 9.3. wire #10 out. reg_out = reg1 [3:0] ^ reg2[3:0]. ceo broj (integer). Primer 9-6: Kašnjenje definisano pri deklaraciji podatka tipa net. Kašnjenja definisana pri deklaraciji nosioca podataka tipa net Kašnjenje je moguãe definisati za podatak tipa net. onda se svaka promena prenosi na nosilac podatka tipa net sa datom vrednošãu kašnjenja. bez upotrebe izraza za kontinualnu dodelu. operandi i operatori Nivo toka podataka opisuje digitalno kolo korišãenjem matematièkih izraza umesto instanciranja logièkih kola. reg [3:0] reg_out. slede pravila u vezi izraza. Ti matematièki izrazi i operatori i operandi u njima èine osnovu modeliranja na nivou toka podataka. integer count. // count je operand tipa integer real a. reg.2. b.1. 9. operandi mogu biti podaci bilo kog tipa definisanih u poglavlju 6. U primeru 9-6 je prikazana odgovarajuãa jezièka konstrukcija za kašnjenja koja su definisana pri deklaraciji tipa nosioca podatka. c. Ovaj naèin definisanja kašnjenja se može koristiti i pri opisu na nivou logièkih kapija. funkcijski pozivi ne predstavljaju predmet razmatranja).2. Izrazi Izrazi su kostrukcije koje kombinuju operatore i operande radi dobijanja željene obrade podataka (primer 9-7). reg2. assign #10 out = in1 & in2. Operand može biti konstanta.

4. 9. Tipovi operatora su predstavljeni u poglavlju 9. Operatori Nad operandima se primenjuju razne operacije s ciljem dobijanja željenih rezultata.103 - .3. pridruživaèki ili uslovni. U Verilog HDL-u je na raspolaganju veliki broj operatora (primer 9-9). Neki operatori su slièni operatorima korišãenih u C programskom jeziku. // >> je binarni operator nad operandima C i 2. Svaki operator ima jedinstveni simbol. logièki. redukcioni. pomeraèki. Tip operatora Simbol operatora Aritmetièki * / + % Logièki ! && || Relacioni > < >= <= Jednakosti == != === != = Bit ~ & | ^ ^~ ili ~^ Redukcioni & ~& | ~| ^ ^~ ili ~^ Pomeraèki >> << Pridruživanje {} Umnožavanje {{ }} Uslovni ?: Operacija Broj operanada množenje 2 deljenje 2 sabiranje 2 oduzimanje 2 deljenje po modulu 2 logièka negacija 1 logièko I 2 logièko ILI 2 veãe od 2 manje od 2 veãe ili jednako 2 manje ili jednako 2 jednakost 2 nejednakost 2 case jednakost 2 case nejednakost 2 bit negacija 1 bit I 2 bit ILI 2 bit EX-ILI 2 bit EX-NILI 2 redukcioni I 1 redukcioni NI 1 redukcioni ILI 1 redukcioni NILI 1 redukcioni EX-ILI 1 redukcioni EX-NILI 1 pomeranje udesno 2 pomeranje ulevo 2 pridruživanje bilo koji broj umnožavanje bilo koji broj uslovni 3 Tabela 9-1: Lista svih operatora grupisanih po kategorijama . d1 && d2 !a[0] C >> 2 // && je binarni operator nad operandima d1 i d2.3. Opreacije se definišu pomoãu operatora.Projektovanje primenom programabilnih logièkih kola (PLD) 9. Operatori mogu biti aritmetièki.4. Tabela 9-1 prikazuje sve operatore grupisane po kategorijama. relacioni. Tipovi operatora Verilog HDL pruža moguãnost za korišãenje velikog broja razlièitih tipova operatora. Primer 9-9: Primeri korišãenja operatora. // ! je unarni operator nad operandom a[0].

-7 % 2 // Rezultat je -1 jer se uzima predznak prvog operanda.1. Binarni operatori Binarni aritmetièki operatori su: množenje ( * ). B = 4’b0100. E = 4. Unarni operatori + i – imaju veãi prioritet od binarnih operatora + i –. // Izbegavati oblik <velièina>’<osnova_brojnog_sistema><broj> za predstavljanje neg. U tom sluèaju se koriste za zadavanje pozitivnog ili negativnog predznaka operanda. 7 % -2 // Rezultat je 1 iz istog razloga. sum = in1 + in2. -4 +5 // Minus 4 // Plus 5 Korišãenje negativnih brojeva se preporuèuje samo u tom sluèaju kada je tip nosioca podatka integer ili real. A = 4’b0011. // Rezultat sabiranja ãe biti: 4’bx // Operator deljenja po modulu daje ostatak pri deljenju dva broja. D = 6. 16 % 4 // Rezultat je 0. // Deljenje D sa E. Rezultat je 4’b0001.  Primer 9-10: Primeri korišãenja binarnih aritmetièkih operatora. Primer 9-12: Primer neoèekivanog rezultata pri deljenju negativnog broja datog u obliku <velièina>’<osnova_brojnog_sistema><broj>.104 - .Projektovanje primenom programabilnih logièkih kola (PLD) 9. Kod brojeva koji su dati u obliku <velièina>’<osnova_brojnog_sistema> <broj> bi trebalo izbegavati korišãenje negativnog predznaka jer takve brojeve Verilog HDL prevodi u oblik drugog komplementa i rezultat može biti neoèekivan (primer 9-12). Ostatak deljenja se odbacuje. dobija se oèekivani rezultat. -10 / 5 // Rezultat je -2. // Oduzimanje A od B. 13 % 3 // Rezultat je 1. Rezultat je 4’b0111. deljenje ( / ). brojeva -‘d10 / 5 // Rezultat je (drugi komplement od 10) / 5 = (232 – 10) / 5 . Unarni operatori Operatori + i – mogu biti i unarni operatori (primer 9-11). // Ako je vrednost nekog bita operanda nepoznata (x). // Za predstavljanje negativnih brojeva se preporuèuje korišãenje // nosioca podatka tipa integer ili real. onda je i rezultat celog izraza nepoznat (x). A*B D/E A+B B–A in1 = 4’b101x. Binarni operatori se primenjuju nad dva operanda. // Sabiranje A i B.4. sabiranje (+). Aritmetièki operatori Aritmetièke operacije se mogu odnositi na jedan operand (unarne operacije) ili na dva operanda (binarne operacije). U primeru 9-10 je prikazan naèin primene binarnih operatora.  Primer 9-11: Primeri unarnih aritmetièkih operatora. // Podatak A i B su vektorske velièine tipa reg // Podaci D i E su tipa integer // Množenje A i B. // Ako se koristi nosioc podatka integer ili real. Rezultat je 1. Rezultat je 4’b1100. in2 = 4’b1011. oduzimanje (-) i deljenje po modulu ( % ).

105 - . veãe ili jednako (znak >=). Relacioni operatori Relacione operacije su: veãe od ( znak > ). rezultat relacione operacije je x. 9.4.4. Korišãenje zagrada za grupisanje logièkih izraza je preporuèljivo kako bi se poveãala preglednost HDL opisa. A && B // Neodreðeni bitovi u operandima. A > B. X = 4’b1010. Z = 4’b1xxx.2. Operatori && i || povezuju dva operanda (binarni operatori).  U logièkim operacijama operandi mogu biti nosioci podataka i izrazi. Logièki operatori Logièki operatori koji se mogu koristiti u Verilog HDL-u su: logièko I (znak &&). U primeru 9-14 su prikazani naèini primene relacionih operatora. Y < Z. // Rezultat je: NE( 1 ) = 0. njegov logièki ekvivalent je x (neodreðeno). // Rezultat je neoèekivan i pogrešan. A && B A || B !A !B // Prosti sluèajevi. . // Rezulat je: ( x && 1 ) = x. njegov logièki ekvivalent je 1 (taèan). // Rezultat je 0. 9. Primer 9-13: Primeri korišãenja logièkih operatora. Ukoliko jedan od operanada u iskazu sadrži x ili z vrednost. odnosno 0 ako je iskaz netaèan. A = 3. A = 4. manje ili jednako (znak <= ). (a == 1 ) && ( b == 3 ) // Rezultat je 1 ako su oba uslova taèna. // Rezultat je 0 ako je barem jedan od ta dva uslova netaèan. B = 2. Ovi operatori funkcionišu na identièan naèin kao njihovi odgovarajuãi operatori u programskom jeziku C. // Rezultat je 0. njegov logièki ekvivalent je 0 (netaèan). A <= B. Rad logièkih operatora odreðuju sledeãa pravila:  Rezultat logièkih operacija je uvek velièine jedan bit i može biti 0 (netaèan). Y <= X. // Rezultat je: ( 1 && 0 ) = 0. Rezultat relacione operacije je 1 ako je iskaz taèan. Operator ! se odnosi na jedan operand (unarni operator). // Rezultat je 1. manje od (znak < ). 1 (taèan) ili x (neodreðen). Y = 4’b1011.  Ako je vrednost operanda razlièita od nule. // Primena izraza kao operanda. Ako je vrednost operanda jednaka nuli. Primer 9-14: Primeri korišãenja relacionih operacija. A = 2’b0x.Projektovanje primenom programabilnih logièkih kola (PLD) // gde 32 je podrazumevana širina reèi datog raèunara. Ako je vrednost jednog ili više bita kod nekog operanda x ili z. B = 2’b10. // Rezultat je: NE( 0 ) = 1. // Rezultat je: (1 || 0 ) = 1. B = 0.3. ILI ( znak || ) i NE (znak ! ) operatori (primer 9-13). Druga prednost korišãenja zagrada je da se ne mora paziti na prioritete korišãenih operatora. // Rezultat je x.

Projektovanje primenom programabilnih logièkih kola (PLD)
9.4.4. Operatori jednakosti U ovu grupu spadaju operacije logièke jednakosti ( znak = = ), logièke nejednakosti (znak !=), case jednakosti (znak = = = ) i case nejednakosti (znak != =). Opreacije jednakosti kao rezultat daju 1 ako je iskaz taèan, odnosno 0 ako je netaèan (tabela 9-2). Ovi operatori uporeðuju operande bit po bit. Ako su operandi razlièitih velièina, dopuni se operand manje velièine sa nulama sa strane veãe težine pre uporeðivanja. Izrazi a==b Opisi Moguãe logièke vrednosti 0, 1, x 0, 1, x 0, 1 0, 1

a jednako b, rezultat je neodreðen ako je x ili z prisutan meðu bitovima a ili b a != b a nije jednako b, rezultat je neodreðen ako je x ili z prisutan meðu bitovima a ili b a = = = a jednako b, pri ispitivanj jednakosti se razmatraju i vrednosti x ili z b u bitovima a i b a != = b a nije jednako b, pri ispitivanj jednakosti se razmatraju i vrednosti x ili z u bitovima a i b
Tabela 9-2: Opisi operacija jednakosti.

Važno je naglasiti razliku izmeðu operatora logièke jednakosti ( = =, != ) i case jednakosti ( = = =, != = ) (primer 9-15). Operatori logièke jednakosti (= =, != ) kao rezultat proveravanja jednakosti dva operanda daju x, ako barem jedan od dva operanda sadrži x ili z. Za razliku od toga, operatori case jednakosti ( = = =, != = ) proveravaju oba operanda bit po bit, ukljuèujuãi i vrednosti x i z. Operatori case jednakosti nikada ne daju rezultat x.
Primer 9-15: Primeri korišãenja operacija jednakosti. A = 4; B = 3; X = 4’B1010; Y = 4’b1101; Z = 4’b1xxz; M = 4’b1xxz; N = 4’b1xxx; 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 ukljuèujuãi x i z. // Rezultat je 0 jer bitovi sa najmanjom binarnom težinom se razlikuju. // Rezultat je 1.

9.4.5. Operatori bit po bit Operacije nad bitovima su: negacija (znak ~ ), I ( znak & ), ILI (znak | ), EX-ILI (znak ^ ), EX-NILI (znak ^~ ili ~^ ). Operatori bit po bit izvršavaju bit po bit operacije nad jednim ili dva operanda. Pri negaciji, pojedinaèno se negiraju bitovi operanda. U preostalim sluèajevima aktuelna operacija se izvršava redom nad pojedinaènim bitovima prvog operanda i njemu odgovarajuãim bitom drugog operanda. Ako su dva operanda razlièitih velièina, manji ãe se proširiti nulama na velièinu veãeg operanda. U primeru 9-16 su prikazane primene operatora tipa bit po bit.
Primer 9-16: Primeri upotrebe operacija bit po bit. X = 4’b1010; ~X X&Y Y = 4’b1101 ; Z = 4’b10x1;

// Negacija bit po bit. Rezultat je 4’b0101. // I operacija bit po bit. Rezultat je 4’b1000.

- 106 -

Projektovanje primenom programabilnih logièkih kola (PLD)
X|Y X^Y X ^~ Y X&Z
// ILI operacija bit po bit. Rezultat je 4’b1111. // EX-ILI operacija bit po bit. Rezultat je 4’b0111. // EX-NILI operacija bit po bit. Rezultat je 4’b1000. // I operacija bit po bit. Rezultat je 4’b10x0.

Kombinacione tabele za operacije bit po bit su prikazane na slici 9-2. Vrednost z u operacijama bit po bit se tretira kao vrednost x. U suštini, na isti naèin smo postupili i pri projektovanju na nivou logièkih kapija (8. fejezet).

0 0 1 x 0 0 x

1 0 1 x

x x x x 0 1 x

0 0 1 x

1 1 1 x

x x x x A 0 1 ~A 1 0 x

I operacija bit po bit 0 0 1 1 0 x 1 0 1 x x x x x 0 1 x

ILI operacija bit po bit 0 1 0 x 1 0 1 x x

x x x x

NE operacija bit po bit

Slika 9-2: Kombinacione tabele za operacije bit po bit.

x

Iskljuciva ILI operacija bit po bit

Iskljuciva NILI operacija bit po bit

Važno je naglasiti razliku izmeðu operatora nad bitovima: ~, &, | i logièkih operatora: !, &&, ||. U logièkim operacijama operandi se smatraju za jednu logièku promenljivu bez obzira na broj bita dok se kod opearcija bit po bit operacija izvršava nad pojedinim bitovima operanda (primer 9-17).
Primer 9-17: Primer koji prikazuje razliku izmeðu operacija bit po bit i logièkih operacija. X = 4’b1010; X | Y; X || Y; Y = 4’b0000;

// ILI operacija bit po bit. Rezultat je 4’b1010; // Logièka ILI operacija. Izraz je ekvivalentan sa 1 || 0 = 1.

9.4.6. Redukcioni operatori Redukcione operacije su: I (znak &), NI (znak ~&), ILI (znak | ), NILI (znak ~| ), EX-ILI (znak ^) i EX-NILI (znak ~^ ili ^~). Redukcioni operatori se odnose samo na jedan operand (unarne operacije). Izvršavaju se operacije nad bitovima operanda i kao rezultat uvek se dobija jedan bit. Kombinacione tabele redukcionih operatora se poklapaju sa kombinacionim tabelama operacija bit po bit prikazanih u taèki 9.4.5 (slika 9-2). Razlika izmeðu njih je da se redukcione operacije izvršavaju nad bitovima jednog operanda kreãuãi se od bita najveãe težine prema bitu najmanje težine, dok se operacije bit po bit izvršavaju nad bitom (bitovima) odreðene težine jednog ili dva operanda. Ovo je prikazano u primeru 9-18.

- 107 -

Projektovanje primenom programabilnih logièkih kola (PLD)
Primer 9-18: Primeri sa redukcionim operacijama. X = 4’b1010; &X |X ^X

// Izraèunava se pomoãu jednaèine: 1 & 0 & 1 & 0 = 1’b0. // Izraèunava se pomoãu jednaèine: 1 | 0 | 1 | 0 = 1’b1. // Izraèunava se pomoãu jednaèine: 1 ^ 0 ^ 1 ^ 0 = 1’b0.

// Redukcione operacije EX-ILI ili EX-NILI se mogu iskoristiti za generisanje // bita parnosti ili neparnosti nekog vektora.

9.4.7. Operatori pomeranja Operacije pomeranja su: pomeranje udesno ( znak >> ) i pomeranje ulevo (znak << ). Pri ovim operacijama pomera se sadržaj vektorskog operanda udesno ili ulevo za dati broj binarnih mesta. Prvi operand je vektor èiji se sadržaj pomera a drugi operand je vrednost koja odreðuje broj binarnih mesta za koja se vrši pomeranje. Prazna binarna mesta se tokom pomeranja ne popunjavaju bitovima koji su ispali veã nulama. Naèini primene operatora pomeranja su prikazani u primeru 919.
Primer 9-19: Primeri sa operacijama pomeranja. X = 4’b1100; Y = X >> 1; // Y = 4’b0110. Sadržaj vektora X se pomera za jedan bit udesno i // mesto najviše znaèajnog bita se popunjava sa 0. Y = X << 1; // Y = 4’b1000. Sadržaj vektora X se pomera za jedan bit ulevo i Y = X << 2; // Y = 4’b0000. Sadržaj vektora X se pomera za dva bita ulevo i
// mesto najmanje znaèajnog bita se popunjava sa 0. // mesta dva najmanje znaèajnih bitova se popunjavaju sa 0.

Operatori pomeranja su korisni jer omoguãuju implementaciju algoritama za množenje (koji se sastoje od pomeranja i sabiranja), algoritama za kodovanje u telekomunikacijama itd. 9.4.8. Operator pridruživanja Operacija pridruživanja ( znak {, } ) omoguãava povezivanje više operanada u jedan operand. Operandi moraju imati specificiranu velièinu. Operandi bez zadate velièine su nedozvoljeni jer se ne bi mogla izraèunati velièina rezultata. Operacija pridruživanja se sastoji od niza operanada razdvojenih zarezom unutar vitièastih zagrada. Operandi mogu biti skalarni podaci tipa net ili reg, vektorski podaci tipa net ili reg, deo vektorskog podatka ili konstante sa velièinom (primer 9-20).
Primer 9-20: Primeri sa operacijama pridruživanja. A = 1’b1; B = 2’b00; C = 2’b10; D = 3’b110;

Y = { B, C }; Y = { A, B, C, D, 3’b001 }; Y = { A, B[0], C[1] };

// Y = 4’b0010 // Y = 11’b10010110001 // Y = 3’b101

9.4.9. Operator umnožavanja Operacija umnožavanja ( znak { { } } ) ima dva operanda. Prvi operand je konstanta koja odreðuje koliko puta je potrebno uzastopno napisati drugi operand (primer 9-21). Operatore umnožavanja i pridruživanja unutar jednog izraza je moguãe kombinovati na sledeãi naèin:

- 108 -

. control Pored opisivanja multipleksora na nivou toka podataka. // Y = 4’b1111 // Y = 8’b11110000 // Y = 10’b1111000010 9. Uslovni operatori se èesto koriste na nivou toka podataka za modeliranje uslovnih dodeljivanja: taènost uslova odreðuje. Ako je uslov netaèan. uslovni operatori se primenjuju i za opisivanje bafera sa tri stanja (slika 9-4. Uslovni operator Uslovni operator ( znak ?: ) ima tri operanda. primer 9-22). primer 9-22) tako in0 0 da se uslovna operacija može koristiti za opisivanje multipleksora. koristi se izraz_za_sluèaj_taènog_uslova. Y = { 4{A}. Rezultat se odreðuje bit po bit: na onim binarnim mestima gde oba izraza daju istu logièku vrednost. 2{B}. C. stavlja se ta vrednost dok u sluèaju nepoklapanja stavlja se vrednost x. Pri izvršavanju uslovne operacije. Slika 9-4: Kolo za sprezanje sa tri stanja. Multipleksor 2/1 out in1 1 Slika 9-3: Demonstracija funkcionisanja uslovne operacije pomoãu multipleksora 2/1. Ako je uslov taèan.. koristi se izraz_za_sluèaj_netaènog_uslova. . Y = { 4{A} }. C = 2’b10.Projektovanje primenom programabilnih logièkih kola (PLD) { konst1{broj1}. konst2{broj2}. Uslovna dodela radi kao digitalni multipleksor 2/1 (slika 9-3. Naèin upotrebe je sledeãi: uslov ? izraz_za_sluèaj_taènog_uslova : izraz_za_sluèaj_netaènog_uslova. konstn{brojn} } Primer 9-21: Primeri operacija umnožavanja u kombinaciji sa pridruživanjem. Ako je taènost iskaza uslov neodreðena (x) onda se izraèunavaju vrednosti oba izraza (izraz_za_sluèaj_taènog_uslova : izraz_za_sluèaj_netaènog_uslova) i rezultat se formira uporeðivanjem izraza. B = 2’b00.4. addr_out drive_enable addr_bus . 2{B} }. C }. vrednost kojeg izraza ãe se dodeliti nosiocu podatka na levoj strani assign izraza. A = 1’b1.. reg [1:0] B. prvo se izraèunava taènost (logièka vrednost) iskaza uslov.10. reg A.109 - . Y = { 4{A}.

4. assign out = control ? in1 ? in2. Hijerarhija operacija Prioritete operacija u izrazima bez zagrada Verilog HDL odreðuje prema tabeli 9-2. // Modeliranje kola za sprezanje sa tri stanja (slika 9-4) // korišãenjem uslovne opercije. Vrednost izlaza treba da bude logièka jedinica ako su oba broja parna ili neparna. Zadatak je da se uporede dva dvobitna broja (A i B). Primer 9-23: Uslovne opercije korišãene na iterativan naèin. oduzimanje +pomeranje << >> relacione < <= > >= jednakosti = = != = = = != = redukcioni & ~& ^ ~^ | ~| logièki && || uslovni ?: Najmanji prioritet Tabela 9-2: Hijerarhija operacija Operacije . Izrazi unutar uslovnih operacija mogu da sadrže druge uslovne operacije. deljenje po modulu */% sabiranje. reg [1:0] A.11. Izuzetak èine unarne operacije kod kojih ne postoji neizvesnost oko prioriteta. Izlaz se odreðuje u dva koraka (na iterativan naèin) primenom uslovnih operacija. assign addr_bus = drive_enable ? addr_out : 36’bz. u suprotnom sluèaju vrednost izlaza postaje logièka nula. // Opisivanje multipleksora 2/1 (slika 9-3) pomoãu uslovne operacije. B. B su reg tipa. Simboli operatora Prioriteti unarni +-!~ Najveãi prioritet množenje. Ova moguãnost je prikazana preko jednog primera. velièine 2 bita. assign out = A[0] ? ( B[0] ? 1’b1 : 1’b0 ) : ( B[0] ? 1’b0 : 1’b1).Projektovanje primenom programabilnih logièkih kola (PLD) Primer 9-22: Opisivanje multipleksora i kola za sprezanje sa tri stanja pomoãu uslovne operacije. // Podaci A. Dovoljno je ispitati parnost bita najmanje težine na naèin koji je prikazan u primeru 9-23. deljenje. 9. Uslovne operacije je moguãe koristiti i na iterativan naèin.110 - . Preporuèuje se korišãenje zagrada za razdvajanje izraza kako bi se izbegli problemi oko odreðivanja prioriteta operacija.

Kašnjenja u procedurama ãe se objasniti kasnije. Na osnovu HDL opisa softver za sintezu razvije kolo koje se na kraju ostvaruje programiranjem odgovarajuãeg PLD-a. veã ponašanjem kola koje se projektuje. Sve te procedure u toku simulacije projektovanog modula poèinju u trenutku t=0 i izvršavaju se paralelno (konkurentno). Izvršavanje operacija u initial bloku poèinje u trenutku t=0 i izvršavanje se dešava taèno jedan puta. // Procedura tipa initial koja sadrži jednu instrukciju koja definiše // kraj simulacije. reg a.1. Ako jedan modul sadrži više initial procedura. Instrukcije na nivou ponašanja se mogu pojaviti samo unutar tih procedura.111 - . njihova namena je samo ispitivanje drugih modula. razni blokovi takoðe rade istovremeno.1. Struktuirane procedure Opisi na nivou ponašanja se mogu pisati u okviru jedne od dve moguãe struktuirane procedure (engl. paralelno obavljaju funkcije. za razliku od softverskih algoritama gde se izvršavanje programa dešava sekvencijalno. pre bloka treba napisati kljuènu reè begin. ona se piše neposredno iza kljuène reèi initial. 10. Ovi opisi jako lièe na programe napisane u programskom jeziku C ali uvek treba imati na umu da hardverski opis služi za formiranje odreðenog digitalnog kola. m. izvršavanje svakog od njih poèinje u trenutku t=0. 10. Ako initial procedura sadrži samo jednu dodelu vrednosti.1. Ako se iza kljuène reèi navodi initial blok koji sadrži više dodela. HDL opis na nivou ponašanja Najviši nivo za opis digitalnih kola pomoãu hardverskog jezika je nivo ponašanja. a na kraj bloka treba staviti kljuènu reè end. U primeru 10-1 se mogu videti razne initial procedure. module Stimulus. initial begin #5 a=1’b1. veã se koriste u simulacionim modulima za zadavanje pobudnih signala. Procedura tipa initial Procedura tipa initial poèinje sa kljuènom reèi initial. Verilog HDL moduli za opis simulacija obièno sadrže opise na nivou ponašanja koji nisu predviðeni za hardversku realizaciju. Primer 10-1: Simulacioni modul koji sadrži više initial procedura. Jedan Verilog HDL modul može da sadrži i više struktuiranih procedura. initial m=1’b0. Visoki nivo apstrakcije omoguãava da se projektant ne optereãuje detaljima realizacije. korak po korak. izvršavaju se i završavaju se meðusobno nezavisno. endmodule // U sluèaju jedne dodele nisu potrebne kljuène reèi begin i end. Na osnovu kljuènih reèi kojima se uvode te procedure oni se zovu initial i always procedure. Ta osobina je povezana sa time da se u digitalnom kolu koje se realizuje na bazi HDL opisa. Pri projektovanju digitalnih kola initial procedure se obièno koriste za jednokratna podešavanja. Definicija nove procedure se ne može poèeti dok nije završena prethodno zapoèeta. U veãini sluèajeva initial procedure se ne odnose na opis nekog kola. . #25 b=1’b0. // U sluèaju dve dodele veã je potrebna primena kljuènih reèi // begin i end. Posle kljuène reèi sledi initial blok koji može da sadrži jednu ili više dodela vrednosti. end initial #50 $finish.: structured procedure). b.Projektovanje primenom programabilnih logièkih kola (PLD) 10.

2.2. // Procedura tipa initial za definisanje kraja simulacije. U primeru 10-2 je dat modul za generisanje takt signala (koji sadrži always proceduru). Razlike meðu tim dodelama ãe se objasniti u narednoj taèki. initial clock=1’b0. module clock_gen. Procedura tipa always Definisanje always procedure poèinje sa kljuènom reèi always. initial #1000 $finish. ako je tako definisano u opisu. levo od znaka se navodi ime nekog nosioca podataka.Projektovanje primenom programabilnih logièkih kola (PLD) U toku simulacije gore navedenog modula sve tri initial procedure kreãu u trenutku t=0.112 - . endmodule // Takt signal kreãe sa niskog logièkog nivoa. I u ovom sluèaju je potrebno koristiti kljuène reèi begin i end ako se radi o bloku koji sadrži više dodela. Dodela vrednosti u procedurama Dodele definisane u procedurama tipa initial i always dodeljuju novu vrednost nosiocima podataka tipa reg. U primeru 10-3 se vidi deo . 10.1. Razlikujemo dve vrste dodela u procedurama: postoje blokirajuãe i neblokirajuãe dodele. Dodela koja je trenutno stigla u fazu izvršavanja blokira sledeãe dodele u tom bloku. Dodele navedene u dvema razlièitim initial ili always procedurama ne blokiraju jedan drugog. 10. // Posle svakih deset vremenskih jedinica treba invertovati // logièku vrednost takt signala. integer i real.1. always #10 clock=~clock. Primer 10-2: Modul za generisanje takt signala sa always procedurom. desno od znaka stoji neki izraz. odmah je izraèunata i dodeljena nova vrednost izlaznom nosiocu podataka. 10.2. neki njegov bit ili grupa bita ili pridruženi nosioci podataka. Ovo je znaèajna razlika u odnosu na dodele na nivou toka podataka: tamo je dodela nove vrednosti nosiocima podataka tipa net izvršavana kontinualno. izvršavaju se nezavisno. Dodele o kojima je ovde reè se definišu znakom za dodelu. Dodele iz always bloka se ciklièki ponavljaju u toku celog vremena simulacije (ako je reè o simulacionom modulu) ili za sve vreme rada projektovanog kola. nakon èega sledi always blok sa jednom ili više dodela. Ove dodele se izvršavaju u onom redosledu. Blokirajuãe dodele Znak dodele u blokirajuãim dodelama je znak jednakosti (=). Èim se desi neka promena u ulaznim podacima. vreme 0 5 30 50 dodela m=1’b0 a=1’b1 b=1’b0 $finish Tabela 10-1: Stvarna vremena izvršavanja dodela i instrukcija iz primera 10-1. potreban za simulaciju nekog kola. Tako dobijene vrednosti se ne menjaju dok se ne vrši nova dodela. Pojedina dodeljivanja ãe se izvršavati sa kašnjenjem. Stvarna vremena izvršavanja dodeljivanja i instrukcija su data u tabeli 10-1. reg clock. kako su navedeni u initial ili always bloku.

reg [15:0] reg_a. Primer 10-3: Deo modula sa blokirajuãim dodelama. reg [15:0] reg_a. #15 reg_a[2]=1’b1. Taj znak se ujedno koristi i u operacijama uporeðivanja.z} count=count+1 U dodelama se može desiti da nosilac podatka sa leve strane znaka dodele nema isti broj bita kao izraèunata vrednost izraza sa desne strane znaka dodele. initial begin x=1’b0. Ako nosilac podatka ima manji broj bita. z. reg_a=16’b0. Redosled dolaska Vreme na izvršavanje izvršavanja 1 0 2 0 3 0 4 0 5 0 6 0 7 15 8 25 9 25 Dodela x=1’b0 y=1’b1 z=1’b1 count=0 reg_a=1’b0 reg_b=reg_a reg_a[2]=1’b1 reg_b[15:13]={x.y.z}. Primer 10-4: Deo modula sa blokirajuãim i neblokirajuãim dodelama. y. reg_b=reg_a. Neblokirajuãe dodele U neblokirajuãim dodelama se koristi znak <=. Kod ovih dodela dodela koja je na redu ne blokira izvršavanje narednih dodela. y=1’b.Projektovanje primenom programabilnih logièkih kola (PLD) jednog modula sa blokirajuãim dodelama. reg x. a u tabeli 10-2 je sumirano po kom redosledu pojedine dodele dolaze na izvršavanje i u kom momentu se izvršavaju. initial begin x=1’b0. reg x. end Tabela 10-2: Redosled dolaska na izvršavanje i vreme izvršavanja dodela iz primera 10-3. x=1’b1.113 - .2. #10 reg_b[15:13]={x. count=0. y=1’b.2. reg_b. reg_b.y. 10. integer count. bitovi manje težine iz vrednosti izraza se dodeljuju nosiocu podatka. integer count.y. ali tri dodele ãemo promeniti da budu neblokirajuãe i pratiãemo posledice (primer 104). reg_a=16’b0. x=1’b1. z. a bitovi veãe težine otpadaju. . reg_a[2]<= #15 1’b1. U suprotnom sluèaju nedefinisani bitovi se popunjavaju nulama.z}. reg_b[15:13]<= #10 {x. U tabeli 10-4 je sumirano po kom redosledu pojedine dodele iz primera 10-4 dolaze na izvršavanje i u kom momentu se izvršavaju. ali softver koji tumaèi HDL opis ume da rastumaèi da li se radi o uporeðenju ili o dodeli. y. count=0. Ponoviãemo primer 10-3. reg_b=reg_a. count=count+1.

Ako ima kašnjenja. . i to u redosledu pisanja (osobina blokirajuãih dodela). Ako nije naznaèeno nikakvo kašnjenje. preostale tri dodele dolaze na izvršavanje istovremeno. Npr. Primer 10-5: Konkurentni prenos podataka primenom neblokirajuãih dodela. dotièni izrazi se odmah izraèunaju i dobijene vrednosti zapisuju u privremenoj memoriji. Nije bitno po kom redosledu ãe se vršiti upis u odgovarajuãe registre (izvršavanje dodele) pošto sadržaj privremene memorije ne zavisi od redosleda. reg3<=#1 reg1. U primeru 10-5 se dešavaju tri dodele na uzlaznoj ivici takt signala.114 - . ali još uvek u trenutku t=0.Projektovanje primenom programabilnih logièkih kola (PLD) count<=count+1. Redosled dolaska Vreme na izvršavanje izvršavanja 1 0 2 0 3 0 4 0 5 0 6 0 7 15 7 10 7 0 Dodela x=1’b0 y=1’b1 z=1’b1 count=0 reg_a=1’b0 reg_b=reg_a reg_a[2]=1’b1 reg_b[15:13]={x.    Da bismo još bolje utvrdili pravila prenosa podataka kod neblokirajuãih dodela.y. Stvarne dodele se dešavaju kada im doðe vreme. end U gornjem primeru na uzlaznoj ivici takt signala dešavaju se sledeãe stvari: Odrede se vrednosti podataka u izrazima sa desne strane znakova dodele (in1. Vremenska kontrola dodela u procedurama (pomoãu takt signala ili drugaèije) ãe se obraditi detaljno u poglavlju 10. in3. nosilac podatka sa leve strane znaka dodele ãe nakon isteka kašnjenja primiti vrednost koja je izraèunata na osnovu vrednosti podataka u izrazu sa desne strane znaka dodele u trenutku t=0. Posle toga. dok se druga dodela izvršava na najbližoj silaznoj ivici takt signala. Prva i treãa dodela se odigravaju nakon kašnjenja od jedne vremenske jedinice (zbog naznaèenog kašnjenja). bez obzira na èinjenicu da je u prvoj dodeli reg1 dobio novu vrednost. Sa neblokirajuãim dodelama se obièno opisuju digitalna kola u kojima se dešava konkurentni (istovremeni) prenos podataka pod delovanjem zajednièkog kontrolnog signala.3. prvo posmatrajmo primer 10-6. always @ (posedge clock) begin reg1<=#1 in1. u treãoj dodeli reg3 dobija “staru” vrednost reg1. reg1). end Tabela 10-3: Redosled dolaska dodela na izvršavanje iz primera 10-4 i stvarna vremena njihovog izvršavanja. in2. naznaèene dodele se dešavaju odmah (u trenutku t=0). reg2<=@(negedge clock) in2^in3.z} count=count+1 Može se reãi da se prvih šest dodela izvršavaju u trenutku t=0.

Projektovanje primenom programabilnih logièkih kola (PLD)
Primer 10-6: HDL opis sa blokirajuãim dodelama koji dovodi do efekta protrèavanja. always @ (posedge clock) a=b; always @ (posedge clock) b=a;

Navedene dve always procedure kreãu istovremeno (pri svakoj uzlaznoj ivici takt signala). Nijedan od napisanih blokirajuãih dodela u navedenim procedurama nema prioritet (pošto su napisane u dvema procedurama) zato ãe redosled izvršavanja biti sluèajan. Kada se jedna dodela izvrši, oba registra ãe sadržati istu vrednost, sledeãa dodela veã nema efekta. Efekat protrèavanja se može spreèiti primenom neblokirajuãih dodela (primer 10-7). U ovom sluèaju se prvo zapišu poèetne vrednosti podataka sa desne strane znaka za dodelu. Nakon toga se izvrše dodele korišãenjem zapisanih vrednosti i rezultat neãe zavisiti od redosleda izvršavanja.
Primer 10-7: Spreèavanje efekta protrèavanja primenom neblokirajuãih dodela. always @ (posedge clock) a<=b; always @ (posedge clock) b<=a;

Na osnovu gornjeg HDL opisa sintetizuje se digitalno kolo (kružni brojaè) prikazano na slici 10-1. U kolu ãe se nakon svake uzlazne ivice takt impulsa (clk) zameniti sadržaji flip-flop-ova. Osnovna osobina ivièno okidanih kola je da uzorkuju ulazne signale na odgovarajuãoj ivici takt signala i nakon toga izvrše potreban upis u skladu sa uzorkovanim vrednostima. Ako se ulazni signali promene nakon ivice takt signala, to neãe imati nikakvog efekta na upis.
a b

D

Q

D

Q

clk
Slika 10-1: Digitalno kolo sintetizovano na bazi HDL opisa iz primera 10-7.

Efekat protrèavanja se može izbeãi i primenom blokirajuãih dodela i to na naèin prikazan u primeru 10-8. Uvoðenjem (privremenih) nosilaca podataka temp_a i temp_b, poèetne vrednosti se zapisuju i tražena smena podataka se pravilno odigrava.
Primer 10-8: Spreèavanje efekta protrèavanja privremenim memorisanjem podataka. always @ (posedge clock) begin temp_a=a; temp_b=b; a=temp_b; b=temp_a; end

- 115 -

Projektovanje primenom programabilnih logièkih kola (PLD) 10.3. Vremenska kontrola dodela u opisima na nivou ponašanja

Ako u proceduralnim dodelama prilikom opisa na nivou ponašanja ne navodimo nikakvu vremensku kontrolu, u toku simulacije opisa neãe biti napredovanja na vremenskoj skali. Pri projektovanju realnih kola preciznije modelovanje zahteva primenu vremenske kontrole. U struktuiranim procedurama (initial i always) vremenska kontrola se može vršiti na tri naèina:  zadavanjem kašnjenja;  iviènim okidanjem;  okidanjem na nivo signala. 10.3.1. Vremenska kontrola zadavanjem kašnjenja Zadavanjem kašnjenja definišemo vreme koje treba da proðe izmeðu dolaska dodele na izvršavanje i njenog stvarnog izvršavanja. Kašnjenja uvodimo sa znakom #, posle znaka se piše vrednost kašnjenja u vidu brojèane vrednosti, identifikatora ili min/typ/max izraza. Pri pravilnom naèinu pisanja, kašnjenje se navodi pre dodele. Ovaj sluèaj je prikazan u primeru 10-9.
Primer 10-9: Pravilan naèin pisanja kašnjenja kod dodela. initial begin #10 y=1’b1; #latency z=1’b0; #(4,5,6) q=1’b0; end

Prva dodela se izvršava nakon kašnjenja od deset vremenskih jedinica raèunato u odnosu na t=0. Ako se na desnoj strani znaka dodele pojavljuje neki izraz (umesto konstante u datoj dodeli), izraèunavanje izraza kasni isto toliko. S obzirom na osobine blokirajuãih dodela, druga dodela dolazi na izvršavanje tek nakon izvršavanja prve dodele. Pošto smo kod druge dodele vrednost kašnjenja zadali u vidu identifikatora (konstante), potrebno je saèekati vreme odreðeno identifikatorom da bi se dodela izvršila. Nakon izvršavanja druge dodele treãa dodela dolazi na izvršavanje kod koje smo kašnjenje zadali sa min/typ/max izrazom. Drugi naèin pisanja kašnjenja je navoðenje kašnjenja unutar same dodele. Odgovarajuãe vreme kašnjenja se navodi na desnoj strani znaka za dodelu (= ili <=). U ovom sluèaju izraèunavanje vrednosti izraza koji figuriše na desnoj strani dodele se vrši u momentu dolaska dodele na izvršavanje (ne posle kašnjenja, kao što je sluèaj kod pravilnog zadavanja kašnjenja), a sama dodela kasni onoliko koliko je propisano. U primeru 10-10 u prvoj initial proceduri kašnjenje je zadato unutar dodele, zato se sabiranje dešava u trenutku t=0, dok dodela kasni pet vremenskih jedinica. Druga initial procedura pokazuje kako se može postiãi isti rezultat uvoðenjem privremenog nosioca podatka (temp_xz) i pravilnim naèinom pisanja kašnjenja.
Primer 10-10: Pisanje kašnjenja unutar izraza za dodelu. initial y= #5 x+z; initial begin temp_xz=x+z #5 y=temp_xz end

Kao što je veã napomenuto ranije, izvršavanje svih initial i always procedura poèinje u trenutku t=0. Ne može se meðutim utvrditi redosled izvršavanja dodela u pojedinim procedurama

- 116 -

Projektovanje primenom programabilnih logièkih kola (PLD)
koja su naznaèena za trenutak t=0, zato može nastupiti efekat protrèavanja. Zadavanjem nultog kašnjenja može se utvrditi redosled. U primeru 10-11 sve dodele se izvršavaju u t=0, ali dodele unutar prve procedure se izvršavaju pre dodela u drugoj proceduri, pa ãe krajnji rezultat biti x=y=1. U principu, rizièno je nosiocu podataka istovremeno dodeliti vrednost u dvema procedurama, ali uvoðenjem nultog kašnjenja, redosled izvršavanja dodela se može dodatno precizirati.
Primer 10-11: Pisanje nultog vremena kašnjenja radi preciziranja redosleda izvršavanja. initial begin x=0; y=0; end initial begin #0 x=1; #0 y=1; end

10.3.2. Vremenska kontrola primenom iviènog okidanja i okidanja na nivo Veãina savremenih digitalnih sistema je sinhrona mreža, a sinhronizacija se u veãini sluèajeva izvodi iviènim okidanjem. Ivièno okidanje i okidanje na nivo se može naznaèiti na sledeãa èetiri naèina u hardverskim opisima na nivou ponašanja:  pravilno ivièno okidanje,  èekanje na imenovani dogaðaj,  èekanje na ivicu jednog od grupe signala,  èekanje na odgovarajuãi logièki nivo. Primenom pravilne metode opisuje se ivièno okidanje, koriste se kljuène reèi @ i posedge ili negedge. U primeru 10-12, unutar prve always procedure, dodelu treba izvršiti i na uzlaznoj i na silaznoj ivici takt signala. U drugoj proceduri dodela se vrši na uzlaznoj ivici takta, u treãoj na silaznoj ivici takta. U èetvrtoj proceduri se memoriše vrednost podatka d u momentu kada dodela dolazi na izvršavanje, a dodela te vrednosti nosiocu podatka q se izvršava na uzlaznoj ivici takta.
Primer 10-12: Pravilna metoda vremenske kontrole (definisanje iviènog 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 kljuèna reè). Takt signal koji je potreban za simulaciju HDL opisa mora da formira projektant prema svojim zahtevima u jednom pomoãnom modulu. Isti pristup važi i pri hardverskoj realizaciji HDL opisa: PLD kolo ne sadrži unutrašnji izvor takta, takt signal se mora obezbediti pomoãu posebnog kola. Ako vremensku kontrolu planiramo da ostvarimo èekanjem na imenovani dogaðaj, prvo

- 117 -

always @(reset or clock or d) begin if (reset) q=1’b0. Primer 10-13: Vremenska kontrola èekanjem na imenovani dogaðaj. . Primer 10-14: Vremenska kontrola èekanjem na ivicu jednog od grupe signala. Naznaèena dodela ãe se izvršiti kada nastupi taj dogaðaj. end Može da dovodi do nesporazuma to što je u gornjem primeru primenjena sinhronizacija dodele na ivicu signala. Naèin korišãenja kljuène reèi if koja se koristi u ovoj jezièkoj konstrukciji ãe se objasniti u sledeãem poglavlju (10. Slièan je naèin definisanja ovakve vremenske kontrole. data_pkt[2]. data_pkt[1]. Procedura always kreãe na uzlaznoj ili silaznoj ivici jednog od signala reset. u zavisnosti od novih logièkih nivoa.118 - . U primeru 10-13 deklaracija dogaðaja je uraðena u prvom redu HDL opisa. ako se desi promena u jednom od tri ulazna signala.1. Deklaracija dogaðaja se vrši sa kljuènom reèi event. Pored iviènog okidanja u HDL opisima se može koristiti i okidanje na nivo. ipak ãe se na osnovu ovog opisa sintetizovati D latch kolo (taèka 3. Primer 10-15: Vremenska kontrola èekanjem na logièki nivo (okidanje na nivo).4). ili ãe latch postati transparentan (q=d) ili se. aktiviranje dogaðaja se vrši sa znakom ->. a dogaðaj se uzima u obzir (izvrši se dodela) kod znaka @. To se ne radi sa znakom @ veã sa kljuènom reèi wait.1) sa okidanjem na nivo. data_pkt[3]}. always wait (count_enable) #20 count=count+1. U primeru 10-15 inkrementiranje podatka count se dešava nakon svakih dvadeset vremenskih jedinica pod uslovom da je signal count_enable na visokom logièkom nivou. event received_data. Primena pravilne metode vremenske kontrole (ivièno okidanje) se može uopštiti tako da se izvršavanje dodele vezuje na promenu jednog signala iz grupe signala. else if(clock) q=d. U sledeãoj always proceduri je navedena dodela koju treba izvršiti kada se desi imenovani dogaðaj.Projektovanje primenom programabilnih logièkih kola (PLD) treba deklarisati dogaðaj. zadržava zateèeno stanje. u sluèaju niskog nivoa clock signala. Znaèi. samo se pojedina imena signala povezuju sa kljuènom reèi or (primer 10-14). ili ãe se izvršiti asinhroni reset latch kola (q=1’b0). clock i d jer se kod kola sa okidanjem na nivo može oèekivati promena u ponašanju kada se pomeni nivo ulaznih signala (a to se dešava kod ivice signala). always @(posedge clock) begin if (last_data_packet) ->received_data. Sledi procedura tipa always koja definiše kada se javlja imenovani dogaðaj (šta je ustvari dogaðaj koji se èeka). end always @ (received_data) data_buf={data_pkt[0].

Ova instrukcija ne služi za opisivanje nekog hardvera veã prouzrokuje odreðenu akciju kod logièkog simulatora. U primeru 1019 prethodnu if-else strukturu smo pretvorili u case strukturu da bi dobili jednostavniji opis. .4. meðutim ako nijedan uslov nije ispunjen. number_queued= number_queued+1. inaèe ne. Primer 10-17: Vezivanje dodela za taèan i netaèan uslov. Primer 10-18: Dodele vezane za više od dva uslova. 10. izvršavaju se odreðene propisane dodele. else $diplay (“Invalid alu control signal”). Ako neke dodele treba da se izvršavaju pri taènom uslovu a neke pri netaènom. Višestruka grananja Pisanje if-else struktura iz prethodne taèke u sluèaju veãeg broja uslova je komplikovano i dobijeni opis je nepregledan.119 - . Ako je uslov taèan. end else $display (“Queue full. može da se pojavi samo jednaput. if (number_queued<MAX_Q_DEPTH) begin data_queued=data. if (!clock) buffer=data. U primeru 10-18. Ako je u primeru clock signal na niskom logièkom nivou. U takvim situacijama prikladnije je korišãenje strukture sa kljuènom reèi case. aktivira se instrukcija $display. Postoje tri sluèaja u opisivanju uslovnih dodela. pri vrednostima parametra alu_control od 0. koriste se kljuène reèi if i else (primer 10-17). U prikazanoj jezièkoj konstrukciji koristi se lanac kljuènih reèi if – else if – else. Primer 10-16: Izvršavanje dodele vezano za taèan uslov. 1 ili 2. u suprotnom sluèaju izvršava se instrukcija $display.Projektovanje primenom programabilnih logièkih kola (PLD) 10. Uslovne dodele U struktuiranim procedurama primenom kljuènih reèi if i else se može definisati pod kojim uslovima treba izvršiti naznaèenu dodelu i pod kojim uslovima treba izostaviti tu dodelu iz obrade. potrebno je izvršiti dve dodele navedene izmeðu kljuènih reèi begin i end. endcase i default.1. Try again”). izvršiãe se dodela.5. U treãem sluèaju uslov može da ima više od dve vrednosti i pri svakoj vrednosti treba izvrštiti neku drugu dodelu. U prvom sluèaju (primer 10-16) koristimo samo kljuènu reè if. Primena kljuène reèi default nije obavezna. if (alu_control==0) y=x+z. 10. Ako se koristi. else if (alu_control==2) y=x*z.5. Struktura case Za formiranje ove strukture koriste se kljuène reèi case. else if (alu_control==1) y=x-z.

4’bxx1x: state=1. ali se ipak na osnovu datog HDL opisa sintetizuje kombinaciono kolo (multipleksor). integer state. i0. . 2’d0: y=x-z.2. default: $diplay (“Invalid control signals”). s0. always @(s1 or s0 or i0 or i1 or i2 or i3) case ({s1.120 - . output out. i2. pošto nema uticaja na sintezu fizièkog kola. default: $diplay (“Invalid alu control signal”). 2’d0: y=x*z. i3. 4’bx1xx: state=2. Pojedini bitovi u kodovima sluèajeva mogu uzimati vrednosti x ili z. Red sa kljuènom reèi default se može izostaviti.5. i1. endcase Opis multipleksora (poglavlje 2. casex (encoding) 4’b1xxx: state=3. Kodovi pojedinih sluèajeva su dobijeni povezivanjem jednobitnih selekcionih ulaza (s1. Kod kljuène reèi casex u kodu mogu biti i x i z vrednosti i te pozicije se neãe razmatrati pri izvršavanju dodele. 2’d2: out=i2. input i0. Primer 10-20: HDL opis multipleksora 4/1 primenom case strukture. vrednosti ostalih bitova nemaju uticaja na kod. s0). Primer 10-21: Primena kljuène reèi casex za definisanje specijalnog kodera. U case strukturi u pojedinim sluèajevima umesto jedne dodele može da se javi više njih. reg [1:0] alu_control. reg[3:0] encoding. Primer 10-20 daje opis multipleksora 4/1 (prikazan je ceo modul). input s1. reg out. s0}) 2’d0: out=i0. case (alu_control) 2’d0: y=x+z. Tada dodele treba grupisati sa kljuènim reèima begin i end. i1. i2. i3. 2’d1: out=i1. 10. Slièno primeru 10-14 i ovde se radi o okidanju na nivo. module mux4_to_1(out. Pri korišãenju kljuène reèi casez u kodu sluèaja na pojedinim pozicijama mogu da stoje z vrednosti i one neãe imati uticaja na izvršavanje uslovne dodele. s0). U primeru 10-21 dat je skraãeni opis jednog specijalnog kodera koji izlazni kod formira na osnovu toga da li na odgovarajuãoj poziciji postoji logièka jedinica. ali procedura kreãe kada se promeni logièki nivo (znaèi: kod ivice).5) je najsvrsishodnije primenom case strukture. endcase endmodule U gornjem primeru procedura always se svaki put aktivira kada se promeni logièki nivo bilo kog od ulaznih nosioca podataka.Projektovanje primenom programabilnih logièkih kola (PLD) Primer 10-19: HDL opis iz primera 10-18 preraðen na case strukturu. na taj naèin se neka kola mogu preciznije opisati. Primena kljuènih reèi casex casez Primenom kljuènih reèi casex i casez mogu se skratiti razni opisi sa grananjima. s1. Izlazni nosilac podatka (out) je deklarisan da bude tipa registar. 2’d3: out=i3.

Primenom petlji u Verilog HDL-u ponavljanje dodela se može vezati za neki uslov. Treba meðutim reãi da je petlja tipa while opštijeg karaktera i ima širu primenu. count). default: state=0. Dodele se neãe izvršiti nijednom ako je izraz netaèan u startu. for.6. 10. Primer 10-23: Primena petlje tipa for za opis brojaèa.6.6. while (count < 127) begin $display (“count=%d”. Ako ima više od jedne dodele u petlji. 10.  jednu dodelu koja modifikuje vrednost podatka kojom je odreðen momenat izlaska iz petlje. Pri svakom prolasku kroz petlju na monitoru se pojavi tekst count= i trenutna vrednost podatka count u decimalnom obliku. integer count. Petlje u opisima na nivou ponašanja Pri opisivanju na nivou ponašanja always procedure prouzrokuju stalno ponavljanje dodela za celo vreme simulacije ili (kod ostvarenog hardvera) za celo vreme rada kola. Primer 10-22: Korišãenje petlje tipa while za opisivanje brojaèa. Postoje èetiri kljuène reèi za definisanje petlji. Brojaè dat u prethodnom primeru se jednostavije može opisati primenom for petlje (primer 10-23). Na taj naèin se može podešavati broj ponavljanja ili vreme izvršavanja. end end Izraz u zagradi pored instrukcija $display definiše šta treba ispisati na monitor raèunara na kojoj se vrši simulacija. . Petlja tipa while Ova petlja se definiše pomoãu kljuène reèi while i izraza u zagradi pored te kljuène reèi. count<128. U primeru 10-22 prikazan je deo jednog modula koji opisuje sedmobitni brojaè pomoãu petlje tipa while. count=count+1. Dodele koje pripadaju petlji se ponavljaju dok izraz u zagradi daje taènu vrednost.  proveru uslova za izlazak iz petlje.Projektovanje primenom programabilnih logièkih kola (PLD) 4’bxxx1: state=0. initial begin count=0. prema tome mogu se pojaviti samo u initial i always procedurama. count). coun=count+1) $display (“count=%d”. Izraz sadrži tri elementa:  jedan poèetni uslov. repeat i forever.2. integer count. Petlje se mogu definisati samo u opisima na nivou ponašanja. Petlja tipa for Ova petlja se definiše pomoãu kljuène reèi for i izraza u zagradi pored te kljuène reèi.1. initial for (count=0. oni treba da se smeste izmeðu kljuènih reèi begin i end. to su: while. endcase 10.121 - .

7. Definicija ne sadrži uslov za izlazak iz petlje. U rednim blokovima dodele dolaze na izvršavanje u redosledu pisanja. zato se petlja u principu neogranièeno izvršava (pri simulacijama trajaãe do kraja simulacije. U primeru 1026 navodimo jedan redni blok bez kašnjenja.6. Zadate vrednosti kašnjenja su relativne vrednosti: kašnjenje navedeno za trenutno aktivnu dodelu se raèuna od završetka prethodne dodele. Petlja tipa forever Ova petlja se definiše pomoãu kljuène reèi forever. initial begin clock=1’b0.6. forever #10 clock=~clock. count=count+1. Dodele navedene izmeðu tih kljuènih reèi se izvršavaju u onom redosledu kako su napisane.122 - .1. Primer 10-26: Redni blok bez kašnjenja. reg x. U dosadašnjim primerima smo veã na puno mesta koristili redne blokove. Redni i paralelni blokovi Dodele koje èine celinu se grupišu u blokove. .7. ali se njegova vrednost sraèuna pre ulaska u petlju i unutar petlje se smatra konstantom. Navedene èetiri dodele se izvršavaju u redosledu pisanja ali se sve to dešava u t=0. Na taj naèin bitovi podataka y i w se formiraju od prethodno dodeljenih vrednosti podataka x i y.y. Redni blokovi Redni blokovi se poèinju sa kljuènom reèi begin i završavaju se sa kljuènom reèi end.Projektovanje primenom programabilnih logièkih kola (PLD) 10.4. Primer 10-25: Primena petlje tipa forever za formiranje takt signala. Dodele u paralelnim blokovima dolaze na izvršavanje istovremeno (vreme izvršavanja može da se razlikuje samo ako su definisana kašnjenja). end 10. petlja tipa repeat se koristi u situacijama kada dodele navedene u petlji treba izvršiti odreðeni broj puta. Pored rednih blokova postoje i paralelni. Primer 10-24: Primena petlje tipa repeat za formiranje brojaèa. initial begin count=0. U primeru 10-24 dat je opis brojaèa iz prethodnih primera primenom petlje repeat. Umesto brojèane vrednosti može da se pojavi i neki identifikator ili neki izraz. Petlja tipa repeat Ova petlja se definiše pomoãu kljuène reèi repeat i brojèane vrednosti u zagradi pored te kljuène reèi. Prema tome. repeat (128) begin $display (“count=%d”. Dosad su mnogo puta korišãene kljuène reèi begin i end kojima se formiraju redni blokovi. end end 10.3. U primeru 10-25 formira se takt signal primenom petlje tipa forever. 10. pri hardverskoj realizaciji trajaãe sve dok kolo dobije napajanje). count). reg [1:0] z. Novoj dodeli se ne pristupa sve dok prethodna nije izvršena. w. integer count.

druga u t=5. ali menjaju se vremena izvršavanja. Na kraju nosioci podataka dobijaju iste vrednosti.y. U primeru 10-27 je ponovljen prethodni primer ali umesto rednog bloka koristi se paralelni. Kašnjenja se raèunaju u odnosu na momenat ulaska u blok. Vremena izvršavanja možemo podešavati zadavanjem kašnjenja. Primer 10-26: Redni blok sa kašnjenjima. Pošto su kašnjenja nadovezuju. treãa u t=15 a èetvrta u t=35.x}. Redosled navoðenja dodela nema uticaja na redosled izvršavanja. Takoðe može biti problematièno ako u istom bloku definišemo vrednost nekog podatka i koristimo isto u nekoj drugoj dodeli.y}. èekanjem na dogaðaj. Navedena kašnjenja se tumaèe kao apsolutne vrednosti.2. #5 y=1’b1.x}.2). y=1’b1. Primer 10-28: Paralelni blok bez kašnjenja (javlja se efekat protrèavanja). #10 z={x. join Pri korišãenju paralelnog bloka može da nastupi efekat protrèavanja ako sa dva ili više dodela pokušavamo istovremeno dodeliti vrednost nekom nosiocu podatka. #20 w={y.y}. z={x.123 - . w. prva dodela se izvršava u t=0. Primer 10-27: Paralelni blok sa kašnjenjima. #20 w={y. #10 z={x.y.Projektovanje primenom programabilnih logièkih kola (PLD) initial begin x=1’b0.x}. iviènim okidanjem i okidanjem na nivo (taèka 10. #5 y=1’b1. reg x. reg x. reg [1:0] z. U primeru 10-28 vrednosti z i w su nesigurne u momentu napuštanja bloka jer se ne zna da li su vrednosti x i y definisane na vreme. w. slièno kao kod neblokirajuãih dodela (taèka 10.2) ali se u ovom sluèaju ne vrši memorisanje podataka pri ulasku u blok.7. Paralelni blokovi Dodelama u paralelnom bloku prethodi kljuèna reè fork a na kraju stoji kljuèna reè join.2.y}. reg [1:0] z. reg x. Dodele iz paralelnog bloka dolaze na izvršenje istovremeno.y. w. initial begin x=1’b0. end 10. initial fork x=1’b0. w={y. . end U primeru 10-27 dodele u rednom bloku sadrže kašnjenje (izuzev prvog). reg [1:0] z.3.

initial begin x=1’b0. w={y. join #20 w={y..x}...y}.. z={x. end initial fork: block2 reg i. Primer 10-30: Primena imenovanih blokova.x}. Imenovani blokovi Blokovi se mogu imenovati. Razume se da ãe se prvo izvršiti prva dodela rednog bloka.Projektovanje primenom programabilnih logièkih kola (PLD) initial fork x=1’b0. Èak ni to nije problem što nosioci podataka nisu istog tipa. Dodele u paralelnom bloku dolaze na red u istom momentu ali zbog navedenih kašnjenja izvršavaju se tek u momentima t=5 i t=10. Tako se mogu izostaviti izvesne dodele ili se može izaãi iz petlje. Primer 10-29: Kombinacija rednog i paralelnog bloka..3. .5.7. end 10. fork #5 y=1’b1.  možemo prekinuti izvršavanje. initial begin: block1 integer i. U primeru 10-31 prikazan je naèin izlaska iz ...  pojedinim nosiocima podataka možemo pristupiti preko hijerarhijskih imena... dok je unutrašnji blok paralelnog tipa. zatim dolaze dve dodele unutar paralelnog bloka i na kraju sledi zadnja dodela iz rednog bloka. module top. join 10.7.. U primeru 10-30 nosilac podatka i se pojavljuje unutar dva bloka.... ali pošto su ti blokovi imenovani. ne dolazi do zabune.7.4..124 - . Prekidanje izvršavanja imenovanog bloka Korišãenjem instrukcije disable može se prekinuti imenovani blok. U prikazanom sluèaju glavni blok je rednog tipa. join endmodule 10. . #10 z={x.y}. y=1’b1. Kombinovani blokovi Redni i paralelni blokovi se mogu i kombinovati (primer 10-29)... Kod tako dobijenih imenovanih blokova:  možemo deklarisati lokalne nosioce podataka.

Primenom instrukcije disable može se prekinuti bilo koji blok. i=0. Ovo je znaèajno odstupanje od pravila softverskih jezika. ne samo onaj u kome je navedena instrukcija disable. Primer 10-31: Prekidanje imenovanog bloka. kod kojih se može prekinuti samo onaj program/potprogram koji se tog momenta izvršava. i). disable block1. begin: block1 while (i<16) begin if (flag[i]) begin $display (“True bit at element number %d”. initial begin flag=16’b0010_0000_0000_0000. end i=i+1. end end end .Projektovanje primenom programabilnih logièkih kola (PLD) petlje tipa while. prekida se izvršenje bloka pod imenom block1.125 - . Ako je naredni bit vektora flag jedinica.

Prentice Hall. [5] Morris Mano: Digital Design. [11] Tihomir Aleksiã: Logièka sinteza digitalnih mreža. [2] Dejan Živkoviã.xilinx.com . Nauèna knjiga. Tóth Mihály: A logikai tervezés módszerei. Budapest.com [16] www.simucad. Tankönyvkiadó. III izdanje. Budapest. Nauka. 1999. [14] Fairchild: Logic Selection Guide. 2003. [12] Ripka Gábor: Felületre szerelhetõ alkatrészek.126 - . Mûszaki Könyvkiadó. Sunsoft Press.ti.latticesemiconductor. 1992.prenhall. [15] www. 2003. Mûszaki Könyvkiadó Budapest. A Guide to Digital Design and Synthesis. Milena Stankoviã: Logièko projektovanje.com [18] www. 1996. 2002. 1973. [4] Michael Ciletti: Advanced Digital Design with the Verilog HDL. Beograd.Projektovanje primenom programabilnih logièkih kola (PLD) 11. Beograd.com [21] www. Berendezésorientált áramkörök. Budapest. 1990.com [20] www. Literatura [1] Szittya Ottó: Digitális és analóg technika informatikusoknak.fairchildsemi. Texas. LSI Oktatóközpont. [3] Samir Palnitkar: Verilog HDL. Prentice Hall. Miodrag Popoviã: Impulsna i digitalna elektronika. 1993.altera. [8] Arató Péter: A logikai rendszerek tervezése.com [19] www. [13] Texas Instruments: Logic Selection Guide. Dallas. 2003. Nauka. Mûszaki Könyvkiadó. I i II tom.com [17] www. [7] Janovics Sándor. Beograd. [6] Matijevics István: Digitális Technika. [10] Radomir Stankoviã. [9] Peter Ammon: Kapumátrix áramkörök. 1991. Szabadka. Budapest. 1975. 2003. Szabadkai Mûszaki Fõiskola. III izdanje.atmel.com [22] www. 1989.

Sign up to vote on this title
UsefulNot useful