RETI LOGICHE Daniele Manzaroli dmanzarli@arces.unibo.it Esercitazione: mappe di Karnaugh Quartus II: segnali di ingresso Codice Binario: Rappresentazione e Calcolo Codice BCD e trascodifica Codice 7 segmenti ed esercitazione Half adder, Full adder 1 1
Esempio: codifica delle cifre decimali Alcuni codici binari per le cifre decimali Cifre decimali 1111110 0110000 1101101 1111001 0110011 1011011 0011111 1110000 1111111 1110011 7 segmenti abcdefg zero uno due tre quattro cinque sei sette otto nove 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 BCD 1000000000 0100000000 0010000000 0001000000 0000100000 0000010000 0000001000 0000000100 0000000010 0000000001 uno su dieci
Codice a 7 segmenti g a f b e c d
Conversione da base 2 a base 10 e viceversa Dato un numero binario naturale a n bit B = bn-1 bn-2 … b0 , il suo valore decimale corrispondente N è dato da: (N)10 = bn-1 .2n-1 + bn-2 .2n-2 + …+ b0 .20 Dato un numero naturale N espresso in base 10, la corrispondente rappresentazione in base 2 B = bn-1 bn-2 … b0 può essere ottenuta attraverso il seguente processo iterativo di divisione per 2: resto (N)10 = bn-1 .2n-1 + bn-2 .2n-2 + …+ b0 .20 : 2 b0 = resto b1 (N)10 = bn-1 .2n-2 + bn-2 .2n-3 + …+ b1 .20 : 2 ……………….. resto bn-2 (N)10 = bn-1 .2 + bn-2 : 2 = resto bn-1 (N)10 = bn-1 : 2
Somma fra numeri naturali Somma fra due numeri da un bit 0 + 0 = 0 ; 1 + 0 = 1 ; 0 + 1 = 1 ; 1 + 1 = 0 con riporto (C) di 1 Somma “colonna per colonna” fra due numeri da n bit ci ai bi ci+1 si 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 S = A + B cn cn-1 ci c1 an-1 ai a1 a0 + bn-1 bi b1 b0 = sn-1 si s1 s0
Esempio di somma Calcolare 9010 + 15010 A = 9010 = 010110102 = 5A16 B = 15010 = 100101102 = 9616 Riporto 1 1 1 1 A B Risultato 1 1 1 1
Sottrazione fra numeri naturali Sottrazione fra due numeri da un bit 0 - 0 = 0 ; 1 - 0 = 1 ; 1 - 1 = 0 ; 0 - 1 = 1 con prestito (P) di 1 Sottrazione “colonna per colonna” fra due numeri da n bit p a b P D 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 1 1 0 0 0 1 1 1 1 1 D = A - B (A B) an-1 ai a1 a0 bn-1 bi b1 b0 - pn-1 pi p1 dn-1 di d1 d0 =
Esempio di sottrazione Calcolare 19810 – 10810 A = 19810 = 110001102 B = 10810 = 011011002 Prestiti 1 1 1 1 1 A B Risultato 1 1 1 1
Numeri relativi: rappresentazione segno-valore assoluto bn-1 bn-2 b1 b0 n bit Valore decimale Valore binario -3 111 -2 110 -1 101 100 000 1 001 2 010 3 011 segno (0: positivo, 1: negativo) valore assoluto |N| = (bn-2 .2n-2 + …+ b0 .20) (n = 3) N [-(2n-1 - 1), +(2n-1 - 1)] Doppia rappresentazione per lo 0 Simmetria tra valore positivo massimo e valore negativo minimo
Numeri relativi: rappresentazione in complemento a 2 N 0 : segno-valore assoluto bn-1 bn-2 b1 b0 n bit N < 0 : 2(-N) con (-N) espresso in segno-valore assoluto N.B. - anche nella rappresentazione in complemento a 2 il bit più significativo indica il segno (0:positivo, 1:negativo). Valore decimale Valore binario in complemento a 2 Valore binario in modulo e segno -4 100 x -3 101 111 -2 110 -1 000 000 e 100 1 001 2 010 3 011 Dato un numero binario B a n bit rappresentato in complemento a 2, allora: N = - bn-1.2n-1 + bn-2 .2n-2 + …+ b0 .20 Unica rappresentazione per lo 0 Asimmetria tra valore positivo massimo e valore negativo minimo N [-2n-1, +(2n-1 - 1)]
Esercizio Si esprimano in decimale ed esadecimale i seguenti numeri binari relativi in complemento a due: 101001, 101101, 11110, 01010, 11001. 101001 -25 + 23 + 20 = -23 1110 1001 = E9 101101 -25 + 23 + 22 + 20 = -19 1110 1101 = ED 11110 -24 + 23 + 22 + 21 = -2 1111 1110 = FE 11001 -24 + 23 + 20 = -7 1111 1001 = F9 11 11
Esercizi (-12) + (+4) (-12) + (-1) Nel caso di n=5 bit +1210 = 011002 -1210 = 2(1210) = 2(011002) = 100112+1 = 101002 410 = 001002 (-12) + (+4) Riporto 01000 A + -12 10100 + B = +4 00100 = Risultato +8 11000 Risultato: -1•24 + 1•23 + 0•22 + 0•21 + 0•20 = -810 (-12) + (-1) -110 = 2(110) = 2(000012) = 111102+1 = 111112 Riporto 111000 A + -12 10100 + B = -1 11111 = Risultato -13 10011 Risultato: -1•24 + 0•23 + 0•22 + 1•21 + 1•20 = -1310 12 12
Esercizi (-12) - (-12) (-12) + (+12) Nel caso di n=5 bit -1210 = 2(1210) = 2(011002) = 100112+1 = 101002 (-12) - (-12) Prestito 00000 A + -12 10100 - B = = Risultato (-12) + (+12) -110 = 2(110) = 2(000012) = 111102+1 = 111112 Riporto 111000 A + -12 10100 + B = +12 01100 = Risultato 00000 13 13
Esercizi (-12) + (-12) Overflow (-12) - (+5) Nel caso di n=5 bit -1210 = 2(1210) = 2(011002) = 100112+1 = 101002 (-12) + (-12) Overflow Riporto 101000 A + -12 10100 + B = = Risultato 01000 (-12) - (+5) Prestito 011110 A + +10 10100 - B = +5 00101 = Risultato -15 10111 14 Reti Logiche A.A. 2009-10 14
NOT(B) = (2n-1) - B Not(15610) utilizzando 8 bit C = 1100112 = 25 + 24 + 2 + 1 = 9910 Prestiti 1 A = 2n - 1 B C = NOT(B) 1 1 1 1 15 15
Complemento a 2 di un numero naturale N di n bit 2N = 2n - N Calcolo di 2N senza la sottrazione 2N = 2n - N = (2n - 1) - N + 1 = not (N) + 1 2N = not(N) + 1 CI 4 BIT a0 ADDER a1 a2 a3 s0 s1 s2 s3 b0 b1 b2 b3 CO 1 2N N 16 16
Calcolatori Elettronici A.A. 2008-09 Esempio Calcolare il complemento a 2 di 710 e 510 , utilizzando n=4 bit N=7 27 2n-N = 24-7 = 16-7 = 910 = 10012 oppure, senza la sottrazione 27 NOT(N)+1 = NOT(0111)+1 = 1000+1 = 10012 N=5 25 2n-N = 24-5 = 16-5 = 1110 = 10112 25 NOT(N)+1 = NOT(0101)+1 = 1010+1 = 10112 Calcolatori Elettronici A.A. 2008-09 17 17
Proprietà della rappresentazione in complemento a 2 Siano A e B due numeri rappresentati in complemento a 2 A+B = somma algebrica fra A e B 2A = -A A + -3 1101 -4 1100 B = +3 0011 +5 0101 Risultato -7 1001 -1 1111 +1 0001 A +1 0001 -7 1001 1110 + 1 0110 + 1 2A -1 1111 +7 0111 A - B = A + 2B Per sommare o sottrarre due numeri relativi espressi in complemento a 2 è sufficiente un addizionatore. A = 3 ; B = 4 (in complemento a 2 con 4 bit) A = 0011 B = 0100 A – B = 0011 + 2(0100) = 0011 + 1100 = 1111
Somma e sottrazione di numeri espressi in complemento a 2 Siano A e B due numeri binari espressi in complemento a 2 SOMMA SOTTRAZIONE CI 4 BIT a0 ADDER a1 a2 a3 s0 s1 s2 s3 b0 b1 b2 b3 CO 1 CI 4 BIT a0 ADDER a1 a2 a3 s0 s1 s2 s3 b0 b1 b2 b3 CO A A A + B A - B B B
Calcolatori Elettronici A.A. 2008-09 Esempio Calcolare 710-510 utilizzando il complemento a 2, nel caso di n=4 bit 710 = 01112 510 = 01012 A–B = A + 2B = A + [NOT(B)+1] 710-510 = 01112 + [NOT(01012)+1] = 01112 + [10102+1] = 01112 + [10112] = 11110 r 0111 + 1011 = -------- 0010 = 0010 = 210 Calcolatori Elettronici A.A. 2008-09 20 20
Esercizi (1) Calcolare 610-310 utilizzando il complemento a 2, nel caso di n=4 bit 610 = 01102 310 = 00112 A–B = A + 2B = A + [NOT(B)+1] 610-310 = 01102 + [NOT(00112)+1] = 01102 + [11002+1] = 01102 + [11012] = 0110 + 1101 = -------- 0011 = 310
Esercizi (2) Nel caso di n=4 bit, Rappresentare +5 e –6 in‘segno valore assoluto’ +510 = 01012 -610 = 11102 Rappresentare +5 e –6 in ‘complemento a 2’ +510 = 01012 -0•23 + 1•22 + 0•21 + 1•20 = +510 -610 = 2(610) = 2(01102) = 10012+1 = 10102 -1•23 + 0•22 + 1•21 + 0•20 = -610
Esercizi (-12) + (+4) (-12) + (-1) Nel caso di n=5 bit +1210 = 011002 -1210 = 2(1210) = 2(011002) = 100112+1 = 101002 410 = 001002 (-12) + (+4) Riporto 01000 A + -12 10100 + B = +4 00100 = Risultato +8 11000 Risultato: -1•24 + 1•23 + 0•22 + 0•21 + 0•20 = +810 (-12) + (-1) -110 = 2(110) = 2(000012) = 111102+1 = 111112 Riporto 111000 A + -12 10100 + B = -1 11111 = Risultato -13 10011 Risultato: -1•24 + 0•23 + 0•22 + 1•21 + 1•20 = -1310 23 23
Esercizi (-12) - (-12) (-12) + (+12) Nel caso di n=5 bit -1210 = 2(1210) = 2(011002) = 100112+1 = 101002 (-12) - (-12) Prestito 00000 A + -12 10100 - B = = Risultato (-12) + (+12) -110 = 2(110) = 2(000012) = 111102+1 = 111112 Riporto 111000 A + -12 10100 + B = +12 01100 = Risultato 00000 24 24
Esercizi (-12) + (-4) (+10) + (-5) 1010 = 01010 Nel caso di n=5 bit -1210 = 2(1210) = 2(011002) = 100112+1 = 101002 410 = 001002 -410 = 2(410) = 2(001002) = 110112+1 = 111002 (-12) + (-4) Riporto 111000 A + -12 10100 + B = -4 11100 = Risultato -16 10000 (+10) + (-5) 1010 = 01010 -510 = 2(510) = 2(001012) = 110102+1 = 110112 Riporto 110100 A + +10 01010 + B = -5 11011 = Risultato -15 00101 25 25
Half adder, full adder, n bit adder CI S FA A B CO … CI A0 B0 B1 A1 An-1 Bn-1 S0 S1 Sn-1 CO A B S C 1 A B CI S CO 1 A B S C HA A S HA B C CI A B S CO FA A[0..n-1] B[0..n-1] S[0..n-1]