Reti combinatorie una rete combinatoria è un circuito logico avente n ingressi (x,,,x n ) ed m uscite (y,y 2,,y m ), ciascuno dei quali assume valori binari (/), e tale che a ciascuna combinazione degli ingressi corrisponde un unica combinazione delle uscite. da un punto di vista logico, ogni uscita può essere definita come una funzione booleana degli ingressi y i = y i (x,,,x n ). ad ogni istante, il valore delle uscite dipende unicamente dal valore assunto dagli ingressi nello stesso istante.
Addizionatore Esegue l addizione di cifre binarie fornendo in uscita la cifra somma e la cifra riporto. Sono possibili due schemi: semiaddizionatore (half adder) 2 cifre in ingresso addizionatore completo (full adder) 2 cifre in ingresso + carry in ingresso Half adder x y Half Adder s r x y s r x y s r
x y c Full Adder Full s Adder r x y c s r c xy c xy s =!x!yc+!xy!c+xyc+x!y!c r = xy+yc+xc Full Adder sintesi diretta x y c s r
Full Adder sintesi per decomposizione s =!x!yc+!xy!c+xyc+x!y!c = (!x!y+xy)c+(!xy+x!y)!c r = xy+yc+xc = xy+!xyc+xyc+xyc+x!yc = xy+(!xy+x!y)c σ =!xy+x!y ρ = xy s =!σc + σ!c r = ρ + σc x y HA ρ σ HA2 s r c Decodificatore Rete combinatoria ad n ingressi ed a 2 n uscite. Per ogni combinazione degli ingressi, solo una uscita assume valore mentre le altre sono uguali a. x y y 2 y 3 y 4 decodificatore /4 x y y 2 y 3 y 4 y =!x! y 2 =!x y 3 = x! y 4 = x x y y 2 y 3 y 4 x y x y y 2 x 3 x 4 y 2 y 6 x 3 x 4 decodificatore /6 (semiselezione) y 6
Multiplexer Rete combinatoria i cui ingressi sono divisi in ingressi dati (n) e ingressi selezione ( log 2 n ), mentre l uscita è unica ed è uguale ad uno degli ingressi dati, scelto sulla base degli ingressi selezione. x x 3 x 4 MUX y s s 2 y x x 3 realizzazione? x 4 s s 2 Il ritardo nelle reti combinatorie In Out Comportamento ideale: In Out t t La realizzazione circuitale delle porte logiche non rispetta questo comportamento a causa degli effetti capacitivi presenti, che generano dei transitori.
V in V out Comportamento reale: (Vdd) V in V out (GND) t Vin Vout Vout G G2 Vdd Vdd/2 Vin d Vout d2 Vout GND d=d+d2 t Con due porte in cascata, il ritardo di propagazione è uguale alla somma dei ritardi.
Vin Vout Vout2 Vout3 Il ritardo sulle due uscite non è lo stesso. Ritardo(Vin Vout2)=Ritardo(Vin Vout)+Ritardo(Vout Vout2) Ritardo(Vin Vout3)=Ritardo(Vin Vout)+Ritardo(Vout Vout2)+ Ritardo(Vout2 Vout3) Percorso critico (Critical path): il percorso a ritardo maggiore (Vin Vout3), che caratterizza l intero circuito. Progetto di una n. [Arthritic Logic Unit or (rare) Arithmetic Logic Unit] A random-number generator supplied as standard with all computer systems. Stan Kelly-Bootle, The Devil s DP Dictionary Compiti dell : esecuzione delle operazioni aritmetiche (addizioni, sottrazioni, moltiplicazioni, ) operazione esecuzione delle operazioni logiche (AND, OR, ) produzione del risultato e modifica dei flag A 32 risultato B 32 32
Specifiche di progetto 2 ingressi da 32 bit uscita da 32 bit almeno 6 operazioni possibili (add, sub, adc, and, or, not) gestione dei flag C, V, N, Z Quale approccio progettuale seguire? Forza bruta: rete combinatoria a 68 ingressi e 36 uscite. Approccio top-down: decomposizione in sottoproblemi, impiego di componenti già noti. C V NZ A 32 32 S 32 B m 3 Decomponiamo l a 32 bit in 32 da bit (bit slice ) A 32 B 32 C a3 b3 3 m co s3 a co s b m 3 M V N Z S 32
da bit Come realizzarla? Quali tipi di componenti noti ci possono essere utili? a b 3 M s a b FA sum Full Adder Porte logiche Multiplexer Operation Operation a b s a a b s b FA 2 a2 b2 2 s2 Operazioni possibili: somma, AND, OR. a3 b3 3 s3
Realizzazione della sottrazione uso della rappresentazione per complementi Binvert CarryIn Operation A-B=A+B B =!B+ a Result b 2 CarryOut Gestione dell overflow OVERFLOW: il risultato dell operazione non è rappresentabile ( > MAX o < MIN) Si verifica solo in presenza di operandi con lo stesso segno Criteri per la rilevazione: segno del risultato diverso dal segno degli operandi riporto entrante nel MSB diverso dal riporto uscente dal MSB Esempio (a 4 bit): + 7 3 + 4 5 6 7
Gestione dell overflow Overflow= CarryIn[3] XOR CarryOut[3] a3 b3 -bit CarryIn3 a3 -bit b3 CarryOut3 Result3 Result3 Cin3 Cout3 Overflow Overflow Modifiche da apportare alle e 3 Cin C Cselect Binvert CarryIn Operation Binvert Operation a3 Result3 a Result b3 2 b 2 OVFL detection CarryOut 3 C V N
Gestione del flag Z a b s Il flag Z vale quando il risultato è nullo! a b s a2 b2 2 s2 Z a3 b3 3 s3 Progetto complessivo Binvert Cin Cselect Operation a b CarryIn CarryOut Result Op Binv Cin Csel add adc X sub and X X or X X not X X a b a2 b2 CarryIn CarryOut CarryIn 2 CarryOut Result Result2 Z a3 b3 CarryIn 3 Result3 C V N
Valutazione del progetto Quanto vale il percorso critico? n*cp Problema: 32*CP il ripple carry adder è lento. CP CP CP CP A B A B A2 B2 CarryIn A3 B3 -bit CarryIn CarryOut -bit CarryIn2 CarryOut -bit CarryOut2 CarryIn3 -bit CarryOut3 Result Result Result2 Result3