Sisällysluettelo:

Basys 3 herätyskello: 9 vaihetta
Basys 3 herätyskello: 9 vaihetta

Video: Basys 3 herätyskello: 9 vaihetta

Video: Basys 3 herätyskello: 9 vaihetta
Video: Basys 3 Introduction 2024, Marraskuu
Anonim
Basys 3 herätyskello
Basys 3 herätyskello

Projektimme luo herätyskellon käyttämällä Basys 3 FPGA -korttia, Arduinoa ja kaiutinohjainkorttia. Käyttäjä voi syöttää nykyisen ajan kortille käyttämällä Basys 3: n 11 tulokytkintä ja lukita arvo käyttämällä levyn keskipainiketta. Käyttäjä voi sitten syöttää hälytysajan samoilla kytkimillä, mutta lukita hälytysajan painamalla vasenta painiketta. Jos syötät väärän ajan, nollauspainiketta (ylin painike) voidaan painaa ja nykyinen kellonaika ja herätysaika asetetaan 00:00. Käyttäjä voi sitten käynnistää kellon vasemmanpuoleisimmasta kytkimestä ja kytkeä hälytyksen päälle seuraavalla kytkimellä. Kun herätys on päällä, herätyskello antaa äänen, kun kellonaika ja asetettu herätysaika vastaavat toisiaan.

Vaihe 1: Mustan laatikon kaavio

Mustan laatikon kaavio
Mustan laatikon kaavio
Mustan laatikon kaavio
Mustan laatikon kaavio

Aloitimme projektimme piirtämällä mustan laatikon kaavion, joka visualisoi ohjelmamme tarvitsemat tulot ja lähdöt. Seuraavat ohjelmamme tulot, kuten 5-bittinen tulo (Hour_in), alustettiin määrittämään 24 tunnin aika, 6-bittinen (Min_in) tulo näytettäväksi enintään 60 minuuttia, nollaus (Rst_b) -painike, jonka avulla käyttäjä voi muuttaa aikatuloa, 1-bittinen tulo (alm_en), joka lataa hälytystulon, 1-bittinen tulo (alarm_sw) sammuttaa herätyskellon, kun se aktivoidaan, 1-bittinen tulo (e_sec), joka ohjaa laskurin sekuntia, 1-bittinen tulo (Led_btn), joka asettaa nykyisen ajan, ja lopuksi 1-bittinen tulo (clk), joka ohjaa Basys 3 -kortin näyttämää aikaa. Lähdöt ovat (alm_on), joka lähettää signaalin Arduinolle, sseg -ulostulo, joka näyttää syöttöajan Basys 3: ssa, ja anodilähtö, joka ohjaa, missä tulot näkyvät seitsemän segmentin näytössä.

Vaihe 2: Hidas kello

Hidas kello
Hidas kello

Hidas kello tai clock_div2 -tiedosto luo kellon, jonka taajuus on 2 Hz. Jos syötämme tämän kellon sekuntilaskurillemme, sekuntien arvo kasvaa yhdellä sekunnilla. Hidasta kelloa käytetään luomaan luotettava kellosignaali, joka vaihtuu alhaisesta korkeaseen kerran sekunnissa.

Vaihe 3: Laskuri

Laskuri
Laskuri
Laskuri
Laskuri

Komponenttilaskuri (minuutit ja sekunnit):

Minuuttien ja sekuntien perustoiminto on, että ne ovat laskureita. Minuuttilaskuri ottaa tulon (Vin), joka on signaali tuloista (Min_in), ja laskee sitten, kunnes haluttu tulo on syötetty. Sekunnit syöttävät vain kytkimen (e_Sec), koska sitä ei voida näyttää seitsemässä segmentissä, ja se laskee taustalla, kun kytkin on korkealla '1'. Molemmat antavat siellä arvon (Qout), ja sitten se tallennetaan (dataan), joka lähettää sen SSEG: lle, joka tehdään linkitystiedostossa. Lisäksi kun minuutit ja sekunnit saavuttavat arvot 59, ne nollataan ja niiden tulos on 1, jotta minuutteja/tunteja lisätään. Se voidaan myös yhdistää nollauksella (rst_b) niiden tuloihin.

Vaihe 4: Laskutunti

Counter Hour
Counter Hour
Counter Hour
Counter Hour

Komponenttien laskuritunti

Samoin minuutti- ja sekuntikomponenttien laskuriin tunti -komponentti ottaa vastaan syötteet s, kuten (Vin), joka on signaali linkitettävän tiedoston syötteestä (Hour_in), ja sillä on lähdöt, jotka on linkitetty samalla tavalla minuutteina ja sekunteina. Kun tuntimäärä saavuttaa 24 00, se nollautuu 00 00.

Vaihe 5: Hälytys

Hälytys
Hälytys
Hälytys
Hälytys
Hälytys
Hälytys
Hälytys
Hälytys

Hälytyksen.vhd-tiedosto koostuu d-flip-flopista, jotka ovat tallennuslaitteita, jotka voivat tallentaa digitaalista dataa. Hälytystiedostoa käytetään tallentamaan aika, jolloin hälytys aktivoidaan. Tuntien (5-bittinen syöttö) ja minuuttien (6-bittinen syöttö) tietojen tallentamiseksi meidän on leimattava hälytystiedostoomme 11 d-flip-floppia. Tätä varten meidän on ensin tuotava d-flip-flopien toimintaa ohjaava logiikka ja kartoitettava komponentit. Jokainen 11 d-flip-flopista tallentaa yhden bitin tietoja tuloista ja sallii tietojen yhdistämisen hälytystiedoston lähtöihin. Koska d-varvastossut tallentavat tietoja, voimme käyttää niitä myöhemmin, vaikka tulokytkimiä olisi muutettu.

Vaihe 6: Yleinen seitsemän segmentin näytönohjain

Yleinen seitsemän segmentin näytönohjain
Yleinen seitsemän segmentin näytönohjain
Yleinen seitsemän segmentin näytönohjain
Yleinen seitsemän segmentin näytönohjain
Yleinen seitsemän segmentin näytönohjain
Yleinen seitsemän segmentin näytönohjain

Yleinen seitsemän segmentin näytönohjain vastaanottaa kellon ja kellosarjan tulot ja voi lähettää ne taululla olevaan seitsemän segmentin näyttöön. Kuljettaja voi tulostaa kaksi erillistä lukua taululle kerrallaan. Käytimme tätä toimintoa näyttämään sekä tunti- että minuutti -ajan erikseen. Seitsemän segmentin näyttö pystyy aktivoimaan vain yhden numeron kerrallaan, joten sseg -tiedoston on käytettävä multipleksointia kaikkien ajan numeroiden näyttämiseen samanaikaisesti. Levyjen kellosignaali syötetään sseg -järjestelmään, jotta multipleksointiaika pysyy oikeana. Binaarinen binäärikoodattu desimaalikooderi on tarpeen tulojen muuntamiseksi tiedostoksi muotoon, joka voidaan tulostaa seitsemän segmentin näyttöön. Sseg -tiedoston lopputulos yhdistetään seitsemän segmentin näyttöön ja oikea aika näkyy näytössä.

Vaihe 7: Linkitä tiedosto

Linkitiedosto
Linkitiedosto
Linkitiedosto
Linkitiedosto
Linkitiedosto
Linkitiedosto

Linkitiedosto yhdistää kaikki muut ohjelman osat ja kartoittaa signaalit oikeaan paikkaan. Jokainen komponentti tuodaan ja näytetään tiedostossa. Signaaleja käytetään tiedon siirtämiseen yhdestä komponentista toiseen. Portin kartoitus seuraa yllä lueteltua mustan laatikon kaaviota. Linkitiedosto sisältää myös logiikan, joka ohjaa hälytyksen aktivoitumista. Suurin osa hankkeesta on jo tässä vaiheessa valmis. Jäljellä oleva työ on jokaisen signaalin reitittäminen oikeaan paikkaan.

Vaihe 8: Arduino

Arduino
Arduino
Arduino
Arduino

Arduinoa käytetään kaiuttimen aktivointiin sekä kaiuttimen kautta toistettavan nuotin sävyn ja keston säätämiseen. Arduino lukee digitaalisen signaalin Basys 3 -kortilta. Kun tämä signaali on korkea, arduino lähettää PWM -signaalin, joka ohjaa hälytyksen sävyä ja kestoa. Arduino -lähtösignaali yhdistyy kaiutinelementin tulosignaaliin, mikä lisää kaiuttimen äänenvoimakkuutta. Arduino tekee tämän prosessin erittäin nopeasti toistamalla monta kertaa sekunnissa.

Vaihe 9: Kaapelin reititys

Kaapelin reititys
Kaapelin reititys

Arduino- ja Basys 3 -kortit on yhdistettävä fyysisesti signaalien siirtämiseksi levyjen välillä. Ensimmäinen johdin on Basys 3: n JA PMOD: n maadoitusnasta arduinon maadoitusnastaan. Liitä seuraavaksi johto Basys 3: n JA PMOD -nastan 1 liittimestä arduinon digitaaliseen nastaan 7. Liitä seuraavaksi kaksi maadoituspistettä arduinosta kaiutinohjaimen maadoitusliittimiin. Liitä seuraavaksi arduinon 3,3 V: n lähtö kaiutinohjaimen Vcc -nastaan. Liitä seuraavaksi arduinon digitaalinen nasta 9 kaiutinohjaimen tuloliitäntään.

Suositeltava: