This shows you the differences between two versions of the page.
soc:laboratoare:07:todo [2024/04/17 23:47] stefan.maruntis Imbunatatit explicatii ex4 |
soc:laboratoare:07:todo [2024/04/18 11:14] (current) stefan.maruntis Actualizat cerinta ex 4 |
||
---|---|---|---|
Line 4: | Line 4: | ||
**Task 02** (1p) Implementați un scăzător carry-lookahead pe 4 biți, pornind de la punctul precedent. | **Task 02** (1p) Implementați un scăzător carry-lookahead pe 4 biți, pornind de la punctul precedent. | ||
- | |||
- | <hidden> | ||
- | 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** (2p) Implementați un sumator pe 16 de biți folosind modulul carry-lookahead deja implementat și logica sumatorului ripple-carry. | ||
Line 21: | Line 17: | ||
* buton reset | * buton reset | ||
* Ieșiri: | * Ieșiri: | ||
- | * cele 8 leduri -> pentru afisarea operanzilor | + | * cele 8 leduri -> pentru afisarea progresului (**o_r_leds**) |
- | * afisajul cu 7 segmente -> pentru afișarea rezultatului | + | |
- | * Mod de operare: | + | |
- | * în starea inițială: | + | |
- | * se vor introduce operanzii A și B cu ajutorul switch-urilor | + | |
- | * ledurile vor afișa valoarea operanzilor (aprins pentru bit de 1, stins pentru bit de 0) | + | |
- | * la apăsarea butonului buton1: | + | |
- | * se salvează valoarea operanzilor în memorie | + | |
- | * se trece în starea următoare, pentru afișarea rezultatelor | + | |
- | * în starea pentru afișarea rezultatelor: | + | |
- | * pe displayul cu 7 segmente va fi afisat rezultatul: | + | |
- | * textul APAS, dacă nu sunt apăsate nici buton2, nici buton3 | + | |
- | * suma A + B, dacă este apăsat buton2 | + | |
- | * diferența A - B, dacă este apăsat buton3 | + | |
- | * pentru introducerea altor valori pentru operanzi se va apăsa butonul de reset | + | |
- | + | ||
- | <hidden> | + | |
- | * Intrări: | + | |
- | * 4 switch-uri -> pentru selectarea operanzilor | + | |
- | * 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_progress**) | + | |
* 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 78: | Line 43: | ||
<note tip>Puteți porni de la soluția voastră pentru exercițiul 4 de la laboratorul precedent (chiar dacă nu este completă).</note> | <note tip>Puteți porni de la soluția voastră pentru exercițiul 4 de la laboratorul precedent (chiar dacă nu este completă).</note> | ||
+ | |||
+ | <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: | ||
+ | * în starea inițială: | ||
+ | * se vor introduce operanzii A și B cu ajutorul switch-urilor | ||
+ | * ledurile vor afișa valoarea operanzilor (aprins pentru bit de 1, stins pentru bit de 0) | ||
+ | * la apăsarea butonului buton1: | ||
+ | * se salvează valoarea operanzilor în memorie | ||
+ | * se trece în starea următoare, pentru afișarea rezultatelor | ||
+ | * în starea pentru afișarea rezultatelor: | ||
+ | * pe displayul cu 7 segmente va fi afisat rezultatul: | ||
+ | * textul APAS, dacă nu sunt apăsate nici buton2, nici buton3 | ||
+ | * suma A + B, dacă este apăsat buton2 | ||
+ | * diferența A - B, dacă este apăsat buton3 | ||
+ | * pentru introducerea altor valori pentru operanzi se va apăsa butonul de reset | ||
</hidden> | </hidden> | ||