ELEMANIA
ADC e DAC - Altri codici
Codice modulo e segno per segnali bipolari

Se il segnale da convertire è bipolare (cioè presenta valori sia positivi che negativi) è possibile usare un codice modulo e segno. In tale codice il bit più significativo (il primo) viene riservato per il segno (0=positivo, 1= negativo), mentre i restanti bit servono per valore del numero. Esempio 110 = -2, mentre 010 = +2.

Il principale difetto del codice modulo e segno è che vi sono due codici usati per rappresentare lo stesso numero zero e precisamente 000 (=+0) e 100 (-0). Il risultato che avendo a disposizione n bit, il numero di livelli codificabili è solo

N = 2n - 1

Per esempio con n=3 bit, si possono codificare solo 7 livelli e non 8.

Codice complemento a due per segnali bipolari

Una codifica più intelligente per i segnali bipolari è quella detta a complemento a due. In questo caso i valori positivi vengono rappresentati normalmente, mentre i valori negativi si ottengono da quelli positivi complementandoli a uno (cioè in pratica scambiando tutti gli 1 con gli 0 e viceversa) e sommando uno al risultato finale.

Per esempio con 3 bit il numero + 3 sarà rappresentato come

011 = + 3

Invece il numero -3 si ottiene dal precedente scambiando gli 1 con gli zero

011 → 100

e quindi somando 1 al risultato così ottenuto

100 + 1 = 101 = - 3

Il vantaggio della notazione a complemento a due è che il numero zero viene rappresentato con una sola combinazione, 000. Considerando per esempio una quantizzazione silenziata a 8 livelli di una tensione compresa fra -8V e + 8V, la codifica a complemento a due è la seguente:

Si osservi che usando il codice in complemento a 2, si ha un codice in più per i valori negativi (100) che non ha un codice positivo corrispondente. L'intervallo di valori è asimmetrico. Se, come spesso accade usando la quantizzazione silenziata, viene usato un numero di intervalli dispari (7 in questo caso), il primo codice negativo (100) non viene utilizzato.

Per ricavare il valore digitale corrispondente a una data tensione analogica, bisogna in questo caso ricavare il numero di intervallo con la solita formula

Nintervallo = approssima(V/Q)

e quindi convertire tale valore in binario in complemento a 2. Per esempio, nel caso precedente, se V = -4,5V abbiamo

Nintervallo = approssima(V/Q) = approssima(-4,5/2) = -2

e dunque il valore digitale è 110, cioè -2 espresso in complemento a 2.

 

Codice Gray

Nel codice binario “normale”, quando un contatore aumenta di uno, può succedere che cambi il valore di molti o addirittura di tutti i bit. Per esempio, in un contatore up a 3 bit, passando dal numero 5 (101) al numero 6 (110), cambiano i valori del secondo e del terzo bit. Quando si passa da 7 (111) a 0 (000), tutti i bit cambiano.

Il problema è che, a causa dei tempi di ritardo sempre presenti nei dispositivi reali, è improbabile che tutti i bit di un numero possano commutare (=cambiare valore) esattamente nello stesso istante. Se questo non accade, si genera una configurazione binaria intermedia, la quale codifica un valore indesiderato (che può generare errore nella successiva elaborazione).

Per esempio, passando da 5 (101) a 6 (110) si potrebbe avere:

101 (5) → 111 (7) → 110 (6)

oppure

101 (5) → 100 (4) → 110 (6)

Nel primo esempio il valore intermedio 111 (7) non è desiderato e si genera per il fatto che non tutti i bit commutano insieme. Nel secondo esempio il valore indesiderato è 100 (4).

Per evitare questo genere di problemi, alcuni convertitori adottano un codice particolare, detto codice Gray, nel quale le configurazioni successive distano sempre al massimo un solo bit. Per esempio il codice Gray a tre bit con il corrispondente valore decimale è il seguente:

000 (0)
001 (1)
011 (3)
010 (2)
110 (6)
111 (7)
101 (5)
100 (4)

Naturalmente, poichè le combinazioni del codice Gray non corrispondono a quelle della numerazione binaria, è necessario poi convertirle in binario, tramite convertitori hardware o per mezzo di programmi.

 

Codice BCD

Nella codifica Binary-coded decimal (BCD) ogni cifra di un numero decimale è rappresentata da un codice binario di quattro bit, il cui valore è compreso tra 0 (0000) e 9 (1001). Per esempio il numero 127 è rappresentato in BCD come 0001-0010-0111.

Questa codifica è usata da alcuni convertitori AD perché può essere direttamente visualizzata su un display a 7 segmenti.

 

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it