INHOUDSOPGAWE:

Basys 3 wekker: 9 stappe
Basys 3 wekker: 9 stappe

Video: Basys 3 wekker: 9 stappe

Video: Basys 3 wekker: 9 stappe
Video: Basys 3 Introduction 2024, Julie
Anonim
Basys 3 wekker
Basys 3 wekker

Ons projek skep 'n wekker met behulp van die Basys 3 FPGA -bord, 'n Arduino en 'n luidsprekerbestuurderbord. Die gebruiker kan die huidige tyd op die bord invoer deur 11 ingangskakelaars op die Basys 3 in te voer en die waarde met die middelste knoppie op die bord in te sluit. Die gebruiker kan dan die alarmtyd met dieselfde skakelaars invoer, maar druk op die linkerknoppie om die alarmtyd in te sluit. As die verkeerde tyd ingevoer is, kan die resetknoppie (boonste knoppie) ingedruk word en die huidige kloktyd en alarmtyd sal op 00:00 ingestel word. Die gebruiker kan dan die horlosie met die skakelaar aan die linkerkant begin en die alarm met die volgende skakelaar aanskakel. As die wekker aangeskakel word, sal die wekker 'n geluid maak as die wekker en die wekker tyd pas.

Stap 1: Black Box -diagram

Black Box diagram
Black Box diagram
Black Box diagram
Black Box diagram

Ons het ons projek begin deur 'n swart boksdiagram te teken om die insette en uitsette in ons program te visualiseer. Die volgende insette vir ons program, soos 5-bis-invoer (uur-in), is geïnisialiseer om die 24-uur-tyd, 6-bis (Min_in) -invoer te spesifiseer om tot 60 minute te vertoon, 'n reset (Rst_b) -knoppie sodat die gebruiker in staat is om verander hul tydsinvoer, 'n 1-bis-invoer (alm_en) wat die alarminvoer laai, 'n 1-bis-invoer (alarm_sw) om die wekker uit te skakel wanneer dit geaktiveer word, 'n 1-bis-invoer (e_sec) wat beheer wanneer die teller sekondes loop, 'n 1-bis-invoer (Led_btn) wat die huidige tyd bepaal, en laastens 'n 1-bis-invoer (clk) wat die tyd wat deur die Basys 3-bord vertoon word, beheer. Die uitsette is die (alm_on) wat die sein na die Arduino stuur, die sseg -uitset wat die invoertyd op die Basys 3 vertoon en die anode -uitset wat bepaal waar insette op die sewe segmente vertoon word.

Stap 2: Stadige klok

Stadige klok
Stadige klok

Die stadige klok- of clock_div2 -lêer skep 'n klok met 'n frekwensie van 2 hz. As ons hierdie horlosie na ons sekondeteller lei, sal die sekondeswaarde elke sekonde met een styg. Die stadige klok word gebruik om 'n betroubare kloksein te skep wat een keer per sekonde van laag na hoog verander.

Stap 3: Teller

Teller
Teller
Teller
Teller

Komponentteller (minute en sekondes):

Die basiese funksie van minute en sekondes is dat dit tellers is. Die minute teller neem insette (Vin) in, wat 'n sein is van insette (min_in), en tel dan totdat die gewenste invoer ingevoer is. Die sekondes neem slegs die inset van die skakelaar (e_Sec) in, aangesien dit nie op die sewe segment vertoon kan word nie, en tel in die agtergrond sodra die skakelaar hoog is '1'. Hulle gee albei die waarde daaruit na (Qout), en dan word dit gestoor in (data) wat dit na SSEG stuur, wat in die skakellêer gedoen word. As minute en sekondes die waardes van 59 bereik, word dit teruggestel, en die uitset daarvan is '1' om minute/uur te verhoog. Dit kan ook gekarteer word met 'n reset (rst_b) van hul insette.

Stap 4: Telleruur

Telleruur
Telleruur
Telleruur
Telleruur

Telleruur van komponent

Net so, na die komponentteller van die minute en sekondes, neem die uurkomponent insette soos (Vin), wat 'n sein is van die invoer van lêerinvoer (Uur_in), en uitsette het wat op dieselfde wyse gekoppel is as die minute en sekondes. As die telwaarde van die uur 24 00 bereik, word dit teruggestel na 00 00.

Stap 5: alarm

Alarm
Alarm
Alarm
Alarm
Alarm
Alarm
Alarm
Alarm

Die alarm.vhd-lêer bestaan uit d-flip-flops, wat stoorapparate is wat digitale data kan stoor. Die alarmlêer word gebruik om die tyd op te slaan waarop die alarm geaktiveer sal word. Om die data van ure (5 bis invoer) en minute (6 bit invoer) te stoor, moet ons 11 d-flip-flops binne ons alarmlêer uitvee. Om dit te kan doen, moet ons eers die logika vir die werking van d-flip-flops invoer en die komponente in kaart bring. Elkeen van die 11 d-flip-flops stoor 'n stukkie data van die insette en laat toe dat die data na die uitsette van die alarmlêer gekarteer word. Omdat d-flip-flops data stoor, kan ons die data op 'n later tydstip gebruik, selfs al is die insetskakelaars verander.

Stap 6: Universal Display Driver vir sewe segmente

Universele sewe segment vertoonbestuurder
Universele sewe segment vertoonbestuurder
Universele sewe segment vertoonbestuurder
Universele sewe segment vertoonbestuurder
Universele sewe segment vertoonbestuurder
Universele sewe segment vertoonbestuurder

Die universele bestuurder van sewe segmente ontvang die insette van die klok en die klokstel en kan dit na die sewe segment -skerm op die bord stuur. Die bestuurder kan twee afsonderlike tellings op 'n keer op die bord lewer. Ons het hierdie funksie gebruik om beide die uur en die minuut tyd apart te vertoon. Die sewe segment vertoning kan slegs een nommer op 'n slag aktiveer, daarom moet die sseg -lêer multiplexing gebruik om alle getalle van die tyd gelyktydig te vertoon. Die bordkloksein word in die sseg ingevoer om die korrekte tyd vir multiplexing te behou. 'N Binêre na binêre gekodeerde desimale encoder is nodig om die insette in die lêer om te skakel na 'n vorm wat na die sewe segment vertoon kan word. Die finale uitset van die sseg -lêer word na die sewesegmentweergawe gekarteer en die korrekte tyd word op die skerm vertoon.

Stap 7: Koppel lêer

Skakel lêer
Skakel lêer
Skakel lêer
Skakel lêer
Skakel lêer
Skakel lêer

Die skakellêer verbind alle ander aspekte van die program en karteer die seine na die regte plek. Elke komponent word ingebring en in die lêer geïnstalleer. Seine word gebruik om data van die een komponent na die ander oor te dra. Die poortkartering volg die bostaande diagram hierbo. Die skakellêer bevat ook die logika wat geld wanneer die alarm geaktiveer word. Die grootste deel van die projek sal teen hierdie tyd reeds voltooi wees. Die oorblywende werk stuur elke sein na die toepaslike plek.

Stap 8: Arduino

Arduino
Arduino
Arduino
Arduino

Die arduino word gebruik om die luidspreker te aktiveer, asook om die toon en duur van die noot wat deur die luidspreker gespeel word, te beheer. Die arduino lees 'n digitale sein van die Basys 3 -bord. As hierdie sein hoog is, sal die arduino 'n PWM -sein stuur wat die toon en duur van die alarm beheer. Die uitsetsignaal van die arduino sluit aan by die ingangsein van 'n luidsprekerbestuurderbord wat die volume van die luidspreker verhoog. Die arduino doen hierdie proses baie vinnig en herhaal baie keer per sekonde.

Stap 9: Kabelroetering

Kabeldraai
Kabeldraai

Die arduino- en Basys 3 -bord moet fisies verbind word om seine tussen die borde oor te dra. Die eerste kabel na draad is die van die grondpen van die JA PMOD van die Basys 3 tot die grondpen van die arduino. Koppel dan 'n draad van pen 1 van die JA PMOD van die Basys 3 aan die digitale pen 7 van die arduino. Koppel dan twee grondpenne van die arduino aan die grondpenne van die luidsprekerbestuurder. Koppel dan die 3.3 V -uitgang van die arduino aan die Vcc -pen van die luidsprekerbestuurder. Koppel dan die digitale pen 9 van die arduino aan die In -pen van die luidsprekerbestuurder.

Aanbeveel: