ПОРТ/Август 2021

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу

Postavka

Prikaz animacije rotacije veš mašine na sedmosegmentnom ekranu iz postavke zadatka.
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 do HEX2 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 do SW2 za paljenje veš mašina,
  • LED5..0 za prikazivanje trenutnog broja žetona koje korisnik ima, i
  • BTN0 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

  1. [4 poena] Napraviti jednorazredni komparator sa ulazima A, B, Gi-1, Ei-1, Li-1 i izlazima Gi, Ei, Li.
  2. [3 poena] Napraviti šestorazredni komparator koristeći modul iz prethodne stavke.
  3. [3 poena] Napraviti šestokanalni multiplekser sa dva ulaza i jednim selekcionim signalom.
  4. [2 poena] Napraviti šestokanalni multiplekser sa 4 ulaza i jednim izlaznim signalom koristeći modul napravljen u trećoj tački.
  5. [3 poena] Realizovati FallingEdge kao sekvencijalnu mrežu Murovog tipa koristeći isključivo RS flip flopove.
  6. [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).
  7. [4 poena] Napraviti šestorazredni registar sa svim operacijama kao i prethodni koristeći modul iz prethodne stavke.

2. zadatak

  1. [2 poena] Napraviti kombinacionu mrežu koja ima tri ulazna signala (X1, X2, X3) i dva izlazna signala z1 i z2 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 signal z2 ima aktivnu vrednost a signal z1 neaktivnu (102).
  2. [5 poena] Potrebno je realizovati modul koji upravlja korišćenjem žetona sa tri ulazna signala INC, ON2..0 i CLK, i jednim izlaznim signalom TOKENS5..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 signala INC 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 signal ON2..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 modul OneSecondTimer.
  3. [4 poena] Napraviti modul koji upravlja jednom veš mašinom (dozvoljava paljenje i gašenje). Potrebno je da ima dva ulazna signala EN i CLK a jedan izlazni signal WM5..0. Modul treba da simulira okretanje veš mašine tako što jednu jedinicu na WM5..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 modul One36thOfSecond.
  4. [4 poena] Potrebno je implementirati celu šemu pomoću koje se upravlja perionicom veša. Veš mašinama se upravlja modulima iz stavke 3.