Styra servon på FPGA (3 / 6 steg)
Steg 3: Hur koden fungerar
I min kod som jag har min topp modul, företrädd i bilden av den prickade square, ingångar som växlar, en knapp för tydliga och systemklockan.
Inom större topp modulen har jag en counter, kontrollapparat, växla till vinkel dekoder och vinkel till konstant värde på dekodern.
Räknaren tar in systemklockan och rensa. Varje klockcykel steg det ett antal värde tills den träffar en viss konstant värde. Detta värde är vad krävs för att få den lämplig frekvensen. Du kan hitta ekvationen för som kommenterade i koden. När den når värdet återställs. Så det räknas till konstant och sedan går tillbaka till noll. Detta styr frekvensen.
Växla till vinkel dekoder tar i en switch-värde och mappar det till en vinkel värde.
Vinkel dekodern tar i en vinkel värde och mappas till ett konstant värde som kommer att få lämplig intermittensen. Att ekvationen är också kommenterade i koden.
Motsvarigheten tar sedan i räkna värdet och konstant värde från vinkel dekodern. Om räkna värdet är mindre än konstanten än produktionen är 1, annars är produktionen noll. Detta skapar en PWM-signal.
Du kan se att illustreras i den andra bilden.
Om du vill använda vinkeln som indata i stället för växlarna kan du ta bort växeln för att vinkla dekoder. Om du vill använda mer än en servo, kan du instansiera flera servo controller moduler i en högre topp modul.