Calcolatori Elettronici Parte IV Registri Progetto di Macchine Sincrone Contatori Registri a scorrimento Registri T R Un registro atto a memorizzare un dato tipo T a cardinalità k è una MS avente: k stati di uscita (u1,u2,…,uk) ciascuno associato ad un valore da memorizzare t stati di ingresso (t>k) , T suddiviso in due sottoinsiemi: XN, con X=(x1,x2,…,xk) gli ingressi attivi per la memorizzazione; N=(n1,n2,…,nm) ingressi neutri per “mantenere l’uscita del registro, m1 U T1 T1 T1 ….. u1 u1 u1 nj conserva lo stato uj=f(xj) nel caso più generale Ipotesi Sequenza di ingresso di natura impulsiva Basi corrispondenti agli ingressi neutri b1x1b1 ….. b2x2b2 … b3x3b3 Registro a Sincronizzazione esterna Registro autosincronizzato Registro a S. E. I s I=(l1,l2,…,lk) s=(0,1) R s=0 q1 q2 q3 … qk n1 q1 q2 q3 … qk n2 q1 q2 q3 … qk s=1 nk .. q1 .. q2 .. q3 … … qk x1 q1 q1 q1 … q1 x2 q2 q2 q2 … q2 xk .. qk .. qk .. qk … … .. qk u u1 u2 u3 .. uk Registro autosincronizzato X=(x1,x2,…,xk) N=(n) q1 q2 q3 … qk Caso concreto: unica base e k ingressi Puramente impulsivi Gli istanti di caricamento sono determinati da uno degli impulsi n q1 q2 q3 … qk x1 q1 q1 q1 … q1 x2 q2 q2 q2 … q2 xk .. qk .. qk .. qk … … .. qk u u1 u2 u3 .. uk Tempificazione dei Registri Registri “latch” Catturano l’ingresso per tutti il tempo in cui è presente una variabile impulsiva attiva È valido finchè effettivamente gli ingressi sono impulsivi Registri a “derivazione del fronte” Es. Accoppiamento capacitivo .. Per ottenere impulsi sufficientemente brevi Tempificazione dei Registri (2) Registri “edge triggered” La variazione dell’uscita avviene in corrispondenza di una variazione di livello di una variabile impulsiva reale Registri “Master Slave” Modelli reali di Macchine Sincrone (1) D R P Q MC u I R è usato per memorizzare gli stati della macchina I impulsivi P uscite di posizionamento dello stato, impulsive e p=p(q,i) U a livelli o imp. D ritardo di posizionamento del registro Modelli reali di Macchine Sincrone (2) D Q I R MC P u Neutri Q0 Q0 Q1 Q1 Q2 Q2 … … … … Qn Qn Attivi Q0 Qx Qy … … Qz Stabili | p. sincrona Tempificazione (1) q i p D Occorre garantire che il ritardo D nel posizionamento dei registri sia maggiore della durata degli impulsi, di modo che lo stato non cambi durante la fase di posizionamento, d<D Tempificazione (1) q i d p D Occorre garantire che il ritardo D nel posizionamento dei registri sia maggiore della durata degli impulsi, di modo che lo stato non cambi durante la fase di posizionamento, d<D Modello Sincronizzato dall’esterno l a f (VL) s c s. a f (VL) R k i0 i D Q I ik i P' P' (Q, I ' ) MC P u Non esistono problemi tipici delle Macchine a livelli (alee multiple, statiche) In quanto l’uscita P’ risulta inattiva (in assenza di impulso s) per il caricamento del registro occorre garantire che la variazione dei livelli non sia Sincrona con il fronte attivo di s es.. Apparecchiatura di clock a due fasi Modello Sincronizzato dall’esterno: uscite imp. s R D Q I MC P u Esercizio Si costruisca una rete nella quale entrano serialmente i bit di un codice decimale 8-4-2-1 a partire dal bit meno significativo e dalla quale esca un segnale che individui se i quattro bit costituiscono o meno una delle 10 parole-codice previste. 0110 ? Parola vera Parola falsa Specifiche Si assegna ad un segnale a livelli x la rappresentazione del bit del codice, e ad un clock la tempificazione. In sincronia con il 4 bit, z = 1 indica la correttezza del codice. Macchina Sincrona a sincronizzazione esterna Descrizione del Problema z=1 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 z=0 1010 1011 1100 1101 1110 1111 0 1/0 0/0 1 2 0/0 1/0 3 1/0 7 1/0 4 0/0 8 1/0 9 0/0 6 5 0/0 1/0 0/0 10 11 12 1/0 13 1/0,0/1 1,0/1 1/0,0/1 1/0,0/1 1/0,0/1 1/0,0/1 1/0,0/1 0 0,1/1 0/0 14 Tabella Stato/trans e minim. stati 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 1/0 3/0 5/0 7/0 9/0 11/0 13/0 0/0 0/0 0/0 0/1 0/0 0/0 0/0 0/1 0 2/0 4/0 6/0 8/0 10/0 12/0 14/0 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0 1 2 3 4 5 6 7 8 9 11 12 13 10 14 1 1/0 3/0 5/0 7/0 9/0 11/0 13/0 0/0 0/0 0/0 0/0 0/0 0/0 0/1 0/1 0 2/0 4/0 6/0 8/0 10/0 12/0 14/0 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 Paul&Unger 0 1 2 3 4 5 6 7 10 1 1/0 3/0 5/0 7/0 9/0 11/0 13/0 0/0 0/1 0 2/0 4/0 6/0 7/0 10/0 7/0 10/0 0/1 0/1 1 2 3 4 5 6 7 10 4 6 3 5 7 1 10 1-3;2-4 1-5;2-6 1-7;2-7 1-7;2-10 1-7;2-7 1-7;2-10 3-5;4-6 3-7;4-7 3-7;4-10 3-7;4-7 3-7;4-10 0 1 2 5-7;6-7 5-7;6-10 07-ott 5-7;6-7 5-7;6-10 07-ott 2 S0= S1= S2= S3= S4= S5= 3 07-ott 07-ott 4 5 0 1,2 3,5 4,6 7,8,9,11,12,13 10,14 6 7 Macchina a S.R. S0 S1 S2 S3 S4 S5 1 S1/0 S2/0 S4/0 S4/0 S0/0 S0/1 0 S1/0 S3/0 S4/0 S5/0 S0/1 S0/1 0 0,1 1 1 0 2 3 1 0,1 0 4 5 0/1 1/0 0 0/1 1/1 Codifica degli Stati Codificando gli stati (nell’ordine: y3y2y1) S0 = 101 S1 = 010 S2 = 111 S3 = 011 S4 = 110 S5 = 000 con Tabella in codice 000 0 101/1 1 101/1 001 - - 010 011 011 011 000 110 100 - - 101 010 010 110 101/1 101 111 110 110 Progetto combinatorio per il posizionamento dei FF SR JK D S R J K D 00 0 - 0 - 0 01 1 0 1 - 1 10 0 1 - 1 0 11 - 0 - 0 1 Infatti, per RS e T … RS 00 S0 S0 01 S1 11 - 10 S0 S1 S1 S1 - S0 S T Fp 0 0 1 1 1 1 Infatti, per D e JK … aD 00 S0 S0 01 S0 11 S1 10 S0 S1 S1 S1 S1 S0 S A=1 kj 00 S0 S0 01 S1 11 S1 10 S0 S1 S1 S1 S0 S0 S Tornando al progetto … Scegliendo Flip Flop di tipo JK, bisognerà progettare 6 segnali di posizionamento: J1= J1( y3y2y1x), K1= K1(y3y2y1x) J2= J2(y3y2y1x), K2= K2(y3y2y1x) J3= J3(y3y2y1x), K3= K3(y3y2y1x) … ovvero per JK JK J K 00 0 - 01 1 - 10 - 1 11 - 0 Posso costruire mappe di Karnaugh per i segnali di posizionamento del JK e per le uscite! Per il primo FF JK ho: y1x y3y2 y1x 00 01 00 11 1 11 - 10 - 01 1 1 - - 11 10 1 1 - - - - - - J1 = 1 y3y2 00 01 00 -1 - 11 - 10 - 01 - - 1 1 11 10 - - 1 1 - - 1 1 K1 = 1 Per il secondo FF JK ho: y1x y1x 00 y3y2 01 00 11 - 10 - y3y2 00 01 - - - - 01 11 10 - - - - - - 1 1 11 10 J2 ha diverse f.m. eq., Scelgo J2=y3 00 - 01 - 11 - 10 1 1 1 - - - - K 2 y1 y3 x y1 y3 Per il terzo FF JK ho: y1x y3y2 y1x 00 01 00 11 1 11 - 1 1 - - - - - - - - 01 11 10 J 3 y2 x 10 - y3y2 00 01 00 -1 - 11 - 10 - 01 - - - - 11 10 - - 1 1 K 3 y2 Per le uscite …. Per quanto attiene le uscite, se si desidera un’uscita impulsiva, si ha che z’ = c z (y3y2y1x) z si ottiene dalla seguente mappa y1x y3y2 00 01 11 10 00 1 1 01 11 10 1 - - z c.( y3 y1 x y1 y2 ) Circuito Contatori Macchine fondamentali Aritmetica Funzioni di controllo Diversi tipi di contatori Tempificazione Segnali di ingresso uscita Contatore Astratto Generalizzato U u/d div EN Counter-mod-M cp r I l rp Macchina sincrona .. Anche se la tempificazione interna può essere asincrona Esempio (1) Not(cp) Q0/UO cp cp Not(cp) Q1/U1 Not(cp) Q3/U3 cp cp Q2/U2 Not(cp) Esempio (2) cp 0 1 2 3 0 stato div rp Contatore Astratto Generalizzato U u/d EN cp div Counter-mod-M r I l Cp rp Conteggio u/d: up o down EN: enable generale al conteggio div Divisore Ho tutti 0 tranne un 1 tra i conteggi rp Ripple Asserito se ho “carry” oppure “borrow” Contatore Astratto Generalizzato (2) U u/d EN div Counter-mod-M cp rp U Uscita Ingresso omogeneo con U I L r I l Load: se attivo inizializza ad I l’uscita U r Reset, se attivo produce l’azzeramento di U P: preset, pone il valoe M-1 ad U Sincroni e Asincroni Asincrono Macchina sequenziale avente come ingresso una variabile di conteggio, della quale conta solo i fronti di salita, di discesa oppure entrambi Almeno uno dei bistabili non riceve in ingresso il segnale di conteggio ed il suo eventuale cambiamento dis tato è determinato solo dalla sua funzione stato prossimo, che dipende dallo stato degli altri bistabili Sincrono Macchina di Moore Tutti i bistabili che costituiscono la memoria del contatore ricevono simultaneamente in ingresso il segnale di conteggio e tutti quelli che devono commutare commutano simultaneamente Contatori Asincroni ( opp ) 01 2 3 4 5 6 7 0 0 1 u 0 0 1 0 1 2 1 0 2 2 3 1 3 4 3 1 4 4 5 2 5 6 5 2 6 6 7 3 7 0 7 3 Un contatore asincrono mod-n che conti i soli fronti di salita o di discesa può essere realizzato con 2.n stati Contatori Asincroni ( ) 01 2 3 0 0 1 u 0 0 1 0 1 2 1 1 2 2 3 2 3 0 3 3 Un contatore asincrono mod-n che conti i fronti di salita e di discesa può essere realizzato con n stati, se n è pari Contatori Asincroni ( opp ) 01 2 3 4 5 0 1 2 0 1 u 0 0 1 0 1 2 1 1 2 2 3 2 3 4 3 0 4 4 5 1 5 0 5 2 Un contatore asincrono mod-n che conti i fronti di salita e di discesa può essere realizzato con 2.n stati, se n è dispari Il ritorno allo stato iniziale È possibile solo se L’ultimo stato è dispari Ripple Counter rp 0 rp rp cp mod10 1 cp mod10 … il contatore del gas …. Contatore asincrono mod bk 9 cp mod10 3 cont. mod. 10 Mod 103 … non tutte le variazioni di stato dei flip flop sono sincrone con cp Ripple counter mod 2k Contatore Mod-23 Ripple counter JK con J=K=1 funziona come T, contatore mod-2 Il ripple viene generato quando raggiungo 1. Collegamento in cascata di macchine asincrone Contatori sincroni 000 001 010 011 100 101 110 111 LSB: 0101 2 c.: 0011, passa Da 0 a 1 quando la 1.c. È 1. MSB 000 0 11110 Passa Da 0 a 1 quando la 2.c. è 1. Possono essere progettati con la teoria classica delle macchine sincrone pilotate da un impulso di sincronismo. Contatori sincroni 000 001 010 011 100 101 110 111 Usando ff T sincroni come v. di stato, ho le funzioni di posizionamento: T0=1; T1= Q0; T2= Q0 Q1 Generalizzando… Tk=Q0 Q1 ….. Qk-1 Registri a Scorrimento Parallel out In/out in a out Parallel In/Out b Parallel in Ingresso e uscita seriale a abilitazione allo shift Abilitato da b Shift logico e aritmetico logico 1 1 1 0 0 0 1 1 0 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 1 1 aritmetico Proprietà dei registri a scorrimento Right Shift Regis ter Left Shift Regis ter 0 0 0 0 1 0 0 1 9 0 0 0 0 0 1 0 0 9 DIV 2 = 4 0 0 0 1 0 0 1 0 9*2 = 18 Serializzazione e Rotate b 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 Rotate Left Rotate Right Shift Circolari usati come contatori 10000000 01000000 00100000 00010000 00001000 00000100 00000010 00000001 Shift register con 8 bit contatore modulo 8 Contatori Johnson 00000000 10000000 11000000 11100000 11110000 11111000 11111100 11111110 11111111 01111111 00111111 00011111 00001111 00000111 00000011 00000001 1 1 0 0 0 0 0 0 Cont. Mod-16 Progetto di Sistemi Not(go) go x1 b0 go x2 A done B go done Not(done) bn Parallelo, Serie, Retroazione M1 M1 M2 serie w w M1 M2 parallelo M2 feedback Esempio riconoscitore 8421 a 0 0,1 b c d 1 1 0 2 3 1 0,1 0 4 5 0/1 1/0 0 0/1 1/1 Contatore mod-4 (abcd) Un dispositivo che mi dice se sto a destra o sinistra del grafo a seconda degli ingressi Ovvero x clock a b c d b c d a counter Mod-4 z0 M z1 Counter mod-4 a=(0); b=(1); c=(2,3); d=(4,5) A=(0,1,2,4); B=(3,5) Ovvero … a 0 0,1 b c d 1 1 1a 0 3 1 0b 1c 0c B - - - - 5 0 1d 0d A/0 B/0 A/0 A/1 0 4 0/1 1/0 1b A A/0 A/0 A/0 B/0 A/0 A/0 A/0 A/1 2 0,1 0a 0/1 1/1 A=(0,1,2,4); B=(3,5) Codifica: a=00 B=01 c=10 d=11 A=0 B=1