55
Fondamenti di informatica Prof. Lorenzo Mezzalira Fascicolo 1 1 / 55 FONDAMENTI DI INFORMATICA Prof. Lorenzo Mezzalira Appunti del corso di Fondamenti di informatica Fascicolo integrativo - 1 - Rappresentazione e trasporto delle informazioni Segnali Cifre binarie: bit Codifiche binarie Variabili, operatori e funzioni logiche Bistabili (flip-flop) Registri Contatori

FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

  • Upload
    ledat

  • View
    246

  • Download
    1

Embed Size (px)

Citation preview

Page 1: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

1 / 55

FONDAMENTI DI INFORMATICA Prof. Lorenzo Mezzalira

Appunti del corso di Fondamenti di informatica

Fascicolo integrativo - 1 -

Rappresentazione e trasporto delle informazioni

Segnali Cifre binarie: bit Codifiche binarie Variabili, operatori e funzioni logiche Bistabili (flip-flop) Registri Contatori

Page 2: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

2 / 55

Segnali e informazioni

Una trattazione formale e completa della teoria dell'informazione e della sua rappresentazione e

trasmissione mediante segnali, va oltre gli scopi di questa presentazione, che rimanda quindi i

lettori ad altri insegnamenti. Tuttavia si ritiene utile una serie di richiami dei concetti

fondamentali, con l’attenzione al punto di vista informatico ma con aperture interdisciplinari.

Cosa sono i segnali

I segnali sono grandezze fisiche utilizzate per rappresentare e trasportare informazioni.

Le informazioni di cui ci occupiamo qui, a loro volta, possono essere descrittive di fenomeni fisici

(ad esempio una temperatura, la velocità di rotazione di un motore, ecc.) o essere di tipo astratto

(ad es. valori numerici, caratteri di un testo, simboli, ecc.).

Ogni singolo segnale è prodotto da uno o più generatori, generalmente in mutua esclusione,

mentre può venire utilizzato da uno o più ricevitori anche contemporaneamente.

E' importante notare che il livello energetico delle grandezze fisiche che costituiscono i segnali è

solo connesso alla loro pratica utilizzabilità fisica in un determinato contesto, cioè deve essere

adeguato per il trasporto e per la percezione da parte dei riceventi, con adeguata insensibilità agli

agenti perturbanti (il classico rapporto “segnale/rumore”), ma che tale livello energetico non ha

ulteriore importanza concettuale.

Con i dispositivi elettronici i segnali sono generalmente costituiti da grandezze elettriche, ed in

particolare da tensioni o da correnti. Con i dispositivi a funzionalità intrinseca i segnali sono “attivi”

e stimolano il meccanismo di percezione dell’informazione, mentre con i dispositivi a funzionalità

programmata (i calcolatori) le informazioni dei segnali sono “lette” quando l’esecuzione del

programma incontra le istruzioni di acquisizione (lettura - input).

I segnali di tipo elettronico rendono economicamente possibili varie elaborazioni a bassi livelli

energetici e (quindi) ad elevate velocità e quindi nella maggior parte dei casi vengono utilizzati

segnali di questo tipo.

Un crescente interesse presentano anche i segnali luminosi, soprattutto grazie al continuo

progresso delle tecnologie di conversione da/verso grandezze elettriche (optoelettronica) e di

trasporto (fibre ottiche).

Si noti che sono interessanti i segnali più facilmente “convogliabili” verso una specifica

destinazione, ad esempio mediante conduttori o fibre ottiche.

Page 3: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

3 / 55

Come si rappresentano le informazioni

Per un corretto progetto di generazione e ricezione dei segnali occorre stabilire chiaramente quali

informazioni sono associate a quali caratteristiche del segnale.

Si sottolinea che il tipo di associazione tra informazioni e caratteristiche del segnale è convenzionale e, a priori, arbitrario.

Analizziamo ora l’importante ruolo dei segnali di rappresentare delle informazioni.

La rappresentazione è basata sulla corrispondenza tra caratteristiche di valore e temporali dei

segnali e le informazioni che essi rappresentano.

Le caratteristiche sono impresse per costruzione dal dispositivo generatore del segnale e ad esse

devono essere sensibili i dispositivi ricevitori. Queste caratteristiche sono il valore, l’andamento

temporale e gli eventi del segnale. L’informazione rappresentata può essere il valore, l’andamento

temporale o gli eventi di un fenomeno.

E’ molto importante notare che la costruzione di un segnale non deve necessariamente trasferire le informazioni

sulle caratteristiche omologhe, ma la corrispondenza può essere arbitraria, tecnologie permettendo.

Ad esempio un valore costante può essere rappresentato da un segnale a frequenza costante, un evento può essere

rappresentato da un segnale di determinata ampiezza, un andamento esponenziale può essere rappresentato da

un segnale che presenta una successione di eventi binari (trasmissione seriale) che codificano il valore

istantaneo e la costante di tempo, ecc. Occorre quindi chiaramente distinguere tra stati, andamenti ed eventi del

segnale e del fenomeno (cioè dell’informazione) da esso descritto.

La correlazione più spontanea tra informazione e segnale è quella che associa il valore

dell'informazione all'ampiezza del segnale, ma sono utilizzate anche altre correlazioni:

Page 4: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

4 / 55

Segnali in “banda base”

Il valore dell’informazione da rappresentare può essere

Associato all’ampiezza del segnale – con segnali “a livello”

associato a una durata (durata = intervallo fra variazioni discordi del segnale) – con segnali “ad impulsi”

associato a un periodo (periodo = intervallo fra variazioni concordi del segnale) – con segnali “ad impulsi”

Segnali con “modulazione”, cioè trasposizione dei valori di informazione sui parametri di un andamento sinusoidale

S(t) = A sin (Wt + F)

valore associato all’ampiezza A – modulazione di ampiezza

valore associato alla frequenza W – modulazione di frequenza

valore associato alla fase F – modulazione di fase

E' importante notare che tutti i segnali fisici sono continui a tempo continuo se si adottano i

consueti modelli fisici ad energia cinetica / energia potenziale con grandezze finite, mentre non è

detto che siano di tipo continuo le informazioni ad essi associate.

La rappresentazione delle informazioni può infatti essere di tipo analogico o di tipo digitale, a

seconda che l'informazione sia associata biunivocamente al valore del segnale o sia associata al

particolare intervallo finito cui tale valore appartiene (v. nel seguito segnali analogici e digitali).

In altre parole l'attributo "analogico" o "digitale" non si riferisce a caratteristiche intrinseche del

segnale ma a caratteristiche di codifica dell'informazione da esso rappresentata, anche se in

genere si parla, per brevità, di segnali analogici e segnali digitali.

NOTA.

Si può avere un segnale digitale in ampiezza ma analogico in durata (oppure in periodo) e che quindi corrisponde ad uno stato discreto tempo-continuo. Questo è il caso tipico di molti segnali impulsivi.

Es. controllo di riscaldante a duty-cycle variabile.

DUTY-CYCLE => percentuale di tempo in cui un segnale digitale binario periodico ha un valore appartenente all'intervallo detto ON (attivo).

Page 5: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

5 / 55

Note - Disturbi ed errori

Un tipico problema riguardo ai segnali è costituito dagli scostamenti rispetto al valore "ideale" a

causa di interferenze non volute di vari fenomeni fisici “disturbanti” con quelli utilizzati per la

generazione ed il trasporto dei segnali.

Questi scostamenti sono generalmente introdotti da:

scostamenti dei parametri dei dispositivi di generazione o conversione (dispositivi non ideali) rumore (disturbi) in sede di generazione del segnale o conversione da una forma ad un’altra

rumore in sede di propagazione del segnale (trasporto dell’informazione) e tipicamente danno luogo ad errori con componenti sistematiche e casuali sulle informazioni rappresentate.

Si tende generalmente a minimizzare l'entità dei disturbi all'origine, ma oltre un certo limite ciò non è

(economicamente) possibile.

Alcuni disturbi sono chiaramente distinguibili dalle informazioni significative adottando opportuni criteri,

generalmente basati sulla distinzione di bande di frequenza o in generale su caratteristiche temporali diverse tra

segnale e rumore.

I disturbi, o gli errori ad essi connessi, possono in questi casi essere eliminati o ridotti con tecniche circuitali (filtri) o

algoritmiche (filtraggio numerico o altre elaborazioni).

Nel caso di segnali digitali i disturbi che ne deformano il valore senza però portarlo a superare le

soglie dell'intervallo significativo di appartenenza, non producono errori nell'informazione

rappresentata. Quando invece i disturbi superano la soglia di margine di rumore (v. seguito -

segnali digitali) si hanno errori che entro certi limiti possono essere rilevati o anche corretti con

l’adozione di particolari codifiche (ad es. bit di parità, codifica Hamming, ecc.).

Segnali analogici

I segnali analogici rappresentano valori numerici reali.

Sono segnali in cui il valore dell’informazione rappresentata è una funzione continua (spesso

lineare) della grandezza assunta come significativa. Generalmente si assume la loro ampiezza, o

più raramente altri parametri (ad es. la frequenza). Il valore rappresentato corrisponde al valore

di grandezze fisiche (misure), o comunque di valori numerici (numeri reali), che possono

assumere tutti i valori in un certo intervallo finito.

Con i segnali analogici si rappresentano solo informazioni numeriche. Sequenze di informazioni

numeriche possono però essere utilizzate per generare suoni (vibrazioni) o immagini (intensità

luminose)

I segnali analogici sono generati da sensori o trasduttori che creano una corrispondenza tra la

grandezza fisica che è oggetto di informazione (ad esempio una temperatura da conoscere) e la

grandezza fisica, il segnale, che costituisce il veicolo di tale informazione (ad esempio una tensione

elettrica) (v. seguito)

Page 6: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

6 / 55

Corrispondenza tra segnali analogici e le informazioni rappresentate

Per un buon progetto delle interfacce è molto importante conoscere in modo accurato la

corrispondenza tra valori del segnale e valori dell’informazione rappresentata, e i rispettivi

intervalli.

Le corrispondenze tra segnali e valori sono rappresentabili graficamente con segmenti o curve su

un piano cartesiano, come negli esempi seguenti. Sull’asse delle ascisse sono riportati i valori del

segnale che possono spaziare solo in un definito intervallo, mentre sull’asse delle ordinate sono

riportati i valori delle informazioni rappresentate.

Da un punto di vista informatico le corrispondenze vengono descritte con coefficienti di funzioni analitiche oppure

con tabelle (array di coordinate di punti).

Nelle figure seguenti sono rappresentate le corrispondenze tra segnale e valore rappresentato con

esempi di segnale lineare e non lineare. Il valore rappresentato è l’informazione costituita da un

numero reale. Il valore del segnale è costituito dalla sua caratteristica significativa, ad esempio

l’ampiezza, adottata per rappresentare l’informazione.

Valore del segnale

Valore rappresentato

Fondo scala

Intervallo di Valori

rappresentati

Inizio scala

Intervallo di valori del segnale

Fig. - Segnale lineare.

Valore del segnale

Valore rappresentato

Fondo scala

F.S.

Inizio scala

I.S.

Fig. - Segnale non lineare

Page 7: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

7 / 55

Pregi dei segnali analogici I segnali analogici presentano vari interessanti aspetti positivi che in molti casi ne garantiscono la sopravvivenza anche

in ambienti sempre più invasi dalle tecnologie digitali.

I principali pregi dei segnali analogici sono:

- Esistono vari fenomeni che generano spontaneamente segnali analogici. (sensori, trasduttori). Le leggi della fisica

classica operano tipicamente nel “continuo”.

- Esistono vari dispositivi semplici, a funzionalità intrinseca, che sono in grado di interpretare e trasformare i segnali

analogici (amplificatori, trasduttori, attuatori).

- Anche nell'uomo è ben radicato il concetto di "continuo", che spesso è più consono alle attitudini umane.

- Eventuali perturbazioni deformano un segnale analogico, ma generalmente non lo stravolgono completamente, cioè

introducono, nel riconoscimento delle informazioni, errori percentualmente limitati e “proporzionali” all’entità del

disturbo.

- E' sufficiente un unico conduttore (ed eventuale ritorno) per trasmettere informazioni "ricche" (cioè appartenenti ad

un insieme ad elevata cardinalità), cioè per rappresentare idealmente gli infiniti valori numerici in un certo intervallo.

Difetti dei segnali analogici - I dispositivi di elaborazione dei segnali analogici sono relativamente poco precisi, poco stabili nel tempo e poco

immuni alle perturbazioni.

Volendo migliorare le loro caratteristiche in tal senso, il loro costo cresce molto rapidamente, ed in ogni caso piccoli

errori sono ineliminabili.

- Le trasformazioni eseguibili direttamente sui segnali analogici con i dispositivi sopra citati sono poco flessibili e si

riducono sostanzialmente a operazioni di somma algebrica e operazioni di tipo integro/differenziale.

- E’ molto difficile realizzare buone memorie permanenti di segnali analogici. I circuiti Sample & Hold sono

relativamente costosi e “perdono” gradualmente il valore analogico memorizzato.

- Ogni elaborazione dei segnali analogici produce un degrado della precisione, e ciò limita il numero di dispositivi

collegabili in cascata e quindi la complessità globale delle elaborazioni effettuabili.

- Nelle applicazioni in cui sono previsti strumenti informatici di elaborazione sono necessarie (relativamente costose)

tecniche di "conversione" (A/D analogico/digitale, e D/A digitale/analogico).

Page 8: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

8 / 55

Segnali digitali

I segnali digitali rappresentano simboli. I valori numerici sono un caso particolare.

Per la rappresentazione di informazioni digitali (cioè dotate di un numero finito di valori)

mediante segnali viene creata una corrispondenza convenzionale tra i valori del segnale (o meglio

"fasce" di valori del segnale) e le informazioni rappresentate, che sono costituite da simboli di un

alfabeto finito.

Queste corrispondenze, descritte in forma grafica, assumono tipicamente una forma a scala, in

cui l’estensione orizzontale di ogni scalino rappresenta la fascia di valori del segnale che è

associata all’informazione digitale corrispondente all’ordinata dello scalino.

Valore del segnale

Valore rappresentato Significato (Simbolo)

A

Campo utile dei valori del segnale

B

C

Fig - Corrispondenza tra ampiezza e "significato" di un segnale digitale ternario.

In questo esempio viene presentato il caso ternario, cioè di segnale che con tre intervalli (fasce) di

valori della grandezza fisica può rappresentare tre valori dell’informazione contrassegnati in

questo esempio dai simboli A, B, C).

Il caso binario (informazioni a due valori) che è il più usato negli attuali sistemi digitali, viene

presentato più a fondo nel seguito.

CODIFICHE

Poichè per motivi di semplicità costruttiva e di sfruttamento dei segnali si adotta normalmente un

numero estremamente limitato di intervalli, cioè un alfabeto a cardinalità (pari a 2 nel caso

binario) troppo bassa per molte applicazioni, si assume in generale la seguente impostazione:

CODIFICA => corrispondenza significato <=> simbolo

ogni simbolo è rappresentato da una successione di cifre (digit)

ogni cifra è rappresentata da un segnale “digitale”

Page 9: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

9 / 55

Ciò implica che informazioni caratterizzate da una certa ricchezza di valori richiedono vari (talora

anche numerosi) segnali (cioè cifre) per la loro rappresentazione, come dalla seguente nota

relazione:

N = logbaseD (S)

N = ceiling (log base D (S)) S <= DN

dove N = n. segnali utilizzati per un’informazione, cioè n. di cifre (n. di bit) D = cardinalità delle cifre (n. valori assumibili da una cifra) S = cardinalità dell'alfabeto dei simboli (n. informazioni rappresentabili)

Quindi a seconda della cardinalità (S) dell’insieme di valori dell’informazione da rappresentare con una certa variabile, quest’ultima dovrà essere composta da un opportuno numero di bit maggiore o uguale al numero (N) indicato dalla relazione precedente. Ceiling(x) significa

L’operatore ceiling(x) = x rappresenta il minimo intero >= X (“intero non inferiore al valore(x)”) Pensando ad una variabile come “contenitore” il numero di bit di cui è composta ne determina la “capienza”, che ovviamente dovrà essere adeguata alla cardinalità dei valori assegnabili alla variabile stessa, cioè a quanti diversi valori di informazioni dovranno poter essere di volta in volta assegnati alla variabile.

Segnali digitali binari Sono caratterizzati da due fasce di valori (alto e basso), spesso chiamati H (High) e L (Low) a cui

sono convenzionalmente associati i significati:

Logica positiva H = 1 = TRUE = ON

L = 0 = FALSE = OFF

Logica negativa H = 0 = FALSE = OFF

L = 1 = TRUE = ON

NOTA

H, L fanno riferimento ai valori elettrici.

0, 1 sono valori numerici, ma per brevità usati anche in senso logico.

TRUE, FALSE sono valori di verità logica.

ON, OFF sono usati nel gergo dell’automazione per indicare attivazione (ON) o disattivazione (OFF) di dispositivi.

Page 10: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

10 / 55

Notiamo che un confine netto tra le fasce di valori del segnale associate a diversi simboli digitali è significativo solo

concettualmente. Infatti i dispositivi fisici, per tutta una serie di motivi, presenteranno sempre una, sia pur ristretta,

fascia di incertezza tra le fasce che sono chiaramente attribuite a valori di informazione. Di tali fasce di incertezza

occorre tener conto per un’analisi del funzionamento di tali dispositivi. Nella figura tale fascia di incertezza

corrisponde all’intervallo di valori del segnale indicato col punto interrogativo.

La rappresentazione della tipica corrispondenza tra valori H e L e valori del segnale binario è

rappresentata nella fig. seguente. La fascia di valori contrassegnata con il “?” corrisponde

all’intervallo di indeterminazione.

Valore del segnale

Valore rappresentato

L

Campo utile dei valori del segnale

H

?

Fig. - Caratteristica Ampiezza / valore di segnale binario

Nell'intervallo di indeterminazione si accetta che il valore rappresentato non sia precisato a priori.

Si noti bene che non si tratta di un terzo valore del digit rappresentato, ma di un intervallo in cui non è

specificato a priori quale dei due valori di informazione verrà di fatto attribuito al segnale dal particolare

dispositivo ricevente.

E’ molto importante notare che non si tratta di un fenomeno di isteresi. Si ricordi infatti che l’isteresi si riferisce a

diversi comportamenti dei dispositivi in corrispondenza a diversi sensi di variazione dei segnali. Naturalmente per

alcuni dispositivi, come ad esempio i circuiti trigger di Schmitt, si ha un (voluto) fenomeno di isteresi oltre ad avere

una fascia di indeterminazione.

Valori tipici di segnali digitali

Per i segnali digitali si hanno diverse specifiche dei valori prodotti in uscita e dei valori accettati in

ingresso. In particolare si specificano le fasce di valori garantiti in uscita (nelle condizioni di carico

previste) e valori richiesti in ingresso per una corretta interpretazione. Ovviamente la condizione

favorevole, e quindi perseguita nei progetti dei circuiti elettronici digitali, è quella in cui le fasce di

valori garantiti in uscita sono strettamente contenute nelle fasce dei valori richiesti in ingresso.

Per margine di rumore si intende il massimo scostamento, rispetto ai valori di segnale garantiti in

uscita dal circuito generatore, che rientra ancora nella fascia di corretta interpretazione del

segnale in ingresso nel circuito ricevitore.

Il margine di rumore è quindi una proprietà di una coppia ordinata di circuiti generatore e

ricevitore. In genere il margine di rumore viene specificato dal costruttore dei circuiti, rispetto a

qualunque coppia di circuiti della stessa famiglia e quindi omogenei tra loro nelle specifiche

elettriche rispettivamente sugli ingressi e sulle uscite.

Page 11: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

11 / 55

Valore del segnale

Volt

Valore rappresentato

L

Margine di rumore L

H

?

GuH RiH

GuL RiL

Margine di rumore H

Fig. - Margini di rumore per i valori L e H di un segnale digitale binario.

GuL = max valore L garantito in uscita VOLmax

RiL = max valore L richiesto in ingresso VILmax

GuH = min valore H garantito in uscita VOHmin

RiH = min valore H richiesto in ingresso VIHmin

NOTE

Varie famiglie di circuiti digitali presentano una dissimmetria tra i margini di rumore rispetto al livello alto (H) e al livello basso (L), come pure una dissimmetria nel valore di impedenza d’uscita per i due livelli H e L.

La sensibilità ai disturbi elettromagnetici indotti è crescente con l’impedenza d’uscita del circuito generatore.

La robustezza rispetto a fenomeni disturbanti risulta dalla sovrapposizione dei due aspetti appena citati (margine di rumore e impedenza), che possono anche compensarsi se al livello con minore margine di rumore corrisponde un’impedenza d’uscita più bassa che rende tale livello meno perturbabile.

Le caratteristiche appena discusse devono essere tenute presenti nella scelta del significato da attribuire ai due valori (H e L), in modo da adottare il livello più robusto per asserire il valore più critico, scegliendo tra logica positiva o negativa.

NOTA

Perchè segnali a due valori invece che a tanti valori ?

Semplicità circuitale (conduzione/interdizione) anche con una sola tensione di alimentazione.

Mappaggio immediato dei due valori sulla logica vero/falso.

La base "e" (e = 2.71828) minimizza il prodotto Ncif*Base.

Se assumiamo come "costo" della rappresentazione di un'informazione il prodotto del numero di cifre (digit) necessarie moltiplicato per la cardinalità delle cifre (che è un indice della loro "complessità"), il costo associato alla rappresentazione del valore numerico K mediante cifre in base x è esprimibile da:

logx (K) * x

dove logx (K) rappresenta il numero di cifre richieste per rappresentare l’informazione.

Per trovare la base x che minimizza tale costo passiamo ai logaritmi naturali (base e):

logx (K) * x = x * ln(K) / ln(x)

la cui derivata è:

ln(K) * (1/ln(x) + x * ((-1/x) * (1/ln(x)) exp 2)

che si annulla per ln(x) = 1 quindi per x = e

Con questa impostazione le basi intere ottimali sono 2 e 3.

Page 12: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

12 / 55

Pregi dei segnali digitali

I numerosi ed interessanti pregi dei segnali digitali (soprattutto binari) sono alla base della ben

nota evoluzione (o rivoluzione) elettronica ed informatica. Citiamo brevemente i principali:

Possibilità di rappresentare con esattezza e senza incertezza configurazioni di un alfabeto finito. L’aumento della precisione (cardinalità dell’alfabeto) ha un costo (numero di bit necessari) crescente solo con il logaritmo della cardinalità.

Semplicità e robustezza dei circuiti di generazione e riconoscimento dei segnali.

Elevata immunità ai disturbi (consente la rappresentazione esatta con elevata probabilità).

Semplicità dei circuiti di memoria (bistabili).

Semplicità dei circuiti per semplici elaborazioni.

Realizzabilità di elaborazioni complesse con (elevato) numero di circuiti semplici, senza degrado (v. eccezioni) della precisione dei risultati, grazie all'effetto di rigenerazione consentito dai margini di rumore dei circuiti digitali.

Difetti dei segnali digitali

I difetti dei segnali digitali sono, come è spontaneo pensare, complementari ai pregi dei segnali

analogici. Su questi punti vanno quindi effettuate attente analisi quando si debba decidere per

l'una o l'altra forma.

Gli errori possono colpire indifferentemente i bit meno significativi (LSB) o (purtroppo!) i più significativi (MSB)

Gli errori possono quindi "stravolgere" l'informazione (corollario del punto precedente).

L'interpretazione del valore è poco "immediata" (passa attraverso una codifica).

Occorrono vari bit (in parallelo o in sequenza temporale) per rappresentare informazioni "ricche".

Con bit in parallelo si hanno problemi di commutazioni non contemporanee (corse critiche), da cui l’uso di codice Gray.

Si ha la necessità di conversione (A/D = Analogico-Digitale) nei numerosi casi di informazioni che sono intrinsecamente continue, accettando i costi e gli errori di quantizzazione di tale conversione.

Page 13: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

13 / 55

Rappresentazione delle informazioni con segnali digitali binari

La grandezza fisica che si utilizza (segnale elettrico di tensione) assume solo valori in due fasce discrete

(binaria)

H

L

Segnale (volt)0 5valori accettati

valori emessi

Informazione

Valori binari

L’elemento tecnologico base per la realizzazione di circuiti digitali è il transistore il cui funzionamento può essere modellato (in modo molto semplificato) come il funzionamento di un interruttore (aperto o chiuso), quindi con due stati fisici, cui corrispondono 2 opportune tensioni (in genere 0V e 5V)..

BIT (binary digit) = cifra binaria. (unità di informazione elementare)

Un bit può assumere due valori che possono essere associati ai simboli:

L(ow) H(igh) aspetto fisico del segnale

0 1 aspetto aritmetico

false true aspetto logico

Page 14: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

14 / 55

Codifiche binarie

Con N bit si hanno M = 2N configurazioni diverse (simboli).

Un’informazione di un certo tipo è rappresentabile da una sequenza (configurazione) di bit (cifre).

Quanti sono i valori distinti rappresentabili di un certo tipo di informazioni?

se sono disponibili N cifre binarie si possono avere 2N configurazioni diverse e quindi rappresentare al più 2N valori distinti dell’informazione

Tra M informazioni e le (o un sottoinsieme delle) configurazioni di N bit si può creare

una convenzionale corrispondenza biunivoca, detta codifica.

Una codifica è un insieme di regole per costruire e interpretare la sequenza di cifre

– nel caso in esame cifre binarie, cioè bit – che rappresenta l’informazione di un

dato tipo (caratteri, numeri interi, ecc.)

corrispondenza biunivoca tra

rappresentazione (i bit) dell’informazione e

significato (valore) dell’informazione

codifica

RAPPRESENTAZIONE SIGNIFICATO

Corrispondenza:

è definita in modo arbitrario (è una convenzione) ma deve essere nota e sempre rispettata da chi

genera e da chi utilizza le informazioni. Vengono quindi in genere definite delle codifiche

standard.

L'arbitrarietà della scelta convenzionale di codifica viene di solito sfruttata per godere di proprietà utili, quali:

- facilità di operazioni aritmetiche tra numeri (codifica pesata e complemento a 2) - ordinamento alfabetico tra le lettere (codifica ASCII) - ordinamenti naturali delle informazioni (codifiche enumerative) - raggruppamenti naturali delle informazioni (significato dei singoli bit o di gruppi) - facilità di conversione in base 10 (codifica BCD) - proprietà di simboli contigui (codifica Gray) - riconoscimento e correzione di alcuni errori (codifica Hamming)

Page 15: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

15 / 55

La corrispondenza, una volta decisa, va scrupolosamente rispettata tra il produttore dell’informazione che è generatore del codice (codificatore) e il destinatario dell’informazione che è interpretatore del codice (decodificatore) se si vuole che quest’ultimo sia in grado di ricostruire correttamente le informazioni. Le informazioni che consideriamo sono destinate ad essere rappresentate ed elaborate da macchine (calcolatori elettronici).

Aspetto fondamentale:

il numero di elementi “fisici” (elementi di memoria, collegamenti ....) disponibile per

supportare i segnali, cioè per contenere e comunicare la rappresentazione di ogni tipo di

informazione, è finito.

Poichè ogni singolo elemento fisico “contiene” il valore di una cifra binaria, in ogni componente di

un calcolatore il numero di cifre binarie disponibili per rappresentare l’informazione è finito.

Quindi il numero di valori distinti rappresentabili per ogni informazione è finito.

Nasce quindi il concetto di non rappresentabilità di valori di informazioni che richiedono un

numero di cifre maggiore di quelle disponibili.

NOTA – il concetto di tipo di informazione, che è un concetto fondamentale della rappresentazione delle informazioni e quindi della programmazione, si riferisce al numero di bit adottati e alla codifica adottata per rappresentare i valori di quell’informazione.

Categorie di informazioni da rappresentare

Possiamo classificare le informazioni in enumerative e numeriche (quantitative)

- Informazioni enumerative Alle diverse informazioni sono associate diverse configurazioni di N bit, che in genere possono

anche essere interpretate come numeri interi.

Caratteristiche delle informazioni enumerative:

Numerabili (associabili a un sottoinsieme dei numeri naturali)

non numeriche

l’ordine di enumerazione è significativo: può denotare delle proprietà tra le informazioni e consentire delle operazioni (ad es. confronto) tra le informazioni

Esempi di informazioni enumerative:

Caratteri ASCII Si utilizzano 7 bit per rappresentare tutti i caratteri di stampa oltre ad un certo numero di caratteri di controllo (8 bit per ASCII esteso)

Colori dell’arcobaleno: 7 colori 3 bit e quindi 8 possibili configurazioni distinte

Page 16: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

16 / 55

scelta della corrispondenza (arbitraria, ma si può preservare la posizione nell’arcobaleno, cioè l’ordine per frequenze della luce crescenti)

la configurazione libera disponibile può venire usata per rappresentare il “non colore” (nero)

significato codifica

nero 000 Questa tabella riporta

rosso 001 una possibile (non standard)

arancio 010 codifica binaria dei 7 colori.

giallo 011

verde 100

azzurro 101

indaco 110

violetto 111

Le istruzioni macchina di un calcolatore Le istruzioni macchina costituiscono una delle più importanti informazioni di tipo enumerativo che vanno, ovviamente, rappresentate in forma binaria per poter essere memorizzate nella memoria di lavoro ed utilizzate nel calcolatore. La codifica delle istruzioni macchina è generalmente diversa per i vari modelli di calcolatori.

Giorni della settimana

Mesi dell’anno

Note musicali .....

Page 17: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

17 / 55

Informazioni enumerative: caratteri alfanumerici

I caratteri alfanumerici ci consentono di rappresentare tutte le informazioni “scrivibili” (e, con

qualche difficoltà, anche immagini, suoni, sensazioni, ecc.).

Si tratta quindi di una codifica molto importante ed utilizzata.

Con questa codifica si devono rappresentare:

lettere maiuscole/minuscole A a .. Z z

spazio

cifre decimali 0 .... 9

segni di interpunzione , : ; .

simboli di stampa ! “ # % @ ) < =

caratteri di controllo per gestire la visualizzazione, la stampa, la trasmissione dei caratteri (fine riga, salto di riga, salto pagina, inizio messaggio ....)

La rappresentazione dei caratteri alfanumerici fa uso di una codifica standard

universalmente accettata: codifica ASCII (American Standard Code for Information

Interchange)

La codifica ASCII è la codifica ufficiale per i caratteri nel linguaggio C

Codifica ASCII: caratteristiche

7 bit per rappresentare ogni carattere quindi si possono rappresentare 128 caratteri alfanumerici distinti: le possibili configurazioni vanno da 0000000 a 1111111

Generalmente si usa un byte (8 bit) per rappresentare un carattere, lasciando a zero il bit più significativo.

la codifica è stata scelta in modo da rispettare alcune “proprietà” dei caratteri:

ordinamento del valore numerico delle cifre

ordinamento alfabetico delle lettere introduce le seguenti ulteriori proprietà:

le lettere maiuscole precedono tutte le lettere minuscole

la “distanza” (differenza tra i valori interpretati numericamente) tra una lettera maiuscola e la sua corrispondente minuscola è la stessa per tutte le lettere e vale 3210

ASCII esteso (8 bit) 256 configurazioni:

le prime 128 (da 00000000 a 01111111) sono associate ai caratteri dell’ASCII Standard, le rimanenti

128 (da 10000000 a 11111111) sono associate a lettere accentate..., a caratteri semigrafici ...

Page 18: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

18 / 55

Tabella della codifica ASCII dei caratteri alfanumerici

bit meno significativi

bit più significativi

000 001 010 011 100 101 110 111

0000 NUL DLE SP32 0 48 @ 64 P 80 ` 96 p 112

0001 SOH DC1 ! 33 1 49 A 65 Q 81 a 97 q 113

0010 STX DC2 “ 34 2 50 B 66 R 82 b 98 r 114

0011 ETX DC3 # 35 3 51 C 67 S 83 c 99 s 115

0100 EOT DC4 $ 36 4 52 D 68 T 84 d 100 t 116

0101 ENQ NAK % 37 5 53 E 69 U 85 e 101 u 117

0110 ACK SYN & 38 6 54 F 70 V 86 f 102 v 118

0111 BEL ETB ’ 39 7 55 G 71 W 87 g 103 w 119

1000 BS CAN ( 40 8 56 H 72 X 88 h 104 x 120

1001 HT EM ) 41 9 57 I 73 Y 89 i 105 y 121

1010 LF SUB * 42 : 58 J 74 Z 90 j 106 z 122

1011 VT ESC + 43 ; 59 K 75 [ 91 k 107 { 123

1100 FF FS , 44 < 60 L 76 \ 92 l 108 | 124

1101 CR GS – 45 = 61 M 77 ] 93 m 109 } 125

1110 SO RS . 46 > 62 N 78 ^ 94 n 110 ~ 126

1111 SI US / 47 ? 63 O 79 – 95 o 111 DEL

Page 19: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

19 / 55

N.B.

I valori numerici in piccolo sono il valore decimale corrispondente al codice ASCII (interpretato

numericamente)

La codifica ASCII di un carattere nella tabella è ottenuta prendendo i 3 bit corrispondenti alla

colonna, seguiti dai 4 bit corrispondenti alla riga (questi gruppi di bit sono anche facilmente

associabili a cifre esadecimali - v.seguito).

E’ molto importante aver chiara la differenza tra l’informazione costituita da una cifra (intesa

come carattere) e l’informazione numerica (valore numerico) rappresentata da una (o più) cifra.

Cioè le cifre sono caratteri alfanumerici, come tali codificati in ASCII, che rappresentano valori

numerici che possono essere rappresentati con le codifiche numeriche presentate nel seguito.

Esempio

La cifra 5 è rappresentata su un byte con 0011 0101 (ASCII)

il numero 5 con 0000 0101 (binario pesato, vedi seguito)

Esempi di codifica ASCII:

il carattere B è codificato con 100 0010 e il carattere b (minuscolo) con 110 0010

la cifra 1 è codificata con 011 0001 – qui è considerata come un carattere di stampa.

Lo spazio SP è codificato con 010 0000

Il CR detto anche Carriage Return, o Enter, o Invio è codificato con 000 1101

Codifiche di valori numerici

Caratteristiche:

devono consentire di rappresentare in modo “adeguato” gli insiemi della matematica (naturali, interi, razionali, reali)

codificano dei sottoinsiemi di alcuni degli insiemi della matematica del punto precedente

devono essere possibili tutte le operazioni della matematica (e, almeno quelle fondamentali, devono essere facili da realizzare con dei circuiti)

Codifiche numeriche a granularità costante

Le codifiche numeriche seguenti presentano una risoluzione (granularità) costante in valore assoluto, in

tutto il campo di valori rappresentati.

Il campo di valori rappresentabili costituisce un sottoinsieme dei numeri della matematica.

I numeri interi presentano, ovviamente, granularità pari ad una unità.

Page 20: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

20 / 55

Codifica di numeri naturali binario puro (codifica pesata) corrisponde alla rappresentazione in base 2, dove ogni cifra è rappresentata da un bit. Il valore P è dato da: P2 = bN-1 2N-1+ bN-2 2N-2+......+ b2 22+ b1 21+ b0 20

Cioè ogni bit ha un peso dato dalla potenza di 2 (la base) elevato ad un esponente corrispondente

alla posizione del bit nell’ambito del numero.

bit più significativo: bN-1 bit meno significativo: b0

Questa è la codifica standard del linguaggio C per i tipi unsigned (unsigned int

unsigned long) e si basa sulla notazione posizionale o “pesata” che adottiamo usualmente

anche per i numeri codificati in decimale e che ha la proprietà di facilitare l’esecuzione delle

operazioni aritmetiche. I motivi di questa facilitazione nelle operazioni sono esattamente gli stessi

di altre rappresentazioni pesate, come ad esempio quella decimale usuale cui siamo abituati, e

cioè la possibilità di trattare separatamente le cifre di un dato peso da quelle di peso superiore,

eventualmente propagando il semplice riporto. E’ facile osservare che con rappresentazioni non

pesate, come ad esempio quella dei numeri “romani” ciò non è possibile.

Quella pesata è la codifica tipica dei tipi unsigned, del C, per cui vale l’interessante proprietà:

siano V1, V2 e D valori interi rappresentabili con N bit, cioè minori di 2N

Es. N=8 bit, V1=250, D=16, V2=10

ADD (X, Y) e SUB (X, Y) siano le istruzioni assembler di somma e sottrazione

se V2 = ADD (V1, D) eventualmente anche con overflow,

allora D = SUB (V2, V1)

Questa proprietà consente di usare un normale contatore (unsigned) e calcolare la differenza D tra le letture V2 e V1, indipendentemente dall’overflow del contatore.

Nella notazione pesata posizionale, in qualunque base, il valore numerico rappresentato da una

cifra dipende

dal valore della cifra

dalla posizione della cifra nel numero, con peso dato dalla base elevata alla potenza con esponente pari alla posizione.

Esempio in base 10 P10= 12110 = 1102+2101+1100

Data una base B e un numero di cifre disponibili N i numeri naturali P (interi 0)

rappresentabili sono

0 P BN-1

Ad esempio in base 2 se il numero di bit disponibili è N=3

i valori numerici rappresentabili sono

0 P 23-1 cioè 0 P 7

Page 21: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

21 / 55

Esempi con N = 3 bit

decimale binario valore

0 000 0 *22+0 *21+0 *20

1 001 0 *22+0 *21+1 *20

2 010 0 *22+1 *21+0 *20

3 011 0 *22+1 *21+1 *20

4 100 1 *22+0 *21+0 *20

5 101 1 *22+0 *21+1 *20

6 110 1 *22+1 *21+0 *20

7 111 1 *22+1 *21+1 *20

Esempio:

numero di bit disponibili N=5 i valori numerici P rappresentabili sono

0 P 25-1 cioè 0 P 31

decimale binario valore

0 00000 0* 24+0* 23+0* 22+0* 21+0* 20

1 00001 0* 24+0* 23+0* 22+0* 21+1* 20

2 00010 0* 24+0* 23+0* 22+1* 21+0* 20

..... ......

7 00111 0* 24+0* 23+1* 22+1* 21+1* 20

8 01000 0* 24+1* 23+0* 22+0* 21+0* 20

..... ......

15 01111 0* 24+1* 23+1* 22+1* 21+1* 20

16 10000 1* 24+0* 23+0* 22+0* 21+0* 20

..... ......

30 11110 1* 24+1* 23+1* 22+1* 21+0* 20

31 11111 1* 24+1* 23+1* 22+1* 21+1* 20

Nella tabella sono riportati solo alcuni dei valori codificabili con 5 bit, ed in particolare sono

indicati alcuni valori consecutivi che presentano una codifica in cui molti bit “commutano”, come

ad esempio nel passaggio dal valore 15 al valore 16.

Page 22: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

22 / 55

Gli zeri davanti “non contano” ma ci devono essere.

Siamo abituati a non scrivere gli zeri non significativi, lasciandoli impliciti. Invece i segnali fisici previsti sono sempre presenti e possono solo indicare i valori 0 o 1 per tutti i bit usati per rappresentare un valore numerico, e non possono “sparire”. Per ogni dato tipo di informazioni si adotta un numero fisso di bit, che deve essere stabilito a priori per quel tipo di informazioni, e non una quantità di bit che dipende dal valore di volta in volta rappresentato. Potenze di 2 da sapere a memoria o saper ricavare rapidamente:

N=6 26 = 64

N=7 27 = 128

N=8 28 = 256

N=10 210 = 1024 (1 K)

N=16 216 = 26210 = 65536 64.000 (64 K)

N=32 232 = 22210 210 210 4.000.000.000 (4 G)

E’ opportuno ricordare che i campi di valori interi naturali rappresentabili con codifica binaria pesata sono:

8 bit 0 . . 255

10 bit 0 . . 1023 1 K

12 bit 0 . . 4095 4 K

16 bit 0 . . 65535 64 K

20 bit 0 . . circa 1 milione 1 M

30 bit 0 . . circa 1 miliardo 1 G

32 bit 0 . . circa 4 miliardi

Page 23: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

23 / 55

Codifica esadecimale (HEX)

E’ la codifica pesata dei numeri naturali in base B=16, sono quindi previste 16 cifre

diverse. Vengono usate le usuali cifre 0 .. 9 e poi le lettere A, B, C, D, E, F

NOTA – La codifica esadecimale non è, ovviamente, una codifica binaria, e non è

utilizzata all’interno dei calcolatori. Come la codifica decimale può essere usata

nell’ambito di programmi e di documenti in genere. Qui le cifre sono codificate

come caratteri in codice ASCII ed è solo la traduzione del programma in codice

macchina eseguibile che trasforma i numeri decimali ed esadecimali in codifica

binaria pesata.

valore cifra

hex

binario

0 0 0000

1 1 0001

2 2 0010

3 3 0011

4 4 0100

5 5 0101

6 6 0110

7 7 0111

8 8 1000

9 9 1001

10 A 1010

11 B 1011

12 C 1100

13 D 1101

14 E 1110

15 F 1111

La comodità della rappresentazione HEX sta nella

facilità di conversione in binario e viceversa:

ogni gruppo di 4 bit corrisponde direttamente ad

una cifra HEX, come nella tabella accanto.

ESEMPIO

binario 0110 1001 1101 0100

HEX 6 9 D 4

Generalmente si premette uno “0” iniziale e una

“h” finale.

cioè 069D4h

oppure, nel linguaggio C si premette 0x

cioè 0x69d4

Page 24: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

24 / 55

Il valore di un generico numero rappresentato in esadecimale si ottiene dalla

relazione (dove N rappresenta il numero di cifre esadecimali):

P16=bN-1 16N-1+bN-2 16N-2+......+b2 162+b1 161+b0 160

Cioè la normale rappresentazione pesata in base 16

Nella documentazione tecnica di calcolatori ed in generale di circuiti logici occorre

spesso citare delle configurazioni binarie (codifiche, indirizzi, ecc.).

Sequenze di 16 o 32 bit rappresentati con “1” e “0” sono, per l’uomo, scomode da

gestire e difficili da ricordare.

Si ricorre quindi generalmente alla rappresentazione esadecimale (HEX) che è più

compatta di quella binaria equivalente. In particolare la forma HEX è usata spesso

nel linguaggio Assembler.

Page 25: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

25 / 55

Numeri naturali Codifica Gray

Questa codifica è caratterizzata dalla seguente proprietà:

dato un valore numerico da rappresentare

la sua rappresentazione è diversa per il valore di una sola cifra (distanza di Hamming = 1) dalla rappresentazione del valore numerico precedente e dalla rappresentazione del valore numerico successivo. Cioè passando da un valore al successivo (o precedente) commuta un solo bit.

Decimale Codifica Gray

0 000

1 001

2 011

3 010 Esempio di codifica Gray

4 110 con 3 bit

5 111

6 101

7 100

Utile per rappresentare senza incertezze, con segnali fisici, dei valori numerici che nel tempo si incrementano e decrementano, evitando di richiedere le commutazioni di più di un bit alla volta, che potrebbero verificarsi non contemporaneamente. Si noti infatti che nella codifica pesata il passaggio da un valore (es. 7 = 0111) al successivo (es. 8 =1000) può comportare la commutazione anche di numerosi bit. Durante l’intervallo di tempo in cui alcuni bit sono già commutati ma altri devono ancora commutare si hanno configurazioni anche drasticamente non significative che, se memorizzate, darebbero luogo ad errori anche grossolani. Questa codifica Gray è usata in applicazioni di automazione industriale. Il codice Gray è detto anche codice riflesso perchè, come è facile notare la seconda metà della tabella presenta il primo bit a 1 ed i successivi bit con configurazioni speculari rispetto a quelle della prima metà tabella. Da questa osservazione si ricava anche un procedimento per la generazione di una tabella Gray di 2M righe a partire da una tabella data di M righe: si antepone uno 0 alle prime M configurazioni e le successive M configurazioni presenteranno un 1 seguito da configurazioni speculari rispetto alle precedenti.

Page 26: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

26 / 55

Codifica di numeri naturali Codifica BCD (Binary Coded Decimal)

Con questa codifica si utilizza un gruppo di 4 bit (detto anche nibble) per rappresentare in binario

puro una cifra decimale (Binary Coded Decimal).

Usata talora nelle interfacce con dispositivi di gestione o visualizzazione di cifre decimali, oppure

per eseguire calcoli in “decimale”, in cui ad esempio 1/10 non è periodico come sarebbe invece in

base 2.

Poichè le cifre decimali vanno da 0 a 9, il valore numerico massimo da rappresentare in binario è 9: sono quindi necessari 4 bit per ogni cifra decimale. Le 6 configurazioni rimanenti dei 4 bit non sono utilizzate.

Cifra decimale Codifica BCD

0 0000

1 0001

2 0010

3 0011

4 0100

5 0101

6 0110

7 0111

8 1000

9 1001 Ad esempio: il valore decimale 1429 è codificato come 0001 0100 0010 1001 1 4 2 9 Questa codifica ha la proprietà di rendere facile la conversione con i numeri rappresentati in base dieci. Richiede circuiti un po’ più complessi per l’esecuzione delle operazioni aritmetiche. Non sfrutta tutte le combinazioni dei bit. Ad es. con 12 bit binario puro 0 – 4095

con 12 bit BCD 0 – 999 Nota – Si tratta di una codifica pesata “doppia”, che inserisce cioè i bit pesati con potenze di 2 nei nibble a loro volta pesati con potenze di 10.

Page 27: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

27 / 55

Conversione della rappresentazione pesata

Conversione =

passaggio dalla rappresentazione pesata di un numero naturale da una base b1 ad una

base b2.

Le regole di conversione si basano:

sull’uguaglianza dei valori numerici, cioè indipendentemente dalla base di rappresentazione il valore del numero deve essere lo stesso

sul concetto di notazione pesata, cioè con peso delle cifre dato da potenze della base

Consideriamo i casi di conversione da binario a decimale e da decimale a binario di numeri naturali

Conversione binario → decimale (numeri naturali):

è molto semplice se si ricorda il significato di rappresentazione posizionale pesata

P2=111102 = 124+123+122+121+020

= 16 + 8 + 4 + 2 + 0 = 3010

Conversione decimale → binario di numeri naturali

La rappresentazione di un valore numerico in codifica binaria pesata può essere trovata con un

procedimento (algoritmo) che permette di calcolare i bit a partire dal meno significativo al più

significativo.

Esempio: Algoritmo, descritto con pseudocodice, di conversione in binario del numero intero

decimale VALORE:

Inizio algoritmo V = VALORE n = 0 Ripetere il ciclo finchè V > 0

Bn = resto divisione intera (V/2) V = risultato divisione intera (V/2) Incrementa n di 1

Fine ciclo Fine algoritmo

Bn sono i bit della rappresentazione binaria pesata del numero decimale VALORE.

Il numero di iterazioni necessarie per arrivare al termine del procedimento determina il numero

minimo di bit necessari per rappresentare quel particolare numero in codifica binaria pesata.

Page 28: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

28 / 55

Si ricordi che in generale il numero di bit disponibili è prefissato da aspetti costruttivi del sistema

digitale usato.

Se i bit disponibili non sono in quantità sufficiente il valore dato non è rappresentabile in binario

con quel numero di bit.

Se i bit sono in quantità maggiore di quelli necessari, gli eventuali bit più significativi eccedenti

assumono il valore 0.

Esempio: convertire in base 2 il numero decimale 37.

V 37 B0 1

V 18 B1 0

V 9 B2 1

V 4 B3 0

V 2 B4 0

V 1 B5 1

V 0

3710 = 1001012 rappresentazione col numero minimo di bit

La rappresentazione con 8 bit (un byte) è

3710 = 001001012

Nell’esempio, il numero minimo di bit è 6. B5 rappresenta il bit più significativo.

Si noti che continuando il procedimento si otterrebbero (correttamente) degli 0 nelle posizioni più significative. Quindi l’algoritmo di conversione adatto al caso di numero prefissato NB di bit potrebbe essere: Inizio algoritmo V = VALORE n = 0 Ripetere il ciclo finchè n < NB

Bn = resto divisione intera (V/2) V = risultato divisione intera (V/2) Incrementa n di 1

Fine ciclo Se V > 0 allora VALORE non è rappresentabile con NB bit (OVERFLOW)

Fine algoritmo

Page 29: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

29 / 55

Operazioni aritmetiche tra naturali in notazione posizionale

Le operazioni aritmetiche in base 2 seguono le stesse “regole” di quelle in base 10.

E’ fondamentale ricordarsi del problema della rappresentabilità dell’informazione con un numero di bit predefinito.

Ad esempio, nel caso di addizione di due interi rappresentati su N bit, il risultato della somma

può richiedere N+1 bit (overflow = traboccamento, o superamento) e quindi non essere

rappresentabile con i soli N bit.

I circuiti per eseguire le operazioni aritmetiche in notazione posizionale sono molto semplici perchè il peso “posizionale” consente di trattare le varie posizioni una dopo l’altra, come siamo abituati a fare anche con la rappresentazione decimale.

Questo è il notevole vantaggio della codifica posizionale.

Esempio: tabella della somma aritmetica su un bit.

Come nella rappresentazione decimale esiste il riporto verso la cifra più

significativa (indicato tra parentesi).

La tabella viene di seguito presentata in due forme interessanti ed equivalenti tra loro.

Nella tabella a sinistra (a matrice bidimensionale) si assegna una riga per ugnuno dei due valori

del bit addendo a ed una colonna per ogni valore del bit addendo b. Il valore del bit di somma è

riportato nella cella individuata dai valori dei due addendi.

Nella tabella a destra (a coppia di vettori configurazioni / risultati) si adotta una riga per ognuna

delle quattro combinazioni di valori dei due bit addendi e nella colonna accanto sono riportati i

valori del bit di somma e tra parentesi il valore del riporto.

b a b a+b

+ 0 1 0 0 0 (0)

a 0 0 (0) 1 (0) = 0 1 1 (0)

1 1 (0) 0 (1) 1 0 1 (0)

1 1 0 (1)

Page 30: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

30 / 55

Operazioni aritmetiche con codifica binaria pesata: esempi

Somma: N = 4 bit valori rappresentabili da 0 a 15

111 riporti

7 + 0111 + 3 0011

10 1010

1 110 riporti

7 + 0111 + 10 1010

17 (1)0001 non rappresentabile

Sottrazione: N = 4 bit valori rappresentabili da 0 a 15

110 prestiti

12 - 1100 - 6 0110

6 0110

1 000 prestiti

5 -- 0101 - 8 1000

- 3 (1)1101 non rappresentabile come intero naturale su 4 bit

Page 31: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

31 / 55

Codifica di numeri interi relativi complemento a 2

E’ la codifica dei tipi int e long del linguaggio C

Questa codifica ha la notevole proprietà di unificare operazioni di somma e di sottrazione nella

somma algebrica. E’ la tipica codifica degli interi relativi nella maggior parte dei calcolatori, come

ad es. il tipo int del linguaggio C.

In aritmetica decimale, per rappresentare i numeri relativi siamo abituati ad

utilizzare la rappresentazione in modulo e segno che però è scomoda per

l’esecuzione automatica di operazioni di somme algebriche con circuiti.

Le operazioni aritmetiche (algebriche) di somma e sottrazione, così come siamo abituati ad

eseguirle, lavorano in modulo e segno e implicano una serie di operazioni elementari per ottenere

il risultato corretto:

analisi dei segni degli operandi esempio: 5 + (-7) sottrazione

confronto tra i moduli degli operandi 7 > 5 7 è il minuendo

somma tra moduli (naturali) se i segni sono concordi oppure

sottrazione tra moduli (naturali) 7 - 5 = 2 (modulo del risultato)

determinazione del segno del risultato risultato negativo -2

All’interno dei calcolatori per i numeri interi relativi si utilizza usualmente non una

rappresentazione in modulo e segno, ma la rappresentazione detta in complemento

a 2 (two’s complement) che consente di trattare somme e sottrazioni algebriche in

modo indifferenziato e quindi è realizzabile con circuiti aritmetici più semplici.

Date N cifre binarie, sono disponibili 2N configurazioni distinte: di queste

2N-1 vengono utilizzate per rappresentare valori 0 e 2N-1 vengono utilizzate per rappresentare valori < 0.

Ad esempio, se N = 4 sono disponibili 16 configurazioni distinte, con queste posso rappresentare

valori 0: da 0 a 2N-1-1 cioè da 0 a 7

valori < 0: da -1 a - 2N-1 cioè da -1 a -8 Esempi di campi di valori rappresentabili

N=6 da -32 a +31

N=7 da -64 a +63

N=8 da -128 a +127

N=10 da -512 a + 511

N=16 da -32.768 a +32.767

N=32 da - 2.000.000.000 a + 2.000.000.000

Page 32: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

32 / 55

Rappresentazione in complemento a 2

Esempio di codifica su 4 bit

+7 0111

+6 0110

+5 0101

+4 0100

+3 0011

+2 0010

+1 0001

0 0000

-1 1111

-2 1110

-3 1101

-4 1100

-5 1011

-6 1010

-7 1001

-8 1000

La rappresentazione del valore numerico intero positivo P in cpl 2 su N bit si ottiene

nel modo seguente:

P ( 0) P in cpl2 = P2 in codifica pesata su N bit

Cioè la rappresentazione dei positivi coincide con la normale rappresentazione binaria pesata ma è valida solo se il primo bit (più significativo) risulta 0. E il suo opposto

P (<0) P in cpl2 = (2NP)2 in codifica pesata su N bit

La rappresentazione dei negativi può essere calcolata sottraendo il modulo da 2N e calcolando la

rappresentazione binaria pesata del risultato.

In genere risulta più semplice procedere come descritto nel seguito.

Nota bene:

dal valore del bit più significativo si

può dedurre il segno:

0 valore 0

1 valore < 0

ma il primo bit non è il segno: non

basta cambiarlo per cambiare

segno al numero!!! +1 -1

Page 33: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

33 / 55

Problema:

dato un valore numerico intero relativo individuarne la rappresentazione su N bit in cpl 2

Regola di conversione da decimale a cpl 2 su N bit

Si considera il valore assoluto del numero da rappresentare Lo si converte in notazione binaria posizionale su N cifre (bit) verificando che il primo bit sia 0

se il numero da rappresentare è 0, questa è già la rappresentazione in complemento a 2

se il numero da rappresentare è < 0, si deve calcolare l’opposto

Calcolo dell’opposto di un intero rappresentato in complemento a due

si complementano tutti i bit e si somma 1

oppure in alternativa,

partendo dal bit meno significativo, si lasciano inalterati i valori dei bit fino al primo 1 incluso e

si complementano i rimanenti bit

Ovviamente la regola di calcolo dell’opposto vale sia per passare da un valore positivo al

corrispondente negativo sia per passare da un valore negativo al corrispondente positivo.

Esempio su 4 bit.

P = - 6 610 = 01102

complemento i bit 1001

sommo 1 1010

- 610 = 1010cpl2

E’ fondamentale ricordare che nella rappresentazione in cpl2 è essenziale

rappresentare tutti i bit previsti, inclusi gli zeri iniziali che compaiono per i valori

positivi.

E’ inoltre importante notare che non è rappresentabile l’opposto del minimo

numero negativo, con il numero di bit adottato.

Page 34: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

34 / 55

Esempi di operazioni aritmetiche di somma algebrica tra interi relativi in

complemento a 2

011

3 + 0011 + -5 1011

-2 1110

Risultato negativo corretto

1 111 - 1 + 1111 + 1 0001

0 (1)0000

Qui c’è riporto sul bit più significativo che va trascurato. Il risultato (zero) è corretto.

Nota –

Se i due addendi hanno segno opposto non si avrà mai supero e l’eventuale riporto a monte del bit più significativo va ignorato e il risultato è corretto.

Se i due addendi hanno lo stesso segno, si ha supero se il risultato appare di segno opposto, anche se non si ha riporto a monte del bit più significativo, e il risultato in questo caso ovviamente non è corretto.

Quindi si ha OVERFLOW se gli addendi hanno segno concorde ed il risultato ha segno discorde da essi. Questo è il modo con cui la ALU (unità logica e aritmetica della CPU) determina il valore del bit di Overflow.

110 2 + 0010 + 7 0111

9 1001

1001 e’ negativo!

Qui c’è superamento (overflow) anche

se non c’è riporto.

Risultato non corretto, che in cpl2 su

4 bit rappresenta il valore - 7

Page 35: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

35 / 55

Le codifiche intere considerate finora sono

- codifica pesata (binario puro) - codifica in complemento a 2 - codifica Gray - codifica BCD

Queste codifiche hanno in comune la proprietà di avere una risoluzione costante in valore

assoluto, e pari all’unità, in tutto il campo di valori rappresentati, e quindi una risoluzione relativa

che è percentualmente più elevata per i valori più piccoli.

Quando si deve fare attenzione alla risoluzione relativa?

Quando i valori da rappresentare in realtà sarebbero continui, come ad esempio le misure di

grandezze fisiche (tensioni, forze, velocità, pressioni, ecc.).

In questi casi la risoluzione corrisponde agli errori di quantizzazione che si commettono

adottando una codifica intera. In molti casi per le misure non è accettabile un errore di

quantizzazione relativo elevato per piccoli valori di misura.

Quindi le codifiche intere

sono adatte per conteggi di oggetti

sono adatte per quantità monetarie

sono da usare con cautela per rappresentare misure di grandezze continue

Page 36: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

36 / 55

Codifica di numeri razionali: Rappresentazione in virgola fissa (fixed point)

Costituisce un’estensione della codifica posizionale pesata che considera anche le cifre dopo la virgola, con pesi dati dalle potenze negative della base 2, analogamente a quanto si fa normalmente in base 10.

La virgola (point) non viene rappresentata, ma la sua posizione viene prefissata e rigidamente

osservata anche se sottintesa.

Es. Rappresentazione in virgola fissa su 2 byte, di cui uno dopo la virgola:

0000 0110 1100 0000 ^ posizione prefissata della virgola

il valore è 22 + 21 + 2-1 + 2-2

4 + 2 + 0,5 + 0,25 = 6,7510

La rappresentazione in virgola fissa ha la proprietà di avere una risoluzione costante in valore

assoluto, ma che può essere scelta piccola a piacere dedicando un opportuno numero K di bit alla

parte frazionaria

Con K bit dedicati a rappresentare la parte frazionaria si ha una risoluzione = 2-K

Ad es. dedicando 10 bit alla parte dopo la virgola, la risoluzione è 1/1024 cioè circa un millesimo.

Page 37: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

37 / 55

Conversione decimale → binario virgola fissa

La conversione tratta separatamente la parte intera e la parte frazionaria. Parte intera – si procede per divisioni successive, come precedentemente indicato per i numeri

naturali.

Parte frazionaria – si procede per moltiplicazioni x2 come nell’esempio seguente.

Es. 25,3510 da convertire in due byte, uno per la parte intera e uno per la parte

frazionaria

parte intera 25 12 1

12 6 0

6 3 0

3 1 1

1 0 1 00011001 byte prima della virgola

parte frazionaria – si moltiplica per 2 la parte dopo la virgola e ad ogni passaggio si ottiene un bit che è la parte davanti alla virgola

0,35 0,70

0,70 1,40

0,40 0,80

0,80 1,60

0,60 1,20

0,20 0,40

0,40 0,80

0,80 1,60 01 0110 01.. byte dopo la virgola (periodico !!! antiperiodo 01 e

periodo 0110)

25,3510 = 0001 1001 0101 1001 fixed point [byte],[byte]

N.B. anche il valore 1/10 è periodico in base 2 !! In particolare non tutti i numeri frazionari

esprimibili esattamente con un numero finito di cifre decimali sono anche esprimibili esattamente

con un numero finito di bit.

L’essere periodico è una caratteristica che dipende dalla base e non solo dal valore numerico.

Si noti che i tipi interi, pur di tener conto esplicitamente di fattori di scala delle unità di misura, possono essere considerati come un caso particolare di rappresentazione a virgola fissa, con Nf = 0. Ciò consente calcoli anche con valori inferiori all’unità pur usufruendo della maggior velocità (specie nei microcontrollori) delle operazioni tra interi rispetto a quella delle istruzioni tra valori in virgola mobile. Naturalmente occorre valutare attentamente l’accettabilità degli errori relativi e la garanzia di evitare overflow.

Page 38: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

38 / 55

Codifica di numeri razionali:

Rappresentazione in virgola mobile (floating point)

Tutte le codifiche numeriche sopra riportate presentano per tutti i valori rappresentati una

risoluzione costante in valore assoluto ma in molti casi si devono rappresentare valori

(sottoinsieme dei numeri razionali) con codifiche a risoluzione relativa costante.

Numeri in virgola mobile (float o real) Sono separatamente rappresentate la caratteristica e la mantissa.

Presentano risoluzione costante in valore percentuale rispetto al valore rappresentato.

Questa è la rappresentazione tipica di misure e valori ingegneristici.

Risoluzione relativa Rr con Nm bit dedicati alla mantissa Rr = 2 Nm che con il tipico Nm = 23 bit (+1 bit implicito = 24 bit) vale circa uno su 16 milioni.

Il valore di un numero razionale R è esprimibile con la seguente forma (detta anche

notazione ingegneristica) generale per qualunque base b

R = M • b E (R non periodico)

R - valore razionale da rappresentare, positivo o negativo M - mantissa frazionaria con segno b - base E - esponente intero con segno

Quindi, data e sottintesa una base b, un numero rappresentato in virgola mobile può avere la forma

E M Dove M è la rappresentazione con un certo numero di cifre della mantissa nella base b, ed E è la rappresentazione con un certo numero di cifre, anche questa nella base b, dell’esponente da dare alla base. Si noti che:

l’estensione del campo di valori rappresentabili dipende dal numero di cifre adottate per E

la risoluzione (precisione) dipende dal numero di cifre adottate per M Si noti che non è unica la coppia E, M che corrisponde ad un dato valore numerico. Si parla quindi di normalizzazione quando si sceglie la coppia E, M che utilizza al meglio le cifre disponibili per M.

Page 39: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

39 / 55

Codifica di numeri razionali: rappresentazione in virgola mobile

Tipo float del linguaggio C

STANDARD IEEE 754 di codifica floating point su 32 bit

L’attribuzione dei 32 bit ( = 4 byte) è la seguente:

Seeeeeee emmmmmmm mmmmmmmm mmmmmmmm

S = segno mantissa (0 = + 1 = -)

E = esponente + 127

M = parte dopo la virgola della mantissa normalizzata col primo 1 prima della virgola

Il valore numerico rappresentato V vale:

).1(2)1( 127 MV ES

Nota – lo standard IEEE754 adotta

per la mantissa la rappresentazione in modulo (M) e segno (S)

per l’esponente la codifica “eccesso 127”, cioè E = esp +127 quindi NON modulo e segno NE’ complemento a 2.

Campo di valori rappresentabili (nota: 2126 ≈1038 ) L’esponente di 8 bit consente valori di ±126

~ -10 38 . . ~-10 -38 0 ~10 -38 . . ~10 38

Risoluzione relativa uno su 16 milioni (2-24) 23 bit di mantissa M più il primo bit sottinteso perchè sempre = 1 per effetto della

normalizzazione.

La mantissa di 24 bit corrisponde a circa 7 cifre decimali (nota: 224 .≈ 1,6*107 )

casi particolari

Categoria Esp. Mantissa

Zeri 0 0

Numeri denormalizzati 0 non zero

Numeri normalizzati 1 - 254 qualunque

Infiniti 255 0

Nan (not a number) 255 non zero

Page 40: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

40 / 55

Esempio

Si voglia rappresentare nella forma a virgola mobile secondo lo standard IEEE 754 il valore

numerico decimale negativo -6,625

Passo 1 – conversione in binario pesato (base 2) del modulo del numero

Parte intera 6 -> 110 (ottenuta con le solite successive divisioni per 2)

Parte frazionaria 0,625 -> 0,101000... (ottenuta con le solite successive moltiplicazioni per 2)

Codifica in base 2 del modulo 6,625 -> 110,101000... (da considerare moltiplicato per 2 elevato a zero)

Passo 2 – normalizzazione

1,10101000... da moltiplicare per 2 elevato a 2 (la virgola è stata spostata a sinistra di 2 posti)

Si sposta la virgola fino a portarla subito dopo il primo bit che vale 1. Per ogni spostamento a destra

decremento l’esponente, mentre per ogni spostamento a sinistra incremento l’esponente.

Passo 3 – calcolo del segno S

S = 1 dato che il valore da rappresentare è negativo

Passo 4 – calcolo dell’esponente

E = 127 + 2 = 129 -> 10000001

Passo 5 – mantissa normalizzata e privata dell’uno prima della virgola, considerato implicito

M = 10101000... (allineata a sinistra!)

Passo 6 – giustapposizione dei bit della rappresentazione nei 4 byte ad essa dedicati

Seeeeeee emmmmmmm mmmmmmmm mmmmmmmm

11000000 11010100 00000000 00000000

Page 41: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

41 / 55

N.B. 1/10 è periodico in base 2 !! In particolare non tutti i numeri frazionari esprimibili

esattamente con un numero finito di cifre decimali sono anche esprimibili esattamente con un

numero finito di bit. Se la mantissa risulta periodica si mantengono solo i 23+1 bit utilizzabili, e il

valore rappresentato presenta uno scostamento rispetto a quello corretto. Tale scostamento sarà

comunque inferiore a VALORE / 16.000.000

NB. I circa 4 miliardi di configurazioni dei 32 bit usati per la codifica, --consentono di coprire un campo di valori molto ampio con una risoluzione relativa costante, grazie alla distribuzione non uniforme dei valori associati alle configurazioni di bit. Infatti per numeri molto piccoli i valori sono “fitti”, ma si vanno “diradando” per i numeri via via più grandi.

0- +

Approssimativamente gli intervalli tra valori contigui (risoluzione) sono:

per valori di 10000 l’intervallo è di un millesimo

per valori di 10 milioni l’intervallo è di un’unità

per valori di 10 miliardi l’intervallo è di mille (!!!)

ecc. Meditare sulle conseguenze!

Operando con floating point di 32 bit si ha che: Un miliardo più dieci risulta un miliardo.

Cioè i valori non rappresentabili non sono solo quelli esterni all’intervallo di rappresentabilità,

ma anche valori interni.

Ci sono anche gli standard IEEE floating point su 64 (tipo double) e su 80 bit che estendono

notevolmente il campo di valori rappresentabili e riducono la risoluzione rendendola molto più

fine e consentendo quindi precisioni molto maggiori. Importanti per calcolo scientifico, per il quale

è generalmente consigliabile adottare variabili di tipo double..

Le principali proprietà della codifica floating point sono:

esteso campo di valori rappresentabili

risoluzione (errore di quantizzazione) percentualmente costante in tutto il campo di valori

Queste proprietà rendono la rappresentazione floating point

adatta a rappresentare misure di grandezze fisiche

non adatta a rappresentare quantità monetarie

non adatta a rappresentare conteggi di oggetti Si noti che le caratteristiche della rappresentazione floating point sono “complementari” a quelle delle rappresentazioni intere (cpl2, Gray, BCD, ecc.)

Page 42: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

42 / 55

Varianti delle codifiche, dotate di ridondanza

In vari casi ai normali codici si aggiungono bit ridondanti per i seguenti scopi:

-- per rilievo di errori (ad es. bit di parità)

-- per rilievo e correzione di errori (codici di Hamming)

Si noti che con la ridondanza il numero di informazioni corrette rappresentabili è una frazione del numero di configurazioni possibili dei bit utilizzata. Ogni bit ridondante raddoppia il numero di configurazioni possibili a parità di informazioni rappresentabili.

Page 43: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

43 / 55

Funzioni logiche e circuiti logici Algebra di Boole

L’algebra di Boole definisce

costanti e variabili logiche che possono assumere i due valori Vero e Falso (True False),

gli operatori logici And, Or e Not, che applicati a valori logici producono risultati logici,

e fornisce le regole per comporre, con l’eventuale uso di parentesi, le espressioni logiche il cui valore è Vero o Falso.

Funzioni logiche Le funzioni logiche sono importanti perchè consentono di esprimere delle condizioni, dipendenti da valori logici, sul cui esito basare la decisione di compiere o meno determinate operazioni. Un aspetto importante è la possibilità di mappare facilmente le funzioni logiche su circuiti elettronici digitali (detti circuiti logici o reti logiche) in modo da rendere concreto e automatico il comportamento descritto dalle funzioni logiche. Le funzioni logiche quindi assumono un’importanza fondamentale

sia negli aspetti SW (programmazione) per descrivere le condizioni nei costrutti di controllo condizionali, di selezione o di iterazione

sia negli aspetti HW (architettura) dei calcolatori.

Variabili logiche e circuiti logici- Le variabili logiche possono assumere due valori. I bit possono rappresentare i valori logici vero (true) e falso (false) con i livelli di segnale elettrico H (high = 5V) e L (low = 0V) Quindi un bit è adatto a rappresentare una variabile logica. Ii bit sono usati sia per rappresentare valori logici vero e falso, sia per rappresentare valori numerici 1 e 0. Spesso per comodità i due valori logici sono rappresentati mediante le cifre 0 e 1 anche quando non si attribuisce loro un valore numerico.

Operatori logici Gli operatori logici rappresentano le operazioni applicabili alle variabili e alle costanti logiche

AND - prodotto logico *

OR - somma logica +

NOT - negazione ! Si può dimostrare che con questi tre operatori sono esprimibili tutte le possibili funzioni logiche. L’operatore AND ha precedenza sull’operatore OR, quindi A + B * C = A + (B * C) Nelle espressioni si possono usare le parentesi per indicare eventuali diverse precedenze. Nota – per indicare gli operatori logici vengono usati anche altri simboli, e comunque dal contesto deve essere chiaro se si indicano operatori logici o operatori aritmetici. Quindi nei linguaggi di programmazione sono previsti simboli diversi ad esempio per indicare la somma logica e la somma aritmetica che sono operazioni nettamente diverse!!!

Porte logiche (Gate) Sono dispositivi fisici in grado di eseguire un’operazione logica tra le variabili in ingresso (segnali in) e produrre in uscita (segnale out) il risultato. Sono realizzate generalmente mediante circuiti elettronici.

Page 44: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

44 / 55

Tabelle della verità Il risultato delle operazioni logiche, e quindi il comportamento delle porte logiche è in genere definito in modo esaustivo descrivendolo mediante tabelle di verità, cioè tabelle che elencano tutte le combinazioni dei valori di ingresso ( gli operandi) e per ogni combinazione riportano il corrispondente valore del risultato. Queste tabelle hanno quindi un numero di righe pari alla potenza di 2 corrispondente al numero di variabili in ingresso.

Teorema di De Morgan Importante teorema dell’algebra booleana Il teorema afferma che per qualunque valore delle variabili logiche A e B vale la seguente eguaglianza:

A * B = !(!A + !B) E nella forma duale

A + B = !(!A * !B) Le equivalenze dettate dal teorema di De Morgan sono utili per effettuare eventuali semplificazioni nelle espressioni logiche, soprattutto quando si voglia passare da logica positiva a logica negativa. Logica positiva – segnali “attivi alti” valore True associato al segnale H (es. +5 V) Logica negativa – segnali “attivi bassi” valore True associato al segnale L (es. 0 V) Generalmente si adotta la logica positiva per i bit che rappresentano valori numerici, mentre per i bit che rappresentano valori o comandi logici si sceglie tra logica positiva o negativa in base ad altre considerazioni di progetto. Nota Si rifletta sulla rilevante differenza tra un comando attivo (ON) e a riposo (OFF) nelle varie situazioni:

Nelle condizioni normali (default)

senza alimentazione quando i segnali assumono necessariamente il livello L (basso)

in caso di guasto quando i segnali assumono un valore dipendente dal tipo di dispositivo e dal tipo di guasto. Ad esempio per una lampadina la tipica condizione di guasto porta alla condizione “lampadina accesa” = falso

Spesso, date due situazioni una rappresenta la condizione di sicurezza. Ad esempio “motore in movimento” vero o falso. Falso è la condizione di sicurezza.

Page 45: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

45 / 55

PORTE LOGICHE Le porte logiche rappresentano circuiti che forniscono in uscita il risultato di operazioni logiche elementari sui valori delle variabili in ingresso. Per ogni porta logica si ha un simbolo grafico che la rappresenta e una tabella della verità che ne definisce il comportamento

Porta AND - Prodotto logico Simbolo

A

B

U

Porta OR - Somma logica Simbolo

A

B

U

Porta NOT - Complemento Simbolo

A U

Tabella della verità

A B U

0 0 0

0 1 0

1 0 0

1 1 1

Tabella della verità

A B U

0 0 0

0 1 1

1 0 1

1 1 1

Tabella della verità

A U

0 1 1 0

Page 46: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

46 / 55

FUNZIONI LOGICHE Le funzioni logiche sono descrivibili con espressioni logiche che contengono variabili e costanti logiche, operatori logici ed eventuali parentesi. Sono del tutto analoghe, sintatticamente, alle usuali espressioni algebriche.

Esempio

S = A * !B + !A * B S = A AND NOT B OR NOT A AND B

R = A * B R = A AND B

Poichè le due funzioni logiche S ed R dell’esempio contengono entrambe le variabili A e B, si possono fondere le due tabelle della verità riportando su ogni riga di combinazione dei valori di A e B il corrispondente valore assunto dalla funzione S e dalla funzione R Il comportamento descritto dalle tabelle della verità dice che:

S è vero se uno e uno solo di A e B è vero

R è vero se entrambi A e B sono veri Le funzioni logiche sono realizzabili circuitalmente (cioè a livello hardware - HW) mediante opportune connessioni (reti) di porte logiche

Primo esempio di rete logica (Semisommatore)

A

BS

R

Si noti che la rete logica sopra rappresentata realizza la somma aritmetica di due numeri binari ciascuno da un bit, dove A e B sono le cifre binarie da sommare, S è la somma e R è il riporto.

A e B sono

gli ingressi S e R sono le uscite

Tabelle della verità congiunte

A B S R

0 0 0 0

0 1 1 0

1 0 1 0

1 1 0 1

Page 47: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

47 / 55

Secondo esempio di rete logica combinatoria – Sommatore completo (Full Adder)

S = A*!B*!RI + !A*B*!RI + !A*!B*RI + A*B*RI

RO = A*B + A*RI + B*RI Si noti che la tabella della verità che descrive il comportamento di queste funzioni è composta di 8 righe dato che le variabili di ingresso sono 3 ed hanno quindi 23 = 8 combinazioni. Tabella della verità (Sommatore completo)

A B RI S RO

0 0 0 0 0

0 0 1 1 0 A e B sono le cifre degli addendi

0 1 0 1 0

0 1 1 0 1 RI è il riporto da cifra meno significativa

1 0 0 1 0

1 0 1 0 1 RO è il riporto verso cifra più significativa

1 1 0 0 1

1 1 1 1 1

A B

S

RI

RO

La rete realizza la somma S delle due cifre binarie (bit) A e B di peso 2i e il riporto RO di peso 2i+1 nell’ambito di un numero di n bit, tenendo conto del riporto RI generato dalla somma dei due bit di peso 2i-1 Con n reti di questo tipo e collegando in cascata i riporti uscenti RO con quelli entranti RI, si possono dunque sommare due numeri di n bit rappresentati con la codifica binaria pesata o con la codifica in complemento a due.

Page 48: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

48 / 55

Esempio di circuito sommatore per addendi a 4 bit codificati in compl. a 2

Composto da 4 sommatori completi (FA = Full Adder) collegati con i riporti in cascata, cioè il riporto

generato da una posizione viene fornito come riporto in ingresso al sommatore in posizione più

significativa.

Questo circuito sommatore opera correttamente con codifica pesata o in cpl2 (non Gray, BCD, e altre)

CY 0

Gli addendi sono contenuti nei due registri da 4 bit. Il risultato in uscita è di 4 bit e l’eventuale riporto è presente sul bit RO3. All’ingresso RI0 è presentato, come è ovvio, un segnale di valore 0 (collegamento a massa). Ogni sommatore (FAi – Full Adder iesimo) corrisponde al circuito logico del sommatore completo presentato sopra e qui schematizzato con il seguente blocco funzionale. NOTA importante: il circuito di questo esempio è un circuito logico che però è stato progettato in modo da fornire in uscita dei bit con valori interpretabili numericamente come risultato della somma aritmetica dei valori numerici rappresentati dai bit degli operandi in ingresso. Si noti che l’interpretazione aritmetica è corretta solo per valori numerici codificati in binario pesato o in complemento a 2. Per altre codifiche il circuito logico di somma aritmetica sarebbe diverso e molto più complesso

ADDENDO 1 ADDENDO 1 ADDENDO 2

FA3 FA2 FA1 FA0

Ai Bi

ROi RIi

Si

RISULTATO (Somma)

Page 49: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

49 / 55

CIRCUITI DI MEMORIA Per memorizzare un bit occorre un dispositivo fisico in grado di assumere due diversi stati e di mantenere lo stato attuale fino a quando venga dato un comando che lo porta nell’altro stato. Il circuito elementare di memoria binaria è costituito dal flip-flop (bistabile) che memorizza un bit e ne presenta il valore in uscita. In genere i bistabili presentano in uscita oltre al valore del bit (Q) anche il suo negato (!Q) I flip-flop (FF) mantengono il loro stato 0 o 1 fino a quando ne viene comandata la commutazione. Esistono vari tipi di FF che si differenziano per le diverse modalità di comando della commutazione o della memorizzazione di un nuovo valore binario.

FF-SR - Set - Reset Sono presenti i segnali di comando in ingresso detti Set e Reset Nell’esempio seguente la variabile A fornisce il valore all’ingresso di comando Set, mentre la variabile B fornisce il valore all’ingresso di comando Reset. A riposo A e B devono essere di valore 0 e il valore presentato dall’uscita U rimane memorizzato indefinitamente Il comportamento in dipendenza dei segnali di commutazione è il seguente:

un valore 1 di A porta a U = 1 (operazione di set)

un valore 1 di B porta a U = 0 (operazione di reset) Poi A e B devono tornare a riposo (0)

S

R

QUA

B

FF-DT - Data - Trigger I segnali di comando in ingresso sono il bit di dato D e il bit di comando trigger T. A riposo B ha il valore 0 e qualunque sia il valore di A il valore dell’uscita U non cambia Il comportamento in dipendenza dei segnali di commutazione è il seguente:

quando B passa da 0 a 1 il valore di A presente in quel momento viene memorizzato e presentato sull’uscita U. Quindi il segnale fornito all’ingresso T ha il significato di comando di caricamento (scrittura) del bit da memorizzare.

Poi B deve tornare a riposo (0)

D

T

QUA

B

Page 50: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

50 / 55

REGISTRI Sono memorie che contengono una parola di N bit (in genere 8, 16, 32), ottenute affiancando N flip-flop di tipo FF-DT Esempio di registro di 8 bit. carica D7 D1 D2 D3 D4 D5 D6

Q7

D0

Q0 Q1 Q2 Q3 Q4 Q5 Q6

T T T T T T T T

Il segnale carica presenta la variabile logica di comando della memorizzazione (load = caricamento) ed è collegato in parallelo a tutti gli ingressi di comando T degli 8 FF-DT. Si noti che il segnale “carica” è un esempio di bit utilizzato per rappresentare un’informazione di tipo comando e non un’informazione di tipo dato. D7 . . D0 sono gli 8 bit del dato da memorizzare collegati ai rispettivi ingressi D dei bistabili. Quando carica passa da 0 a 1 i valori degli 8 bit vengono memorizzati nei corrispondenti bistabili del registro. Q7 . . Q0 sono le uscite dei FF-DT e presentano i valori degli 8 bit del dato memorizzato.

Page 51: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

51 / 55

Registri contatori - Modello funzionale

Una interessante categoria di registri è costituita dai registri contatori che sono in grado di

modificare il loro contenuto incrementandone (o decrementandone) di uno il valore.

Il caso più frequente è costituito dai contatori in binario pesato o in cpl 2, ma si possono realizzare

contatori per qualunque codifica di numeri interi.

I contatori possono essere dotati in ingresso di diversi bit di comando e spesso anche di ingressi

per i bit che rappresentano un valore da caricare. In uscita sono presenti i bit che rappresentano il

valore attualmente contenuto nel registro contatore. I bit di comando sono spesso attivi bassi

(logica negativa) e ciò è indicato da un cerchietto in corrispondenza del segnale sul simbolo del

contatore.

D3 D2 D1 D0

CK WR

Contatore a 4 bit EN CL

CY Q3 Q2 Q1 Q0

IMPULSI da contare

Abilita - ENABLE

Riporto - CARRY

Carica - LOAD

Azzera - RESET

MSB - ingressi - LSB

MSB - uscite - LSB

Valore di ingresso VI da caricare

Valore contenuto nel contatore

Fig. Schema funzionale di un contatore, ad incremento, di 4 bit, con il corredo di bit di

comando per abilitare o meno il conteggio, caricare un nuovo valore nel contatore o

azzerarne il contenuto.

Il contenuto è di tipo numerico intero, spesso binario naturale (codifica pesata) e viene

presentato in uscita ai morsetti QK-1 ... Q0

il contenuto viene azzerato con l’attivazione dell’ingresso Reset (o Clear)

viene caricato il valore VI con l’attivazione dell’ingresso Load (il valore da caricare è quello presentato agli ingressi DK-1 ... D0

se l’ingresso Enable è attivo il valore contenuto viene incrementato (decrementato) di 1 quando si presenta un fronte sull’ingresso Clock (detto anche tick)

viene generato in uscita un segnale di Carry quando viene superato il massimo conteggio (contatori UP) o il valore zero (contatori DOWN)

Page 52: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

52 / 55

Esempi di contatori UP e DOWN

Solitamente i contatori sono di 4, 8 o 16 bit, ma per semplicità negli esempi viene

presentata un’implementazione con K=3 bit,

codifica binario puro, conteggio UP, asincrono con FF-DT

D Q T !Q CL

D Q T !Q CL

D Q T !Q CL

Impulsi

LSB - Q0 Q1 Q2 - MSB

Carry

Azzera

Attivando a livello basso il comando Azzera tutti i FF si portano a 0. Ad ogni fronte di salita dell’ingresso

Impulsi il contenuto si incrementa di 1, fino a raggiungere la configurazione 111 = 7. Il successivo impulso

porta tutti i bit a zero ed un fronte di salita sul Carry.

codif. binario puro, DOWN, asincrono con FF-DT

Impulsi

LSB - Q0 Q1 Q2 - MSB

Borrow

Azzera

D Q T !Q CL

D Q T !Q CL

D Q T !Q CL

Dopo il comando Azzera tutti i bit sono a 0 e il prossimo fronte di salita del segnale Impulsi porta i bit a 111

con un fronte di salita sull’uscita Borrow (= prestito)

Si noti che collegando Carry (o rispettivamente Borrow) con l’ingresso Impulsi di un ulteriore

contatore si ottiene un contatore complessivo con un numero di bit pari alla somma del numero di

bit dei contatori così collegati in cascata. In tal modo si possono realizzare contatori di un numero

grande a piacere di bit.

Page 53: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

53 / 55

Modi tipici di funzionamento dei contatori

Funzionamento free-running (evoluzione libera) con K bit

Si forniscono gli impulsi al contatore senza intervenire a modificare il valore contenuto.

Con 3 bit si ha la sequenza: 000 001 010 011 100 101 110 111 000 001 ........ecc.

periodo = 2k impulsi (Tick) – cioè ogni 2k Tick il contatore ripassa per il valore zero

Funzionamento comandato – prefissato a CONT con K bit

a) - Per contatori UP –

Quando raggiunge il valore CONT il contatore viene azzerato. Ciò si ottiene mediante un

circuito comparatore che confronta il contenuto del contatore con il valore prefissato

CONT, contenuto in un registro ausiliario. Quando il confronto da esito positivo Il

comparatore di conteggio raggiunto comanda Reset ed il contatore ricomincia da zero

periodo = CONT Tick – ogni CONT Tick ripassa per il valore zero – CONT deve essere

minore di 2k

b) - Per contatori DOWN –

Quando raggiunge il valore zero il contatore viene ricaricato con il valore CONT. Ciò si

ottiene facendo in modo che Il Borrow attivi il comando Load

periodo = CONT Tick – ogni CONT Tick ripassa per il valore zero – CONT deve essere

minore di 2k

Gli incrementi (o i decrementi) vengono effettuati in corrispondenza dei fronti di salita (o

spesso di discesa) del segnale presentato al morsetto di ingresso di conteggio (CK =

clock).

Il periodo 2k di conteggio dipende solo dal numero di bit del contatore nel funzionamento

free-running, mentre nel funzionamento comandato, un po’ più complesso a livello

circuitale, il periodo CONT < 2k può essere scelto arbitrariamente fino al valore massimo

dato dal numero di bit.

Page 54: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

54 / 55

Utilizzo di contatori

Se gli impulsi di conteggio sono generati da una generica sorgente si parla di

registro contatore di eventi. Ogni verificarsi di un evento provoca l’incremento

(UP) o il decremento (DOWN) del contenuto del contatore.

Se gli impulsi sono generati da un circuito oscillatore, o comunque presentano una

frequenza regolare di periodo P, si parla di temporizzatori. Il valore contenuto nel

contatore indica quanti intervalli di tempo pari a P sono trascorsi da quando è stato

dato l’ultima volta il comando di Azzeramento.

I contatori, per uso di conteggio o di temporizzazione, sono collegati ai calcolatori

tramite

porte di ingresso per leggere i bit QK-1 ... Q0 che rappresentano il valore di conteggio

porte di uscita per emettere l’eventuale valore di caricamento (VI) nei bit DK-1 ... D0

porte di uscita per comandare i bit di Enable, Load, Reset.

Tutti i calcolatori sono dotati di almeno un circuito temporizzatore che consente di

“percepire” il tempo ed eventualmente di eseguire determinate elaborazioni negli istanti

temporali voluti.

Page 55: FONDAMENTI DI INFORMATICA - Intranet DEIBhome.deib.polimi.it/mezzalir/Informatica1/DOC/Lucidi/Disp1Rap... · Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

Fondamenti di informatica – Prof. Lorenzo Mezzalira – Fascicolo 1

55 / 55

Schema di principio di temporizzatore per calcolatori

OSC PRE TBC

TBV

TIMER

TRBUF

TBC_TICK

OVERFLOW

Lettura Tempo

Impostazione Periodo

INT_req

INT_req

Nello schema riportato gli elementi hanno le seguenti funzioni.

OSC – circuito oscillatore che genera impulsi a frequenza prefissata e regolare.

PRE – Prescaler, cioè registro contatore utilizzato come divisore di frequenza. Produce in uscita

un impulso ogni 2k impulsi dell’oscillatore (se si usano k bit di conteggio).

TBV – Time Base Value – registro porta di uscita su cui si imposta la durata del periodo di

temporizzazione voluta.

TBC – Time Base Counter – registro contatore che conta gli impulsi del prescaler e quando

raggiunge il conteggio pari al valore di TBV attiva un segnale in uscita (TBC-TICK). Questo segnale è

generalmente inoltrato alla CPU come segnale di richiesta di interruzione.

TIMER - registro contatore che conta gli impulsi del prescaler. Quando arriva al conteggio

massimo (2N – 1 cioè tutti “1”) al prossimo impulso va al valore 0 (cioè tutti “0”) e ricomincia il

conteggio degli impulsi. Funziona quindi come un orologio che indica l’ora (ciclicamente).

TRBUF – Timer Read Buffer – registro di appoggio che costituisce la porta di ingresso tramite la

quale la CPU può leggere l’ora attuale, cioè il contenuto del timer.

Nella maggior parte dei calcolatori sono presenti dei temporizzatori più complessi che funzionano

anche a calcolatore spento, alimentati da piccole batterie incorporate, e che forniscono

indicazione di tempo anche relative a giorni, mesi, anni. Sono detti calendar clock.