PROGETTO 1 Un lettore di musica digitale è dotato di un sistema per la regolazione del volume composto da tre pulsanti ‘+’ e ‘–‘ e ‘[]’ e progettato in modo che: in posizione di riposo nessuno dei tre pulsanti risulti premuto (– + = 000) e in ogni istante al più possa essere premuto un solo pulsante. Non si consideri possibile il rilascio di un pulsante e la contemporanea pressione di un altro. – [] + Progettare una rete sequenziale asincrona (RSA) con tre ingressi ‘+’ e ‘–‘ e ‘’ e due uscite A e D, utilizzate per impartire i comandi di aumento (AD=10) o diminuzione (AD=01) del volume. • Se non è in corso nessuna regolazione del volume e nessun pulsante è premuto oppure viene premuto il pulsante ‘’ deve essere mantenuto il volume impostato (AD=00). • Se non è in corso nessuna regolazione del volume, agendo sul pulsante ‘+’ (rispettivamente ‘–‘), deve essere attivato il comando di aumento (risp. diminuzione) del volume non appena il pulsante ‘+’ (risp. ‘–‘) viene rilasciato. Il comando di aumento (risp. diminuzione) del volume viene disattivato mediante le seguenti due modalità: agendo nuovamente sul pulsante ‘+’ (risp. ‘-‘) non appena questo viene rilasciato oppure agendo sul pulsante ‘[]’ non appena questo viene premuto. • Infine, se viene premuto il pulsante ‘–‘ (risp. +) mentre è in corso una fase di aumento (risp. diminuzione) del volume deve essere immediatamente interrotto l’aumento (risp. diminuzione) del volume e deve essere impartito il comando di diminuzione (risp. aumento) del volume non appena il pulsante ‘–‘ (risp. ‘+’) viene rilasciato. DIAGRAMMA DEGLI STATI PRIMITIVO Ogni stato è stabile per una sola configurazione d’ingresso. La rete è di MEALY, dunque le uscite A e D dipendono anche dagli ingressi oltre che dagli stati, quindi dalle variabili di stato. Nelle transizioni tra due stati che hanno uscita diversa si può mettere un’indifferenza, utile a facilitare la sintesi della funzione d’uscita. Il Diagramma è simmetrico. TABELLA DEGLI STATI Le variabili di ingresso della RSA assegnate ai pulsanti fisici sono: X1 ( - ), X2 ( [] ), X3 ( +) Stati stabili per i dati ingressi La tabella è non completamente Specificata. Cerchiamo di ridurre il numero degli Stati e la complessità della rete trovando gli stati compatibili e le classi di compatibilità. L’obbiettivo è di trovare il più piccolo insieme chiuso di classi di compatibilità che copre l’insieme di stati su cui la rete è definita. TABELLA TRIANGOLARE DELLE IMPLICAZIONI Classi di Compatibilità: ( [AE] , [B] , [C] , [DE] , [DH] , [EH] , [F] , [G] ) Classi massime di Compatibilità: ( [AE] , [B] , [C] , [DEH] , [F] , [G] ) Classi scelte: [AE] => α [B] => β [C] => χ [DEH] => δ [F] => Φ [G] => γ Lasciando A da solo si rispettano comunque chiusura e copertura TABELLA DEGLI STATI RIDOTTA Insieme chiuso e coperto di Classi di Compatibilità; nel nostro Caso sono tutte Massime. Corse Con 6 stati ci occorrono 3 variabili di stato ( primo intero >= Log2 (6) = 3 ) TABELLA DELLE TRANSIZIONI In ogni casella è scritto: codifica binaria dello stato / uscite AD. Le caselle colorate indicano i punti di partenza e arrivo delle transizioni con corsa; i numeri colorati indicano tutti i passaggi per arrivare a fine transizione. SINTESI DELLA RETE (RSA) Per le troppe variabili presenti ho optato per una sintesi con FF SR , che di solito riduce il numero di raggruppamenti rettangolari da cercare per la sintesi delle funzioni S ed R. SINTESI DELLE FUNZIONI S,R,Y • Transizione della Variabile di stato 0 >> 1 equivale a SR=10 (1 per S) • Transizione della Variabile di stato 1 >> 0 equivale a SR=01 (1 per R) • Gli 1 senza transizione equivalgono a SR= -0 (indifferenza per S) • Gli 0 senza transizione equivalgono a SR= 0- (indifferenza per R) • Infine si trovano S ed R mediante i massimi raggruppamenti rettangolari potenza di 2 (implicanti primi), quindi scegliendo una somma irridondante di implicanti primi essenziali che corrisponde ad una realizzazione di costo minimo. • La Variabile di stato equivale a Y=S+(!RY) con SR=11 impossibile. SINTESI DI S ed R S1= X3 * !Y2 * !Y3 R1= X2 * !Y2 + X1 * Y1 + X3 * !Y2 * Y3 S2= X1 * !Y3 + !X2 * !X3 * Y1 R2= X2 * !Y3 + Y1 * Y3 + X1 * Y3 + X3 * Y2 * !Y1 * !Y3 S3= X3 * Y1 * Y2 + !X1 * !X2 * !X3 * !Y1 * Y2 R3= X2 + X3 * !Y1 * Y2 + !X3 * !Y2 * !X1 Esecuzione in VHDL (Xilinx) ENTITY VETTORI S[3..1] e R[3..1] ARCHITECTURE (Somme irridondanti di implicanti primi essenziali) TEST BENCH – PROCESSO DI STIMOLI PARTE 1 PARTE 2 SIMULAZIONE BEHAVIORAL PARTE 1/2 SIMULAZIONE BEHAVIORAL PARTE 2/2 SIMULAZIONE POST ROUTE PARTE 1/2 : ESEMPI DI RITARDO DELLA RETE SIMULAZIONE POST ROUTE PARTE 2/2 Si capisce che è una Rete di Mealy perché AD commuta in anticipo Rispetto al commutare dello stato Y[3..1]