Differences

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

Link to this comparison view

soc:laboratoare:04:todo [2025/03/25 00:09]
matei_calin.ceausu
soc:laboratoare:04:todo [2026/03/22 17:11] (current)
robert_fabian.tudor
Line 1: Line 1:
    
-**Task 1** (2p + 0.25p + 0.25p) **Implementați un modul** care să aprindă și se stingă un LED la un anumit ​interval de timp. Astfelvom folosi ​un FSM simplu, cu doar două stări. ​După simularea cu succes ​circuitului, **completați** fișierul ''​**xdc**''​ și **încărcați** soluția **pe FPGA**+**Task 1** (2p + 0.25p + 0.25p) **Implementați un modul** care să aprindă și să stingă un LED la un interval ​regulat ​de timp. Pentru a realiza acest lucruveți construi ​un automat finit simplu, cu doar două stări:  
-    *În prima stare, LED-ul va fi stins, se va aștepta un anumit interval de timp (1s), iar apoi trece in starea 2. +    ***Starea 1:** LED-ul este stinsAutomatul așteaptă timp de 1 secundă, după care tranzitează în starea 2. 
-    *Starea a doua, în care va petrece același interval de timp, dar aprins.+    ***Starea 2:** LED-ul este aprins. Automatul ​așteaptă același interval de 1 secundădupă care revine în starea 1. 
 +**Completați** fișierul ''​**xdc**''​ și **încărcați** soluția **pe FPGA**.
 Urmăriți TODO-urile din schelet! Urmăriți TODO-urile din schelet!
  
  
-**Task 2** (2.5p + 0.25p + 0.75p) Chiar dacă a trecut ​Craciunul, acum știm destul de multe pentru a realiza o simplă instalație de pom. Implementați un FSM care să producă ​următoarea ​secvență folosind LED-urile. După simularea cu succes a circuitului,​ **completați** fișierul ''​**xdc**''​ și **încărcați** soluția **pe FPGA**.+**Task 2** (2.5p + 0.25p + 0.75p) Chiar dacă a trecut ​Crăciunul, acum știm destul de multe pentru a realiza o simplă instalație de pom. Implementați un FSM care să producă secvența de mai jos folosind LED-urile. ​
   * "​*"​ înseamnă că LED-ul este aprins;   * "​*"​ înseamnă că LED-ul este aprins;
   * "​-"​ înseamnă că LED-ul respectiv este stins;   * "​-"​ înseamnă că LED-ul respectiv este stins;
   * T00, T01, ..., T14 sunt stările posibile ale LED-urilor;   * T00, T01, ..., T14 sunt stările posibile ale LED-urilor;
-  * Durata tranziției ​de la starea ​Tn la Tn+1 trebuie să fie de secundă. <​code> ​   t00 *-*-*-*-+  * Timpul petrecut ​de automat în fiecare stare (Tntrebuie să fie de secundă, după care se face tranziția la următoarea stare (Tn+1). <​code> ​   t00 *-*-*-*-
     t01 -*-*-*-*     t01 -*-*-*-*
     t02 *-*-*-*-     t02 *-*-*-*-
Line 26: Line 27:
     t14 -**-*--*     t14 -**-*--*
     mergi la t00</​code>​     mergi la t00</​code>​
 +    ​
 +**Completați** fișierul ''​**xdc**''​ și **încărcați** soluția **pe FPGA**.
     ​     ​
 <note tip> **Hint!** \\ **Pentru întârzierea tranziției trebuie să folosiți un timer.** Timer-ul este un circuit simplu care numără într-un contor tranzițiile ceasului. Astfel, pentru cronometrare folosiți frecvența ceasului ca să aflați câte tranziții trebuie numărate. **Apoi, blocați FSM-ul în starea curentă până când contorul ajunge la valoare dorită.** \\ Pentru simulare, va trebui să micșorați intervalul cronometrat.</​note>​ <note tip> **Hint!** \\ **Pentru întârzierea tranziției trebuie să folosiți un timer.** Timer-ul este un circuit simplu care numără într-un contor tranzițiile ceasului. Astfel, pentru cronometrare folosiți frecvența ceasului ca să aflați câte tranziții trebuie numărate. **Apoi, blocați FSM-ul în starea curentă până când contorul ajunge la valoare dorită.** \\ Pentru simulare, va trebui să micșorați intervalul cronometrat.</​note>​
  
-**Task 3** (2.5p + 0.5p + 1p) Implementați un modul care să simuleze comportamentul unui semafor pentru ​pietoni ​controlat prin apăsarea unui buton. **Completați** fișierul ''​**xdc**''​ și **încărcați** soluția **pe FPGA**.+**Task 3** (2.5p + 0.5p + 1p) Implementați un modul care să simuleze comportamentul unui semafor pentru ​mașini, ​controlat prin apăsarea unui buton. ​Pentru acest task vom folosi unul dintre ​**LED-urile RGB** de pe placă. Modul de operare al automatului este prezentat mai jos.
   - În starea inițială mențineți aprinsă culoarea verde.   - În starea inițială mențineți aprinsă culoarea verde.
   - La apăsarea unui buton, cronometrați un interval de 1 secundă.   - La apăsarea unui buton, cronometrați un interval de 1 secundă.
Line 35: Line 38:
   - Apoi, modificați culoarea în roșu și mențineți-o timp de 3 secunde.   - Apoi, modificați culoarea în roșu și mențineți-o timp de 3 secunde.
   - Reveniți la starea inițială.   - Reveniți la starea inițială.
 +**Completați** fișierul ''​**xdc**''​ și **încărcați** soluția **pe FPGA**.
  
- +<note important>​
-<note important>​Pentru a asigura o funcționare corectă pe un circuit real, trebuie să folosiți în mod normal un debouncer, pe care să îl atașați butonului folosit (vezi secțiunea [[:​soc:​laboratoare:​03bis:​debouncing|Switch debouncing]] din laborator).\\ +
-**Pentru simulare tratați intrările de tip buton ca fiind deja eșantionate,​ deoarece schimbarea de semnal se produce instantaneu,​ fara niciun fel de zgomot.** +
 Având în vedere că nu ați mai lucrat cu **define**, aveți un exemplu de cum se folosește: Având în vedere că nu ați mai lucrat cu **define**, aveți un exemplu de cum se folosește:
 <​code>​ <​code>​
Line 45: Line 46:
 out = `DEFINE_EXAMPLE;​ out = `DEFINE_EXAMPLE;​
 </​code>​ </​code>​
 +</​note>​
  
-În plus, dacă folosiți butonul de CPU Reset, să luați în considerare că funcționează în logică negată. +<note important>​ 
 +Pentru a asigura o funcționare corectă pe un circuit real, trebuie să folosiți în mod normal un debouncer, pe care să îl atașați butonului folosit (vezi secțiunea [[:​soc:​laboratoare:​03bis:​debouncing|Switch debouncing]] din laborator). ​În plus, dacă folosiți butonul de CPU Reset, să luați în considerare că funcționează în logică negată.
 </​note>​ </​note>​
  
Line 55: Line 57:
   - Starea inițială – Mașinile au verde, iar pietonii trebuie să aștepte (roșu).   - Starea inițială – Mașinile au verde, iar pietonii trebuie să aștepte (roșu).
   - Apăsarea butonului – Când un pieton apasă butonul, se inițiază un temporizator de 1 secundă, după care mașinile intră în faza de avertizare.   - Apăsarea butonului – Când un pieton apasă butonul, se inițiază un temporizator de 1 secundă, după care mașinile intră în faza de avertizare.
-  - Avertizarea mașinilor – Mașinile pot trec pe galben timp de 1 secundă, iar pietonii ​rămân pe roșu.+  - Avertizarea mașinilor – Mașinile pot trece pe galben timp de 1 secundă, iar pietonii ​încă așteaptă la roșu.
   - Trecerea pietonilor – Mașinile se opresc la roșu, iar pietonii primesc verde timp de 3 secunde, permițând traversarea.   - Trecerea pietonilor – Mașinile se opresc la roșu, iar pietonii primesc verde timp de 3 secunde, permițând traversarea.
   - Avertizare pietoni – Pietonii primesc un semnal intermitent (verde/​stins,​ de patru ori la intervale de 0.5 secunde), indicând sfârșitul timpului de traversare.   - Avertizare pietoni – Pietonii primesc un semnal intermitent (verde/​stins,​ de patru ori la intervale de 0.5 secunde), indicând sfârșitul timpului de traversare.
   - Sistemul revine la starea inițială.   - Sistemul revine la starea inițială.
  
-**Completați** fișierul ''​**xdc**'' ​pentru modul și încărcați pe FPGA.+**Completați** fișierul ''​**xdc**''​ și **încărcați** soluția **pe FPGA**.
  
 <note tip> <note tip>
-Pentru ca LED-ul RGB să nu funcționeze la intensitate maximă, am folosit o metodă numită PWM (Pulse Width Modulation). Pentru cei interesați,​ vă recomandăm să citiți [[https://​ocw.cs.pub.ro/​courses/​apm/​laboratoare/​07#:​~:​text=Edit-,​PWM,​-Pulse%2Dwidth%20modulation|această]] secțiune din laboratul de APM. (mic spoiler)+Pentru ca LED-urile RGB să nu funcționeze la intensitate maximă, am folosit o metodă numită PWM (Pulse-Width Modulation). Pentru cei interesați,​ vă recomandăm să citiți [[https://​ocw.cs.pub.ro/​courses/​apm/​laboratoare/​07#:​~:​text=Edit-,​PWM,​-Pulse%2Dwidth%20modulation|această]] secțiune din laboratul de APM. (mic spoiler)
 </​note>​ </​note>​
  
soc/laboratoare/04/todo.1742854153.txt.gz · Last modified: 2025/03/25 00:09 by matei_calin.ceausu
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