ПОРТ/Лаб 2021 — разлика између измена

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу
Нема описа измене
м (Ostatak formatiranja)
 
(Нису приказане 2 међуизмене 2 корисника)
Ред 1: Ред 1:
== Postavka ==
{{tocright}}
'''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 - zadatak==
== 1. lab ==
Нацртати шему која реализује комбинациону мрежу за приказ декадних цифара на седмосегментном дисплеју коришћењем што мање И, ИЛИ и НЕ логичких елемената. На Слици 1 дат је изглед седмосегментног дисплеја код којег је логичка нула активна вредност (логичка нула пали сегмент на дисплеју). Стање прекидача x3, x2, x1 и x0 представљају бинарну вредност броја за приказ, где је x3 најстарији, а x0 најмлађи бит. У случају да стање прекидача представља бинарну вредност већу од 910, онда је потребно да само сегменти a, g и d седмосегментног дисплеја буду упаљени. Није потребно правити већ претходно реализоване излазе логичких елемената, већ постојеће искористити цртати обједињену шему. Дозвољено је именовати излазе логичких елемената и користи их на другим деловима шеме. Студент је дужан да црта прегледно коришћењем графитне оловке. Урађен домаћи задатак на овом формулару донети у термину прве лабораторијске вежбе.
=== 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.


== 1. lab - modifikacija==
=== Modifikacije ===
Za četvorobitni broj koji se unosi pomoću 4 switch-a, neka lampica zasvetli ako je bit parnosti 1, inače neka ne svetli.
* 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 - zadatak==
== 2. lab ==
Нацртати структурну шему секвенцијалне мреже Милијевог типа која врши бројање од 5 до 0 коришћењем што мање И, ИЛИ и НЕ логичких елемената и T флип флопова код којих је логичка јединица активна вредност улазних сигнала. Мрежа има два улазна сигнала dec и rst. Ако је сигнал dec активан, а сигнал rst неактиван онда бројач треба да умањи вредност за један. Ако је сигнал dec неактиван, а сигнал rst активан онда бројач треба постави на вредност 5. Ако су оба сигнала dec и rst активна или су оба сигнала неактивна, бројач не треба да мења стање. Умањивањем броја 0 бројач не треба да мења своју вредност. Стања треба кодирати редом почев од 1012 до 0002 (нпр. декрементирањем из стања 0112 прелази се у стање 0102). Сигнали z2, z1 и z0 представљају излаз мреже, где је z0 најмлађи, а z2 најстарији бит.
=== 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 <code>dec</code> i <code>rst</code>. Ako je signal <code>dec</code> aktivan, a signal <code>rst</code> neaktivan onda brojač treba da umanji vrednost za jedan. Ako je signal <code>dec</code> neaktivan, a signal <code>rst</code> aktivan onda brojač treba postavi<sup>[sic]</sup> na vrednost 5. Ako su oba signala <code>dec</code> i <code>rst</code> 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 <code>z<sub>2</sub></code>, <code>z<sub>1</sub></code> i <code>z<sub>0</sub></code> predstavljaju izlaz mreže, gde je <code>z<sub>0</sub></code> najmlađi, a <code>z<sub>2</sub></code> 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<sup>[sic]</sup> 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.
Од шеме која је дата за домаћи потребно је направити модул Brojac5_0. На располагању су још два типа модула RsisingEdge и 7SegmentInterfaceDEC. Модул RisingEdge представља секвенцијалну мрежу која као излаз има један бит који се активира једну периоду такта сваки пут када се улаз промени из неактивног у активно стање. Модул 7SegmentInterfaceDEC рачуна који сегменти седмосегментног дисплеја треба активирати на основу четири улазна сигнала x3..0 који представљају четвробитни бинарни број мањи од 1010. Модул има и улазне сигнале dp и en. Сигналом dp се може контролисати паљење сегмента који представља тачку поред седмосегментног дисплеја. Довођењем логичке нуле на улаз en седмосегментни дисплеј се гаси, док довођењем логичке нуле на седмосегментном дисплеју се приказује одговарајућа вредност задата осталим улазним сигналима.
Излаз модула Brojac5_0 треба повезати на модул 7SegmentInterfaceDEC, како би се приказивала вредност бројача на седмосегментном дисплеју. С обзиром да 7SegmentInterfaceDEC као улаз прима четворобитни број, а модул Brojac5_0 као излаз има тробитни број, највиши бит модула 7SegmentInterfaceDEC би требало повезати на логичку нулу. Стандардна компонента која као излаз има константу логичку нулу зове се gnd. Нема потребе за паљењем тачке иза цифре, па се онда улаз dp повезује такође на gnd. С обзиром да је потребно да се увек приказује цифра, на улаз en је доведена константна логичка јединица уз помоћ стандардне компоненте vcc.
Све секвенцијалне мреже шеме треба повезати на периферију која генерише такт (погледати упутство за плочицу). На плочици се налази генератор такта од 50MHz. Овим повезивањем се остварује прелазак из стања у стање свих секвенцијалних мрежа на такт од 50MHz (0.02 μs).
Дугмићи на плочици дају логичку нулу када су у притиснутом стању, а када су у отпуштеном стању дају логичку јединицу. Како је активна вредност управљачких сигнала бројача (dec/rst) логичка јединица, између дугмића и остатка шеме постављени су инвертори. Директним повезивањем излаза инвертора на управљачке сигнале бројача довело бих до следећег проблема. У случају да се дугме држи притиснуто неко време (дуже од неколико периода такта), за то протекло време би се мењало стање (на сваких 0.02 μs), што је доста брзо, па би се тешко приметило да ли је бројач добро реализован. Из тог разлога су постављени модули RisingEdge између инвертора и бројача који као задатак имају да у случају дугог притиска дугмета (дуже од 0.02 μs) на излазу дају логичку јединицу само један такт. Овим поступком би се на сваки притисак дугмета примењивала једна команда над бројачем и стање бројача би се променило само једанпут.
Напомена: развојне плочице DE0-CV Board немају излаз за активирање децималне тачке на седмосегментном дисплеју, тако да излаз dp из модула
не треба 7SegmentInterfaceDEC нигде повезивати.


== 2. lab - modifikacija==
==== Provera ispravnosti šeme ====
''Varijanta 1''
Od šeme koja je data za domaći potrebno je napraviti modul <code>Brojac5_0</code>. Na raspolaganju su još dva tipa modula <code>RsisingEdge</code><sup>[sic]</sup> i <code>7SegmentInterfaceDEC</code>. Modul <code>RisingEdge</code> 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 <code>7SegmentInterfaceDEC</code> računa koji segmenti sedmosegmentnog displeja treba aktivirati na osnovu četiri ulazna signala <code>x<sub>3..0</sub></code> koji predstavljaju četvrobitni binarni broj manji od 1010. Modul ima i ulazne signale <code>dp</code> i <code>en</code>. Signalom <code>dp</code> se može kontrolisati paljenje segmenta koji predstavlja tačku pored sedmosegmentnog displeja. Dovođenjem logičke nule na ulaz <code>en</code> sedmosegmentni displej se gasi, dok dovođenjem logičke nule na sedmosegmentnom displeju se prikazuje odgovarajuća vrednost zadata ostalim ulaznim signalima.
1. Napraviti brojač koji broji 5-4-3-2-1-0-1-2-3-4-5
2. Napraviti Rising Edge
''Varijanta 2''
1. Napraviti brojač koji na dva displeja broji 52-43-34-25-61-70-52 (ideja je da se svaki broj komplementira kako bi se dobila druga cifra, to treba da se provali)
2. Napraviti JK FF preko T FF
''Varijanta 3''
1. Napraviti brojač 5-3-1-0-5
2. Napraviti Falling Edge


== 3. lab - zadatak==
Izlaz modula <code>Brojac5_0</code> treba povezati na modul <code>7SegmentInterfaceDEC</code>, kako bi se prikazivala vrednost brojača na sedmosegmentnom displeju. S obzirom da <code>7SegmentInterfaceDEC</code> kao ulaz prima četvorobitni broj, a modul <code>Brojac5_0</code> kao izlaz ima trobitni broj, najviši bit modula <code>7SegmentInterfaceDEC</code> bi trebalo povezati na logičku nulu. Standardna komponenta koja kao izlaz ima konstantu logičku nulu zove se <code>gnd</code>. Nema potrebe za paljenjem tačke iza cifre, pa se onda ulaz <code>dp</code> povezuje takođe na <code>gnd</code>. S obzirom da je potrebno da se uvek prikazuje cifra, na ulaz <code>en</code> je dovedena konstantna logička jedinica uz pomoć standardne komponente <code>vcc</code>.
Потребно је допунити дату шему искључиво стандардним комбинационим и стандардним секвенцијалним модулима, тако да шема реализује уређај који омогућава праћење броја постигнутих поена једне екипе на кошаркашкој утакмици. Записничар на кошаркашкој утакмици има на располагању три дугмета, BTN0, BTN1 и BTN2 помоћу којих датој екипи додаје одговарајући број поена за сваки постигнут кош. Притиском дугмета BTN0 записничар додаје један поен, притиском дугмета BTN1 записничар додаје два поена, притиском дугмета BTN2 записничар додаје три поена. Сматрати да није могуће истовремено притиснути више од једног дугмета и да на једној утакмици није могуће постићи више од 99 поена. Број постигнутих поена дате екипе треба представити у декадном облику, а појединачне цифре броја постигнутих поена треба приказати на два седмосегментна дисплеја HEX1 и HEX0 (HEX1 - дисплеј за приказ десетица; HEX0 - дисплеј за приказ јединица). У оквиру решавања задатка потребно је реализовати инкрементер као засебан модул (у поставци пројекта је потребно само имплементирати INC7.bdf шему). Комбинациони модул Binary2BCD као улаз прима бинарни број ширине 7 бита, а као резултат даје BCD представу бинарног броја са улаза. Комбинациони модул 7segmentInterface као улаз прима бинарни број ширине 4 бита који приказује на седмосегментном дисплеју. Секвенцијални модул RisingEdge као излаз има један бит који се активира на једну периоду такта, сваки пут када се улаз промени из неактивног у активно стање.
[[Датотека:PORT Lab3.png]]


== 3. lab - modifikacija==
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).
''Ne zna se tačno koje od ovih su išle jedne sa drugima, ali ovo su razne koje su bile u raznim terminima''
1. Napraviti modul ADD1, a onda od njega ADD7
2. Umesto dva muktipleksera za izbor broja poena (1, 2 ili 3) korisiti jedan sa 2 ulaza i logičke elemente
3. Napraviti registar koji ima zadate funkcije (npr. LOAD, SHIFT LEFT, INC i CLEAR)


== 4. lab - zadatak==
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 (<code>dec</code>/<code>rst</code>) 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<sup>[sic]</sup> 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 <code>RisingEdge</code> 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.
Потребно је допунити дате шеме како би се реалзовао кошаркашки семафор који има три режима рада.
У првом режиму рада се приказује преостало време за напад. Преостало време за напад се приказује на седмосегментним дисплејима HEX0 и HEX1. Дугметом BTN0 се ресетује преостало време за напад на 24 секунде. Дугметом BTN1 се ресетује преостало време за напад на 14 секунди. Дугметом BTN2 се зауставља или наставља бројање преосталог времена за напад. Када преостало време за напад постане једнако нули, бројање преосталог времена за напад се зауставља и укључује се диода LED9, чак иако први режим рада није тренутно активан. Преостало време за напад се увек рачуна, независно од режима рада у којем се налази кошаркашки семафор. За потребе првог режима рада треба реализовати секвенцијални модул Timer24.
У другом режиму рада се приказује број постигнутих поена. Број постигнутих поена домаће екипе се приказује на седмосегментним дисплејима HEX0 и HEX1, а број постигнутих поена гостујуће екипе се приказује на седмосегментним дисплејима HEX2 и HEX3. Комбинацијом прекидача SW7 и дугмади BTN0, BTN1, и BTN2, могуће је додати поене једној од екипа. Позицијом прекидача SW7 бира се екипа којој се додају поени, док се помоћу дугмади BTN0, BTN1, и BTN2, изабраној екипи додаје одговарајући број поена (BTN0 - један, BTN1 - два, BTN2 - три). За потребе другог режима рада треба искористити секвенцијални модул Result.
У трећем режиму рада се приказује број личних грешака играча из обе екипе. Позицијом прекидача SW7 бира се екипа, док се помоћу прекидача SW6 до SW0 уноси бинарна представа броја на дресу играча којем треба додати личну грешку. Број личних грешака изабрачног играча се инкрементира помоћу дугмета BTN0. Број личних грешака изабраног играча се приказује серијским укључивањем диода LED4 до LED0. На пример, ако играч има две личне грешке потребно је укључити диоде LED1 и LED0, а ако играч има четири личне грешке потребно је укључити диоде LED3, LED2, LED1 и LED0. Играч може да направи максимално пет личних грешака. За потребе трећег режима рада треба реализовати регистарски фајл тј. секвеницјални модул RegFile.
Режим рада кошаркашког семафора се бира помоћу прекидача SW9 и SW8, на следећи начин: SW9 = 0, SW8 = 1 -> први режим, SW9 = 1, SW8 = 0 -> други режим, SW9 = 1, SW8 = 1 -> трећи режим.
Ресетовање семафора се активира ако су сва три дугмета истовремено притиснута и ова команда има највиши приоритет.
Секвенцијални модул Timer24 као улаз има три сигнала rst24, rst14 и stop_resume. Активном вредношћу сигнала rst24 преостало време за напад се поставља на 24 секунде. Активном вредношћу сигнала rst14 преостало време за напад се поставља на 14 секунди. Активном вредношћу сигнала stop_resume може да се заустави бројање ако тренутно тече преостало време за напад или да се настави бројање ако је тренутно заустављено преостало време за напад. Секвенцијални модул RegFile тј. регистарски фајл представља скуп регистара. Регистарски фајл има интерфејс сличан интерфејсу меморијских чипова. Постоје стандардни сигнали WR, Adr, DataIN, DataOUT, а постоји и улазни сигнал rst који омогућава постављање вредности свих регистара на нулу. На излазу DataOUT регистарског фајла увек се налази вредност регистра на чију адресу указује улазни сигнал Adr. Приликом реализације регистарског фајла користити седморазредне регистре. Комбинациони модул Binary2BCD као улаз прима бинарни број ширине 7 бита, а као резултат даје BCD представу бинарног броја са улаза. Комбинациони модул 7segmentInterface као улаз прима бинарни број ширине 4 бита који приказује на седмосегментном дисплеју. Секвенцијални модул RisingEdge као излаз има један бит који се активира на једну периоду такта, сваки пут када се улаз промени из неактивног у активно стање.


[[Датотека:PORT Lab4.png]]
Napomena: razvojne pločice ''DE0-CV Board'' nemaju izlaz za aktiviranje decimalne tačke na sedmosegmentnom displeju, tako da izlaz <code>dp</code> iz modula ne treba<sup>[sic]</sup> <code>7SegmentInterfaceDEC</code> nigde povezivati.


== 4. lab - modifikacija==
'''[[Медиј:PORT lab 2 2021 dodatne komponente.zip|Preuzimanje dodatnih komponenti.]]'''
''Ne zna se tačno koje od ovih su išle jedne sa drugima, ali ovo su razne koje su bile u raznim terminima''
 
1. Na levom HEXu ispisati broj ličnih grešaka, a na desnom broj dresa za igrača koji se odabere
=== Modifikacije ===
2. Kada se doda lična greška, automatski se pauzira vreme za napad; 2 ili 3 boda resetuju timer na 24; Lična koja nije peta restartuje na 14; Peta lična resetuje na 24
; Varijanta 1
1. Dopustiti da igrač ima 6 ličnih i broj ličnih prikazati kao binarni broj na LED0,1,2
# Napraviti brojač koji broji po sekvenci 5-4-3-2-1-0-1-2-3-4-5.
2. Umesto rst14, klikom na dugme1 se startuje vreme u reketu, ponovnim klikom na rst14 se zaustavlja; Treba LED9 da zasvetli kada igrač provede 3 sekunde u reketu; Klikom na rst24 se vreme u reketu postavlja na 0
# 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).
1. 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
; Varijanta 2
2. Stopiranje sa ličnim (isto kao druga navedena)
# 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, <code>BTN<sub>0</sub></code>, <code>BTN<sub>1</sub></code> i <code>BTN<sub>2</sub></code> pomoću kojih datoj ekipi dodaje odgovarajući broj poena za svaki postignut koš. Pritiskom dugmeta <code>BTN<sub>0</sub></code> zapisničar dodaje jedan poen, pritiskom dugmeta <code>BTN<sub>1</sub></code> zapisničar dodaje dva poena, pritiskom dugmeta <code>BTN<sub>2</sub></code> 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 <code>HEX<sub>1</sub></code> i <code>HEX<sub>0</sub></code> (<code>HEX<sub>1</sub></code> - displej za prikaz desetica; <code>HEX<sub>0</sub></code> - displej za prikaz jedinica). U okviru rešavanja zadatka potrebno je realizovati inkrementer kao zaseban modul (u postavci projekta je potrebno samo implementirati <code>INC7.bdf</code> šemu). Kombinacioni modul <code>Binary2BCD</code> kao ulaz prima binarni broj širine 7 bita, a kao rezultat daje BCD predstavu binarnog broja sa ulaza. Kombinacioni modul <code>7segmentInterface</code> kao ulaz prima binarni broj širine 4 bita koji prikazuje na sedmosegmentnom displeju. Sekvencijalni modul <code>RisingEdge</code> kao izlaz ima jedan bit koji se aktivira na jednu periodu takta, svaki put kada se ulaz promeni iz neaktivnog u aktivno stanje.
 
'''[[Медиј:PORT lab 3 2021 postavka.zip|Preuzimanje postavke ''Quartus'' projekta.]]'''
[[Датотека:PORT lab 3 2021 šema.png|1000px|thumb|center|Slika iz postavke domaćeg zadatka za treću laboratorijsku vežbu.]]
 
=== Modifikacije ===
Razne modifikacije iz raznih termina, bez logičke povezanosti.
# Napraviti modul <code>ADD1</code>, a onda od njega <code>ADD7</code>.
# 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. <code>LD</code>, <code>INC</code> i <code>CL</code>) 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 <code>HEX<sub>0</sub></code> i <code>HEX<sub>1</sub></code>. Dugmetom <code>BTN<sub>0</sub></code> se resetuje preostalo vreme za napad na 24 sekunde. Dugmetom <code>BTN<sub>1</sub></code> se resetuje preostalo vreme za napad na 14 sekundi. Dugmetom <code>BTN<sub>2</sub></code> 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 <code>LED<sub>9</sub></code>, č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 <code>Timer24</code>.
 
U drugom režimu rada se prikazuje broj postignutih poena. Broj postignutih poena domaće ekipe se prikazuje na sedmosegmentnim displejima <code>HEX<sub>0</sub></code> i <code>HEX<sub>1</sub></code>, a broj postignutih poena gostujuće ekipe se prikazuje na sedmosegmentnim displejima <code>HEX<sub>2</sub></code> i <code>HEX<sub>3</sub></code>. Kombinacijom prekidača <code>SW<sub>7</sub></code> i dugmadi <code>BTN<sub>0</sub></code>, <code>BTN<sub>1</sub></code>, i <code>BTN<sub>2</sub></code>, moguće je dodati poene jednoj od ekipa. Pozicijom prekidača <code>SW<sub>7</sub></code> bira se ekipa kojoj se dodaju poeni, dok se pomoću dugmadi <code>BTN<sub>0</sub></code>, <code>BTN<sub>1</sub></code>, i <code>BTN<sub>2</sub></code>, izabranoj ekipi dodaje odgovarajući broj poena (<code>BTN<sub>0</sub></code> - jedan, <code>BTN<sub>1</sub></code> - dva, <code>BTN<sub>2</sub></code> - tri). Za potrebe drugog režima rada treba iskoristiti sekvencijalni modul <code>Result</code>.
 
U trećem režimu rada se prikazuje broj ličnih grešaka igrača iz obe ekipe. Pozicijom prekidača <code>SW<sub>7</sub></code> bira se ekipa, dok se pomoću prekidača <code>SW<sub>6</sub></code> do <code>SW<sub>0</sub></code> 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 <code>BTN<sub>0</sub></code>. Broj ličnih grešaka izabranog igrača se prikazuje serijskim uključivanjem dioda <code>LED<sub>4</sub></code> do <code>LED<sub>0</sub></code>. Na primer, ako igrač ima dve lične greške potrebno je uključiti diode <code>LED<sub>1</sub></code> i <code>LED<sub>0</sub></code>, a ako igrač ima četiri lične greške potrebno je uključiti diode <code>LED<sub>3</sub></code>, <code>LED<sub>2</sub></code>, <code>LED<sub>1</sub></code> i <code>LED<sub>0</sub></code>. 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 <code>RegFile</code>.
 
Režim rada košarkaškog semafora se bira pomoću prekidača <code>SW<sub>9</sub></code> i <code>SW<sub>8</sub></code>, na sledeći način: <code>SW<sub>9</sub></code> = 0, <code>SW<sub>8</sub></code> = 1 -> prvi režim, <code>SW<sub>9</sub></code> = 1, <code>SW<sub>8</sub></code> = 0 -> drugi režim, <code>SW<sub>9</sub></code> = 1, <code>SW<sub>8</sub></code> = 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 <code>Timer24</code> kao ulaz ima tri signala <code>rst24</code>, <code>rst14</code> i <code>stop_resume</code>. Aktivnom vrednošću signala <code>rst24</code> preostalo vreme za napad se postavlja na 24 sekunde. Aktivnom vrednošću signala <code>rst14</code> preostalo vreme za napad se postavlja na 14 sekundi. Aktivnom vrednošću signala <code>stop_resume</code> 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 <code>RegFile</code> tj. registarski fajl predstavlja skup registara. Registarski fajl ima interfejs sličan interfejsu memorijskih čipova. Postoje standardni signali <code>WR</code>, <code>Adr</code>, <code>DataIN</code>, <code>DataOUT</code>, a postoji i ulazni signal <code>rst</code> koji omogućava postavljanje vrednosti svih registara na nulu. Na izlazu <code>DataOUT</code> registarskog fajla uvek se nalazi vrednost registra na čiju adresu ukazuje ulazni signal <code>Adr</code>. Prilikom realizacije registarskog fajla koristiti sedmorazredne registre. Kombinacioni modul <code>Binary2BCD</code> kao ulaz prima binarni broj širine 7 bita, a kao rezultat daje BCD predstavu binarnog broja sa ulaza. Kombinacioni modul <code>7segmentInterface</code> kao ulaz prima binarni broj širine 4 bita koji prikazuje na sedmosegmentnom displeju. Sekvencijalni modul <code>RisingEdge</code> kao izlaz ima jedan bit koji se aktivira na jednu periodu takta, svaki put kada se ulaz promeni iz neaktivnog u aktivno stanje.
 
'''[[Медиј:PORT lab 4 2021 postavka.zip|Preuzimanje postavke ''Quartus'' projekta.]]'''
[[Датотека:PORT lab 4 2021 šema.png|1000px|thumb|center|Slika iz postavke domaćeg zadatka za četvrtu laboratorijsku vežbu.]]
 
=== 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 <code>LED<sub>2..0</sub></code>.
# Umesto <code>rst14</code>, klikom na <code>BTN<sub>1</sub></code> se startuje vreme u reketu, ponovnim klikom na <code>rst14</code> se zaustavlja. Treba <code>LED<sub>9</sub></code> da zasvetli kada igrač provede 3 sekunde u reketu. Klikom na <code>rst24</code> 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).


[[Категорија:Лабораторијске вежбе]]
[[Категорија:Лабораторијске вежбе]]
[[Категорија:ПОРТ]]
[[Категорија:ПОРТ]]

Тренутна верзија на датум 5. фебруар 2022. у 15:09

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
  1. Napraviti brojač koji broji po sekvenci 5-4-3-2-1-0-1-2-3-4-5.
  2. 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
  1. 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.
  2. Napraviti JK FF preko T FF.
Varijanta 3
  1. Napraviti brojač koij broji po sekvenci 5-3-1-0-5.
  2. 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.

Slika iz postavke domaćeg zadatka za treću laboratorijsku vežbu.

Modifikacije

Razne modifikacije iz raznih termina, bez logičke povezanosti.

  1. Napraviti modul ADD1, a onda od njega ADD7.
  2. Umesto dva muktipleksera za izbor broja poena (1, 2 ili 3) koristiti jedan sa 2 ulaza i logičke elemente.
  3. Napraviti registar koji ima zadate funkcije (npr. LD, INC i CL) 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.

Slika iz postavke domaćeg zadatka za četvrtu laboratorijsku vežbu.

Modifikacije

Razne modifikacije iz raznih termina, bez logičke povezanosti.

  1. Na levom HEX ekranu ispisati broj ličnih grešaka, a na desnom broj dresa za igrača koji se odabere.
  2. 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.
  3. Dopustiti da igrač ima 6 ličnih greški i broj ličnih greški prikazati kao binarni broj na LED2..0.
  4. Umesto rst14, klikom na BTN1 se startuje vreme u reketu, ponovnim klikom na rst14 se zaustavlja. Treba LED9 da zasvetli kada igrač provede 3 sekunde u reketu. Klikom na rst24 se vreme u reketu postavlja na 0.
  5. 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.
  6. Stopiranje sa ličnim (isto kao druga navedena).