Turinys:

„Basys 3“žadintuvas: 9 žingsniai
„Basys 3“žadintuvas: 9 žingsniai

Video: „Basys 3“žadintuvas: 9 žingsniai

Video: „Basys 3“žadintuvas: 9 žingsniai
Video: 22 вещи с Aliexpress, от которых ты офигеешь / Безумные вещи с Алиэкспресс + Конкурс 2024, Spalio mėn
Anonim
„Basys 3“žadintuvas
„Basys 3“žadintuvas

Mūsų projektas sukuria žadintuvą naudojant „Basys 3 FPGA“plokštę, „Arduino“ir garsiakalbio tvarkyklę. Vartotojas gali įvesti dabartinį laiką prie plokštės, naudodamas 11 „Basys 3“įvesties jungiklių ir užfiksuoti vertę naudodami vidurinį plokštės mygtuką. Tada vartotojas gali įvesti žadintuvo laiką tais pačiais jungikliais, bet paspauskite kairįjį mygtuką, kad užrakintų žadintuvo laiką. Jei įvestas neteisingas laikas, galima paspausti atstatymo mygtuką (viršutinis mygtukas), o dabartinis laikrodžio laikas ir žadintuvo laikas bus nustatyti į 00:00. Tada vartotojas gali paleisti laikrodį naudodami kairįjį jungiklį ir įjungti žadintuvą naudodami kitą jungiklį. Kai žadintuvas įjungtas, žadintuvas skleidžia garsą, kai laikrodžio laikas ir nustatytas žadintuvo laikas sutampa.

1 žingsnis: juodosios dėžės schema

Juodosios dėžės schema
Juodosios dėžės schema
Juodosios dėžės schema
Juodosios dėžės schema

Mes pradėjome savo projektą piešdami juodos dėžės diagramą, kad vizualizuotume mūsų programai reikalingus įėjimus ir rezultatus. Toliau nurodyti mūsų programos įėjimai, tokie kaip 5 bitų įvestis („Hour_in“), buvo inicijuoti, kad būtų nurodytas 24 valandų laikas, 6 bitų (Min_in) įvestis, kuri būtų rodoma iki 60 minučių, iš naujo nustatymo (Rst_b) mygtukas, kad vartotojas galėtų pakeisti laiko įvestį, 1 bitų įvestį (alm_en), įkeliančią aliarmo įvestį, 1 bitų įvestį (alarm_sw), kad išjungtumėte žadintuvą, kai jis įjungiamas, 1 bitų įvestį (e_sec), kuri valdo, kai skaitiklis sekundžių, 1 bitų įvestis (Led_btn), kuri nustato dabartinį laiką, ir galiausiai 1 bitų įvestis (clk), valdanti „Basys 3“plokštės rodomą laiką. Išėjimai yra (alm_on), siunčiantis signalą „Arduino“, „sseg“išvestis, rodanti įvesties laiką „Basys 3“, ir anodo išvestis, valdanti, kur įvestys rodomos septynių segmentų ekrane.

2 žingsnis: lėtas laikrodis

Lėtas laikrodis
Lėtas laikrodis

Lėtas laikrodis arba clock_div2 failas sukuria laikrodį, kurio dažnis yra 2 hz. Jei šį laikrodį pateiksime į sekundžių skaitiklį, sekundžių vertė kas sekundę padidės vienu. Lėtas laikrodis naudojamas patikimam laikrodžio signalui sukurti, kuris keičiasi nuo žemo iki aukšto kartą per sekundę.

3 žingsnis: skaitiklis

Skaitliukas
Skaitliukas
Skaitliukas
Skaitliukas

Komponentų skaitiklis (minutės ir sekundės):

Pagrindinė minučių ir sekundžių funkcija yra tai, kad jie yra skaitikliai. Minutės skaitiklis įveda įvestį (Vin), kuri yra signalas iš įėjimų (Min_in), ir tada skaičiuojama, kol bus įvesta norima įvestis. Per kelias sekundes įvedamas tik jungiklis (e_Sec), nes jis negali būti rodomas septyniuose segmentuose ir skaičiuojamas fone, kai jungiklis yra aukštai „1“. Jie abu išleidžia ten reikšmę (Qout), o tada ji saugoma (duomenyse), kuri siunčia ją į SSEG, kuri daroma susiejimo faile. Be to, kai minutės ir sekundės pasiekia 59 reikšmes, jis atstatomas, o jų išvestis yra „1“, siekiant padidinti minutes/valandą. Jis taip pat gali būti susietas su įvestimi iš naujo (rst_b).

4 žingsnis: skaitiklio valanda

Skaitliuko valanda
Skaitliuko valanda
Skaitliuko valanda
Skaitliuko valanda

Komponentų skaitiklio valanda

Panašiai į minučių ir sekundžių komponentų skaitiklį valandos komponentas įveda įvestį s, pvz., (Vin), kuri yra signalas iš susiejamojo failo įvesties (Hour_in), ir turi išvestis, susietas tuo pačiu būdu minutes ir sekundes. Kai valandų skaičiaus vertė pasiekia 24 00, ji atstatoma į 00 00.

5 žingsnis: aliarmas

Signalizacija
Signalizacija
Signalizacija
Signalizacija
Signalizacija
Signalizacija
Signalizacija
Signalizacija

Žadintuvo.vhd failą sudaro „d-flip-flops“, kurie yra saugojimo įrenginiai, galintys saugoti skaitmeninius duomenis. Aliarmo failas naudojamas saugoti aliarmo įjungimo laiką. Norėdami išsaugoti valandų (5 bitų įvestis) ir minučių (6 bitų įvestis) duomenis, savo pavojaus faile turime antspauduoti 11 d-flip-flops. Norėdami tai padaryti, pirmiausia turime importuoti logiką, reglamentuojančią „d-flip-flops“veikimą, ir susieti komponentus. Kiekvienas iš 11 „d-flip-flops“įrašys vieną bitą duomenų iš įvesties ir leis susieti duomenis su aliarmo failo išėjimais. Kadangi „d-flip-flops“saugo duomenis, mes galime juos naudoti vėliau, net jei buvo pakeisti įvesties jungikliai.

6 veiksmas: universali septynių segmentų ekrano tvarkyklė

Universali septynių segmentų ekrano tvarkyklė
Universali septynių segmentų ekrano tvarkyklė
Universali septynių segmentų ekrano tvarkyklė
Universali septynių segmentų ekrano tvarkyklė
Universali septynių segmentų ekrano tvarkyklė
Universali septynių segmentų ekrano tvarkyklė

Universali septynių segmentų ekrano tvarkyklė gauna įvestis iš laikrodžio ir laikrodžio nustatymų ir gali juos išvesti į septynių segmentų ekraną lentoje. Vairuotojas vienu metu gali išvesti du atskirus skaičiavimus lentoje. Mes naudojome šią funkciją, norėdami atskirai rodyti tiek valandos, tiek minutės laiką. Septynių segmentų ekranas vienu metu gali suaktyvinti tik vieną skaičių, todėl „sseg“failas turi naudoti multipleksavimą, kad būtų rodomi visi laiko skaičiai vienu metu. Lentų laikrodžio signalas tiekiamas į ssegą, kad būtų išlaikytas teisingas multipleksavimo laikas. Dvejetainis į dvejetainį koduotas dešimtainis koduotojas yra būtinas norint konvertuoti įvestis į failą į formą, kurią galima išvesti į septynių segmentų ekraną. Galutinė sseg failo išvestis susieta su septynių segmentų ekranu ir ekrane rodomas teisingas laikas.

7 veiksmas: susiekite failą

Nuorodos failas
Nuorodos failas
Nuorodos failas
Nuorodos failas
Nuorodos failas
Nuorodos failas

Nuorodos failas sujungia visus kitus programos aspektus ir susieja signalus su teisinga jų vieta. Kiekvienas komponentas įtraukiamas į failą ir pateikiamas jame. Signalai naudojami duomenims perkelti iš vieno komponento į kitą. Prievadų atvaizdavimas bus atliekamas pagal aukščiau išvardytą juodosios dėžės schemą. Nuorodos faile taip pat yra logika, kuri valdo, kai įjungiamas aliarmas. Didžioji projekto dalis jau bus baigta. Likęs darbas yra nukreipti kiekvieną signalą į reikiamą vietą.

8 žingsnis: „Arduino“

Arduino
Arduino
Arduino
Arduino

Arduino naudojamas garsiakalbiui suaktyvinti, taip pat per garsiakalbį grojamos natos tonui ir trukmei valdyti. „Arduino“skaito skaitmeninį signalą iš „Basys 3“plokštės. Kai šis signalas yra didelis, arduino išves PWM signalą, valdantį signalo toną ir trukmę. Išvesties signalas iš arduino jungiasi prie garsiakalbio plokštės įvesties signalo, kuris padidina garsiakalbio garsumą. Arduino šį procesą atlieka labai greitai, kartodamas daug kartų per sekundę.

9 žingsnis: kabelių tiesimas

Kabelių vedimas
Kabelių vedimas

„Arduino“ir „Basys 3“plokštės turi būti fiziškai prijungtos, kad būtų galima perduoti signalus tarp plokščių. Pirmasis laidas prie laido bus nuo „Basys 3“JA PMOD įžeminimo kaiščio iki arduino įžeminimo kaiščio. Tada prijunkite laidą nuo „Basys 3“JA PMOD 1 kaiščio prie skaitmeninio 7 arduino kaiščio. Tada prijunkite du arduino įžeminimo kaiščius prie garsiakalbio tvarkyklės įžeminimo kaiščių. Tada prijunkite 3,3 V arduino išvestį prie garsiakalbio tvarkyklės Vcc kaiščio. Tada prijunkite skaitmeninį 9 arduino kaištį prie garsiakalbio tvarkyklės įvesties kaiščio.

Rekomenduojamas: