This shows you the differences between two versions of the page.
|
soc:laboratoare:05:exercitii [2024/02/29 14:37] 127.0.0.1 external edit |
soc:laboratoare:05:exercitii [2026/03/28 17:24] (current) andrei.darlau change task number |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | **Task 1** (2p). Implementați un modul care afișează cifra "0" folosind afișajul cu 7 segmente. | + | **Task 1-1** (2p). Implementați un modul care afișează cifra "0" folosind afișajul cu 7 segmente. |
| - | **Task 2** (3p). Implementați un modul care afișează numărul "0123" folosind afișajul cu 7 segmente. | + | **Task 1-2** (3p). Implementați un modul care afișează ziua și luna voastră de naștere (ex: "24.06") folosind afișajul cu 7 segmente. |
| <note important> | <note important> | ||
| Line 8: | Line 8: | ||
| </note> | </note> | ||
| - | **Task 3** (5p). Implementați un modul contor folosind afișajul cu 7 segmente. La reset modulul va afișa "0000", iar, la fiecare apăsare a unui buton, aceast număr va fi incrementat (e.g. "0001" -> "0002" -> "0003" -> etc.) | + | **Task 2** (5p). Realizați un timer utilizând 7 segment display. Folosiți primele 2 cifre pentru afișarea minutelor, iar ultimele 2 pentru afișarea secundelor. Va trebui să întârziați clock-ul intern al plăcuței pentru a obține frecvența aferenta 1s. După cum stiți, la 60s, display-ul aferent secundelor se va reseta la 00, iar display-ul aferent minutelor va crește cu o unitate. La activarea switch-ului reset, timer-ul vostru trebuie să revină la 00:00: |
| - | + | - In ''clock_div.v'', definiti ''CLK_DIV'', dupa care implementati logica divizorului de ceas. ''refresh_fq'' poate fi folosit drept valoare de refresh pentru cifre, ~381Hz fiind "good enough". | |
| - | <note important> | + | - In ''counter.v'' implementati logica numaratorului. |
| - | La fiecare apăsare a butonului contorul trebuie incrementat o singură dată. Nu uitați de [[https://elf.cs.pub.ro/cn/wiki/lab/tsc/lab03?&#switch-debouncing|switch debouncing]]. | + | - In ''bin2bcd.v'' implementati algoritmul Double Dabble, pentru a converti valoarea numaratorului in 2 cifre. |
| - | </note> | + | - In ''display_7seg.v'': implementati logica corespunzatoare pentru ciclarea printre cifre; afisarea fiecarei cifre; afisarea punctului intre minute si secunde. |
| - | + | - In ''task2.v'', legati firele corespunzator intre toate modulele implementate anterior pentru a obtine logica completa a display-ului. | |
| - | **Task 4** (bonus - 2p). Realizați un timer utilizând 7 segment display. Folosiți primele 2 cifre pentru afișarea minutelor, iar ultimele 2 pentru afișarea secundelor. Va trebui să întârziați clock-ul intern al plăcuței pentru a obține frecvența aferenta 1s. După cum stiți, la 60s, display-ul aferent secundelor se va reseta la 00, iar display-ul aferent minutelor va crește cu o unitate. La apăsarea butonului reset, timer-ul vostru trebuie să revină la 00:00. | + | - (1p - Bonus) Implementati functionalitatea dublarii vitezei numaratorului prin activarea unui switch. |