Rete sequenziale asincrona. Split Condizionatore Rete sequenziale asincrona.
Introduzione Progetto di una rete sequenziale asincrona per la gestione di uno split di un condizionatore in grado di pompare aria calda o fredda. La rete ha in ingresso 3 segnali. Il segnale C è inviato da un pulsante. Al rilascio del pulsante la rete dovrà passare dal pompare aria calda al pompare aria fredda e viceversa. Il segnale T è inviato da un sensore. Quando questo segnale va ad ‘1’ significa che la temperatura impostata dall’esterno è stata raggiunta. Il segnale A (Alert) che è inviato dal motore (e da altri device) allo split. Quando questo segnale va ad ‘1’ significa che la rete dovrà fermare l’erogazione dell’aria, in quanto vi è un problema. La rete fornirà due uscite: S: (Stop). Quando è a ‘1’ ordina a chi riceve il segnale di terminare l’operazione (in tal caso, l’erogazione/pompaggio dell’aria al motore). U: (Uscita). Quando è a ‘1’ il motore pomperà aria calda. Per l’aria fredda sarà a ‘0’. Vincolo: il sistema ci assicura che non arriverà mai in ingresso alla rete, la configurazione C=1, T=1, A=1.
Progettazione: grafo degli stati
Progettazione: commento al grafo. Come si può notare, il grafo degli stati (primitivo) è simmetrico in quanto nel problema in sé vi è simmetria tra l’erogazione di caldo (colore rosso) e di freddo (colore azzurro). Le scelte fatte nella stesura del grafo sono: Indifferenza nell’uscita U, quando S = 1. Cioè, non avrebbe avuto senso dare un uscita specificata alla pompa del caldo/freddo quando il motore è Spento. Indifferenza su entrambe le uscite solo quando il pulsante è premuto.
Progettazione: tabella degli stati. Ho creato la tabella degli stati codificado gli ingressi nell’ordine CTA. TABELLA STATI STATO 000 001 011 010 110 111 101 100 S U A E - D B C F G L I K 1 H N J M
TABELLA DI COMPATIBILITA'/ RIDUZIONE STATI Progettazione: riduzione degli stati, tabella triangolare di compatibilità. Ho indicato con X gli stati non compatibili, con – quelli compatibili. TABELLA DI COMPATIBILITA'/ RIDUZIONE STATI B X C D E - F G H I J K L M N A
Progettazione: Ricerca stati compatibili e nuove assegnazioni Ricerca degli stati compatibili a due a due. BF, BG, BH, CJ, DE, DF, DG, DH, DM, EF, EG, EH, EJ, FG, FH, FL, GH, GI, HK, IJ, IL, IM, IN, JK, JL, JM, JN, KM, KN, NM Classi massime di compatibilità: AF, BFGH, CJ, DEFGH, IJL, KNM ASSEGNAZIONE NUOVI STATI 000 = AF a 011 BFGH b 111 CJ c 001 DEFGH d 110 IJL e 100 KNM f Nell’assegnazione dei valori numerici ai nuovi stati, ho cercato di effettuare quanto più possibile un’assegnazione ottima, in modo da ridurre il numero di corse critiche e riuscire ad evitare di aggiungere un ulteriore variabile di stato per correggere queste corse.
Progettazione: tabella degli stati ridotta TABELLA STATI RIDOTTA 000 001 011 010 110 111 101 100 S U a d - b c 1 e f Assegnamento con correzione corse y1,2,3 In rosso sono evidenziate la posizioni delle uniche due corse critiche, in questa tabella già facilmente corrette. Notare il non ordine (al momento) di colonna, delle variabili di stato y1,y2 e y3.
Progettazione: ordinamento variabili di stato e sintesi uscite. Riordinate le variabili di stato (a distanza di Hamming unitaria) y1,2,3 000 001 011 010 110 111 101 100 S U - 1 U = y1 y2 y3 S = !y1 y2 y3 + !y1!y2 y3 + y1 y2 !y3
Sintesi variabili di stato Y1,2,3 Sintesi Y1 y1,2,3 000 001 011 010 110 111 101 100 - 1 Sintesi Y2 y1,2,3 000 001 011 010 110 111 101 100 - 1 Sintesi Y3 y1,2,3 000 001 011 010 110 111 101 100 1 - Y1 = !C !T !A y2 + A y1 + T y1 + Cy1 Y2 = !T !A !y1 y2 + !C !T A y1 + T !A y1 + !C !T !A !y1 Y3 = !C !T !A y2 +!y1 y2 !y3 + y1y2y3 !T !A + !y1 !C A + !y1 !C T + C !T !y1 y3 Ho scelto quindi di sintetizzare in maniera non minima (e a tratti ridondante) le due funzioni y2 e y3 per tentare di ridurre al minimo le instabilità della rete. Ovviamente è stato aggiunto alle 3 funzioni un «and not(reset)» alla fine, da utilizzare per portare la rete in condizione di stabilità all’avvio dello split.
Implelentazione in VHDL/Schematico Le due implementazioni in VHDL e schematico sono identiche nel contenuto, differenti solo nella forma, in quanto sono esattamente le espressioni booleane trovate nella sintesi. Essendo le due implementazioni identiche nella sostanza, anche le simulazioni sono identiche.
Implementazione in VHDL --uscite U <= x1 and x2 and x3; S <= (not(x1) and x2 and x3) or (not(x1) and not(x2) and x3) or (x1 and x2 and not(x3)); --funzioni di stato x1 <= ( (not(C) and not(T) and not(A) and x2) or (A and x1) or (T and x1) or (C and x1) ) and not(reset); --minima x2 <= ((not(C) and not(T) and not(A) and x2) or (not(C) and not(T) and A and x1) or (T and not(A) and x1) or (C and not(T) and not(A) and not(x1))) and not(reset); --ridondante x3 <= ((not(C) and not(T) and not(A) and x2) or (not(x1) and not(C) and A) or (not(x1) and not(C) and T) or (C and A and not(x1)) or (C and not(T) and not(x1) and x3) or (not(x1) and x2 and not(x3) and C) or (x1 and x2 and x3 and C and not(T))) and not(reset); --ridondante y1 <= x1; y2 <= x2; y3 <= x3;
Implementazione mediante schematico
Simulazione: introduzione Il testbench dello split realizzato in VHDL è lo stesso utilizzato per la realizzazione mediante schematico. Sono stati utilizzati gli stessi nomi e gli stessi colori. Le due simulazioni sono identiche. Il testbench consiste nel: Partire da una condizione iniziale di funzionamento con aria fredda Pressione del pulsante e (al rilascio) funzionamento con aria calda Raggiungimento della temperatura (T=‘1’) con spegnimento del motore Perdita della temperatura (T=‘0’) con accensione del motore e ripresa dell’erogazione di aria calda. Il file del testbench è opportunamente commentato.
Simulazione: behavioral Si porta la rete in uno stato stabile tramite il reset. Si può notare come la rete inizi l’erogazione di aria fredda (Ingressi CTA = ‘000’): S= 0, u = 0. Al momento della pressione del tasto (C=1), la rete «spegne» il motore con S=1. Al rilascio si attiva l’erogazione dell’aria calda (u=1) e il motore riparte. Alla nuova pressione e corrispondente rilascio, la rete torna ad erogare aria fredda. Al momento in cui la temperatura viene raggiunta (T=1) il motore si spegne. Se non viene più segnalato il raggiungimento della temperatura (T=0), si riprende l’erogazione. Al momento di un Alert (A=1), la rete spegne il motore finché l’alert non rientra, continuando poi a erogare aria fredda. Infine viene premuto nuovamente il pulsante C due volte per cambiare la modalità di erogazione (caldo, poi freddo). La simulazione termina con il raggiungimento della temperatura e lo spegnimento «definitivo» del motore.
Simulazione: post-route La simulazione post-route è identica alla behavioral, se non per i ritardi (dell’ordine dei picosecondi) nel passaggio da uno stato all’altro. Inoltre, da questo screenshot si può notare come la rete parta con degli stati indefiniti e come l’azione del reset li stabilizzi. Un altro ritardo che si può notare, è che sia alla pressione che al rilascio del pulsante (C=1, C= 0), gli stati y1, y2 e y3 non rispondono immediatamente. Questi ritardi sono causati dalla tecnologia usata nell’implementazione fisica della rete, qui simulati.