Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Reti Logiche Combinatorie: Introduzione e Sintesi, Dispense di Reti Logiche

Dispensa Reti Logiche

Tipologia: Dispense

2012/2013

Caricato il 27/08/2013

ctotaro
ctotaro 🇮🇹

2 documenti

1 / 93

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
UNIVERSITÀ DEGLI STUDI DI MILANO
Facoltà di Scienze Matematiche, Fisiche e Naturali
POLO DIDATTICO E DI RICERCA DI CREMA
APPUNTI DI
RETI LOGICHE
Nello SCARABOTTOLO
Versione 23 ottobre 2003
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d

Anteprima parziale del testo

Scarica Reti Logiche Combinatorie: Introduzione e Sintesi e più Dispense in PDF di Reti Logiche solo su Docsity!

UNIVERSITÀ DEGLI STUDI DI MILANO

Facoltà di Scienze Matematiche, Fisiche e Naturali

POLO DIDATTICO E DI RICERCA DI CREMA

APPUNTI DI

RETI LOGICHE

Nello SCARABOTTOLO

Versione 23 ottobre 2003

Nello Scarabottolo

  • 1 Introduzione______________________________________________________ INDICE
    • 1.1 Perché gli Elaboratori Elettronici _________________________________________
    • 1.2 Rappresentazione Analogica e Rappresentazione Digitale _____________________
    • 1.3 Road Map alla Lettura del Testo _________________________________________
  • 2 Codifica dell’Informazione _________________________________________
    • 2.1 Numerazione Posizionale _______________________________________________
      • 2.1.1 Operazioni Aritmetiche __________________________________________________
        • Somma ____________________________________________________________________
        • Sottrazione _________________________________________________________________
        • Complemento _______________________________________________________________
        • Shift ______________________________________________________________________
        • Moltiplicazione _____________________________________________________________
        • Divisione __________________________________________________________________
    • 2.2 Codifica Binaria di Numeri Decimali _____________________________________
    • 2.3 Rappresentazione di Insiemi Numerabili __________________________________
    • 2.4 Codici a Distanza di Hamming Unitaria ___________________________________
    • 2.5 Codici Rilevatori e Correttori di Errori ___________________________________
      • 2.5.1 Esempi di codici basati sulla distanza di Hamming_____________________________
        • Bit di parità ________________________________________________________________
        • Codice di Hamming __________________________________________________________
        • Codice a Ridondanza Ciclica (CRC) _____________________________________________
  • 3 Algebra di Commutazione __________________________________________
    • 3.1 Postulati dell’Algebra di Commutazione___________________________________
    • 3.2 Teoremi dell’algebra di commutazione ____________________________________
      • 3.2.1 Teoremi a una variabile __________________________________________________
      • 3.2.2 Teoremi a due o tre variabili ______________________________________________
      • 3.2.3 Teoremi a n variabili ____________________________________________________
    • 3.3 Perché l’Algebra di Commutazione_______________________________________
  • 4 Reti Combinatorie ________________________________________________
    • 4.1 Definizione___________________________________________________________
    • 4.2 Analisi delle Reti Combinatorie__________________________________________
    • 4.3 Sintesi delle Reti Combinatorie __________________________________________
      • 4.3.1 Specifica di reti combinatorie______________________________________________
      • 4.3.2 Sintesi di reti combinatorie _______________________________________________
    • 4.4 Minimizzazione delle Reti Combinatorie___________________________________
      • 4.4.1 Minimizzazione di reti combinatorie mediante mappe di Karnaugh _______________
      • 4.4.2 Reti non completamente specificate _________________________________________
      • 4.4.3 Funzioni con 5 o 6 variabili _______________________________________________
      • 4.4.4 Metodo tabellare (Quine-McCluskey) per la minimizzazione di reti combinatorie ____
    • 4.5 Reti Combinatorie a Più Uscite __________________________________________
    • 4.6 Sintesi di Reti a più Livelli______________________________________________
      • 4.6.1 Fattorizzazione _________________________________________________________  Nello Scarabottolo
      • 4.6.2 Scomposizione funzionale ________________________________________________
    • 4.7 Errori di Comportamento Logico ________________________________________
      • 4.7.1 Alee statiche ___________________________________________________________
      • 4.7.2 Alee dinamiche_________________________________________________________
      • 4.7.3 Progetti di reti prive di alee _______________________________________________
    • 4.8 Il Problema dei Malfunzionamenti _______________________________________
  • 5 Reti Sequenziali __________________________________________________
    • 5.1 Definizione___________________________________________________________
    • 5.2 Elementi di Memoria nelle Reti Sequenziali ________________________________
    • 5.3 Analisi delle Reti Sequenziali ____________________________________________
    • 5.4 Elementi di Memoria non Trasparenti: i Flip-Flop __________________________
    • 5.5 Tabelle delle Eccitazioni dei Bistabili _____________________________________
    • 5.6 Sintesi delle Reti Sequenziali ____________________________________________
    • 5.7 Sintesi delle Reti Sequenziali Sincrone ____________________________________
      • 5.7.1 Sintesi come macchina di Mealy ___________________________________________
      • 5.7.2 Sintesi come macchina di Moore ___________________________________________
      • 5.7.3 La riduzione del numero degli stati _________________________________________
      • 5.7.4 L’assegnamento delle configurazioni delle variabili di stato______________________
    • 5.8 Sintesi delle Reti Sequenziali Asincrone Impulsive __________________________
    • 5.9 Sintesi delle Reti Sequenziali Asincrone Funzionanti in Modo Fondamentale _____
      • 5.9.1 Le corse critiche ________________________________________________________
    • 5.10 Le Macchine Iterative _______________________________________________
  • 6 Riferimenti Bibliografici ___________________________________________

Introduzione

1 INTRODUZIONE

La prima parte dell’insegnamento di Architettura degli Elaboratori I affronta le metodologie di base utilizzabili per la progettazione dei circuiti elettronici digitali, ovvero dei componenti che consentono la realizzazione della parte fondamentale di un qualsiasi elaboratore o calcolatore elettronico.

Scopo di questa introduzione è quello di inquadrare gli argomenti trattati nei capitoli successivi, fornendo una chiave di lettura che consenta sempre di collegare i singoli argomenti all’aspetto realizzativo dei calcolatori cui si vuole fare riferimento.

1.1 PERCHÉ GLI ELABORATORI ELETTRONICI

Per elaboratore o calcolatore intendiamo in questo contesto una macchina progettata per elaborare informazioni in modo automatico , cioè un sistema capace di ricevere informazioni dall’ambiente circostante (o mondo esterno ), di operare trasformazioni su queste informazioni, tese a dedurre o costruire nuove informazioni come risultato delle suddette trasformazioni, di comunicare al mondo esterno l’esito delle proprie elaborazioni.

Va subito detto che le informazioni da elaborare possono essere estremamente varie (grandezze fisiche come temperatura, pressione, peso, valori numerici, parole o frasi di testo, ecc.) e che una loro elaborazione automatica richiede di ricorrere a una opportuna codifica , cioè di:

  • scegliere una grandezza fisica che funga da rappresentante dell’informazione da rappresentare;
  • associare, a ogni possibile “aspetto” dell’informazione da rappresentare, un valore della grandezza fisica rappresentante che consenta di risalire all’informazione stessa.

La scelta del tipo di grandezza fisica rappresentante è guidata da considerazioni di natura prettamente tecnologica: dipende infatti dal livello di maturità industriale di una certa tecnologia realizzativa la possibilità di produrre, a costi ragionevoli, macchine utili. Un esempio per chiarire questo concetto è dato dalle calcolatrici da tavolo meccaniche diffuse diversi anni fa, nelle quali la grandezza fisica rappresentante le informazioni numeriche da elaborare era costituita dalla posizione relativa di vari ingranaggi metallici.

Negli ultimi anni, la scelta della grandezza fisica è stata sempre più indirizzata verso fenomeni di tipo elettrico (tensione e/o corrente elettrica) dal progressivo affermarsi della tecnologia di realizzazione dei circuiti elettronici.

Un dispositivo capace di comportarsi da interruttore comandato (cioè capace di aprire o chiudere un collegamento elettrico sulla base di uno stimolo elettrico) è oggi realizzabile — grazie alla tecnologia di integrazione su silicio, che realizza tali dispositivi trattando opportunamente superfici piane di silicio — in un’area avente dimensioni nell’ordine delle frazioni di micron , quindi con la possibilità di inserire strutture composte da milioni

Introduzione

Questa rappresentazione è detta analogica poiché esiste una chiara analogia fra il comportamento dell’informazione e della sua rappresentazione: ogni possibile valore di temperatura è associato a un diverso valore di tensione, e ogni variazione di temperatura comporta una corrispondente, analoga variazione di tensione.

Numerosi sono i pregi di tale rappresentazione: è una rappresentazione fedele, nel senso che anche piccole variazioni dell’informazione da rappresentare vengono avvertite; è una rappresentazione intuitiva, poiché facilita la comprensione immediata della situazione legata all’informazione rappresentata; basti pensare ad esempio a un orologio a sfere, dove la posizione delle lancette consente un rapido riconoscimento dell’ora, o a un tachimetro a lancetta, dove la posizione viene immediatamente tradotta in indicazione della velocità che si sta tenendo.

Tali pregi, molto utili soprattutto nell’interazione fra uomo e macchina, sono però associati a numerosi difetti, che rendono tale rappresentazione poco adatta all’uso all’interno della macchina:  l’elemento elettronico che gestisce la rappresentazione analogica dell’informazione ha — come sempre accade nel mondo reale — un comportamento “non ideale”, dovuto a sia pur minimi difetti di realizzazione, a invecchiamento, a presenza di disturbi di natura elettrica, in generale a fenomeni che introducono un errore di rappresentazione , cioè una differenza fra il valore assunto dalla grandezza elettrica e il valore che “avrebbe dovuto assumere” per rappresentare correttamente l’informazione;  ogni elaborazione di rappresentazioni affette da errore comporta un progressivo “aumento dell’errore”: basti pensare al fatto che, dovendo sommare due valori affetti da errore, l’errore risultante è la somma degli errori di partenza; ecco quindi che una rappresentazione poco affidabile mal si presta a elaborazioni complesse (cioè composte da numerose trasformazioni delle informazioni di partenza).

Figura 1.2 — Rappresentazione digitale dell’informazione

Nello Scarabottolo

Per introdurre un comportamento più robusto e affidabile, si può ricorrere a una rappresentazione come quella schematizzata dal diagramma di Figura 1.2, dove la grandezza rappresentante può assumere solo un numero discreto di valori, ciascuno dei quali associato a un sottoinsieme dei possibili aspetti che l’informazione da rappresentare può assumere.

Questa rappresentazione è detta digitale perché definisce un numero discreto di “valori” o “cifre” (in inglese: digit ) che la grandezza rappresentante può assumere. Pregi e difetti di tale rappresentazione sono naturalmente opposti rispetto alla rappresentazione analogica:  la rappresentazione è poco fedele: variazioni anche ampie dell’informazione all’interno di un sottoinsieme associato a una stessa “cifra” non vengono avvertite, mentre piccole variazioni a cavallo del confine fra due sottoinsiemi comportano continui cambiamenti della “cifra” rappresentante;  la rappresentazione non è altrettanto immediata, perché si tratta di interpretare il significato della cifra per risalire all’informazione codificata (ad esempio, un orologio digitale richiede di interpretare due numeri di due cifre ciascuno come ora e minuti per risalire all’informazione temporale associata); la rappresentazione è robusta, perché è decisamente più difficile che un difetto o un malfunzionamento ci facciano confondere due “cifre” diverse, data la loro significativa differenza; la rappresentazione si presta a elaborazioni anche complesse, poiché la probabilità decisamente inferiore di errori rende affidabile il risultato finale.

I due ultimi vantaggi sono ulteriormente enfatizzati dalla rappresentazione schematizzata in Figura 1.3, detta rappresentazione (digitale) binaria poiché usa solo due possibili valori della grandezza rappresentante, corrispondenti agli estremi 0 e VMAX dell’intervallo utilizzato. Inoltre, il comportamento fisico dei dispositivi elettronici è tale da minimizzare il dispendio di energia quando i dispositivi stessi si trovano agli estremi dell’intervallo di possibili valori di funzionamento, a ulteriore vantaggio di un’impostazione binaria.

Figura 1.3 — Rappresentazione binaria dell’informazione

Nello Scarabottolo

Codifica dell’Informazione

2 CODIFICA DELL’INFORMAZIONE

Lo scopo di questa parte è un sommario dei concetti di base della codifica binaria delle informazioni, importante per la natura fisica dei dispositivi elettronici integrati, che presentano vantaggi di immunità al rumore, di minore consumo di energia elettrica e di migliore impaccabilità se utilizzati con valori quantizzati.

Valgono le seguenti relazioni numeriche fondamentali:

  1. con n bit, si rappresentano N = 2 n^ diverse configurazioni (stringhe) di bit;
  2. per rappresentare M diversi “aspetti” di un’informazione, servono n = log 2

^ M ^ , dove M  rappresenta M arrotondato all’intero superiore.

2.1 NUMERAZIONE POSIZIONALE

Un numero N in una generica base b viene rappresentato come:

( N ) b = pnbn^ + pn -1 bn -1^ + ... + p 1 b^1 + p 0 b^0 + p -1 b -1^ + ... + p-mb-m^ =  i = - m

n pibi

Per effettuare la conversione da base b a base 10 si procede in modo diretto, con il metodo polinomiale :

(10010.1) 2 = 1×2^4 + 0×2^3 + 0×2^2 + 1×2^1 + 0×2^0 + 1×2-1^ = 16 + 2 + 0.5 = 18.

Per effettuare la conversione da base 10 a base b , si utilizza un metodo iterativo :

A. per la parte intera, si divide ( N ) 10 per b , il resto costituisce il bit meno significativo di ( N ) b Il metodo viene iterato finché si ottiene quoziente = 0

Divisioni

per due Numero ricostruito

B. per la parte frazionaria, si moltiplica ( N ) 10 per b , e si verifica se il risultato è 1. Se sì, il bit più significativo di ( N ) b vale uno, altrimenti è la parte intera (1 nel caso b =2) del prodotto ( N ) 10 b. Si elimina tale parte intera e si itera il procedimento, che può non terminare.

(23) 10 Resti 11 1 5 1 2 1 1 0 0 1

Codifica dell’Informazione

Si noti che l’ultima ipotesi sulla codifica di parti frazionarie in complemento a 2 fa sì che sia anche molto facile discriminare fra parti frazionarie positive e negative: queste ultime risultano infatti > 1, cioè hanno il bit più significativo (a sinistra della virgola) = 1.

L’adozione del complemento a 2 richiede naturalmente di gestire opportunamente le operazioni di somma. In particolare, la somma di parti frazionarie con uguale segno porta a codifiche prive di significato qualora il valore assoluto di tale somma sia ≥ 1. Si deve quindi verificare che la somma di due parti frazionarie positive non dia luogo a una codifica negativa (generazione di overflow ) e allo stesso modo che la somma di due parti frazionarie negative non dia luogo a una codifica positiva (generazione di underflow ).

Una buona rappresentazione grafica della codifica in complemento a 2 può essere realizzata con una struttura circolare, come quella riportata in Figura 2.1.

Figura 2.1 — Rappresentazione circolare dei numeri in complemento a 2

Il discorso si può facilmente estendere a numeri (interi o frazionari) rappresentabili con un predefinito numero di bit.

Shift

una traslazione verso sinistra (destra) di k bit corrisponde a una moltiplicazione (divisione) per bk.

Moltiplicazione

Si procede secondo le regole dell’aritmetica decimale. Tecniche più efficaci verranno analizzate in seguito.

Divisione

Le regole dell’aritmetica decimale si basano su un meccanismo di trial and error , che non è particolarmente facile da realizzare in modo automatico. Si ricorre a due metodi iterativi.

Nello Scarabottolo

Restoring division

dividendo - divisore con bit più significativi allineati

SI (^) risultato ≥ 0 NO

1 nel quoziente, in posizione corrispondente all’ultimo bit a destra del dividendo dal quale era stato sottratto un bit del divisore

0 nel quoziente, in posizione corrispondente all’ultimo bit a destra del dividendo dal quale era stato sottratto un bit del divisore restoring : il divisore viene risommato al risultato (si torna al dividendo originario)

si abbassa un bit del dividendo e si trasla verso destra di 1 bit il divisore

Esempio: 1100 / 1111

1 1 0 0 sottrazione 1 1 1 1 negativo (bit A) - 0 0 1 1 ottenuto come -(1111-1100) restore 1 1 0 0 0 abbassa una cifra sottrazione 1 1 1 1 positivo (bit B) 1 0 0 1 0 abbassa una cifra sottrazione 1 1 1 1 positivo (bit C) 0 0 1 1 0 abbassa una cifra sottrazione 1 1 1 1 negativo (bit D) - 1 0 0 1 0 abbassa una cifra restore 0 1 1 0

RISULTATO 0. 1 1 0 …
A B C D

Non restoring division

Invece di risommare il divisore Y per poi sottrarlo traslato al dividendo X , si somma direttamente il divisore traslato, dal momento che uno shift equivale a dividere per 2, quindi:

X + Y - ½ Y = X + ½ Y

Nello Scarabottolo

corrispondente codifica binaria è assolutamente arbitraria, e la sua scelta — che deve peraltro essere poi mantenuta congruente da tutti gli utilizzatori di tale informazione — può privilegiare altri parametri.

Ad esempio, volendo codificare con numero binari i 7 colori dello spettro luminoso più la mancanza di colori (ROSSO, ARANCIO, GIALLO, VERDE, AZZURRO, INDACO, VIOLETTO, NERO) servono log 2 8 = 3 bit. Tuttavia, i modi in cui posso associare le configurazioni di 3 bit ai colori sono tutte le possibili permutazioni di 8 valori, cioè 8! = 40320. Esiste però un modo, riportato in Tabella 2.2, nel quale a valori crescenti della configurazione binaria corrispondono frequenze crescenti della radiazione elettromagnetica associata al colore, ovvero indicazione della posizione del colore nello spettro. Questa scelta può essere considerata ottimale perché mantiene traccia di ulteriori proprietà dell’informazione codificata.

Informazione Codifica NERO 000 ROSSO 001 ARANCIO 010 GIALLO 011 VERDE 100 AZZURRO 101 INDACO 110 VIOLETTO 111 Tabella 2.2 — Codifica ottimale dei colori dello spettro

In modo analogo, esistono vari modi di codificare i caratteri alfanumerici (lettere dell’alfabeto, cifre decimali, simboli di interpunzione, ecc.). Fra questi, il più noto e diffuso è lo standard ASCII ( A merican S tandard C ode for I nformation I nterchange ) basato su stringhe di 7 bit scelte in modo tale da mantenere la corrispondenza fra valore binario della codifica e posizione alfabetica della lettera.

2.4 CODICI A DISTANZA DI HAMMING UNITARIA

Per distanza di Hamming fra due configurazioni (stringhe) binarie di uguale lunghezza, si intende il numero di bit che assumono valore diverso nelle due configurazioni. I codici a distanza di Hamming unitaria sono basati su codifiche a distanza unitaria per simboli consecutivi nell’alfabeto rappresentato, quindi su codifiche dei simboli consecutivi che si ottengono l’una dall’altra cambiando il valore di un solo bit.

Sono utili ad esempio per operazioni di conversione Analogico-Digitale, onde evitare errori di allineamento (come accade ad esempio negli encoder assoluti, realizzati con batterie di LED e fototransistori separati da un disco trasparente opacizzato in modo selettivo).

Tipico esempio il codice Gray , ottenuto per “riflessioni” successive con premessa di 0 all’originale e di 1 al riflesso:

Codifica dell’Informazione

simbolo codice 0 0 0 0 1 0 0 1 riflessione 2 0 1 1 3 0 1 0 riflessione 4 1 1 0 5 1 1 1 6 1 0 1 7 1 0 0

2.5 CODICI RILEVATORI E CORRETTORI DI ERRORI

Il problema è rappresentabile come in Figura 2.2: ∃ probabilità ≠ 0 che CRCT

Figura 2.2 — Cause di errore nella trasmissione di configurazioni binarie

Se l’alfabeto dei CT è completo (ogni codice è associato a un simbolo significativo, quindi è trasmissibile) non c’è possibilità di individuare errori di comunicazione a livello di singolo simbolo (si può ricorrere ad analisi contestuali, ma ad altro livello logico e di complessità).

Se l’alfabeto dei CT è incompleto (codifiche ridondanti, che introducono naturalmente maggiore complessità, maggiori costi e maggiore vulnerabilità nei dispositivi) come indicato ad esempio in Figura 2.3, si verifica quanto segue.

Il trasmettitore — per definizione “onesto” — trasmette solo codici ∈ CT

Se il ricevitore riceve un codice ∈ CR ma ∉ CT può affermare con certezza che si è verificato un errore di trasmissione.

Se il ricevitore riceve un codice ∈ CT può solo “sperare” che coincida con quello originariamente trasmesso.

La situazione può essere rappresentata come in Figura 2.4:

Problemi:

  1. determinare il grado di ridondanza necessario per ottenere un codice che gestisca gli errori attesi (ad esempio, gli errori di campionamento in una forma d’onda a livelli in presenza di rumore bianco );

Codifica dell’Informazione

Codice di Hamming

È un codice che garantisce una distanza di Hamming minima pari a 3 fra due qualsiasi codici CT e consente pertanto una correzione dell’errore basata sull’ipotesi che gli errori più probabili siano errori singoli, e che pertanto sia ragionevole ricondurre al codice

trasmissibile più vicino un eventuale codice ricevuto ∉ CT

Figura 2.5 — Andamento tipico della probabilità di errore

La valutazione del livello di ridondanza (cioè del numero di bit aggiuntivi necessari per consentire la realizzazione del codice di Hamming) si basa sulle seguenti considerazioni, dove sia n il numero di bit nominali (necessari a codificare i simboli dell’alfabeto utilizzato), r il numero di bit ridondanti e c = n + r il numero di bit totali del codice:

  • ogni “nuvola” attorno a un elemento ∈ CT deve essere costituita da tutti gli elementi ∈ CR - CT che si trovano a distanza di Hamming unitaria dall’elemento considerato, quindi ogni nuvola contiene c + 1 elementi (l’elemento ∈ CT più i c elementi ∈ CR - CT ottenuti cambiando a turno uno dei bit dell’elemento di partenza);
  • le “nuvole” devono essere disgiunte, altrimenti avremmo due elementi ∈ CR che distano fra loro meno di 3 bit;
  • serve una “nuvola” per ogni elemento ∈ CT quindi servono 2 n^ nuvole;
  • si hanno a disposizione 2 c^ codici.

Per soddisfare le condizioni sopra elencate, deve pertanto valere la disequazione:

2 n^ ( c + 1) ≤ 2 c

ovvero:

2 n^ ( n + r + 1) ≤ 2 n^ × 2 r

da cui:

n + r + 1 ≤ 2 r

La costruzione del codice si basa invece sul seguente algoritmo:

Nello Scarabottolo

  • si numerano i c bit di CT da 1 a c , con c 1 = MSB
  • si inseriscono i bit di controllo (bit ridondanti) in posizione i = 2 k^ dove k = 0.. r -
  • si vuole ottenere dal codice una parola di posizione , costituita da una configurazione binaria che dica la posizione dell’eventuale bit errato nel codice. Facendo l’esempio del codice di Hamming applicato al codice BCD (servono 4 bit nominali più 3 bit ridondanti) tale risposta è definita in base alla Tabella 2.3:

p 3 p 2 p 1 significato 0 0 0 nessun errore

0 0 1 errore in c 1 ≡ r 1
0 1 0 errore in c 2 ≡ r 2
0 1 1 errore in c 3 ≡ n 1
1 0 0 errore in c 4 ≡ r 3
1 0 1 errore in c 5 ≡ n 2
1 1 0 errore in c 6 ≡ n 3
1 1 1 errore in c 7 ≡ n 4

Tabella 2.3 — Sindrome di errore del codice di Hamming

Nell’ipotesi di associare i bit della parola di posizione ai corrispondenti bit ridondanti nel codice, si possono notare le seguenti relazioni:

  • p 1 vale 1 se ci sono errori in ( c 1 , c 3 , c 5 , c 7 ) quindi r 1 può essere calcolato come il bit di parità del gruppo ( c 1 , c 3 , c 5 , c 7 ): un errore di parità in tale gruppo viene segnalato da r 1 e forza a 1 il valore di p 1
  • p 2 vale 1 se ci sono errori in ( c 2 , c 3 , c 6 , c 7 ) quindi r 2 può essere calcolato come il bit di parità del gruppo ( c 2 , c 3 , c 6 , c 7 ): un errore di parità in tale gruppo viene segnalato da r 2 e forza a 1 il valore di p 2
  • p 3 vale 1 se ci sono errori in ( c 4 , c 5 , c 6 , c 7 ) quindi r 3 può essere calcolato come il bit di parità del gruppo ( c 4 , c 5 , c 6 , c 7 ): un errore di parità in tale gruppo viene segnalato da r 3 e forza a 1 il valore di p 3

Un esempio di costruzione di codice di Hamming è riportato nella Tabella 2.4:

c 1 ≡ r 1 c 2 ≡ r 2 c 3 ≡ n 1 c 4 ≡ r 3 c 5 ≡ n 2 c 6 ≡ n 3 c 7 ≡ n 4

Tabella 2.4 — Esempio di codifica di Hamming

È facile dimostrare che la posizione di un eventuale errore viene individuata analizzando quali bit di parità ri risultano sbagliati, e assegnando il valore 1 al corrispondente bit della parola di posizione.