Sistema di rappresentazione dei numeri con binario
1) Rappresentazione dei numeri naturali
Rappresentazione numeri naturali: con N bit, il range dei numeri che posso rappresentare va da 0 a 2N-1; numero di bit di cui ho bisogno per rappresentare N numeri: K bit, dove N = 2K.
Da binario a decimale: 101101 = 1 · 25 + 0 · 24 + 1 · 23 + 1 · 22 + 0 · 21 + 1 · 20 = 32 + 0 + 8 + 4 + 0 + 1 = 45.
Da decimale a binario: 45:2 resto 1; 22:2 resto 0; 11:2 resto 1; 5:2 resto 1; 2:2 resto 0; 1:2 resto 1. La rappresentazione binaria va riportata al contrario, da LSB a MSB: 45 = 1011012. Mi fermo quando ottengo come risultato 0.
Operazioni con numeri naturali
- Somma: 00101 + 00101 = 01010; con resto si procede bit per bit.
- Moltiplicazione: numero moltiplicato per un bit; sommo i risultati parziali e ottengo un numero fino a N bit.
- Shift a sinistra e destra: X · 2a = numero originario X shiftato di a posizioni; Y = numero shiftato. Lo shift a sinistra/destra sposta i bit.
- Distanza di Hamming: corrisponde al numero di posizioni alle quali i bit sono diversi.
Esempio: A = 1111, B = 1001, C = 0110. dH(A,B) = 2; dH(A,C) = 3; dH(B,C) = 4.
2) Rappresentazione dei numeri interi
Rappresentazione dei numeri interi: esistono 2 tipologie di rappresentazione.
a) Modulo e segno: un bit dedicato al segno, il bit N-1. Numeri positivi: bit di segno = 0; numeri negativi: bit di segno = 1. Range: [-(2N-1-1), 2N-1-1]. Esempio con N = 5: i valori vanno da -15 a +15.
Problemi della rappresentazione in modulo e segno: lo zero si rappresenta in 2 modi, ad esempio 0000 e 1000; inoltre non funziona direttamente la somma.
b) Complemento a 2: il MSB vale -2N-1. Quindi, se il MSB = 0, il numero è positivo; se il MSB = 1, il numero è negativo.
Esempio: 10110 = -24 + 0 · 23 + 1 · 22 + 1 · 21 + 0 · 20 = -16 + 0 + 4 + 2 + 0 = -10. Range: [-2N-1, 2N-1-1].
Operazioni con complemento a 2
Rappresentazione di segno binario opposto del numero. Procedimento:
- Inverto i bit.
- Sommo 1.
Esempio: voglio -7 con 4 bit. 7 = 0111. Inverto i bit: 1000. Sommo 1: 1000 + 1 = 1001. Quindi -7 = 1001.
Il complemento a 2 rappresenta tutti i numeri con una sola rappresentazione dello zero e permette sempre la somma.
Sottrazione: A - B = A + (-B), ottenendo -B invertendo i bit di B e sommando 1.
Overflow: si ha quando sommo tra loro due numeri con lo stesso segno e ottengo un risultato con segno opposto.
Soluzione ed estensione da N a M bit: aggiungo il bit MSB tante volte quante mi servono per arrivare a M bit.
Esempio: N = 4, voglio -7 con 8 bit: 1001 diventa 11111001. Esempio: N = 4, voglio 7 con 8 bit: 0111 diventa 00000111.
3) Rappresentazione dei numeri razionali
Rappresentazione a virgola fissa: viene dedicato un numero di bit alla parte intera e un numero di bit alla parte frazionaria.
Da decimale a binario: separo parte intera e parte frazionaria.
36,4710: parte intera come numeri naturali, divisione per 2. 36:2 resto 0; 18:2 resto 0; 9:2 resto 1; 4:2 resto 0; 2:2 resto 0; 1:2 resto 1. Quando ottengo 0 mi fermo e scrivo al contrario: 100100.
Parte frazionaria: invece di dividere, moltiplico per 2. Se il numero inizia con 1, sostituisco la parte intera con 0 e procedo. Dopo aver ottenuto il numero con la virgola, mi fermo quando ho ottenuto abbastanza parti. Scrivo le parti ottenute in ordine.
0,47 · 2 = 0,94; 0,94 · 2 = 1,88; 0,88 · 2 = 1,76; 0,76 · 2 = 1,52; 0,52 · 2 = 1,04; 0,04 · 2 = 0,08. La parte frazionaria ottenuta è 011110. Quindi 36,4710 = 100100.0111102.
Da binario a decimale: prima della virgola uso le potenze positive di 2; dopo la virgola uso le potenze negative: 2-1, 2-2, 2-3 e così via.
Problemi della virgola fissa: la dinamica è limitata.
4) Rappresentazione dei numeri reali
Rappresentazione a virgola mobile: N = M · 2E, dove M = mantissa ed E = esponente.
Vengono specificati 3 parametri: precisione P, cioè il numero di bit che ha la mantissa; esponente massimo EMAX, numero che sommato all’esponente vero serve per avere il campo esponente; esponente minimo EMIN.
Forma normalizzata: la mantissa viene scelta sempre nella forma 1,xx... . Per l’esponente si usano i bit E; per la mantissa i bit P. In generale: EMAX = 2E-1-1; EMIN = 1-EMAX.
Formati floating point:
| Formato | Bit | E | EMAX | EMIN | P |
|---|---|---|---|---|---|
| IEEE binary32 | 32 | 8 | 127 | -126 | 23 |
| Bfloat | 16 | 8 | 127 | -126 | 7 |
| IEEE binary16 | 16 | 5 | 15 | -14 | 10 |
| Binary8 | 8 | 2 | 15 | -14 | Nota: P, E e bit dipendono dal formato. |
Nota: 8, 11, 16, 32; E + P + segno = numero totale di bit nel formato.
Conversione da decimale a binario in floating point
Da decimale a binario: 36,4710, P = 23 bit, E = 8 bit, S = 1 bit.
1) Scrivo in binario parte intera e frazionaria. Parte intera: 36:2 resto 0; 18:2 resto 0; 9:2 resto 1; 4:2 resto 0; 2:2 resto 0; 1:2 resto 1; quindi 100100.
Parte frazionaria: 0,47 · 2 = 0,94; 0,94 · 2 = 1,88; 0,88 · 2 = 1,76; 0,76 · 2 = 1,52; 0,52 · 2 = 1,04; 0,04 · 2 = 0,08; quindi 011110. Risultato: 100100.011110.
2) Sposto la virgola per avere la mantissa nella forma 1,xx...: 100100.011110 = 1.0010001110 · 25. Mantissa: 0010001110.
3) Scrivo l’esponente polarizzato in binario: Epol = 127 + 5 = 13210. 132:2 resto 0; 66:2 resto 0; 33:2 resto 1; 16:2 resto 0; 8:2 resto 0; 4:2 resto 0; 2:2 resto 0; 1:2 resto 1. Quindi 132 = 100001002.
4) Scrivo il numero: in questo caso il numero è positivo, quindi il bit di segno è 0. Risultato: 0 10000100 00100011110...
Nota: davanti o dietro il numero aggiungo il bit per estendere, se necessario.
Conversione analogico-digitale ADC
1) Campionamento
Conversione analogico-digitale ADC: il campionamento divide l’asse dei tempi in intervalli di durata fissa. Il periodo di campionamento è Ts.
Periodo di campionamento: Ts. Frequenza di campionamento: fs = 1/Ts. Più fs è grande, più accurata è la descrizione del segnale. Si guarda il valore del segnale al tempo t = nTs.
Teorema di Nyquist-Shannon: la frequenza minima di campionamento deve essere fsmin = 2 · FMax del segnale.
2) Quantizzazione
Quantizzazione: divide l’intervallo di valori analogici in un numero finito di intervalli di ampiezza uguale. Esempio: A, 10, 34322, valori minimi e massimi.
Dato il segnale x(t), la dinamica è [Umin, UMax], dove UMax e Umin indicano i valori massimo e minimo. L’intervallo [Umin, UMax] viene diviso in intervalli uguali.
Risoluzione o ampiezza degli intervalli: dato un ADC a N bit, il numero di intervalli è 2N. L’ADC lavora con k bit e con 2k livelli.
La quantizzazione non è reversibile. La differenza tra valore analogico reale e valore digitale quantizzato è detta errore di quantizzazione o rumore di quantizzazione.
3) Codifica
Codifica: i segnali vengono convertiti in segnali digitali binari.
Esempio: 00 corrisponde a 0; 01 corrisponde a 1; 10 corrisponde a 2; 11 corrisponde a 3. Se il valore si trova nel pallino medio o in un intervallo, prende quello inferiore o quello corrispondente.
Conversione digitale-analogico DAC
Conversione digitale-analogico DAC: dato un segnale binario, il convertitore prende i livelli di tensione corrispondenti. Nell’intervallo [min, max] si prende un livello di tensione e si ricostruisce il segnale analogico.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Appunti esame: Elettronica generale
-
Appunti Chimica
-
Appunti completi di Elettronica
-
Appunti Elettronica analogica per l’esame di progettazione elettronica