Ljus upptäcka och positionering enhet (2 / 4 steg)
Steg 2: Styrelsen moduler
För att utföra de åtgärder som beskrivs i föregående steg, behövs FPGA styrelsen flera moduler som utförde de nödvändiga uppgifterna sekventiellt. Detta innebar att de flesta av modulerna som måste dela samma klocksignalen och vara planeras in så att de fungerar i synk. Detta görs genom att länka den input och output av flera ändlig stat maskin moduler. Detta innebar att vårt slutliga genomförande var mycket annorlunda från våra ursprungliga föreställa. Nedan ingår i-detalj beskrivningar av vad varje modul gör, samt exempel VHDL filer för moduler, tillsammans med några moduler för att testa funktionaliteten i kretsen.
KONTROLL
Kontrollmodulen styr andra ändliga Tillståndsdatorerna i styrelsen. Detta säkerställer att allt är tidsinställda korrekt så att inga oändliga loopar som gör att kretsen drift sker. Detta görs genom att ha kontrollblocket skicka en signal till en annan modul (SCAN modul), säga till den att göra något. Kontrollblocket väntar på svar från andra modulen innan du fortsätter. Sedan anropar den nästa modulen (hitta modulen) när den tar emot ett svar för att fortsätta processen. Sedan, beroende på framgången med hitta blocket, kontroll blockera sedan antingen minskar eller återställer referensspänningen av kontrollapparaterna. Detta säkerställer att de andra modulerna endast utför en åtgärd när det är absolut nödvändigt.
SCAN
Modulen SCAN är en som skannar i sensordata från de externa sensorerna. Det gör detta genom att kontrollera den SEL signal som matas ut till de externa muxes, och genom att kontrollera den inre DMFLOP modul genom att använda en sv och SEL signal. Modulen väntar på en signal från kontrollblocket och börjar sökningen när den tar emot den. Det går igenom alla giltiga SEL värden och gör DMFLOP modulen så att den lagrar värdena i ett register. När alla värden lagras, returnerar en klar signal till kontrollblocket.
HITTA
Modulen hitta söker efter en maximal sensor värde från den skannade i sensordata. När den tar emot en signal från kontrollblocket söker modulen hitta efter en '1' värde i sensor värden, vilket tyder på sensorn spänningen var högre än referensspänningen för att särskilda sensor. Det utgångar sedan en 7-bitars värde som är relaterade till värdet "1" position i matrisen sensor data. Om den hittar en '1', returneras en framgång med kontroll block. Om ingen ' 1 i data, är misslyckande en signal tillbaka till kontrollblocket.
DMFLOP
Modulen DMFLOP är en specialiserad flip flop register som tar sv och SEL inmatning från SCAN blocket. Det använder dessa signaler till demux insatsvaror från den externa muxes och lagra dem i registret. Denna modul är viktigt eftersom båda SCAN och hitta block kräver det för kretsen att arbeta.
MAIN
Modulen MAIN kapslar in modulerna som kontroll, SCAN, hitta och DMFLOP i en enda modul. Detta garanterar de moduler som alla får samma klocksignal, och gör det mycket lättare att införliva i andra kretsar moduler. Modulen MAIN krävs bara en enda klocksignal och 3-bitars input från externa kontrollapparaterna. Dess resultat är SEL signalen och två 7-bitars plikt signaler för motorn och referens spänning PWM signaler.
REF
REF modulen tar utgångar från kontrollmodulen att bestämma vilken 7-bitars plikt för den referensspänningen PWM bör vara. Det kan antingen minska spänningen eller återställa den till sin högsta spänning, beroende på resultatet av kontrollmodulen.
PWM
PWM modulen genererar en puls-pulsbreddsmodulerad signal som är utdata till en av styrelsen utgångar direkt. Modulen tar i en 7-bitars plikt signal som representerar intermittensen PWM signalens. Frekvensen av PWM signalen bestäms av klocksignalen levereras till modulen. Den här modulen används för att generera referensspänningen och motor PWM signaler.
CLK_DIV
Modulen CLK_DIV är en klocka avdelare. Det utgångar en klocksignal med en frekvens som är lika med den ingående klockfrekvens dividerat med ett heltal. Heltalsvärdet kan ändras genom att ändra ett värde inuti klockan divider vhdl-filen. En klocka avdelare behövs för klocksignalen huvudsakliga modul samt för motor PWM modulen. Kredit för att skapa CLK_DIV modulen går till Bryan Mealy.
TEST/MUX
Modulerna TEST och MUX testar moduler för kretsen.