Sommario:

Sveglia Basys 3: 9 passaggi
Sveglia Basys 3: 9 passaggi

Video: Sveglia Basys 3: 9 passaggi

Video: Sveglia Basys 3: 9 passaggi
Video: Servomotor control on the FPGA Basys3 Board 2024, Ottobre
Anonim
Sveglia Basys 3
Sveglia Basys 3

Il nostro progetto crea una sveglia utilizzando la scheda FPGA Basys 3, un Arduino e una scheda driver per altoparlanti. L'utente può inserire l'ora corrente sulla scheda utilizzando 11 interruttori di ingresso sulla Basys 3 e bloccare il valore utilizzando il pulsante centrale sulla scheda. L'utente può quindi inserire l'ora della sveglia utilizzando gli stessi interruttori, ma premere il pulsante sinistro per bloccare l'ora della sveglia. Se viene immessa l'ora sbagliata, è possibile premere il pulsante di ripristino (pulsante in alto) e l'ora dell'orologio corrente e l'ora della sveglia verranno impostate su 00:00. L'utente può quindi avviare l'orologio utilizzando l'interruttore più a sinistra e attivare la sveglia utilizzando l'interruttore successivo. Quando la sveglia è attivata, la sveglia emette un suono quando l'ora dell'orologio e l'ora della sveglia impostata corrispondono.

Passaggio 1: diagramma della scatola nera

Diagramma della scatola nera
Diagramma della scatola nera
Diagramma della scatola nera
Diagramma della scatola nera

Abbiamo iniziato il nostro progetto disegnando un diagramma a scatola nera per visualizzare gli input e gli output necessari nel nostro programma. I seguenti input per il nostro programma come input a 5 bit (Hour_in) sono stati inizializzati per specificare l'ora a 24 ore, input a 6 bit (Min_in) per visualizzare fino a 60 minuti, un pulsante di ripristino (Rst_b) per consentire all'utente di modificare il loro ingresso orario, un ingresso a 1 bit (alm_en) che carica l'ingresso allarme, un ingresso a 1 bit (alarm_sw) per spegnere la sveglia quando viene attivata, un ingresso a 1 bit (e_sec) che controlla quando il contatore di secondi, un ingresso a 1 bit (Led_btn) che imposta l'ora corrente, ed infine un ingresso a 1 bit (clk) che controlla l'ora visualizzata dalla scheda Basys 3. Le uscite sono (alm_on) che invia il segnale ad Arduino, l'uscita sseg che visualizza il tempo di ingresso sul Basys 3 e l'uscita anodica che controlla dove vengono visualizzati gli ingressi sul display a sette segmenti.

Passaggio 2: orologio lento

Orologio lento
Orologio lento

Il file slow clock o clock_div2 crea un clock la cui frequenza è 2 hz. Se alimentiamo questo orologio nel nostro contatore dei secondi, il valore dei secondi aumenterà di uno ogni secondo. Il clock lento viene utilizzato per creare un segnale di clock affidabile che cambia da basso ad alto una volta al secondo.

Passaggio 3: contatore

Contatore
Contatore
Contatore
Contatore

Contatore componenti (minuti e secondi):

La funzione di base di minuti e secondi è che sono contatori. Il contatore dei minuti prende in ingresso (Vin) che è segnale proveniente dagli ingressi (Min_in), quindi conta fino a raggiungere l'ingresso desiderato immesso. I secondi accettano solo l'input dell'interruttore (e_Sec) poiché non possono essere visualizzati sul segmento sette e contano in background una volta che l'interruttore è alto '1'. Entrambi emettono il valore lì su (Qout) e quindi viene memorizzato in (data) che lo invia a SSEG che viene eseguito nel file di collegamento. Inoltre, quando minuti e secondi raggiungono i valori di 59 si ripristina e l'output di questi è "1" per incrementare minuti/ora. Può anche essere mappato con un reset(rst_b) ai loro ingressi.

Passaggio 4: contatore delle ore

Contaore
Contaore
Contaore
Contaore

Componente Contaore

Allo stesso modo, al contatore componente dei minuti e dei secondi il componente dell'ora prende in ingresso s come (Vin) che è un segnale dall'ingresso del file di collegamento (Hour_in), e ha uscite che sono collegate allo stesso modo dei minuti e dei secondi. Quando il valore di conteggio dell'ora raggiunge 24 00 si azzera a 00 00.

Passaggio 5: allarme

Allarme
Allarme
Allarme
Allarme
Allarme
Allarme
Allarme
Allarme

Il file.vhd di allarme è costituito da d-flip-flop che sono dispositivi di archiviazione in grado di memorizzare dati digitali. Il file di allarme viene utilizzato per memorizzare l'ora in cui verrà attivato l'allarme. Per memorizzare i dati di ore (ingresso a 5 bit) e minuti (ingresso a 6 bit) dobbiamo eliminare 11 d-flip-flop all'interno del nostro file di allarme. Per fare ciò, dobbiamo prima importare la logica che governa il funzionamento dei d-flip-flop e mappare i componenti. Ciascuno degli 11 d-flip-flop memorizzerà un bit di dati dagli ingressi e consentirà di mappare i dati sulle uscite del file di allarme. Poiché i d-flip-flop memorizzano i dati, siamo in grado di utilizzare i dati in un secondo momento anche se gli interruttori di ingresso sono stati modificati.

Passaggio 6: driver display universale a sette segmenti

Driver display universale a sette segmenti
Driver display universale a sette segmenti
Driver display universale a sette segmenti
Driver display universale a sette segmenti
Driver display universale a sette segmenti
Driver display universale a sette segmenti

Il driver del display universale a sette segmenti riceve gli input dall'orologio e dall'impostazione dell'orologio ed è in grado di inviarli al display a sette segmenti sulla scheda. Il driver è in grado di emettere due conteggi separati sulla scheda contemporaneamente. Abbiamo utilizzato questa funzione per visualizzare separatamente sia l'ora che i minuti. Il display a sette segmenti è in grado di attivare solo un numero alla volta, quindi il file sseg deve utilizzare il multiplexing per visualizzare contemporaneamente tutti i numeri dell'ora. Il segnale di clock delle schede viene inviato all'sseg per mantenere l'ora corretta per il multiplexing. È necessario un codificatore decimale codificato da binario a binario per convertire gli input nel file in una forma che può essere emessa sul display a sette segmenti. L'output finale del file sseg viene mappato sul display a sette segmenti e l'ora corretta viene visualizzata sul display.

Passaggio 7: collegamento al file

Collega file
Collega file
Collega file
Collega file
Collega file
Collega file

Il file di collegamento collega tutti gli altri aspetti del programma e mappa i segnali nella posizione corretta. Ogni componente viene introdotto e istanziato all'interno del file. I segnali vengono utilizzati per trasferire dati da un componente all'altro. La mappatura delle porte seguirà il diagramma della scatola nera sopra elencato. Il file di collegamento contiene anche la logica che regola l'attivazione dell'allarme. La maggior parte del progetto sarà già finito a questo punto. Il lavoro rimanente consiste nell'instradare ciascun segnale nella posizione appropriata.

Passaggio 8: Arduino

Arduino
Arduino
Arduino
Arduino

L'arduino viene utilizzato per attivare l'altoparlante e controllare il tono e la durata della nota suonata attraverso l'altoparlante. L'arduino legge un segnale digitale dalla scheda Basys 3. Quando questo segnale è alto, l'arduino emetterà un segnale PWM che controlla il tono e la durata dell'allarme. Il segnale di uscita dall'arduino si collega al segnale di ingresso di una scheda driver dell'altoparlante che aumenta il volume dell'altoparlante. L'arduino esegue questo processo molto velocemente ripetendolo molte volte al secondo.

Passaggio 9: instradamento dei cavi

Instradamento dei cavi
Instradamento dei cavi

La scheda arduino e Basys 3 deve essere fisicamente collegata per trasferire i segnali tra le schede. Il primo cavo da collegare sarà dal pin di terra del JA PMOD del Basys 3 al pin di terra dell'arduino. Quindi collegare un filo dal pin 1 del JA PMOD del Basys 3 al pin digitale 7 dell'arduino. Quindi, collega due pin di terra dall'arduino ai pin di terra del driver dell'altoparlante. Quindi, collega l'uscita a 3,3 V dell'arduino al pin Vcc del driver dell'altoparlante. Quindi, collega il pin digitale 9 dell'arduino al pin In del driver dell'altoparlante.

Consigliato: