Cuprins:

Ceas cu alarmă Basys 3: 9 pași
Ceas cu alarmă Basys 3: 9 pași

Video: Ceas cu alarmă Basys 3: 9 pași

Video: Ceas cu alarmă Basys 3: 9 pași
Video: Ceasuri G Shock sub 100 $-Top 15 cele mai bune ceasuri Casio G Shock sub 100 USD Cumpără 2018 2024, Iulie
Anonim
Ceas cu alarmă Basys 3
Ceas cu alarmă Basys 3

Proiectul nostru creează un ceas cu alarmă folosind placa Basys 3 FPGA, un Arduino și o placă de driver pentru difuzoare. Utilizatorul poate introduce ora curentă pe placă folosind 11 comutatoare de intrare pe bazele 3 și poate bloca valoarea folosind butonul din mijloc de pe placă. Utilizatorul poate introduce ora alarmei folosind aceleași comutatoare, dar apasă butonul din stânga pentru a bloca ora alarmei. Dacă se introduce ora greșită, butonul de resetare (butonul de sus) poate fi apăsat, iar ora curentă a ceasului și ora alarmei vor fi setate la 00:00. Utilizatorul poate porni apoi ceasul folosind comutatorul din stânga și poate activa alarma folosind comutatorul următor. Când alarma este pornită, ceasul deșteptător va emite un sunet atunci când ora ceasului și setarea orei de alarmă se potrivesc.

Pasul 1: Diagrama Black Box

Diagrama cutiei negre
Diagrama cutiei negre
Diagrama cutiei negre
Diagrama cutiei negre

Am început proiectul nostru prin desenarea unei diagrame negre pentru a vizualiza intrările și ieșirile necesare în programul nostru. Următoarele intrări pentru programul nostru, cum ar fi intrarea pe 5 biți (Hour_in) au fost inițializate pentru a specifica timpul de 24 de ore, intrarea pe 6 biți (Min_in) pentru a afișa până la 60 de minute, un buton de resetare (Rst_b) pentru a permite utilizatorului să schimbați intrarea lor de timp, o intrare de 1 bit (alm_en) care încarcă intrarea de alarmă, o intrare de 1 bit (alarm_sw) pentru a opri ceasul deșteptător când este activat, o intrare de 1 bit (e_sec) care controlează când contorul de secunde va rula, o intrare de 1 bit (Led_btn) care setează ora curentă și, în cele din urmă, o intrare de 1 bit (clk) care controlează timpul afișat de placa Basys 3. Ieșirile sunt (alm_on) care trimite semnalul către Arduino, ieșirea sseg care afișează timpul de intrare pe Bazele 3 și ieșirea anodică care controlează unde sunt afișate intrările pe afișajul celor șapte segmente.

Pasul 2: Ceas lent

Ceas lent
Ceas lent

Fișierul slow clock sau clock_div2 creează un ceas a cărui frecvență este de 2 hz. Dacă alimentăm acest ceas la contorul nostru de secunde, valoarea secundelor va crește cu una în fiecare secundă. Ceasul lent este folosit pentru a crea un semnal de ceas fiabil care se schimbă de la cel mai mic la cel mare o dată pe secundă.

Pasul 3: Contor

Tejghea
Tejghea
Tejghea
Tejghea

Contor de componente (minute și secunde):

Funcția de bază a minutelor și secundelor este că acestea sunt contoare. Contorul de minute preia intrarea (Vin), care este semnalul de la intrări (Min_in), și apoi contează până când ajunge la intrarea dorită introdusă. Secundele iau doar intrarea comutatorului (e_Sec), deoarece nu poate fi afișat pe cel de-al șaptelea segment și contează în fundal odată ce comutatorul este ridicat „1”. Amândoi produc o valoare la (Qout), apoi este stocată în (date) care o trimite către SSEG, care se face în fișierul de legătură. De asemenea, când minutele și secundele ating valorile de 59, se resetează, iar ieșirea acestora este „1” pentru a crește minutele / ora. De asemenea, poate fi mapat cu o resetare (rst_b) la intrările lor.

Pasul 4: Counter Hour

Ora contra
Ora contra
Ora contra
Ora contra

Ora contorului de componente

În mod similar, la contorul componentelor de minute și secunde, componenta oră ia intrări, cum ar fi (Vin), care este un semnal de la intrarea fișierului de legătură (Hour_in) și are ieșiri care sunt legate în același mod de minute și secunde. Când valoarea de numărare a orei ajunge la 24 00 se resetează la 00 00.

Pasul 5: Alarmă

Alarma
Alarma
Alarma
Alarma
Alarma
Alarma
Alarma
Alarma

Fișierul.vhd de alarmă este format din d-flip-flops care sunt dispozitive de stocare care pot stoca date digitale. Fișierul de alarmă este utilizat pentru a stoca ora la care va fi activată alarma. Pentru a stoca datele despre ore (5 biți de intrare) și minute (6 biți de intrare) trebuie să ștergem 11 d-flip-flops în fișierul nostru de alarmă. Pentru a face acest lucru, trebuie mai întâi să importăm logica care guvernează funcționarea d-flip-flop-urilor și să mapăm componentele. Fiecare dintre cele 11 d-flip-flops va stoca un bit de date de la intrări și va permite maparea datelor la ieșirile fișierului de alarmă. Deoarece d-flip-flop-urile stochează date, putem utiliza datele într-un moment ulterior, chiar dacă comutatoarele de intrare au fost schimbate.

Pasul 6: Driver universal de afișare pe șapte segmente

Driver universal de afișare pe șapte segmente
Driver universal de afișare pe șapte segmente
Driver universal de afișare pe șapte segmente
Driver universal de afișare pe șapte segmente
Driver de afișare universal pe șapte segmente
Driver de afișare universal pe șapte segmente

Driverul universal de afișare cu șapte segmente primește intrările de la ceas și setul de ceas și este capabil să le transmită pe afișajul cu șapte segmente de pe placă. Șoferul este capabil să emită două conturi separate pe tablă simultan. Am folosit această funcție pentru a afișa atât ora oră, cât și ora minutelor separat. Afișajul cu șapte segmente este capabil să activeze un singur număr odată, astfel încât fișierul sseg trebuie să utilizeze multiplexarea pentru a afișa simultan toate numerele timpului. Semnalul de ceas al plăcilor este alimentat în sseg pentru a păstra ora corectă pentru multiplexare. Este necesar un codificator zecimal codat binar spre binar pentru a converti intrările în fișier într-un formular care poate fi afișat pe afișajul cu șapte segmente. Ieșirea finală a fișierului sseg este mapată pe afișajul cu șapte segmente și ora corectă este afișată pe afișaj.

Pasul 7: Link File

Link File
Link File
Link File
Link File
Link File
Link File

Fișierul de legătură conectează toate celelalte aspecte ale programului și mapează semnalele la locația lor corectă. Fiecare componentă este introdusă și instanțiată în fișier. Semnalele sunt folosite pentru a transfera date de la o componentă la alta. Cartografierea porturilor va urma diagrama casetei negre enumerată mai sus. Fișierul de legătură deține, de asemenea, logica care guvernează atunci când alarma este activată. Majoritatea proiectului va fi deja finalizat până în acest moment. Lucrul rămas este direcționarea fiecărui semnal către locația corespunzătoare.

Pasul 8: Arduino

Arduino
Arduino
Arduino
Arduino

Arduino este folosit pentru a activa difuzorul, precum și pentru a controla tonul și durata notei redate prin difuzor. Arduino citește un semnal digital de pe placa Basys 3. Când acest semnal este ridicat, arduino va emite un semnal PWM controlând tonul și durata alarmei. Semnalul de ieșire de la arduino se conectează la semnalul de intrare al plăcii driverului difuzorului, ceea ce mărește volumul difuzorului. Arduino face acest proces foarte repede repetându-se de multe ori pe secundă.

Pasul 9: Rutare prin cablu

Rutare prin cablu
Rutare prin cablu

Placa arduino și Basys 3 trebuie să fie conectate fizic pentru a transfera semnale între plăci. Primul cablu la cablu va fi de la pinul de masă al JA PMOD al bazelor 3 până la pinul de masă al arduino-ului. Conectați apoi un fir de la pinul 1 al JA PMOD al bazelor 3 la pinul digital 7 al arduino-ului. Apoi, conectați doi pini de masă de la arduino la pinii de masă ai driverului difuzorului. Apoi, conectați ieșirea de 3,3 V a arduino la pinul Vcc al driverului difuzorului. Apoi, conectați pinul digital 9 al arduino la pinul In al driverului difuzorului.

Recomandat: