FPGA tidsinställda universell fjärrkontroll (IR) (3 / 6 steg)
Steg 3: VHDL Setup
Detta projekt har flera olika moduler som arbetar tillsammans för att få det att fungera:
ircontrol: Använder en tillståndsdator spela in och spela signalen på vid lämpliga tidpunkter. Inuti denna modul är ett block av RAM-minne som styrs av en alternativ adress och skriva. Tillståndsmaskinen styr dessa två signaler att spela in / läsa från minnet.
sseg_dec: Denna modul skapades av Bryan Mealy och funktioner som en dekoder 7 segment display. Filen kan ta binära eller BCD och omvandlar det till lämpliga sju segment värden och innehåller en klocka avdelare för att visa numren i 7 segment visas på rätt sätt.
clk_div: Denna fil skapades också av Bryan Mealy och finns flera gånger under hela vårt projekt. Klockan delningslisten är kan sakta ner frekvensen av ombord klockan, 100Mhz för Basys 3 styrelsen. Denna klocka avdelare används för display anoder, IR-sensorn och LED och timer klockan.
timer: Timern först kräver att användaren anger antalet timmar och minuter som blir första visas på sju segment display av Basys3 och senare kommer att räknas ned. Vänster och höger knapparna väljer du det belopp som skall öka den totala tiden i sekunder av; 60 minuter, 600 för tiotals minuter, 3600 för timmar och 36000 för tiotals timmar. Den upp-och nedknapparna ökas den totala tiden med oavsett värdet väljs av vänster och höger knapparna. Denna total tid är sedan omvandlas från sekunder till timmar, minuter och sekunder och sedan skickas till en bildskärmsdrivrutin som konverterar tiden till en sju segment display. När den mellersta button(set) trycks, användaren inte längre kan påverka tiden och minskar de totala tiden av en alla andra använda modulen clk_div. När den totala tiden blir noll, utgångar timern en "klar" signal som talar om IR-kontrollen att spela upp tidigare registrerade IR-signalen.
Bifogat ovan är en svart låda diagram som är en hög nivå representation av hur denna krets fungerar.