pokazna veŽba 1alat koji omogućava ne samo da opišete digitalni sistem nego i da ga simulirate,...
TRANSCRIPT
Pokazna vežba 1 – Osnovi projektovanja digitalnih sistema na nivou logičkih kola 2020/21
1
POKAZNA VEŽBA 1
Osnovi projektovanja digitalnih sistema na nivou logičkih kola
Potrebno predznanje
• Osnovno poznavanje digitalne elektronike
• Bulova (Boolean) algebra
Šta će biti naučeno tokom izrade vežbe?
Nakon urađene vežbe, bićete u mogućnosti da:
• razumete razna digitalna logička kola i njihovu funkciju
• projektujete sistem koji računa proizvoljnu Boolean funkciju pomoću logičkih kola
• opišete sistem sastavljen od digitalnih logičkih kola pomoću logičke šeme
• koristite Intel Quartus za opis i sintezu digitalnih sistema.
• sintetišete i implementirate vaš sistem za FPGA integrisano kolo pomoću Intel Quartus alata
Sa znanjem dobijenim u ovoj vežbi, bićete spremni da projektujete složenije sisteme sastavljene od digitalnih
logičkih kola, tzv. kombinacione mreže, o kojima će biti više reči u narednoj vežbi. Znanje dobijeno u ovoj vežbi je
važno za pravljenje mosta između digitalnog matematičkog sveta Bulove algebre i fizičkog sveta digitalne
elektronike. Osnovno znanje dobijeno u ovoj vežbi omogućiće vam da razumete složene digitalne sisteme koje
ćete projektovati tokom predmeta.
Apstrakt i motivacija
U današnje vreme, mnogi uređaji koji nas okružuju su digitalni. Ovi uređaji čitav svoj rad zasnivaju na
operacijama unutar skupa od samo dve vrednosti (nule i jedinice), a operacije koje nad njima vrše su operacije
Bulove algebre nad ovim skupom vrednosti. Računanje tokom rada aviona koje vodi računa da putnici sigurno
slete na odredište, Facebook chata na vašem mobilnom telefonu ili puta na Mesec se vrši isključivo pomoću
operacija Bulove algebre nad skupom od dve vrednosti. Nije teško zaključiti da je poznavanje Bulove algebre i
njenih operacija ključno znanje prilikom razumevanja rada uređaja modernih tehnologija.
Ova vežba će vas naučiti osnovama operacija Bulove algebre i projektovanja sistema koji računaju vrednosti
Bulovih funkcija, koji su osnovna gradivna komponenta digitalnih sistema. Vežba će vas naučiti i kako da opišete
te sisteme koristeći logičke šeme. Tokom projektovanja vašeg prvog digitalnog sistema, koristićete Intel Quartus
alat koji omogućava ne samo da opišete digitalni sistem nego i da ga simulirate, tj. proverite njegov rad, i
implementirate na određenoj fizičkoj platformi. Znanje koje dobijete u ovoj vežbi je prvi korak ka konačnom cilju
ovog predmeta – projektovanju složenih digitalnih sistema za računanje, tj. procesora.
Pokazna vežba 1 – Osnovi projektovanja digitalnih sistema na nivou logičkih kola 2020/21
2
TEORIJSKE OSNOVE
1. Digitalna logička kola
Digitalna logička kola su elektronska kola koja imaju mogućnost računanja vrednosti logičkih funkcija Bulove
algebre. Bulova algebra je definisana nad skupom od 2 vrednosti:
• Logička nula (0, FALSE) – predstavljena niskom vrednosti potencijala na žici,
• Logička jedinica (1, TRUE) – predstavljena visokom vrednosti potencijala na žici.
Neke od logičkih operacija Bulove algebre su:
• Negacija (NOT) – unarna operacija predstavljena znakom komplementa,
• Konjunkcija (AND) – binarna operacija predstavljena znakom množenja,
• Disjunkcija (OR) – binarna operacija predstavljena znakom sabiranja,
• Ekskluzivna disjunkcija (XOR) – binarna operacija predstavljena znakom sabiranja u krugu,
• razne kombinacije ranije navedenih operacija.
Tabela 1.1 na sledećoj strani daje prikaz osnovnih logičkih kola koja se koriste u digitalnoj elektronici, kao i
istinitosne tablice koje prikazuju šta će biti izlaz svakog od kola, za svaku kombinaciju ulaza. Svaki od ovih kola se
realizuje pomoću elektronskih komponenti – tranzistora. Fizička realizacija logičkih kola je izvan opsega ovog
predmeta i neće biti razmatrana. Prilikom projektovanja digitalnih sistema logička kola se koriste kao osnovne
komponente, odn. komponente na najnižem nivou hijerarhije.
Složene funkcije Bulove algebre se realizuju kombinacijom logičkih kola iz Tabele 1-1. Minimalni skup logičkih
kola predstavlja skup pomoću kojeg se može realizovati bilo koja složena funkcija Bulove algebre. Može se
dokazati da kolo NAND predstavlja minimalni skup, odn. bilo koja funkcija Bulove algebre može da se realizuje
koristeći samo NAND kolo. Slično tako, kolo NOR predstavlja minimalni skup. Zanimljivo je da mnogo korišćenije
funkcije u matematičkoj logici - AND, OR i NOT samostalno ne predstavljaju minimalni skup, već minimalni skup
sadrži sve tri navedene funkcije. Kao primer realizacije složenih funkcija, posmatrajmo funkciju 𝑌 = 𝐴𝐵 + 𝐶. Slika
1-1 pokazuje kako se navedena složena funkcija može realizovati pomoću logičkih kola.
Slika 1-1. Primer realizacije složene Bulove funkcije pomoću logičkih kola
Iako izgleda vrlo skromno, sa dve vrednosti i nekoliko operacija, prostor Bulove algebre je matematički
izuzetno moćan i dovoljan da se izvrše sva matematička računanja - od jednostavnih, kao što su sabiranje,
množenje, do veoma složenih kao što su sistemi odlučivanja u složenim uređajima ili numeričko rešavanje
parcijalnih diferencijalnih jednačina. Svi digitalni uređaji su zasnovani na računanju unutar prostora Bulove
algebre. Računanje prilikom kontrolisanja leta aviona, rada vašeg mobilnog telefona i kućnog računara,
automobila, nečeg složenog kao što je superračunar koji kontroliše let svemirske letelice ili nečeg jednostavnog
kao što je budilnik koji vodi računa da ne zakasnite na vežbe iz LPRS1 – sve se to vrši računanjem u prostoru
Bulove algebre i njene dve vrednosti i minimalno jedna operacija su dovoljne za to.
Pokazna vežba 1 – Osnovi projektovanja digitalnih sistema na nivou logičkih kola 2020/21
3
Tabela 1-1. Digitalna logička kola
Naziv Oznaka Funkcija Istinitosna tablica
NOT
𝑌 = �̅�
X Y
0 1
1 0
AND
𝑌 = 𝑋1𝑋2
X1 X2 Y
0 0 0
0 1 0
1 0 0
1 1 1
OR
𝑌 = 𝑋1 + 𝑋2
X1 X2 Y
0 0 0
0 1 1
1 0 1
1 1 1
XOR
𝑌 = 𝑋1 ⊕𝑋2
X1 X2 Y
0 0 0
0 1 1
1 0 1
1 1 0
NAND
𝑌 = 𝑋1𝑋2̅̅ ̅̅ ̅̅ ̅
X1 X2 Y
0 0 1
0 1 1
1 0 1
1 1 0
NOR
𝑌 = 𝑋1 + 𝑋2̅̅ ̅̅ ̅̅ ̅̅ ̅̅
X1 X2 Y
0 0 1
0 1 0
1 0 0
1 1 0
XNOR
𝑌 = 𝑋1 ⊕𝑋2
X1 X2 Y
0 0 1
0 1 0
1 0 0
1 1 1
Pokazna vežba 1 – Osnovi projektovanja digitalnih sistema na nivou logičkih kola 2020/21
4
Digitalna kola zasnovana na logičkim kolima iz Tabele 1-1 se nazivaju kombinacione mreže. Svaka
kombinaciona mreža zahteva određeno vreme računanja koje mora da protekne da bi se na izlazu pojavio validan
rezultat. Ovo vreme postoji zbog parazitne kapacitivnosti u elektronskim komponentima pomoću kojih se
realizuju logička kola i konačnog vremena koje mora da protekne da bi signal promenio vrednost od visokog ka
niskom potencijalu i obrnuto. Zbog toga se za svako logičko kolo definiše kašnjenje logičkog kola, a kašnjenje
složenog logičkog kola se računa kao kašnjenje na najdužoj putanji od nekog ulaza do nekog izlaza. Za primer sa
Slike 1-1, kašnjenje datog kola jednako je zbiru kašnjenja AND i OR kola, pošto je najduža putanja upravo od ulaza
A ili B do izlaza Y, koja prolazi kroz oba kola (da bi OR kolo moglo da računa izlaz, prvo mora AND kolo da izračuna
vrednost međurezultata). Kašnjenje kola direktno određuje maksimalnu frekvenciju na kojoj digitalni sistem može
da funkcioniše, o čemu ćemo više pričati kasnije.
Iako su dovoljna za sva računanja, logička kola iz Tabele 1-1 nisu dovoljna da bi se realizovao kompletan
digitalni sistem. Da bi računanja imala smisla, rezultat tih računanja negde treba da se zapamti kako bi bio
ponovno iskoristiv. Za tu svrhu se koriste elektronska kola koja imaju dva stanja čime se logička nula i jedinica
mogu „upamtiti“ u tim kolima. Uvodeći mogućnost memorisanja vrednosti, omogućava se da digitalni sistem
prolazi kroz stanja, čime se uvodi sekvencijalnost u rad digitalnog sistema. Kola koja uz komponente iz Tabele 1-1
sadrže i elektronska kola za memorisanje nazivaju se sekvencijalne mreže. O njima će više biti reči kasnije.
Pokazna vežba 1 – Osnovi projektovanja digitalnih sistema na nivou logičkih kola 2020/21
5
ZADACI
2. Moj prvi digitalni sistem (Intel Quartus tutorial)
Projektovanje složenih digitalnih sistema uz pomoć Intel Quartus programskog paketa je moguće
formiranjem:
• logičke šeme digitalnog sistema (Schematic) ili
• HDL (Hardware Description Language) opisa digitalnog sistema
Intel Quartus alat podržava opis digitalnih sistema pomoću dva jezika za opis fizičke arhitekture:
1. VHDL (Very high speed integrated circuit Hardware Description Language)
2. VERILOG
Postupak implementacije digitalnog sistema u Intel Quartus alatu se uopšteno može podeliti u nekoliko
uzastopnih koraka:
1. Formiranje projekta
2. Formiranje datoteke u kojoj će biti opis sistema logičkom šemom ili VHDL jezikom,
3. Opis sistema koristeći logičku šemu ili VHDL jezik,
4. Sinteza digitalnog sistema
5. Dodela pinova
6. Implementacija digitalnog sistema na FPGA integrisano kolo
2.1. Formiranje projekta Nakon pokretanja Intel Quartus programskog paketa, prikazuje se osnovni prozor (Slika 2-1), koji je podeljen
na nekoliko sastavnih prozora:
• Početni prozor (Project Navigator) – levi gornji deo ekrana
Omogućava pregled i izmenu projekta i njegovih elemenata.
• Izlazni prozor (Messages) – donji deo ekrana
Prikazuje izlazne poruke pokrenutih procesa.
• Prozor za zadatke (Tasks) – levi srednji deo ekrana
Omogućava pokretanje programskog prevodioca, kao i pojedinačnih koraka: analiza, sinteza,
asembler, vremenska analiza itd.
• Radni prozor (Workspace) – centralni i najveći deo ekrana
U ovom prozoru se pri samom pokretanju Quartus programa mogu pokrenuti neke početne
operacije, kao što su formiranje projekta, otvaranje već postojećeg projekta, kao i linkovi ka nekim
dodatnim informacijama. Nakon formiranja ili otvaranja projekta, u ovom prozoru se vrši pisanje i
ispravljanje HDL koda ili drugih tekstualnih datoteka, kao i formiranje logičkih šema.
Pokazna vežba 1 – Osnovi projektovanja digitalnih sistema na nivou logičkih kola 2020/21
6
Slika 2-1. Osnovni prozor Intel Quartus programskog paketa
Na početku projektovanja digitalnog sistema potrebno je napraviti projektnu datoteku koja će pamtiti sve
relevantne podatke o projektu (ime projekta, korišćena komponenta, hijerarhijska struktura, datoteke uključene u
projekat). Projektne datoteke se prepoznaju po ekstenziji *.qpf. Kreiranje projekta se može započeti odabirom
komande File > New Project ili pritiskom na New Project Wizard u radnom prozoru, čime se otvara prozor za
definisanje informacija o projektu kao na Slika 2-2.
Slika 2-2. Formiranje novog projekta
Pokazna vežba 1 – Osnovi projektovanja digitalnih sistema na nivou logičkih kola 2020/21
7
U prvo polje Working directory potrebno je upisati lokaciju projektnog direktorijuma u vidu putanje do
odredišnog direktorijuma, dok u drugo polje Name treba upisati ime projekta. Treće polje Top-level design entity
dobija automatski naziv koje je dato u drugom polju.
Pritiskom na dugme Next prelazi se na sledeći prozor Project Type, gde je moguće izabrati kreiranje novog
projekta (Empty project) bez unapred definisanih datoteka ili kreiranje projekta sa unapred definisanim
datotekama (Project template). Za potrebe ove vežbe izaberite prvu opciju Empty project (Slika 2-3).
Slika 2-3. Izbor tipa projekta
Sledeći prozor omogućava dodavanje postojećih datoteka što ćemo u ovoj vežbi preskočiti pritiskom na
dugme Next (Slika 2-4).
Slika 2-4. Dodavanje postojećih datoteka
Pokazna vežba 1 – Osnovi projektovanja digitalnih sistema na nivou logičkih kola 2020/21
8
U ovom koraku je potrebno podesiti tip uređaja tj. programske platforme za koju se projektuje digitalni sistem
(Slika 2-5). U našem slučaju treba odabrati familiju MAX 10 (DA/DF/DC/SA/SC) i uređaj MAX 10 SA. Zatim u
desnom delu prozora treba izabrati paket UFBGA, broj pinova 169 i ocenu brzine jezgra 8. U donjem delu prozora
će se pojaviti lista dostupnih uređaja koja obuhvata prethodno zadate parametre i treba izabrati uređaj
10M16SAU169C8G. Ovaj korak je neophodan ukoliko želimo da naš dizajn/blok šemu spustimo na ploču i
probamo je uživo.
Slika 2-5. Odabir programabilne sekvencijalne mreže
Ukoliko postoji potreba za dodavanjem alata drugih proizvođača (Third-party tools), to je moguće uraditi u
sledećem koraku podešavanjem EDA alata (Electronic Design Automation). U ovom koraku je potrebno podesiti
polje Simulation, radi simulacije digitalnog sistema.
Simulator će biti primarni način da proverimo ispravnost rada našeg sistema. U praksi se simulator i ploča
koriste zajedno prilikom razvoja. Prednost realne fizičke ploče jeste njena brzina i preglednost, dok je prednost
simulatora to što nam daje mnogo detaljniji uvid u vrednosti svih intenrih signala. Takođe, tipično u jednom timu
više projektanata sistema deli jednu ploču.
Sama provera ispravnosti sistema se obavlja uz pomoć posebnih VHDL datoteka koji se zovu Test Bench-ovi.
Njima ćemo se detaljnije baviti kasnije u toku semestra. U ovom trenutku je dovoljno samo podesiti ModelSim-
Alteru kao simulator i pritisnemo na dugme Next (Slika 2-6).
Pokazna vežba 1 – Osnovi projektovanja digitalnih sistema na nivou logičkih kola 2020/21
9
Slika 2-6. Podešavanje EDA alata
Poslednji prozor za formiranje projekta prikazuje sažetak prethodno odabranih postavki (Slika 2-7). Ukoliko je
potrebno promeniti neki parametar, klikom na dugme Back se može vratiti unatrag kroz opisane prozore i
promeniti željena informacija. Klikom na dugme Finish se završava formiranje projekta i dobija se osnovni Intel
Quartus prozor kao na Slici 2-8.
Slika 2-7. Sažetak odabranih postavki za novi projekat
Pokazna vežba 1 – Osnovi projektovanja digitalnih sistema na nivou logičkih kola 2020/21
10
Slika 2-8. Početni prozor novog projekta u Intel Quartus programskom paketu
2.2 Formiranje logičke šeme digitalnog sistema Nova datoteka u koju će biti smeštena logička šema digitalnog sistema se formira izborom File->New iz
glavnog menija, nakon čega dobijamo prozor kao na Slici 2-9. Potrebno je izabrati Block Diagram/Schematic File i
pritisnuti OK.
Slika 2-9. Formiranje datoteke sa opisom digitalnog sistema
Nakon ovog koraka, potrebno je dati ime novoj datoteci u koju će se smestiti logička šema izborom Save As iz
File menija. U polje File name potrebno je uneti ime datoteke, dok u polju Save as type treba izabrati Block
Pokazna vežba 1 – Osnovi projektovanja digitalnih sistema na nivou logičkih kola 2020/21
11
Diagram/Schematic File (*.bdf). Takođe je potrebno označiti polje Add file to current project. Zatim pritisnite
dugme Save, kako bi sačuvali novoformiranu datoteku u projektni direktorijum (Slika 2-10).
Slika 2-10. Dodavanje nove datoteke u Quartus projekat
Konačni izgled prozora sa grafičkim editorom za pravljenje logičke šeme prikazan je na Slici 2-11. Logička
šema se formira dodavanjem elemenata logičkih kola pritiskom na dugme koje izgleda kao logičko AND kolo ,
koje je obeleženo na Slici 2-11 ili duplim pritiskom na grafički prozor. Tada se otvara novi prozor prikazan na Slici
2-12, koji omogućava veliki izbor logičkih kola, ulaza, izlaza itd.
Slika 2-11. Grafički prozor za pravljenje logičke šeme
Pokazna vežba 1 – Osnovi projektovanja digitalnih sistema na nivou logičkih kola 2020/21
12
Slika 2-12. Dodavanje elemenata logičke šeme
Simboli koji odgovaraju logičkim kolima iz Tabele 1-1 su:
• not – invertor (logičko kolo NOT),
• and2 – dvoulazno AND kolo,
• or2 – dvoulazno OR kolo,
• xor2 – dvoulazno XOR kolo,
• nand2 – dvoulazno NAND kolo,
• nor2 – dvoulazno NOR kolo,
• xnor2 – dvoulazno XNOR kolo.
Veze između kola se definišu spajanjem njihovih ulaza/izlaza pomoću žica: Orthogonal Node Tool.
Ulazi i izlazi sistema se definišu pomoću ulazno/izlaznih markera: Pin Tool (Input, Output, Bidir).
Nakon što je završeno pravljenje logičke šeme, potrebno je dati imena ulazima i izlazima. Duplim klikom na
ulaz, otvara se prozor kao na Slici 2-13 i potrebno je dodeliti imena ulazima i izlazima i podesiti podrazumevanu
vrednost na VCC ili GND.
Slika 2-13. Dodela imena ulazima i izlazima
Pokazna vežba 1 – Osnovi projektovanja digitalnih sistema na nivou logičkih kola 2020/21
13
2.3.Opis digitalnog sistema logičkom šemom Vreme je da opišete vaš prvi digitalni sistem! Nacrtajte logičku šemu sistema sa Slike 2-14.
Slika 2-14. Naš prvi digitalni sistem
2.4. Sinteza digitalnog sistema Napravljena datoteka sa logičkom šemom MyFirstDigitalSystem.bdf se obrađuje pomoću nekoliko Quartus
Prime alata za analizu i sintezu i generiše implementaciju za ciljnu platformu. Ovi alati se kontrolišu pomoću
prevodioca.
Prevođenje se pokreće izborom Processing->Start Compilation iz glavnog menija ili pritiskom na dugme u
gornjem delu ekrana koje izgleda kao plavi trougao . U toku prevođenja prikazuju se poruke u donjem prozoru,
dok se nakon završetka prikazuje prozor sa statusom, greškama i upozorenjima.
Ukoliko je digitalni sistem ispravan, jedna od poslednjih poruka će biti da je prevođenje uspešno završeno i da
nema grešaka. Ukoliko ipak greške postoje, duplim klikom na poruku sa greškom, Intel Quartus će prikazati deo na
šemi koji ima problem. Ispravite grešku i ponovo pokrenite prevođenje.
2.5. Provera ispravnosti sistema – VHDL test bench
Nakon uspešne sinteze sistema, sledeći korak je provera ispravnosti. To je moguće uraditi na dva načina – uz
pomoć razvojne ploče i uz pomoć simulatora. U slučaju razvojne ploče slede još dva koraka i to su dodela pinova
(proces gde se ulazi i izlazi našeg dizajna povezuju na fizičke komponente kao što su prekidači, diode i slično) i
implementacija (pravljenje posebne datoteke koja se koristi za konfiguraciju FPGA integrisanog kola koje potom
emulira naš sistem). S obzirom da u najvećem delu semestra nećete imati ploču pored sebe, mi ćemo ispravnost
naših sistema proveravati uz pomoć simulatora. Generalno je praksa da se u ranim fazama razvoja oslanjamo
prvenstveno na simulator, a kasnije na ploču. Za potrebe simulatora je potrebno kreirati posebnu VHDL datoteku
koja se naziva Test Bench.
Test bench je digitalni sistem BEZ PROLAZA i služi isključivo za proveru rada nekog drugog digitalnog sistema.
Zadatak test bencha je da definiše ulaz u sistem koji proverava i kupi vrednosti izlaza u svoje interne signale, kako
bi oni mogli biti analizirani od strane alata za simulaciju.
Za razliku od opisa samog sistema (bilo da je u pitanju blok šema ili VHDL opis), test bench opisuje sekvencu
vrednosti ulaznih signala, čime se poprilično razlikuje od samog opisa digitalnog sistema koji nema sekvencijalnost
odnosno vremensku komponentu. Test bench uvodi sekvencijalnost u svoj opis zbog potrebe da se u njemu
definiše vremenski redosled signala, odnosno da se jasno definiše kada se koja vrednost šalje na ulaz i koliko traju
pauze između dve promene vrednosti na ulazu. Test bench biva korišten isključivo od strane simulatora,
programskog alata za simulaciju rada digitalnog sistema, zbog čega i biva interpretiran na „softverski“ način,
sekvencijalno.
Pokazna vežba 1 – Osnovi projektovanja digitalnih sistema na nivou logičkih kola 2020/21
14
Pre nego što napravimo test bench datoteku, potrebno je podesiti EDA alate u slučaju da ste taj korak
preskočili tokom kreiranja projekta. Izborom opcije u glavnom meniju Assignment->Settings->EDA Tool Settings
podesite deo za simulaciju kao na Slici 2-15. Na vežbama ćemo koristiti alat ModelSim-Altera i format VHDL za
opis digitalnog sistema i test datoteke, tako da je potrebno izabrati ove dve opcije.
Slika 2-15. Podešavanje simulatora
Simulator je sada podešen i potrebno je ponovo prevesti ceo projekat, kako bi se kreirao folder za simulaciju
u koji ćemo dodati novu datoteku za testiranje. U slučaju da ste prilikom kreiranja projekta već podesili ovu
stavku, automatski će biti kreiran folder za simulaciju.
Napravite novu *.vhd datoteku, a zatim je sačuvajte kao *_tb.vhd, gde je * naziv entiteta koji se testira (u
našem slučaju MyFirstDigitalSystem), a dodatak u nazivu tb označava da je to test bench datoteka.
Test datoteku je potrebno snimiti u folderu simulation/modelsim i dodati je u projekat pomoću opcije menija
Project->Add/Remove Files in Project...
Takođe je potrebno dodati test bench datoteku i u simulaciju izborom Assignment->Settings->EDA Tool
Settings->Simulation kao na Slici 2-16 i Slici 2-17.
Pokazna vežba 1 – Osnovi projektovanja digitalnih sistema na nivou logičkih kola 2020/21
15
Slika 2-16. Dodavanje nove test bench datoteke 1/2
Pritisnite Test Benches… dugme i otvoriće se prozor za dodavanje nove datoteke, gde je potrebno uneti ime
test datoteke (može biti više test bench datoteka), podesiti period simulacije na 1 µs, navesti putanju do test
bench datoteke i pritisnuti Add.
Slika 2-17. Dodavanje nove test bench datoteke 2/2
Pokazna vežba 1 – Osnovi projektovanja digitalnih sistema na nivou logičkih kola 2020/21
16
Nakon kreiranja test datoteke i dodavanja u projekat i simulaciju, možemo početi sa pisanjem koda koji će
testirati naš digitalni sistem. Listing 1-1 prikazuje kako treba da izgleda test bench za verifikaciju našeg prvog
digitalnog sistema.
Listing 1-1. Struktura VHDL test bench datoteke library ieee;
use ieee.std_logic_1164.all;
entity MyFirstDigitalSystem_tb is
end MyFirstDigitalSystem_tb;
architecture Test_tb of MyFirstDigitalSystem_tb is
signal sA : std_logic;
signal sB : std_logic;
signal sY : std_logic;
component MyFirstDigitalSystem
port(
iA : in std_logic;
iB : in std_logic;
oY : out std_logic
);
end component;
begin
-- instanciranje i mapiranje glavnih portova i signala
uut : MyFirstDigitalSystem port map (
iA => sA,
iB => sB,
oY => sY
);
stimulus : process
begin
sA <= '0';
sB <= '0';
wait for 100 ns;
sA <= '0';
sB <= '1';
wait for 100 ns;
sA <= '1';
sB <= '0';
wait for 100 ns;
sA <= '1';
sB <= '1';
wait;
end process stimulus;
end architecture;
Pokazna vežba 1 – Osnovi projektovanja digitalnih sistema na nivou logičkih kola 2020/21
17
Sve VHDL datoteke se sastoje iz tri dela: use, entity i architecture. Iako se test bench-evi suštinski razlikuju
od VHDL opisa sistema, i dalje prate istovetnu strukturu.
Use deo se nalazi na početku svake VHDL datotete i nakon te ključne reči se navode sve biblioteke koje će biti
korišćene. Za potrebe ovog semestra nama će biti dovoljne samo dve: biblioteka u kojoj se nalaze standardni
logički tipovi i digitalna logička kola (ieee.std_logic_1164) i malo kasnije u semestru ćemo se upoznati i sa
bibliotekom koja nam omogućuje neke osnovne aritmetičke operacije sa neoznačenim i sa označenim brojevima.
Entity deo definiše prolaze (ulaze i izlaze) sistema. Preko prolaza koji se nazivaju port-ovi, naš sistem može da komunicira sa spoljašnim svetom. Ako pogledamo šemu našeg prvog digitalnog sistema i odlučimo da ga opišemo uz pomoć VHDL-a, u ovom delu bismo naveli ulaze iA i iB kao i izlaz oY i rekli da su tipa std_logic. Kada je reč o test bench-evima, entity deo će uvek biti prazan iz razloga što je test bench u suštini digitalni sistem bez prolaza – on je krajnja tačka i neće se povezivati ni sa kakvim spoljašnim svetom.
Deo architecture opisuje “unutrašnost” sistema. U primeru našeg prvog digitalnog sistema bismo ovde naveli
da naš sistem ima jedno AND kolo, kao i jedan invertor (NOT). Kod arhitekture test bencha, definišemo samo
interne signale u koje ćemo mapirati ulaze i izlaze iz glavnog entiteta koji testiramo i koji smo opisali u prethodnoj
VHDL datoteci. Potrebno je napraviti onoliko signala koliko imamo prolaza u glavnom entitetu (blok
šemi/dizajnu).
Takođe, u okviru arhitekture test bench-a moramo instancirati komponentu koju ćemo testirati i povezati
njene prolaze sa signalima u test bench-u (port map). Prvo je potrebno uraditi deklaraciju komponente.
Komponenta izgleda indentično kao entity blok modula koji želite da uključite, samo je ključna reč entity
zamenjena sa component. Komponenta se deklariše u sekciji pre ključne reči begin unutar arhitekture. Posle toga
se glavni entitet instancira unutar arhitekture, ali posle begin. Prilikom mapiranja (povezivanja) prolaza i signala,
potrebno je sa leve strane navesti prolaze glavnog entiteta, a sa desne strane znaka => signale iz test bench
arhitekture.
Nakon instanciranja komponente i mapiranja, potrebno je zadati sekvencu ulaznih vrednosti sa kojima želimo da verifikujemo sistem i to ćemo navesti u stimulus procesu, nakon ključne reči begin od stimulus procesa.
Kako bi verifikovali da naš sistem radi ispravno, poželjno je u test bench-u pokriti sve moguće kombinacije
ulaza (iA i iB) iz istinitosne tablice, a zatim u simulaciji proveriti da li smo dobili željeni rezultat (oY) za svaku od
zadatih kombinacija ulaza.
Naš sistem ima 2 ulaza i potrebno je verifikovati ukupno 22 tj. 4 kombinacije, tako da ćemo ispravnost sistema proveriti koristedi sledeću sekvencu ulaznih vrednosti:
• na početku, oba ulaza neka budu jednaka 0 i neka to stanje traje 100 ns,
• nakon toga, neka signal iA ima vrednost 0, a signal iB vrednost 1 i neka novo stanje traje 100 ns,
• nakon toga, neka signal iA ima vrednost 1, a signal iB vrednost 0 i neka novo stanje traje 100 ns,
• nakon toga, oba ulaza neka budu jednaka 1 i neka ovo stanje traje do kraja simulacije.
Na ovaj način smo pokrili sve kombinacije iz istinitosne tablice za ulaze iA i iB.
Vremenska komponenta u opisu sekvence ulaznih vrednosti se opisuje koristeći wait for iskaz. Ovaj iskaz
govori simulatoru koliko dugo da „drži“ vrednosti na ulazu do naredne promene.
Komentari u VHDL-u se pišu nakon dva minusa (--). Sve navedeno nakon toga alat ignoriše.
Pokazna vežba 1 – Osnovi projektovanja digitalnih sistema na nivou logičkih kola 2020/21
18
Na kraju stimulus procesa treba navesti iskaz wait jer on govori simulatoru da poslednje stanje ulaznih
signala zadrži beskonačno, odnosno do kraja simulacije. U suprotnom, simulacija će stati istog trenutka i
verovatno nećete biti u mogućnosti da vidite izlaz za poslednju kombinaciju ulaza.
U slučaju da vam ovo sve deluje komplikovano i da ima previše informacija, budite bez brige – to je proces
koji je stalno isti prilikom kreiranja svakog novog projekta i kroz par vežbi ćete ga savladati u potpunosti i biti u
stanju da pišete sopstvene test bench datoteke.
* * *
Kada smo uspešno napisali i uvezali naš test bench, sledeći korak jeste samo pokretanje simulacije. Nažalost,
simulator Modelsim-Altera nije u stanju da direktno simulira blok šeme. Ono što nam razrešava ovaj problem
jeste što se iz logičke blok šeme samo jednim klikom može izgenerisati u potpunosti ekvivalentan sistem koji će
biti opisan u VHDL-u. Detalji se vide na slici 2-18.
Slika 2-18. Generisanje ekvivalentne VHDL datoteke spram blok šeme 1/2
Potrebno je označiti našu šemu, zatim kliknuti na File->Create/Update->Create HDL Design File from Current
File. Otvoriće se novi dijalog kao na slici 2-19. Potrebno je odabrati opciju VHDL. U vrlo kratkom roku će alat
izgenerisati novu datoteku pod istim imenom ali ovoga puta sa ekstenzijom .vhdl.
Pokazna vežba 1 – Osnovi projektovanja digitalnih sistema na nivou logičkih kola 2020/21
19
Slika 2-19. Generisanje ekvivalentne VHDL datoteke spram blok šeme 2/2
U okviru Quartus projekta ne možemo imati dva ili više dizajnova koji se zovu identično. Iz tog razloga ćemo
iz projekta isključiti našu šemu (ima ekstenziju .bdf) a ubaciti novu izgenerisanu datoteku. Ovo možemo uraditi
klikom na padajući meni Project->Add/Remove Files in Project. Klikom na ... koje se nalazi u produžetku File
name: možemo pretražiti naš računar i tu pronaći i dodati sve datoteke koje želimo. Datoteke izbacujemo iz
projekta tako što ih obeležimo i kliknemo na Remove.
Slika 2-20. Izbacivanje šeme/ubacivanje izgenerisane VHDL datoteke
Pokazna vežba 1 – Osnovi projektovanja digitalnih sistema na nivou logičkih kola 2020/21
20
Kada smo završili zamenu jednog dizajna drugim, potrebno je sačuvati projekat i još jednom pokrenuti proces
sinteze. Ukoliko dobijete poruku da je sinteza uspešno završena možemo (konačno) preći na pokretanje
simulacije.
2.6. Pokretanje simulacije
ModelSim-Altera simulator je sastavni deo Intel Quartus programskog paketa. Uz pomoć ovog programa
moguće je izvršiti funkcionalnu proveru ispravnosti digitalnog sistema koji se projektuje. Ovde se navode samo
osnovne komande za njegovo korišćenje.
Simulacija HDL koda se izvršava u tri osnovna koraka (važi za svaki HDL simulator):
• Prevođenje izvornog koda (Compile) – sadrži ranije navedenu opciju za proveru sintakse
• Pokretanje radnog režima za simulaciju (Simulate)
• Pokretanje simulacije (Run)
Kada se ModelSim-Altera simulator pozove iz radnog okruženja sva tri koraka se izvrše automatski. U slučaju
greške u nekom od koraka, poruka o grešci će biti ispisana u konzoli.
U prethodnim koracima za pisanje test bench datoteke uradili smo delimično podešavanja i za simulator. Za
ispravnu simulaciju, takođe je potrebno podesiti putanju do izvršne datoteke ModelSim-Altera simulatora
izborom opcije glavnog menija Tools->Options->General->EDA Tool Options i u polju ModelSim-Altera podesiti
putanju do foldera sa izvršnom datotekom, kao na Slici 2-21.
Slika 1-21. Podešavanje putanje do izvršne datoteke ModelSim-Altera simulatora
Pokazna vežba 1 – Osnovi projektovanja digitalnih sistema na nivou logičkih kola 2020/21
21
U zavisnosti od lokacije na kojoj ste instalirali Quartus je moguće da će ova putanja kod vas biti različita. Bitno
je da putanja pokazuje na win32aloem direktorijum. U slučaju da imate problem sa ovim, probajte na kraju da
dodate još jedan \ posle win32aloem.
Sada možemo pokrenuti ModelSim-Altera simulator u meniju Tools->Run Simulation Tool->RTL Simulation i
dobićemo prozor kao na Slici 2-22.
Slika 2-22. Izgled osnovnog prozora ModelSim-Altera simulatora
Izborom opcije Simulate->Start Simulation, otvoriće se prozor kao na Slici 2-23, gde u polju work vidimo koje
su sve datoteke uključene u simulaciju. Potrebno je izabrati test bench datoteku koji želimo da simuliramo i
pritisnemo OK.
Slika 2-23. Pokretanje simulacije
Pokazna vežba 1 – Osnovi projektovanja digitalnih sistema na nivou logičkih kola 2020/21
22
Nakon toga, otvara se novi prozor, gde se sa leve strane nalazi sim prozor u kojem su prikazani delovi sistema
(Design Unit) i podržane biblioteke, dok se u desnom delu nalaze odgovarajući signali (Slika 2-24).
Slika 2-24. Prikaz signala u simulaciji
Za svaki signal koji želite da pratite u dijagramu signala, pritisnite desni klik na ime signala u prozoru Objects i
izaberite Add To / Wave / Selected Signal, nakon čega će se pojaviti prozor za iscrtavanje signala (Slika 2-25).
Pored signala sa vrha hijerarhije, moguće je dodati i druge signale u prozor za prikaz rezultata simulacije. Oblici
naknadno uključenih signala će biti iscrtani samo u vremenskim trenucima simulacije nakon trenutka uključivanja
signala u listu. Ukoliko želimo omogućiti iscrtavanje oblika svih signala od nultog trenutka (i onih naknadno
dodatih) neophodno je zatvoriti prozor rezultata simulacije i ponovo pokrenuti simulaciju. Alternativno možete
restartovati simulaciju i ponovo pokrenuti opciju Run.
Pokazna vežba 1 – Osnovi projektovanja digitalnih sistema na nivou logičkih kola 2020/21
23
Slika 2-25. Dodavanje signala za iscrtavanje
U gornjem delu prozora sa ikonicama, pronađite ikonicu koja definiše period signala (npr. 100ns). Desno od te
ikonice je ikonica za pokretanje simulacije. Pokrenite simulaciju i signali će se pojaviti u prozoru za iscrtavanje, kao
na Slici 2-26. Svi signali bi trebali biti zelene boje. Ukoliko je neki signal crvene boje, to znači da jedan ili više ulaza
nisu definisani dobro. Sada proverite da li su dobijeni rezultati dobri uz pomoć istinitosne tablice.
Slika 2-26. Pokretanje simulacije
Pokazna vežba 1 – Osnovi projektovanja digitalnih sistema na nivou logičkih kola 2020/21
24
Grupa ikona na Slici 2-27 omogućava podešavanje prikaza signala kao i kontrolu toka izvršenja simulacije.
Slika 2-27. Ikonice za podešavanje signala i kontrolu izvršenja simulacijee
Značenja pojedinih ikona su:
• Zoom In – povećanje nivoa uvećanja.
• Zoom Out – smanjenje nivoa uvećanja.
• Zoom to Full View – podešavanje nivoa uvećanja na nivo koji omogućava pregled kompletnog
toka simulacije.
• Find Previous Transition – skok na prethodnu promenu signala.
• Find Next Transition – skok na narednu promenu signala.
• Insert Cursor – postavljenje pojedinačnog markera.
• Delete Cursor – uklanjanje pojedinačnog markera.
• Restart – restartovanje simulacije.
• Run All – pokretanje izvršenja simulacije na neodređen vremenski period.
• Run– pokretanje izvršenja simulacije na vremeski period definisan u susednom polju.
• Run Length – dužina trajanja simulacije
• Step Into – izvršenje simulacije korak po korak sa uvidom u progres izvršenja u HDL kodu.
• Break – zaustavljanje izvršenja simulacije.
Da bi simulacioni dijagram bio pregledniji, potrebno je pritisnuti na ikonu Zoom to Full View. Na početku,
dijagram prikazuje sve signale i vektore u binarnim vrednostima. Radi lakše čitljivosti vektora, moguće je
promeniti način ispisivanja njihovih vrednosti u neki drugi brojni sistem, npr. heksadecimalni.
2.7. *Bonus – kratko pojašnjenje izgenerisane VHDL datoteke
Kada ste ustanovili da sistem radi ispravno, ukoliko vas zanima možete otvoriti izgenerisanu VHDL
datoteku. Ona bi trebala da izgleda slično kao na Listingu 2.1.
Listing 2-1. Struktura VHDL test bench datoteke
library ieee;
use ieee.std_logic_1164.all;
library work;
entity MyFirstDigitalSystem is
port (
iA : in std_logic;
iB : in std_logic;
oY : out std_logic;
);
end MyFirstDigitalSystem;
Pokazna vežba 1 – Osnovi projektovanja digitalnih sistema na nivou logičkih kola 2020/21
25
architecture bdf_type of MyFirstDigitalSystem is
signal sS : std_logic;
begin
sS <= iA and iB;
oY <= not(sS);
end architecture;
Pojasnićemo samo nekoliko osnovnih detalja za ovaj čas, a više detalja ćete dobiti tokom narednih vežbi.
Kao što smo spomenuli prilikom pisanja test bench-a, i ova VHDL datoteka ima 3 dela. U prvom delu su
nabrojane biblioteke koje će se koristiti.
U delu entity se navode imena prolaza, njihov smer (ulaz ili izlaz) i njihov tip (standardni logički tip).
U okviru arhitekture se navode svi interni signali pre nego što krene sam opis. U našem slučaju mi imamo
samo jedan interni signal S. Prilikom opisa kombinacionih mreža signali nisu neophodni, ali nam oni olakšavaju
posao time što nam omoguću da pišemo preglednije opise i što nam u simulaciji omogućuju da vidimo
„međurezultate“ u svim delovima sistema. Ovo nije slučaj kod sekvencijalnih mreža koje ćemo raditi kasnije u
toku semestra – kod njih je OBAVEZNO korišćenje signala. Preporuka je da signale koristite stalno.
Sva digialna logička kola imaju odgovarajući operator u vidu ključne reči. Tako da umesto kola za konjunkciju
koristimo reč and, kao što za negaciju koristimo reč not. Ovde je zgodno spomenuti i to da VHDL ne pravi razliku
između velikih i malih slova. Samim tim, nije moguće imati signal ss i sS i SS.
I verovatno najbitnija lekcija sa prve vežbe jeste da ovaj opis arhitekture iako liči na programski jezik nema
nikakve veze sa programiranjem. Iskazi gde signal sS dobija vrednog konjinkcije ulaza iA i iB a izlaz oY dobija
negiranu vrednost signala sS nisu nikakve instrukcije. Uopšte ne postoji vremenska komponenta. Ako bi zamenili
mesta ovim iskazima, rezultat bi ostao nepromenjen, kao da smo električnu šemu nacrtali u ogledalu – tako da se
ulazi nalaze sa desne strane a izlaz sa leve. Iako ćemo tokom semestra koristiti još neke dodatne konstrukcije sa
kojima ste se već sretali na ranijim godinama studija, bitno je uvek držati u podsvesti da sve što mi radimo na
ovom predmetu jeste opis same fizičke arhitekture.
Pokazna vežba 1 – Osnovi projektovanja digitalnih sistema na nivou logičkih kola 2020/21
26
3. Moj (već) drugi digitalni sistem
Čestitamo na vašem prvom uspešno projektovanom, opisanom i proverenom digitalnom sistemu! Sada je
vreme da sami implementirate nešto složeniji sistem (kombinacionu mrežu) sa 3 izlaza i 3 ulaza. Pretpostavimo da
je naš novi digitalni sistem opisan sledećom istinitisnom tablicom, tj. sledećim trima Bulovim funkcijama od 3
promenljive:
iX2 iX1 iX0 oY2 oY1 oY0
0 0 0 0 0 1
0 0 1 0 1 0
0 1 0 0 1 1
0 1 1 1 0 0
1 0 0 1 0 1
1 0 1 1 1 0
1 1 0 1 1 1
1 1 1 0 0 0
Sledeće jednačine predstavljaju Bulove funkcije koje sistem računa:
𝑜𝑌2 = 𝑖𝑋2 ∗ 𝑖𝑋0̅̅ ̅̅̅ + 𝑖𝑋2 ∗ 𝑖𝑋1̅̅ ̅̅̅ + 𝑖𝑋2̅̅ ̅̅̅ ∗ 𝑖𝑋1 ∗ 𝑖𝑋0
𝑜𝑌1 = 𝑖𝑋1 ∗ 𝑖𝑋0̅̅ ̅̅̅ + 𝑖𝑋1̅̅ ̅̅̅ ∗ 𝑖𝑋0
𝑜𝑌0 = 𝑖𝑋0̅̅ ̅̅̅
Vaš zadatak je da prođete kroz sve korake projektovanja sistema i opišete i implementirate ovaj sistem
koristeći Intel Quartus alat. Napravite novi projekat i nazovite ga MySecondDigitalSystem. Ovaj naziv će biti
zgodan jer ćete moći da iskoristite dobar deo test bench-a koji smo koristili za zadatak 1 i samo promenite imena
gde je potrebno.
I za kraj jedno
4. Zaključak
Ova vežba vas je upoznala sa pojmom digitalnih logičkih kola i kombinacionih mreža kao fizičkim realizacijama
Bulovih funkcija. Videli ste kako se digitalni sistem projektuje, od momenta ideje na papiru, preko opisa sistema
do simulacije. Znanje koje ste dobili u ovoj vežbi je dovoljno da ste u stanju samostalno da projektujete bilo koju
kombinacionu mrežu zadatu Bulovim funkcijama. U narednoj vežbi ćemo raditi nešto složenije digitalne sisteme
uz primenu Karnoovih mapa i VHDL jezika za opis fizičke arhitekture.
Pitanje: Ukoliko ulaz i izlaz sistema posmatramo kao 3-bitne brojeve (gde je indeks bita jednak stepenu
mesne vrednosti broja), koju matematičku funkciju ovaj sistem računa?