This shows you the differences between two versions of the page.
| 
    soc:laboratoare:07:todo [2024/04/17 00:25] stefan.maruntis Actualizat cerinta ex4  | 
    
    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. | 
| - | <hidden> | + | **Task 02** (4p) Implementați un sumator pe 16 de biți folosind modulul carry-lookahead deja implementat și logica sumatorului ripple-carry. | 
| - | Complementul față de 2 al unui număr: -X = ~X + 1 | + | |
| - | </hidden> | + | |
| - | **Task 03** (2p) Implementați un sumator pe 16 de biți folosind modulul carry-lookahead deja implementat și logica sumatorului ripple-carry. | + | **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: | 
| - | + | ||
| - | **Task 04** (4p) 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: | + | |
| * Intrări: | * Intrări: | ||
| - | * 4 switch-uri -> pentru selectarea operanzilor | + | * operandul A -> 4 switch-uri | 
| + | * operandul B -> 4 switch-uri | ||
| * buton1 -> buton pentru validarea operanzilor | * buton1 -> buton pentru validarea operanzilor | ||
| * buton2 -> buton pentru operația de adunare | * buton2 -> buton pentru operația de adunare | ||
| Line 20: | Line 17: | ||
| * buton reset | * buton reset | ||
| * Ieșiri: | * Ieșiri: | ||
| - | * cele 8 leduri -> pentru afisarea progresului (**o_r_progress**) | + | * cele 8 leduri -> pentru afisarea progresului (**o_r_leds**) | 
| * afisajul cu 7 segmente -> pentru afișarea rezultatului (**l_r_message**) | * afisajul cu 7 segmente -> pentru afișarea rezultatului (**l_r_message**) | ||
| * Mod de operare: | * Mod de operare: | ||
| * STATE_INITIAL: | * STATE_INITIAL: | ||
| - | * se introduce valoarea primului operand folosind switch-urile | + | * se introduc valorile celor doi operanzi folosind switch-urile | 
| * pe cele 8 leduri se va afișa valoarea PROGRESS_NONE | * pe cele 8 leduri se va afișa valoarea PROGRESS_NONE | ||
| - | * pe afișajul cu 7 segmente se va afișa valoarea operandului în zecimal | + | * pe afișajul cu 7 segmente se va afișa valoarea unuia dintre operanzi | 
| * la apăsarea lui buton1: | * la apăsarea lui buton1: | ||
| - | * se salvează în memorie valoarea primului operand | + | * se salvează în memorie valoarea operanzilor | 
| - | * se trece în starea STATE_OP1_READ | + | * se trece în starea STATE_OP_READ | 
| - | * STATE_OP1_READ: | + | * STATE_OP_READ: | 
| - | * se introduce valoarea celui de-al doilea operand folosind switch-urile | + | |
| - | * pe cele 8 leduri se va afișa valoarea PROGRESS_ONE_OPERAND | + | |
| - | * pe afișajul cu 7 segmente se va afișa valoarea operandului în zecimal | + | |
| - | * la apăsarea lui buton1: | + | |
| - | * se salvează în memorie valoarea celui de-al doilea operand | + | |
| - | * se trece în starea STATE_OP2_READ | + | |
| - | * STATE_OP2_READ: | + | |
| * pe cele 8 leduri se va afișa valoarea PROGRESS_BOTH_OPERANDS | * 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) | * pe afișajul cu 7 segmente se va afișa mesajul APAS (PRESS_MESSAGE) | ||
| - | * la apăsarea lui buton1 sau buton2: | + | * la apăsarea lui buton2 sau buton3: | 
| * se trece în starea STATE_RESULT_SELECT | * se trece în starea STATE_RESULT_SELECT | ||
| * STATE_RESULT_SELECT | * STATE_RESULT_SELECT | ||
| Line 49: | Line 39: | ||
| * diferența celor doi operanzi din memorie, dacă este apăsat buton3 | * diferența celor doi operanzi din memorie, dacă este apăsat buton3 | ||
| * suma și diferența vor fi afișate în zecimal | * suma și diferența vor fi afișate în zecimal | ||
| - | + | * pentru introducerea altor valori pentru operanzi se va apăsa butonul de reset | |
| - | <hidden> | + | |
| - | * 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 operanzilor | + | |
| - | * afisajul cu 7 segmente -> pentru afișarea rezultatului | + | |
| - | * Mod de operare: | + | |
| - | * trebuie introduși operanzii cu ajutorul switch-urilor și afisați cu ajutorul led-urilor(câte 4 pentru fiecare operand) | + | |
| - | * pentru a valida operanzii trebuie apăsat butonul "buton1" | + | |
| - | * după validare: | + | |
| - | * la apăsarea butonului "buton2" se va afișa cu ajutorul afișajului cu 7 segmente rezultatul adunării celor doi operanzi | + | |
| - | * la apăsarea butonului "buton3" se va afișa cu ajutorul afișajului cu 7 segmente rezultatul scăderii celor doi operanzi | + | |
| - | * dupa apăsarea unui buton, va rămâne afișată aceeași valoare până la apăsarea următorului buton | + | |
| - | * pentru introducerea altor valori pentru operanzi se va apăsa butonul de reset | + | |
| - | </hidden> | + | |
| * 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 | ||
| - | <note tip>Puteți porni de la soluția voastră pentru exercițiul 4 de la laboratorul precedent (chiar dacă nu este completă).</note> | ||