Progetto RSS Creazione di una rete per gestire lo spegnimento di macchine in caso di blackout
Problema Un gruppo statico di continuità utilizza una rete sequenziale sincrona per gestire lo spegnimento di alcune macchine in caso di blackout. L’UPS utilizza il segnale d’ingresso I per mettere in funzione la rete. Una volta avviata la rete deve inviare il comando di spegnimento a più macchine (supponiamo 3) in questo modo: (il conteggio avanza solamente se I=1) attende 6 cicli di clock e lancia il comando di spegnimento della macchina 1 (per un ciclo di clock O1=1); una volta lanciato lo spegnimento della prima macchina attende 6 cicli di clock e lancia il comando di spegnimento per la seconda (per un ciclo di clock O2=1); una volta lanciato lo spegnimento della seconda attende 6 cicli di clock e lancia lo spegnimento della terza (per un ciclo di clock O3=1) La rete è inoltre dotata di un segnale di Reset (A_RES) che viene utilizzato nel caso la corrente sia tornata e non vi è più necessità di spegnere le macchine, la rete deve provvedere a riaccendere attraverso il comando di Restart (Rn=1) le macchine che erano già state spente.
Risoluzione Ho risolto il problema attraverso la sintesi diretta utilizzando alcuni componenti già noti
Contatore per 5 SCHEMATICO VHDL
Contatore per 3 VHDL SCHEMATICO
Monoimpulsore A SCHEMATICO Il monoimpulsore A mi permette di generare un impulso di uscita di un periodo di clock per ingresso 1. Un ulteriore impulso viene generato solo se l’ingresso torna a 1 dopo essere stato a 0. (L’uscita è sincronizzata con il clock)
Monoimpulsore A VHDL
Monoimpulsore A modificato SCHEMATICO Questo tipo di monoimpulsore mi permette di catturare un breve impulso, in questo caso il reset asincrono
Monoimpulsore A modificato
Schematico
VHDL(0)
VHDL(1)
VHDL(2)
VHDL(3)
Simulazione Schematico Behavioral Post-Route Il ritardo introdotto è pari a circa 8 ns.
Simulazione VHDL Behavioral Post-Route Il ritardo introdotto è pari a circa 9 ns.