ПОРТ/Септембар 2020

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

Postavka

Napomena: Određeni delovi postavke su ostavljeni umetničkoj interpretaciji prepisivača i nisu se nužno nalazili u ispitnom zadatku.

Nakon što su Danko i saradnici uspešno konstruisali upravljačku jedinicu za šporet i zasladili se palačinkama, došlo je vreme da odu u kladionicu na rulet. Ali nisu išli u bilo koju kladionicu, već su isključivo birali kladionice koje su držali njihovi bivši studenti koji su predmet položili sa ocenom šest, kojih je u gradu bilo ukupno jedna. Taj dan im se baš posrećilo, pa su veštom manipulacijom generatora nasumičnih brojeva uspeli da na ruletu osvoje 243.500 dinara, burek, automobil pomenutog bivšeg studenta i karticu za besplatnu kafu (ali za burek nismo sigurni). Posle ravnomerne raspodele dobitaka, Danku je ostao automobil. Ali, Dankovim mukama nikad kraja, jer čim je upalio auto primetio je da je uređaj za pokretanje pregoreo. Iz nepoznatih razloga, Danko je sa sobom poneo upravljačku jedinicu svog šporeta (koja je, ponovo, bila ista FPGA pločica koju je sačuvao od munja nakon junskog roka) i uređaj koji je bio sposoban da pokrene Quartus II 13.1 Web Edition, tako da je odmah prionuo na popravljanje svog novoosvojenog automobila.

Zadatak je napraviti uređaj za pokretanje automobila. Kontrole automobila su:

  • SW9 za uključivanje automobila.
  • SW8 za uključivanje prikaza statusa automobila ("OFF"/"On") na sedmosegmentnim ekranima.
  • SW7 prikazuje koliko se goriva sme sipati u automobil.
  • BTN0 za punjenje goriva na automobilu.

Količina goriva se prikazuje na LED9..0, gde jedna LED dioda odgovara 10 litara goriva, gorivo se troši 10 litara po sekundi a puni 5 litara po sekundi.

Postavka Quartus projekta može se naći ovde. Rešenje roka može se naći ovde.

1. zadatak

Bila je data glavna šema, šeme za popunjavanje komponenti i testovi komponenti koji bi trebalo da pale LED diode na glavnoj šemi kada određena komponenta krene da radi kao očekivano.

  1. [? poena] Potrebno je realizovati sedmokanalni multiplekser sa četiri ulaza i dva signala za biranje.
  2. [? poena] Potrebno je realizovati prioritetni koder sa ulazom za uključivanje EN, takav da je aktivna vrednost signala za uključivanje logička nula, a najmanji bit ima najviši prioritet.
  3. [? poena] Potrebno je realizovati jednorazredni oduzimač sa ulazima A, B i Ei i izlazima F i Ei+1.
  4. [? poena] Koristeći jednorazredni oduzimač realizovati trorazredni oduzimač.
  5. [? poena] Realizovati sekvencijalnu mrežu RisingEdge pomoću T flip-flopa.
  6. [? poena] Realizovati jednorazredni registar sa mogućnostima paralelnog upisa, inkrementiranja i sinhronog brisanja koristeći JK flip-flop.
  7. [? poena] Realizovati trorazredni registar sa istim mogućnostima koristeći jednorazredni registar.

2. zadatak

Bila je data CLK_DIVIDER i Binary2BCD komponente, dekoder sa 16 izlaza kao i interfejs za sedmosegmentni displej.

  1. [5 poena] Implementirati menjanje stanja automobila (uključen/isključen) preko SW9. Ukoliko je SW8 uključen, prikazati stanje automobila na heksadecimalnom displeju tako da kad je isključen piše "OFF" a kad je uključen "On". Kada je automobil uključen on troši 10 litara goriva u sekundi, a kada mu sipamo gorivo (tu opciju omogućava BTN0) puni se 5 litara u sekundi. Automobil može da se puni samo kada je isključen. Potrebno je omogućiti prikaz stanja goriva na LED diodama (na primer, ako ima 53 litara goriva u rezervoaru, svetli dioda LED6).
  2. [5 poena] Omogućiti da se kada je rezervoar automobila pun (100 litara) na heksadecimalnom displeju ispiše "FULL", a kada je rezervoar prazan da se ispiše "----" ukoliko je SW8 isključen. Takođe omogućiti da se pomoću SW7 na heksadecimalnom displeju prikaže koliko se još goriva sme sipati u automobil.
  3. [5 poena] Implementirati uređaj i omogućiti da se ne sme sipati gorivo ako je pun rezervoar i trošiti ako je prazan.