Innehållsförteckning:

Basys 3 väckarklocka: 9 steg
Basys 3 väckarklocka: 9 steg

Video: Basys 3 väckarklocka: 9 steg

Video: Basys 3 väckarklocka: 9 steg
Video: Основные ошибки при возведении перегородок из газобетона #5 2024, December
Anonim
Basys 3 väckarklocka
Basys 3 väckarklocka

Vårt projekt skapar en väckarklocka med hjälp av Basys 3 FPGA -kortet, en Arduino och ett högtalarkort. Användaren kan mata in den aktuella tiden till kortet med 11 ingångsbrytare på Basys 3 och låsa in värdet med mittenknappen på kortet. Användaren kan sedan ange larmtiden med samma omkopplare men tryck på vänster knapp för att låsa in larmtiden. Om du anger fel tid kan du trycka på återställningsknappen (övre knappen) och den aktuella klockan och alarmtiden ska ställas in på 00:00. Användaren kan sedan starta klockan med knappen längst till vänster och slå på larmet med nästa omkopplare. När larmet slås på kommer väckarklockan att göra ett ljud när klockan och den inställda larmtiden matchar.

Steg 1: Black Box Diagram

Black Box Diagram
Black Box Diagram
Black Box Diagram
Black Box Diagram

Vi började vårt projekt med att rita ett svart lådediagram för att visualisera ingångar och utgångar som behövs i vårt program. Följande ingångar för vårt program, såsom 5-bitars ingång (tim_in) initierades för att ange 24-timmars tid, 6-bitars (Min_in) ingång för att visa upp till 60 minuter, en återställningsknapp (Rst_b) för att låta användaren ändra deras tidsingång, en 1-bitars ingång (alm_en) som laddar larmingången, en 1-bitars ingång (alarm_sw) för att stänga av väckarklockan när den är aktiverad, en 1-bitars ingång (e_sec) som styr när räknaren sekunder körs, en 1-bitars ingång (Led_btn) som ställer in den aktuella tiden, och slutligen en 1-bitars ingång (clk) som styr tiden som visas av Basys 3-kortet. Utgångarna är (alm_on) som skickar signalen till Arduino, sseg -utgången som visar ingångstiden på Basys 3 och anodutgången som styr var ingångarna visas på de sju segmentens display.

Steg 2: Långsam klocka

Långsam klocka
Långsam klocka

Den långsamma klockan eller clock_div2 -filen skapar en klocka vars frekvens är 2 hz. Om vi matar denna klocka till vår sekundräknare, ökar sekundvärdet med en varje sekund. Den långsamma klockan används för att skapa en pålitlig klocksignal som ändras från låg till hög en gång per sekund.

Steg 3: Räknare

Disken
Disken
Disken
Disken

Komponenträknare (minuter och sekunder):

Grundfunktionen för minuter och sekunder är att de är räknare. Minuteräknaren tar in ingång (Vin) som är signal från ingångar (Min_in) och räknar sedan tills den önskade ingången matas in. Sekunderna tar bara in ingången för omkopplaren (e_Sec) eftersom den inte kan visas på det sju segmentet och räknas i bakgrunden när omkopplaren är hög '1'. De matar båda ut värdet till (Qout), och sedan lagras det i (data) som skickar det till SSEG som görs i länkningsfilen. När minuter och sekunder når värdena på 59 återställs det och utsignalen från dem är "1" för att öka minuter/timme. Det kan också mappas med en återställning (rst_b) till deras ingångar.

Steg 4: Counter Hour

Counter Hour
Counter Hour
Counter Hour
Counter Hour

Komponenträknartimme

På samma sätt, till komponenträknaren för minuter och sekunder, tar timkomponenten in ingångar som (Vin) som är en signal från länkande filinmatning (tim_in) och har utgångar som är kopplade på samma sätt minuter och sekunder. När räkningsvärdet för timme når 24 00 återställs det till 00 00.

Steg 5: Larm

Larm
Larm
Larm
Larm
Larm
Larm
Larm
Larm

Larm.vhd-filen består av d-flip-flops som är lagringsenheter som kan lagra digital data. Larmfilen används för att lagra den tid då larmet kommer att aktiveras. För att lagra data om timmar (5 bitars ingång) och minuter (6 bitars ingång) måste vi stämpla ut 11 d-flip-flops i vår larmfil. För att göra detta måste vi först importera logiken för driften av d-flip-flops och kartlägga komponenterna. Var och en av de 11 d-flip-flopsna kommer att lagra en bit data från ingångarna och låta data mappas till larmfilens utgångar. Eftersom d-flip-flops lagrar data kan vi använda data vid ett senare tillfälle även om ingångsbrytarna har ändrats.

Steg 6: Universal Seven Segment Display Driver

Universal sju segmentdisplaydrivrutin
Universal sju segmentdisplaydrivrutin
Universal sju segmentdisplaydrivrutin
Universal sju segmentdisplaydrivrutin
Universal sju segmentdisplaydrivrutin
Universal sju segmentdisplaydrivrutin

Den universella sju segmentdisplaydrivrutinen tar emot ingångarna från klockan och klockan och kan mata ut dem till sju segmentskärmen på kortet. Föraren kan mata ut två separata räkningar på kortet på en gång. Vi använde denna funktion för att visa både timtid och minuttid separat. Displayen med sju segment kan bara aktivera ett nummer i taget, därför måste sseg -filen använda multiplexering för att visa alla tidens nummer samtidigt. Kortets klocksignal matas in i sseget för att hålla rätt tid för multiplexering. En binär till binär kodad decimalinkodare är nödvändig för att konvertera ingångarna till filen till en form som kan matas ut till sjusegmentdisplayen. Den slutliga utmatningen av sseg -filen mappas till sjusegmentdisplayen och rätt tid visas på displayen.

Steg 7: Länkfil

Länkfil
Länkfil
Länkfil
Länkfil
Länkfil
Länkfil

Länkfilen ansluter alla andra aspekter av programmet och kartlägger signalerna till deras rätta plats. Varje komponent förs in och instantieras i filen. Signaler används för att överföra data från en komponent till den andra. Portmappningen följer det svarta rutschemat som anges ovan. Länkfilen innehåller också logiken som styr när larmet aktiveras. Det mesta av projektet är redan klart vid denna tidpunkt. Det återstående arbetet dirigerar varje signal till lämplig plats.

Steg 8: Arduino

Arduino
Arduino
Arduino
Arduino

Arduino används för att aktivera högtalaren samt styra tonen och varaktigheten för den ton som spelas genom högtalaren. Arduino läser en digital signal från Basys 3 -kortet. När denna signal är hög kommer arduino att mata ut en PWM -signal som styr tonen och varaktigheten för larmet. Utsignalen från arduino ansluts till insignalen från ett högtalardrivrutin som ökar högtalarens volym. Arduino gör denna process mycket snabbt upprepa många gånger per sekund.

Steg 9: Kabeldragning

Kabeldragning
Kabeldragning

Arduino- och Basys 3 -kortet måste fysiskt anslutas för att överföra signaler mellan korten. Den första kabeln till kabeln kommer att vara från jordstiftet på JA PMOD i Basys 3 till jordstiftet på arduino. Anslut sedan en kabel från stift 1 på JA PMOD i Basys 3 till digital stift 7 på arduino. Anslut sedan två jordstift från arduino till jordstiftet på högtalardrivrutinen. Anslut därefter 3,3 V -utgången från arduinoen till Vcc -stiftet på högtalardrivrutinen. Anslut därefter den digitala stift 9 på arduino till in -stiftet på högtalardrivrutinen.

Rekommenderad: