· HARDWARE

Filtrare in hardware o in software? La decisione che si prende prima dell'ADC

In ogni progetto che acquisisce un segnale arriva, presto o tardi, la stessa domanda: questo filtro lo faccio in hardware con un attivo o un passivo a monte dell’ADC, oppure lo faccio in software con qualche riga di codice nel DSP? È una scelta architetturale, non cosmetica: incide sul costo della scheda, sul carico della CPU e — nel caso peggiore — sulla validità stessa dei dati acquisiti. La risposta non è “dipende dai gusti”: ci sono casi in cui il filtro deve essere analogico, e basta, e altri in cui un IIR digitale è la scelta migliore. Vediamo dove cade la linea.

Quando il filtro deve essere analogico

C’è un caso in cui il filtro digitale non è un’opzione, e capirlo è il punto che fa la differenza tra un sistema corretto e uno che mente con eleganza: l’anti-aliasing.

Un ADC campiona a una frequenza Fs e, per il teorema di Nyquist, può rappresentare correttamente solo segnali sotto Fs/2. Qualsiasi componente del segnale sopra Fs/2 non viene scartato: viene “ripiegato” (aliasing) dentro la banda utile, dove si traveste da segnale legittimo a una frequenza più bassa. Una volta che è successo, è irreversibile. Un disturbo a Fs − f appare identico a un segnale vero a f: nessun algoritmo, per quanto sofisticato, può separarli a posteriori, perché l’informazione che li distingueva è andata persa nel momento del campionamento.

Questo è il motivo per cui un filtro anti-aliasing va messo prima dell’ADC, ed è quindi per forza analogico. Un filtro digitale, per quanto ripido, lavora su campioni già acquisiti: se l’aliasing ha già contaminato quei campioni, il filtro digitale filtrerà tranquillamente l’alias come se fosse segnale buono. Non recupera nulla, perché non c’è più nulla da recuperare. È l’errore concettuale più costoso che vediamo: confidare in un anti-aliasing fatto “dopo”.

L’analogico vince anche in altri due scenari pratici. Primo, la reiezione EMI e dei fuori-banda ad alta energia: un filtro passivo davanti all’ingresso attenua disturbi a radiofrequenza prima che saturino lo stadio di condizionamento o l’ADC stesso — un compito che il digitale non può fare perché quei disturbi non arrivano nemmeno integri al convertitore. Secondo, lo zero carico CPU: un filtro analogico non consuma cicli. Su un MCU dove il budget di calcolo è già conteso fra controllo, comunicazione e logica applicativa, spostare un filtro fisso nell’hardware libera tempo macchina prezioso.

Per dimensionare questi stadi — scegliere Sallen-Key o multiple-feedback, posizionare il polo, leggere il roll-off — abbiamo messo online un progettista di filtri analogici con diagramma di Bode; la teoria, con i casi d’uso, è nella wiki dedicata.

Quando conviene un IIR digitale

Superato lo sbarramento dell’anti-aliasing, una volta che i campioni sono dentro il dominio digitale e già protetti da aliasing, il filtraggio in software è di norma la scelta più conveniente, a patto che il budget di calcolo e la latenza ammessa lo consentano. Un filtro IIR (Infinite Impulse Response) digitale offre vantaggi che l’analogico non può eguagliare.

È tunabile a runtime: cambi i coefficienti e cambi la frequenza di taglio senza toccare un solo componente. In un prodotto che deve coprire più configurazioni o adattarsi al segnale, questo è decisivo. Non ha deriva di componenti: un filtro analogico vive di tolleranze di resistori e condensatori, che invecchiano e variano con la temperatura, spostando il polo nel tempo. Un IIR ha la risposta definita da numeri esatti, identica oggi e fra dieci anni. È riproducibile al bit: mille schede hanno mille filtri rigorosamente identici, senza la dispersione di un BOM analogico. E permette pendenze ripide e fasi controllate — ordini elevati, risposte ellittiche o Bessel a fase lineare — che in analogico richiederebbero stadi multipli, ingombro e costo.

Il prezzo da pagare è il carico computazionale e l’attenzione alla stabilità numerica: un IIR mal condizionato, implementato in virgola fissa con poca risoluzione sui coefficienti, può diventare instabile o introdurre cicli limite. Per progettare il filtro, scegliere la topologia e verificarne la risposta abbiamo un designer di filtri IIR e la sua wiki.

La regola che applichiamo

La sintesi che usiamo in progetto è netta: analogico per ciò che deve avvenire prima della conversione — anti-aliasing su tutto, più reiezione dei disturbi ad alta energia — e digitale per la sagomatura fine una volta che il segnale è al sicuro nel dominio campionato. Il filtro anti-aliasing analogico non è negoziabile e non si delega al software: è l’unica protezione contro un errore che, una volta avvenuto, nessun algoritmo può annullare. Tutto il resto è dove il digitale, con la sua flessibilità e riproducibilità, dà il meglio.


Stai dimensionando la catena di acquisizione di un tuo progetto e devi decidere dove mettere il filtro? Parliamone.

← Torna al blog

Un progetto tecnico?

Hardware, firmware, software, acustica: se hai un caso d’uso vicino, parliamone.