Differences

This shows you the differences between two versions of the page.

Link to this comparison view

soc:laboratoare:06 [2025/04/07 19:40]
stefan.maruntis [Exerciții]
soc:laboratoare:06 [2025/04/22 20:34] (current)
stefan.maruntis [Exerciții]
Line 32: Line 32:
 === 3.2. Full-adder === === 3.2. Full-adder ===
  
-{{ :​soc:​laboratoare:​06:382_fa_diagram.gif?400 |}}+{{ :​soc:​laboratoare:​08:full-adder.png?400 |}}
  
 Un full-adder este un circuit care realizează suma a doi operanzi ținând cont și de transportul din rangul inferior. Intrările sale sunt A, B (cei doi operanzi) și C<​sub>​in</​sub>​ (transportul de la rangul inferior). El generează la ieșire doua semnale: S (suma) și C<​sub>​out</​sub>​ (carry out - transportul către rangul următor). Tabela de adevăr pentru un full-adder este prezentată în figura 3.2. Un full-adder este un circuit care realizează suma a doi operanzi ținând cont și de transportul din rangul inferior. Intrările sale sunt A, B (cei doi operanzi) și C<​sub>​in</​sub>​ (transportul de la rangul inferior). El generează la ieșire doua semnale: S (suma) și C<​sub>​out</​sub>​ (carry out - transportul către rangul următor). Tabela de adevăr pentru un full-adder este prezentată în figura 3.2.
Line 69: Line 69:
 Unitatea Aritmetico-Logică este o componentă care se ocupă de aproape toate calculele numerice necesare unui procesor. În ciclul de prelucrare a instrucţiunilor,​ în diverse etape procesorul are nevoie de rezultatele unor calcule, fie că sunt solicitate de o intrucţiune explicită cum este //add// din limbajul de asamblare, fie dintr-un motiv intern (de exemplu adresa absolută a unei date se calculează în funcţie de //segment// şi //offset//, ceea ce implică nevoia unor calcule). Unitatea Aritmetico-Logică este o componentă care se ocupă de aproape toate calculele numerice necesare unui procesor. În ciclul de prelucrare a instrucţiunilor,​ în diverse etape procesorul are nevoie de rezultatele unor calcule, fie că sunt solicitate de o intrucţiune explicită cum este //add// din limbajul de asamblare, fie dintr-un motiv intern (de exemplu adresa absolută a unei date se calculează în funcţie de //segment// şi //offset//, ceea ce implică nevoia unor calcule).
  
-O UAL poate fi proiectată să execute, în principiu, orice operație. Totuși, cu cât operațiile devin mai complexe UAL devine mai scumpă, ocupă mai mult loc și disipă mai multă căldură. Operațiile care sunt, în general, suportate de toate UAL sunt:+O UAL poate fi proiectată să execute, în principiu, orice operație. Totuși, cu cât operațiile devin mai complexeUAL devine mai scumpă, ocupă mai mult loc și disipă mai multă căldură. Operațiile care sunt, în general, suportate de toate UAL sunt:
   * Operații logice: AND, OR, NOT, XOR, NOR, NAND, etc.   * Operații logice: AND, OR, NOT, XOR, NOR, NAND, etc.
   * Operații de shift: shift stânga, shift dreapta, shift circular, etc.   * Operații de shift: shift stânga, shift dreapta, shift circular, etc.
Line 84: Line 84:
       * C<​sub>​in<​sup>​(i+1)</​sup></​sub>​ = C<​sub>​out<​sup>​(i)</​sup></​sub>​       * C<​sub>​in<​sup>​(i+1)</​sup></​sub>​ = C<​sub>​out<​sup>​(i)</​sup></​sub>​
       * C<​sub>​in<​sup>​(0)</​sup></​sub>​ = 0       * C<​sub>​in<​sup>​(0)</​sup></​sub>​ = 0
-  * Unitatea Aritmetică Logică se ocupă de aproape toate calculele cerute de procesor, solicitate de o instrucțiune explicită sau necesară intern.+  ​* **Unitatea Aritmetică Logică** se ocupă de aproape toate calculele cerute de procesor, solicitate de o instrucțiune explicită sau necesară intern.
   * Instrucțiuni uzuale:   * Instrucțiuni uzuale:
     * Operații Logice: AND, OR, NOT, XOR, NOR, NAND, etc.     * Operații Logice: AND, OR, NOT, XOR, NOR, NAND, etc.
Line 109: Line 109:
       *  **(0.5p)** 3 : ''​ADD''​ (folosiți ''​task2''​)       *  **(0.5p)** 3 : ''​ADD''​ (folosiți ''​task2''​)
       *  **(0.5p)** 4 : ''​SUB''​ (folosiți ''​task3''​)       *  **(0.5p)** 4 : ''​SUB''​ (folosiți ''​task3''​)
- 
-<note tip> 
-În acest laborator aveți fișiere de testare pentru fiecare task. Acesta are hardcodate operanzi și rezultatele unor operații, iar rolul lui este de a vă ajuta pentru testare. 
-</​note>​ 
- 
-<​hidden>​ 
-**Bonus:** - Încărcați modulul ''​task3.v''​ pe placa de dezvoltare din laborator. 
- 
-    * Switch-urile vor fi folosite pentru a da valoare intrărilor:​ ''​i_w_a'',​ ''​i_w_b''​ și ''​i_w_op_sel'';​ 
-    * Butoanele vor fi folosite ''​pentru i_w_reset'';​ 
-    * Afișajul cu 7 segmente va afișa rezultatul operației în format zecimal (utilizați modulul din display_7_segment_driver.v);​ 
-    * LED-urile din dreptul switch-urilor vor afișa valoarea în format binar a intrărilor:​ ''​i_w_a'',​ ''​i_w_b''​ și ''​i_w_op_sel'';​ 
-    * Folosiți doar 4 dintre cele 8 cifre de pe afișaj (spre exemplu cele cu anozii AN0-AN3). 
- 
- 
-  - (4p) Implementați un sumator/​scăzător pe 8 biți cu ajutorul plăcii de laborator. 
-    - Caracteristici:​ 
-      - 2 operanzi pe 8 biţi 
-      - Afişare operanzi şi rezultat pe afişajul cu 7 segmente 
-      - Afişare progres pe cele 8 LED-uri 
-    - Mod de operare: 
-      - Preluare operand 1 -> prin apăsarea unui '​push-button'​ 
-      - Preluare operand 2 -> prin apăsarea aceluiaşi '​push-button'​ 
-        * !!! Până la apăsarea butonului, pe afişajul cu 7 segmente va fi afişată valoarea operandului 
-      - Afişare: 
-        * rezultat -> dacă este ţinut apăsat butonul corespunzător unei operaţii 
-        * '​APAS'​ -> dacă nu este apăsat niciun buton 
-      - La apăsarea butonului de reset, circuitul se întoarce la preluarea primului operand 
-    *  **Citiţi comentariile din modul şi urmăriţi TODO-urile!** 
-</​hidden>​ 
 ===== Resurse ===== ===== Resurse =====
   * [[https://​github.com/​cs-pub-ro/​SOC/​tree/​main/​lab06|Scheletul de laborator]]   * [[https://​github.com/​cs-pub-ro/​SOC/​tree/​main/​lab06|Scheletul de laborator]]
soc/laboratoare/06.1744044002.txt.gz · Last modified: 2025/04/07 19:40 by stefan.maruntis
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0