RUMORE DI QUANTIZZAZIONE
Concetti principali L’analisi dei sistemi di controllo digitale presuppone il fatto che il dispositivo utilizzato abbia uno spazio di memorizzazione infinito; nella realtà un filtro digitale ha lunghezza di parola finita. Faremo alcuni esempi su come varia il filtro reale in base al numero di bit utilizzati per rappresentare i valori dei coefficienti.
Analisi dei modelli Se si denomina H ∞ (z) la funzione di trasferimento ottenuta con precisione infinita ed H(z) quella con precisione finita, si può definire un errore e(n) ottenuto come differenza delle risposte. Porremo in ingresso un impulso. Il numero di bit del sistema con H(z) è B, quindi il livello di quantizzazione è 2 -(B-1). Scegliamo la varianza di e(n) come indice di bontà del sistema.
Alterazione di poli e zeri Si può dimostrare che l’alterazione dei poli e degli zeri è data dalla relazione: Dove Δp i rappresenta la perturbazione del polo i-esimo, dovuta alla differenza dei coefficienti del sistema ideale con quelli reali Δa k. Di conseguenza, la presenza di poli vicini amplifica l’errore di quantizzazione. L’errore può essere quindi minimizzato massimizzando la differenza (p i - p l ); questo lo si può ottenere realizzando i filtri di ordine elevato come composizione, parallelo o cascata, di filtri di dimensione 2, ponendo i poli vicini in blocchi distinti.
Filtro di Chebyshev Useremo come filtro di riferimento un filtro di Chebyshev con i seguenti coefficienti:
In Matlab… >> b=[ ]; >> a=[ ]; >> h = tf(b,a,-1,'variable','z^- 1'); >> bode(h)
Realizzazione Diretta E’ la realizzazione peggiore. Arrotondando il valore dei coefficienti ad un numero rappresentabile a 8 bit, i poli e gli zeri possono cambiare in modo anche considerevole. Nell’esempio il filtro che ne risulta non è nemmeno più stabile. Si può porre quindi σ 2 diretta = ∞.
Realizzazione in cascata Implementata come una serie di successive realizzazioni dirette ognuna di grado al più due. la parte relativa al numeratore è realizzata come una cascata di blocchi FIR di dimensione al più 2. Con la realizzazione a cascata, la varianza σ 2 cascata = , decisamente migliore di quella diretta.
Realizzazione parallelo si ottiene scomponendo per fratti parziali la H ∞ (z) come somma di funzioni di trasferimento di dimensione al più 2. La varianza dell'errore in questa situazione risulta: σ 2 parallelo = Anche in questo caso si ottengono risultati decisamente migliori rispetto quella diretta.
Approfondimenti Per approfondimenti visitare il sito:
Esempio di quantizzazione dei coefficienti Sfrutteremo ora il Filter Design & Analysis Toolbox del Matlab per analizzare l’effetto della quantizzazione dei coefficienti nelle prestazioni del filtro. Apriamo quindi il FDATool e costruiamo un filtro di quinto ordine con frequenza di taglio di 0.4π,banda passante minore di 0.5 dB e attenuazione di banda proibita di almeno 40 dB. Settiamo nel toolbox i seguenti parametri: Response Type : Lowpass Design Method : IIR,Eliptic Filter Order Specify order : 5 Frequency Specification Units : Normalized Wpass : 0.4 Apass : 0.5 Astop : 40
Impostazione dei parametri di quantizzazione(1) Selezioniamo Set quantization parameters per quantizzare il filtro, e quindi impostiamo il filtro aritmetico a virgola fissa. Non noteremo nessuna differenza, dato che il Matlab implementa il filtro in sezioni di secondo ordine (vedi prima parte). Scegliamo quindi dal menù Edit, Convert to single section per dimostrare come varia il filtro al variare del numero di bit di rappresentazione dei coefficienti.
Impostazione dei parametri di quantizzazione(2) Notiamo da questo esempio come anche solo una variazione di un bit porta ad una notevole variazione della risposta in frequenza del filtro quantizzato rispetto a quella del filtro di riferimento (ideale).
Diagramma Poli-Zeri Da questa immagine si può vedere come varia, anche notevolmente, la localizzazione dei poli e degli zeri nel diagramma polare rispetto al filtro di riferimento.
Cenni sulla lunghezza della parola e della frazione Word-length (B): numero di bit usati per rappresentare il valore. Fraction-length (L): specifica, in bit, la posizione del punto binario, ossia il numero di bit alla destra della virgola. In realtà, la formula realmente utilizzata è la seguente: quindi è possibile settare L anche con valori negativi e/o maggiori di B. value = -b(1)*2 (B-L-1) +b(2)*2 (B-L-2) +b(3)*2 (B-L-3) b(B)*2 (-L)
Quantizzazione dell’ingresso e dell’uscita E’ possibile con l’FDATool impostare anche il numero di bit di quantizzazione per l’ingresso e per l’uscita.
Effetti di quantizzazione in I/O Per capire qualitativamente gli effetti della quantizzazione sull’ingresso e sull’uscita costruiamo il seguente semplice sistema in Simulink: Sine Wave: -Frequency=1 rad/s -Amplitude=1 Zero Order Hold: -Sample Time: 0.1
Costruire i filtri quantizzati(1) Vediamo ora come costruire il filtro etichettato Otto Bit : -Apriamo una nuova sessione di Simulink; -Dalla finestra di quantizzazione Input/Output nell’FDATool settiamo: -Input word length : 8 -Input fraction length : 7 -Output word length : 8 -Cliccare sul pulsante Apply;
Costruire i filtri quantizzati(2) -Dal menù File clicchiamo su Export to Simulink Model; -Scegliamo Current in Destination e etichettiamo il filtro Otto Bit; -Clicchiamo sul tasto Realize Model.
Costruire i filtri quantizzati(3) Per il filtro Sedici Bit la procedura resta la medesima, con la differenza che nella finestra di quantizzazione Input/Output setteremo: -Input word length : 16 -Input fraction length : 15 -Output word length : 16 Mentre nella finestra Export to Simulink Model etichetteremo il filtro come Sedici Bit.
Risposta dei filtri Se analizziamo i diagrammi prodotti dallo Scope notiamo che nel sistema a 8 bit abbiamo una perdita di informazione maggiore, dato che sia l’uscita che l’ingresso vengono approssimate con un errore superiore.