# Segnali, dall'analogico al digitale

### Segnale analogico

Il mondo reale è analogico. Che cosa significa? Bene, un valore analogico è equivalente un numero decimale con un numero di cifre infinito di cifre a destra della virgola. Per esempio le temperature  non hanno valori distinti come 75°, 76°, 77°, 78°, eccetera. Hanno valori come 75,434535.... Infatti, tra le temperature 75,435° e 75,436°, ci sono un numero infinito di valori. Un uomo non pesa esattamente 78 Kg. Aggiungiamo un atomo, e il suo peso cambia. Quando valori come la temperatura o il peso si modificano nel tempo, essi seguono quella che viene definito una curva continua. Tra due valori della curva, ci sono un numero infinito di valori e un numero infinito di istanti.&#x20;

<figure><img src="https://875337804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lt58INaXg-cFL27pnx0%2Fuploads%2F7MGH7L8PtgqoGuNlh4BI%2Fsegnale_analogico.PNG?alt=media&#x26;token=0859c8ad-a893-4a89-9331-be80c765f3e0" alt=""><figcaption><p>Fig 1 - Segnale analogico</p></figcaption></figure>

### Segnali digitali

Ci sono strumenti come computer analogici, un computer che processa le informazioni utilizzando livelli analogici di elettricità. La maggior parte dei computer attuali non fanno questo tuttavia. Invece, essi rappresentano un valore analogico convertendo in un numero con una risoluzione fissata, cioè un numero fisso di cifre decimali. Questa misura è riferita come **valore decimale**.&#x20;

Se il valore cambia nel tempo, allora una sequenza di misurazioni è presa, il tempo tra una misurazione e l'altra in genere rimane fisso.

| Tempo (secondi) | Misura        |
| --------------- | ------------- |
| 0,00            | 0,1987        |
| 0,10            | 0,2955        |
| 0,20            | 0,3894        |
| 0.30            | 0,4794        |
| 0,40            | 0,5646        |
| ............    | ............. |

*Sopra un esempio di misure discrete prese ogni 0,1 secondi*

Poiché i computer vedono il mondo con una risoluzione fissa sia per il tempo che nell'ampiezza, quando un computer registra un segnale digitale come un'onda sonora musicale, lo fa prendendo una serie di istantanee. Ad esempio, se assumiamo *Fig 1* un segnale analogico reale ad esempio di un'onda sonora. Il computer può solo misurare il segnali a intervalli. Ogni misura è chiamata un **campione**. La frequenza con la quale questi campioni sono presi è chiamata **frequenza di campionamento**. Le X nella figura 2 rappresentano queste misure

<figure><img src="https://875337804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lt58INaXg-cFL27pnx0%2Fuploads%2FuTrSmrB8vTWGFNNg1OTw%2Fsampling_analog_signal.PNG?alt=media&#x26;token=04e79fca-ddb5-42f3-9a37-756cabfc5390" alt=""><figcaption><p>Fig 2 - Campionamento di un segnale analogico</p></figcaption></figure>

Due problemi nascono da questo processo: dell'informazione può essere persa ***tra le misurazioni*** e dell'informazione può essere persa ***a causa dell'arrotondamento delle misurazioni***. In primo luogo, se la frequenza di campionamento è troppo bassa, alcuni dettagli del segnale possono essere persi (Figura 3).

<figure><img src="https://875337804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lt58INaXg-cFL27pnx0%2Fuploads%2FirRNYkLk7haflgJt9Edr%2Fsampling_rate_missed.PNG?alt=media&#x26;token=7623f824-2775-4b3a-85f5-31bda4d7957a" alt=""><figcaption><p>Fig 3 - Campionamento lento con perdita delle anomalie</p></figcaption></figure>

Secondariamente, se il computer non registra con sufficiente precisione (ad esempio con sufficienti cifre per la parte decimale) un errore può essere introdotto tra il valore reale del segnale e quello registrato (Figura 4).

<figure><img src="https://875337804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lt58INaXg-cFL27pnx0%2Fuploads%2FeuXcF51oPidbMtf2FUay%2Fsampling_rate_misurement.PNG?alt=media&#x26;token=65933454-9beb-4dad-81e8-a1beab7c266f" alt=""><figcaption><p>Fig 4 - Bassa risoluzione che comporta misurazioni non accurate</p></figcaption></figure>

Questi effetti possono essere ridotti incrementando la risoluzione delle misurazioni e incrementando la frequenza di campionamento. Di più vedremo nel paragrafo "Teoria dei segnali".

### Sistemi di conversione

Un sistema tipico utilizzato per convertire una condizione esterna come la pressione, la temperatura o l'intensità della luce in un formato utilizzabile da un sistema digitale è mostrato nel diagramma a blocchi di figura 5.

<figure><img src="https://875337804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lt58INaXg-cFL27pnx0%2Fuploads%2F7dDFPc4ElPucsk48bOxV%2Fstrumentazione_analogico_digitale.PNG?alt=media&#x26;token=0c4c30a2-e7d9-475e-987a-456b9ef6bcb6" alt=""><figcaption><p>Fig 5 - Diagramma a blocchi di un sistema che cattura i segnali analogici</p></figcaption></figure>

L'interfaccia tra le condizioni esterne e l'elettronica del sistema è il sensore. Questo device (periferica) converte le condizioni esterna in un segnale leggibile dall'elettronica analogica. Spesso questo segnale debole ed è facilmente distorto dal rumore. Quindi, l'output del sensore è in genere amplificato e ripulito prima di essere convertito in valori digitali da un **Convertitore Analogico-Digitale** (*ADC - Analog-to-digital Converter*).

Le operazioni continue di questo sistema risultano in una sequenza di misurazioni digitali o campioni che sono memorizzate in un computer dove possono essere viste in un modo simile a una tabella di numeri in un foglio elettronico.

Questi sono i benefici dell'utilizzo dei dati in formato digitale invece che analogico. Primo, se un segnale analogico è trasmesso a lunga distanza, il rumore si attacca al segnale originale. Per mantenere il segnale forte abbastanza di raggiungere la propria destinazione, deve essere amplificato. Tutto il rumore, che si è attaccato al segnale, tuttavia, è amplificato così come il segnale originale risultando così distorto. Per esempio, prima dell'avvento di reti di telefoni digitali, chiamate al telefono su lunghe distanze erano piene di rumore di disturbo che rendevano difficile la comunicazione tra persone su lunghe distanze.

Un secondo beneficio è che una volta che un segnale è codificato in una sequenza di numeri, algoritmi matematici possono essere usati per operare sui dati. Discipline come *Elaborazione dei Segnali Digitali* e lo studio delle onde permettono un'elaborazione del segnale molto più accurata che con segnali analogici.

Una sequenza di numeri digitali può essere salvata in modo più compatto che un segnale analogico. La compressione dei dati dietro la tecnologia MP3 non è remotamente possibile con tecnologie analogiche.&#x20;

In aggiunta, dati supplementari possono essere immagazzinati insieme ai campionamenti con informazioni come il [digital watermarking](https://it.wikipedia.org/wiki/Watermark_\(informatica\)) o con codici per il controllo degli errori o la correzione degli errori.

Questi vantaggi hanno un prezzo tuttavia. Come detto prima, se i campioni sono presi troppo lentamente, dettagli dell'input analogico sono persi. Se la risoluzione dei campioni non è abbastanza precisa, il segnale potrebbe non essere rappresentato con abbastanza precisione come valore digitale.

### Rappresentazione dei segnali digitali

I sistemi digitali non immagazzinano numeri nel modo in cui lo fanno gli esseri umani. Una persona può ricordare il numero 4,5 e capire che rappresenta una quantità. Un sistema digitale non ha questa capacità. Invece i sistemi digitali lavorano con i numeri utilizzando milioni di piccoli interruttori chiamati **transistor**. Ogni transistor può ricordare solo uno di due possibili valori, ON o OFF. Questo si chiama un **sistema binario**.

I valori rappresentati dai transistor di un sistema binario possono essere interpretati come necessario dall'applicazione. On e Off possono ad esempio rappresentare 0 e 1, oppure yes o no, oppure true o false, oppure up o down, oppure high o low. Quello che importa che ci possono essere solo due possibili valori per transistor. La complessità dei computer deriva da come milioni di transistor sono collegati per lavorare assieme. Per lo scopo di questa discussione, i due valori possibili del transistor saranno chiamati **logic 1** e **logic 0**.

Ora esamineremo qualche metodo utilizzato per rappresentare dati binari prima mostrando un singolo segnale binario. Assumiamo che noi stiamo memorizzando i valori binari presenti su un singolo filo che controlla una lampadina.

Escludendo le luci controllate da interruttori di tipo variatore, un circuito per lampadine è un sistema binario; la luce è on o off, *logic 1* o *logic 0* rispettivamente. Nel tempo lo stato della lampadina cambia in base alla posizione dell'interruttore. La parte superiore della Figura 6 rappresenta l'onda di un segnale binario che controlla lo stato di una lampadina basata  sui cambiamenti della posizione dell'interruttore visualizzati nella parte inferiore dell'immagine.

<figure><img src="https://875337804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lt58INaXg-cFL27pnx0%2Fuploads%2FAyzNoN7l64dy00wGCjDH%2Fsegnale_binario_interruttori.PNG?alt=media&#x26;token=c05f086c-a704-4efd-83ec-4b62a82bd0c4" alt=""><figcaption><p>Fig 6 - Rappresentazione di un singolo segnale binario</p></figcaption></figure>

Questa rappresentazione è simile a una rappresentazione matematica con assi X e Y, dove l'asse delle X rappresenta il tempo e l'asse delle Y identifica *logic 1* o l*ogic 0*.

Alcune volte, due o più linee binarie sono raggruppate assieme per svolgere qualche funzionalità. Per esempio, l'illuminazione generale di una stanza può essere controllata da tre differenti interruttori che controllano gruppi indipendenti di lampade. Questo può essere rappresentato da un diagramma come quello mostrato in Figura 7.

<figure><img src="https://875337804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lt58INaXg-cFL27pnx0%2Fuploads%2FaEPyCpVIsD8TsDaebaPh%2Fmore_switcher.PNG?alt=media&#x26;token=4c42d7c8-a48c-40bd-a853-791ea7d9fe63" alt=""><figcaption><p>Fig 7 - Rappresentazione di più segnali digitali</p></figcaption></figure>

### Tipi di segnali digitali

#### Edges (fronte)

Un singolo segnale binario può avere due possibili transizioni come mostrato in Figura 8. La prima, è una transizione dalla logic 0 alla logic 1, è chiamata transizione del fronte in salita. La seconda da logic 1 a logic 0 è chiamata transizione del fronte in discesa.

<figure><img src="https://875337804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lt58INaXg-cFL27pnx0%2Fuploads%2FFRv40WRWA7JJqXKxH9HB%2Fedges.PNG?alt=media&#x26;token=27dc738e-9fc5-4811-a632-d9d053da5fdf" alt=""><figcaption><p>Fig 8 - Definizione delle transizioni digitali</p></figcaption></figure>

#### Pulse (impulso)

Un impulso binario avviene quando un segnale cambia da un valore a un altro per un breve periodo e poi ritorna al valore originale. Esempi di questo tipo di segnale può essere un bottone di accensione o reset di un computer (momentaneamente premuto e poi rilasciato) o un pulsante per iniziare la sincronizzazione tra diversi dispositivi.

<figure><img src="https://875337804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lt58INaXg-cFL27pnx0%2Fuploads%2FwSKYtzq1c0Ypm0MGFg6r%2Fimpulso.PNG?alt=media&#x26;token=d73f7d3b-29a8-45d3-9b66-36878043bb0d" alt=""><figcaption><p>Fig 9 - Forma d'onda degli impulsi</p></figcaption></figure>

Ci sono due tipi di impulsi. Il primo è chiamato **impulso verso positivo**, esso ha a riposo lo stato logic 0 con un breve impulso a logic 1.

L'altro è, **impulso verso negativo**, con lo stato a riposo a logic 1 con un breve impulso a logic 0. Entrambi questi segnali sono mostrati in Figura 9.

#### Segnali non periodici

Alcuni segnali digitali come i dati che scorrono su un cavo Ethernet o sui bus indirizzi dell'interfaccia di memoria non hanno un andamento caratteristico (regolare) nel loro mutare tra logic 0 e logic 1. Questi sono chiamati **segnali non periodici**.

<figure><img src="https://875337804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lt58INaXg-cFL27pnx0%2Fuploads%2FuklwrbfH9894aoJSdS1F%2Fsegnale_non_periodico.PNG?alt=media&#x26;token=7c6c645e-1968-4c8d-9d91-fab06cea8c1d" alt=""><figcaption><p>Fig 10 - Segnale non periodico</p></figcaption></figure>

Come la musica, la durata delle note o gli spazi tra le note possono essere più o meno lunghe.&#x20;

#### Segnali periodici

Alcuni segnali si comportano come il battito del cuore di un sistema digitale. Per esempio, un segnale potrebbe dire a un sistema, "Ogni 1/100esimo di secondo, tu devi \_\_\_\_\_\_\_\_\_\_\_\_". L'output di un processore delle macchine che controlla l'accensione delle candele è questo tipo di segnale. Questi segnali sono chiamati **segnali periodici**. Come il suono del tamburo in una canzone, un segnale periodico è utilizzato per sincronizzare eventi o far muovere i processi.

La caratteristica propria di questo tipo di segnali è che i valori misurati tra qualsiasi due sottoparti sarebbero identici. Questo valore è chiamato il **periodo**, **T**, ed è misurato in secondi/ciclo (leggi secondi per ciclo). La Figura 11 identifica la misura di un periodo in un tipico segnale periodico.

<figure><img src="https://875337804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lt58INaXg-cFL27pnx0%2Fuploads%2Ftcg83a6PNwHRbtwmWyXN%2Fsegnale_periodico.PNG?alt=media&#x26;token=4d4675a0-537f-44d7-9dc9-3bd19b82a071" alt=""><figcaption><p>Fig 11 - Segnale periodico</p></figcaption></figure>

Questa misurazione del periodo non descrive pienamente un segnale periodico, tuttavia; una seconda misurazione, l'ampiezza dell'impulso, $$t\_w$$ è necessaria. Per esempio, i due segnali in Figura 12 hanno lo stesso periodo. La loro ampiezza dell'impulso, tuttavia, non è la stessa. Nel segnale a, $$t\_w$$ è circa un-quarto del periodo del segnale mentre il $$t\_w$$ del segnale b è circa la metà del periodo del segnale.

<figure><img src="https://875337804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lt58INaXg-cFL27pnx0%2Fuploads%2FbyAA97l2mO1ABZS5v7GU%2Fdiversi_segnali_periodici.PNG?alt=media&#x26;token=875f8ad9-bf8e-41c3-8019-0398c24a5ed2" alt=""><figcaption><p>Fig 12 - Segnali periodici con differente ampiezza d'impulso</p></figcaption></figure>

L'unità di misura di $$t\_w$$ sono i secondi. Il suo valore dovrebbe essere maggiore di 0 e minore del periodo. Un $$t\_w$$ uguale a 0 implica un segnale che non ha impulso, e se $$t\_w$$ equivale al periodo, allora il segnale non andrà mai giù.

E' inoltre comune rappresentare la frequenza degli impulsi di un segnale periodico con l'inverso della misura del periodo. Questa misura, chiamata la **frequenza** del segnale periodico ha come unità di misura, $$cicli/secondo$$, anche detto **Hertz**(Hz).

Per determinare la frequenza di un impulso periodico dal periodo, basta invertire la misura del periodo (Formula 1.1).

$$
Frequenza = \frac 1  {Periodo\ in\ secondi}
$$

*Esempio*

Se un impulso periodico impiega 0,1 secondi per fare un ciclo completo, qual'è la frequenza dell'onda?

*Soluzione*

$$
Frequenza = \frac 1 {Periodo\ in\ secondi}
$$

$$
Frequenza = \frac 1 {0,1\ secondi}
$$

$$
Frequenza = 10 Hz
$$

*Esempio*

Se un compute ha un clock di 2 Gigahertz (2.000.000 Hz), qual'è la durata di un singolo clock?

*Soluzione*

Invertendo l'Equazione 1.1 ci dà l'equazione utilizzata per determinare il periodo dalla frequenza:

$$
Periodo = \frac 1 {Frequenza}
$$

Sostituendo 2.000.000.000 Hz come frequenza nella nuova equazione, abbiamo la seguente soluzione:

$$
Periodo = \frac 1 {2.000.000.000\ Hz}
$$

$$
Periodo = 0,0000000005\ sec = 0,5\ nanosecondi
$$

#### Modulazione ad ampiezza d'impulso

L'ultima misura di un segnale periodico è il **duty cicle**. Il duty cicle rappresenta la percentuale del tempo che un segnale periodico è a logic 1. Per esempio la Figura 13 rappresenta un segnale periodico dove $$t\_w$$ è circa un-quarto o il 25% della durata del periodo.&#x20;

Quindi il duty cycle del periodo è del 25%.

<figure><img src="https://875337804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lt58INaXg-cFL27pnx0%2Fuploads%2FHwZpEZyIYMEi5pSAGXZM%2Fduty_cicle.PNG?alt=media&#x26;token=0c115f8a-8de4-4cdd-8986-f39b7e940581" alt=""><figcaption><p>Fig 13 - Segnale periodico con duty cycle del 25%</p></figcaption></figure>

L'Equazione 1.2 rappresenta la formula per calcolare il duty cycle quando entrambi $$t\_w$$ e T sono misurati in secondi.

$$
Duty\ Cycle = \frac {logic\ 1\ pulse\ duration\ (t\_w)} {Periond\ T} \ \*\ 100%
$$

Finché il range di $$t\_w$$ è tra 0 e T, allora il duty cycle ha un gange che va dallo 0% (costantemente a logic 0) al 100% (costantemente a logic 1).&#x20;

*Esempio*

L'occhio umano in media non può distinguere una luce che lampeggia on e off a una frequenza superiore ai 40 Hz. Per esempio le luci fluorescenti, lampeggiano a una bassa frequenza, intorno ai 60 Hz, che la maggio parte delle persone non riesce a vedere. (alcune persone riescono a percepire frequenze più alte e sono sensibili a quello che correttamente percepiscono come il lampeggiamento delle luci fluorescenti.)

Per alte frequenze, un segnale periodico inviato a una luce è meno intenso che un segnale inviato a logic 1 costante. Questa tecnica può essere utilizzata per regolare i LED (*Light Emitting Diodes*), strumenti che rispondono solo a logic 1 e logic 0. La lucentezza del LED rispetto allo stato completamente on è equivalente al duty cicle. Per esempio per far brillare un LED alla metà dell'intensità che si avrebbe con segnale a costante logic 1, il duty cicle dovrebbe essere del 50%. La frequenza è irrilevante finché è maggiore di quanto l'occhio umano possa percepire.

*Esempio*

Assumiamo che un impulso periodico a 1kHz è inviato a un LED. Quale dovrebbe essere l'ampiezza dell'impulso per essere la luminosità del LED un-terzo della sua massima capacità?

*Soluzione*

Esaminando l'equazione 1.2 che per determinare l'ampiezza dell'impulso, dobbiamo prima determinare il periodo e il duty cycle.

Il duty cycle è equivalente al livello di intensità che il LED deve illuminare, in questo caso un-terzo o il 33%. Il periodo, T, è il reciproco della frequenza.

$$
Periodo = \frac 1 {Frequenza}
$$

$$
Periodo = \frac 1 {1.000\ Hz}
$$

$$
Periodo = 0,001 sec
$$

Per determinare l'ampiezza d'impulso, risolviamo l'equazione 1.2 per $$t\_w$$, e sostituiamo i valori del periodo e del duty cycle.

$$
Duty\ Cycle\ = \frac {t\_w} T  \* 100%
$$

$$
t\_w = \frac {T \* (Duty \ Cycle)} {100%}
$$

$$
t\_w =  0,001\ secondi \* 0,33
$$

$$
t\_w = 0,00033\ secondi = 330\ microsecondi
$$

### Prefissi unità di misura

Si può notare che in alcuni esempi, un prefisso è usato con le unità di secondi o Herz.  Questo è fatto per ridurre il numero di zeri tra la virgola e la magnitudine o per ridurre il numero di zeri in coda per un valore con magnitudine molto grande.

Un prefisso rimpiazza un moltiplicatore potenza del 10. Per esempio, la misura 5.000 herz è equivalente a $$5 \* 10^3 herz$$. Il moltiplicatore $$10^3$$ può essere rimpiazzato con il prefisso "kilo" e quindi diventa 5 kiloherz. Ogni prefisso ha una singola lettera come abbreviazione che può essere utilizzata con l'abbreviazione dell'unità. Per esempio, per utilizzare kilo con l'abbreviazione Hz, la singola lettera "k" sarà utilizzata dando kHz come unità di misura.

Molti prefissi verranno utilizzati per descrivere le misure che sono trattate. Questi sono presentati nella tabella sottostante.

<table><thead><tr><th width="141">Prefisso</th><th width="151">Simbolo</th><th>Potenza del 10</th></tr></thead><tbody><tr><td>zetta</td><td>Z</td><td><span class="math">10^{21}</span></td></tr><tr><td>exa</td><td>E</td><td><span class="math">10^{18}</span></td></tr><tr><td>peta</td><td>P</td><td><span class="math">10^{15}</span></td></tr><tr><td>tera</td><td>T</td><td><span class="math">10^{12}</span></td></tr><tr><td>giga</td><td>G</td><td><span class="math">10^{9}</span></td></tr><tr><td>mega</td><td>M</td><td><span class="math">10^{6}</span></td></tr><tr><td>kilo</td><td>k</td><td><span class="math">10^3</span></td></tr><tr><td>milli</td><td>m</td><td><span class="math">10^{-3}</span></td></tr><tr><td>micro</td><td>μ o u</td><td><span class="math">10^{-6}</span></td></tr><tr><td>nano</td><td>n</td><td><span class="math">10^{-9}</span></td></tr><tr><td>pico</td><td>p</td><td><span class="math">10^{-12}</span></td></tr></tbody></table>

&#x20;Per utilizzare la tabella, semplicemente sostituiamo il prefisso con la corrispondente potenza del 10. Per esempio, sostituiamo $$10^{-6}$$con il prefisso "μ" nel valore 15,6 μS. Questo vi dà $$15,6 \* 10^{-6}$$secondi, che a sua volta è equivalente a 0,0000156 secondi.

### Esercizi

1. Definisci il termine "campione" per come è utilizzato nei sistemi digitali.
2. Definisci il termine "frequenza del campionamento" per come è utilizzato nei sistemi digitali.
3. Quali sono i due principali problemi che il campionamento può causare?
4. Dì quali sono le tre parti del sistema utilizzate per convertire un segnale di input analogico in uno digitale e descrivi il compito di ogni parte.
5. Dì quattro benefici di un sistema digitale su un sistema analogico.
6. Di tre svantaggi di un segnale digitale su un sistema analogico.
7. Vero o Falso: Siccome un segnale non periodico non hanno un formato predicibile, non ci sono misure definibili per il segnale.
8. Se un computer ha un clock a 12,8 GHz, qual'è il periodo del segnale del clock?
9. Se il periodo di un segnale periodico è 125 nanosecondi, qual'è la frequenza del segnale?
10. Se il periodo di un segnale periodico è di 50 microsecondi, qual'è l'ampiezza dell'impulso, $$t\_w$$, per raggiungere un duty cycle del 15%?
11. Vero o False: La frequenza di un segnale può essere calcolata conoscendo solo il duty cycle.

### Rappresentazione binaria di Valori Analogici

<figure><img src="https://875337804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lt58INaXg-cFL27pnx0%2Fuploads%2FyUjhYasJ6oOMjwvZFT9N%2Fsignal_sound.PNG?alt=media&#x26;token=7649ad12-d58b-4759-b30c-06cc7c9fb424" alt=""><figcaption><p>Fig 13 - Onde di un segnale musicale</p></figcaption></figure>

La conversione di interi positivi (unsigned) in binario è solo uno dei molti modi che i computer rappresentano i valori usando i bit. In questa sezione ci focalizzeremo sul problema e la soluzione di cercare di mappare valori del mondo reale come le temperature o il peso da uno specificato intervallo in un numero binario. Ad esempio, un computer che utilizza 8 bit per rappresentare un intero è in grado di rappresentare 256 valori da 0 a 255. La temperatura è tuttavia un numero frazionario con limite massimo e minimo. Possiamo noi utilizzare un computer per rappresentare una temperatura utilizzando otto bit? La risposta è affermativa, ma a discapito della risoluzione (accuratezza) e range (intervallo) di temperature.

Un altro esempio di segnali analogici è la rappresentazione delle onde sonore di un segnale musicale . La figura 13 rappresenta tale segnale.

Ricorda che un singolo bit può essere settato solo ad uno di due possibili valori: logic 1 o logic 0. Combinando molti bit insieme ci danno un intervallo di interi ma comunque di valori discreti. Il mondo reale è analogico, valori rappresentati da misure frazionarie capaci di infinita risoluzione. Per utilizzare n-bit di numeri binari per rappresentare valori analogici, dobbiamo mettere delle restrizioni su cosa viene misurato.

Per prima cosa, un numero binario a n-bit ha un certo intervallo di valori che può assumere. Abbiamo visto questo quando abbiamo convertito numeri interi positivi in binario. In questo caso, il limite inferiore è 0 e il limite superiore è $$2^n - 1$$. Per usare n-bit per rappresentare un numero analogico, abbiamo bisogno di restringere i valori possibili di intervalli di valori analogici. Questo non dovrebbe essere un problema.

Per esempio, deve una tipica bilancia domestica superare valori sopra i 200 Kg? Se non è necessario, allora un sistema digitale potrebbe utilizzare numeri binari a 10 bit per mappare valori di peso tra 0 e 200 Kg. Un numero binario $$0000000000\_2$$potrebbe rappresentare il valore 0 Kg mentre $$1111111111\_2$$ potrebbe rappresentare 200 Kg.

E' necessario un metodo per mappare valori nell'intervallo zero a 200 Kg in numeri binari nell'intervallo da $$0000000000\_2$$ a $$1111111111\_2$$.

Per fare questo, dobbiamo definire una funzione lineare che definisca uno a uno il mappaggio tra il numero binario e il corrispettivo valore analogico che rappresenta. Per fare questo torniamo all'espressione matematica di base che rappresenta una funzione lineare.

$$
y =m\*x + b
$$

Questa funzione definisce *m* come il tasso di incremento di *y* in rapporto al cambiamento di *x* e *b* come il valore di *y* quando *x* è uguale a 0. Possiamo utilizzare questa espressione per mappare un valore di intero binario x in un valore analogico y.

La pendenza di questa funzione, m, può essere calcolata dividendo l'intervallo possibile dei valori analogici per il numero di intervalli definiti da un intero a n-bit. Il numero di intervalli definiti da un numero intero a n-bit è uguale al limite massimo del numero binario se usato come un intero positivo (unsigned), quindi $$2^n - 1$$

$$
m = \frac {Intervallo\ di\ valori\ analogici } {Numero\ di\ intervalli\ dei\ valori\ binari}
$$

$$
m = \frac {{Valore\ massimo\ analogico} - {Valore\ minimo\ analogico }  } {2^n - 1}
$$

Torniamo al nostro esempio della bilancia domestica dove il valore massimo analogico è 200 Kg mentre il minimo è 0 Kg. Se un valore a 10-bit è utilizzato per rappresentare un numero analogico, allora il numero di intervalli del numero binario è $$2^n -1$$= 1023.

Questo ci da una pendenza:

$$
m = \frac {{200\ Kg} - {0\ Kg }  } {1023\ incrementi\ binari} = {0,195} Kg /incremento\ binario
$$

Questo significa che ogni volta che un numero binario si incrementa, ad esempio il numero base 2 va da  $$0110110010\_2$$ a $$0110110011\_2$$, questo rappresenta un incremento del valore  analogico di 0,195 Kg. Siccome il valore binario $$0000000000\_2$$rappresenta il valore analogico di 0 Kg, allora il valore binario $$0000000001\_2$$ rappresenta il valore analogico 0,195, $$0000000010\_2$$rappresenta il valore analogico 2 \* 0,195 = 0,390 Kg, il numero $$0000000011\_2$$ binario rappresenta il valore 3 \* 0,195 = 0,585 Kg e così via.

In alcuni casi, il limite inferiore potrebbe essere un valore diverso da 0. Questo è importante specialmente se una migliore accuratezza è richiesta. Ad esempio un forno da cucina potrebbe avere un caso limite massimo di 600° F. Se lo zero fosse utilizzato come limite minimo, allora l'intervallo delle temperatore sarebbe 600° F - 0° F = 600° F che dovrebbero essere mappati su $$2^n$$possibili valori binari di un numero binario a n-bit. Per un numero binario a 9-bit, questo risulterebbe in un *m* di:

$$
m = \frac {{600°\ F} - {0°\ F }  } {2^9 - 1} = {1,1742}\ gradi /incremento\ binario
$$

Veramente un forno veramente ha necessità di misurare valori sotto i 100° F? Se la risposta è negativa, un limite inferiore di 100° F può essere utilizzato riducendo così l'intervallo di valori analogici a 500° F. Questo intervallo più piccolo migliora l'accuratezza del sistema perché ogni cambiamento nel numero binario risulterà in un incremento minore nel valore analogico.

$$
m = \frac {{600°\ F} - {100°\ F }  } {2^9 - 1} = {0,9785}\ gradi /incremento\ binario
$$

Il più basso incremento significa che ogni valore binario sarà una rappresentazione più accurata di un valore analogico.

Questo limite più basso diverso da zero capiamo che è il b dell'espressione lineare y = m\*x + b. Infatti y è uguale a b quando x è  uguale a zero, allora b deve essere uguale al limite inferiore dell'intervallo.

$$
b = {Valore\ analogico\ minore}
$$

L'espressione finale che rappresenta la conversione finale di un valore analogico dato la rappresentazione binaria è:

&#x20; $$A\_{calc} = (\frac {A\_{max} - A\_{min}} {2^n - 1} \* X) + A\_{min}$$ (**Equazione 1**)

dove:

$$A\_{calc} = {valore\ analogico\ rappresentato\ dal\ valore\ binario}$$

$$A\_{max} = {massimo\ valore\ analogico}$$

$$A\_{min} = {minimo\ valore\ analogico}$$

$$X = {valore\ binario\ che\ rappresenta\ il\ valore\ analogico }$$

$$n = {numeri\ di\ bit\ del\ valore\ binario}$$

#### Esempio

Assumiamo che un processore controlli la temperatura di un forno con una temperatura che può variare tra 600° F e 100° F e misura una temperatura in numero binario a 9-bit, $$011001010\_2$$. Quale temperatura rappresenta?

#### Soluzione

Prima, abbiamo calcolato il tasso di incremento, m, per il forno con una temperatura tra 100° F e 600° F è 500° F / 511 incrementi binari. Sostituendo questo con il valore minimo analogico nell'equazione, ci dà:

$$
temperatura = \frac {500} {511}  °F/{incremento\ binario}\ \* {valore\ binario} + 100°F
$$

Se il processore che monitora la temperatura del forno, legge il valore binario $$011001010\_2$$, la temperatura può essere approssimata convertendo $$011001010\_2$$ al valore decimale e inserendolo nell'equazione di sopra.

$$011001010\_2 = 2^7 + 2^6 + 2^3 + 2^1 = 128  + 64 + 8 + 2 = 202\_{10}$$

$$temperatura = \frac {500°F} {511} \* 202 + 100°F$$

$$temperatura$$ = 297,65°F

Il valore dell'esempio sopra è un po' inaccurato. Il valore binario $$011001010\_2$$in realtà rappresenta un intervallo di valori di 0,9785°F intorno o come limite inferiore a 297,65°F. Solo un numero binario con un numero infinito di bit sarebbe veramente preciso. Siccome questo non è possibile, ci sarà sempre una differenza o una certa risoluzione associata con un sistema digitale dovuta alla natura quantizzata dei numeri binari interi. Questa differenza è equivalente all'incremento o tasso di cambiamento dell'espressione lineare.

$$Risoluzione = \frac {Intervallo\ analogico} {2^n -1}$$  (**Equazione 2**)

#### Esempio

Assumiamo che l'intervallo dei valori analogici di un sistema che converte da analogico  a digitale che utilizza 10 bit vada da 5 once come limite interiore fino a 11 once come limite superiore. Qual'è la risoluzione di questo sistema?

#### Soluzione

Per determinare la risoluzione, cominciamo con l'intervallo dei valori analogici.

$$Intervallo\ analogico = {Valore\ analogico\ massimo}\ - {Valore\ analogico\ minimo}\ = 11\ once - 5\ once = 6\ once$$

Sostituendo questo intervallo nell'*equazione 2* e utilizzando n = 10 per rappresentare il numero di bit, noi otteniamo:

$$
Risoluzione = \frac {6\ once} {2^{10} -1 } = \frac {6\ once} {1023} = 0,005865 \ once/incremento
$$

Se esaminiamo il risultato dell'esempio sopra, noi vediamo che il nostro sistema può misurare *0 once*, *0,005865 once*, *0,011730 once* ( *2 \* 0,005865 once*), *0,017595* ( *3 \* 0,005865 once*) e così via, ma non può mai rappresentare la misura 0,015 once. La risoluzione non è così buona. Allo scopo di ottenere quella risoluzione, dobbiamo o aumentare il numero dei bit del numero intero binario o ridurre l'intervallo dei valori analogici.

#### Esempio

Quanti bit dobbiamo utilizzare nell'esempio di sopra per avere una risoluzione migliore di 0,001 once per incremento?

#### Soluzione

Ogni volta noi incrementiamo il numero di bit del nostro intero binario di uno, il numero di incrementi nell'intervallo è approssimativamente raddoppiato. Per esempio, aumentando da 10 bit a 11 bit incrementiamo il numero di incrementi nell'intervallo da $$2^{10} - 1 = 1023$$ a $$2^{11} - 1 = 2047$$. Il domanda è di quanto il numero di bit dobbiamo incrementarlo per avere la risoluzione desiderata? Per rispondere, incominciamo settando l'*equazione 2* per rappresentare il fatto che vogliamo una risoluzione che deve essere **migliore che** 0,001 once/incremento.

$$
0,001\ once/incremento > \frac {6\ once} {2^n - 1}
$$

Risolvendo da $$2^n - 1$$ ci da:

$$
2^n - 1 > \frac {6\ once} {0,001\ once/incremento}
$$

$$
2^n - 1 > 6000\ incrementi
$$

Sostituendo differenti interi per *n* all'equazione sopra, noi troviamo  che n = 13 è il valore minimo di n per il quale la risoluzione, migliore che 0,001 once/incremento, è raggiunta. Con n = 13 infatti abbiamo una risoluzione di $$6 \div 8191$$= 0,0007325 once/incremento.

### Teoria Dei Segnali

Nella discussione precedente sulla rappresentazione di valori analogici con interi, ha mostrato come il numero di bit può influenzare l'errore di arrotondamento della rappresentazione. In generale un sistema di conversione da analogico a digitale divide l'intervallo analogico in $$2^n - 1$$ incrementi. La *Figura 14* presenta quattro grafici, ognuno con un numero differente di bit, che comportano differenti livelli di risoluzione. La figura mostra l'aggiunta di bit può migliorare la risoluzione dei valori rappresentati dagli interi binari.

<figure><img src="https://875337804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lt58INaXg-cFL27pnx0%2Fuploads%2FYkxPfloaMD7lURbU2HQP%2Fteoria_campionamento_1.PNG?alt=media&#x26;token=bed0c59d-1829-4ed9-86d9-a85d003bc2b3" alt=""><figcaption><p>Fig. 14 - Effetto del numero di bit su l'Errore di Arrotondamento</p></figcaption></figure>

Precedentemente, abbiamo accennato come il computer può solo catturare delle "instantanee" o campioni dei valori del voltaggio analogico. Questo è sufficiente per variazioni lente di valori analogici, ma se il segnale varia velocemente, dei dettagli possono essere persi. Per migliorare la rappresentazione digitale del segnale, il frequenza (il numero) alla quale i campioni devono essere presi, la **frequenza di campionamento**, deve essere incrementata.

C'è anche la possibilità di perdere le frequenze più alte se la frequenza di campionamento è troppo lenta. Questo fenomeno si chiama **aliasing**, e ci sono esempi nella vita di ogni giorno.

Quando andate in automobile di notte, potete notare che alcune volte le ruote delle macchine accanto possono sembrare che si muovono a una velocità differente rispetto a quella a cui effettivamente si muovono o addirittura si muovono in senso contrario. (Se non avete idea di quello che stiamo dicendo, notate le ruote delle macchine che vi passano accanto le prossime volte che viaggiate come passeggeri la notte sotto l'illuminazione stradale.)

Questo effetto è causato dal fatto che le luci dell'illuminazione stradale effettivamente pulsano, un fatto che generalmente non è percepito dall'occhio umano. Questo pulsare è come una frequenza di campionamento, e se questa frequenza non è abbastanza elevata per la velocità di movimento delle ruota, le ruote appaiono muoversi a una velocità diversa da quella reale. Le luci stradali non sono necessarie per percepire l'effetto. Anche i nostri occhi hanno una loro frequenza di campionamento, questo significa che questo fenomeno si può sperimentare questo tipo di fenomeni nella vita di tutti i giorni.

<figure><img src="https://875337804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Lt58INaXg-cFL27pnx0%2Fuploads%2Fna8bTzdoA7DkpRUwor6m%2Fteoria_campionamento_2.PNG?alt=media&#x26;token=e51cf32c-bb78-40ae-a01c-92b161e91e2a" alt=""><figcaption><p>Fig 15 - Effetti dell'aliasing dovuti a un campionamento lento</p></figcaption></figure>

Il fenomeno dell'aliasing è anche il motivo per cui le luci fluorescenti non possono essere utilizzate nelle segherie. Le luci fluorescenti pulsano molto velocemente e possono far apparire gli oggetti come se non si muovessero. Se la frequenza delle lici fluorescenti e la velocità della lama rotante sono multipli una dell'altra, può sembrare che la lama non si muova del tutto.

Entrambi questi esempi sono situazioni in cui il fenomeno dell'aliasing si verifica. Se la frequenza del segnale è più veloce della frequenza di campionamento, allora l'informazione verrà persa, e i dati raccolti non riescono a duplicare il fenomeno originale.

La figura 15 mostra come differenti frequenze di campionamento può risultare in differenti interpretazioni dei dati collezionati, con i punti neri che rappresentano i campioni. Notate il grafico in fondo a destra rappresenta una buona frequenza di campionamento. Quando un computer riproduce il segnale, la discontinuità della riproduzione verrà rimossa a causa del naturale effetto di filtraggio dei circuiti analogici.

Per evitare l'aliasing, la frequenza alla quale i segnali verranno presi, deve essere il doppio della frequenza più alta che vogliamo catturare.  Questo è chiamato il **Teorema di Nyquist**. Per esempio, la frequenza di campionamento per un CD audio è 44.100 campioni/secondo. Dividendo questo numero per la metà ci dà la massima frequenza che un CD può riprodurre, cioè 22.050 Hz.

Per un segnale telefonico analogico, un singolo campione è convertito in un intero a 8 bit. Se questi segnali sono trasmessi su una linea di tipo T1 che fornisce un data rate di 56Kbits (kilobits al secondo), allora noi possiamo determinare la frequenza di campionamento.

$$
Frequenza \ campionamento\_{\ T1} = \frac {56.000\ bits/secondo}  {8\ bits/secondo}
$$

$$
Frequenza \ campionamento\_{\ T1} = 7. 000\ campioni/secondo
$$

Questo significa che la più alta frequenza che può essere trasmessa lungo una linea telefonica che utilizza un canale di tipo T1, è $$7.000 \div 2 = 3.500\ Hz$$. Questo è il motivo per cui la qualità della voce ascoltata al telefono è povera se si confronta con la qualità del suono dei CD. Anche se gli utenti del telefono comunque riescono a distinguere la voce del chiamante dall'altra parte della linea quando le più alte frequenze sono eliminate, la voce spesso sembra mutata.

### Esercizi

1. Se un numero binario a 8 bit è utilizzato per rappresentare un valore analogico nel range da 0 a 100 (in base 10), che valore rappresenta il numero binario 01100100?
2. Se un numero binario a 8 bit è utilizzato per rappresentare un numero analogico nel range tra 32 a 212, qual'è l'accuratezza del sistema? In altre parole, se il numero binario è incrementato di uno, quanto è il cambiamento nel valore analogico?
3. Assumiamo che un sistema digitale di conversione da analogico a digitale usa interi a 10 bit per rappresentare le temperature analogiche su un intervallo di valori che vanno da   -25°F a 125°F. Se la temperatura al momento letta è di 65,325°F, quale sarebbe il valore più vicino che il sistema può rappresentare?
4. Qual'è la minima frequenza di campionamento necessario per catturare con successo frequenze fino a 155KHz in un sistema   analogico?

### Riferimenti

* *Computer Organization and Design Fundamentals*\
  by David Tarnoff, [Chapter 1](https://faculty.etsu.edu/tarnoff/ntes2150/Ch1_v02.pdf) -- **Digital Signals and Systems**
* *Computer Organization and Design Fundamentals*\
  by David Tarnoff, [Chapter 2](https://faculty.etsu.edu/tarnoff/ntes2150/Ch2_v02.pdf) -- **Numbering Systems**
