Stap 3: User Input Processing
Dit gedeelte van het ontwerp is verantwoordelijk voor de bemonstering van de encoder en knop ingangen. De "standaard snelheid" PMOD werd gebruikt om deze signalen in de Zynq. Knop ingangen werden bemonsterd gewoon met een GPIO module. Encoder ingangen worden verwerkt door een coderingsprogramma IP blok (geschreven door mij) om de waarde van een "count" aan hoeveel het coderingsprogramma omgetoverd gerelateerde.
Aangezien mechanische rotary encoders werden gebruikt, zowel de schakelaar en de encoder uitgangen vereist pullup resistors (5k Ohm), en een debouncing LP filter is ook toegevoegd. Dit was waarschijnlijk de zwakste deel van mijn ontwerp, en zeker vergt wat meer werk. Ik had probleem krijgen van waarden nauwkeurig tellen van de encoders, ondanks de simulaties van de hardware-blokken weergegeven: werking (afbeeldingen zijn toegevoegd). Ik had geen tijd om te diagnostiseren zulks werkstuk vooraleer de laatste demo, dus het blijft als iets die ik u raden aan om meer tijd te ontwerpen dan ik!
-encoder_btn_gpio: kanaal 1 wordt ingevoerd, nemen in aantal waarden van de drie encoders en twee knoppen
-encoder0, 1, 2: My IP voor het interpreteren van de ingangen van de kwadratuur van rotary encoders. Stappen van het coderingsprogramma worden geregistreerd als een "count" waarde die kan negatief of positief. De eerste ingang is aanwezig om het opnieuw instellen van de waarde van count, waardoor de PS te lezen van de waarde van count, dan resetten. Op deze manier, moet de waarde van count nooit overloop en vreemde resultaten veroorzaken.