La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Reti combinatorie I lucidi da 2 a 9 sono presi dal corso di Reti Logiche LA tenuto nell’AA 2008-2009 dal prof. S.Mattoccia.

Presentazioni simili


Presentazione sul tema: "Reti combinatorie I lucidi da 2 a 9 sono presi dal corso di Reti Logiche LA tenuto nell’AA 2008-2009 dal prof. S.Mattoccia."— Transcript della presentazione:

1 Reti combinatorie I lucidi da 2 a 9 sono presi dal corso di Reti Logiche LA tenuto nell’AA dal prof. S.Mattoccia

2 Introduzione alle macchine digitali
Alcuni esempi di sistemi digitali Computer Foto/Videocamere Telefonini, lettori MP3 Ascensori, antifurti Automobili (iniezione, ABS..) .... Cosa sono i sistemi digitali?

3 Sistemi digitali Sistemi fisici che impiegano grandezze fisiche contraddistinte da un insieme discreto (non infinito) di valori “significativi” (segnali digitali) per rappresentare, elaborare e comunicare informazioni SEGNALE: Grandezza fisica variabile nel tempo il cui andamento o forma d’onda rappresenta l’informazione che la parte sorgente vuole inviare alla parte destinazione SEGNALI ANALOGICI: ogni variazione della grandezza fisica modifica l’informazione trasportata SEGNALI DIGITALI: solo a certe variazioni corrisponde una modifica di “significato”

4 Segnali Analogici e Digitali
“rumore” Segnale analogico Segnale digitale (discretizzato) L H Segnale binario. I due livelli H e L convenzionalmente sono indicati come 1 e 0 (senza significato numerico !!!)

5 Interruttori I sistemi digitali sono composti da (una molteplicità di) interruttori Dispositivo ON/OFF Interruttore elettronico (dimensioni, costo, velocità, dissipazione,..) + Vcc Vu Ii Ii: {Imin,0} Vu: {0, Vcc} Causa Effetto

6 Esempio: misurare il livello del carburante in un’automobile
Sensore (ON/OFF) Variabile binaria (Bit) 8/8 4/4 7/8 6/8 3/4 5/8 4/8 2/4 3/8 2/8 Riserva ? 1/4 1/8 1 bit – 2 livelli 2 bit – 4 livelli 3 bit – 8 livelli

7 Conversioni A/D D/A Ex: posizione Ex: pressione della valvola
del vapore Computer Conversione Analogica/Digitale e Digitale/Analogica Uno o entrambi i convertitori possono essere assenti. Ad esempio step-motor, scanner, stampante etc.

8 Esempio: telefonia digitale
PCM 1010 1010 A/D RL TX RX RL D/A IP PC PC 1010 1010

9 Codifica dell’informazione
Scena reale Immagine digitale acquisita dal sensore Valori discreti R  {0,1,2,..,244,255} G  {0,1,2,..,244,255} B  {0,1,2,..,244,255}

10 Codici e Numeri Un codice è un insieme di simboli le cui combinazioni individuano oggetti diversi. Esempio il codice Morse (punto e linea), il codice a barre etc. Un sistema numerico posizionale (come quello utilizzato nei nostri sistemi di calcolo) è un insieme di simboli ciascuno dei quali rappresenta una quantità numerica (ad esempio 5, 7, 3 etc.) e il cui significato dipende dalla posizione 3547 = 3 x x x x 100 Un codice binario è un codice che utilizza solo due simboli (ad esempio a e b). Un insieme di n di questi simboli è in grado di individuare 2n differenti oggetti (combinazioni con ripetizione). Un codice ternario usa tre simboli (ad esempio a e b e g ). Con n di questi simboli posso individuare 3n oggetti. E così via ….. Ovviamente per codificate un numero di oggetti N che non è potenza di 2 sono necessari almeno z bit ove z è il primo intero superiore al log2(N) Naturalmente esistono codici ridondanti (ad esempio il codice 1 su N ove ogni configurazione ha un solo bit a 1). Con N bit si individuano N oggetti (ex: , etc.) N.B. Esistono sistemi numerici NON posizionali: ad esempio i numeri romani

11 Codici binari Molto spesso (praticamente sempre) i due simboli utilizzati per un codice binario sono 0 e 1, in questo caso assolutamente privi di significato numerico (sono equivalenti a basso/alto, rosso/verde, aperto/chiuso, a/b etc.). In questo contesto in un supermercato la stringa potrebbe indicare il pane e la stringa il latte. I simboli 0 e 1 si chiamano bit (ovvero binary digit) Esiste però anche un sistema numerico binario posizionale nel quale gli stessi simboli 0 e 1 hanno un significato numerico. Ad esempio in questo contesto sta a indicare 1 x x x x x x 20 = = 3710 Nel sistema numerico binario è ovviamente possibile eseguire tutte le operazioni aritmetiche

12 Numeri binari Le potenze di 2: 1,2,4,8,16,32,64,128,256,512,1024….
Anche per i valori numerici 0 e 1 si usa la parola bit Con n bit si copre il range di numeri n-1 (c’è anche lo zero …) Codici alfanumerici: ex codice ASCII, codice a 7 bit (v. dopo)

13 Operazioni elementari con numeri binari
Riporto = = Prestito = =

14 Operazioni elementari con numeri binari
x x 11 101101= = 000000== 101101=== La divisione si effettua con criteri similari

15 Numeri binari negativi
Molte diverse codifiche: quella universalmente usata è il complemento a 2 Regola: dato un numero binario positivo il suo equivalente negativo si ottiene sostituendo gli uni con gli zeri e viceversa e sommando infine 1 I numeri negativi hanno un “1” nella cifra più significativa (ovviamente in un contesto di numeri relativi) e quelli positivi (fra cui anche lo zero che però è un numero “particolare”) hanno uno “0” nella cifra più significativa. Procedimento identico per la conversione dei numeri negativi Le operazioni elementari con numeri in complemento a 2 danno come risultato ancora numeri in complemento a 2 (verifica semplice per somma e sottrazione e più complicata per la moltiplicazione e divisione – algoritmo di Booth) => = => -37 => = => +37

16 Numeri binari negativi
= = => = Nel caso di riporto oltre l’ultima bit significativo quest’ultimo va scartato (per motivi fisici nei computer) = = ERRORE – OVERFLOW |-83| > 63 Dalla somma di due numeri negativi un numero positivo !!! Errore di “overflow” nei computer Il complemento a 2 funziona nell’ambito dell’intervallo di riferimento (nel nostro caso i numeri 0-|63| ovvero 6 bit più il segno e quindi da -64 fino a +63)

17 Numeri binari negativi
Lo zero rimane sempre zero (0000 => => 0000 scartando l’ultimo bit) Moltiplicazione e divisione sono molto più complessi (Algoritmo di Booth) Estremamente complesso il calcolo in virgola mobile Il complemento a 2 di numeri a N bit permette di rappresentare numeri nell’intervallo 2**N-1 fino a 2**N -1

18 Stringhe di bit in notazione esadecimale
Molto spesso le stringhe di bit (per codici o per numeri binari) sono troppo lunghe per essere gestite facilmente. Esempio: La stringa è troppo lunga anche da ricordare. Si una allora la notazione esadecimale nella quale ad ogni gruppo di 4 bit si sostituisce il suo valore esadecimale. Binario Esadecimale (HEX) 1010 A 1011 B 1100 C 1101 D 1110 E 1111 F

19 Stringhe di bit in notazione esadecimale
Ne deriva che la stringa: può essere riscritta come (raggruppando per 4) e quindi in notazione esadecimale: 052F4B2A. Se la notazione esadecimale rappresenta un numero è possibile eseguire le operazioni aritmetiche. Esempio (1000) Riporto (quando si arriva a 1610) A57B + B342 = 158BD Esiste anche la notazione Ottale in cui i bit sono raggruppati per 3 e quindi la notazione utilizza solo i simboli 0-7. Vale ancora il principio che se la stringa rappresenta un numero binario è possibile eseguire operazioni aritmetiche Questo 1 vale 1610

20 Codice ASCII Mancano ovviamente tutti i caratteri polacchi etc. arabi, cirillici etc. - > Unicode, codice a 16 bit

21 Codice Gray Tra configurazioni (stringhe) Gray adiacenti cambia sempre un solo bit 110 000 001 011 010 110 111 101 100 Gray Bin 010 011 Utile ad esempio se vogliamo misurare la posizione angolare di un albero motore. Perche ? Non vi sono “discontinuità” Per la conversione fra i due codici v. dopo

22 Parità Esistono codici che permettono di identificare un singolo errore (ad esempio nel caso di trasmissioni): ex parità. Il bit di parità (o di disparità) è un bit che si aggiunge al codice trasmesso in modo che il numero di bit complessivi risulti sempre pari (dispari). Ex parità pari Ovviamente il bit di parità protegge dagli errori singoli ma NON da quelli doppi o quadrupli etc. Vengono rivelati solo quelli dispari Trasmesso Ricevuto Errore !! Errore NON rivelato! Se si accetta che le trasmissioni siano non troppo rumorose (ovvero che l’errore sul singolo bit sia il più probabile) la parità è un metodo semplice ed efficace. Usato ad esempio nella trasmissione seriale con standard RS232C (ormai in disuso)

23 Codici a correzione di errore
Si definisce “distanza” il numero di bit diversi che separano due configurazioni lecite. Ad esempio in un codice con 5 bit le due configurazioni lecite e hanno distanza uno, le due configurazioni e hanno distanza due etc. I codici a distanza due (parità fra questi) permettono l’individuazione del singolo errore. Codici corretti (distanza due - 4 bit – 4 valori) 0001 0010 0100 1000 Codici corretti (distanza tre – 3 bit - 2 valori) 000 111 Se si riceve ad esempio 001 l’unica configurazione “vicina” a 000 e quindi se si suppone che l’errore sia singolo lo si può correggere. Anche nel caso si riceva 011 si può ipotizzare che il codice trasmesso fosse 111 ma ove sia possibile che si verifichino doppi errori la configurazione di partenza avrebbe anche potuto essere 000. In questo caso siamo quindi in presenza di un codice in grado di correggere i singoli errori e rivelare i doppi. Se la distanza fosse 4 si può vedere dal grafo cosa si può dedurre Se le due uniche configurazioni corrette sono 0000 e 1111 possiamo certamente individuare i singoli, doppi e tripli errori. Se si riceve 1110 ci si può ricondurre a 1111 (correzione) ma se si riceve 0110 riveliamo l’errore ma non siamo in grado di correggerlo (equidistante da 0000 e 1111) ?

24 Conversione di codice La conversione di codice da binario a decimale è ovvia. La conversione da decimale a binario si effettua per divisioni successive per 2 tenendo conto dei resti Resto 75| 37| 18| 9| => 75 4| 2| 1|

25 Codice Binary Coded Decimals
Rappresentazione di numeri decimali nei quali ogni cifra è rappresentata dall’equivalente binario Notazione “packed”: ogni digit è rappresentato da 4 bit decimale BCD Nella notazione “packed” in un “byte” (8 bit ) sono contenuti due digit. In un calcolatore il numero precedente sarebbe rappresentato da due bytes (17) ; (39) Notazione “unpacked”: un byte per ogni digit. Il numero precedente sarebbe rappresentato da 4 bytes N.B. Il byte è l’unità di informazione minima individuabile e gestibile in un calcolatore. Tutti gruppi di 4 bit con valore binario superiore a 1001 NON sono validi nel codice BCD

26 Conversione fra codice binario e BCD
Per passare dal binario a BCD basta dividere per 1010 ovvero e (caso unpacked) porre il quoziente nel byte più significativo e il resto in quello meno significativo oppure (caso packed) porre i due nibbles (4 bit) rispettivamente nella parte alta e in quella bassa del byte di destinazione. Esempio = 5310 : 1010 = (unpacked 510 con resto 310) Il passaggio dal BCD al binario si effettua l’operazione inversa. Ad esempio per passare dal binario unpacked al binario basta moltiplicare il primo byte (il più significativo) per 10 e sommarlo al byte meno significativo (92 in BCD) x 1010 = (9010) che sommato a dà esattamente ovvero (9210) Nel caso di BCD packed si deve moltiplicare 1010 (10102) per il nibble più significativo e sommarlo a quello meno significativo

27 Operazioni aritmetiche in BCD
Somma = = = 47 = = = ? invalido invalido bisogna aggiungere (riporto fra i nibbles) (distanza fra 15 e 9) (aggiungere 6 senza e inserire un riporto riporto sul nibble sul nibble successivo successivo – il riporto è già stato inserito) = = !! Se si ottengono numeri BCD maggiori di 9 oppure vi è un riporto fra i digit allora bisogna comunque aggiungere 6

28 Operazioni aritmetiche in BCD
Altre operazioni 37 – 12 = – 19 = – 18 = 23 2 (prestito) (prestito) = = = invalido errore sottrarre sottrarre 6 = = Nel caso di digit invalido oppure di “prestito” dal digit successivo si deve sottrarre 6 Per moltiplicazione e divisione non vi sono regole per i BCD. Ad esempio per gli “unpacked” (che hanno i 4 bit più significativi a 0) basta effettuare la moltiplicazione binaria normale e poi effettuare la conversione binario-BCD. In modo similare per i packed (andando per nibble) 9x4=36 moltiplicazione binaria conversione binario-BCD ( x ) = => ( : 1010) = con resto In BCD non trattiamo i numeri negativi

29 Realizzazione di una matrice 7 segmenti
b c d e f g Con 7 elementi 27 = 128 combinazioni Che corrispondenza esiste fra il numero che si vuole rappresentare e i segmenti ? (1 acceso – 0 spento) Numero Hex Bin (xyzw) a b c d e f g A E F a,b,c,d,e,f rappresentano 7 funzioni dei bit binari xyzw . Ad esempio c = fc(x,y,z,w). Come si sintetizza e realizza la funzione fc ??????? NB 6 e b sono differenziati dal fatto che 6 ha il segmento a acceso

30 Come realizzare ad esempio una rete che effettui somme e altre operazioni binarie ?
Nei calcolatori si usano dei circuiti elettronici chiamati reti logiche che operano su due livelli di tensione convenzionalmente indicati con i simboli 0 e 1 E’ possibile realizzare una rete elettronica che utilizzando solo questi due livelli di tensione abbia un comportamento per cui le sue uscite corrispondano ai valori di una somma. N.B. i segnali elettrici 0 e 1 (ad esempio 0 e 5V) NON sono valori numerici ma il loro comportamento nella rete deve corrispondere a quello di un sommatore binario Tastiera Conv RL Somma Conv Display Elettronica Come si progetta ?

31 Reti combinatorie La tabella dei 7 segmenti precedente è un esempio di tabella della verità lo strumento che è alla base della sintesi delle reti combinatorie ovvero di quelle reti la cui uscita dipende solo dagli ingressi e non dal tempo Un esempio nel campo analogico può essere trovato confrontando un circuito per la somma delle tensioni (NON dipendente dal tempo) e un integratore (dipendente dal tempo) – entrambi i circuiti si realizzano tramite amplificatori operazionali ma uno ha solo resistenze e l’altro ha un condensatore (la cui carica dipende dal tempo) Si definiscono invece reti sequenziali quelle reti che dipendono dal tempo ovvero in cui le uscite dipendono dal tempo ovvero dalla storia passata del sistema Date n- variabili binarie di ingresso il numero di funzioni diverse di una sola uscita è dato dal valore 2**2**n Ad esempio con 1 variabile di ingresso si possono realizzare solo 4 funzioni combinatorie I f0 f1 f2 f3 di fatto a parte le due funzioni identità (che fisicamente corrispondono a un filo) e le costanti rimane una sola funzione (f3 ) che viene chiamata negazione, inversione o NOT e viene rappresentata con il seguente simbolo: Il simbolo utilizzato nelle espressioni (v. dopo) è la soprasegnatura (scomoda da stampare), oppure l’asterisco o il punto esclamativo (prima o dopo la variabile)

32 Funzioni di due variabili
Le funzioni diverse sono 16 I1 I0 f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13 f14 f15 A parte le costanti e le identità vi sono le seguenti funzioni caratteristiche f14 funzione OR Simbolo (+) f funzione AND Simbolo (.) f funzione NOR Simbolo f funzione NAND Simbolo f funzione EXOR Simbolo (Å) f funzione EQUIV Simbolo N.B. i simboli qui rappresentati hanno anche una realizzazione fisica nella quale esiste sempre un ritardo fra cambiamento dei segnali di ingresso e cambiamento dell’uscita che dipende dalla tecnologia realizzativa . L’operatore EXOR viene anche denominato “somma modulo 2” in quanto la sua funzione di uscita può essere interpretata come il risultato della somma di due bit (valori binari) di ingresso

33 Algebra di commutazione
Ma come si passa dalla descrizione tramite tabella della verità a una sintesi utilizzando i componenti base visti precedentemente (o loro combinazioni) e viceversa ? Tabella Della verità Schema Logico Sintesi Analisi Sistema matematico L’algebra di commutazione è un sistema matematico atto a descrivere funzioni di variabili binarie. Un’algebra si basa su dei simboli, delle operazioni e dei postulati (affermazioni) Simboli: [0,1] Operazioni: somma logica (+), prodotto logico (.) e complementazione (!) Postulati : = = = =1 0.0= = = =1 !0= !1=0 NB: operazioni su SIMBOLI e NON numeri/bit !!!! Simbolo del prodotto logico (normalmente omesso)

34 Algebra di commutazione
Costante: i simboli 1 e 0 Variabile (binarie): un letterale che può assumere i simboli (ma spesso si usa l’espressione “valori”) 1 e 0 (ma si potrebbero usare anche altri simboli binari g, Л) Funzione: f(x1, x2, …. xn) con n variabili binarie. Può essere espressa come tabella della verità Espressione: combinazione di simboli e operazioni. Ex: (((X+Y). !Z). !0) ove X, Y e Z sono variabili binarie Valutazione: calcolo del valore binario dell’espressione utilizzando le operazioni e i postulati dell’algebra e assegnando alla n-pla di variabili binarie tutte l combinazioni binarie di valori. Nel caso dell’esempio precedente XYZ F Espressioni equivalenti: due espressioni che danno luogo alla stessa tabella della verità Proprietà: valgono la proprietà, riflessiva, simmetrica e transitiva

35 Algebra di commutazione e operatori logici Analisi
I postulati dell’algebra di commutazione corrispondono al comportamento degli operatori logici AND,OR e NOT XYZ F X F=(((X+Y). !Z). !0) Y F Z Ne discende che una espressione corrisponde a uno schema logico Vediamo questo schema XYZ F X Y F Stessa tabella della verità: equivalenza !! Z

36 Alcune proprietà dell’algebra di commutazione
X+Y=Y+X X.Y=Y.X X+Y+Z=(X+Y)+Z X.Y.Z=(X.Y).Z X.(X+Y)= (XY)+ (X.Z) X+(Y+Z)=(X+Y)+(X+Z) X+X=X X.X=X (idempotenza - entrambi) X+0=X X.0=0 X+1=1 X.1=X X+(X.Y)=X X.(X+Y)=X !(!X)=X X+!X=1 X.!X=0 A.X+A.!X=A (A+X).(A+!X)=A !(X.Y) = !X+!Y !(X+Y)=!X.!Y (Leggi di De Morgan) X.Y+!X.Z+Y.Z= X.Y+!XZ (X+Y).(!X+Z).(Y+Z)=(X+Y).(!X+Z) X+!XY = X + Y (regolarmente dimenticato ….) Provare per credere attribuendo a X e Y tutte le possibili combinazioni di valori !!!! NB: anche nell’algebra di commutazione si usano le stesse convenzioni di precedenza utilizzate nell’algebra convenzionale Prec(!) > Prec(.) > Prec(+) Le parentesi servono ad alterare questo ordine. Molto spesso (sempre) si omette il simbolo di prodotto logico

37 Espressioni duali Una espressione duale è quella che si ottiene sostituendo 0 e 1 e gli operatori and e or Si ha che (Fd)d=F Se due espressioni sono equivalenti lo sono anche le loro duali se (((X+Y). !Z). !0) equivale a =((X+Y). !Z) (come è vero) allora le espressioni duali si equivalgono (((X.Y)+!Z)+!1) equivale a ((X.Y)+!Z) (verificare con la tabella della verità) F=(((X+Y). !Z). !0) => Fd= (((X.Y)+!Z)+!1)

38 Algebra di commutazione e operatori logici Sintesi
XYZ F !X!YZ !XY!Z X!Y!Z XY!Z XYZ Ma come si passa da una tabella della verità al circuito che la sintetizza ? Circuiti combinatori: circuiti in cui le uscite dipendono solo dagli ingressi e NON dal tempo ovvero dalla storia passata del circuito. Vediamo a partire da una tabella della verità Si selezionano le righe in cui la funzione vale 1 e si scrive l’espressione prodotto (termine prodotto) corrispondente utilizzando le variabili di ingresso con il valore vero se compaiono con 1 e viceversa. I termini prodotto (mintermini) si sommano logicamente F= !X!YZ + !XY!Z + X!Y!Z + XY!Z + XYZ Espressione canonica (con tutte le variabili nei prodotti logici) in forma di somma di prodotti (SP) Espressione a due livelli (il NOT non conta) X!Y!Z !X!YZ X !XY!Z Y F Z XY!Z XYZ

39 Algebra di commutazione e operatori logici Sintesi
In alternativa si selezionano le righe in cui la funzione vale 0 e si scrive l’espressione somma (termine somma) utilizzando le variabili di ingresso con il valore negato se compaiono con 1 e viceversa. I termini somma (maxtermini) si moltiplicano logicamente F= (X+Y+Z)(X+!Y+!Z)(!X+Y+!Z) XYZ F X + Y + Z X +!Y +!Z !X + Y +!Z Espressione canonica in forma di prodotti di somme (PS) Espressione a due livelli (il NOT non conta) Una rete logica combinatoria è sempre sintetizzabile a due livelli X+Y+Z X X+!Y+!Z Y F Z !X+Y+!Z Le due sintesi canoniche (SP e PS) portano normalmente a circuiti di diversa complessità

40 a+b!c= a(b+!b)(c+!c) + (a+!a)b!c= abc+ab!c+a!bc+a!b!c+ab!c+!ab!c
Espansione Una espressione SP può essere “espansa” in modo da risultate una somma di mintermini (forma canonica) ricordando che X.1=X, X+!X=1 e X+X=X. Esempio a+b!c= a(b+!b)(c+!c) + (a+!a)b!c= abc+ab!c+a!bc+a!b!c+ab!c+!ab!c Si possono espandere anche i prodotti di somma in modo duale ma possiamo tralasciarli. Spesso le funzioni combinatorie non sono completamente specificate ovvero alcune combinazioni di ingresso non si presentano mai XYZ F ? ? Ovviamente la cosa ha senso in fase di sintesi. L’analisi di un circuito genera sempre tabelle completamente specificate

41 Sintesi canonica della funzione fe dei 7 segmenti (0-9) 7446 (uscite negative true ovvero L-> acceso H-> spento) f b g e c d a Bin . DCBA 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 + Vcc e A B C D E F (HEX) Rosso => acceso Blu => spento fe = !D!C!BA + !D!CBA + !DC!B!A + !DC!BA + !DCBA + D!C!BA + D!CBA + DC!B!A + DC!BA + DCBA (SP) fe = !( !D!C!B!A +!D!CB!A + !DCB!A + D!C!B!A + D!CB!A + DCB!A ) fe = (D+C+B+A) (D+C+!B+A) (D+!C+!B+A) (!D+C+B+A) (!D+!C+!B+A) (!D+!C+!B+A) (PS)

42 Esempio di transcodifica: conversione Binario-Gray e viceversa
Conversione codice binario- codice Gray . Osservando il codice Gray si deduce facilmente che g0 = !b2!b1b0 + !b2b1!b0 + b2!b1b0 + b2b1!b0 = = ( !b2!b1b0 + b2!b1b0) + (!b2b1!b0 + b2b1!b0) = = !b1b0 + b1!b0 = b0 Å b1 g1 = !b2b1!b0 + !b2b1b0 + b2!b1!b0 + b2!b1b0 = = (!b2b1!b0 + !b2b1b0) + (b2!b1!b0 + b2!b1b0) = = !b2b1 + b2!b1 = b2 Å b1 e così via gn = bn Å bn+1 (N.B. bn+1 per il MSB è ovviamente 0 e infatti g2 = b2 ) Conversione Gray-binario. Si può sintetizzare dalla tabella della verità oppure tramite un semplice procedimento algebrico gn = bn Å bn+1 bn+1 Å gn = bn+1 Å bn+1 Å bn = 0 Å bn = bn e quindi bn = bn+1 Å gn ricordando che se n sono i bit bn+1 è uguale 0 Nel caso specifico b2 = g2 , b1 = b2 Å g1 e b0 = b1 Å g0 Ovviamente la sintesi poteva essere condotta attraverso la definizione dei mintermini Il MSB del Gray coincide con il MSB del binario 000 001 011 010 110 111 101 100 g2g1g0 Gray b2b1b0 Bin

43 Gray Bin Conversione Gray-Binario
La stessa formula si poteva trovare a partire dalla sintesi canonica 000 001 011 010 110 111 101 100 g2g1g0 Gray b2b1b0 Bin b2 = g2 b1 = !g2 g1g0+!g2g1!g0+g2!g1g0+g2!g1!g0 = !g2 (g1g0+g1!g0) + g2(!g1g0+!g1!g0)= !g2 g1 + g2!g1 = g2 Å g1 = b2 Å g1 b0 = !g2 !g1g0+!g2g1!g0+g2g1g0+g2!g1!g0 = g0(!g2!g1+g2g1) + !g0(!g2g1+g2!g1)= g0 Å (g2 Å g1)= g0 Å b1

44 Introduzione Altera

45 Blank Input (vero negato)
Controllore 7 segmenti 7446 Y X Y X Blank Input (vero negato) Tutto spento Ripple blank Input/output - OC Tutti i NAND a 1 Lamp test (vero negato) Tutti accesi Ripple blank input (vero negato) Tutti spenti [vero negato => attivo basso]

46

47 Simulazione timing (segmento acceso= segnale di uscita basso)
E C LT C D BL

48

49

50 Adder Generiamo la tabella della verità di una rete combinatoria le cui uscite corrispondano ai valori numerici del sommatore a 2 bit (Half Adder) ab Somma Riporto S = a exor b R = ab S R a b HA a S b R Generiamo la tabella della verità di una rete combinatoria le cui uscite corrispondano ai valori numerici del sommatore a 3 bit (Full Adder) S = !a!bc+!ab!c+a!b!c+abc=!a(!bc+b!c)+a(!b!c+bc)= !a(b exor c)+a![(bc)+(!b!c)] = !a(b exor c) +a!(b exor c)= = a exor (b exor c) R = !abc+a!bc +ab!c+abc= c(a exor b) + ab(c+!c) = c(a exor b) + ab (!bc+b!c)=!((!bc+b!c)) De Morgan ! abc S R HA1 b a S1 R1 HA2 c R2 R=ab+ c(a exor b) HA HA2 S =(a exor b) exor c) HA HA2 Full Adder Per il riporto si ha anche R= !abc+a!bc+ab!c+abc = !abc+a!bc+ab!c+abc+abc+abc = ab(c+!c) + ac(b+!b) + bc(a+!a) = ab + ac + bc Termini aggiunti

51 Adder Per sommare un numero binario di n bit basta mettere in cascata n-1 FA e un HA HA a0 S0 R b0 NB: Normalmente i circuiti integrati forniscono FA a 4 bit. Con questa struttura si aumenta di un livello ogni ulteriore coppia di bit da sommare. Va però ricordato che questa è una rete combinatoria che quindi corrisponde a una tabella della verità che è quindi sempre sintetizzabile in modo canonico ovvero a due livelli. Nei dispositivi integrati il riporto è generato a due livelli per accelerare le operazioni del blocco successivo. FA S1 a1 R b1 FA S2 a2 R b2

52 Altera FA Bus Bus Altera Full Adder Cella elementare
Alla cella successiva SUM1=(A1 exor Cin) exor B1 SUM1=(A 1exor CIN) exor B1 Cout=A1B1 + A1CIN + B1CIN

53 Simulazione timing 80+68+Carry=149
Allargando il timing si vede che è 128 !! 80+68+Carry=149 Zona ingrandita nella pagina seguente

54 Zona ingrandita = = 180

55 Multiplexer (MUX) a z z= a!c+bc c b
Multiplexer a due vie: avvia sull’uscita (z) il valore logico di uno dei due ingressi (a e b) secondo il valore di un bit di controllo (c). Quale è la tabella della verità, l’espressione canonica e lo schema di un MUX a 4 ingressi con due bit di controllo C1 e C2 ? z a b c z= a!c+bc

56 Multiplexer Altera Altera Mux4to1 Se Inhibit=1 allora Q=0

57 Simulazione timing Effetto Inhibit Ritardo fra ingresso e uscita
“Buco” dovuto allo scambio degli ingressi – alea statica

58 Demultiplexer (DEMUX) o decoder
Demultiplexer a due vie di uscita: avvia su una delle due uscite (z1 e z2) il valore logico dell’ingresso a secondo il valore di un bit di controllo (c). Quale è la tabella della verità, l’espressione canonica e lo schema di un DEMUX a 4 ingressi con due bit di controllo C1 e C2 ? Si noti che il circuito si chiama anche DECODER in quanto se l’ingresso è costantemente uno, di fatto l’uscita attiva è quella che corrisponde a una delle 2n configurazioni binarie degli n ingressi di controllo e quindi “decodifica” il numero binario di ingresso a c z1 z2

59 74138 Altera Altera Demux 3:8 Ingresso=1 implicito

60 Simulazione timing Uscite tutte a 1 disabilita disabilita abilita
Decod. 2 Decod. 3 Uscite tutte a 1

61 Comparatore Altera bit per bit (valore assoluto)

62 1 se bit corrispondenti uguali

63 Simulazione funzionale
In ASCII 255-64=191: e’ infatti diverso il bit 6 di peso 26 ovvero 64 Valore decimale corrispondente alla disparità (tutti 1 meno il bit di valore 16) 255-80=175 : sono infatti diversi i bit di peso 26 e 24 ovvero 64 e 16 che sommati danno 80 Solo il bit di valore (24) è diverso ( =16)

64 Reti di costo minimo Il concetto di “costo” (che equivale a “complessità” ) non è univoco e dipende da una molteplicità di fattori Nella nostra trattazione il costo minimo si riferisce alla minimizzazione del numero di operatori necessari a realizzare una funzione a due livelli. NB le realizzazioni di costo minimo possono essere molteplici Espressione minima: espressione che corrisponde a una realizzazione di costo minimo Espressione normale: una somma di prodotti o un prodotto di somme. Due livelli. Le espressioni canoniche sono normali Espressione irridondante: una espressione normale SP (o PS) togliendo un termine alla quale non si ha più equivalenza. Esempio Esempio 1 F= ab+bc+ad: non posso togliere alcun termine prodotto senza modificare la tabella della verità. Esempio 2 F=b!c+ac. NON sarebbe irridondante l’espressione b!c+ab+ac (che produce la stessa tabella della verità) e nella quale posso togliere ab senza alterare la tabella stessa Una rete di costo minimo (nel nostro caso) è data da una espressione normale e irridondante. Da qui in poi ci occuperemo solo di SP

65 Reti di costo minimo Implicante: termine prodotto (non necessariamente mintermine) di n o meno variabili che assume il valore 1 solo per configurazioni in cui la funzione non vale 0 Esempio F= abc + ac + cd + ad Implicante primo: implicante che cessa di essere tale rimuovendo anche un solo suo letterale Esempio F= ac + cd (entrambi primi) Implicante primo essenziale: implicante che è l’unico ad assumere il valore uno per alcune configurazioni delle variabili di ingresso in cui la funzione assume il valore uno Esempio F= abc + ac + cd (abc non è essenziale) Ne consegue che una rete di costo minimo è la somma irridondante di implicanti primi essenziali

66 Le mappe di Karnaugh 00 01 11 10 ab cd 1 1 a b 00 01 11 10 1 a bc 00
Rappresentazione bidimensionale della tabella della verità di una funzione di 2,3,4,5 e 6 variabili, i cui valori di partenza sono elencati sui bordi della mappa in maniera che due configurazioni di ingresso adiacenti (v. dopo per il significato generale) differiscano sulla mappa per il valore di un solo bit. Ovviamente il numero delle caselle è sempre una potenza di due 00 01 11 10 ab cd 1 1 a b 00 01 11 10 1 a bc 00 01 11 10 ab cd 1 00 01 11 10 ab cd 1 e=0 e=1

67 Le mappe di Karnaugh 00 01 11 10 ab cd 1
Le mappe di Karnaugh sono facilmente utilizzabili per evidenziare le adiacenze fra le configurazioni di ingresso per le quali l’uscita della funzione è uno L’adiacenza degli ingressi delle mappe di Karnaugh va intesa in senso sferico. Nell’ esempio successivo la casella a=0, b=0, c=0 e d=1 (in rosso) è adiacente a quella a=1, b=0, c=0, d=1 (in verde). L’evidenziazione grafica permette di individuare facilmente configurazioni degli ingressi che differiscono per i valori di una sola variabile adiacenti 00 01 11 10 ab cd 1 adiacenti adiacenti

68 Le mappe di Karnaugh bc 00 01 11 10 1 a 1 F= !a!b + !b!c + !a!c + abc
Consideriamo ora la funzione di tre variabili espressa dalla seguente tabella della verità: abc F = !a!b!c+!a!bc+!ab!c+a!b!c+abc = !a!b!c+!a!b!c+!a!b!c+!a!bc+!ab!c+a!b!c+abc = = !a!b+!b!c+!a!c+abc (molto più semplice) Idempotenza Cosa è stato sfruttato ? Le adiacenze fra i termini prodotto della espressione canonica. Ma la stessa cosa posso evidenziarla su una mappa di Karnaugh !!! E le operazioni eseguite sfruttando i teoremi dell’algebra posso ricavarle dall’analisi dei raggruppamenti adiacenti. Vanno cercati i massimi raggruppamenti rettangolari di 1 di dimensione (numero di caselle) potenza di 2. I termini prodotto (implicanti) di minima complessità (implicanti primi) si ottengono dalle variabili che nel raggruppamento NON cambiano, prese con il valore vero se compaiono con 1 e viceversa. Itemini prodotto non possono essere allargati pena l’inserzione di zeri. Adiacenze sferiche !! bc 00 01 11 10 1 F= !a!b !a!b!c+!a!bc + !b!c !a!b!c+a!b!c + !a!c !a!b!c+!ab!c + abc a 1 Solitario mintermine ! Copertura: ogni “uno” della funzione deve essere coperto da almeno un raggruppamento Ovviamente un «uno» può essere coperto più volte (idempotenza)

69 Qui non ci sono mintermini adiacenti => sintesi canonica !!!
Le mappe di Karnaugh !bc + cd 00 01 11 10 1 a bc ab !b!d + 00 01 11 10 Anche l’implicante !a!b (tratteggiato) sarebbe primo ma non è essenziale 00 !a!c + 1 !ad + 1 1 1 01 b!cd + 1 1 1 11 1 1 ac!d 10 1 F= !b+ac+!a!c F= 00 01 11 10 ab cd 1 Tutti i termini prodotto presenti nella espressione sono implicanti primi e sono anche essenziali, nel senso che coprono “uni” non coperti da altri implicanti primi. Qui non ci sono mintermini adiacenti => sintesi canonica !!! F= !a!b!cd+!a!bc!d+!ab!c!d+!abcd+ab!cd+abc!d+a!b!c!d+a!bcd

70 Le mappe di Karnaugh 00 01 11 10 ab cd 1 00 01 11 10 ab cd 1 !a!c!e +
00 01 11 10 ab cd 1 !a!c!e + bcde ac!d + ade + a!bc + e=0 e=1 F= !b!d + Le due mappe da 4 variabili differiscono per la quinta variabile «e» e possono essere interpretate come due superfici sferiche concentriche

71 Sintesi come prodotto di somme
Vanno cercati i raggruppamenti massimi raggruppamenti rettangolari di 0 . I termini somma (implicati) di minima complessità (implicati primi) si ottengono dalle variabili che nel raggruppamento NON cambiano, prese con il valore negato se compaiono con 1 e viceversa e non possono essere allargati pena l’inserzione di 1. (a+b+!c+!d) 00 01 11 10 ab cd 1 00 01 11 10 ab cd 1 (a+c+!d+!e) (a+!b+d+!e) (a+!b+!c+e) (!a+!b+c+d) (!a+c+!d+e) (!a+!b+!d+e) e=0 e=1 F=

72 Le mappe di Karnaugh cd cd ab ab 00 01 11 10 00 01 11 10 00 00 1 1 1 1
!b!d + ab !b!d + 00 01 11 10 00 01 11 10 00 00 1 1 !a!bc 1 1 !acd 1 1 01 01 bd + 1 1 b!cd + 1 1 11 11 1 1 1 1 10 1 10 1 F= F= Le due funzioni sintetizzate sono equivalenti, della stessa complessità ed entrambe composte da implicanti primi. Spesso vi sono sintesi diverse ed equivalenti. Vi possono essere somme irridondanti di costo differente

73 Le mappe di Karnaugh 00 01 11 10 ab cd 1 x 00 01 11 10 ab cd 1
Caso delle reti combinatorie non completamente specificate: per alcune combinazioni di ingresso le uscite non sono specificate (normalmente corrisponde al caso in cui certe combinazioni di ingresso non si presentano mai – esempio: 7 segmenti in cui i numeri sono solo quelli da 0 a 9). In tal caso nella mappa la funzione nella casella può essere lasciata”indefinita” (indicata normalmente con x o con - ) e utilizzata sia come “uno” che come “zero” per ottenere implicanti della minima complessità. Essendo indifferenza può essere sfruttata volta a volta come uno o come zero 00 01 11 10 ab cd 1 x 00 01 11 10 ab cd 1 X => 0 X => 1 F=!b + a+ !c!d Tabella di fatto sintetizzata

74 Tutte le altre configurazioni
BCD | Binario | dcba | edcba | | | | | | | | | | Tutte le altre configurazioni sono indifferenze Progettare con le mappe di Karnaugh a partire dalla tabella della verità un convertitore BCD packed/binario e viceversa sapendo che il massimo valore del codice BCD è (19) e che i numeri pari non sono convertiti. Quali sono le condizioni di indifferenza ?

75 00 01 11 10 dc ba Da BCD a binario solo dispari BCD | Binario
| dcba | edcba | | | | | | | | | | b = 00 01 11 10 dc ba - 1 e=0 e=1 !eb e!b + = e Å b Sintetizzare le altre funzioni

76 Mappe di Karnaugh a 6 variabili
ba ba !a!b!c!z + (!b+!a+c) a!b!cz + (!b+c+z) dc dc 00 01 11 10 00 01 11 10 00 1 (b+!a+z) 00 !a!ez 1 1 1 01 (b+!c) bc + 01 - 1 - - 1 - 11 11 - - - - - - - - 10 - - - 10 - 1 - - ez=00 ez=01 ba ba dc dc 00 01 11 10 00 01 11 10 00 00 1 - (a+!e+!z) 1 - 01 01 - - - 1 - 11 11 - - - - - - - - 10 1 - - 10 - 1 - - ez=10 ez=11 F = E come prodotto di somme ? F =

77 Esercizio Utilizzando dei FA a 4 bit progettare un sommatore BCD packed (due valori in ogni singolo byte) in Altera (si ricordi che se nella somma si ottengono numeri BCD – nibbles - maggiori di 9 oppure vi è un riporto fra i digit allora bisogna aggiungere 6)

78 Sommatore BCD integrato

79 Interpretare, riportare e simulare con ALTERA

80

81 Circuiti a NAND (NOR) a z b c 1 z a b c
Pur essendo disponibili sia a livello di circuiti integrati che di FPGA tutte le funzioni logiche elementari (AND, OR, NOT) può talvolta risultare utile utilizzare un solo tipo di dispositivi e in particolare i NAND (NOR) Infatti tutte le funzioni elementari possono essere realizzate solo con NAND (NOR) X y 1 Z X Z X Z y 1 X Y Z X Z y (De Morgan) Qualunque circuito a due livelli del tipo SP (PS) può essere realizzato con soli NAND (NOR) sostituendo AND e OR e NOT con NAND (NOR). Esempio multiplexer a 2 vie con SP a z b c 1 z a b c z = ![(!(a!c) !(bc)] = a!c + bc (De Morgan)

82 ? Driver 3-state I U I U OE=0 I U OE OE=1 OE I U I 1 OE 1 1 1 Z U 1 Z
OE 1 1 1 ? Z U 1 Z Quale è il valore della tensione ?

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

84 Circuiti con bus comune
Molto spesso (in particolare nei sistemi a microprocessore) molti dispositivi debbono – in tempi diversi - pilotare uno stesso filo (nel caso di molti di molti dispositivi con molti fili di identica tipologia si parla di bus) e l’uso dei multiplexer (nel caso di molti ingressi – ad esempio 30, 40) può risultare particolarmente oneroso per la complessità del circuito. In tal caso si usano dispositivi con uscita tri-state ovvero dispositivi che possono essere o abilitati (e in tal caso l’uscita si comporta logicamente come previsto dalla funzione) o disabilitati (e in tal caso l’uscita è elettricamente disconnessa dal filo di uscita). Tipicamente i tri-state sono dei buffer C=1 X C Y Z Z X Y C=0 Alta impedenza X Y Nel caso C=0 il filo Y è volante, non connesso ad alcun potenziale !!!!!!!!! Lo stato di alta impedenza NON è uno stato logico e NON si propaga Y non è in alta impedenza ma l’uscita del secondo invertitore assume il valore che deriva da avere un ingresso volante (che in genere è interpretato come un “uno” un po’ “sporco”) Y Y

85 (strutturato in 2 gruppi di 4 bit)
244 74XX244 Driver 3-state ad 8-bit (strutturato in 2 gruppi di 4 bit) 1A1 1Y1 1A2 1Y2 1A3 1Y3 1A4 1Y4 2A1 2Y1 ENx* (vero negato) xAi xYi 2A2 2Y2 2A3 2Y3 2A4 2Y4 EN1* EN2*

86

87

88 Integrati Notevoli: “245”
74XX245 Driver bidirezionale (transceiver) ad 8-bit. A1 B1 A2 B2 A3 B3 A4 B4 EN* Bi DIR Ai A5 B5 A6 B6 A7 B7 A8 B8 EN* DIR

89

90

91

92 Multiplexer con tristate
Cn X0 X1 Xn Ci sono i segnali di decodifica che abilitano una delle sorgenti di segnale. Se il bus è a molti fili uno stesso segnale Ci abilita tutti i buffer della stessa molteplicità di sorgenti

93 Yi =“0”Fi (0)+”1”Fi (1)+”2”Fi (2) +… “i”Fi (i)… “2 n-1 “Fi (2 n-1)
Memorie Eprom D E C O R “0” “1” “2 n-1” 1 1 1 n 1 1 Y0 Y1 Y7 Si noti che con una EPROM è possibile sintetizzare in modo canonico 8 (otto) funzioni combinatorie di n variabili Yi =“0”Fi (0)+”1”Fi (1)+”2”Fi (2) +… “i”Fi (i)… “2 n-1 “Fi (2 n-1) ove Fi (i) assume il valore 0 o 1

94 EPROM 2n-1 Z 2n-2 W m f 3 d 2 c 1 b a

95 Memorie EPROM EPROM Memorie non volatili a sola lettura
Capacità a multipli di 2: 32K, 64K, 128K, 256K…… Sigle: 27512, (indicano il numero di Kbits) EPROM VCC 1 VPP 32 PGM* 2 A16 31 NC 3 A15 30 4 A12 A14 29 A13 5 A7 28 A6 A8 6 27 Ai CE* OE* Di Tce Tacc Toe A9 7 A5 26 A4 A11 8 25 A3 OE* 9 24 A10 10 A2 23 CE* 11 A1 22 D7 12 A0 21 13 D0 D6 20 14 D1 D5 19 15 D2 D4 18 CE* OE* Di Cella M/bit i GND D3 16 17 128K  8

96 Realizzare tramite EPROM un convertitore a 6 bit Gray/Binario e Binario/Gray (si ricordi che una EPROM permette di fatto di sintetizzare in forma canonica una funzione combinatoria).

97 ALU

98

99 M=1 tutti i carries (riporti) interni sono inibiti e il dispositivo esegue le funzioni logiche di tabella M=0 i carries interni sono abilitati e il dispositivo esegue le funzioni aritmetiche di tabella Ci sono tre tipi di carries (M=0): Ripple Carry (CN4) che è il normale carry Due tipi di carry look-ahead Carry propagate (!P): attivo se l’uscita è maggiore o uguale a 15 (ADD mode) oppure minore o uguale a zero (SUB mode) Carry generate (!G): attivo se l’uscita è maggiore o uguale a 16 (ADD mode) oppure minore di zero (SUB mode) I due carries look-ahead NON dipendono dall’ingresso CN (Carry IN) Vi è anche una uscita per l’eguaglianza dei due ingressi (A=B) open collector per il wired OR

100 Se A tutti uni complemento a due di B
N.B. La nota 1 indica che il dato è traslato di una posizione a sinistra (che equivale alla moltiplicazione per 2)

101 http://www.eecs.umich.edu/~jhayes/iscas.restore/74181.html Cn M !A0
!B0 !A1 !B1 !A2 !B2 !A3 !B3 S0 S1 S2 S3 !P Cn+4 !G F0 F1 A=B F2 F3 Carry Propagate Carry Generate

102 Esempio S3=L S2=H S1=H S0=H M=H Logica Logica positiva negativa AB Z Zpositive(H=1) Znegative(L=1) LL L LH L HL H HH L Zp=A!B Zn=A+!A!B=A+!B N.B. Il rapporto ingresso/uscita è fra valori alti (H) e bassi (L). L’interpretazione dei segnali può essere considerata in logica positiva o negativa

103

104

105 Altera 74181

106 Buffer Simulare !!!


Scaricare ppt "Reti combinatorie I lucidi da 2 a 9 sono presi dal corso di Reti Logiche LA tenuto nell’AA 2008-2009 dal prof. S.Mattoccia."

Presentazioni simili


Annunci Google