Differences

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

Link to this comparison view

ac-is:lab:lab03 [2021/10/18 16:55]
ionut.pascal add skelet cod
ac-is:lab:lab03 [2023/10/27 15:15] (current)
teodor.dicu [Resurse]
Line 143: Line 143:
  
 În cadrul blocurilor //initial// și //always// atribuirile pot fi de două feluri, cu semantici diferite: În cadrul blocurilor //initial// și //always// atribuirile pot fi de două feluri, cu semantici diferite:
-  * Atribuiri blocante: sunt folosite pentru descrierea logicii combinaționale (porți logice). Atribuirile blocante sunt interpretate ca executându-se secvențial,​ semantica fiind identică cu cea din limbajele de programare procedurale. +  ​* **Atribuiri blocante**: sunt folosite pentru descrierea logicii combinaționale (porți logice). Atribuirile blocante sunt interpretate ca executându-se secvențial,​ semantica fiind identică cu cea din limbajele de programare procedurale. 
-  * Atribuiri non-blocante:​ sunt folosite pentru descrierea logicii secvențiale (ne vom întâlni cu ele în laboratorul următor).+  ​* **Atribuiri non-blocante**: sunt folosite pentru descrierea logicii secvențiale (ne vom întâlni cu ele în laboratorul următor).
  
 În Verilog putem declara variabile de tipul //reg// și //wire// pentru a crea circuite combinaționale. Atunci când se fac atribuirile există totuși următoarele restricții:​ În Verilog putem declara variabile de tipul //reg// și //wire// pentru a crea circuite combinaționale. Atunci când se fac atribuirile există totuși următoarele restricții:​
Line 199: Line 199:
   - **(2p)** Implementați și simulați un modul de **afișaj cu 7 segmente** pentru numere în baza 10. Descrierea sumară a funcționalității acestuia se poate regăsi în [[lab03#​Anexă|Anexă]]. ​   - **(2p)** Implementați și simulați un modul de **afișaj cu 7 segmente** pentru numere în baza 10. Descrierea sumară a funcționalității acestuia se poate regăsi în [[lab03#​Anexă|Anexă]]. ​
     * //Hint//: Există o ieșire validă pentru fiecare intrare? Nu uitați de cazul ''​default''​. ​     * //Hint//: Există o ieșire validă pentru fiecare intrare? Nu uitați de cazul ''​default''​. ​
 +    * //Hint//: Se vor testa doar cifrele de la 0 la 9.
   - **(4p)** Implementați o **unitate aritmetico-logică** simplă (UAL), pe **4** biți, cu 2 operații: adunare și înmulțire. Folosiți o intrare de selecție de 1 bit pentru a alege între cele două operații astfel: 0 - adunare, 1 - înmulțire.   - **(4p)** Implementați o **unitate aritmetico-logică** simplă (UAL), pe **4** biți, cu 2 operații: adunare și înmulțire. Folosiți o intrare de selecție de 1 bit pentru a alege între cele două operații astfel: 0 - adunare, 1 - înmulțire.
-    * //Hint//: Este necesar să creați un nou proiect. Se poate folosi tutorialul. ​+    * //Hint//: Este necesar să creați un nou proiect. Se poate folosi ​[[ac-is:​tutoriale:​1-ise-proiect|tutorialul]]
     * //Hint//: Câți biți au ieșirea sumatorului și a multiplicatorului?​ Dar a UAL-ului? ​     * //Hint//: Câți biți au ieșirea sumatorului și a multiplicatorului?​ Dar a UAL-ului? ​
     * //Hint//: Pentru selecția dintre ieșirea sumatorului și cea a multiplicatorului se poate folosi atribuirea continuă sau se poate implementa un modul multiplexor 2:1      * //Hint//: Pentru selecția dintre ieșirea sumatorului și cea a multiplicatorului se poate folosi atribuirea continuă sau se poate implementa un modul multiplexor 2:1 
-    * //Hint//: Pentru testarea UAL trebuie creat un scenariu de test, folosind tutorialul. Presupunând că sumatorul și multiplicatorul sunt testate temeinic la exercițiile anterioare, creați un scenariu relevant funcționării UAL-ului ca un ansamblu.+    * //Hint//: Pentru testarea UAL trebuie creat un scenariu de test, folosind ​[[ac-is:​tutoriale:​2-ise-simulare|tutorialul]]. Presupunând că sumatorul și multiplicatorul sunt testate temeinic la exercițiile anterioare, creați un scenariu relevant funcționării UAL-ului ca un ansamblu.
   - **(3p)**: Pentru o utilizare mai generală, implementați un UAL cu operatori cu dimensiune variabilă. ​   - **(3p)**: Pentru o utilizare mai generală, implementați un UAL cu operatori cu dimensiune variabilă. ​
     * //Hint//: Pentru a-l implementa, este necesară implementarea unui multiplicator parametrizat - atenție la dimensiunea semnalelor!  ​     * //Hint//: Pentru a-l implementa, este necesară implementarea unui multiplicator parametrizat - atenție la dimensiunea semnalelor!  ​
Line 225: Line 226:
  
 ===== Resurse ===== ===== Resurse =====
-  * {{.:​lab03:​lab3_skel.zip|Schelet de cod}}+  * {{.:​lab03:​lab3_skel.zip|Schelet de cod}}  
   * <​html><​a class="​media mediafile mf_pdf"​ href="​https://​ocw.cs.pub.ro/​courses/​ac-is/​lab/​lab03?​do=export_pdf">​PDF laborator</​a></​html> ​   * <​html><​a class="​media mediafile mf_pdf"​ href="​https://​ocw.cs.pub.ro/​courses/​ac-is/​lab/​lab03?​do=export_pdf">​PDF laborator</​a></​html> ​
 +  * {{.:​lab03:​sol:​lab3_sol.zip|Soluție laborator}}
  
- +<ifauth @ac-is>
-<ifauth @user>+
 ---- ----
 +  * {{.:​lab03:​sol:​lab3_sol.zip|Soluție laborator}}
   * [[ac-is:​internal:​guidelines|Ghid asistent]]   * [[ac-is:​internal:​guidelines|Ghid asistent]]
 </​ifauth>​ </​ifauth>​
  
ac-is/lab/lab03.1634565354.txt.gz · Last modified: 2021/10/18 16:55 by ionut.pascal
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