ПОРТ/Лаб 2021
Laboratorijske vežbe 2021. godine su se održale u redovnim terminima u računarskim laboratorijama fakulteta. Za prve dve laboratorijske vežbe se crtala šema a zatim na laboratorijskoj vežbi precrtavala u Quartus, dok se za poslednje dve predavao Quartus projekat.
1. lab
Postavka
Nacrtati šemu koja realizuje kombinacionu mrežu za prikaz dekadnih cifara na sedmosegmentnom displeju korišćenjem što manje I, ILI i NE logičkih elemenata. Na Slici 1 dat je izgled sedmosegmentnog displeja kod kojeg je logička nula aktivna vrednost (logička nula pali segment na displeju). Stanje prekidača x3, x2, x1 i x0 predstavljaju binarnu vrednost broja za prikaz, gde je x3 najstariji, a x0 najmlađi bit. U slučaju da stanje prekidača predstavlja binarnu vrednost veću od 910, onda je potrebno da samo segmenti a, g i d sedmosegmentnog displeja budu upaljeni. Nije potrebno praviti već prethodno realizovane izlaze logičkih elemenata, već postojeće iskoristiti – crtati objedinjenu šemu. Dozvoljeno je imenovati izlaze logičkih elemenata i koristi ih na drugim delovima šeme. Student je dužan da crta pregledno korišćenjem grafitne olovke. Urađen domaći zadatak na ovom formularu doneti u terminu prve laboratorijske vežbe.
Modifikacije
- Za četvorobitni broj koji se unosi pomoću 4 prekidača, lampica treba da zasvetli ako je bit parnosti 1, inače ne treba da svetli.
2. lab
Postavka
Nacrtati strukturnu šemu sekvencijalne mreže Milijevog tipa koja vrši brojanje od 5 do 0 korišćenjem što manje I, ILI i NE logičkih elemenata i T flip flopova kod kojih je logička jedinica aktivna vrednost ulaznih signala. Mreža ima dva ulazna signala dec
i rst
. Ako je signal dec
aktivan, a signal rst
neaktivan onda brojač treba da umanji vrednost za jedan. Ako je signal dec
neaktivan, a signal rst
aktivan onda brojač treba postavi[sic] na vrednost 5. Ako su oba signala dec
i rst
aktivna ili su oba signala neaktivna, brojač ne treba da menja stanje. Umanjivanjem broja 0 brojač ne treba da menja svoju vrednost. Stanja treba kodirati redom počev od 1012 do 0002 (npr. dekrementiranjem iz stanja 0112 prelazi se u stanje 0102). Signali z2
, z1
i z0
predstavljaju izlaz mreže, gde je z0
najmlađi, a z2
najstariji bit.
Potrebno je nacrtati objedinjenu strukturnu šemu, pri čemu ne treba iznova praviti prethodno realizovane izlaze logičkih elemenata, već treba iskoristiti postojeće. Dozvoljeno je imenovati izlaze logičkih elemenata i koristi[sic] ih na drugim delovima strukturne šeme. Student je dužan da crta pregledno korišćenjem grafitne olovke. Urađen domaći zadatak na ovom formularu doneti u terminu druge laboratorijske vežbe.
Provera ispravnosti šeme
Od šeme koja je data za domaći potrebno je napraviti modul Brojac5_0
. Na raspolaganju su još dva tipa modula RsisingEdge
[sic] i 7SegmentInterfaceDEC
. Modul RisingEdge
predstavlja sekvencijalnu mrežu koja kao izlaz ima jedan bit koji se aktivira jednu periodu takta svaki put kada se ulaz promeni iz neaktivnog u aktivno stanje. Modul 7SegmentInterfaceDEC
računa koji segmenti sedmosegmentnog displeja treba aktivirati na osnovu četiri ulazna signala x3..0
koji predstavljaju četvrobitni binarni broj manji od 1010. Modul ima i ulazne signale dp
i en
. Signalom dp
se može kontrolisati paljenje segmenta koji predstavlja tačku pored sedmosegmentnog displeja. Dovođenjem logičke nule na ulaz en
sedmosegmentni displej se gasi, dok dovođenjem logičke nule na sedmosegmentnom displeju se prikazuje odgovarajuća vrednost zadata ostalim ulaznim signalima.
Izlaz modula Brojac5_0
treba povezati na modul 7SegmentInterfaceDEC
, kako bi se prikazivala vrednost brojača na sedmosegmentnom displeju. S obzirom da 7SegmentInterfaceDEC
kao ulaz prima četvorobitni broj, a modul Brojac5_0
kao izlaz ima trobitni broj, najviši bit modula 7SegmentInterfaceDEC
bi trebalo povezati na logičku nulu. Standardna komponenta koja kao izlaz ima konstantu logičku nulu zove se gnd
. Nema potrebe za paljenjem tačke iza cifre, pa se onda ulaz dp
povezuje takođe na gnd
. S obzirom da je potrebno da se uvek prikazuje cifra, na ulaz en
je dovedena konstantna logička jedinica uz pomoć standardne komponente vcc
.
Sve sekvencijalne mreže šeme treba povezati na periferiju koja generiše takt (pogledati uputstvo za pločicu). Na pločici se nalazi generator takta od 50MHz. Ovim povezivanjem se ostvaruje prelazak iz stanja u stanje svih sekvencijalnih mreža na takt od 50MHz (0.02 μs).
Dugmići na pločici daju logičku nulu kada su u pritisnutom stanju, a kada su u otpuštenom stanju daju logičku jedinicu. Kako je aktivna vrednost upravljačkih signala brojača (dec
/rst
) logička jedinica, između dugmića i ostatka šeme postavljeni su invertori. Direktnim povezivanjem izlaza invertora na upravljačke signale brojača dovelo bih[sic] do sledećeg problema. U slučaju da se dugme drži pritisnuto neko vreme (duže od nekoliko perioda takta), za to proteklo vreme bi se menjalo stanje (na svakih 0.02 μs), što je dosta brzo, pa bi se teško primetilo da li je brojač dobro realizovan. Iz tog razloga su postavljeni moduli RisingEdge
između invertora i brojača koji kao zadatak imaju da u slučaju dugog pritiska dugmeta (duže od 0.02 μs) na izlazu daju logičku jedinicu samo jedan takt. Ovim postupkom bi se na svaki pritisak dugmeta primenjivala jedna komanda nad brojačem i stanje brojača bi se promenilo samo jedanput.
Napomena: razvojne pločice DE0-CV Board nemaju izlaz za aktiviranje decimalne tačke na sedmosegmentnom displeju, tako da izlaz dp
iz modula ne treba[sic] 7SegmentInterfaceDEC
nigde povezivati.
Preuzimanje dodatnih komponenti.
Modifikacije
- Varijanta 1
- Napraviti brojač koji broji po sekvenci 5-4-3-2-1-0-1-2-3-4-5.
- Napraviti Rising Edge (mrežu Murovog tipa koja detektuje sekvencu 01 pomoću taktovanog D flip-flopa i na ulazu generiše logičku jedinicu u trajanju od jednog takta).
- Varijanta 2
- Napraviti brojač koji na dva displeja broji 52-43-34-25-61-70-52
- Ideja za rešenje ovog zadatka je bila to što cifre uvek u zbiru daju 7.
- Napraviti JK FF preko T FF.
- Varijanta 3
- Napraviti brojač koij broji po sekvenci 5-3-1-0-5.
- Napraviti Falling Edge.
3. lab
Postavka
Potrebno je dopuniti datu šemu isključivo standardnim kombinacionim i standardnim sekvencijalnim modulima, tako da šema realizuje uređaj koji omogućava praćenje broja postignutih poena jedne ekipe na košarkaškoj utakmici. Zapisničar na košarkaškoj utakmici ima na raspolaganju tri dugmeta, BTN0
, BTN1
i BTN2
pomoću kojih datoj ekipi dodaje odgovarajući broj poena za svaki postignut koš. Pritiskom dugmeta BTN0
zapisničar dodaje jedan poen, pritiskom dugmeta BTN1
zapisničar dodaje dva poena, pritiskom dugmeta BTN2
zapisničar dodaje tri poena. Smatrati da nije moguće istovremeno pritisnuti više od jednog dugmeta i da na jednoj utakmici nije moguće postići više od 99 poena. Broj postignutih poena date ekipe treba predstaviti u dekadnom obliku, a pojedinačne cifre broja postignutih poena treba prikazati na dva sedmosegmentna displeja HEX1
i HEX0
(HEX1
- displej za prikaz desetica; HEX0
- displej za prikaz jedinica). U okviru rešavanja zadatka potrebno je realizovati inkrementer kao zaseban modul (u postavci projekta je potrebno samo implementirati INC7.bdf
šemu). Kombinacioni modul Binary2BCD
kao ulaz prima binarni broj širine 7 bita, a kao rezultat daje BCD predstavu binarnog broja sa ulaza. Kombinacioni modul 7segmentInterface
kao ulaz prima binarni broj širine 4 bita koji prikazuje na sedmosegmentnom displeju. Sekvencijalni modul RisingEdge
kao izlaz ima jedan bit koji se aktivira na jednu periodu takta, svaki put kada se ulaz promeni iz neaktivnog u aktivno stanje.
Preuzimanje postavke Quartus projekta.
Modifikacije
Razne modifikacije iz raznih termina, bez logičke povezanosti.
- Napraviti modul
ADD1
, a onda od njegaADD7
. - Umesto dva muktipleksera za izbor broja poena (1, 2 ili 3) koristiti jedan sa 2 ulaza i logičke elemente.
- Napraviti registar koji ima zadate funkcije (npr.
LD
,INC
iCL
) pomoću nekog sinhronog flip-flopa (npr. T flip-flop). Provera ispravnosti se vrši povezivanjem kontrolnih signala na dugmiće, izlaza na LED diode a ostalih ulaza na prekidače.
4. lab
Postavka
Potrebno je dopuniti date šeme kako bi se realzovao košarkaški semafor koji ima tri režima rada.
U prvom režimu rada se prikazuje preostalo vreme za napad. Preostalo vreme za napad se prikazuje na sedmosegmentnim displejima HEX0
i HEX1
. Dugmetom BTN0
se resetuje preostalo vreme za napad na 24 sekunde. Dugmetom BTN1
se resetuje preostalo vreme za napad na 14 sekundi. Dugmetom BTN2
se zaustavlja ili nastavlja brojanje preostalog vremena za napad. Kada preostalo vreme za napad postane jednako nuli, brojanje preostalog vremena za napad se zaustavlja i uključuje se dioda LED9
, čak iako prvi režim rada nije trenutno aktivan. Preostalo vreme za napad se uvek računa, nezavisno od režima rada u kojem se nalazi košarkaški semafor. Za potrebe prvog režima rada treba realizovati sekvencijalni modul Timer24
.
U drugom režimu rada se prikazuje broj postignutih poena. Broj postignutih poena domaće ekipe se prikazuje na sedmosegmentnim displejima HEX0
i HEX1
, a broj postignutih poena gostujuće ekipe se prikazuje na sedmosegmentnim displejima HEX2
i HEX3
. Kombinacijom prekidača SW7
i dugmadi BTN0
, BTN1
, i BTN2
, moguće je dodati poene jednoj od ekipa. Pozicijom prekidača SW7
bira se ekipa kojoj se dodaju poeni, dok se pomoću dugmadi BTN0
, BTN1
, i BTN2
, izabranoj ekipi dodaje odgovarajući broj poena (BTN0
- jedan, BTN1
- dva, BTN2
- tri). Za potrebe drugog režima rada treba iskoristiti sekvencijalni modul Result
.
U trećem režimu rada se prikazuje broj ličnih grešaka igrača iz obe ekipe. Pozicijom prekidača SW7
bira se ekipa, dok se pomoću prekidača SW6
do SW0
unosi binarna predstava broja na dresu igrača kojem treba dodati ličnu grešku. Broj ličnih grešaka izabračnog igrača se inkrementira pomoću dugmeta BTN0
. Broj ličnih grešaka izabranog igrača se prikazuje serijskim uključivanjem dioda LED4
do LED0
. Na primer, ako igrač ima dve lične greške potrebno je uključiti diode LED1
i LED0
, a ako igrač ima četiri lične greške potrebno je uključiti diode LED3
, LED2
, LED1
i LED0
. Igrač može da napravi maksimalno pet ličnih grešaka. Za potrebe trećeg režima rada treba realizovati registarski fajl tj. sekvenicjalni modul RegFile
.
Režim rada košarkaškog semafora se bira pomoću prekidača SW9
i SW8
, na sledeći način: SW9
= 0, SW8
= 1 -> prvi režim, SW9
= 1, SW8
= 0 -> drugi režim, SW9
= 1, SW8
= 1 -> treći režim.
Resetovanje semafora se aktivira ako su sva tri dugmeta istovremeno pritisnuta i ova komanda ima najviši prioritet.
Sekvencijalni modul Timer24
kao ulaz ima tri signala rst24
, rst14
i stop_resume
. Aktivnom vrednošću signala rst24
preostalo vreme za napad se postavlja na 24 sekunde. Aktivnom vrednošću signala rst14
preostalo vreme za napad se postavlja na 14 sekundi. Aktivnom vrednošću signala stop_resume
može da se zaustavi brojanje ako trenutno teče preostalo vreme za napad ili da se nastavi brojanje ako je trenutno zaustavljeno preostalo vreme za napad. Sekvencijalni modul RegFile
tj. registarski fajl predstavlja skup registara. Registarski fajl ima interfejs sličan interfejsu memorijskih čipova. Postoje standardni signali WR
, Adr
, DataIN
, DataOUT
, a postoji i ulazni signal rst
koji omogućava postavljanje vrednosti svih registara na nulu. Na izlazu DataOUT
registarskog fajla uvek se nalazi vrednost registra na čiju adresu ukazuje ulazni signal Adr
. Prilikom realizacije registarskog fajla koristiti sedmorazredne registre. Kombinacioni modul Binary2BCD
kao ulaz prima binarni broj širine 7 bita, a kao rezultat daje BCD predstavu binarnog broja sa ulaza. Kombinacioni modul 7segmentInterface
kao ulaz prima binarni broj širine 4 bita koji prikazuje na sedmosegmentnom displeju. Sekvencijalni modul RisingEdge
kao izlaz ima jedan bit koji se aktivira na jednu periodu takta, svaki put kada se ulaz promeni iz neaktivnog u aktivno stanje.
Preuzimanje postavke Quartus projekta.
Modifikacije
Razne modifikacije iz raznih termina, bez logičke povezanosti.
- Na levom HEX ekranu ispisati broj ličnih grešaka, a na desnom broj dresa za igrača koji se odabere.
- Kada se doda lična greška, automatski se pauzira vreme za napad. Dva ili tri boda resetuju tajmer na 24. Lična greška koja nije peta restartuje na 14, dok peta lična greška resetuje na 24.
- Dopustiti da igrač ima 6 ličnih greški i broj ličnih greški prikazati kao binarni broj na
LED2..0
. - Umesto
rst14
, klikom naBTN1
se startuje vreme u reketu, ponovnim klikom narst14
se zaustavlja. TrebaLED9
da zasvetli kada igrač provede 3 sekunde u reketu. Klikom narst24
se vreme u reketu postavlja na 0. - Pored vremena za napad, meri se i kada je prošlo 2 minuta od početka utakmice i kada prođe upali se neka dioda.
- Stopiranje sa ličnim (isto kao druga navedena).