3 Reti Sequenziali Fondamenti di Informatica P2 Ingegneria Meccatronica

Documenti analoghi
Reti Logiche LA. Complementi ed esercizi di Reti Sequenziali Sincrone

Calcolatori Elettronici T. Complementi ed Esercizi di Reti Logiche

Calcolatori Elettronici T. Complementi ed Esercizi di Reti Logiche

Le reti sequenziali sincrone memorizzano il proprio stato in dei FF-D

LSS Reti Logiche: circuiti sequenziali

Capitolo 6. Reti asincrone. Elaborazione asincrona Procedimenti di sintesi e analisi Memorie binarie

Reti Logiche T. Esercizi reti sequenziali sincrone

Modelli per le macchine digitali

ESERCIZIO N. 1 - PAGINA 1

Reti sequenziali notevoli: registri, registri a scorrimento, contatori ing. Alessandro Cilardo

I Bistabili. Maurizio Palesi. Maurizio Palesi 1

Q1 D. CK Qn CK Q1. E3x - Presentazione della lezione E3

LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 6. Prof. Rosario Cerbone

Flip flop: tempificazione latch ed edge-triggered

I bistabili ed il register file

Reti logiche (2) Circuiti sequenziali

Reti logiche (2) Circuiti sequenziali

Capitolo 6. Reti asincrone. 6.1 Struttura, comportamento e corretto impiego. Reti sequenziali asincrone (struttura)

Circuiti sequenziali

RETI LOGICHE T Ingegneria Informatica. Esercitazione 3 Reti Sequenziali Sincrone

Università degli Studi di Cassino

Esercitazione del 26/03/ Soluzioni

Fondamenti di Informatica P2 Ing. Meccatronica. Traccia soluzione 27 Giugno 2019

Livello logico digitale

Corso di Calcolatori Elettronici I Flip-flop

Circuiti sequenziali e latch

Circuiti sincroni circuiti sequenziali:bistabili e latch

Le Alee. La presenza di ritardi nei dispositivi utilizzati può avere l effetto di modificare il comportamento delle uscite in alcuni casi

Prova d esame di Reti Logiche T 13 Luglio 2016

AXO Architettura dei Calcolatori e Sistemi Operativi. reti sequenziali

Flip-flop e loro applicazioni

Reti Logiche T. Esercizi reti sequenziali asincrone

Elettronica Sistemi Digitali 09. Flip-Flop

Circuiti sincroni Circuiti sequenziali: i bistabili

Capitolo 6. Reti asincrone. 6.1 Elaborazione asincrona. Reti sequenziali asincrone (struttura) Reti sequenziali asincrone (comportamento)

I flip-flop ed il register file. Sommario

Capitolo 6. Reti asincrone. 6.1 Elaborazione asincrona. Esigenze. 6.1 Elaborazione asincrona 6.2 Memorie binarie 6.3 Analisi e Sintesi

Prova d esame di Reti Logiche T 11Settembre 2015 COGNOME:.. NOME:.. MATRICOLA:

Calcolatori Elettronici T Ingegneria Informatica 06 Programmable Interrupt Controller (PIC)

Circuiti sequenziali. Circuiti sequenziali e applicazioni

Pin-out logico di una CPU CPU. Reset Clock Ready. Architettura di un Sistema

Calcolatori Elettronici A a.a. 2008/2009

ANALISI E PROGETTO DI CIRCUITI SEQUENZIALI

Page 1. ElapB3 21/09/ DDC 1 ELETTRONICA APPLICATA E MISURE. Lezione B3: circuiti sequenziali. Ingegneria dell Informazione

Un contatore è un registro che evolve secondo una sequenza predefinita di stati ordinati all applicazione di un impulso di ingresso

Campionamento e memoria. Sommario. Sommario. M. Favalli

Sintesi di Reti sequenziali Sincrone

Circuiti Sequenziali

Calcolatori Elettronici

Calcolatori Elettronici

Calcolatori Elettronici T Ing. Informatica. Traccia soluzione 15 Febbraio 2017

Tutorato di Calcolatori Elettronici. Corso di laurea in Ingegneria Biomedica Elettrica, Elettronica e Informatica

CALCOLATORI ELETTRONICI. I dispositivi di memoria

Elementi di memoria Ciascuno di questi circuiti è caratterizzato dalle seguenti proprietà:

Introduzione. Sintesi Sequenziale Sincrona. Modello del circuito sequenziale. Progetto e strumenti. Il modello di un circuito sincrono può essere

Calcolatori Elettronici Lezione 4 Reti Sequenziali Asincrone

Macchine sequenziali

5 Mapping e decodifica Fondamenti di Informatica P2 Ingegneria Meccatronica

05EKL-Progetto di Circuiti Digitali. Richiami di Reti Logiche

Capitolo 7. Reti sincrone. 7.1 Elaborazione sincrona Analisi e Sintesi 7.3 Registri e Contatori

Capitolo 3. Modelli. Macchine combinatorie Macchine sequenziali asincrone sincrone

Calcolatori Elettronici B a.a. 2004/2005

Corso di Calcolatori Elettronici I Elementi di memoria ing. Alessandro Cilardo

RETI LOGICHE T Analisi, sintesi e composizione di Reti Sequenziali Sincrone

Elementi di memoria. Ing. Ivan Blunno 21 aprile 2005

Esercizio 1. Utilizzare FF di tipo D (come ovvio dalla figura, sensibili al fronte di discesa del clock). Progettare il circuito con un PLA.

Microelettronica Corso introduttivo di progettazione di sistemi embedded

Capitolo 6. Reti asincrone. 6.1 Elaborazione asincrona. Reti sequenziali asincrone (struttura) Reti sequenziali asincrone (comportamento)

Esercizi sulle Reti Sequenziali Sincronizzate

Il Livello Logico-Digitale. I circuiti sequenziali

AB=AB. Porte logiche elementari. Livello fisico. Universalità delle porte NAND. Elementi di memoria: flip-flop e registri AA= A. Porta NAND.

Calcolatori Elettronici T Ing. Informatica. Traccia soluzione 9 Giugno 2016

Macchine sincrone. In teoria. Solo un modello teorico NON ESISTE NELLA PRATICA

Prova d esame di Reti Logiche T 09 Gennaio 2015 COGNOME:.. NOME:.. MATRICOLA:

Gli elementi di memoria: i bistabili I registri. Mariagiovanna Sami Corso di reti Logiche 8 Anno

Esercizio 4.3. Esercizio 4.4

Sintesi Sequenziale Sincrona

FONDAMENTI DI INFORMATICA Lezione n. 7. Esercizi di progetto di circuiti sequenziali

Cenni alle reti logiche. Luigi Palopoli

Esercitazione del 03/04/ Soluzioni

13/01/2005 COGNOME NOME MATRICOLA. SOLUZIONE ESERCIZIO N. 1 Pagina 1. Si consideri la rete sequenziale asincrona rappresentata in figura:

Calcolatori Elettronici T Ing. Informatica. Traccia soluzione 8 Gennaio 2015

Analisi e Progetto di Macchine Sequenziali ing. Alessandro Cilardo

Esercizio 1 Domanda 1

Reti sequenziali (segue)

I circuiti sequenziali

Sintesi di Reti Sequenziali Sincrone

Reti Sequenziali. Reti Sequenziali. Corso di Architetture degli Elaboratori

05EKL-Progetto di Circuiti Digitali

Il latch Set- Reset. 2: individuazione del grafo degli stati - In figura è mostrato che per ottenere questo comportamento occorrono due stati interni.

Università degli Studi di Cassino e del Lazio Meridionale Corso di Calcolatori Elettronici Elementi di memoria e Registri

Ia Prova finale MATRICOLA COGNOME NOME 29/06/2006 ESERCIZIO 1, pagina 1

Alee in macchine combinatorie

Tutorato di Calcolatori Elettronici Battista Biggio - Sebastiano Pomata. Corso di Laurea in Ingegneria Elettronica

Macchine Sequenziali

DISPENSE DI SISTEMI ELETTRONICI PROGRAMMABILI

Capitolo 6: Reti asincrone

Gli elementi di memoria: i bistabili

Sequential Logic. 2 storage mechanisms positive feedback charge-based. Inputs. Outputs COMBINATIONAL LOGIC. Current State. Next state.

Transcript:

3 Reti Sequenziali Fondamenti di Informatica P2 Ingegneria Meccatronica Stefano Mattoccia ipartimento di Informatica Università di Bologna 1

Le reti di maggiore interesse non dipendono unicamente dagli ingressi (reti combinatorie, RC) ma anche da elaborazioni precedenti. Pertanto, per le reti sequenziali sono necessari dispositivi per memorizzare elaborazioni precedenti (stato). Il modello di tale rete (macchina a stati finiti o FSM) può essere schematizzato così: I n k RC r k U S MEM S*

Modello della Macchina a Stati Finiti (FSM) - Mealy I n F r U U=F(S,I) S * =G(S,I) G k S S *? k

Modello della Macchina a Stati Finiti (FSM) - Moore I n F r U U=F(S) S * =G(S,I) G k S? S * k

Reti Sequenziali Asincrone (RSA) k S S * S S *? k τ Retroazione diretta (τ: ritardo intrinseco della RC G) I S S * U t (1) (2) (3) t+τ

Aspetti positivi delle RSA (vs RSS) Le reti asincrone rispondono molto rapidamente (appena possibile) alle variazioni degli ingressi Non è necessario un segnale di sincronismo (clock) Ridotta dissipazione di potenza Aspetti negativi delle RSA (vs RSS) Vincoli per il corretto impiego - l ingresso può variare solo quando la rete ha raggiunto una condizione di stabilità - i segnali di ingresso possono variare uno alla volta Esposte a potenziali malfunzionamenti (corse critiche) ifficili da progettare In pratica, sono utilizzate per realizzare latch e flip-flop. A noi interessano (maggiormente) le reti sincrone (RSS)!

RSA notevoli: Flip-Flop FF * * FF: RSA che assume il valore logico presente sull ingresso durante i fronti di salita (positive edge triggered) dell ingresso Il FF è tipicamente utilizzato come cella elementare di memoria nelle reti sequenziali sincrone. In tal caso, il segnale, è un segnale di tipo periodico (clock). atasheet FF: http://www.ti.com/lit/ds/sdls119/sdls119.pdf

I FF sono dotati di due ulteriori ingressi asincroni che consentono di settare (A_SET) o resettare (A_RES) indipendentemente da e. A_SET* A_SET* FF * A_RES* A_RES* * A_SET* A_RES* * Tipica realizzazione di un FF della famiglia TTL ( 374) mediante 3 latch SR. =0 se A_RES=1 =1 se A_SET=1 A_SET e A_RES sono prioritari rispetto a e NOTA: i segnali asincroni di set e reset denominati nella slide (rispettivamente) A_SET e A_RES sono spesso denominati (rispettivamente) PR e CL oppure S e R. Inoltre, se non indicati nello schema logico si suppone che tali comandi siano non asseriti (A_SET=0 e A_RES=0).

Vincoli di corretto impiego per i FF Tempi di Setup (τ SU ), Hold (τ H ) e Risposta (τ R ) FF * * τ SU τ H τ R Il corretto funzionamento è garantito solo se τ SU τ SUmin e τ H τ Hmin. In caso contrario, metastabilità. Cosa implicano i parametri τ SUmin e τ Rmin indicati nei datasheet?

Il FF come elemento fondamentale delle RSS Se all ingresso viene inviato un segnale periodico (clock): il FF ritarda ( = elay) il segnale di uscita, rispetto al segnale di ingresso, di un tempo pari al periodo di clock T n+1 = n FF * * T T T T

Vincoli di campionamento e metastabilità Il mancato rispetto dei vincoli sul campionamento dei segnali porta a metastabilità. τ SU τ H???????????? τ =??? 1? 0? metastabile?? 0 1 stabile stabile

Sincronizzazione di segnali (non sincroni) Normalmente i segnali provenienti dall esterno (ma non solo) non sono sincroni con il clock della RSS. uesto è un problema molto comune. Come gestire potenziali situazioni di metastabilità che potrebbero compromettere il corretto funzionamento della RSS? I FF metastabile I_M FF Stabile (?) I_sync La soluzione mostrata garantisce che l uscita I_sync assume il valore di I nel momento in cui tale segnale è stato campionato? Sono sufficienti due livelli di FF? uali sono gli effetti collaterali di questa soluzione?

Reti Sequenziali Sincrone (RSS) k? k (k) FF S S * S S * k FF sull anello di retroazione Tutti con lo stesso clock di periodo T I S S * U t-t t t+t t+2 T Nel caso specifico: Moore o Mealy? Lo stato cambia anche se non cambia l ingresso? L uscita cambia anche se non cambia l ingresso?

Alcune considerazioni sulle RSS Lo stato della rete cambia solo in corrispondenza dei fronti di salita del clock che (tipicamente) si susseguono con periodo T La rete risponde ogni T se si desidera massimizzare la velocità di risposta della rete è necessario adottare il modello di Mealy La rete è svincolata dai ritardi della rete G! uindi, nessun problema di corse critiche (purché T > τ SUmin + τ Rmin!) All interno di uno stesso progetto sono tipicamente presenti più RSS e non necessariamente per tutte le RSS il clock è lo stesso e/o coincide con il clock del processore Le RSS sono (più) facili da progettare delle RSA

Alee nelle reti combinatorie Si consideri il caso seguente nel quale l uscita di una rete combinatoria è utilizzata come clock di un FF: IN 1 1 S τ a τ τ c b τ u FF * OUT S τ τ τ u Alea statica: provoca un campionamento indesiderato del FF L uscita u presenta un glitch

In realtà, le alee possono essere eliminate introducendo ulteriori gate (metodi che non vedremo) In alcuni casi le alee potrebbero essere filtrate dagli stessi gates (ad esempio nel caso di lentezza dei dispositivi rispetto ai tempi del glitch); questa possibilità deve essere verificata attentamente analizzando i datasheet dei componenti utilizzati perché espone la rete a malfunzionamenti In ogni caso, evitare sempre di inviare sul clock di una RSS l uscita di una rete combinatoria Un impulso troppo breve potrebbe essere filtrato dall AN a b c a b c

Clock gating e glitch sul clock Nelle reti sincrone è necessario evitare variazioni spurie (glitch) del segnale di clock che possono provocare commutazioni indesiderate dei FF. Ad esempio, per via dei reciproci ritardi tra i t segnali [t-1..0] e/o le alee introdotte dalla rete combinatoria di decodifica, a causa del clock gating, può verificarsi quanto segue [t-1..0] t Rete di ecodifica P _G FF * * P _G NO!! Glitch sul clock commutazione spuria del FF!

Clock gating e clock-skew Il clock gating, oltre a generare potenziali glitch introduce clock-skew. Ad esempio, consideriamo le due RSS seguenti I2 FF * A A* 1 I1 _G FF * B B* τ AN I clock delle due reti sono sfasati di un tempo pari al ritardo introdotto dall AN. Tale fenomeno ( clock-skew ) è potenzialmente dannoso. Perchè? _G τ AN τ AN Il clock-skew non è causato solo dal clock gating ma anche (ad esempio) da percorsi elettrici di lunghezza diversa.

Notazione Per una corretta e non ambigua rappresentazione delle reti logiche è bene adottare alcune convenzioni. Segnali asincroni (A_nome_segnale) o ulteriori segnali di ingresso (e.g., segnali di input nei contatori con LOA) Ingressi RSS indicare tutti i segnali anche all interno! Uscite Segnali asincroni (A_nome_segnale)

I FF * A_RES A A* I FF A A* A_RESET A_RESET S S A B 0 1 U A B U Inoltre: - le RSS hanno un clock mentre le reti combinatorie no.. etc

river 3-state I U I U OE=0 OE I U OE=1 OE I U I 1 0 1 1 0 0 0 1 Z OE U? 0 1 Z ual è il valore dell uscita?

uale valore logico assume U? 1 0 U=? OE=0 Che cosa è necessario garantire nella rete seguente? uando il segnale U assume un valore logico significativo? I1 OE1 1 U=? I2 OE2

Esercizio 1 Progettare un registro a 8 bit con uscita tri-state utilizzando FF positive edge triggered. La rete, ad ogni fronte di salita del clock, memorizza il byte IN[7..0] in ingresso se WE=1 mentre mantiene il valore precedentemente memorizzato in caso contrario (WE=0). L uscita OUT[7..0] della rete deve essere posta nello stato di alta impedenza quando il segnale OE=0. Inoltre, la rete deve essere dotata di un ingresso asincrono di RESET (A_RESET) che, se 1, pone al livello logico 0 l uscita OUT[7..0] indipendentemente dal valore dei segnali WE, IN e. uali condizioni debbono essere soddisfatte perché sia garantito il corretto funzionamento della rete? OE OE WE IN[7..0] WE IN[7..0]? OUT[7..0] OUT[7..0] A_RESET

Soluzione Caso singolo bit OE IN 0 1 FF * R OUT WE A_RESET NOTA - Per garantire il corretto funzionamento della rete è necessario rispettare tempi di setup e hold - Il FF esiste (8X) in forma integrata (74XX374) ed è dotato di comando di OE

NOTA - La soluzione seguente NON è corretta in quanto: a) variazioni spurie (glitch), dovute a instabilità del segnale WE, possono causare commutazioni indesiderate del flip-flop b) il gate ritarda il segnale di clock del FF e potrebbe causare potenziali sfasamenti ( clock-skew ) tra i clock dei vari componenti della rete sincrona complessiva OE IN WE FF * R OUT A_RESET

Estensione a 8 bit A_RESET WE OE IN7 0 1 FF * R 7 OUT7 IN1 0 1 FF * R 1 OUT1 IN0 0 1 FF * R 0 OUT0

Estensione a 8 bit (meglio) IN[7..0] 8 8 0 1 8 FF * R 8 [7..0] 8 OE 8 OUT[7..0] WE A_RESET

Esercizio 2 Progettare una rete che periodicamente, dopo ogni tre periodi di clock, setta al livello logico 1 la propria uscita per un periodo clock.? OUT OUT A_RESET OUT (0) (1) (2) (3) (0) (1) (2) (3)

Soluzione 3.1 Soluzione canonica ottenuta mediante sintesi formale. Grafo degli stati A,0 B,0 C,0,1 s n,u Tabella di flusso s n s n+1 u A B 0 B C 0 C 0 A 1 Tabella delle transizioni y 1n y 0 n y 1 n+1 y 0 n+1 u 0 0 0 1 0 0 1 1 0 0 1 0 1 1 0 1 1 0 0 1 Sintesi minima (mappe di Karnaugh, ) u = y 1n y 0 n y 0 n+1 = y 0n * y 1 n+1 = y 1n XOR y 0 n

y 0 XOR y 1 FF FF * R* * R* u NOTA - Se si desidera aggiungere un segnale di ENABLE alla rete precedente mediante il metodo della sintesi formale? - E necessario ripetere tutti i passi precedenti (grafo, diagramma stati, ) - Noi non studieremo questo metodo

Soluzione 3.2 Una possibile soluzione si basa sull utilizzo di un contatore modulo 4. u1 COUNTER X4 u0 A_RES u1 u0 OUT A_RESET Perchè? Progettare un contatore modulo 4.

Contatore modulo 4 0 1 a1 a0 b1 b0 G c +1 s1 s0 Stato presente, coincidente con uscita in questo caso > rete F è l identità u0 FF * clock Stato futuro Modello di Moore OUT = u1 u0 u1 FF * clock Registro a 2 bit

Stato Stato Presente Futuro 00 -> 01 01 -> 10 10 -> 11 11 -> 00 00 -> 01...... Possiamo capire da questi valori come progettare la rete?

Contatore modulo 4 u1 u0 0 0 0 1 1 0 1 1 XOR FF u0 FF * * R* R* u1 A_RESET*

Contatore modulo 4 con comando di ENABLE (EN) 0 1 EN XOR 1 FF u0 FF * * R* R* 0 EN u1 A_RESET*

Contatore modulo 4 UP/OWN (U/*) u1 u0 0 0 0 1 1 0 1 1 XOR 1 FF u0 FF * * R* R* 0 U/* u1 A_RESET*

Contatore modulo 4 con LOA (L) i0 1 0 L XOR i1 0 FF u0 FF * * R* R* 1 L u1 A_RESET*

Logisim Evolution: contatore modulo 4 UP/OWN

Esercizi E3-1) Progettare un contatore modulo 4 dotato dei segnali U/*, EN e L nei seguenti 2 casi: a) segnale L prioritario rispetto a EN b) segnale EN prioritario rispetto a L In entrambi i casi si supponga che U/* sia il segnale meno prioritario tra i tre. E3-2) Progettare un contatore modulo 8 E3-3) Progettare un contatore modulo 5 utilizzando un contatore modulo 8

Esercizio 3 Progettare un registro a scorrimento (shift-register) a 3 bit A_RESET A_RESET O2 OUT2 IN IN? O1 OUT1 O0 OUT0

Soluzione IN A_RESET OUT2 OUT1 OUT0

OUT0 OUT1 OUT2 IN FF * R* FF * R* FF * R* A_RESET* A_RESET* A_RESET* Esercizi E4-1) Progettare uno shift-register dotato di comandi di enable EN e LOA (parallelo e prioritario rispetto all enable). E4-2) Utilizzando due shift-register a 4 bit e un contatore modulo 8: progettare un convertitore serie parallelo a 8 bit dotato di un segnale (A) che comunica l avventura ricezione degli 8 bit.

Esercizio 4 Progettare una rete sincrona dotata di un ingresso IN e di un uscita OUT. L uscita OUT deve asserirsi esattamente per un periodo di clock se viene rilevata una transizione da 0 a 1 del segnale di ingresso (monoimpulsore). Si noti che il segnale di ingresso potrebbe anche essere non sincrono (purché rispetti tempi di setup e hold) IN IN? OUT OUT IN OUT

Soluzione OUT IN FF * FF * IN OUT

Perchè questa soluzione è sbagliata (1)? OUT IN FF * IN OUT

Perchè questa soluzione è sbagliata (2)? OUT IN FF * IN OUT

Perchè questa soluzione è sbagliata (3)? IN FF * OUT IN OUT

Esercizio 5 Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati sull ingresso IN[7..0] mentre il segnale VAL era a livello logico 1 sono stati FFh (primo carattere della sequenza), 27h e 30h. Nel caso sia rilevata la sequenza FF-27-30, nel periodo di clock successivo a quello dell ultimo carattere ricevuto (30h), deve essere asserita l uscita OUT e rimanere tale fino a che non viene asserito il segnale (asincrono) di reset A_RESET. In seguito ad un reset deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere. VAL IN[7..0] VAL? IN[7..0] A_RESET OUT OUT A_RESET

IN[7 0] 30h FFh FFh 27h 55h 30h 30h 16h 80h A_RESET VAL OUT (1) (2) (3)

Soluzione 6.1 VAL 0 VAL 0 IN[7 0] 8 0 1 8 OE* 8 374 * R* 0 1 OE* 8 8 374 R* * A_RESET* A_RESET* 30h 27h FFh EC_30 EC_27 EC_FF VAL Il segnale EN condiziona l ultimo carattere della sequenza 1 0 FF R* * OUT A_RESET*

30h 27h FFh IN[7 0] 8 Soluzione 6.2 FF * R* 0 1 VAL FF * R* 0 1 VAL FF * R* 0 1 VAL EC_30 EC_27 EC_27_1T EC_FF EC_FF_2T A_RESET* A_RESET* A_RESET* FF * 1 0 OUT R* A_RESET* EC_30 VAL EC_27_1T EC_FF_2T

Soluzione 6.3 Una soluzione alternativa utilizzando un contatore dotato di comando di LOA 1 OUT O 3 EN IN[7 0] 8 ATTESO_30 ATTESO_27 ATTESO_FF O 2 O 1 O 0 EC 2:4 I 1 I 0 30h EC_30 0 0 27h EC_27 LOA ENABLE L EN I1 I0 COUNTER X4 1 0 FFh EC_FF A_RES* A_RESET* LOA = ATTESO_FF VAL EC_FF* + ATTESO_27 VAL EC_27* + ATTESO_30 VAL EC_30* ENABLE = ATTESO_FF VAL EC_FF + ATTESO_27 VAL EC_27 + ATTESO_30 VAL EC_30 C è un problema

.. nella soluzione della pagina precedente cosa accade se i caratteri ricevuti (con VAL=1) sono FF-FF-27-30? 1 OUT O 3 EN IN[7 0] 8 ATTESO_30 ATTESO_27 ATTESO_FF O 2 O 1 O 0 EC 2:4 I 1 I 0 30h EC_30 0 EC_FF 27h EC_27 LOA ENABLE L EN I1 I0 COUNTER X4 1 0 FFh EC_FF A_RES* A_RESET* LOA = ATTESO_FF VAL EC_FF* + ATTESO_27 VAL EC_27* + ATTESO_30 VAL EC_30* ENABLE = ATTESO_FF VAL EC_FF + ATTESO_27 VAL EC_27 + ATTESO_30 VAL EC_30

Esercizi E6-1) Riprogettare la rete dell esercizio 6 in modo che OUT assuma il valore logico 1 in seguito alla ricezione anche non consecutiva (con VAL=1) dei caratteri FFh, 27h e 30h. Ad esempio, OUT=1 se i caratteri ricevuti (mentre VAL=1) sono stati: FF-7A-80-9F-27-B2-30-

Esercizio 6 Modificare l esercizio precedente in modo che, in seguito al rilevamento della sequenza, l uscita OUT assuma il valore logico 1 per un solo periodo di clock. Appena ricevuta una sequenza completa il controllo dei caratteri in ingresso deve riprendere immediatamente. A_RESET A_RESET EN IN[7..0] EN IN[7..0]? OUT OUT

Soluzione 7.1 IN[7 0] 30h FFh FFh 27h 55h 30h 30h 16h 80h A_RESET EN OUT (1) (2) (3)

EN EN IN[7 0] 8 0 1 8 8 374 * R* 0 1 8 8 374 R* * A_RESET* A_RESET* 30h 27h FFh EN 1 0 FF R* * OUT A_RESET*

Soluzione 7.2 Rispetto all esercizio 6.2 è sufficiente modificare il comando di LOA facendo in modo che LOA=1 quando OUT=1? 1 OUT O 3 EN IN[7 0] 8 ATTESO_30 ATTESO_27 ATTESO_FF O 2 O 1 O 0 EC 2:4 I 0 I 1 30h EC_30 0 EN EC_FF 27h EC_27 LOA ENABLE L EN I1 I0 COUNTER X4 1 0 FFh EC_FF A_RES* A_RESET LOA = ATTESO_FF EN EC_FF* + ATTESO_27 EN EC_27* + ATTESO_30 EN EC_30* + OUT ENABLE = ATTESO_FF EN EC_FF + ATTESO_27 EN EC_27 + ATTESO_30 EN EC_30 Cosa accade se (con EN=1) la sequenza è 45-FF-27-30-FF-27-30-?

Esercizi E6-1) Riprogettare la rete dell esercizio 6 in modo che OUT=1 in seguito alla ricezione anche non consecutiva (con EN=1) dei caratteri FFh, 27h e 30h. Ad esempio, OUT=1 se i caratteri ricevuti mentre EN=1 sono stati: FF-7A-80-9F-27-B2-30- E6-2) Cosa accade alle soluzioni 6.1 e 6.2 se (mentre EN=1) la sequenza è: 45-FF-27-30-FF-27-30-?

Esercizio 7 Progettare un rete che controlla se gli ultimi tre caratteri che si sono presentati in ingresso IN[7..0] mentre il segnale EN=1 sono stati FFh (primo carattere della sequenza), 27h e 30h. Nel caso sia rilevata tale sequenza, due periodi di clock successivi a quello dell ultimo carattere della sequenza ricevuto deve essere asserita l uscita OUT e rimanere tale fino a che il segnale di reset (asincrono) A_RESET non assume il valore logico 1. In seguito ad un reset (asincrono) la rete deve riprendere immediatamente il controllo della sequenza in ingresso come se non fosse stato ricevuto alcun carattere. A_RESET A_RESET EN IN[7..0] EN IN[7..0]? OUT OUT

IN[7 0] 30h FFh FFh 27h 55h 30h 18h 16h 80h A_RESET EN OUT (1) (2) (3)

Soluzione 8.1 EN EN IN[7 0] 8 0 1 8 8 374 * R* 0 1 8 8 374 R* * A_RESET* A_RESET* 30h 27h FFh EN Il segnale EN condiziona l ultimo carattere della sequenza 1 0 FF R* * FF R* * OUT A_RESET* A_RESET*

Soluzione 8.2 1 OUT FF OUT_1 O 3 EN IN[7 0] 8 * R* A_RESET* ATTESO_30 ATTESO_27 ATTESO_FF O 2 O 1 O 0 EC 2:4 I 0 I 1 30h EC_30 0 EC_FF 27h EC_27 LOA ENABLE L EN I1 I0 COUNTER X4 1 0 FFh EC_FF A_RES* A_RESET* LOA = (ATTESO_FF EN EC_FF* + ATTESO_27 EN EC_27* + ATTESO_30 EN EC_30*) OUT_1* ENABLE = (ATTESO_FF EN EC_FF + ATTESO_27 EN EC_27 + ATTESO_30 EN EC_30) OUT_1*

Esercizio 8 Progettare una rete dotata di tre ingressi E, A/I*, A_RES e un uscita OUT. Il segnale di ingresso A/I* influisce sulla rete solo se contemporaneamente E=1. L uscita della rete deve andare al livello logico 1 per un periodo di clock se viene rilevato per cinque volte, anche non consecutive, il valore 1 del segnale A/I* in presenza del segnale E=1. Ogni volta che il segnale A/ I* assume il valore 0 (con E=1) deve essere ridotto di uno il numero di eventi rilevati fino a quel momento. Successivamente a un reset (segnale asincrono) o nel caso nessun evento sia stato ancora rilevato (o che il numero di incrementi sia stato compensato da un numero equivalente di decrementi) la rete deve rimanere nello stato 000 anche se A/I*=0 ed E=1. opo avere rilevato cinque eventi la rete deve riprendere immediatamente l analisi degli ingressi. A/I* A/I* E A_RESET CLO E A_RES? OUT OUT

Soluzione 9.1 STATO_0 = O2* O1* O0* CONTEGGIO_INIETRO = (A/I*)* ENABLE_COUNTER = E (STATO_0 CONTEGGIO_INIETRO)* LOA = OUT = O2 O0 E A/I* Il conteggio è bloccato (EN=0), anche con E=1, se il contatore si trova nello stato 000 e il comando OWN è asserito (A/ I*=0) 0 0 ENABLE_COUNTER A/I* LOA EN U/* LOA I 2 I 1 I 0 O 2 COUNTER X 8 O 1 O 0 O 2 O 1 O 0 A_RES CLO A_RESET

Contatore modulo 8 con comando di UP/OWN*

Soluzione 9.2 E A/I* 0 0 A/I* O 2 O 1 O 0 E A/I* OUT EN U/* LOA I 2 I 1 I 0 O 2 COUNTER X 8 O 1 O 0 OUT A_RES O 1 non è necessario CLO A_RESET

Soluzione 9.3 Soluzione mediante sintesi formale: grafo -> tabella di flusso -> tabella delle transizioni,... NON SI USA!!!! E A/I* 0 1 0 0 0 0 0 1 1 1 1 1 1 1 1 A,0 B,0 C,0,0 E,0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 1 F,1

Esercizio 9 Utilizzando un microprocessore dotato di un bus indirizzi a 16 bit e di un bus dati a 8 bit: mappare nello parte bassa dello spazio di indirizzamento 12k di RAM e nella parte alta 16k di EPROM.

Soluzione A 15..A 12 A 11..A 8 A 7..A 4 A 3.. A 0 0000 0000 0000 0000 (0000h) 0001 1111 1111 1111 (1FFFh) RAM_1 (8k) 0010 0000 0000 0000 (2000h) 0010 0111 1111 1111 (27FFh) 0010 1000 0000 0000 (2800h) 0010 1111 1111 1111 (2FFFh) RAM_2 (2k) RAM_3 (2k) RAM (12K) 0000h 2FFFh Segnali di decodifica: CS_RAM_1=A15* A13* CS_RAM_2=A15* A13 A11* CS_RAM_3=A15* A13 A11 CS_EPROM=A15 1100 0000 0000 0000 (C000h) C000h EPROM (16k) EPROM (16K) 1111 1111 1111 1111 (FFFFh) FFFFh

NOTA - La codifica semplificata implica l attivazione dei segnali di selezioni anche per indirizzi diversi da quelli in cui sono realmente presenti i dispositivi di memoria. - Il segnale CS_EPROM si attiva per ogni indirizzo maggiore o uguale di 8000h (seconda metà dello spazio di indirizzamento) 0000h CS_EPROM=A15 Indirizzi di memoria con A15=1 EPROM (16K) 8000h EPROM (16K) C000h FFFFh

- Il segnale CS_RAM_1 si attiva per ogni indirizzo compreso tra 0000h e 7FFFh (A15=0) per il quale A13=0: CS_RAM_1=A15* A13* uindi, CS_RAM_1=1 per entrambi i seguenti intervalli di memoria: A 15..A 12 A 11..A 8 A 7..A 4 A 3... A 0 0000 0000 0000 0000 (0000h) 0001 1111 1111 1111 (1FFFh) RAM_1 (8k) RAM_1 (8k) 0000h 1FFFh 4000h 5FFFh 8000h A 15..A 12 A 11..A 8 A 7..A 4 A 3... A 0 0100 0000 0000 0000 (4000h) 0101 1111 1111 1111 (5FFFh) FFFFh

- Il segnale CS_RAM_2 si attiva per ogni indirizzo compreso tra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=0 : CS_RAM_2=A15* A13 A11* uindi, CS_RAM_2=1 per i seguenti quattro intervalli di memoria: A 15..A 12 A 11..A 8 A 7..A 4 A 3... A 0 0010 0000 0000 0000 (2000h) 0010 0111 1111 1111 (27FFh) A 15..A 12 A 11..A 8 A 7..A 4 A 3... A 0 0011 0000 0000 0000 (3000h) 0011 0111 1111 1111 (37FFh) A 15..A 12 A 11..A 8 A 7..A 4 A 3... A 0 0110 0000 0000 0000 (6000h) 0110 0111 1111 1111 (67FFh) RAM_2 (2k) RAM_2 (2k) RAM_2 (2k) RAM_2 (2k) 0000h 2000h 3000h 4000h 6000h 7000h 8000h A 15..A 12 A 11..A 8 A 7..A 4 A 3... A 0 0111 0000 0000 0000 (7000h) 0111 0111 1111 1111 (77FFh) FFFFh

- Il segnale CS_RAM_3 si attiva per ogni indirizzo compreso tra 0000h e 7FFFh (A15=0) per il quale A13=1 e A11=1 : CS_RAM_3=A15* A13 A11 uindi, CS_RAM_3=1 per i seguenti quattro intervalli di memoria: A 15..A 12 A 11..A 8 A 7..A 4 A 3... A 0 0010 1000 0000 0000 (2800h) 0010 1111 1111 1111 (2FFFh) A 15..A 12 A 11..A 8 A 7..A 4 A 3... A 0 0011 1000 0000 0000 (3800h) 0011 1111 1111 1111 (3FFFh) A 15..A 12 A 11..A 8 A 7..A 4 A 3... A 0 0110 1000 0000 0000 (6800h) 0110 1111 1111 1111 (6FFFh) A 15..A 12 A 11..A 8 A 7..A 4 A 3... A 0 0111 1000 0000 0000 (7800h) 0111 1111 1111 1111 (7FFFh) RAM_3 (2k) RAM_3 (2k) RAM_3 (2k) RAM_3 (2k) 0000h 2800h 3800h 6800h 7800h FFFFh

Effetto di replica nella mappatura in memoria dovuto alla decodifica semplificata. Nella figura seguente sono indicati solo gli indirizzi iniziali. RAM_1 (8k) RAM_2 (2k) RAM_3 (2k) RAM_2 (2k) RAM_3 (2k) RAM_1 (8k) RAM_2 (2k) RAM_3 (2k) RAM_2 (2k) RAM_3 (2k) 0000h 2000h 2800h 3000h 3800h 4000h 6000h 6800h 7000h 7800h 8000h EPROM (16K) C000h EPROM (16K) FFFFh

Esercizio 11 Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit: - mappare nello parte bassa dello spazio di indirizzamento 32k di RAM e nella parte alta 32k di EPROM Nel sistema sono presenti anche due dispositivi di I/O denominati 1 (dotato di due registri interni) e 2 (dotato di quattro registri interni): - mappare in memoria anche i due dispositivi di I/O 1 e 2 agli indirizzi 2000h e 1000h Osservando che esiste una sovrapposizione tra gli indirizzi di una memoria e dei due dispositivi di IO, si scrivano i CS, in forma semplificata, di tutti i dispositivi presenti nel sistema riducendo al minimo gli indirizzi sottratti dai dispositivi di IO alla memoria.

Soluzione RAM: 1 chip da 32KB RAM (00000h->07FFFh) CS_RAM = BA19* CS_1* CS_2* EPROM: 1 chip da 32KB EPROM (F8000h FFFFFh) CS_EPROM = BA19 1: Mappato in memoria all indirizzo 02000h, occupa 2 locazioni (A0) nello spazio di indirizzamento. CS_1 = BA19* BA14* BA13 BA12* BA11* BA10* BA9* BA8* BA7* BA6* BA5* BA4* BA3* BA2* BA1* 2: Mappato in memoria all indirizzo 01000h, occupa 4 locazioni (A1A0) nello spazio di indirizzamento. CS_2 = BA19* BA14* BA13* BA12 BA11* BA10* BA9* BA8* BA7* BA6* BA5* BA4* BA3* BA2*

Esercizio 12 Utilizzando un microprocessore dotato di un bus indirizzi a 20 bit e di un bus dati a 8 bit: - mappare 32k di RAM nella parte bassa dello spazio di indirizzamento, 32k di RAM a partire dall indirizzo 1C000h e 64k EPROM nella parte alta dello spazio di indirizzamento

Soluzione 00000h 10000h 20000h 30000h RAM_1 (32k) RAM_2 (32k) 00000h 0000 0000 0000 0000 0000 07FFFh 0000 0111 1111 1111 1111 1C000h 0001 1100 0000 0000 0000 23FFFh 0010 0011 1111 1111 1111 CS_RAM_1=A19* A17* A16* CS_RAM_2=A19* (A17 + A16) oppure CS_RAM_2=A19* CS_RAM_1* CS_EPROM=A19 F0000h FFFFFh EPROM (64k) F0000h 1111 0000 0000 0000 0000 FFFFFh 1011 1111 1111 1111 1111

Esercizio 13 Progettare una rete che genera il codice Johnson a 3 bit (000->100->110->111->011->001->000-> ). A_RESET IN? OUT2 OUT1 OUT0

Soluzione OUT0 OUT1 OUT2 FF * R* FF * R* FF * R* A_RESET* A_RESET* A_RESET* NOTA - Poiché configurazioni adiacenti del codice Johnson differiscono di un solo bit, l output del contatore può essere utilizzato per generare forme d onda prive di alee.

Esercizio 14 Progettare una rete sincrona che genera la sequenza periodica di 3 bit seguente (contatore ad anello): 100->010->001->100->. La rete è dotata di un comando di start asincrono (A_START) A_START? OUT2 OUT1 OUT0

Soluzione OUT0 OUT1 1 1 OUT2 S* S* S* FF FF FF * R* * R* * R* A_START 1

Esercizio 15 Progettare un contatore modulo 2 n -1 utilizzando uno shift-register a n bit.

Soluzione Nel caso n=2, OUT0 OUT1 1 1 S* S* FF FF * R* * R* A_RESET

Esercizio 16 Progettare una rete che trasferisce in un FF un bit memorizzato in un registro edge triggered a 4 bit. Il bit da trasferire è individuato mediante i due segnali di selezione S1 ed S0. La scrittura nel registro a 4 bit è abilitata dal segnale WER mentre la scrittura nel FF è abilitata dal segnale WEF.

Soluzione S1 S0 1 WER IN[3..0] 4 OE WE Reg. 4 bit [3..0] O3 O2 O1 O0 3 2 1 0 0 1 WEF FF * OUT

Esercizio 17 Progettare una rete sincrona che quando il segnale ENABLE è attivo trasferisce un bit memorizzato in un registro edge triggered a 4 bit (dotato di comandi WE e OE) verso uno dei quattro flip-flop denominati FF3, FF2, FF1, FF0 nell ipotesi che: - sia presente, oltre ai segnali che codificano la sorgente (S1,S0) e la destinazione (1,0) del trasferimento, anche un ulteriore segnale denominato WEF che abilita la scrittura nei flip-flop e WER che abilita la scrittura nel registro - il collegamento tra tutte le quattro uscite del registro edge triggered e gli ingressi dei flipflop deve essere realizzato mediante un unico filo - se il segnale ENABLE non è attivo le uscite del registro a 4 bit devono essere elettricamente disconnesse dal resto della rete

Soluzione Percorso logico dei dati nel caso: S1S0 = 11 10 = 10 ENABLE = 1 FF3 * OUT3 FF2 * OUT2 IN[3..0] 4 OE WE Reg. 4 bit [3..0] O3 O2 O1 O0 FF1 * OUT1 FF0 * OUT0

Reg. 4 bit WER IN[3..0] OUT0 1 4 OE WE [3..0] O3 O2 O1 O0 S1 S0 0 1 FF * WEF EC 2:4 3 2 1 0 I 0 I 1 ENABLE EN 1 0 EC 2:4 3 2 1 0 I 0 I 1 ENABLE EN 0 1 FF * OUT1 0 1 FF * 0 1 FF * OUT2 OUT3 EC3 EC2 EC1 EC0 EC0 EC1 EC2 EC3

Esercizio E possibile modificare la soluzione dell esercizio precedente in modo da utilizzare un MUX a 4 vie e un solo buffer tri-state in sostituzione dei 4 buffer tri-state?