Inhoudsopgave:
Video: CPE 133 metronoom: 3 stappen
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
Voor ons afstudeerproject bij Cal Poly hebben we een apparaat voor het bijhouden van tempo gemaakt, een metronoom genaamd, we kozen dit project vanwege een interesse in muziek en digitaal ontwerp. We hebben eerdere labs in CPE 133 gebruikt om onze code te ontwerpen en online tutorials om te helpen bij het bouwen van het LED-circuit op het breadboard.
Stap 1: Systeemarchitectuur
We hebben dit ontwerp geïmplementeerd met behulp van een Basys 3 FPGA-bord, Breadboard, LED's, weerstanden en jumpers voor verbinding.
Het doel van dit ontwerp is om de snelheid waarmee de LED's heen en weer knipperen te verhogen en te verlagen. Het tempo waarmee ze knipperen, wordt een tempo genoemd. Het gewenste tempo werd bereikt door de knoppen op het Basys 3 FPGA-bord te gebruiken om het tempo van het licht te verhogen of te verlagen.
Als de omhoog-knop werd ingedrukt, namen de lichten toe in snelheid, als de neer-knop werd ingedrukt, zou de snelheid afnemen.
Stap 2: Circuitarchitectuur
Systeemarchitectuur: Knop de-bounce: we hebben een knop-de-bounce in het circuit geïmplementeerd om ervoor te zorgen dat wanneer we op een knop klikken het tempo met één interval wordt verhoogd. Zonder de de-bounce zou een enkele druk op de knop toenemen met de frequentie van de klok.
Tempo-wisselaar: Tempo-wisselaar werd gebruikt om de MAX_COUNT-waarde die door de klokverdeler wordt gebruikt te verhogen of te verlagen om de klokuitvoer die de LED aanstuurt te regelen.
Register: Er werd een register gebruikt om de waarden van onze nieuwe MAX_COUNT vast te houden die werd uitgevoerd door de tempowisselaar. Er is een CLR aan het register toegevoegd om de MAX_COUNT opnieuw in te stellen op een waarde die overeenkomt met een klokfrequentie van 1 seconde.
Clock Divider: Een klokdeler wordt gebruikt om de klokpulsen van het BASYS 3-bord te vertragen, dit wordt gedaan door de klokfrequentie te delen door de MAX_COUNT waarde die is gewijzigd in de tempowisselaar.
Shift Register: een aangepast 4-bits schuifregister werd gebruikt om een '1' of hoge waarde uit te voeren naar ons LED-circuit op het breadboard op de stijgende flank van de klokpuls. Met 4 LED's op het breadboard waren we in staat om slechts 1 van de 4 LED's tegelijk uit te voeren, achtereenvolgens, waardoor een zich herhalende reeks van 4 beats ontstond. Het schuifregister werd zodanig aangepast dat de 4-bits uitvoer slechts 1 hoge waarde bevatte, namelijk "0001" of "0100".