Capitolo 2 Codifica binaria dell informazione 2. Rappresentazione dell informazione 2.2 Codifica di caratteri 2.3 Codifica dei numeri 2.4 Trasmissione dell informazione 2.5 Protezione dell informazione
2. Rappresentazione dell informazione
Simbolo, alfabeto e stringa Informazione - Stringa di lunghezza finita formata da simboli appartenenti ad un alfabeto di definizione A: s s 2 s i s n- s n con s i A : {a, a 2,.., a m } Esempi: Alfabeto A: insieme di informazioni elementari testo e caratteri numero e cifre immagine e pixel/colore-toni di grigio parlato e fonemi musica e note disegno e pendenza/lunghezza di tratti misura e posizione di un indice...
La codifica binaria della informazione n bit b b 2 b 3 b n codice binario
Codice binario Codice binario - Funzione dall insieme delle 2 n configurazioni di n bit ad un insieme di M informazioni (simboli alfanumerici, colori, eventi, stati interni, ecc.). Condizione necessaria per la codifica: 2 n M 2 n config. n.u. no 5 z a M informazioni
Proprietà di un codice Codice: rappresentazione convenzionale dell informazione. La scelta di un codice è condivisa da sorgente e destinazione, ed ha due gradi di libertà: il numero n di bit (qualsiasi, purché 2 n M) l associazione tra configurazioni e informazioni A parità di n e di M, le associazioni possibili sono: C = 2 n! / (2 n -M)! n =, M = 2 C = 2 n = 2, M = 4 C = 24 n = 3, M = 8 C = 4.32 n = 4, M = C = 29.59.43.4
Codici ridondanti e codici non ridondanti 2 n M n: n di bit 8 7 6 5 4 3 2 Codici ridondanti n > n min Codici 2 22 42 62 M: n di informazioni non ridondanti Impossibilità di codifica n min = lg 2 M
2 + - segno 4.32 cifre decimali n.u. colori altri 29.59.43.399 codici a 4 bit BCD zero uno due tre quattro cinque sei sette otto nove 7 segmenti /
Codice a 7 segmenti a e f g c b a b c d e f g zero uno ecc. d a b c d e f g Universal Product Code 2 3 4 5 6 7 8 9
La conversione di codice (trascodifica) codici esterni Trascodifica Trascodifica codice interno Unità di elaborazione e di memoria Il codice interno è di norma non ridondante per minimizzare il numero di bit da elaborare e da memorizzare. Il codice esterno è di norma ridondante, per semplificare la generazione e l interpretazione delle informazioni, e standard, per rendere possibile la connessione di macchine (o unità di I/O) realizzate da Costruttori diversi.
La calcolatrice tascabile Codice ridondante per la visualizzazione dei dati Codice ridondante per la introduzione dei dati e dei comandi Codice BCD per la rappresentazione interna dei numeri
Codici proprietari e codici standard Codice proprietario - Codice fissato da un Costruttore per mettere in comunicazione macchine di sua produzione. L uso di codici proprietari mira ad ottimizzare le prestazioni e a proteggere il mercato di certe macchine. Esempi: Linguaggio Assembler, Periferiche, Telecomando TV Codice standard - Codice fissato da norme internazionali (de iure) o dal Costruttore di una macchina ampiamente utilizzata sul mercato (de facto). L uso di codici standard nelle unità di I/O consente di collegare macchine realizzate da Costruttori diversi. Esempi: Stampanti e Calcolatori, Calcolatori e Calcolatori
2.2 La codifica dei caratteri
Il codice ASCII a 7 bit (967) caratteri di controllo SP @! A " 2 B # 3 C $ 4 D % 5 E & 6 F ' 7 G ( 8 H ) 9 I * : J + ; K, < L - = M. > N /? O P ' p Q a q R b r S c s T d t U e u V f v W g w X h x Y i y Z j z [ k { \ l ] m } ^ n ~ _ o DEL
Codice ASCII esteso (8 e 6 bit) 3 bit 8 conf 5 bit : 32 configurazioni Lo standard Unicode (6 bit) codifica in binario i caratteri di tutte le lingue!
Bit map: un codice d uscita ridondante per simboli alfanumerici Stampanti ad impatto: ASCII Stampanti laser, a getto, monitor: BITMAP Bianco/nero: pixel, bit Tonalità: pixel, 8 bit Colori RGB: pixel, 3x8 bit Font Matrice di pixel ( picture element ): ad es. 8x8
Codifica di immagini 48 Scena reale 72 R {,,2,..,254,255} G {,,2,..,254,255} B {,,2,..,254,255} 24 bit/pixel Immagine digitalizzata: 72 * 48 * 24 = 8.294.4 8 Mbits
Codifica di immagini video In tale ottica, la registrazione di un film della durata di 2 ore comporta una capacità di memoria pari a (3 frame/s): 2 * 6 * 6 * 3 * 8 Mbits = 728 Gbits Essendo la capacità di un DVD pari a 37.6 Gbits, è sufficiente (!?) allo scopo dotarsi di 46 DVD. A meno che
Tecniche di compressione Tipologie: con perdita di informazione (lossy compression) senza perdita di informazione (lossless compression) Contesto tipico, rispettivamente: elaborazione di immagini elaborazione di testi Efficienza o fattore di compressione: Size [Original (Uncompressed) Info] Size [Compressed Info]
Il codice (lossless) di Huffman Libro (qualsiasi) scritto in lingua italiana: FC = 5 / Σ n(s i ) f(s i ) =.25 s i A
2.3 La codifica dei numeri
Rappresentazione dei numeri Esterna: BCD, ASCII, Unicode Interna: Sistema di numerazione in base 2
Il numero minimo di bit (n min ) necessario per rappresentare l'insieme dei k (M) numeri interi non negativi di k cifre decimali ({,,, k -}) è: n min = lg 2 M = lg 2 k = k * lg 2 = k * 3,32. Il codice BCD, ancorché irridondante dal punto di vista della rappresentazione delle singole cifre decimali, comporta un numero di bit decisamente maggiore: n BCD = k * lg 2 = k * 3,32 = k * 4 > n min, k = 2, 3,. La ridondanza è tanto più significativa quanto più elevato è il valore di k. numero di bit 4 3 2 codice binario codice BCD 2 3 4 5 6 7 8 9 numero di cifre decimali n BCD 4 8 2 6 2 24 28 32 36 n min 4 7 4 7 2 24 27 3 n BCD - n min 2 2 3 4 4 5 6
Sistemi di numerazione Un sistema di numerazione è definito da: un insieme di simboli elementari; un insieme di regole che stabiliscono le modalità di rappresentazione di grandezze numeriche in termini di simboli elementari; un insieme di regole che stabiliscono le modalità di elaborazione di grandezze numeriche espresse in notazione simbolica. I sistemi di numerazione si distinguono in: sistemi non posizionali (sistema di numerazione romano), sistemi posizionali (sistema di numerazione decimale). 667 MDCLXVII
Sistema di numerazione posizionale in base b (b 2) ) Rappresentazione: (N b ) = (a n- a,a - a -m ) b a k {,,., b-}, k 2) Valore: (N b ) = (a n- b n- + + a b + a - b - + + a -m b -m ) b
I sistemi di numerazione binario, ottale, esadecimale base=2, {,} base=8, {,,2,3,4,5,6,7} base=6, {,,2,3,4,5,6,7,8,9,A,B,C,D,E,F} Conversione di rappresentazione (base) B B (B, B = 2, 8, 6): B = 2 B = 8, 6 N 2 = --- N 8 = 534 -- N 6 = AC4 B = 8, 6 B = 2 N 8 = 5236 N 2 = N 6 = E82 N 2 = N 2 3 4 5 6 7 8 9 2 3 4 5 6 N 2 N 8 2 3 4 5 6 7 2 3 4 5 6 7 2 N 6 2 3 4 5 6 7 8 9 A B C D E F
Conversione di base: B B ( B, B 2) (N) B = (I,F) B = (a n- a,a - a -m ) B (N) B = (?,?) B Metodo di conversione polinomiale: (N) B = (a n- B n- + + a B + a - B - + + a -m B -m ) B Il metodo di conversione polinomiale si avvale delle regole di rappresentazione e di elaborazione del sistema di numerazione in base B, e pertanto è convenientemente utilizzabile per operare la conversione dalla base B = (di norma 2) alla base B =. Esempio: B = 2 B = (,) 2 = ( + 2 + 4 + 8 + 6 + 32 + +,5 +,25) = (38,25) Esempio: B = 3 B = (22) 3 = (2 + 2 3 + 9) = (7)
Conversione di base: B B ( B, B 2) (N) B = (I,F) B = (a n- a,a - a -m ) B (N) B = (?,?) B Metodo di conversione iterativa: (N) B = (c i- c,c - c -f ) B (I) B (F) B = (c i- B i- + + c B + c ) B = ((c i- B i-2 + + c ) B + c ) B = (I B + c ) B c = parte frazionaria di (I/B ) B, c = parte frazionaria di (I /B ) B, = (c - B - + c -2 B -2 + + c -f B -f ) B = ((c - + c -2 B - + + c -f B -f+ ) B - ) B = ((c - + F ) B - ) B c - = parte intera di (F B ) B, c -2 = parte intera di (F B ) B,
Conversione di base: B B ( B, B 2) Il metodo di conversione iterativa si avvale delle regole di rappresentazione e di elaborazione del sistema di numerazione in base B, e pertanto è convenientemente utilizzabile per operare la conversione dalla base B = alla base B = (di norma 2). Esempio: B = B = 2 (3,75) = (,) 2 I : 2 = I + c k (k =,, ) 3 65 65 32 32 6 6 8 8 4 4 2 2 F 2 = c -k (k=,2, ) + F,75,5,5
Conversione di base: B B ( B, B 2) Al contrario di quanto avviene per la parte intera, il procedimento di conversione della parte frazionaria può non terminare in un numero finito di iterazioni. In tal caso la conversione è da intendersi completata al raggiungimento della precisione desiderata, con un eventuale arrotondamento dell ultima cifra significativa. Esempio: B = B = 2 (,8) = (,) 2 F 2 = c -k (k=,2, ) + F,8,6,6,2,2,4,4,8,8 B, B : B B Esempio: B = 3 B = 6 (22) 3 = (7) = () 6
Operazioni aritmetiche
S = A + B Addizione A, B, S: n-bit unsigned integer A, B, S 2 n - c out r n C out = S 2 4 - C out = S > 2 4 - r n- r n-2 a n- a n-2 a a b n- b n-2 b b s n- s n-2 s A B S A B S r s (5) (9) (4) (8) (9) (7) riporto (carry) + Esempi n=4 a i r i r i a i b i r i+ s i s i Half b i Adder r i+ s i a Full i b Adder r i+ i
Addizione a n- b n- a b a b c out FA... FA HA r i s i a Full i b Adder r i+ i a i s n- s s s i Half b i Adder r i+ a i b i r i Half Adder Half Adder s i r i+ a i b i s i a i b i s i r i+ r i+ r i
Addizione a k- b k- a b b a FA... FA FA c in c in A B k k k-bit Adder k S c out c out s k- s s E se k < n? esempio: k = 8, n = 6 R = OP + OP 2 OP, OP 2, R: 6-bit UINT CLC /* clear carry-out */ LOAD A, OP LSB /* first load operands */ LOAD B, OP 2 LSB /* least significant bytes, */ ADC /* perform addition (c in =c out ) */ STORE R LSB, S /* and save the result; */ LOAD A, OP MSB /* then load operands */ LOAD B, OP 2 MSB /* most significant bytes, */ ADC /* perform addition (c in =c out ) */ STORE R MSB, S /* and save the result; */ JC Error /* if carry-out then */
Sottrazione D = A - B A, B, D: n-bit unsigned integer A, B, D 2 n - b out b out = D b out = D < p n p n- p n-2 a n- a n-2 a a b n- b n-2 b b d n- d n-2 d A B D A B D p d (9) (5) (4) (8) (9)??? prestito (borrow) + Esempi n=4 a i p i a i b i p i+ d i d i Half b i Subtractor p i+ p i d i a Full i b Subtractor p i+ i
Sottrazione a n- b n- a b a b b out FS... FS HS p i d i a Full i b Subtractor p i+ i a i d n- d d d i Half b i Subtractor p i+ a i b i p i Half Sub or Half Sub or d i p i+ a i b i d i a i b i d i p i+ p i+ p i
Sottrazione a k- b k- a b b a FS... FS FS b in b in A B k k k-bit Subtractor k D b out b out d k- d d E se k < n? esempio: k = 8, n = 6 R = OP - OP 2 OP, OP 2, R: 6-bit UINT CLB /* clear borrow-out */ LOAD A, OP LSB /* first load operands */ LOAD B, OP 2 LSB /* least significant bytes, */ SBB /* perform subtraction (b in =b out ) */ STORE R LSB, D /* and save the result; */ LOAD A, OP MSB /* then load operands */ LOAD B, OP 2 MSB /* most significant bytes, */ SBB /* perform subtraction (b in =b out ) */ STORE R MSB, D /* and save the result; */ JB Error /* if borrow-out then */
Rappresentazione dei numeri relativi A = a n- a n-2 a a n-bit signed integer Segno e valore assoluto a n- (:+, :-) n = 4 a n-2 a a Complemento a 2 2 (-A) = 2 n - 2 (A) = not 2 (A) + n = 4 (+5) A = (-5) A = (+5) A = (-5) A = + = -(2 n- -) A 2 n- - -2 n- A 2 n- - +7 +6 +5 +4 +3 +2 + + -7-6 -5-4 -3-2 - - a 3 a 2 a n = 4 a +7 +6 +5 +4 +3 +2 + + - -2-3 -4-5 -6-7 -8
Addizione di numeri relativi c in A B 4 4 4-bit Adder 4 S c out stesso addizionatore??? A, B: 4-bit unsigned integers A = (5) B = (9) S = (4) = A + B OK A, B: 4-bit signed integers Complemento a 2 A = (+5) B = (-7) S = (-2) = A + B OK Segno e valore assoluto A = (+5) B = (-) S = (-6) A + B = (+4) NO
Sottrazione di numeri relativi A, B: n-bit 2 complement signed integers L operazione di sottrazione è riconducibile ad un operazione di addizione, previa complementazione del sottraendo: A B = A + (-B) c in A B n n n-bit Adder n S c out b in A B n n n-bit Subtractor n D b out n = 4 A = (+5) B = (+2) A B = (+5 + (-2)) = (+3) + (-) = + + =??? OK
Carry-out & Overflow c in A B 4 4 4-bit Adder 4 S c out c out evidenzia correttamente la non rappresentabilità del risultato mediante n bit solo nel caso di unsigned integers L analoga indicazione nel caso di signed integers è derivabile dal confronto del segno degli operandi e del risultato: OK (6) () (7) OK (7) () (8) A, B, S: 4-bit unsigned / signed integers OK (9) (9) (2) OK (+6) (+) (+7) NO (+7) (+) (-8) OK (-7) (-7) (+2) A B S A B S A B S s n- OK NO a n- b n- OK OK OK OK NO OK OK (5) () () NO (-) (+) (+) A B S
Signed & Unsigned Integers: +/- a n- b n- s n- = & overflow o più semplicemente c out r n- overflow a n- b n- a n-2 b n-2 a b b a carry-in overflow carry-out FA FA... FA FA s n- s n-2 s s c in A B n n n-bit Adder n S c out overflow unsigned integers signed integers
Rappresentazione dei numeri razionali Notazione scientifica: N 2 = (M 2 E ) 2 Esponente (E) Mantissa (M) s e j- e j-2... e s m k- m k-2... m, Es.: 32 bit 7-bit (complemento a 2) 25-bit (segno e valore assoluto) E min = -2 6 = -64 E max = 2 6 - = 63 M min =,5 M max = -2-24 notazione frazionaria normalizzata:,5 M < (tranne lo zero (32 )) ± (,5 2-64 (-2-24 ) 2 63 ) ± (2,7-2,9 9 )
2.4 Trasmissione
Modalità
Modalità di trasmissione dei bit: compromesso spazio/tempo n segnali Es.: Codice a 8 bit 8 Trasmissione in parallelo 4 2 Trasmissione in serie/parallelo Trasmissione in serie 2 4 8 n intervalli Esempio: processori Intel
Modalità di trasmissione dei bit: convertitori S/P e P/S Elaborazione trasmis. in serie Convertitore S/P trasmissione in parallelo Convertitore P/S trasmis. in serie La modalità di trasmissione all interno della macchina è di norma in parallelo (per massimizzare la velocità di elaborazione) La modalità di trasmissione all esterno della macchina è di norma in serie (per minimizzare la complessità del supporto fisico) Esempi: interfaccia di tastiera, interfaccia video
La conversione P/S di un byte b b b 2 b 3 b 4 b 5 b 6 b 7 Il selettore 2 3 4 5 6 7 Ingresso: b, b, b 2, b 3, b 4, b 5, b 6, b 7 Uscita: b b b 2 b 3 b 4 b 5 b 6 b 7 Data Path Oscillatore Contatore con 8 stati Stato: (N) 2 Controller
La serializzazione di due bit i i M U X a u deviatore a i i u se a= allora u=i altrimenti u=i
Conversione S/P di un byte Il distributore b b b 2 b 3 b 4 b 5 b 6 b 7 2 3 4 5 6 7 b b b 2 b 3 b 4 b 5 b 6 b 7 (N) 2 Contatore con 8 stati Oscillatore
La distribuzione di due bit u i D E C f f u a f f a Contatore con 2 stati Il Decoder genera 2 flag di validità, di cui uno solo alla volta ha valore. L uscita che riceve tale valore è la destinazione del bit d ingresso i
Protocolli
Modalità di controllo (ASCII a 7 bit) : codifica dei comandi e protocollo di scambio telescrivente Comandi per il protocollo telescrivente NUL DLE SOH DC STX DC2 ETX DC3 EOT DC4 ENQ NAK ACK SYN BEL ETB BS CAN HT EM LF SUB VT ESC FF FS CR GS SO RS SI US Esempio: sorgente tempo BEL ENQ SOH.. LF CR STX.. EOT ACK/NAK destinazione
Sincronizzazione La destinazione deve sapere in quali istanti di tempo i valori presenti sul canale sono significativi. Si hanno due casi: accoppiamento stretto accoppiamento lasco S D S D
Comunicazione asincrona di un byte: il protocollo RS232 dato p Selettore a 2 vie bit Dispositivo periferico Tx Contatore con 2 stati Porta seriale N.B. devono operare quasi allo stesso ritmo! Riposo Start I bit II bit... VIII bit Parità Stop
2.5 Protezione
Disturbi e Guasti sorgente canale destinazione linea di trasmissione unità di memoria Agendo opportunamente a livello di realizzazione fisica del canale, si può formulare l ipotesi che l alterazione di un bit (o errore) nell ambito di una stringa di n bit sia un evento aleatorio a) indipendente dalla posizione del bit nella stringa, b) caratterizzato da una probabilità di occorrenza p (tasso di errore). Conseguentemente la probabilità che si abbiano e errori è data da: P e = ( n ) e pe (-p) n-e Se n p << P >> P >> P 2 >>
L ipotesi degli errori indipendenti numero di bit trasferiti = 24 probabilità di alterazione di e bit.9.8.7.6.5.4.3.2 e= e=2 e=3 e=4 e=5 e=6 e=7 e=8 e>8. -5-4.5-4 -3.5-3 -2.5-2 logaritmo in base del tasso di errore
L ipotesi degli errori indipendenti numero di bit trasferiti = 248 probabilità di alterazione di e bit.9.8.7.6.5.4.3.2 e= e=2 e=3 e=4 e=5 e=6 e=7 e=8 e>8. -5-4.5-4 -3.5-3 -2.5-2 logaritmo in base del tasso di errore
Rilevazione/Correzione di errori singoli R ( ) C n = = n min I I NO NO I I n = 2 SI NO M = 2 I I n = 3 I I SI SI se P >> P 2 : correzione errore ( )
Distanza minima di un codice Distanza fra due configurazioni binarie A, B di n bit: D(A,B) numero di bit omologhi in A, B con valore diverso. Esempi: D(,) = ; D(,) = 2; D(,) = 3 Distanza minima di un codice C: D MIN (C) valore minimo della distanza tra due qualsiasi configurazioni utilizzate dal codice C. I codici non ridondanti hanno D MIN =. I codici ridondanti possono avere D MIN >. Esempi: D MIN (Codice BCD) = D MIN (Codice /) = 2; D MIN (Codice 7-Segmenti) =
Error(s) Detecting/Correcting Codes Un codice con D MIN R+ consente la rilevazione di R errori R+C+ (R C) consente la correzione di C errori e la rilevazione di R errori D MIN EDC ECC - - - 2-3 2-4 3 2 5 4 2-6 5 2 3 n max di errori contemporanei: rilevabili rilevabili e correggibili rilevabili soltanto
Codici separabili: rilevazione di errori singoli I bit di informazione (information bits) C bit di controllo (check bits) I C = I I I F F C sindrome di errore Tx Rx Le due configurazioni, della sindrome di errore identificano rispettivamente la presenza e l assenza di un errore singolo.
Codici separabili: correzione di errori singoli I C : 2 C I + C + I 2 3 4 5 6 7 C 2 3 3 3 4 4 4 I correzione F Tx F C Rx C bit di sindrome d errore Le 2 C configurazioni delle sindromi di errore devono indicare se non c è errore ( situazione) e se c è, dov è (I + C situazioni).
SINGLE EDC: codice + bit di parità Bit di parità p - bit che la sorgente aggiunge ad una stringa di bit di codifica al fine di renderne pari il n di uni. Errore di parità e - bit che la destinazione pone a se e solo se riceve una configurazione con un numero dispari di uni. x x 2 p Codice con D MIN = 2 x x 2 p e
Calcolo della parità e della sindrome d errore x x 2 x x 2 x x 2 p p = F(x, x 2 ) x x 2 p p e confronto Si/No e = E(x, x 2, p ) p = F(x, x 2 ) e = F(p, p )
SINGLE ECC: il codice di Hamming I = 4: 2 C I + C + C = 3 I + C = 7 M= info I=4 (BCD) X 3 X 2 X X C=3 H 4 H 2 H 2 3 4 5 6 7 H H 2 X 3 H 4 X 2 X X 2 Tx H = X 3 X 2 X H 2 = X 3 X X 3 H 4 = X 2 X X 4 5 6 7 8 9 Rx E = X 3 X 2 X H E 2 = X 3 X X H 2 E 4 = X 2 X X H 4 Se E 4 = E 2 = E = In caso contrario: E 4 E 2 E = indice del bit affetto da errore e quindi da correggere (complementare) OK NO
Esempi: Tx 9 : X 3 X 2 X X = H = X 3 X 2 X = H 2 = X 3 X X = H 4 = X 2 X X = 2 3 4 5 6 7 H H 2 X 3 H 4 X 2 X X X 3 X 2 X X H 4 H 2 H = Caso : nessun errore Caso 2: errore singolo X 3 X 2 X X H 4 H 2 H = X 3 X 2 X X H 4 H 2 H = Rx E = X 3 X 2 X H = E 2 = X 3 X X H 2 = E 4 = X 2 X X H 4 = E 4 E 2 E = X k = X k, k E = X 3 X 2 X H = E 2 = X 3 X X H 2 = E 4 = X 2 X X H 4 = E 4 E 2 E = X 3 = not X 3 X k = X k, k 3 OK X 3 X 2 X X = ( 9 ) X 3 X 2 X X = ( 9 ) OK
Esempi: Tx 9 : X 3 X 2 X X = H = X 3 X 2 X = H 2 = X 3 X X = H 4 = X 2 X X = 2 3 4 5 6 7 H H 2 X 3 H 4 X 2 X X X 3 X 2 X X H 4 H 2 H = Caso 3: errore doppio X 3 X 2 X X H 4 H 2 H = Rx E = X 3 X 2 X H = E 2 = X 3 X X H 2 = E 4 = X 2 X X H 4 = E 4 E 2 E = X 2 = not X 2 X k = X k, k 2 errore singolo ( ) errore doppio ( ) X 3 X 2 X X = ( 7 ) NO correzione errore ( )