This shows you the differences between two versions of the page.
ac-is:lab:lab03 [2021/10/16 12:37] ionut.pascal make lab available |
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}} | ||
* <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> | ||