Sommario:

Sistema di cicalini competitivo: 5 passaggi
Sistema di cicalini competitivo: 5 passaggi

Video: Sistema di cicalini competitivo: 5 passaggi

Video: Sistema di cicalini competitivo: 5 passaggi
Video: Certificazione ISO9001-Come implementare un sistema che trasforma la qualità in centro di profitto 2024, Novembre
Anonim
Image
Image
Materiali
Materiali

Il sistema di buzzer competitivo progettato in questo progetto funziona in modo simile ai sistemi di buzzer utilizzati nelle competizioni regionali e nazionali di Science Bowl. Questo progetto è stato ispirato dal mio coinvolgimento per tre anni con la squadra di bowling scientifica del mio liceo. Abbiamo sempre avuto il desiderio di ricreare il sistema di cicalino di blocco con timer da 5 secondi e 20 secondi.

Per dare un'idea del sistema di cicalini, i cicalini della ciotola della scienza sono programmati per inserire un massimo di 8 giocatori (con 8 cicalini separati). Una volta che un cicalino è stato premuto, il cicalino della prima persona si accenderà per indicare quale giocatore riceve la domanda. Il resto dei giocatori sarà "bloccato", il che significa che i loro cicalini non risponderanno fino a quando il moderatore non ripristinerà il sistema del cicalino.

Dopo che il moderatore ha letto le domande, premerà un pulsante per avviare il conto alla rovescia che verrà visualizzato sul display a sette segmenti. Dopo una domanda "lancio", il moderatore può premere il pulsante destro per avviare il conto alla rovescia da 5 secondi. Nel frattempo, dopo una domanda "bonus", il moderatore può premere il pulsante sinistro per avviare il conto alla rovescia da 20 secondi. Quando il timer raggiunge lo zero, un segnale acustico indicherà che il giocatore ha esaurito il tempo.

Per ripristinare il sistema e il conto alla rovescia, il moderatore può premere il pulsante centrale. Per ripristinare il meccanismo di blocco e i LED del giocatore, gli interruttori per il giocatore 1 e il giocatore 2 devono essere in posizione bassa.

Passaggio 1: materiali

Avrai bisogno di quanto segue:

  • Scheda Basys3 (o scheda FPGA equivalente)
  • Cavo USB Micro-B
  • Altoparlante (ho usato un altoparlante passivo)
  • 2 fili
  • Software da implementare su FPGA (ho usato Vivado)
  • File di sistema del cicalino della concorrenza

Passaggio 2: diagramma della scatola nera

Diagramma della scatola nera
Diagramma della scatola nera

Il diagramma della scatola nera mostra gli ingressi e le uscite che verranno utilizzati in questo sistema di buzzer.

INGRESSI:

player1, player2 Questi ingressi sono collegati a due interruttori sulla scheda Basys3. Per comodità, verranno utilizzati gli interruttori più a sinistra e più a destra.

reset Il pulsante centrale verrà utilizzato per rappresentare il pulsante di reset.

count_down_20_sec Il pulsante sinistro verrà utilizzato per rappresentare il pulsante del timer di 20 secondi.

count_down_5_sec Il pulsante destro verrà utilizzato per rappresentare il pulsante del timer di 20 secondi. Per garantire l'avvio sia del timer di 20 secondi che di quello di 5 secondi, tenere premuto il pulsante finché il display a sette segmenti non mostra il timer.

CLK La scheda FPGA genererà un clock che funziona con una frequenza di 10 ns.

USCITE:

altoparlante L'uscita dell'altoparlante è collegata a un cicalino o altoparlante esterno. Dovrai collegare l'altoparlante alle porte JA pmod della scheda Basys3. Questo passaggio verrà descritto di seguito.

speaker_LED Questa uscita è collegata a un LED al centro della scheda e indicherà solo quando l'uscita dell'altoparlante dell'FPGA è alta. Puoi usarlo per testare il tuo altoparlante esterno. Nota che alcune delle porte pmod potrebbero non funzionare bene, quindi puoi provarne di diverse e utilizzare il LED per verificare se l'altoparlante deve essere acceso.

SEGMENTS Questa uscita è collegata agli otto singoli segmenti del display a sette segmenti, compreso il punto decimale.

DISP_EN Questa uscita è collegata ai quattro anodi del display a sette segmenti.

player_LED Questa uscita è un segnale 2-bundle collegato ai LED sopra gli interruttori player1 e player2. Il primo giocatore a capovolgere l'interruttore corrispondente sarà indicato dal LED. Notare che entrambi i LED non possono essere accesi contemporaneamente.

Passaggio 3: collegamento dell'altoparlante esterno

Collegamento dell'altoparlante esterno
Collegamento dell'altoparlante esterno

Per collegare l'altoparlante esterno alla scheda Basys3, prendi i tuoi due fili e collegali come indicato nell'immagine sopra. La linea bianca collega il terminale negativo dell'altoparlante alla porta di terra sulla scheda. La linea rossa collega il terminale positivo dell'altoparlante alla porta JA10 pmod sulla scheda.

Il file dei vincoli è progettato in modo che qualsiasi porta da JA1 a JA10 dovrebbe funzionare. Tuttavia, alcuni pin sulla scheda non rispondono, quindi se JA10 non funziona, puoi provare le altre porte.

Passaggio 4: diagramma strutturale

Diagramma strutturale
Diagramma strutturale

L'immagine sopra mostra lo schema strutturale del sistema buzzer competitivo comprensivo di tutti i componenti che compongono il modulo principale. Le loro descrizioni sono le seguenti:

player_lockout_LED1 Il componente LED di blocco del lettore è una macchina a stati finiti che utilizza la codifica one-hot. Ha quattro ingressi: player1, player2, reset e CLK. Contiene un output bundle a 2 bit player_LED. Gli ingressi e le uscite del componente player_lockout_LED1 sono tutti collegati direttamente agli ingressi e alle uscite con lo stesso nome del modulo principale.

buzzer_tone1 Il componente buzzer si basa su questo codice pubblicato su un forum

stackoverflow.com/questions/22767256/vhdl-… Tuttavia, è stato modificato per emettere un suono continuo con una frequenza di 440 Hz (nota LA). L'ingresso di abilitazione è collegato a un segnale buzzer_enable che è un'uscita del componente down_counter_FSM1.

clk_div1 Il componente divisore dell'orologio è una versione modificata del divisore dell'orologio del Professor Bryan Mealy fornito su PolyLearn. Rallenta l'orologio in modo che il periodo di uscita sia di 1 secondo.

down_counter_FSM1 Il contatore all'indietro è un FSM progettato per contare alla rovescia fino a zero. I due possibili orari di inizio sono 20 o 5 che viene scelto dall'input dell'utente. Emette '1' quando il timer ha raggiunto lo zero per indicare che il tempo è scaduto. Questa uscita funge da abilitazione per il componente tono buzzer. Il contatore emette anche un segnale bundle a 8 bit che invia un BCD a 8 bit che viene inviato al decodificatore di segmento. Un'altra uscita è counter_on anch'essa collegata all'ingresso valido sul decoder di segmento.

sseg_dec1 Il componente del decodificatore a sette segmenti è fornito su PolyLearn ed è stato scritto dal professor Bryan Mealy. Utilizza un input BCD fornito da down_counter_FSM1 ed emette l'equivalente decimale sul display a sette segmenti. Quando il contatore è attivo, l'ingresso valido è alto. Ciò consente al decoder di visualizzare il numero decimale sul display a sette segmenti. Quando il contatore è spento, l'ingresso valido è basso. Il display a sette segmenti mostrerà quindi solo quattro trattini.

Passaggio 5: diagramma della macchina a stati finiti (FSM)

Diagramma della macchina a stati finiti (FSM)
Diagramma della macchina a stati finiti (FSM)

L'elenco di sensibilità per la macchina a stati finiti include player1, player2, reset e l'orologio. L'uscita FSM è un bundle player_LED a 2 bit collegato a due LED sulla scheda Basys3. La macchina a stati finiti mostra i seguenti tre stati:

ST0 è lo stato iniziale. In questo stato i due LED sono spenti. L'FSM rimarrà in questo stato se sia player1 che player2 sono bassi. Un reset asincrono imposta anche lo stato su ST0. Quando l'interruttore player1 è impostato su alto, lo stato successivo sarà ST1. Se l'interruttore player2 è impostato su alto, lo stato successivo sarà ST2.

ST1 è lo stato per il quale il LED player1 è acceso. L'FSM rimarrà in questo stato per qualsiasi input. Ciò significa che anche quando l'interruttore player2 è impostato su alto subito dopo che l'interruttore player1 è alto, rimarrà in ST1. Solo il reset asincrono può impostare lo stato successivo su ST0.

ST2 è lo stato per il quale il LED player2 è acceso. Simile a ST!, l'FSM rimarrà in questo stato per qualsiasi ingresso, anche quando l'interruttore player1 è impostato su alto subito dopo che l'interruttore player2 è alto. Anche in questo caso, solo il reset asincrono può impostare lo stato successivo su ST0.

Consigliato: