This shows you the differences between two versions of the page.
soc:laboratoare:07:todo [2024/02/29 14:37] 127.0.0.1 external edit |
soc:laboratoare:07:todo [2025/04/25 10:55] (current) filip.dumitrascu |
||
---|---|---|---|
Line 1: | Line 1: | ||
Pentru fiecare dintre exerciții va trebui să faceți atât **implementarea** cât și **simularea** cu seturi de date relevante. (**minim 3 cazuri de test**) | Pentru fiecare dintre exerciții va trebui să faceți atât **implementarea** cât și **simularea** cu seturi de date relevante. (**minim 3 cazuri de test**) | ||
- | **Task 01** (3p) Implementați un sumator carry-lookahead pe 4 biți. | + | **Task 00** (4p) Implementați un sumator carry-lookahead pe 4 biți. |
- | **Task 02** (1p) Implementați un scăzător carry-lookahead pe 4 biți, pornind de la punctul precedent. | + | **Task 01** (2p) Implementați un scăzător carry-lookahead pe 4 biți, pornind de la punctul precedent. |
- | **Task 03** (2p) Implementați un sumator pe 16 de biți folosind modulul carry-lookahead deja implementat și logica sumatorului ripple-carry. | + | **Task 02** (4p) Implementați un sumator pe 16 de biți folosind modulul carry-lookahead deja implementat și logica sumatorului ripple-carry. |
- | **Task 04** (4p) Implementati un sumator/scazator carry-lookahead pe 4 biti cu ajutorul [[http://www.digilentinc.com/Data/Products/NEXYS/Nexys_rm.pdf|placii de laborator]]. Interactiunea cu modulul se va face astfel: | + | **Task 03** (bonus - 2p) Implementați un sumator/scăzător carry-lookahead pe 4 biti cu ajutorul [[https://digilent.com/reference/_media/reference/programmable-logic/nexys-a7/nexys-a7_rm.pdf|plăcii de laborator]]. Interacțiunea cu modulul se va face astfel: |
- | * Intrari: | + | |
- | * operandul A -> 4 switch-uri | + | |
- | * operandul B -> 4 switch-uri | + | |
- | * buton1 ->buton pentru validarea operanzilor | + | |
- | * buton2 -> buton pentru operatia de adunare | + | |
- | * buton3 -> buton pentru operatia de scadere | + | |
- | * buton reset | + | |
- | * Iesiri: | + | |
- | * cele 8 leduri -> pentru afisarea operanzilor | + | |
- | * afisajul cu 7 segmente -> pentru afisarea rezultatului | + | |
- | * Mod de operare: | + | |
- | * trebuie intodusi operanzii cu ajutorul switch-urilor si afisari cu ajutorul led-urilor(cate 4 pentru fiecare operand | + | |
- | * pentru a valida opernazii trebuie apasat butonul "buton1" | + | |
- | * dupa validare: | + | |
- | * la apasarea butonul "buton2" se va afisa cu ajutorul afisajului cu 7 segmente rezultatul adunarii celor doi operanzi | + | |
- | * la apasarea butonul "buton3" se va afisa cu ajutorul afisajului cu 7 segmente rezultatul adunarii celor doi operanzi | + | |
- | * dupa apasarea unui buton, va ramane afisata aceeasi valoare pana la apasarea urmatorului buton | + | |
- | * pentru introducerea altor valori pentru operanzi se va apasa butonul de reset | + | |
+ | * Intrări: | ||
+ | * operandul A -> 4 switch-uri | ||
+ | * operandul B -> 4 switch-uri | ||
+ | * buton1 -> buton pentru validarea operanzilor | ||
+ | * buton2 -> buton pentru operația de adunare | ||
+ | * buton3 -> buton pentru operația de scădere | ||
+ | * buton reset | ||
+ | * Ieșiri: | ||
+ | * cele 8 leduri -> pentru afisarea progresului (**o_r_leds**) | ||
+ | * afisajul cu 7 segmente -> pentru afișarea rezultatului (**l_r_message**) | ||
+ | * Mod de operare: | ||
+ | * STATE_INITIAL: | ||
+ | * se introduc valorile celor doi operanzi folosind switch-urile | ||
+ | * pe cele 8 leduri se va afișa valoarea PROGRESS_NONE | ||
+ | * pe afișajul cu 7 segmente se va afișa valoarea unuia dintre operanzi | ||
+ | * la apăsarea lui buton1: | ||
+ | * se salvează în memorie valoarea operanzilor | ||
+ | * se trece în starea STATE_OP_READ | ||
+ | * STATE_OP_READ: | ||
+ | * pe cele 8 leduri se va afișa valoarea PROGRESS_BOTH_OPERANDS | ||
+ | * pe afișajul cu 7 segmente se va afișa mesajul APAS (PRESS_MESSAGE) | ||
+ | * la apăsarea lui buton2 sau buton3: | ||
+ | * se trece în starea STATE_RESULT_SELECT | ||
+ | * STATE_RESULT_SELECT | ||
+ | * pe cele 8 leduri se va afișa valoarea PROGRESS_RESULT | ||
+ | * pe afișajul cu 7 segmente se va afișa: | ||
+ | * mesajul APAS (PRESS_MESSAGE), dacă nu este apăsat nici buton2, nici buton3 | ||
+ | * suma celor doi operanzi din memorie, dacă este apăsat buton2 | ||
+ | * diferența celor doi operanzi din memorie, dacă este apăsat buton3 | ||
+ | * suma și diferența vor fi afișate în zecimal | ||
+ | * pentru introducerea altor valori pentru operanzi se va apăsa butonul de reset | ||
* pentru a realiza operațiile veți folosi modulele create la exercițiile anterioare | * pentru a realiza operațiile veți folosi modulele create la exercițiile anterioare | ||
- | <hidden> | ||
- | **Task 03** (2p) Găsiți 2 teste relevante în care să fie vizibilă optimizarea adusă de sumatorul carry-lookahead față de cel ripple-carry. | ||
- | </hidden> |