Differences

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

Link to this comparison view

ac-is:lab:lab07 [2021/10/03 13:59]
eduard.ciurezu [Resurse]
ac-is:lab:lab07 [2023/12/03 12:09] (current)
ioana.dinu0810 [Resurse]
Line 1: Line 1:
 ====== Laboratorul 7 - Calculatorul Didactic: Unitatea Aritmetică-Logică ====== ====== Laboratorul 7 - Calculatorul Didactic: Unitatea Aritmetică-Logică ======
- 
  
 În cadrul acestui laborator se continuă implementarea în Verilog a procesorului didactic prezentat la  {{..:​resurse:​ac5.pdf| curs}} și în [[.:lab06| laboratorul 6]]. În cadrul acestui laborator se continuă implementarea în Verilog a procesorului didactic prezentat la  {{..:​resurse:​ac5.pdf| curs}} și în [[.:lab06| laboratorul 6]].
Line 25: Line 24:
  
  
-  * ''​T/​C''​ //​(transport,​ eng: carry)//: Este setat (poziţionat în "​1"​ ) dacă în urma unei adunări rezultă un transport dinspre rangul cel mai semnificativ,​ altfel ''​T''​ este şters (trecut în "​0"​). ​Transportul ''​T''​ este setat dacă în urma unei scăderi rezultă un împrumut în cel mai semnificativ bit al rezultatului,​ altfel este şters. Poate fi interpretat ca depăşire în instrucțiunile cu numere întregi fără semn. Poate fi utilizat în instrucțiunile ''​ADC''​ şi ''​SBB''​ pentru a efectua operaţii aritmetice în precizie multiplă. Poate fi testat cu instrucțiuni de salt condiţionat.+  * ''​T/​C''​ //​(transport,​ eng: carry)//: Este setat (poziţionat în "​1"​ ) dacă în urma unei adunări rezultă un transport dinspre rangul cel mai semnificativ,​ altfel ''​T''​ este şters (trecut în "​0"​). 
 +    * Este setat dacă în urma unei scăderi rezultă un împrumut în cel mai semnificativ bit al rezultatului,​ altfel este şters. 
 +    * Poate fi interpretat ca depăşire în instrucțiunile cu numere întregi fără semn. Poate fi utilizat în instrucțiunile ''​ADC''​ şi ''​SBB''​ pentru a efectua operaţii aritmetice în precizie multiplă. Poate fi testat cu instrucțiuni de salt condiţionat.
   * ''​S''​ //​(semn)//: ​   * ''​S''​ //​(semn)//: ​
     * La execuţia operațiilor aritmetice şi logice, indicatorul S este setat la valoarea bitului cel mai semnificativ al rezultatului (bitul de semn). ​     * La execuţia operațiilor aritmetice şi logice, indicatorul S este setat la valoarea bitului cel mai semnificativ al rezultatului (bitul de semn). ​
Line 104: Line 105:
 O shiftare logică nu ține cont de semnul operandului. În cazul shiftării logice se ține cont doar de ordinea biților, iar pozițiile care rămân libere sunt umplute cu zerouri. O shiftare logică nu ține cont de semnul operandului. În cazul shiftării logice se ține cont doar de ordinea biților, iar pozițiile care rămân libere sunt umplute cu zerouri.
  
-În imaginile de mai jos se poate observa modul de execuție ​al shiftărilor logice. ​+În imaginile de mai jos se poate observa modul de execuție ​shiftărilor logice. ​
  
-{{ .:​lab07:​shl.png?​200 | Shiftare logică/​aritmetică la stânga}} +{{ .:​lab07:​shl.png?​200 | Shiftare logică la stânga}} 
-<​html><​p align="​center">​Shiftare logică/​aritmetică la stânga</​p></​html>​+<​html><​p align="​center">​Shiftare logică la stânga</​p></​html>​
  
-{{ .:​lab07:​shr.png?​200 | Shiftare logică/​aritmetică la dreapta}} +{{ .:​lab07:​shr.png?​200 | Shiftare logică la dreapta}} 
-<​html><​p align="​center">​Shiftare logică/​aritmetică la dreapta</​p></​html>​+<​html><​p align="​center">​Shiftare logică la dreapta</​p></​html>​
  
 Iar în figurile de mai jos găsiți un exemplu practic de efectuare a shiftărilor logice spre stânga (''​SHL''​) și spre dreapta (''​SHR''​). Iar în figurile de mai jos găsiți un exemplu practic de efectuare a shiftărilor logice spre stânga (''​SHL''​) și spre dreapta (''​SHR''​).
  
-{{ .:​lab07:​shl_sal_example.png?​200 | Exemplu de shiftare logică/​aritmetică la stânga}} +{{ .:​lab07:​shl_sal_example.png?​200 | Exemplu de shiftare logică la stânga}} 
-<​html><​p align="​center">​Exemplu de shiftare logică/​aritmetică la stânga</​p></​html>​+<​html><​p align="​center">​Exemplu de shiftare logică la stânga</​p></​html>​
  
-{{ .:​lab07:​shr_example.png?​200 | Exemplu de shiftare logică/​aritmetică la dreapta}} +{{ .:​lab07:​shr_example.png?​200 | Exemplu de shiftare logică la dreapta}} 
-<​html><​p align="​center">​Exemplu de shiftare logică/​aritmetică la dreapta</​p></​html>​+<​html><​p align="​center">​Exemplu de shiftare logică la dreapta</​p></​html>​
  
 În Verilog, operatorii de shiftare logică sunt %%''<<''​%% și %%''>>''​%%. În Verilog, operatorii de shiftare logică sunt %%''<<''​%% și %%''>>''​%%.
Line 129: Line 130:
  
 {{ .:​lab07:​sar.png?​200 | Exemplu de shiftare aritmetică la dreapta}} {{ .:​lab07:​sar.png?​200 | Exemplu de shiftare aritmetică la dreapta}}
 +<​html><​p align="​center">​Exemplu de shiftare aritmetică la dreapta</​p></​html>​
 +
 +{{ .:​lab07:​sar_2.png?​200 | Exemplu de shiftare aritmetică la dreapta}}
 <​html><​p align="​center">​Exemplu de shiftare aritmetică la dreapta</​p></​html>​ <​html><​p align="​center">​Exemplu de shiftare aritmetică la dreapta</​p></​html>​
  
Line 183: Line 187:
   - **(2p)** Implementați în unitatea de comandă faza de trecere la instrucțiunea următoare, prin incrementarea Contorului Program. Folosiți-vă de operația implementată la exercițiul anterior.   - **(2p)** Implementați în unitatea de comandă faza de trecere la instrucțiunea următoare, prin incrementarea Contorului Program. Folosiți-vă de operația implementată la exercițiul anterior.
     * Hint: pentru realizarea de către UC a unui transfer de date între resursele calculatorului revedeți soluția laboratorului anterior.     * Hint: pentru realizarea de către UC a unui transfer de date între resursele calculatorului revedeți soluția laboratorului anterior.
-  - **(4x1.5p)** Implementați următoarele operații în cadrul unității aritmetice-logice. :!: **Nu uitați indicatorii de condiții!**.+  - **(6x1.5p)** Implementați următoarele operații în cadrul unității aritmetice-logice. :!: **Nu uitați indicatorii de condiții!**.
     - //SBB1// (eng. //SuBstract with Borrow//; calculează //in1// - //in2// - //carry//)     - //SBB1// (eng. //SuBstract with Borrow//; calculează //in1// - //in2// - //carry//)
     - //NOT//     - //NOT//
 +    - //OR//
     - //XOR// (eng. //eXclusive OR//)     - //XOR// (eng. //eXclusive OR//)
 +    - //SHL// (eng. //Shift Left//)
     - //SAR// (eng. //Shift Arithmetic Right//)     - //SAR// (eng. //Shift Arithmetic Right//)
     * Implementarea operației fără indicatorii de condiții oferă un punctaj de 50%.     * Implementarea operației fără indicatorii de condiții oferă un punctaj de 50%.
Line 197: Line 203:
  
   * {{.:​lab06:​sol:​lab7_skel.zip|Schelet de cod}}   * {{.:​lab06:​sol:​lab7_skel.zip|Schelet de cod}}
-  * {{.:​lab07:​sol:​lab7_sol.zip|Soluție laborator}} (disponibilă începând cu 16.11.2019) 
   * <​html><​a class="​media mediafile mf_pdf"​ href="​https://​ocw.cs.pub.ro/​courses/​ac-is/​lab/​lab07?​do=export_pdf">​PDF laborator</​a></​html> ​   * <​html><​a class="​media mediafile mf_pdf"​ href="​https://​ocw.cs.pub.ro/​courses/​ac-is/​lab/​lab07?​do=export_pdf">​PDF laborator</​a></​html> ​
   * {{..:​resurse:​cheat-sheet.pdf|Cheat-sheet calculator didactic}}   * {{..:​resurse:​cheat-sheet.pdf|Cheat-sheet calculator didactic}}
   * {{..:​resurse:​ac5.pdf|Arhitectura calculatorului didactic}}   * {{..:​resurse:​ac5.pdf|Arhitectura calculatorului didactic}}
 +  * {{.:​lab07:​sol:​lab8_skel.zip|Soluție laborator}}
  
  
-<ifauth @user>+<ifauth @ac-is>
 ---- ----
 +  * {{.:​lab07:​sol:​lab8_skel.zip|Soluție laborator}}
   * [[ac-is:​internal:​guidelines|Ghid asistent]]   * [[ac-is:​internal:​guidelines|Ghid asistent]]
 </​ifauth>​ </​ifauth>​
 +
ac-is/lab/lab07.1633258775.txt.gz · Last modified: 2021/10/03 13:59 by eduard.ciurezu
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