VOLUME 2 ELETTRONICA DIGITALE CAPITOLO 7

Похожие документы
La codifica dei caratteri di un testo

La Rappresentazione dell Informazione

Floating-point: mantissa La mantissa e codicata in modulo e segno su 24 bit, la mantissa e sempre normalizzata nella forma 1:XXXXX si rappresenta solo

Elementi di informatica

CODIFICA DELL INFORMAZIONE E CODICI BINARI

Tabella dei codici ASCII standard

Introduzione al Linguaggio C


Sistemi di numerazione e codici. Capitolo 1

Pag. 1. La Rappresentazione e la Codifica delle informazioni (parte 2) Tipi di dati. Informatica Facoltà di Medicina Veterinaria

Rappresentazione di dati: caratteri. Appunti a cura del prof. Ing. Mario Catalano

R. Cusani, F. Cuomo: Telecomunicazioni - DataLinkLayer: Gestione degli errori, Aprile 2010

1.2d: La codifica Digitale dei caratteri

Numeri e caratteri in binario. Prof.ssa Antonella Serra

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

1.2d: La codifica Digitale dei caratteri

Codifica dell Informazione

La codifica digitale

La rappresentazione delle informazioni

Codifica dell Informazione

Codifica binaria. Rappresentazioni medianti basi diverse

Rappresentazione dell Informazione

La codifica binaria. Fondamenti di Informatica. Daniele Loiacono

modificato da andynaz Cambiamenti di base Tecniche Informatiche di Base

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione dei numeri relativi

La codifica. dell informazione

I.4 Rappresentazione dell informazione

Somma di numeri binari

LA CODIFICA DELL INFORMAZIONE. Introduzione ai sistemi informatici D. Sciuto, G. Buonanno, L. Mari, McGraw-Hill Cap.2

Codifica dell Informazione

Cap. 2 - Rappresentazione in base 2 dei numeri interi

10.. Codici correttori d errore. Modulo TLC:TRASMISSIONI Codici correttori d errore

Rappresentazione di dati: numerazione binaria. Appunti per la cl. 3 Di A cura del prof. Ing. Mario Catalano

La codifica binaria. Informatica B. Daniele Loiacono

2.1 Rappresentazione binaria dell informazione I Interruttore I 0 alto 1 1 basso 0

Rappresentazione e Codifica dell Informazione

Rappresentazione dell informazione

Algoritmi Istruzioni che operano su dati. Per scrivere un programma è necessario. che l esecutore automatico sia in grado di.

Codifica di canale. (dalle dispense e dalle fotocopie) Trasmissione dell Informazione

Tipi di elaboratori Rappresentazione della informazione Codifica della informazione

Rappresentazione dei dati in memoria

Informatica (A-K) 3. Aritmetica del Computer

Esercitazioni di Reti Logiche. Lezione 1 Rappresentazione dell'informazione. Zeynep KIZILTAN zkiziltan@deis.unibo.it

Un ripasso di aritmetica: Conversione dalla base 10 alla base 2

Rappresentazione dell Informazione. Sistemi di Elaborazione delle Informazioni Rappresentazione Informazione 1

Calcolo numerico e programmazione Rappresentazione dei numeri

Rappresentazione di dati: caratteri di testo. Appunti a cura del prof. Ing. Mario Catalano

LETTORE BARCODE V 2.1 EN MANUALE UTENTE

Guida di riferimento dei codici a barre

La codifica. dell informazione

Modulo 1. Concetti base della Tecnologia dell informazione. Prof. Nicolello Cristiano. Modulo 1

Hardware, software e periferiche. Facoltà di Lettere e Filosofia anno accademico 2008/2009 secondo semestre

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

Транскрипт:

VOLUME 2 ELETTRONICA DIGITALE CAPITOLO 7 ALLEGATO B CODICI BINARI

ELETTRONICA DIGITALE 7.B.1 ALLEGATO B CODICI BINARI B.1. Definizioni Un codice eá un insieme convenzionale di regole e di simboli idonei a rappresentare gli elementi di un altro insieme. In elettronica digitale i numeri, le lettere dell'alfabeto e i segni d'interpunzione sono rappresentati con stringhe di bit. Il codice binario eá un insieme di regole che servono per stabilire una corrispondenza biunivoca tra i numeri, le lettere dell'alfabeto, i segni d'interpunzione e le stringhe di bit che li devono rappresentare. Un codice puoá essere cosõá classificato: efficiente; ridondante; pesato; non pesato; a distanza unitaria (o ciclico); autocomplementante. Se la stringa eá lunga n bit, il numero massimo di simboli che si possono rappresentare eá 2 n.seisimbolisono N ˆ 2 n allora tutte le configurazioni binarie sono utilizzate; se N < 2 n alcune configurazioni restano inutilizzate, quindi sono senza significato. Noti gli N simboli da rappresentare, per determinare il numero intero n* di bit necessari si applica la formula: n log 2 N Un codice si dice efficiente se utilizza un numero di bit strettamente necessario, cioeá quando n ˆ n e quindi tutte le 2 n configurazioni sono utilizzate. Un codice si dice ridondante se utilizza un numero di bit superiore a quello strettamente indispensabile, cioeá se n > n. Un codice si dice pesato quando eá possibile stabilire una regola matematica che consenta di determinare la stringa di bit corrispondente al simbolo da rappresentare. Condizione necessaria ma non sufficiente percheâ un codice sia pesato eá che la somma dei pesi sia compresa tra 9 e 15. Se si rispetta questa condizione, sono rappresentate tutte le dieci cifre decimali. Un codice eá non pesato, se non esiste una regola matematica per determinarlo; affincheâ sia noto, eá necessario conoscere l'intera tabella di corrispondenza tra le stringhe di bit e i simboli da rappresentare. Per esempio, il sistema di numerazione binario puoá essere considerato un codice pesato, anche se eá difficilmente utilizzabile percheâ il numero di bit varia continuamente, mentre i circuiti digitali devono lavorare su un numero di bit fisso. Si definisce distanza il numero di bit che varia tra due configurazioni successive. Un codice eá a distanza unitaria quando, tra ogni configurazione e la successiva, cambia un solo bit. Un codice eá autocomplementante quando, invertendo ogni singolo bit (complemento a 1), si ottiene il complemento a 9 del numero decimale rappresentato. Condizione necessaria percheâ un codice pesato sia ad autocomplementazione eá che la somma dei pesi deve essere uguale a 9. I codici possono essere anche classificati come segue: numerici; alfanumerici; per gli errori. B.2. Codici numerici I codici numerici servono a rappresentare i numeri e sono il BCD (8421), AIKEN (o BCD 2421), XS3 (Eccesso 3) e Gray. Il BCD (Binary Coded Decimal, decimale codificato in binario) eá un codice pesato piuá vicino al sistema di numerazione binario. Ogni numero decimale eá rappresentato con un nibble (gruppo di quattro bit), percheâ la cifra 9, che eá la piuá grande della base, necessita di quattro bit per la sua rappresentazione. Delle sedici combinazioni che si possono scrivere con quattro bit, solo dieci sono quelle utilizzate, le altre sei sono combinazioni non utilizzate. Si tratta dunque di un codice ridondante. Partendo dal bit piuá significativo (a sinistra), i pesi sono 8, 4, 2, 1, cioeá multipli di 2 come nel sistema binario naturale. EÁ il codice piuá utilizzato per eseguire le somme e in genere per la rappresentazione dei numeri nell'interfacciamento dei sistemi digitali con periferiche, stampanti o strumenti di misura. Non eá idoneo per le sottrazioni e inoltre, per il numero di bit utilizzato, non eá efficiente. La tab. B.1 riporta le dieci cifre decimali nei tre codici numerici piuá usati. TABELLA B.1 Cifre decimali codificate nei codici numerici. Decimale BCD 8421 AIKEN 2421 XS3 Esempio 1 0 0000 0000 0011 1 0001 0001 0100 2 0010 0010 0101 3 0011 0011 0110 4 0100 0100 0111 5 0101 1011 1000 6 0110 1100 1001 7 0111 1101 1010 8 1000 1110 1011 9 1001 1111 1100 In tab. B.2 eá rappresentato in BCD il numero decimale intero 359. TABELLA B.2 Il numero decimale 359 in BCD. Decimale 3 5 9 BCD 0011 0101 1001

7.B.2 ELETTRONICA DIGITALE TABELLA B.3 Il numero decimale 702,58 in BCD. TABELLA B.5 Il numero decimale 3619 nei vari codici. Decimale 7 0 2, 5 8 BCD 0111 0000 0010, 0101 1000 Esempio 2 In tab. B.3 eá rappresentato in BCD il numero decimale frazionario 702,58. Il BCD 2421 o AIKEN eá un codice pesato e autocomplementante. Le configurazioni sono riportate in tab. B.4. Rispetto al BCD 8421, l'aiken non eá ridondante, dato che tutte le sedici configurazioni sono utilizzate. Ogni singola cifra decimale eá convertita su quattro bit i cui pesi sono, a partire dal bit piuá significativo, 2, 4, 2, 1. Come si nota dalla tab. B.4, l'aiken, per le cifre decimali da 2 a 7, ammette due notazioni diverse. Il codice pertanto perde la caratteristica della corrispondenza biunivoca tra i numeri decimali e le stringhe di bit. EÁ necessario, ovviamente, stabilire quale delle due configurazioni adottare per i numeri da 2 a 7. La scelta non eá indifferente percheâ il codice eá costruito in modo tale che il complemento a 9 di ogni cifra decimale si ottiene con il suo complemento a 1. Per esempio, se si sceglie per il 7 la configurazione 1101, per il 2 eá obbligatoria la notazione 0010; e cosõá via per le altre coppie di numeri. Il codice Eccesso 3 (XS3) eá non pesato e autocomplementante. EÁ stato ottenuto sommando 3 a ogni configurazione del BCD 8421. Dalla tab. B.1 si nota che, anche in questo codice, il complemento a 9 si ottiene invertendo ogni singolo bit; ad esempio, 7 (1010) ha come complemento a 9 il 2 (0101). Il codice XS3 viene utilizzato da alcuni circuiti contatori. Con il codice autocomplementante sono facilitate le operazioni di sottrazione. TABELLA B.4 Codice BCD 2421 o AIKEN. Decimale BCD 2421 0 0000 1 0001 2 0010 3 4 1001 0011 0100 1010 Decimale 3 6 1 9 BCD 8421 0011 0110 0001 1001 AIKEN 0011 1100 0001 1111 XS3 0110 1001 0100 1100 Esempio 3 In tab. B.5 eá rappresentato il numero decimale 3619 nei vari codici. Il codice Gray, non pesato e a distanza unitaria, eá utilizzato per la codifica degli angoli, generalmente nei codificatori meccanici di posizione, realizzati con piste metalliche sulle quali strisciano dei contatti. Con la codifica Gray un solo contatto alla volta commuta da zona isolante a zona conduttrice. Il sistema diventa cosõá insensibile a eventuali false combinazioni che invece si verificano se piuá contatti commutano contemporaneamente. Si ipotizzi che il sistema debba commutare dalla posizione 7 alla posizione 8: nella notazione binaria vuol dire eseguire una transizione da 0111 a 1000. Poiche i circuiti reali hanno tempi di commutazione diversi quando passano da 0 a 1 piuttosto che da 1 a 0, il sistema non passa direttamente da 0111 a 1000, ma attraversa una combinazione intermedia: 0111! 0000! 1000. Si ha quindi una falsa risposta in corrispondenza di 0000, sequenza che il sistema non ha attraversato. La tab. B.6 riporta il codice Gray su 4 bit. TABELLA B.6 Codice Gray a 4 bit. Decimale Binario Gray 0 0000 0000 1 0001 0001 2 0010 0011 3 0011 0010 4 0100 0110 5 0101 0111 6 0110 0101 7 0111 0100 8 1000 1100 5 6 7 1011 0101 1100 0110 1101 0111 9 1001 1101 10 1010 1111 11 1011 1110 12 1100 1010 13 1101 1011 8 1110 9 1111 14 1110 1001 15 1111 1000

ELETTRONICA DIGITALE 7.B.3 B.3. Codici alfanumerici I codici alfanumerici sono strutturati in modo tale da rappresentare lettere (maiuscole e minuscole), numeri, segni di punteggiatura, simboli matematici e speciali, comandi per la trasmissione, la stampa e la separazione dati. Gli standard piuá utilizzati sono ASCII ed EBCDIC. L'ASCII (American Standard Code for Information Interchange) eá lo standard americano per lo scambio di informazioni; eá noto anche come US-ASCII (si pronuncia «ñski» in inglese e «asci» in italiano). EÁ un codice a 7 bit piuá un bit di paritaá (pari o dispari). Proposto nel 1963 come standard di comunicazione per telescriventi, fu in seguito approvato dall'iso (International Organization of Standardization, organismo internazionale di standardizzazione) con ISO 646 (tab. B.7) per tutte le comunicazioni. EÁ stato approvato anche dal CCITT (Consultative Committee International on Telephones and Telegraphy, comitato consultativo internazionale telefonico e telegrafico) che stabilisce gli standard per i modem. Il formato ASCII eá universalmente riconosciuto da tutti i computer, cosa non vera per i testi digitati e formattati con i diversi programmi applicativi in commercio. Qualsiasi computer puoá generare un file ASCII, ad esempio con Blocco Note di Windows o con un applicativo analogo, salvando il file in un formato esclusivamente testuale. TABELLA B.7 Codice ASCII. Colonne: b 7 b 6 b 5! Righe: b 4 b 3 b 2 b 1 # 0 1 2 3 4 5 6 7 0 NU DLE SP 0 @ P Á p 1 SOH DC1! 1 A Q a q 2 STX DC2 `` 2 B R b r 3 ETX DC3 # 3 C S c s 4 EOT DC4 $ 4 D T d t 5 ENQ NAK % 5 E U e u 6 ACK SYN & 6 F V f v 7 BEL ETB 7 G W g w 8 BS CAN ( 8 H X h x 9 HT EM ) 9 I Y i y 10 LF SUB * : J Z j z 11 VT ESC + ; K [ k { 12 FF FS, < L \ l - 13 CR GS - = M ] m } 14 SO RS. > N ^ n 15 SI US /? O --- o DEL Note. NUL (Ctrl-@) = nullo; SOH (Ctrl-A) = inizio intestazione; STX (Ctrl-B) = inizio testo; ETX (Ctrl-C) = fine testo; EOT (Ctrl-D) = fine trasmissione; ENQ (Ctrl-E) = interrogazione; ACK (Ctrl-F) = riconoscimento; BEL (Ctrl-G) = segnale acustico; BS (Ctrl-H) = arretramento di uno spazio; HT (Ctrl-I) = tabulazione orizzontale; LF (Ctrl-J) = interlinea; VT (Ctrl-K) = tabulazione verticale; FF (Ctrl-L) = intermodulo; CR (Ctrl-M) = ritorno carrello; SO (Ctrl-N) = fuori codice; SI (Ctrl-O) = in codice; DLE (Ctrl-P) = modifica collegamento; DC1 (Ctrl-Q) = controllo dispositivo 1 (XON); DC2 (Ctrl-R) = controllo dispositivo 2; DC3 (Ctrl-S) = controllo dispositivo 3 (XOFF); DC4 (Ctrl-T) = controllo dispositivo 4; NAK (Ctrl-U) = riconoscimento negativo; SYN (Ctrl-V) = sincronizzazione a riposo; ETB (Ctrl-W) = fine blocco trasmissione; CAN (Ctrl-X) = cancella; EM (Ctrl-Y) = fine del supporto; SUB (Ctrl-Z) = sostituzione; ESC (Ctrl-[) = fuori codice; FS (Ctrl-\) = separatore insieme dati; GS (Ctrl-]) = separatore di gruppo; RS (Ctrl-^) = separatore di record; US (Ctrl-_) = separatore di unitaá.

7.B.4 ELETTRONICA DIGITALE TABELLA B.8 Carattere «a» in codice ASCII. Esempio 4 Bit di colonna Bit di riga b 7 b 6 b 5 b 4 b 3 b 2 b 1 1 1 0 0 0 0 1 6 1 Il codice ASCII con cui viene rappresentata la lettera «a» eá indicato in tab. B.8. I simboli codificati in ASCII possono essere suddivisi in cinque gruppi: lettere minuscole (da 61 HEX a 7A HEX ) e maiuscole (da 41 HEX a 5A HEX ) dell'alfabeto inglese (a b c... A B C...); da notare che la distanza (20 HEX ) tra ogni lettera minuscola e la stessa maiuscola eá costante per facilitare la conversione; cifre decimali (0 1 2... 9); segni d'interpunzione (., ; :?!); simboli aritmetici (+ - * / \ %); segnali di controllo di dispositivi periferici, trasmissione, formato dell'informazione e altre funzioni. Esempio 5 In fig. B.1 eá riportato un tipico formato di comunicazione in ASCII. ISO ha poi diffuso anche un altro standard, chiamato comunemente ASCII esteso, che si diversifica per ogni tipo di alfabeto. L'esigenza nacque dalla necessitaá di codificare i simboli degli alfabeti diversi da quello occidentale. L'ASCII esteso eá codificato su 8 bit e puoá rappresentare 256 caratteri, tra i quali sono compresi i 128 caratteri dell'ascii a 7 bit. Le denominazioni sono le seguenti: ISO 8859-1 (Latin-1) per i linguaggi dell'europa occidentale; ISO 8859-2 (Latin-2) per i linguaggi dell'europa centrale; ISO 8859-5 (Latin/Cirillico) per i caratteri cirillici; altri, anche per le lingue orientali. Il codice EBCDIC (Extended Binary Coded Decimal Interchange Code) eá un'estensione del BCD, strutturato su 8 bit (b 7 b 6 b 5 b 4 = bit di colonna, b 3 b 2 b 1 b 0 = bit di riga), senza bit di paritaá, e puoá codificare 256 caratteri (tab. B.9). Era utilizzato nei sistemi operativi dei minicomputer e dei mainframe dell'ibm. FIGURA B.1 Tipico formato di un dato trasmesso in codice ASCII. TABELLA B.9 Codice EBCDIC. 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 NUL DLE DS SP & - ù é ë m { } \ 0 1 SOH DC1 SOS RSP eâ / EÂ a j Ä A J 1 2 STX DC2 FS SYN aã eã AÃ EÃ b k s B K S 2 3 ETX DC3 WUS IR aè eè AÈ EÈ c l t. C L T 3 4 PF RES BYP PN aá eá AÁ EÁ d m u # D M U 4 5 HT NL LF TRN aâ õâ AÂ IÂ e n v E N V 5 6 LC BS EOB NBS aä õã AÄ IÃ f o w } F O W 6 7 DEL POC ESC EOT aê õè AÊ IÈ g p x 1 / 4 G P X 7 8 GE CAN SA SBS cë õá CË IÁ h q y 1 / 2 H Q Y 8 9 RLF EM SFE IT n û NÄ Á i r z 3 / 4 I R Z 9 A SMN UBS SM RFF [ ] - : «a : SHY 1 2 3 B VT CU1 CSP CU3. $, #» ë oã uã OÃ UÃ C FF IFS MFA DC4 < * % @ ñ ± oè uè OÈ UÈ D CR IGS ENQ NAK ( ) _ Â yâ cëc YÂ.. oá uá OÁ UÁ E SO IRS ACK + ; > = á ' oâ uâ OÂ UÂ F SI IUS BEL SUB! ^? '' 1 6 oä yè OÄ EO

ELETTRONICA DIGITALE 7.B.5 Esempio 6 Il codice EBCDIC con cui viene rappresentata la lettera «a» eá indicato in tab. B.10. TABELLA B.10 Carattere «a» in EBCDIC. B.4. Codici a controllo di errore Le cause di errori nelle stringhe di bit possono essere due: variazioni indesiderate di tensione in fase di memorizzazione, rumore sul canale nei sistemi di trasmissione a distanza. Ne consegue che un 1 puoá trasformarsi in uno 0 e uno 0 puoá trasformarsi in un 1. La possibilitaá che un canale introduca un errore nella trasmissione di un dato eá studiato con la teoria della probabilitaá. Si definisce capacitaá di un canale il numero di bit (del dato) che puoá transitare nell'unitaá di tempo. Se un trasmettitore genera messaggi a un ritmo inferiore alla capacitaá del canale, esiste un sistema di codifica tale che la probabilitaá di errore puoá essere piccola a piacere. Viceversa se il ritmo con cui vengono generati i messaggi eá superiore alla capacitaá del canale, non saraá possibile trasmettere i messaggi senza errori. Un canale si definisce simmetrico se la probabilitaá che un 1 si trasformi in uno 0 eá uguale alla probabilitaá che uno 0 si trasformi in un 1. Un'ulteriore ipotesi eá che gli errori siano tutti eventi indipendenti tra loro. Ogni canale eá caratterizzato da un parametro BER (Bit Error Rate) definito come rapporto tra il numero di bit errati e il numero di bit trasmessi. In genere il BER eá compreso tra 10 7 e 10 3, valori che apparentemente sembrerebbero trascurabili, ma nell'esempio 7 si dimostra proprio che anche un BER ˆ 10 7 non eá affatto un valore irrilevante. Esempio 7 Bit di colonna Bit di riga b 7 b 6 b 5 b 4 b 3 b 2 b 1 b 0 1 0 0 0 0 0 0 1 8 1 Assegnato un canale con una velocitaá di trasmissione di 10 10 bit/s, si vuole calcolare il numero medio di bit errati in un secondo, supponendo un BER = 10 ±7. Indicando con N il numero bit errati e con v la velocitaá di trasmissione, si ha N ˆ vber ˆ 10 10 10 7 ˆ 10 3 bit=s da cui si deduce che un canale, caratterizzato da un errore di trasmissione di un bit ogni dieci milioni di bit trasmessi BER ˆ 10 7, quindi estremamente basso, commette un errore di mille bit in un secondo. EÁ possibile ridurre la probabilitaá di errore sui bit del dato utilizzando tecniche di codifica di canale, che consiste nell'aggiungere bit di ridondanza al dato da trasmettere. In ricezione la presenza dei bit di ridondanza permette di rilevare e/o correggere i bit errati nella trasmissione del messaggio. La codifica di canale non riduce la probabilitaá di errore in trasmissione (errore che eá dovuto unicamente al rumore presente sul canale), ma riduce gli errori sul dato in ricezione. L'inconveniente della codifica di canale consiste proprio nella ridondanza, cioeá nella trasmissione di bit non appartenenti al dato e quindi nella necessitaá di un tempo maggiore per la trasmissione, e nella maggiore complessitaá circuitale. I codici a controllo di errore possono essere di due tipi: rilevatori di errori, cioeá codici in grado di rilevare la presenza di un errore, ma non di correggerlo; correttori di errori, cioeá codici in grado di rilevare i bit errati e di correggerli. I codici a controllo di errore sono finalizzati alla ricerca dell'errore singolo. Infatti la probabilitaá che si verifichi un errore singolo, ovvero che un solo bit del dato in trasmissione sia errato, eá di gran lunga superiore alla probabilitaá che si verifichi un errore doppio, ovvero che due bit siano errati contemporaneamente. Gli errori multipli, cioeá piuá di due bit errati contemporaneamente, hanno ovviamente probabilitaá molto piuá bassa rispetto all'errore doppio e quindi a quello singolo. La strategia di impiego dei codici puoá essere di due tipi: ARQ (Automatic Repeat and request); FEC (Forward Error Correction). La strategia ARQ utilizza il codice per rilevare la sola presenza dell'errore nel dato ricevuto. In presenza di errore e non essendo in grado di correggerlo, il ricevitore chiede al trasmettitore di ritrasmettere il messaggio. Questa operazione necessita di un canale di ritorno, come mostrato in fig. B.2 Quando non eá possibile la ritrasmissione del messaggio, si utilizza la strategia FEC, cioeá il codice viene utilizzato per rilevare l'errore e per FIGURA B.2 Struttura hardware per strategia ARQ.

7.B.6 ELETTRONICA DIGITALE FIGURA B.3 Struttura hardware per strategia FEC. correggere il bit errato. L'architettura del sistema con strategia FEC eá indicata in fig. B.3 I codici a controllo di errore si possono classificare in base al modo con cui si inseriscono nel dato i bit di ridondanza. Si possono dividere in due grandi categorie: a blocchi; convoluzionali. I codici a blocchi sono cosõá definiti percheâ ogni parola (o blocco) eá composta da k bit del messaggio e q bit di ridondanza: n = k + q. Ogni blocco non ha una correlazione con gli altri blocchi e per questo motivo sono chiamati codici senza memoria. Sono noti anche come codici (n, k). I codici convoluzionali, invece, sono strutturati in modo tale da non generare parole indipendenti l'una dall'altra, ma da generare bit che influenzano anche gli altri bit della sequenza trasmessa. I codici a blocchi possono essere: lineari; non lineari; sistematici. I codici a blocchi si definiscono lineari quando la somma di due parole del codice produce un'altra parola che fa parte ancora del codice. I codici a blocchi si definiscono sistematici quando, in ogni parola del codice, i bit del messaggio sono posizionati all'inizio e i bit di controllo sono posizionati alla fine (tab. B.11). TABELLA B.11 Struttura di un codice a blocchi sistematico. I codici a blocchi lineari possono essere: a paritaá (pari o dispari); a ripetizione; Hamming. Bit del messaggio Bit di controllo Parola del codice b 1 b 2... b k c 1 c 2... c n-k I piuá utilizzati per la sola rilevazione dell'errore singolo sono i codici a controllo di paritaá. Hanno un grado minimo di ridondanza; infatti, ai bit della parola del codice viene aggiunto un solo bit di controllo, scelto in modo da ottenere parole tutte caratterizzate dalla stessa paritaá pari (even parity) o paritaá dispari (odd parity). In tab. B.12 eá riportato il codice BCD con il bit di paritaá pari e dispari. EÁ indifferente la posizione del bit di paritaá: puoá essere posizionato in testa o in coda. Tuttavia eá importante che anche il ricevitore ne conosca la posizione per ricostruire il dato trasmesso. Un codice a controllo di paritaá non ha capacitaá correttiva e puoá rilevare solo un numero dispari di errori. Quando la parola del codice arriva al ricevitore TABELLA B.12 Codice BCD con bit di paritaá. Decimale BCD ParitaÁ pari ParitaÁ dispari si possono verificare due casi: la paritaá (pari o dispari) risulta violata ma il ricevitore non eá in grado di effettuare la correzione del bit errato, che potrebbe essere quello del messaggio o quello di paritaá; sono possibili allora due strategie: la semplice segnalazione dell'errore oppure la richiesta di ritrasmissione del messaggio (strategia ARQ); la paritaá risulta violata ma l'errore eá stato doppio o quadruplo; in questo caso il ricevitore non eá in grado di segnalare l'errore. Il codice a controllo di paritaá conferisce una buona immunitaá dall'errore singolo. Il codice a ripetizione eá un codice a blocchi (n, k) lineare e sistematico. Ogni bit del messaggio viene trasmesso n volte; i bit di ridondanza sono q ˆ n 1, quindi eá un codice (n, 1). Esempio 8 0 0000 0 1 1 0001 1 0 2 0010 1 0 3 0011 0 1 4 0100 1 0 5 0101 0 1 6 0110 0 1 7 0111 1 0 8 1000 1 0 9 1001 0 1 Supponiamo di voler trasmettere il messaggio 1011 con n ˆ 3. In tab. B.13 eá mostrato un esempio di messaggio errato arrivato in ricezione. Si sono verificati quindi tre errori. TABELLA B.13 Dato trasmesso con codice a ripetizione. Messaggio 1 0 1 1 Messaggio trasmesso Messaggio ricevuto 111 000 111 111 101 001 111 110

ELETTRONICA DIGITALE 7.B.7 In funzione del sistema di codifica/decodifica adottato, eá possibile, dopo aver rilevato gli errori, adottare una delle seguenti strategie: ARQ, cioeá chiedere al trasmettitore di inviare nuovamente il messaggio; FEC, cioeá correggere i bit errati. Nel caso di strategia FEC, la ricostruzione del dato avviene di solito con decisione a maggioranza. Se n eá il numero di bit del blocco trasmesso (nell'esempio precedente, trattandosi di terne, era n ˆ 3), si considerano n 1 =2 ibit corretti. Pertanto se n ˆ 3, due bit del blocco si considerano corretti, mentre il terzo eá considerato errato, quindi da cambiare. Se si verificano due o tre errori nello stesso blocco non eá possibile la correzione. Naturalmente, all'aumentare del numero n di bit di ogni blocco diminuisce la probabilitaá di errore, ma aumenta il tempo di trasmissione. Per distanza si intende il numero di bit di cui differiscono tra loro due parole consecutive di un codice. Ad esempio, nel caso del codice BCD, il passaggio da 0 a 1 comporta il cambiamento di un solo bit, quindi la distanza eá uno. Nel passaggio da 7 a 8 cambiano tutti i quattro bit, percioá la distanza eá quattro. Vi sono poi situazioni intermedie. Si definisce distanza di Hamming la distanza minima d H tra due parole consecutive di un codice. In generale la distanza di Hamming per i codici vale uno. Ci sono alcuni codici in cui questa distanza eá superiore a uno. Per esempio, nel BCD con controllo di paritaá (tab. B.12) la distanza di Hamming vale due. Si deduce che se si presenta un solo bit errato, non appartenendo la nuova parola al codice, si puoá rivelare l'errore. La regola generale eá la seguente: se il numero e di bit errati per ogni dato eá minore della distanza di Hamming e < d H allora eá possibile rivelare l'errore. Se invece e d H non eá possibile rivelare gli errori. La capacitaá rivelativa di un codice eá d H 1. Se risulta che e < d=2, eá possibile correggere la parola sostituendola con quella piuá vicina appartenente al codice. Se invece risulta e d=2, la correzione non eá possibile percheâ la parola piuá vicina potrebbe non essere quella trasmessa. La regola generale per valutare la capacitaá correttiva di una codice eá la seguente: d H 2e 1. In ogni codice i bit di paritaá vengono posti in una posizione che dipende dall'azione che devono svolgere. Nel codice di Hamming, ad esempio, i bit di paritaá sono posti in una posizione tale da consentire di individuare esattamente il bit errato nella trasmissione. Se il dato da trasmettere eá a n bit, il codice Hamming introduce k bit di paritaá tali da soddisfare la relazione: 2 k k n 1 Per n ˆ 4, che eá il caso dei codici numerici, la relazione eá verificata se k ˆ 3. La posizione dei bit di paritaá eá indicata in tab. B.14. I bit del messaggio appaiono sempre in piuá TABELLA B.14 Posizione dei bit di controllo nel codice Hamming. Posizione 7 6 5 4 3 2 1 Composizione messaggio b 4 b 3 b 2 c 3 b 1 c 2 c 1 Note. Bit del dato da trasmettere = b 4 b 3 b 2 b 1 ; c 1 = bit di controllo di paritaá sulla terna = b 4 b 2 b 1 ; c 2 = bit di controllo di paritaá sulla terna = b 4 b 3 b 1 ; c 3 = bit di controllo di paritaá sulla terna = b 4 b 3 b 2. controlli di paritaá, mentre i bit di controllo in una sola prova. In tab. B.15 eá riportato lo schema di individuazione dei bit errati in funzione della combinazione c 3 c 2 c 1. Il codice Hamming rileva errori singoli e doppi, ma eá in grado di correggere soltanto errori singoli. La presenza di un errore doppio, infatti, induce il decodificatore a una non corretta segnalazione di errore singolo e pertanto la relativa correzione comporta un ulteriore errore. TABELLA B.15 Bit errato individuato con codice Hamming. c 3 c 2 c 1 Decimale Esempio 9 Si supponga di voler trasmettere il dato BCD 0111 e di scegliere la paritaá pari. Ipotizzando un errore in ricezione del bit b 3, si vuole verificare se il codice sia in grado di rilevare e correggere il bit errato. I due messaggi, quello trasmesso e quello ricevuto, sono riportati in tab. B.16. Nella fase di codifica vengono assegnati i valori ai bit di paritaá: b 4 b 2 b 1 ˆ 0 1 1; c 1 ˆ 0; b 4 b 3 b 1 ˆ 0 1 1; c 2 ˆ 0; b 4 b 3 b 2 ˆ 0 1 1; c 3 ˆ 0. Il decodificatore esegue le tre prove di paritaá pari sui seguenti gruppi: C 1 ˆ 7531ˆ b 4 b 2 b 1 c 1 ˆ 0110ˆ 0; C 2 ˆ 7632ˆ b 4 b 3 b 1 c 2 ˆ 0010ˆ 1; C 3 ˆ 7654ˆ b 4 b 3 b 2 c 3 ˆ 0010ˆ 1. Posizione bit errato 0 0 0 0 Nessuno 0 0 1 1 1 (c 1 ) 0 1 0 2 2 (c 2 ) 0 1 1 3 3 (b 1 ) 1 0 0 4 4 (c 3 ) 1 0 1 5 5 (b 2 ) 1 1 0 6 6 (b 3 ) 1 1 1 7 7 (b 4 ) La terna C 3 C 2 C 1 ˆ 1 1 0 indica il bit sei (b 3 ) come errato, quindi il suo valore viene corretto. TABELLA B.16 Esempio di messaggio errato. Posizione 7 6 5 4 3 2 1 Composizione messaggio Messaggio trasmesso Messaggio errato ricevuto b 4 b 3 b 2 c 3 b 1 c 2 c 1 0 1 1 0 1 0 0 0 0 1 0 1 0 0

7.B.8 ELETTRONICA DIGITALE Esempio 10 Si vuole risolvere il problema precedente con la paritaá dispari. Nella fase di codifica vengono assegnati i valori ai bit di paritaá: b 4 b 2 b1 ˆ 0 1 1; c 1 ˆ 1; b 4 b 3 b 1 ˆ 0 1 1; c 2 ˆ 1; b 4 b 3 b 2 ˆ 0 1 1; c 3 ˆ 1. Il decodificatore esegue le tre prove di paritaá dispari sui seguenti gruppi: C 1 ˆ 7531ˆ b 4 b 2 b 1 c 1 ˆ 0111ˆ 0; C 2 ˆ 7632ˆ b 4 b 3 b 1 c 2 ˆ 0011ˆ 1; C 3 ˆ 7654ˆ b 4 b 3 b 2 c 3 ˆ 0011ˆ 1. La terna C 3 C 2 C 1 ˆ 1 1 0 indica il bit sei (b 3 ) come errato. TABELLA B.17 Esempio di codice Hamming. Posizione 7 6 5 4 3 2 1 Composizione messaggio b 4 b 3 b 2 c 3 b 1 c 2 c 1 Messaggio trasmesso 1 0 0 1 0 1 1 Messaggio errato ricevuto 1 0 0 1 0 0 1 Esempio 11 Si supponga di voler trasmettere il dato BCD 1000 e di scegliere la paritaá pari (tab. B.17). Ipotizzando un errore in ricezione sul bit c 2, si vuole verificare che il codice sia in grado di rilevare e correggere il bit errato. Si assegnano i valori ai bit di controllo: b 4 b 2 b 1 ˆ 1 0 0; c 1 ˆ 1; b 4 b 3 b 1 ˆ 1 0 0; c 2 ˆ 1; b 4 b 3 b 2 ˆ 1 0 0; c 3 ˆ 1. Il decodificatore esegue le tre prove di paritaá pari: C 1 ˆ 7531ˆ b 4 b 2 b 1 c 1 ˆ 1001ˆ 0; C2 ˆ 7632ˆ b 4 b 3 b 1 c 2 ˆ 1001ˆ 1; C3 ˆ 7654ˆ b 4 b 3 b 2 c 3 ˆ 1001ˆ 0. La terna C 3 C 2 C 1 ˆ 0 1 0 indica il bit due (c 2 ) come errato. Esempio 12 Si vuole trasmettere il messaggio 1001 con la codifica della paritaá pari, ipotizzando che in ricezione vi siano due bit errati, c 2 e b 3 (tab. B.18). Si assegnano i valori ai bit di controllo: b 4 b 2 b 1 ˆ 1 0 1; c 1 ˆ 0; b 4 b 3 b 1 ˆ 1 0 1; c 2 ˆ 0; b 4 b 3 b 2 ˆ 1 0 0; c 3 ˆ 1. TABELLA B.18 Esempio di codice Hamming. Posizione 7 6 5 4 3 2 1 Composizione messaggio b 4 b 3 b 2 c 3 b 1 c 2 c 1 Messaggio trasmesso 1 0 0 1 1 0 0 Messaggio errato ricevuto 1 1 0 1 1 1 0 Il decodificatore esegue le tre prove di paritaá pari: C 1 ˆ 7531ˆ b 4 b 2 b 1 c 1 ˆ 1010ˆ 0; C 2 ˆ 7632ˆ b 4 b 3 b 1 c 2 ˆ 1111ˆ 0; C 3 ˆ 7654ˆ b 4 b 3 b 2 c 3 ˆ 1101ˆ 1. La terna C 3 C 2 C 1 ˆ 100indicacomeerratoilbit quattro (c 3 ).