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.

Slides:



Advertisements
Presentazioni simili
Fondamenti di Informatica1 Memorizzazione su calcolatore L'unità atomica è il bit (BInary DigiT) L'insieme di 8 bit è detta byte Altre forme di memorizzazione:
Advertisements

Conversione binario-ottale/esadecimale
Algebra di Boole.
© 2015 Giorgio Porcu - Aggiornamennto 01/12/2015 I STITUTO T ECNICO SECONDO BIENNIO T ECNOLOGIE E P ROGETTAZIONE Rappresentazione dell’ Informazione Sistemi.
2a + 10b abx2 3a + 1 y 2 a + 1 x + 2y a − Espressioni algebriche
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica FONDAMENTI DI INFORMATICA Domenico Talia
I Polinomi Prof.ssa A.Comis.
Laboratorio di Architettura Degli Elaboratori1 PSPICE – Circuiti sequenziali.
Agile Group – DIEE, Università degli studi di Cagliari Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica ELEMENTI DI INFORMATICA.
1 Simulazione Numerica dei Fenomeni di Trasporto Necessità di introduzione dei tensori  11  12  13  23  21  22 Vogliamo descrivere in un modo che.
1 Sistemi di numerazione. 2 Sistemi di numerazione posizionali posizionali Sistemi di numerazione posizionali: base La base del sistema di numerazione.
NUMERI RELATIVI I numeri relativi comprendono i numeri positivi, negativi e lo 0 Esempio: +10, -5, +3, 0, -2 I numeri relativi si possono trovare all’interno.
NUMERI ed ERRORI MANOLO VENTURIN UNIVERSITÀ DEGLI STUDI DI PADOVA DIP. DI MATEMATICA PURA ED APPLICATA A. A. 2007/2008.
1 La Unità Aritmetico Logica. Aritmetica 32 operation result a b ALU.
Rappresentazione dell’ Informazione Digitale e Binario
NUMERI E E CARATTERI IN BINARIO
Unità di apprendimento 1
x : variabile indipendente
= 2x – 3 x Definizione e caratteristiche
Prova d’Esame: selezione di domande
“L’algebra dei polinomi”
Rappresentazione dell’ Informazione Informazione e Comunicazione
Unità di apprendimento 1
Definizione di logaritmo
Laboratorio II, modulo Elettronica digitale (cfr.
La rappresentazione delle informazioni
Introduzione al linguaggio C
Dal problema al processo risolutivo
x : variabile indipendente
INFORMATICA DI BASE I FONDAMENTI.
Logica binaria Moreno Marzolla
(7x + 8x2 + 2) : (2x + 3) 8x2 + 7x + 2 2x + 3 8x2 + 7x + 2 2x + 3 4x
4 < 12 5 > −3 a < b a > b a ≤ b a ≥ b
Dal problema al processo risolutivo
x : variabile indipendente
Insiemi di punti: altre caratteristiche
Macchine sequenziali Capitolo 4.
FUNZIONI MATEMATICHE DANIELA MAIOLINO.
JAVA usa una rappresentazione in VIRGOLA MOBILE
FORMULE E FUNZIONI SU EXCEL
Informatica A.A. 2016/17 Prof. Italo Epicoco
I MONOMI.
Domanda 1 A cosa corrisponde in notazione decimale il numero binario positivo senza segno ) 32 2) 48 3) 46 4) 3 5) 36 September 18.
ALU (Arithmetic Logic Unit)
Algebra di Boole e sue applicazioni
Convertitore A/D e circuito S/H
INFORMATICA DI BASE I FONDAMENTI.
I RADICALI Definizione di radicali Semplificazione di radicali
Circuiti digitali Architettura © Roberto Bisiani, 2000
Codicfiche Interi Complemento alla base.
CONVERTITORE DIGITALE-ANALOGICO(DAC)
I numeri relativi DEFINIZIONE. Si dicono numeri relativi tutti i numeri interi, razionali e irrazionali dotati di segno (positivo o negativo). ESEMPI Numeri.
Operazioni su Naturali
Le espressioni algebriche letterali
Algebra Booleana.
Elementi di base per lo studio dei circuiti digitali
Corso di Informatica Applicata Introduzione
Concetti base 1.1.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Codici rilevatori di errori
Algebra di Boole e Funzioni Binarie
Sistemi Digitali.
Circuiti combinatori Laboratorio di Architetture degli Elaboratori I
Introduzione a Logisim
Reti Combinatorie: sintesi
Matrici e determinanti
Le Frazioni Prof.ssa A.Comis.
Algoritmi.
LE DISEQUAZIONI DI PRIMO GRADO
Transcript della presentazione:

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

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?

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”

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 !!!)

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

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

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.

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

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}

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 103 + 5 x 102 + 4 x 101 + 7 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: 010000, 000010 etc.) N.B. Esistono sistemi numerici NON posizionali: ad esempio i numeri romani

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 100101 potrebbe indicare il pane e la stringa 110101 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 100101 sta a indicare 1 x 25 + 0 x 24 + 0 x 23 + 1 x 22 + 0 x 21 + 1 x 20 = 32 + 4 + 1 = 3710 Nel sistema numerico binario è ovviamente possibile eseguire tutte le operazioni aritmetiche

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 0.. .2n-1 (c’è anche lo zero …) Codici alfanumerici: ex codice ASCII, codice a 7 bit (v. dopo)

Operazioni elementari con numeri binari 1 1 1 1 0 1 0 0 1 Riporto 1 1 0 1 0 1 1 + 1 0 7 + 0 1 1 1 0 1 0 = 5 8 = ---------------- ----- 1 0 1 0 0 1 0 1 1 6 5 0 2 2 0 0 0 0 10 10 Prestito 1 1 0 1 0 1 1 - 1 0 7 - 0 1 1 1 0 1 0 = 5 8 = ---------------- -------- 0 1 1 0 0 0 1 4 9

Operazioni elementari con numeri binari 101101 x 1011 45 x 11 ------------- ------- 101101 45 101101= 45= 000000== ------- 101101=== 485 ------------- 111101111 La divisione si effettua con criteri similari

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) 0100101 => 1011010 + 1 = 1011011 +37 => -37 1011011 => 0100100 + 1 = 0100101 -37 => +37

Numeri binari negativi 1011011 + -37 + 0010010 = 18 = ------- --- 1101101 => 0010010 + 1= 0010011 -19 Nel caso di riporto oltre l’ultima bit significativo quest’ultimo va scartato (per motivi fisici nei computer) 1011011 + -37 + 1010010 = -46 = ------- --- 10101101 ERRORE – OVERFLOW -83 |-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)

Numeri binari negativi Lo zero rimane sempre zero (0000 => 1111+1 => 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

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: 00101001011110100101100101010 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) 0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 1010 A 1011 B 1100 C 1101 D 1110 E 1111 F

Stringhe di bit in notazione esadecimale Ne deriva che la stringa: 00101001011110100101100101010 può essere riscritta come (raggruppando per 4) 0 0101 0010 1111 0100 1011 0010 1010 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

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

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

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 1001011 0000000 1111110 Ovviamente il bit di parità protegge dagli errori singoli ma NON da quelli doppi o quadrupli etc. Vengono rivelati solo quelli dispari Trasmesso 1001011 Ricevuto 1001111 Errore !! 1011001 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)

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 01011 e 01111 hanno distanza uno, le due configurazioni 01011 e 01101 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) ?

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| 2 1 37| 2 1 18| 2 0 9| 2 1 1001011 => 75 4| 2 0 2| 2 0 1| 2 1

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 1 7 3 9 BCD 0001 0111 0011 1001 Nella notazione “packed” in un “byte” (8 bit ) sono contenuti due digit. In un calcolatore il numero precedente sarebbe rappresentato da due bytes 00010111 (17) ; 00111001 (39) Notazione “unpacked”: un byte per ogni digit. Il numero precedente sarebbe rappresentato da 4 bytes 000000001 00000111 00000011 00001001 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

Conversione fra codice binario e BCD Per passare dal binario a BCD basta dividere per 1010 ovvero 000010102 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 001101012 = 5310 00110101 : 1010 = 00000101 00000011 (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 00001001 00000010 (92 in BCD) 00001001 x 1010 = 01011010 (9010) che sommato a 0000010 dà esattamente 01011100 ovvero (9210) Nel caso di BCD packed si deve moltiplicare 1010 (10102) per il nibble più significativo e sommarlo a quello meno significativo

Operazioni aritmetiche in BCD Somma 24 + 13 = 37 15 + 9 =24 19 + 28 = 47 0010 0100 + 0001 0101 + 0001 1001 + 0001 0011 = 0000 1001 = 0010 1000 = ----------- ----------- ------------ 0011 0111 0001 1110 ? invalido 0100 0001 41 invalido bisogna aggiungere 6 (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 1 è già stato inserito) 0001 1110 + 0100 0001 + 0000 0110 = 0000 0110 = ----------- ----------- 0010 0100 24 !! 0100 0111 47 Se si ottengono numeri BCD maggiori di 9 oppure vi è un riporto fra i digit allora bisogna comunque aggiungere 6

Operazioni aritmetiche in BCD Altre operazioni 37 – 12 = 25 65 – 19 = 46 41 – 18 = 23 2 (prestito) 2 (prestito) 0011 0111 – 0110 0101 - 0100 0001 - 0001 0010 = 0001 1001 = 0001 1000 = ----------- ----------- ----------- 0010 0101 25 0100 1100 invalido 0010 1001 29 errore sottrarre 6 sottrarre 6 0100 1100 – 0010 1001 - 0000 0110 = 0000 0110 = ----------- ----------- 0100 0110 46 0010 0011 23 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 (0000 1001 x 0000 0100) = 0010 0100 => (0010 0100 : 1010) = 0000 0011 con resto 0000 0110 In BCD non trattiamo i numeri negativi

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 00 0 0000 1 1 1 0 1 1 1 01 1 0001 0 0 1 0 0 1 0 02 2 0010 1 0 1 1 1 0 1 03 3 0011 1 0 1 1 0 1 1 . . . . . . . . . . . . . . . . . . . . 09 9 1001 1 1 1 1 0 1 1 10 A 1010 1 1 1 1 1 1 0 14 E 1110 1 1 0 1 1 0 1 15 F 1111 1 1 0 1 1 0 0 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

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 ?

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 0 0 1 0 1 1 0 1 1 0 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)

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 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 A parte le costanti e le identità vi sono le seguenti funzioni caratteristiche f14 funzione OR Simbolo (+) f8 funzione AND Simbolo (.) f1 funzione NOR Simbolo f7 funzione NAND Simbolo f6 funzione EXOR Simbolo (Å) f9 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

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 : 0+0=0 0+1=1 1+0=1 1+1=1 0.0=0 0.1=0 1.0=0 1.1=1 !0=1 !1=0 NB: operazioni su SIMBOLI e NON numeri/bit !!!! Simbolo del prodotto logico (normalmente omesso)

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 000 0 001 0 010 1 011 0 100 1 101 0 110 1 111 0 Espressioni equivalenti: due espressioni che danno luogo alla stessa tabella della verità Proprietà: valgono la proprietà, riflessiva, simmetrica e transitiva

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 000 0 001 0 010 1 011 0 100 1 101 0 110 1 111 0 X F=(((X+Y). !Z). !0) Y F Z Ne discende che una espressione corrisponde a uno schema logico Vediamo questo schema XYZ F 000 0 001 0 010 1 011 0 100 1 101 0 110 1 111 0 X Y F Stessa tabella della verità: equivalenza !! Z

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

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)

Algebra di commutazione e operatori logici Sintesi XYZ F 000 0 001 1 !X!YZ 010 1 !XY!Z 011 0 100 1 X!Y!Z 101 0 110 1 XY!Z 111 1 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

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 000 0 X + Y + Z 001 1 010 1 011 0 X +!Y +!Z 100 1 101 0 !X + Y +!Z 110 1 111 1 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à

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 000 0 001 1 010 1 011 ? 100 1 101 0 110 ? 111 1 Ovviamente la cosa ha senso in fase di sintesi. L’analisi di un circuito genera sempre tabelle completamente specificate

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 0 1 2 3 4 5 6 7 8 9 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) 1 3 4 5 7 9 11 12 13 15 fe = !( !D!C!B!A +!D!CB!A + !DCB!A + D!C!B!A + D!CB!A + DCB!A ) 0 2 6 8 10 14 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) 0 2 6 8 10 14

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

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

Introduzione Altera

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]

Simulazione timing (segmento acceso= segnale di uscita basso) 1 3 2 E C 8 LT C D BL

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 00 0 0 01 1 0 S = a exor b 10 1 0 R = ab 11 0 1 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 000 0 0 001 1 0 010 1 0 011 0 1 100 1 0 101 0 1 110 0 1 111 1 1 HA1 b a S1 R1 HA2 c R2 R=ab+ c(a exor b) HA1 HA2 S =(a exor b) exor c) HA1 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

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

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

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

Zona ingrandita 27+25 24+22= 128+32+16+4 = 180

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

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

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

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

74138 Altera Altera Demux 3:8 Ingresso=1 implicito

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

Comparatore Altera bit per bit (valore assoluto)

1 se bit corrispondenti uguali

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 (255-239=16)

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

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

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

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

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 000 1 001 1 010 1 011 0 100 1 101 0 110 0 111 1 = !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)

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

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

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=

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

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

Tutte le altre configurazioni BCD | Binario -------|---------- dcba | edcba 0 0001 | 00001 0 0011 | 00011 0 0101 | 00101 0 0111 | 00111 0 1001 | 01001 1 0001 | 01011 1 0011 | 01101 1 0101 | 01111 1 0111 | 10001 1 1001 | 10011 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 è 1 1001 (19) e che i numeri pari non sono convertiti. Quali sono le condizioni di indifferenza ?

00 01 11 10 dc ba Da BCD a binario solo dispari BCD | Binario -------|---------- dcba | edcba 0 0001 | 00001 0 0011 | 00011 0 0101 | 00101 0 0111 | 00111 0 1001 | 01001 1 0001 | 01011 1 0011 | 01101 1 0101 | 01111 1 0111 | 10001 1 1001 | 10011 b = 00 01 11 10 dc ba - 1 e=0 e=1 !eb e!b + = e Å b Sintetizzare le altre funzioni

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 =

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)

Sommatore BCD integrato

Interpretare, riportare e simulare con ALTERA

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)

? 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 ?

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

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 0 1 0 1 1 1 ----------- 0 0 Z 1 0 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

(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*

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

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

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

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

Memorie EPROM EPROM Memorie non volatili a sola lettura Capacità a multipli di 2: 32K, 64K, 128K, 256K…… Sigle: 27512, 271024 (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

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).

ALU http://ee.usc.edu/ee459lib/datasheets/DM74LS181.pdf

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

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)

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 http://www.eecs.umich.edu/~jhayes/iscas.restore/74181.html

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 00 0 11 1 LH L 01 0 10 1 HL H 10 1 01 0 HH L 11 0 00 1 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

Altera 74181

Buffer Simulare !!!