Circuti AND, OR, NOT Porte logiche AND OR NOT A B C Esempio E = ~((AB) + (~BC)) E
NAND e NOR NAND (AND con uscita negata): ~(A B) NOR (OR con uscita negata): ~(A+B) Si può dimostrare che le operazioni NAND o NOR (e le corrispondenti porte) sono sufficienti per implementare qualsiasi funzione logica
Sintesi di circuiti combinatori Ogni funzione logica può essere rappresentata come equazione logica o come tabella di verità Data una tabella di verità o una equazione logica, come si sintetizza il circuito combinatorio che la implementa? Ogni equazione logica può essere scritta in forma canonica tramite l uso degli operatori AND, OR e NOT Forma canonica SP (somma di prodotti) Primo livello AND, secondo livello OR Forma canonica PS (prodotto di somme) Primo livello OR, secondo livello AND Esistono tecniche per minimizzare il numero di porte: Mappe di Karnaugh Algoritmo di Quine McCluskey
Esercizio Dati tre ingressi A, B, C realizzare un circuito che fornisca in uscita tre segnali: D è vera se almeno uno degli ingressi è vero E è vera se esattamente due input sono veri F è vera se tutti e tre gli input sono veri Intuitivamente le equazioni sono: D = A + B + C F = ABC E = ( AB + BC + AC) (ABC)
Esercizio Dati tre ingressi A, B, C realizzare un circuito che fornisca in uscita tre segnali: D è vera se almeno uno degli ingressi è vero E è vera se esattamente due input sono veri F è vera se tutti e tre gli input sono veri A B C D E F 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 1 1 1 1 0 1 0 0 1 0 0 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 0 1
Esercizio Dati tre ingressi A, B, C realizzare un circuito che fornisca in uscita tre segnali: D è vera se almeno uno degli ingressi è vero E è vera se esattamente due input sono veri F è vera se tutti e tre gli input sono veri A B C D E F 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 1 1 1 1 0 Prodotto di somme D = (A + B + C) 1 0 0 1 0 0 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 0 1
Esercizio Dati tre ingressi A, B, C realizzare un circuito che fornisca in uscita tre segnali: D è vera se almeno uno degli ingressi è vero E è vera se esattamente due input sono veri F è vera se tutti e tre gli input sono veri A B C D E F 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 1 1 1 1 0 Prodotto di somme E = (A+B+C) (A+B+ C) (A+ B+C) ( A+B+C) ( A+ B+ C) 1 0 0 1 0 0 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 0 1
Esercizio Dati tre ingressi A, B, C realizzare un circuito che fornisca in uscita tre segnali: D è vera se almeno uno degli ingressi è vero E è vera se esattamente due input sono veri F è vera se tutti e tre gli input sono veri A B C D E F 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 1 1 1 1 0 1 0 0 1 0 0 Prodotto di somme F = (A+B+C) (A+B+ C) (A+ B+C) (A+ B+ C)( A+B+C) ( A+B+ C)( A+ B+C) 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 0 1
Esercizio Dati tre ingressi A, B, C realizzare un circuito che fornisca in uscita tre segnali: D è vera se almeno uno degli ingressi è vero E è vera se esattamente due input sono veri F è vera se tutti e tre gli input sono veri A B C D E F 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 1 1 1 1 0 1 0 0 1 0 0 1 0 1 1 1 0 1 1 0 1 1 0 Somma di prodotti D = ( A BC)+( AB C)+( ABC)+ (A B C)+(A BC)+(AB C)+(ABC) E = ( ABC)+(A BC)+(AB C) F = ABC 1 1 1 1 0 1
Esercizio E = ( ABC)+(A BC)+(AB C) A B C E
PLA La rappresentazione SP corrisponde a una comune implementazione chiamata Array a Logica Programmabile Ha 2 livelli di logica un array di porte AND (input termini prodotto) un array di porte OR (termini prodotto output) Esempio:
Decoder Circuito combinatorio con n input e 2 n output Traduce gli n bit di input nell equivalente valore binario, e abilita a 1 l uscita corrispondente, mentre le altre uscite sono disabilitate a 0 Esiste anche l encoder, che esegue l operazione inversa Esempio di un decoder a 3 bit:
Multiplexer Due insiemi di input n input dati log 2 n input selettori L output corrisponde al valore del dato di input selezionato dai valori dei selettori di input Multiplexer 2 a 1 (a 1 bit) e sua implementazione Multiplexer 2 a 1 (a 32 bit) e sua implementazione
Arithmetic Logic Unit Circuito combinatorio all interno del processore per l esecuzione di istruzioni macchina di tipo aritmetico/ logiche (e di confronto) Quindi l ALU deve essere in grado di eseguire: somme (add) sottrazioni (sub) istruzioni di confronto (slt, beq, bne) funzioni logiche (and, or) Vediamo come è costruita una semplice ALU
Addizionatore L ALU deve includere un addizionatore per realizzare le somme di numeri interi in complemento a 2 Potremmo costruire un unico circuito combinatorio che implementa un addizionatore a n bit dati 2n input: A n-1 A 0 B n-1 B 0 n+1 diverse funzioni di output: Rip C n-1 C 0 solo due livelli di logica, ma con porte AND e OR con molti input fan-in delle porte molto elevato (non ammissibile) Soluzione di compromesso, basata su una serie di 1-bit adder collegati in sequenza il segnale deve attraversare più livelli di logica porte con fan-in limitato (ammissibile) circuito che usa lo stesso metodo usato dall algoritmo carta e penna a cui siamo abituati
Addizionatore a singolo bit A B Rip Sum Rip_out 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 Rip Rip AB 0 1 AB 0 00 01 11 10 0 1 0 1 1 0 1 0 Sum 00 01 11 10 0 0 1 0 1 0 1 1 1 Sum = ~A ~B Rip + ~A B ~Rip + A B Rip + A ~B ~Rip Rip_out Rip_out = Rip B + A B + Rip A
Porta XOR La funzione Sum non può essere semplificata ben 4 porte AND La costruzione di un addizionassero a 1 bit diventa più semplice impiegando porte XOR funzione logica che vale 0 (F) se entrambi gli ingressi sono uguali, ovvero entrambi 0 (F) o entrambi 1 (T) esempio di or esclusivo (XOR) nel linguaggio comune: o rimango a casa oppure vado al cinema A B XOR 0 0 0 0 1 1 1 0 1 1 1 0
Addizionatore a 1 bit e XOR Visto che la somma tra una coppia di bit A e B si esprime con A xor B abbiamo: Sum = A xor B xor Rip Rip_out = A B + (A xor B) Rip A B Rip Sum Rip_out 0 0 0 0 0 0 0 1 1 0 A B Rip Sum 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 Rip_out
1-bit ALU 1-bit ALU usata per eseguire le istruzioni macchina seguenti: and $2, $3, $4 or $2, $3, $4 CarryIn Operation add $2, $3, $4 Operation è un segnale di controllo a 2 bit usato per selezionare quale ingresso del multiplexer deve uscire a 0 1 Result determina il tipo di operazione che l ALU deve eseguire l ALU è la tipica componente che fa parte del Datapath (Parte Operativa) del processore La Parte Controllo comanda l esecuzione delle varie istruzioni settando opportunamente i segnali di controllo dell ALU (e delle altre componenti della Parte operativa) b CarryOut 2
32-bit ALU catena di 1-bit ALU con propagazione del Carry segnali di controllo per determinare l operazione che l ALU deve eseguire Operation: propagato a tutte le 1-bit ALU
Sottrazione La 1-bit ALU precedente può essere resa più complessa per poter eseguire: sub $2, $3, $4 Operazione di sottrazione: trasformata in: $2 = $3 - $4 $2 = $3 + (-$4) (-$4) significa che bisogna prima determinare l opposto (il complemento a 2) del numero signed contenuto in $4 il complemento a 2 si ottiene 1. effettuando l inversione (complemento a 1 bit-a-bit) 2. sommando 1 l ALU deve quindi possedere i circuiti predisposti per invertire il secondo operando e sommare 1 per sommare 1, basta porre ad 1 il carry-in dell ALU Binvert Operation Istruzione 0 00 and 0 01 or 0 10 sum 1 11 sub
Componente ALU Simbolo usato per rappresentare la componente ALU nel progetto della CPU. ALU operation comprende i segnali di controllo Bnegate e Operation.