logicko projektovanje racunarskih sistema i - rt-rk.uns.ac.rs · pokazna vežba 4 – sekvencijalne...

12
Pokazna vežba 4 – VHDL opis kombinacionih mreža 2019/20 1 POKAZNA VEŽBA 4 VHDL opis kombinacionih mreža Potrebno predznanje Urađena pokazna vežba 3 Standardne kombinacione mreže Šta će biti naučeno tokom izrade vežbe? Nakon urađene vežbe, bićete u mogućnosti da: Opišete proizvoljnu kombinacionu mrežu u VHDL-u koristeći opis na nivou logičkih kola Opišete proizvoljnu kombinacionu mrežu u VHDL-u koristeći uslovne dodele Opišete proizvoljnu kombinacionu mrežu u VHDL-u koristeći kombinacione procese Simulirate vaš sistem uz pomoć ModelSim-Altera alata Apstrakt i motivacija Opis digitalnih sistema na nivou logičkih kola, bilo da ga radite crtajući električnu šemu ili opisujući VHDL jezikom na nivou logičkih kola, zahteva da poznajete Bulove jednačine sistema koji želite da opišete. Da biste došli do Bulovih jednačina, neophodno je da obavite proces izvođenja jednačine koji podrazumeva izvođenje SDNF iz istinitosne tablice željenog ponašanja sistema i minimizaciju te jednačine analitičkim pristupom ili nekom metodom minimizacije, npr. Karnoovim mapama. Postupak izvođenja i minimizacije jednačine je šablonski i lako ga je automatizovati, a ne doprinosi kreativnosti u dizajnu samog digitalnog sistema. Zbog toga VHDL jezik podržava konstrukcije koje će Vama, kao autoru digitalnog sistema, omogućiti da sistem opišete koncentrišući se na logiku ponašanja sistema, tj. šta želite da sistem ima na izlazu i pod kojim uslovima, a šablonski postupak izvođenja i minimizacije jednačina ostavite računaru. Na kraju vežbe potrebno je da svoj kombinacioni sistem simulirate u ModelSim-Altera alatu, koji veoma liči na aritmetičko-logičku jedinicu nekog procesora.

Upload: others

Post on 24-Sep-2019

13 views

Category:

Documents


1 download

TRANSCRIPT

Pokazna vežba 4 – VHDL opis kombinacionih mreža 2019/20

1

POKAZNA VEŽBA 4

VHDL opis kombinacionih mreža

Potrebno predznanje

Urađena pokazna vežba 3

Standardne kombinacione mreže

Šta će biti naučeno tokom izrade vežbe?

Nakon urađene vežbe, bićete u mogućnosti da:

Opišete proizvoljnu kombinacionu mrežu u VHDL-u koristeći opis na nivou logičkih kola

Opišete proizvoljnu kombinacionu mrežu u VHDL-u koristeći uslovne dodele

Opišete proizvoljnu kombinacionu mrežu u VHDL-u koristeći kombinacione procese

Simulirate vaš sistem uz pomoć ModelSim-Altera alata

Apstrakt i motivacija

Opis digitalnih sistema na nivou logičkih kola, bilo da ga radite crtajući električnu šemu ili opisujući VHDL jezikom na nivou logičkih kola, zahteva da poznajete Bulove jednačine sistema koji želite da opišete. Da biste došli do Bulovih jednačina, neophodno je da obavite proces izvođenja jednačine koji podrazumeva izvođenje SDNF iz istinitosne tablice željenog ponašanja sistema i minimizaciju te jednačine analitičkim pristupom ili nekom

metodom minimizacije, npr. Karnoovim mapama. Postupak izvođenja i minimizacije jednačine je šablonski i lako ga je automatizovati, a ne doprinosi kreativnosti u dizajnu samog digitalnog sistema. Zbog toga VHDL jezik

podržava konstrukcije koje će Vama, kao autoru digitalnog sistema, omogućiti da sistem opišete koncentrišući se na logiku ponašanja sistema, tj. šta želite da sistem ima na izlazu i pod kojim uslovima, a šablonski postupak izvođenja i minimizacije jednačina ostavite računaru. Na kraju vežbe potrebno je da svoj kombinacioni sistem

simulirate u ModelSim-Altera alatu, koji veoma liči na aritmetičko-logičku jedinicu nekog procesora.

Pokazna vežba 4 – VHDL opis kombinacionih mreža 2019/20

2

TEORIJSKE OSNOVE

1. Kombinacione mreže

Kombinacione mreže su složeni digitalni sistemi kod kojih logičko stanje izlaza zavisi samo od trenutnih vrednosti signala na ulazu. Osnovne vrste kombinacionih mreža su: Logička kola, Dekoder, Koder, Multiplekser, Demultiplekser, Sprežna kola, Pretvarači koda, itd.

Multiplekseri su kombinacione mreže koji imaju:

2n ulaza (iX2

n-1,...,iX1, iX0)

n adresnih upravljačkih ulaza (iSELn-1, iSELn-2, ... , iSEL0)

ulaz dozvole iE

jedan izlaz oY

Slika 1-1. Primer multipleksera sa 2n ulaza i istinitosna tablica za MUX 4x1

Demultiplekser je kombinaciona mreža koja ima:

jedan ulaz iX,

n adresnih (selekcionih) ulaza (iSELn-1, ...,iSEL0),

ulaz dozvole iE

2n izlaza (oY2

n-1, ... , oY0)

Slika 1-2. Primer demultipleksera sa 2n izlaza i istinitosna tablica za DEMUX 1x4

MUX 4x1

iE iSEL1 iSEL0 oY

0 X X 0

1 0 0 iX0

1 0 1 iX1

1 1 0 iX2

1 1 1 iX3

DEMUX 1x4

iE iSEL1 iSEL0 oY3 oY2 oY1 oY0

0 X X 0 0 0 0

1 0 0 0 0 0 iX

1 0 1 0 0 iX 0

1 1 0 0 iX 0 0

1 1 1 iX 0 0 0

Pokazna vežba 4 – VHDL opis kombinacionih mreža 2019/20

3

Dekoder je kombinaciona mreža koja ima:

n ulaza (iXn-1, …, iX0)

2n izlaza (oD2

n-1, …, oD0)

Slika 1-3. Primer dekodera sa n ulaza i 2n izlaza i istinitosna tablica za DEKODER 2x4

Koder je kombinaciona mreža koja ima:

2n ulaza (iX2

n-1, …, iX0)

n izlaza (oDn-1, …, oD0)

Slika 1-4. Primer kodera sa 2n ulaza i n izlaza i istinitosna tablica za KODER 4x2

Kod kodera se može javiti problem definisanja izlaza u slučaju kada je istovremeno aktivno više od jednog ulaza. U ovom slučaju se definiše lista prioriteta za ulazne signale i takav koder se naziva prioritetni koder.

U slučaju kada je više od jednog ulaza aktivno, običan koder će izbaciti pogrešnu vrednost, dok će na izlazu

prioritetnog kodera biti kôd ulaza višeg prioriteta.

Kod prioritetnih kodera kad pritisnete više tastera smatra se da je aktivan samo onaj koji ima najveću težinu - prioritet (bez obzira što su pritisnuti drugi).

Na Slici 1-5 prikazan je prioritetni koder, koji ima više aktivnih ulaza (iX1, iX3 i iX4). Obzirom da je iX4 ulaz

najvećeg prioriteta, na izlazu će biti prikazan njegov kôd oY2oY1oY0 = 100.

DEKODER 2x4

iE iX1 iX0 oD3 oD2 oD1 oD0

0 X X 0 0 0 0

1 0 0 0 0 0 1

1 0 1 0 0 1 0

1 1 0 0 1 0 0

1 1 1 1 0 0 0

KODER 4x2

iE iX3 iX2 iX1 iX0 oD1 oD0

0 X X X X 0 0

1 0 0 0 1 0 0

1 0 0 1 0 0 1

1 0 1 0 0 1 0

1 1 0 0 0 1 1

Pokazna vežba 4 – VHDL opis kombinacionih mreža 2019/20

4

Slika 1-5. Primer kodera i problema sa više aktivnih ulaza

2. VHDL opis kombinacionih mreža

VHDL je jezik za opis fizičke arhitekture, koji se koristi za opisivanje digitalnih sistema i FPGA sistema

dizajniranih za konfigurisanje od strane potrošača nakon proizvodnje.

Osnovna razlika između FPGA opisa digitalnih sistema i softverskog programiranja je način na koji se izvršavaju instrukcije. Instrukcije u softverskom programiranju (npr. C programski jezik) se izvršavaju sekvencijalno

(uzastopno), dok se instrukcije u FPGA opisu digitalnih sistema (u našem slučaju VHDL) uglavnom paralelno

izvršavaju (osim dodele vrednosti promenljivim unutar procesa u VHDL-u) . Još važnije, FPGA opis digitalnih

sistema ili FPGA dizajn se odnosi na dizajniranje digitalnih logičkih kola za definiranje ponašanja FPGA, dok se

programiranje softvera odnosi na izvršavanje toka sekvencijalnih instrukcija za izvođenje određenog ponašanja u softveru.

VHDL jezik omogućuje nekoliko načina za opis kombinacionih mreža, koji su kraći i čitljiviji od opisa na nivou

logičkih kola. Ovi opisi podsećaju na opis programske podrške pošto koriste iste ili slične konstrukte. Kombinacione mreže se u VHDL jeziku mogu opisati sledećim načinima:

Dodelom vrednosti signalu na nivou logičkih kola (način koji smo koristili u prethodnim vežbama), Dodelom vrednosti signalu pomoću ostalih VHDL operatora, Uslovnom dodelom vrednosti signalu,

Pomoću kombinacionih procesa.

2.1. Dodela vrednosti

Signalu se u VHDL jeziku vrednost može dodeliti pomoću operatora <= .

Na nivou logičkih kola, vrednost signala se definiše navodeći logički izraz sa desne strane, koristeći VHDL logičke operatore not, and, or, xor, nand, nor, xnor, kao što smo radili u prethodnim vežbama.

Prilikom definisanja (dodele) vrednosti nekom signalu, mogu se koristiti i ostali VHDL operatori. Trenutno je za

nas najzanimljiviji operator konkatenacije (&). Operator konkatenacije omogućuje da signalu dodelimo vrednost kombinacije nekih drugih signala. Na primer, ako pretpostavimo da je signal C 8-bitni, a signali A i B 4-bitni, tada

ako napišemo sledeće:

C <= A & B;

Pokazna vežba 4 – VHDL opis kombinacionih mreža 2019/20

5

signal C će dobiti vrednost koja se dobije spajanjem signala A i B. Viših 4 bita signala C će dobiti vrednost signala A, a nižih 4 bita signala C će dobiti vrednost signala B. Konkatenacija se može posmatrati i kao davanje novog imena skupu žica. Posmatrajući Sliku 2-1, ako signal A predstavlja gornje 4 žice, a signal B predstavlja donje 4 žice (svaka žica prenosi 1 bit, signali su 4-bitni), tada gornja konkatenacija znači da ovih 8 žica posmatramo kao jedinstveni signal C. Konkatenacija ne definiše nove komponente u digitalnom sistemu, već samo postojećim “žicama“ iz drugih signala daje novo ime i posmatra kao novu celinu.

Slika 2-1. Konkatenacija signala A i B u signal C

Konkatenacija se može vršiti i nad delovima signala koristeći operator indeksiranja, kao i nad konstantama. Na primer, ako napišemo sledeće:

C <= ‘1’ & A(1 downto 0) & B(3 downto 2) & “00”;

definišemo signal C širine 7 bita, i to jednog bita vrednosti konstante '1', dva bita iz signala A, dva bita iz signala B i dva bita vrednosti konstante '0'.

Za kompletan spisak VHDL aritmetičkih operatora preporučujemo da konsultujete udžbenik i naredne vežbe, jer oni izlaze izvan opsega ove vežbe.

2.2. Uslovna dodela vrednosti

Uslovna dodela se koristi da bi se opisala kombinaciona logika tipa “IF-THEN-ELSE”. Kako bi se skratio VHDL

opis, VHDL ne zahteva da se ovakva logika opisuje na nivou logičkih kola, već za to postoji posebna konstrukcija

prilikom dodele signala. Sintaksa uslovne dodele je data u Listingu 1-1.

Listing 1-1. Sintaksa uslovne dodele u VHDL-u

<signalName> <= <expression1> when <condition1> else

<expression2> when <condition2> else

-- ...

<expressionN> when <conditionN> else

<expressionDefault>;

Signal <signalName> dobija vrednost <expression1> ukoliko je ispunjen uslov <condition1>, u

suprotnom dobija vrednost <expression2> ukoliko je ispunjen uslov <condition2>, itd. Ukoliko nijedan od

uslova nije ispunjen, signal dobija vrednost <expressionDefault>.

Vrednosti sa desne strane se mogu definisati pomoću VHDL operatora kao u prethodnoj sekciji, a za definisanje uslova mogu se koristiti VHDL relacioni operatori:

= jednakost < manje od <= manje od ili jednako

/= nejednakost > veće od >= veće od ili jednako

Pokazna vežba 4 – VHDL opis kombinacionih mreža 2019/20

6

2.3. Kombinacioni procesi

Osim pomoću operatora dodele vrednosti, kojim se definiše vrednost izlaza kombinacione mreže na osnovu

vrednosti ulaza, kombinaciona mreža se može opisati i pomoću kombinacionog procesa.

Listing 1-2 prikazuje sintaksu za VHDL opis kombinacione mreže pomoću procesa.

Naredba process služi za ponavljanje niza naredbi u okviru procesa (tela procesa). Unutar zagrada u prvoj liniji

procesa definiše se lista osetljivosti procesa, koja služi alatu za simulaciju kako bi znao kada komponenta

(kombinaciona mreža) koja se opisuje procesom može da promeni izlaznu vrednost. Sa svakom promenom

argumenta iz liste osetljivosti izvršava se niz naredbi zadat u okviru tela procesa.

Prema osobinama kombinacione mreže, promena izlazne vrednosti se može desiti prilikom promene bilo kog od ulaza, pošto izlaz uvek predstavlja funkciju trenutnih vrednosti ulaza. Dakle, u listi osetljivosti kombinacionog

procesa treba da budu navedeni svi ulazi kombinacione mreže koja se procesom opisuje, odvojeni zarezom.

Listing 1-2. Sintaksa VHDL kombinacionog procesa

process (<sensitivityList>) begin

<processBody>

end process;

Telo procesa sadrži opis kombinacione mreže. Svim izlazima kombinacione mreže treba da se dodeli vrednost. Za tu svrhu se može koristiti operator dodele, ali i VHDL konstrukcije koje se mogu koristiti samo u procesima, a najčešće korištene su uslovne konstrukcije IF i CASE.

Listing 1-3 i Listing 1-4 prikazuju sintaksu ovih konstrukcija.

Kao i u većini programskih jezika IF-ELSE naredba služi za sekvencijalno izršavanje naredbi kada je zadovoljen zadati uslov. IF i CASE struktura imaju istu logiku kao i u drugim programskim jezicima. Samo iskazi koji su u delu

strukture za koju je uslov zadovoljen će definisati ponašanje izlaza kombinacione mreže.

Opšta sintaksa IF-ELSE naredbe je:

Listing 1-3. Sintaksa IF strukture

process (<sensitivityList>) begin

if (<condition1>) then

<statements>

elsif (<condition2>) then

<statements>

else

<statements>

end if;

end process;

CASE naredba se koristi za uslovno izvršavanje naredbi kada je zadovoljen unapred zadati uslov. Opšta stuktura CASE naredbe je:

Pokazna vežba 4 – VHDL opis kombinacionih mreža 2019/20

7

Listing 1-4. Sintaksa CASE strukture

process (<sensitivityList>) begin

case (<signalName>) is

when <value1> => <statements>

when <value2> => <statements>

-- ...

when <valueN> => <statements>

when others => <statements>

end case;

end process;

Prilikom definisanja kombinacionih mreža pomoću procesa koji sadrže IF i CASE, neophodno je definisati

svaki izlaz procesa u svakoj grani IF i CASE strukture. U suprotnom kombinaciona mreža je nepotpuno

definisana i rezultovaće lošim digitalnim sistemom. Takođe treba izbegavati paralelne IF i CASE strukture, pošto svaki izlaz definiše jedna logička funkcija, a svaka IF i CASE struktura predstavlja različitu logičku funkciju.

2.4. Koja je razlika ranijih načina opisivanja?

Naveli smo dva pristupa opisivanja kombinacionih mreža:

1. pomoću operatora dodele (što se još naziva i konkurentnim iskazom)

2. pomoću kombinacionih procesa

Između navedenih načina opisivanja kombinacionih mreža nema razlike, odnosno oba načina rezultuju istom kombinacionom mrežom. Procesi imaju više podržanih konstrukcija, a dodele su u najvećem broju slučajeva kraće i ne zahtevaju listu osetljivosti. Da li ćete koristiti dodele ili procese ostaje na vama.

3. Komplement

U ovoj vežbi ćemo koristiti različite prezentacije binarnih brojeva, pa je potrebno ponoviti znanje o komplementu i operacijama nad binarnim brojevima.

U decimalnom brojnom sistemu, pozitivni brojevi se razlikuju od negativnih po znaku ispred apsolutne

vrednosti broja (+ ili -).

U binarnom brojnom sistemu najznačajniji bit MSB definiše znak, a ostali biti sadrže apsolutnu vrednost broja. Ukoliko je MSB = 1, broj je negativan, dok je za MSB = 0 broj pozitivan. Problem kod ovog načina predstavljanja je što se ne dobija tačan rezultat ako u sabiranju učestvuju negativni brojevi. Jedan od najčešće korišćenih načina predstavljanja negativnih binarnih brojeva, kojim se rešava problem sa aritmetičkim operacijama nad negativnim brojevima, je komplement dvojke.

Komplement je zapravo dopuna datog broja do neke unapred definisane vrednosti. Najčešće se koristi za prikazivanje negativnih brojeva ili za realizaciju oduzimanja pomoću sabiranja. U binarnom brojnom sistemu (S =

2), mogu da se definišu samo dva komplementa: Komplement jedinice (I komplement) - dobijamo invertovanjem svakog bita polaznog binarnog broja

Komplement dvojke (II komplement) - dobijamo dodavanjem jedinice na komplement jedinice

zadatog broja

Pokazna vežba 4 – VHDL opis kombinacionih mreža 2019/20

8

U narednom primeru ćemo predstaviti broj -7(10) u komplementu dvojke:

7(10) = 0111(2)

Prvi komplement => 1000(2)

Drugi komplement => 1000(2) + 1 = 1001(2)

-7(10) = 1001(2)

Provera:

+7(10) = 0111(2) = 0*23 + 1*2

2 + 1*2

1 + 1*2

0 = 4 + 2 + 1 = 7

-7(10) = 1001(2) = -1*23 + 0*2

2 + 0*2

1 + 1*2

0 = -8 + 1 = -7

U nastavku su u Tabelama 3-1 i 3-2 dati primeri sabiranja i oduzimanja brojeva zapisanih u komplementu dvojke:

Tabela 3-1. Sabiranje brojeva zapisanih u komplementu dvojke

A +2 0010 +2 0010 -5 1011 +6 0110

B +3 0011 -7 1001 -2 1110 +7 0111

A + B +5 0101 -5 1011 -7 11001 +13 1101 = -3

Tabela 3-2. Oduzimanje brojeva zapisanih u komplementu dvojke

A +4 0100 0100 -7 1001 1001

B +2 -0010 +1110 -3 -1101 +0011

A - B = A+(-B) +2 X (1)0010 -4 X 1100

Drugi komplement je praktično jedini način predstavljanja negativnog broja u računarskom sistemu. Kada se na najznačajnijem bitu MSB pojavi prenos, on se ignoriše (odseca se), ali ostaje zapisan u C flegu (Carry flag).

4. VHDL opis za 7-segmentni displej

Do sada smo izlaz iz digitalnog sistema prikazivali na 7-segmentnom displeju samo uz pomoć logičke šeme. U ovoj vežbi ćemo uz pomoć VHDL opisa napraviti izlaz iz sistema za jedan segment 7-segmentnog displeja uz

detaljno objašnjenje, a ostatak segmenata ćete uraditi sami.

Na Slici 4-1. su prikazani brojevi i slova na 7-segmentnom displeju, koji se sastoji od 7 segmenata (3

horizontalna i 4 uspravna) i svaki segment je zapravo nezavisna LED dioda. Svaki segment je obeležen redom slovima u smeru kretanja kazaljke na satu: a, b, c, d, e, f, g.

U Tabeli 4-1 data je istinitosna tablica u kojoj se vidi koje segmente je potrebno aktivirati kako bi bio

prikazan svaki od brojeva 0 do 15. Ovo smo već koristili u laboratorijskoj vežbi 2, ali za crtanje logičke šeme.

Pokazna vežba 4 – VHDL opis kombinacionih mreža 2019/20

9

Slika 4-1. Ispis brojeva i slova na 7-segmentnom displeju

NAPOMENA: Segmenti 7-segmentnog displeja na MAX 10 platformi su aktivni na 0, tako da ih treba invertovati

u odnosu na Tabelu 4-1.

Tabela 4-1. Istinitosna tablica za prikaz brojeva i slova na 7-segmentni displej

Dekadna cifra

(hexadecimalna)

Binarni format Segmenti na 7-segmentnom displeju

B3 B2 B1 B0 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

10 (A) 1 0 1 0 1 1 1 0 1 1 1

11 (B) 1 0 1 1 0 0 1 1 1 1 1

12 (C) 1 1 0 0 1 0 0 1 1 1 0

13 (D) 1 1 0 1 0 1 1 1 1 0 1

14 (E) 1 1 1 0 1 0 0 1 1 1 1

15 (F) 1 1 1 1 1 0 0 0 1 1 1

U narednim Listinzima 4-1, 4-2 i 4-3 dati su primeri VHDL opisa za prikaz na jedan segment 7-segmentnog

displeja. Dodavanjem odgovarajućih vrednosti za svaki segment, možete napraviti logiku koja će prikazivati bilo

koji četvorobitni broj 0-15 (0-F) na 7-segmentnom displeju.

Listing 4-1. VHDL opis (uslovna dodela) za prikaz na jedan segment 7-segmentnog displeja

s7SEGM <= "0000001"; when sNUM = "0000" else -- 0

-- ...

"1111111"; -- isključeno

Pokazna vežba 4 – VHDL opis kombinacionih mreža 2019/20

10

Listing 4-2. VHDL opis (IF struktura) za prikaz na jedan segment 7-segmentnog displeja

signal sNUM: std_logic_vector (3 downto 0);

signal s7SEGM: std_logic_vector (6 downto 0);

process(<sensitivityList>) begin

if (sNUM = "0000") then

s7SEGM <= "0000001"; -- 0

--...

else

s7SEGM <= "1111111"; -- isključeno end if;

end process;

Listing 4-3. VHDL opis (CASE struktura) za prikaz na jedan segment 7-segmentnog displeja

signal sNUM: std_logic_vector (3 downto 0);

signal s7SEGM: std_logic_vector (6 downto 0);

process(<sensitivityList>) begin

case(sNUM) is

when "0000" => s7SEGM <= "0000001"; -- 0

-- ...

when others => s7SEGM <= "1111111"; -- isključeno end case;

end process;

Pokazna vežba 4 – VHDL opis kombinacionih mreža 2019/20

11

ZADACI

5. Multiplekser

Multiplekser je kombinaciona mreža koja koja implementira uslovnu logiku – vrednost izlaza multipleksera je

jednaka vrednosti jednog od njegovih ulaza. Koji ulaz se prosleđuje na izlaz zavisi od stanja selekcionih bita.

Vaš zadatak je da implementirate 4x1 multiplekser (4 ulaza opšte namene, 2 selekciona ulaza i 1 izlaz) na sledeće načine:

definisanjem tabele istinitosti, Bulove jednačine izlaza i crtanjem logičke šeme, opisom u VHDL-u na nivou logičkih kola, opisom u VHDL-u koristeći uslovnu dodelu,

opisom u VHDL-u koristeći kombinacioni proces.

Nakon opisa sistema u VHDL-u, proverite ispravnost vašeg sistema tako što ćete ulaze povezati na prekidače od 0 do 3, a selekcione bite na prekidače 6 i 7. Izlaz iz sistema neka bude na led diodi 0.

6. Primena multipleksera u složenijem sistemu

Vaš naredni zadatak je da implementirate složeniji digitalni sistem, sa dva 4-bitna ulaza (iA i iB), jednim

selekcionim ulazom od 2 bita (iSEL) i jednim 4-bitnim izlazom (oC), tako da se sistem ponaša prema sledećoj jednačini:

𝑜𝐶 = { 𝑖𝐴 𝑖𝑓 𝑖𝑆𝐸𝐿 = "00"𝑖𝐵 𝑖𝑓 𝑖𝑆𝐸𝐿 = "01"𝑖𝐴 + 𝑠𝐵𝑠𝐵 + 1 𝑖𝑓 𝑖𝑆𝐸𝐿 = "10"𝑖𝑓 𝑖𝑆𝐸𝐿 = "11"

Ulaz iB je u formatu ZNAK + MODUO od 3 bita i potrebno ga je konvertovati u format drugog komplementa,

kako bi se mogle izvršiti zadate aritmetičke operacije. 𝑖𝐵 = 𝑖𝐵(3) & 𝑖𝐵(2 𝒅𝒐𝒘𝒏𝒕𝒐 0); 𝑠𝐵 = 𝑛𝑜𝑡(𝑖𝐵) + 1; NAPOMENA: Kako bi se pravilno koristila operacija sabiranja, potrebno je na početku vhdl datoteke uključiti

STD_LOGIC_UNSIGNED biblioteku, za korišćenje neoznačenih brojeva.

Primetite da ovaj sistem sadrži 10 ulaza i 4 izlaza, što znači da on računa 4 Bulove funkcije od 10 promenljivih. Tradicionalni pristup projektovanju digitalnih sistema kroz istinitosne tablice i crtanjem logičke šeme bi trajao veoma dugo, a VHDL nam omogućuje opis istog sistema u samo nekoliko linija!

Ali nikada ne treba zaboraviti da ono što mi opisujemo VHDL-om jesu logička kola i jesu Bulove funkcije izvedene iz istinitosne tablice! VHDL je samo drugi (jednostavniji) način da se opiše isti sistem.

Prilikom implementacije sistema povežite ulaze iA i iB na prekidače, selekcione ulaze na tastere levo i desno, a

izlaz na led diode. Vodite računa da su ulazi u različitom formatu, kako bi dobili ispravan rezultat.

Pokazna vežba 4 – VHDL opis kombinacionih mreža 2019/20

12

ZAKLJUČAK

Koristeći uslovne dodele i kombinacione procese moguće je opisati veoma složenu Bulovu funkciju na kraći i razumljiviji način. Nakon kompletiranja ove vežbe, trebali bi biti u stanju da opišete proizvoljno složenu kombinacionu mrežu koristeći VHDL konstrukcije i tradicionalno, pomoću Bulovih funkcija.

DODATAK. Složeni kombinacioni sistem (priprema za test)

U VHDL jeziku za opis hardvera opisati i simulirati digitalni sistem prikazan na slici koji predstavlja jednostavnu

aritmetičko-logičku jedinicu.

Ulazi digitalnog sistema:

iA [7:0] – prvi ulazni operand koji se preuzima „dekodovan“, tj. kao indeks jednog od 8 bita,

iB [2:0] – drugi ulazni operand koji se preuzima „kodovan“ u binarnoj predstavi,

iSEL [1:0] – izbor operacije.

Izlazi digitalnog sistema:

oY [3:0] – rezultat operacije,

oZERO – oznaka da li je rezultat operacije jednak nuli.

Prioritetni

koder

+

>> 2

MUX

00

01

10

11

Dekoder

iA [7:0]

iB [2:0]

= 0

oY [3:0]

oZEROsDEC [7:0]

sDEC [7:4]

sDEC [3:0]

4

3

4

4

iSEL [1:0]

Slika 7-1. Složeni digitalni sistem

Operacije koje aritmetičko-logička jedinca podržava su:

zbir dva ulazna operanda,

zbir dva ulazna operanda podeljen sa 4, tj. aritmetički pomeren u desno za 2 mesta,

gornja 4 bita dekodovane vrednosti drugog operanda,

donja 4 bita dekodovane vrednosti drugog operanda.

Sistem simulirati izvršavajući svaku od operacija bar jednom, sa bar 2 različite vrednosti na svakom operandu. Bar jedan od slučajeva treba da rezultuje nulom i bar jedan od slučajeva brojem različitim od nule.