ПОРТ/Август 2021
Postavka
- Napomena: Određeni delovi postavke su ostavljeni umetničkoj interpretaciji prepisivača i nisu se nužno nalazili u ispitnom zadatku.
Nakon što je uspešno prodao automobil kojeg je prošle godine u septembru osvojio u kladionici, mali Danko je rešio da osnuje svoju perionicu veša. Od novca koji je zaradio kupio je tri superbrze mašine za veš koje mogu za jednu sekundu da operu do pet kilograma veša. Nažalost, koliko su bile brze toliko su im brzo i pregorele upravljačke jedinice koje su im u fabrici ugradili za učitavanje žetona od njihovih korisnika. Za Danka, doduše, ovo nije bio problem, jer je perionicu napravio kao deo Računskog centra Elektrotehničkog fakulteta Univerziteta u Beogradu iz koga je mogao da dovuče jednu Altera Cyclone III FPGA pločicu preko koje je mogao da napravi potpuno novu upravljačku jedinicu za sve tri veš mašine odjednom, i pritom da korisnicima lep uvid u to koliko im je žetona još ostalo.
Zadatak je napraviti upravljač perionicom veša. Date su kontrole:
- Sedmosegmentni ekrani
HEX0
doHEX2
respektivno za predstavljanje veš mašina perionice, tokom animacije rotacije pale i gase se segmenti na kružnom delu ekrana (prikazano na slici) i sveukupno trajanje jedne rotacije je jedna sekunda, SW0
doSW2
za paljenje veš mašina,LED5..0
za prikazivanje trenutnog broja žetona koje korisnik ima, iBTN0
za povećavanje broja žetona.
Mašine ne rade ukoliko je broj žetona koje korisnik ima manji od broja upaljenih veš mašina.
Postavka Quartus projekta sa VHDL testovima može se naći ovde. Rešenje roka može se naći ovde.
1. zadatak
- [4 poena] Napraviti jednorazredni komparator sa ulazima
A
,B
,Gi-1
,Ei-1
,Li-1
i izlazimaGi
,Ei
,Li
. - [3 poena] Napraviti šestorazredni komparator koristeći modul iz prethodne stavke.
- [3 poena] Napraviti šestokanalni multiplekser sa dva ulaza i jednim selekcionim signalom.
- [2 poena] Napraviti šestokanalni multiplekser sa 4 ulaza i jednim izlaznim signalom koristeći modul napravljen u trećoj tački.
- [3 poena] Realizovati FallingEdge kao sekvencijalnu mrežu Murovog tipa koristeći isključivo RS flip flopove.
- [6 poena] Napraviti jednorazredni registar sa operacijama paralelnog upisa (
LD
), serijskog upisa u levo (SL
), serijskog upisa u desno (SR
) i sinhronog brisanja (CL
) koristeći D flip flop. Najveći prioritet ima operacija paralelnog upisa, zatim serijskog upisa u levo, zatim serijskog upisa u desno i na kraju najmanji prioritet ima sinhrono brisanje (LD
>SL
>SR
>CL
). - [4 poena] Napraviti šestorazredni registar sa svim operacijama kao i prethodni koristeći modul iz prethodne stavke.
2. zadatak
- [2 poena] Napraviti kombinacionu mrežu koja ima tri ulazna signala (
X1
,X2
,X3
) i dva izlazna signalaz1
iz2
koja treba da prikazuje broj aktivnih ulaznih signala u binarnom brojnom sistemu. Na primer, ako su aktivna bilo koja dva ulazna signala potrebno je da signalz2
ima aktivnu vrednost a signalz1
neaktivnu (102). - [5 poena] Potrebno je realizovati modul koji upravlja korišćenjem žetona sa tri ulazna signala
INC
,ON2..0
iCLK
, i jednim izlaznim signalomTOKENS5..0
. On čuva informaciju o trenutnom broju žetona koje korisnik ima kao sekvencu jedinica onoliko puta koliko ima žetona (na primer, za 4 žetona se čuva vrednost 0011112). Maksimalan broj žetona koje korisnik može da ima je 6, a minimalan 0. Pomoću signalaINC
broj žetona se povećava za 1. Potrebno je obezbediti da se broj žetona uvek nalazi u opsegu od 0 do 6. Izlazni signal daje informaciju o tome koliko žetona korisnik ima. Ulazni signalON2..0
daje informaciju o tome koje su mašine u tom trenutku aktivne (na primer, ukoliko su prva i druga mašina uključene onda je vrednost signala 1102). U zavsnosti od toga koliko je mašina upaljeno broj žetona korisnika se smanjuje za određen broj svake sekunde (na primer, ako su aktivne dve mašine svake sekunde korisnik gubi po dva žetona). Za realizaciju ove stavke dostupan je modulOneSecondTimer
. - [4 poena] Napraviti modul koji upravlja jednom veš mašinom (dozvoljava paljenje i gašenje). Potrebno je da ima dva ulazna signala
EN
iCLK
a jedan izlazni signalWM5..0
. Modul treba da simulira okretanje veš mašine tako što jednu jedinicu naWM5..0
pomera od bita najmanje težine do bita najveće težine i ponavlja to sve dok je upaljena (jedna rotacija traje jednu sekundu). Ukoliko je veš mašina ugašena na izlazu su sve nule. Nakon svakog uključivanja rotacija kreće od najnižeg bita izlaznog signala. Za realizaciju ovog modula bio je dat modulOne36thOfSecond
. - [4 poena] Potrebno je implementirati celu šemu pomoću koje se upravlja perionicom veša. Veš mašinama se upravlja modulima iz stavke 3.