Sommario:

Cronometro VHDL a un minuto: 5 passaggi
Cronometro VHDL a un minuto: 5 passaggi

Video: Cronometro VHDL a un minuto: 5 passaggi

Video: Cronometro VHDL a un minuto: 5 passaggi
Video: Cronómetro - VHDL 2024, Novembre
Anonim
Image
Image

Questo è un tutorial su come costruire un cronometro da un minuto usando VHDL e una scheda Basys 3. Tale dispositivo è ideale per i giochi in cui ogni giocatore ha un massimo di un minuto per fare la propria mossa. Il cronometro visualizza con precisione secondi e millisecondi sul display a sette segmenti, a partire da 0 secondi e 0 millisecondi, fino a 60 secondi e 0 millisecondi. Vengono utilizzati anche due pulsanti: il pulsante centrale, utilizzato per avviare, interrompere e continuare il timer, e il pulsante destro, utilizzato per riavviare il timer. Quando il dispositivo viene confrontato fianco a fianco con il cronometro integrato di uno smartphone, la precisione dell'orologio è evidente.

Passaggio 1: ottenere hardware/software

Diagramma a blocchi
Diagramma a blocchi

1. Basys 3 Artix-7 FPGA Trainer Board di Digilent con cavo da Micro-USB a USB

2. Vivado 2016.2 Design Suite di Xilinx

Passaggio 2: diagramma a blocchi

Questo circuito è costruito in modo comportamentale e utilizza componenti Xilinx incorporati, ma può anche essere descritto strutturalmente, come mostrato dallo schema strutturale generale sopra. Dal diagramma si può vedere che il circuito è pilotato da due divisori di frequenza. Uno dei divisori di frequenza funziona a 1 centisecondo e pilota il contatore del catodo che viene utilizzato come numero visualizzato sul display a sette segmenti. Il secondo divisore di frequenza funziona a 240Hz e viene utilizzato per pilotare il contatore di anodi che ruota attraverso gli anodi in modo che tutti i numeri vengano visualizzati correttamente sul display a sette segmenti. L'encoder prende la logica del catodo dal contatore del catodo e la logica dell'anodo dal contatore dell'anodo e la codifica nel catodo e nell'anodo dell'uscita che gestiscono il display a sette segmenti. La funzione di questo encoder è che l'uscita del catodo cambi ogni volta che cambia l'uscita dell'anodo. L'uscita del catodo non può essere gestita indipendentemente dal contatore perché gli anodi devono ruotare attraverso le 4 cifre separate.

Passaggio 3: modulo del progetto

Innanzitutto, viene creato un blocco di processo per CEN in modo che quando viene rilevata la pressione di un pulsante, l'ABILITA si commuterà. Serve come arresto/avvio del contatore catodico.

Nel blocco di processo successivo, i segnali di clock in centisecondi e 240Hz sono impostati in modo che i rispettivi contatori aumentino di 1 ogni volta che il clock interno a 100mHz raggiunge un fronte di salita. Una volta che il contatore dei centisecondi raggiunge 500000, si ripristinerà a 0. Nel frattempo il contatore a 240Hz si azzererà una volta che il conteggio raggiunge 41667.

Per la sezione catodo del codice, se ENABLE è '0' il conteggio del catodo si interromperà. Se il pulsante di ripristino viene premuto durante questo tempo, tutti i conteggi vengono ripristinati a "0000". Nel frattempo, se ENABLE è '1', il conteggio del catodo continuerà fino a quando il conteggio del catodo raggiunge 60,00, in cui attiva il segnale di arresto per essere '1'. Il segnale di arresto torna al blocco di processo CEN e fa sì che ENABLE sia '0' mentre il segnale di arresto è '1' e non cambierà finché non viene premuto il pulsante di ripristino.

Infine, il display a sette segmenti viene impostato avendo i 4 anodi correttamente collegati a ciascuno dei loro 8 catodi per visualizzare contemporaneamente le rispettive cifre 0-9.

Passaggio 4: vincoli

vincoli
vincoli

Questo file dei vincoli collega gli ingressi e le uscite specificati da VHDL alle parti fisiche necessarie della scheda Basys. Per questo progetto, i componenti includono i quattro anodi e ciascuno dei loro otto catodi per il display a sette segmenti, l'orologio interno a 100 mHz, il pulsante centrale e il pulsante destro.

Passaggio 5: test

Una volta completato il codice, ora puoi programmare l'FPGA tramite il cavo USB. Il display a sette segmenti dovrebbe mostrare 0.00. Test per vedere se i pulsanti funzionano premendo il pulsante centrale per avviare il timer fino a quando non raggiunge le 60,00 e si ferma; in qualsiasi momento nel mezzo, puoi premere di nuovo il pulsante centrale per metterlo in pausa. Una volta messo in pausa, puoi premere il pulsante destro per riportare il timer a 0.00. Se tutto funziona correttamente, congratulazioni, hai appena creato un timer di un minuto!

Consigliato: