Vai al contenuto
Elaborazione Numerica dei Segnali

Strutture dei filtri numerici: celle biquad, virgola fissa e rumore di arrotondamento

Forme dirette e trasposta, sensibilità dei poli ai coefficienti con dimostrazione, cascata di celle del secondo ordine, virgola fissa e traboccamento, rumore di arrotondamento dimostrato, cicli limite, architettura dei DSP.

Una volta calcolati i coefficienti, il filtro va realizzato: in un DSP, in un microcontrollore, in una FPGA. Matematicamente tutte le strutture sono equivalenti, ma con numeri di precisione finita si comportano in modo molto diverso. In questa lezione vediamo le forme dirette e la cella del secondo ordine, la sensibilità dei poli ai coefficienti con la sua dimostrazione, l’aritmetica in virgola fissa, il rumore di arrotondamento con la dimostrazione della formula della sua potenza, e i cicli limite.

Le forme dirette

Un filtro IIR H(z) = B(z)/A(z) corrisponde all’equazione alle differenze

    \[ y[n] = \sum_{k=0}^{M} b_k\,x[n-k] - \sum_{k=1}^{N} a_k\,y[n-k] \]

La forma diretta I la realizza così com’è, con due linee di ritardo, una per gli ingressi e una per le uscite. La forma diretta II scambia l’ordine delle due parti (il sistema è lineare, l’ordine non conta) e condivide un’unica linea di ritardo: usa il numero minimo di memorie, \max(M, N). La forma trasposta si ottiene invertendo il verso di tutti i rami e scambiando ingresso e uscita: ha la stessa funzione di trasferimento e un comportamento numerico migliore, perché le somme avvengono subito dopo le moltiplicazioni.

Cella del secondo ordine in forma diretta II trasposta
L’ingresso moltiplicato per b_0, b_1 e b_2 entra in tre nodi sommatori collegati da due ritardi; l’uscita, moltiplicata per meno a_1 e meno a_2, torna nei nodi inferiori. Due sole memorie bastano per tutto il filtro del secondo ordine.

Perché si usano celle del secondo ordine

Un IIR di ordine alto realizzato in forma diretta, con un unico polinomio al denominatore, è pericoloso: piccoli errori sui coefficienti spostano molto i poli.

Teorema. Sia A(z) = \prod_{j=1}^{N}(1 - p_jz^{-1}) con poli distinti. La sensibilità del polo p_i al coefficiente a_k è

    \[ \frac{\partial p_i}{\partial a_k} = -\frac{p_i^{\,N-k}}{\prod_{j\ne i}(p_i - p_j)} \]

Dimostrazione. Si scrive il denominatore come polinomio in z: P(z) = z^N A(z) = z^N + a_1z^{N-1} + \dots + a_N, con radici p_j. Per ogni polo vale P(p_i) = 0. Derivando rispetto ad a_k, tenendo conto che p_i dipende da a_k:

    \[ P'(p_i)\,\frac{\partial p_i}{\partial a_k} + p_i^{\,N-k} = 0 \]

perché \partial P/\partial a_k = z^{N-k}. Infine P(z) = \prod(z - p_j) dà P'(p_i) = \prod_{j\ne i}(p_i - p_j). ∎

Il denominatore è il prodotto delle distanze tra il polo e tutti gli altri: se i poli sono vicini tra loro, come accade nei filtri selettivi, dove si affollano vicino al cerchio unitario attorno alla banda passante, la sensibilità esplode. Un errore di arrotondamento sui coefficienti può spostare un polo fuori dal cerchio e rendere instabile il filtro. Per questo un IIR si fattorizza in una cascata di celle del secondo ordine (biquad), ciascuna con una sola coppia di poli: le sensibilità restano piccole, ogni cella si controlla da sola, e l’ordine delle celle e la ripartizione del guadagno si scelgono per ridurre il rumore.

La virgola fissa

Nei DSP economici e nell’hardware dedicato i numeri sono in virgola fissa: per esempio nel formato Q15 un intero a 16 bit rappresenta un valore tra -1 e 1 - 2^{-15}. I problemi sono due:

  • traboccamento (overflow): una somma che supera 1 ricomincia da -1, con un errore enorme. Si previene scalando il segnale all’ingresso di ogni cella, in modo che i nodi interni non superino il fondo scala, e si limita il danno con l’aritmetica a saturazione, che blocca il risultato al massimo invece di farlo ricominciare;
  • quantizzazione: ogni prodotto ha il doppio dei bit e va arrotondato, introducendo un piccolo errore a ogni passo. I DSP accumulano le somme in registri più lunghi (40 bit o più) e arrotondano una sola volta alla fine.

Il rumore di arrotondamento

L’errore di arrotondamento al passo q si modella come un rumore bianco uniforme tra -q/2 e q/2, con potenza q^2/12 (lezione sulla quantizzazione di Teoria dei segnali). Ma questo rumore non esce dal filtro così com’è: attraversa la parte di filtro tra il punto in cui nasce e l’uscita.

Teorema. Un rumore bianco di potenza \sigma^2 che entra in un sistema con risposta all’impulso h_e[n] produce in uscita un rumore di potenza

    \[ \sigma_y^2 = \sigma^2\sum_{n=0}^{\infty}h_e^2[n] \]

Dimostrazione. L’uscita è y[n] = \sum_k h_e[k]e[n-k]. La sua potenza è E[y^2] = \sum_k\sum_l h_e[k]h_e[l]\,E[e[n-k]e[n-l]]. Per il rumore bianco E[e[n-k]e[n-l]] = \sigma^2 se k = l e 0 altrimenti, quindi resta solo la somma dei termini con k = l. ∎

Esempio. Una cella del primo ordine y[n] = a\,y[n-1] + x[n], con l’arrotondamento nel nodo sommatore: il rumore vede tutto il filtro, h_e[n] = a^n, e \sum a^{2n} = 1/(1 - a^2). Con a = 0{,}99, un polo vicino al cerchio, il fattore è circa 50, cioè 17 dB di rumore in più rispetto a un solo arrotondamento: quasi 3 bit persi. È il motivo per cui i filtri molto selettivi a basse frequenze, con poli vicini a z = 1, richiedono più bit.

I cicli limite

Nei filtri IIR in virgola fissa può succedere che, con ingresso nullo, l’uscita non vada a zero ma resti bloccata su un valore costante o su una piccola oscillazione: un ciclo limite. Lo crea l’arrotondamento, che rende il sistema non lineare: per esempio con y[n] = \mathrm{round}(0{,}9\,y[n-1]), partendo da 4 si ottiene 3{,}6 \to 4, e l’uscita resta ferma a 4 per sempre invece di decadere. I cicli limite si evitano arrotondando verso lo zero (troncamento del modulo) o con strutture apposite; nei filtri audio si sentono come toni deboli nel silenzio. I filtri FIR non hanno retroazione, quindi non hanno né cicli limite né problemi di stabilità: è un altro motivo per sceglierli quando la precisione è scarsa.

L’architettura dei DSP

I processori di segnale sono costruiti attorno all’operazione \text{accumulatore} \mathrel{+}= a\cdot b: un moltiplicatore-accumulatore (MAC) che esegue un prodotto e una somma in un ciclo, memorie separate per dati e coefficienti lette in parallelo, buffer circolari gestiti in hardware per le linee di ritardo e cicli senza costo aggiuntivo. Un FIR da N coefficienti costa così circa N cicli per campione. Oggi gli stessi principi si ritrovano nelle istruzioni SIMD dei processori generici e nei blocchi DSP delle FPGA.

Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
0
Would love your thoughts, please comment.x
()
x