Prove del secondo esonero 17-01-2001

Esercizio A

 

Un amico vi chiede di realizzare un antifurto fittizio. Il dispositivo consiste di tre luci (led) allineate, controllate da un dispositivo a tre uscite: S(inistra) C(entro) e D(estra). Il dispositivo (vedi figura) ha come unico ingresso un segnale di clock. Ogni uscita, se=1, ha l'effetto di accendere la corrispondente luce. In ogni istante è accesa una sola luce , che si "sposta" da sinistra a destra, "spaventando" così i ladri che credono di essere seguiti nella loro attività. Progettare il circuito in questione (occhio elettronico) , partendo dall'automa a stati finiti.

Progettare inoltre (senza ricavare l'automa, ma fornendo esauriente descrizione oltre allo schema circuitale) il circuito che genera il segnale di clock, in modo tale che la velocità di spostamento delle luci sia programmabile. Suggerimento: Il segnale di clock in ingresso all' "occhio elettronico " sarà ricavato dall'uscita i-esima di un contatore ad m uscite. Il circuito riceve in ingresso un valore i compreso fra 1 ed m, e, a seconda del valore i ricevuto, un apposito dispositivo (quale??) provvede a collegare all' input dell "occhio elettronico" il segnale generato dall'uscita Qi del contatore.

Nota: capire le specifiche correttamente è elemento di valutazione, non si accettano domande.

 

Soluzione (cenni)

Il funzionamento dell'occhio elettronico può essere modellato mediante un automa di Moore che cicla fra tre stati le cui 3 uscite saranno rispettivamente le triple (SCD): 100 - 010 -001

Si può supporre che da qualsiasi stato diverso dai tre sopra elencati (ad esempio, lo stato in cui le tre uscite sono 000) il sistema sia forzato a transitare in un qualsiaisi stato del ciclo, ad esempio, 100. Poiché l'automa ha tre stati (quattro se si considera lo stato in cui le uscite sono 000), sono sufficenti due FF. Nota: l'automa deve avere 3 o 4 stati, ciclare solo fra 3 stati, deve avere 3 uscite e nessun ingresso, poiché le transizioni sono attivate solo dal fronte clock!!!!

Per quanto riguarda la frequenza del segnale di clock, si osservi che l' uscita Qi di un contatore sincrono che riceve in ingresso un segnale di clock di frequenza f , effettua transizioni regolari con frequenza pari a f/2i (provate a tracciare il diagramma temporale di un contatore a m uscite!!).

Dunque è sufficiente mettere le m uscite di un contatore in ingresso ad un multiplexer, la cui uscita è connessa all'input di clock dell'occhio elettronico. I log2m segnali di controllo del multiplexer consentiranno di regolare la frequenza di variazione del segnale di clock dell'occhio elettronico.

 

Esercizio B

Un codice Gray è una sequenza di numeri binari con la proprietà che tra due numeri consecutivi della sequenza può cambiare un solo bit. Per un codice Gray a tre bit la sequenza è: 000 001 011 010 110 111 101 100 .

Progettare un circuito che emetta (ciclicamente) in uscita un Codice Gray a 3 bit. Usare flip flop JK ed un PLA per la parte combinatoria. Il circuito deve ricevere in ingresso un segnale di controllo "inc". Il codice in uscita cambia sul fronte di salita del segnale inc. Fornire dapprima le specifiche in termini di automa a stati finiti.

Nota: capire le specifiche correttamente è elemento di valutazione, non si accettano domande.

Soluzione (cenni)

Si deve realizzare un contatore di sequenza. Poiché la sequenza è di 8 stringhe da 3 bit, in questo caso (al contrario dell'esercizio precedente) il numero di elementi di memoria necessari è lo stesso sia che si facciano coincidere le uscite con i valori memorizzati nei FF, sia che si derivono i segnali di uscita mediante un circuito combinatorio che utilizza i valori memorizzati sui FF.

Dunque, la soluzione più semplice consiste nel far coincidere stato dei FF e uscite del circuito sequenziale.

La tabella degli stati futuri avrà la seguente struttura (si riempie solo la prima riga):

Q2Q1Q0 (S(t))

Q2Q1Q0 (S(t+1))

J2K2

J1K1

J0K0

000

001

0X

0X

1X

Errori comuni: automa incompleto, errori nella compilazione della tabella degli stati futuri e errata o mancata derivazione delle espressioni booleane per i FF, mancato utilizzo du in PLA per la parte combinatoria di generazione delle funzioni di eccitazione dei FF.

 

Esercizio C

Una memoria RAM (random access memory) può essere realizzata mediante un decodificatore ed una matrice di 2n´ m flip flop. Ogni riga della matrice è un registro parallel input parallel output (PIPO).

Il decodificatore riceve in ingresso un valore "x" a n bit e produce in uscita un "1" sulla uscita x-esima (fra le 2n).

Il modulo di memoria riceve in ingresso , oltre alle n linee dette di indirizzamento a1…an (che vanno in input al decoder) anche m segnali i1..im , o input data, e produce in uscita m segnali o1..om detti output data. Inoltre, esiste un segnale di controllo detto READ ed un segnale di controllo detto WRITE (entrambi in ingresso). Lo schema esterno (pin out) del circuito integrato è il seguente:

Una operazione di scrittura sulla memoria avviene nel seguente modo:

Attraverso gli n ingressi del decodificatore, o "segnali di indirizzamento", si seleziona uno fra i 2n registri PIPO. Viene attivato il segnale WRITE, e, durante l'attivazione del segnale , al primo fronte di clock il valore di i1..im viene caricato (memorizzato) sul registro il cui indirizzo corrisponde al valore x sulle linee di indirizzamento.

Una operazione di lettura avviene in modo analogo. Questa volta, sarà il segnale di Read ad essere attivo per un breve intervallo, ed il contenuto del registro selezionato dovrà essere letto sulle linee o1..om.

Sulla base di queste specifiche, progettare una memoria con tre linee di indirizzo (n=3), 4 linee di ingresso e 4 di uscita (m=4). Non si richiede di progettare l'automa, di banale funzionamento ma di assai elevato numero di stati (uno stato è una fra le configurazioni possibili della memoria). Tuttavia, lo schema circuitale deve essere completo (benché convenga disegnare prima uno schema a blocchi, e poi mostrare il contenuto dei vari blocchi a livello di porte logiche e FF). Naturalmente, i segnali Read e Write non possono essere contemporaneamente alti.

Rispondete inoltre a questa domanda: quanti stati avrebbe l'automa che rappresenta il funzionamento di questo circuito???

Nota di incoraggiamento: se leggete bene le specifiche questo esercizio è VERAMENTE semplice. Il problema è solo capire bene quanto qui scritto. Capire le specifiche correttamente è elemento di valutazione, non si accettano domande

Notate che è necessario che il registro Rj modifichi il proprio contenuto SOLO durante un ciclo di scrittura (segnale Write alto) destinato al registro Rj (segnale yj alto). Nel caso in cui il clock non venga "bloccato", il primo fronte positivo in assenza dei segnali di scrittura e di abilitazione cancellerebbe il contenuto del registro!!!!!

Lo schema in figura ammette diverse varianti. Ad esempio, il MPX in uscita può essere sostituito da porte and abilitate dai segnali yj in uscita al decoder. Tuttavia è necessario precisare come le m linee di input vengono "convogliate" in ingresso al registro selezionato, e come analogamente vengono prescelte le uscite del registro selezionato e rese disponibili in uscita al circuito integrato. Data la semplicità dell'esercizio era anche opportuno mostare lo schema CIRCUITALE (come del resto si richiedeva espressamente nel testo del compito) dei vari moduli, incluso il decoder. Si ricordi inoltre che non è possibile cablare in un punto due o più segnali DI USCITA. E' necessario usare una porta OR o (per chi ne conoscesse l'uso, non discusso l lezione) una connessione wired or o un buffer 3-state.

Esercizio D

 

Si considerino tre registri PIPO (parallel input parallel output), R1, R2 ed R3 di 3 bit ciascuno.

Progettate un circuito combinatorio che riceve 4 segnali di ingresso a,b, c e d e consente di eseguire le seguenti operazioni:

  1. Se a=1 copia il contenuto di R1 su R2 e R3
  2. Se b=1 esegue il prodotto logico R1Ù R2 e trasferisce il risultato in R3
  3. Se c=1 esegue la somma aritmetica fra R1 ed R2 e ne trasferisce il contenuto su R3.
  4. Se d=1 ciascuno dei tre registri viene caricato autonomamente con un valore.

I quattro segnali di controllo non possono sovrapporsi, dunque, se nella tripla (a,b,c,d) esiste più di un "1" non viene eseguita alcuna operazione, ma viene generato in uscita un segnale di errore.

Mostrare dapprima la struttura a blocchi del sistema, quindi nei dettagli l'architettura dei vari moduli, inclusi i registri PIPO. Fornite esauriente descrizione oltre allo schema circuitale

Se i registri hanno ciascuno 3 bit, quanti stati ha la macchina sequenziale costrituita dalla logica di interconnessione e dai 3 registri? (NON è richiesto il progetto dell'automa!!)

Una ulteriore domanda è la seguente: come sapete, un registro sincrono modifica il proprio stato sui fronti di un segnale detto clock. Le operazioni abilitate dai comandi b e c richiedono una "preleaborazione" del dato da copiare sui registri. Secondo voi, le due operazioni possono essere svolte nello stesso arco temporale?

Nota: capire le specifiche correttamente è elemento di valutazione, non si accettano domande.

Soluzione (cenni)

Indichiamo con Dik l'ingresso k-esimo del registro i-esimo e con Qik l'uscita k-esima del

FF i-esimo.

Indichiamo inoltre con Sk l'uscita k-esima di un sommatore aritmetico. Infine, indichiamo con Iik l'input esterno k-esimo del registro i-esimo.

Dalle specifiche verbali, possiamo ricavare le espressioni booleane degli ingressi Dik dei vari FF.

In particolare, per il registro R3 abbiamo:

dove

per i registri R2 ed R1 abbiamo :

Infine, per la generazione del segnale di errore è più naturale esprimere le specifiche formali in termini di tabella di verità.

 

 

 

 

 

abcd

Err

0000

0001
0010

0011

0100

0101
0110

0111

1000

1001
1010

1011

1100

1101
1110

1111

0

0

0

1

0

1

1

1

0

1

1

1

1

1

1

1