Sommario:

Modello di un interruttore di spegnimento universale: 10 passaggi
Modello di un interruttore di spegnimento universale: 10 passaggi

Video: Modello di un interruttore di spegnimento universale: 10 passaggi

Video: Modello di un interruttore di spegnimento universale: 10 passaggi
Video: Come collego un interruttore per lampada 2024, Luglio
Anonim
Modello di un interruttore di spegnimento universale
Modello di un interruttore di spegnimento universale

Sei stanco di controllare che tutte le luci di casa siano spente prima di andare a dormire? Vorresti poter spegnere tutte le luci contemporaneamente senza problemi? Per risparmiare energia e tempo, abbiamo deciso di creare un sistema che potesse teoricamente chiudere un'intera casa in una volta.

Abbiamo modellato una prova di questo concetto utilizzando un paio di LED e un circuito stampato basys 3, e abbiamo creato un design che disattiva tutti i LED con la semplice pressione di un pulsante. Questo modello potrebbe essere applicato anche a un vero e proprio sistema di illuminazione domestica, sebbene richiederebbe cablaggi e modifiche più complicati ai file VHDL dati.

Passaggio 1: importa i file VHDL dati

Affinché il nostro modello funzioni correttamente sarà necessario scaricare il software che fornisce le istruzioni alla scheda Basys 3.

Per prima cosa dovrai scaricare uno strumento di sintesi per implementare i file vhdl sull'hardware. Se vuoi essere certo che tutto il codice replicherà completamente il nostro design senza la necessità di alcuna modifica, ti consigliamo di utilizzare Vivado 2016.2. Dopo aver installato Vivado puoi creare un progetto e scaricare i nostri file sorgente. Aggiungili come sorgenti al tuo progetto, non dimenticare di aggiungere anche il file dei vincoli!

Successivamente spiegheremo cosa fa ciascuno dei file sorgente. Salta i passaggi da 2 a 6 se vuoi solo arrivare alla costruzione fisica del dispositivo.

Passaggio 2: ripartizione del modulo superiore VHDL

Ripartizione del modulo superiore VHDL
Ripartizione del modulo superiore VHDL
Ripartizione del modulo superiore VHDL
Ripartizione del modulo superiore VHDL

Il modulo superiore del progetto è quello che collega tutti i singoli moduli componenti all'hardware utilizzato. Come puoi vedere, abbiamo i moduli killSwitch e buzzerControl definiti come componenti in alto.

La sezione inferiore specifica come questi moduli sono collegati tra loro. Abbiamo collegato quattro LED alla scheda e li abbiamo associati ai moduli killSwitch da dev0 a dev3. Abbiamo quattro moduli killSwitch definiti perché ne abbiamo bisogno per gestire lo stato di ogni LED connesso. Ciascuno di questi moduli utilizza il segnale di clock e pulsante che abbiamo creato nella definizione del modulo superiore, nonché i rispettivi segnali di interruttore di ingresso e dispositivo di uscita.

Il modulo di controllo del cicalino sul fondo attiva il cicalino quando viene premuto il pulsante di spegnimento universale. Come puoi vedere, il modulo di controllo del cicalino riceve il segnale dell'orologio e del pulsante come input. Viene anche passato il pin di uscita del cicalino fisico per controllarlo di conseguenza.

Passaggio 3: ripartizione del modulo Kill Switch VHDL

Ripartizione del modulo Kill Switch VHDL
Ripartizione del modulo Kill Switch VHDL
Ripartizione del modulo Kill Switch VHDL
Ripartizione del modulo Kill Switch VHDL

Il Kill Switch è il pulsante di spegnimento universale e il modulo si occupa principalmente di collegarlo ad altri elementi del circuito in modo che quando viene premuto tutte le luci si spengano.

Mentre il modulo superiore gestisce la connessione dell'hardware fisico al software, il modulo killSwitch gestisce la logica principale di ciascun dispositivo. Il modulo accetta gli ingressi per il segnale dell'orologio, il pulsante di spegnimento universale e l'interruttore a levetta del dispositivo. In cambio controlla lo stato del pin del dispositivo a cui è connesso.

Nella sezione architettura del codice vediamo che ha una dipendenza dal modulo dFlipFlop per immagazzinare memoria. Puoi anche vedere che abbiamo dichiarato quattro segnali che verranno utilizzati per collegare il flip flop e per implementare le nostre istruzioni logiche. All'interno della sezione comportamentale del codice abbiamo creato un'istanza del modulo dFlipFlop e assegnato i nostri segnali di I/O alle porte.

Da qui la parte principale della nostra logica risiede nei valori del segnale per invertState e isDevOn. La nostra base logica per il dispositivo è la seguente: "Ogni volta che l'interruttore viene premuto, la luce invertirà il suo stato di accensione/spegnimento. Ogni volta che si preme il pulsante e il LED è attualmente acceso, il LED invertirà il suo stato su spento. " Da queste due affermazioni possiamo estrapolare che lo stato del LED dovrebbe essere lo XOR dell'interruttore e il nostro elemento di memoria. In questo modo un cambiamento in uno inverte il LED. Questo può essere visto implementato nel segnale isDevOn. Il LED in condizione per l'elemento di memoria è gestito dal nostro segnale invertState. Se il LED è acceso e il pulsante è premuto, il nostro elemento di memoria si aggiornerà e invertirà il suo stato. Questo inverte anche lo stato del LED.

Passaggio 4: ripartizione del modulo Flip Flop VHDL

Ripartizione del modulo Flip Flop VHDL
Ripartizione del modulo Flip Flop VHDL

Un problema con il nostro design era il fatto che dopo aver utilizzato l'interruttore di spegnimento, le luci che erano precedentemente accese potrebbero dover essere capovolte due volte per tornare alla posizione di accensione. Questo sarebbe piuttosto l'inconveniente per le persone nel tempo. Siamo riusciti ad aggirare questo inconveniente includendo nel nostro progetto un "Flip Flop", un elemento di circuito in grado di memorizzare informazioni. Ora, il sistema ricorda se un interruttore della luce era precedentemente acceso in modo che se lo si capovolge di nuovo si accenderà indipendentemente dalla sua posizione iniziale.

Il codice VHDL utilizza le istruzioni if e else per creare il Flip Flop come componente all'interno del nostro progetto di circuito. Assicura che quando il segnale di clock passa da uno stato basso a uno alto, quando la lampadina è accesa e quando viene premuto l'interruttore di spegnimento, l'uscita del flip flop sovrascrive il suo ingresso. Quando l'ingresso viene sovrascritto, il flip flop viene invertito.

Passaggio 5: ripartizione del modulo cicalino piezoelettrico VHDL

Ripartizione del modulo cicalino piezoelettrico VHDL
Ripartizione del modulo cicalino piezoelettrico VHDL
Ripartizione del modulo cicalino piezoelettrico VHDL
Ripartizione del modulo cicalino piezoelettrico VHDL

Questo file è un po' superfluo per quanto riguarda il design dell'hardware, ma è essenziale per far funzionare senza problemi il modulo superiore e i file dei vincoli. Se scegli di non utilizzare il cicalino piezoelettrico, scarica questo file, ma non collegare il cicalino alla scheda Basys 3.

Il cicalino piezo, dopo aver premuto il pulsante di disattivazione, emetterà un tono di due note che fornirà all'utente un feedback uditivo che il pulsante è stato premuto. Abbiamo implementato questo comportamento in VHDL attraverso una serie di istruzioni if in una struttura di processo. Abbiamo iniziato creando un valore intero per tenere traccia di quanti cambi di clock si sono verificati. Una volta avviato il processo, il programma impiega il primo mezzo secondo (da 0 a 50 milioni di clock) emettendo una nota A a 440 hertz. Ciò si ottiene invertendo il segnale del cicalino piezoelettrico ogni multiplo pari di 227272 tick del clock con una funzione modulo. Questo numero è il risultato della divisione del segnale di clock della scheda (100 MHz) per la frequenza desiderata (400 Hz). Durante il secondo mezzo secondo (da 50 a 100 milioni di clock) la scheda emette una nota F a 349,2 hertz con lo stesso metodo di prima. Dopo un secondo il programma non incrementa ulteriormente la variabile di clock e smette di emettere qualsiasi cosa dal cicalino piezoelettrico. Premendo nuovamente il pulsante di spegnimento universale, questo numero viene reimpostato a 0, riavviando il ciclo di rumore.

Passaggio 6: ripartizione del file dei vincoli VHDL

Il file dei vincoli indica a Vivado quali dispositivi sulla scheda Basys 3 stiamo utilizzando. Fornisce inoltre a Vivado i nomi che abbiamo dato ai dispositivi nel nostro codice. Vivado ha bisogno di queste informazioni in modo che sappia come collegare i nostri elementi logici all'hardware fisico. Il file dei vincoli include una grande quantità di codice commentato (non utilizzato). Queste righe di codice fanno riferimento ai dispositivi sulla scheda che non stiamo utilizzando.

I dispositivi che stiamo utilizzando includono quattro interruttori di ingresso etichettati V17, V16, W16 e W1 sulla scheda. Usiamo anche il pulsante di spegnimento universale, etichettato U18. I pin di uscita per i nostri quattro LED collegati sono JB4, JB10, JC4 e JC10. Per il nostro buzzer piezo stiamo usando il pin di uscita JA9.

Come abbiamo affermato nella ripartizione del modulo in alto, se vuoi aggiungere ulteriori LED o altri dispositivi alla scheda devi aumentare la portata dei segnali sw e dev, aggiungere più moduli killSwitch e collegarli insieme. È quindi necessario collegare quei nomi di variabili all'hardware del dispositivo tramite il file dei vincoli. Questo può essere fatto decommentando (riattivando) le righe di codice associate ai pin che si desidera utilizzare, quindi aggiungendo il nome della variabile associata nel modulo superiore. La sintassi corretta per questo può essere copiata dai dispositivi che stiamo utilizzando. Per scoprire i nomi dei pin che si desidera utilizzare sulla scheda fare riferimento alla guida di riferimento Baasys 3 qui.

Passaggio 7: costruzione di Basys 3

Costruire i Basys 3
Costruire i Basys 3
Costruire i Basys 3
Costruire i Basys 3

Sarà necessario collegare i LED alle porte I/O corrette del Basys 3. Seguire le immagini fornite per determinare quali sono le porte corrette, perché se si collega un LED alla porta sbagliata, non si accenderà. Se hai scelto di collegare il cicalino piezoelettrico, dovrai collegarlo anche alle porte I/O corrette.

Quando la scheda è pronta, collegala al computer tramite cavo USB.

Passaggio 8: implementazione di file VHDL su Basys 3

Implementazione di file VHDL su Basys 3
Implementazione di file VHDL su Basys 3
Implementazione di file VHDL su Basys 3
Implementazione di file VHDL su Basys 3

Ora che la tua scheda è pronta e il tuo codice è finito, puoi finalmente mettere insieme il modello.

Una volta che hai impostato il tuo progetto in Vivado, devi fare clic sul pulsante "Genera Bitstream" per compilare il codice prima che venga caricato sulla scheda. Se ricevi un messaggio di errore in questo momento, devi ricontrollare che il tuo codice corrisponda esattamente al nostro. Quando dico esattamente, intendo anche il punto e virgola oi tipi di parentesi che vengono utilizzati. Una volta che il tuo bitstream è stato scritto con successo, vai al gestore hardware all'interno di Vivado e fai clic sul pulsante "Apri Target", quindi fai clic su "Programma dispositivo" subito dopo. La tua scheda Basys 3 dovrebbe ora essere completamente funzionante.

Passaggio 9: utilizzo della scheda Basys 3

Utilizzo della scheda Basys 3
Utilizzo della scheda Basys 3

Ora che la Basys 3 Board è operativa ed è stata programmata per rappresentare il nostro modello, devi sapere come usarla.

Ciascuno dei quattro interruttori più a destra controlla uno dei LED, premendoli si accenderà o si spegnerà il LED. Se il LED non si attiva, verifica di essere collegato alla porta I/O corretta e che il LED sia funzionante.

Quando si desidera disabilitare tutti i LED contemporaneamente, è necessario premere il pulsante centrale nel gruppo di cinque pulsanti visualizzati sopra.

Passaggio 10: mostrati

Il modello è una piccola novità ordinata che puoi dimostrare di fronte ai tuoi amici e alla tua famiglia. In teoria può essere utilizzato anche per implementare l'interruttore di spegnimento universale nel sistema elettrico di casa, se si sostituiscono i LED con fili che portano alle luci. Sebbene sia possibile, dovremmo comunque sconsigliarlo. Se tenti di ricablare senza l'aiuto di un elettricista, potresti causare gravi danni a te stesso o alla tua casa.

Consigliato: