Sezione 4.2: Aspetti realizzativi del campionamento Su Capitolo 4: Campionamento quantizzazione ed elaborazione numerica Sezione 4.4: Trasformata di Fourier di sequenze 

4.3 Quantizzazione e codifica binaria

Al di là degli aspetti tecnologici, dal punto di vista dei segnali il processo di quantizzazione e conversione d/a va studiato in relazione all’effetto che la scelta del numero M di bit/campione produce sulla qualità del segnale ricostruito. Maggiore è M, e più elevata risulta la velocità binaria fb = fcM bit/sec, a cui corrisponde un maggior impegno di risorse trasmissive o di memoria. Ma riducendo il valore di M aumenta l’entità dell’errore di quantizzazione εq = x − xq, di cui aumenta la potenza, e dunque peggiora il rapporto segnale rumore, come ora andiamo a studiare. Notiamo inoltre che essendo la quantizzazione un processo non lineare (§ 8.3) la densità spettrale di εq presenta anche frequenze assenti nel segnale originario, rendendo bianco il processo di errore[155]  [155] In realtà per valori particolarmente bassi di M il segnale di errore εq tende a divenire fortemente correlato (§ 7.1.4) a quello del segnale originale, vedi ad es.
https://dspillustrations.com/pages/posts/misc/how-does-quantization-noise-sound.html
(§ 7.2.4).
figure f4.9d.png
Ai fini della discussione che segue separiamo la funzione svolta da un dispositivo come il quantizzatore a rampa di fig. 4.16 nei due blocchi concettuali disegnati a fianco, in cui i valori dei campioni prima vengono quantizzati dal dispositivo xq = Q(x), e successivamente espressi (o codificati) mediante una sequenza di M bit d = c(xq). Il tipo di codifica c(xq) realizzato dal quantizzatore a rampa prende il nome di...

4.3.1 Quantizzazione uniforme

figure f4.9b.png
In questo caso l’intervallo dei valori che l’ingresso x può assumere, indicato come dinamica Δx = xmax − xmin, viene suddiviso in L = 2M intervalli Ik di eguale ampiezza[156]  [156] Se invece gli intervalli hanno ampiezze differenti il quantizzatore è detto non uniforme, vedi il § 4.3.2. Δq = ΔxL, separati da L − 1 soglie di decisione, come riportato in figura per M = 3 bit.
Dato che L è pari[157]  [157] Il caso di L pari, diretta conseguenza dell’essere L = 2M una potenza di due, è detto mid-rise in quanto il grafico x = Q(x) sale per x = 0, mentre ad L dispari (caso mid-tread) corrisponde una regola di quantizzazione basata sull’arrotondamento di x,  ed esiste un valore quantizzato che esprime un valore nullo. Per approfondimenti, vedi ad es. https://www.tutorialspoint.com/digital_communication/digital_communication_quantization.htm, la curva di quantizzazione xq = Q(x) che associa il valore xq(k) a tutti gli x che ricadono in uno stesso intervallo Ik risulta a scaletta come in figura, e fornisce valori quantizzati[158]  [158] La notazione xΔq individua un troncamento, ovvero il numero intero subito inferiore ad xΔq. Ad esempio, se  − 4 < x < 4, allora avremo xq = − 3.5,  − 2.5,  − 1.5,  − 0.5, 0.5, 1.5, 2.5, 3.5.
xq = ΔqxΔq + 12
che rispetto alla linea rossa (che esprime la retta xq = x), sono esatti solo a metà dell’intervallo, mentre all’interno dello stesso l’errore εq = x − xq si mantiene compreso tra  − Δq2 e Δq2. Dato poi che con M bit si possono descrivere le L = 2M configurazioni binarie corrispondondenti a numeri compresi da 0 a 2M − 1, sulla destra è riportata la corrispondenza dei codici d = c(xq) che è possibile assegnare ai livelli quantizzati.
Per proseguire con l’analisi della distorsione, aggiungiamo ora l’ipotesi che il campione x da quantizzare sia stato prelevato da un membro di processo stazionario ergodico[159]  [159] Nel seguito della sezione sono usati i concetti definiti al capitolo 6, a cui si rimanda per le definizioni mancanti. con d.d.p. uniforme a media nulla, ovvero pari a pX(x) = 1Δx rectΔx(x).

4.3.1.1 SNR di quantizzazione

La distorsione in cui si incorre a seguito del processo di quantizzazione è tanto minore quanto maggiore risulta il valore del rapporto segnale-rumore SNRq = PxPϵ, ovvero il rapporto tra la potenza del segnale da quantizzare Px, e quella Pε dell’errore εq = x − xq. La fig. 4.20 mostra un possibile andamento temporale per x(t), assieme alla sua versione quantizzata xq(t), ed al corrispondente errore εq(t), per il quale si fa l’ulteriore ipotesi che anch’esso sia un processo ergodico a media nulla, anch’esso descritto da una d.d.p. uniforme p(ε) = 1Δq rectq(ε) ma con dinamica Δq = ΔxL, e che
figure f5.11.png
Figure 4.20 Processo di quantizzazione per segnali
a distribuzione di ampiezza uniforme
sia anche statisticamente indipendente[160]  [160] Questa ipotesi, come anche quella delle v.a. uniformi, sono manifestamente non vere in generale, ma permettono di giungere ad un risultato abbastanza semplice, e che può essere molto utile nei progetti di dimensionamento. da x(t).
In queste ipotesi, la potenza Px è pari alla varianza della v.a. x, e risulta [161]  [161] Assumendo che il processo sia ergodico, la potenza (media temporale) eguaglia (eq. (10.125)) la corrispondente media di insieme, ovvero il momento di secondo ordine m(2)x, che a sua volta è pari alla varianza σ2x , essendo mx = 0. Vedi § 6.2.3 per il calcolo di σ2x = Δ2x12.
Px = σ2x = Δ2x12
mentre per quanto riguarda la potenza del segnale di errore εq(t) il risultato è lo stesso, ma espresso nei termini di Δq, ovvero
Pϵ = σ2ϵ = Δ2q12 = 112ΔxL2
Siamo dunque in grado di valutare l’SNR di quantizzazione come
SNRq = PxPϵ = Δ2x1212LΔx2 = L2
e dunque SNRq cresce in modo quadratico con l’aumentare dei livelli, ovvero se L raddoppia SNRq quadruplica. Ricorrendo alla notazione in decibel[162]  [162] Una discussione relativa alla misura delle grandezze in decibel, è fornita al § 8.1. Qui ci limitiamo ad usare i dB come misura relativa di un rapporto, ossia
SNRq(dB) = 10log10 PxPϵ = 10log10 Px − 10log10 Pϵ = Px[dBV2] −  Pϵ[dBV2]
in cui le grandezze espresse in dBV2 rappresentano potenze di segnale di tensione, in unità logaritmiche.
per l’SNR, otteniamo il risultato SNRq(L)|dB = 10log10L2 = 20log10L e, ricordando che L = 2M, si ottiene
(10.72)
SNRq(M)|dB = M ⋅ 20log102 ≃ 6 ⋅ M dB
dato che log102 ≃ 0.3. Pertanto è possibile concludere che[163]  [163] In alcuni testi alla (10.72) viene aggiunto un termine costante di 1.76 dB, derivante dall’adozione di un segnale sinusoidale con dinamica Δ, anziché un processo uniforme. Ma non ho mai afferrato il senso di un SNR positivo con M = 0 bit/campione.
La qualità del quantizzatore uniforme espressa da SNRq[dB] aumenta linearmente con il numero M di bit/campione, con un incremento di 6 dB per ogni bit utilizzato in più.
Consideriamo ora cosa accade qualora il segnale in ingresso x abbia una dinamica minore a quanto previsto: in tal caso σ2x si riduce, mentre σ2ϵ = 112 (ΔxL )2 non cambia, e dunque SNRq peggiora, come se avessimo ridotto il numero di livelli. Viceversa, la tecnica illustrata di seguito è in grado di mantenere un SNRq accettabile anche con bassi livelli di segnale.

4.3.2 Quantizzazione non uniforme

La tecnica di cui al titolo nasce sia come risposta al problema appena evidenziato, ossia il peggioramento di SNRq in presenza di bassi segnali, sia in considerazione del fatto che in realtà il processo x non ha distribuzione di ampiezza uniforme come fino ad ora ipotizzato, rendendo il risultato (10.72) di ridotta utilità pratica. Ma svolgiamo prima una breve digressione su come, conoscendo con esattezza la pX(x) del processo da quantizzare, si possa giungere al miglior risultato.
Minimizzazione dell’errore di quantizzazione
Si può mostrare[164]  [164] Vedi ad es. http://en.wikipedia.org/wiki/Quantization_(signal_processing) che per una pX(x) generica il quantizzatore ottimo (che rende massimo SNRq) non suddivide la dinamica Δx in L − 1 intervalli di uguale estensione Δq = ΔxL, ma l’estensione Δq(k) varia ed è diversa per ogni intervallo Ik con k = 1, 2, ⋯L, adottando in particolare intervalli di estensione ridotta nelle regioni in cui i valori x sono più probabili, ovvero più frequenti, e dunque per il quali la pX(x) è più grande. In tal modo ai valori x più probabili corrisponde un errore di quantizzazione σ2q(k) = Δ2q(k)12 ridotto; viceversa, le regioni corrispondenti a valori di x più rari adottano intervalli di estensione Δq(k) più grande, e conseguentemente un σ2q(k) maggiore. Il risultato è quello di variare il contributo alla Pϵ complessiva, riducendolo per i valori più frequenti, ed aumentandolo per quelli meno: infatti, Pϵ può essere valutata anche come un valore atteso, pesando i contributi σ2q(k) con le rispettive probabilità
Pϵ = Ek{σ2q(k)} =Lk = 1pkσ2q(k)
in cui pk = IkpX(x)dx è la probabilità che x ∈ Ik. Il modo ottimo di disporre le soglie (θk − 1, θk) che delimitano Ik in modo da rendere minima Pϵ, è noto come algoritmo di Lloyd-Max[165]  [165]  Il metodo è iterativo, ed inizia suddividendo l’intervallo Δx in modo uniforme. Per ogni iterazione:
  • si determinano i valori quantizzati xk (detti centroidi) come xk = E{x ∈ Ik} = IkxpX(x ⁄ k)dx =  IkxpX(x)dxpk in cui pk = IkpX(x)dx. In tal modo, i valori xk si spostano (internamente a Ik) verso la regione in cui pX(x) ha un valore più elevato, ovvero dove la v.a. si addensa;
  • si ri-calcolano i confini di decisione θk come θk = xk + xk + 12, seguendo lo spostamento degli xk.
Le iterazioni si arrestano quando non si riscontrano cambiamenti apprezzabili.
, ed il risultato che si ottiene è legato alla teoria esposta al § 9.5.
Codifica PCM
Nella quantizzazione del segnale vocale, anche se è arbitrario identificare con esattezza una pX(x), si verifica strumentalmente che quest’ultima è addensata nelle regioni con valori più piccoli. Per questo motivo la legge di quantizzazione che si è adottata per ottenere gli 8 bit a campione utilizzati nel pcm[166]  [166] La sigla pcm sta per Pulse Code Modulation, e trae origine dalla tecnica di quantizzazione di un segnale vocale di qualità telefonica (§ 11.1.2), anche se è stato poi adottato per indicare l’intera gerarchia di multiplazione plesiocrona (§ 24.3.1). Etimologicamente il termine deriva dall’onda pam (§ 7.7.4) in cui degli imPulsi sono Modulati in Ampiezza, mentre in questo caso le ampiezze degli impulsi sono Codificate. segue un andamento logaritmico[167]  [167] L’andamento esatto della curva segue uno di due standard, denominati legge μ (per USA e Giappone) e legge A (per gli altri), lievemente diverse nella definizione, ma sostanzialmente equivalenti., e dimezza progressivamente la pendenza della caratteristica di ingresso-uscita del quantizzatore all’aumentare dei valori in ingresso.
La fig. 4.21 mostra un esempio di tale realizzazione (per i soli valori positivi), in cui l’andamento logaritmico viene approssimato individuando (a partire dall’origine) regioni di valori della x la cui ampiezza di volta in volta raddoppia, e suddividendo ogni regione in un uguale numero di intervalli equispaziati. La caratteristica non lineare è realizzabile per via completamente numerica: per prima cosa si realizza un campionamento uniforme con M = 12 bit a campione, a cui corrispondono L = 212 = 4096 livelli. Per ogni campione, il numero di bit pari a zero nella parte più significativa degli M individua la regione dei valori di ingresso, mentre i bit rimanenti sono shiftati a destra, per mantenere costante il numero di intervalli per regione, ottenendo in definitiva una rappresentazione in virgola mobile del valore del campione.
figure f5.78.png
codifica lineare PCM legge A
s0000000wxyz s000wxyz
s0000001wxyz s001wxyz
s000001wxyza s010wxyz
s00001wxyzab s011wxyz
s0001wxyzabc s100wxyz
s001wxyzabcd s101wxyz
s01wxyzabcde s110wxyz
s1wxyzabcdef s111wxyz
Figure 4.21 Caratteristica i/o di un quantizzatore logaritmico e relativa tabella di codifica
Esempio La tabella a destra di fig. 4.21 esemplifica il processo di conversione pcm legge A, in cui a partire dalla quantizzazione uniforme a 12 bit (colonna di sinistra) si ottengono gli 8 bit della codifica pcm (colonna di destra), ripartiti in un bit di segno (s), tre bit di esponente, e quattro di mantissa (wxyz). Il bit più significativo dei 12 rappresenta il segno, e resta inalterato. Il numero di zeri più significativi dei 12 individua in quale delle 8 regioni[168]  [168] Per motivi grafici, nella parte sinistra della figura sono mostrate solo 5 regioni, divise in 4 intervalli. cade il valore di ingresso, e tale regione è codificata mediante i 3 bit del codice pcm che seguono quello del segno. Delle restanti cifre della codifica uniforme, se ne conservano solo le 4 più significative. Ad esempio, il valore 100000001010 diviene 1-000-1010 (come risulta dalla prima riga della tabella), mentre 000110011010 diventa 0-101-1001, come riporta la sesta riga.
I risultati del mapping illustrato possono essere inseriti in una rom come coppie di ingresso-uscita, utilizzando dunque 4096 posizioni di memoria da 8 bit ciascuna; al contrario presso il dac di restituzione, sono sufficienti 256 posizioni, di 12 bit ciascuna.
figure f5.78b.png
Nella figura che segue si mostra l’andamento di SNRq al variare della potenza di segnale rispetto al massimo possibile, nei due casi del quantizzatore uniforme, oppure con compressione logaritmica. Come si può notare, l’effetto della quantizzazione logaritmica penalizza l’SNR per i segnali a piena dinamica, ma peggiora molto più lentamente al diminuire della stessa. Al cap. 10 l’argomento della codifica di sorgente audio viene ripreso, e debitamente approfondito.
Le prossime sezioni non tengono più conto delle questioni relative alla quantizzazione dei campioni, anche se nella realizzazione di dispositivi reali può rivestire interesse di progetto.
 Sezione 4.2: Aspetti realizzativi del campionamento Su Capitolo 4: Campionamento quantizzazione ed elaborazione numerica Sezione 4.4: Trasformata di Fourier di sequenze