Video: CPE 133 metronom: 3 pași
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
Pentru proiectul nostru final de la Cal Poly am creat un dispozitiv de menținere a tempo-ului numit metronom, am ales acest proiect datorită interesului muzical și al designului digital. Am folosit laboratoare anterioare în CPE 133 pentru a ne ajuta să ne proiectăm codul și tutorialele online pentru a ajuta la construirea circuitului cu LED-uri de pe panou.
Pasul 1: Arhitectura sistemului
Am implementat acest design folosind o placă FPGA Basys 3, Breadboard, LED-uri, rezistențe și jumperi pentru conectare.
Scopul acestui design este de a crește și de a reduce rata cu care LED-ul luminează intermitent înainte și înapoi. Ritmul în care clipesc se numește tempo. Tempo-ul dorit a fost atins utilizând butoanele de pe placa Basys 3 FPGA pentru a mări sau micșora tempo-ul luminii.
Dacă butonul sus a fost apăsat, luminile au crescut în viteză, dacă butonul jos a fost apăsat, viteza ar scădea.
Pasul 2: Arhitectura circuitului
Arhitectura sistemului: Buton De-bounce: Am implementat un buton de-bounce în circuit pentru a ne asigura că atunci când am făcut clic pe un buton pentru a crește tempo-ul cu un interval. Fără deconectare, o singură apăsare a butonului ar crește odată cu frecvența ceasului.
Schimbător de tempo: Schimbătorul de tempo a fost folosit pentru a crește sau micșora valoarea MAX_COUNT folosită de divizorul de ceas pentru a controla ieșirea de ceas care acționează LED-ul.
Înregistrare: s-a folosit un registru pentru a păstra valorile noului nostru MAX_COUNT care au fost scoase din comutatorul de tempo. A fost adăugat un CLR în registru pentru a reseta MAX_COUNT la o valoare corespunzătoare unei frecvențe de ceas de 1 secundă.
Clock Divider: Un divisor de ceas este folosit pentru a încetini impulsurile de ceas ale plăcii BASYS 3, acest lucru se face prin împărțirea frecvenței ceasului la valoarea MAX_COUNT care a fost modificată în comutatorul de tempo.
Shift Register: a fost utilizat un registru de schimbare de 4 biți modificat pentru a transmite o valoare „1” sau mare la circuitul nostru LED de pe placa de panou de pe marginea ascendentă a impulsului de ceas. Cu 4 LED-uri pe panou, am reușit să trimitem doar 1 din cele 4 LED-uri la un moment dat, succesiv, realizând o secvență repetată de 4 bătăi. Registrul de schimbare a fost modificat astfel încât ieșirea pe 4 biți să conțină doar o valoare mare, adică „0001” sau „0100”.