Filtri digitali: come i livelli di segnale audio analogico sono influenzati da filtri digitali

L'elaborazione audio digitale offre una grande flessibilità ai progettisti di sistemi. Le strutture a filtri multipli possono essere sequenziate per dare vita ad una equalizzazione, un filtro passa-basso (low-pass) e uno passa alto (high-pass), uno shelf e molte altre combinazioni di filtri digitali con un consumo relativamente basso di energia e poco spazio sul circuito stampato.

I filtri IIR (Infinite Impulse Response, o a Risposta Impulsiva Infinita) si possono utilizzare per simulare facilmente le funzioni dei filtri digitali svolte da controparti analogiche. I segnali audio digitali sono rappresentati come una sequenza di bit con una risoluzione fissa. Questo significa che il segnale è distinto in natura, sia in ampiezza che nel tempo. Se la fonte di questi dati è analogica, essa viene quantizzata e campionata ad intervalli fissi (periodi di campionamento) da un convertitore analogico digitale (ADC).

Un ingegnere del suono deve stare attento ad assicurarsi che il segnale venga registrato e non tagliato, mentre il segnale viene mantenuto il più forte (a livello di volume) possibile per massimizzare l’SNR (signal to noise ratio, il rapporto segnale-disturbo). Un ADC ha un limite dell'ampiezza che può essere definito come una tensione full-scale (o di fondo scala); questo significa che ogni segnale al di sopra di un certo quantitativo di volt all'input del converter può provocare un clipping. Inoltre, il segnale è quantizzato in un numero con una determinata risoluzione fissa (la quale potrebbe anche essere vicina al punto di clipping). Anche il lavoro con la musica in un dominio digitale deve essere svolto con attenzione. Alcuni equalizzatori possono essere aggiunti per potenziare determinate frequenze per ottenere altri effetti. Se c'è abbondanza di headroom, è possibile potenziare, tuttavia il mezzo finale per la musica è il CD (che è limitato ad un audio di 16 bit), quindi devono essere fatti dei compromessi, perché il resto della musica risulta troppo "calma" se comparata al SNR del medium. Potenziare le bande di frequenza nel dominio digitale può creare problemi quando le bande vengono convertite in dominio analogico. I DAC (convertitori digitale-analogico) possono anche tagliare il segnale se il loro input digitale è più grande della loro tensione di fondo scala. Molti processori lasciano un certo quantitativo di spazio libero per lavorare con valori intermedi, ma alla fine un DAC si aspetta dati di una certa ampiezza compresi tra valori minimi e massimi. Se il segnale viene ridotto e determinate frequenze vengono incrementate per adattarsi ai picchi più alti, allora l’SNR nelle zone più basse soffrirà un SNR inferiore.

Utilizzo filtri digitali: capire il problema della conversione di dominio

Un aspetto molto importante da considerare quando vengono utilizzati i filtri digitali, è come il livello del segnale venga influenzato subito dopo la sua conversione dal dominio digitale a quello analogico. Supponiamo che un sistema offra un segnale digitale ad una unità di elaborazione e lo converta il analogico utilizzando un ipotetico DAC senza che venga applicata alcuna elaborazione, come mostrato nella figura.

In questo esempio, al DAC viene fornito un segnale digitale 0-dBFS che viene poi convertito in un dominio analogico. Una relazione tra il codice digitale e l'ampiezza dell’output analogico si trova nella specifica di un codec come l’ampiezza di picco. Se la specifica dell'ampiezza di picco è 0.707 Vrms (o 1Vpeak), questo significa che una sinusoide digitale 0-dBFS risulterà come una sinusoide 1-Vpeak, come mostrato in figura.

Se un DAC è compreso tra –2n–1 e 2n-1 -1, amplificando un segnale oltre questi limiti di stroncherebbe il segnale stesso clippandolo durante il suo output (assumendo una logica di saturazione), come mostrato in figura. Nella figura sono illustrati i limiti dell'input DAC, che se vengono superati possono causare un clipping dell’output. Una soluzione di questo problema potrebbe essere quella di assicurarsi che il segnale non venga amplificato oltre i limiti del DAC. Tuttavia, ci sono casi per i quali la soluzione non è poi così ovvia; operare un potenziamento relativo ad un'ampiezza di picco di un input DAC, ad uno specifico raggio di frequenza, produrrebbe anche effetti negativi. Nella figura, un segnale di 500 Hz è stato potenziato di 6dB. La distorsione osservata nell'output analogico è dovuta al clipping del DAC.

Da notare che il rumore proveniente dal dato sorgente viene ereditato quando passa alla larghezza di bus (della memoria del processore) più grande. Come menzionato in precedenza, i dati possono essere ridotti alla quantità massima dell'aumento totale per adattarsi alle regioni amplificate. Tuttavia, come si vede nella seguente figura, anche se il punto di riferimento del potenziamento (boost) è in buona posizione, il segnale DAC potrebbe essere influenzato dall’SNR dell’output.

Se il quantitativo di potenziamento non compromette in modo significativo il sistema SNR nel suo insieme, allora una semplice riduzione potrebbe essere una soluzione fattibile. Alcuni codec a basso consumo forniscono 100dB di SNR, che permette una certa riduzione senza sacrificare l’SNR dell’originale a 16 bit.

Quantizzazione e rappresentazione numerica

Nell'elaborazione digitale, un numero reale viene rappresentato come un valore intero con una precisione fissa. Questo metodo è chiamato quantizzazione, e il valore quantizzato risulta come una approssimazione della valore originale. Il valore intero può essere rappresentato come un numero in virgola fissa o come un numero in virgola mobile. Un numero a virgola fissa si esprime come un complemento a due (in valore intero) con un numero fisso di cifre dopo il punto decimale (o radix point). Queste cifre costituiscono la parte frazionale del numero. Le cifre che si trovano prima del punto dice male rappresentano l'ordine di grandezza (che inoltre contiene anche il segno del numero) e indicano il range del numero. Un dato digitale all'interno di un processore audio è considerato come un reale compreso tra -1 e 1-1LSB. Presumendo che il valore reale venga rappresentato come un numero a virgola fissa da 16 bit, il numero -1 sarà rappresentato come 1000000000000000 in binario (oppure 0 * 8000 in esadecimale). Nell'aritmetica del complemento a due, 0 * 8000 corrisponde ad un valore intero equivalente a -32768. Questo significa che dividere il numero intero per 32768 avrà come risultato una approssimazione quantizzata del valore reale. Il numero positivo più grande in 16 bit è 0111111111111111 in binario (o 0*7FF in esadecimale). Il valore intero corrispondente è 32767, che diviso per il fattore di scala 32768 produce il più grande numero reale che possa essere rappresentato in questo formato. Il numero è uguale a 32767/32768, quindi 0.999969482421875. Nella figura in basso sono rappresentati 15 bit frazionali ed 1 bit di magnitudine, che è anche il bit segnale. Questo significa che un numero reale deve essere compreso tra -1 e 0.999969482421875 prima di essere quantizzato.

Se il numero reale è al di sopra o al di sotto di questo range, non può essere rappresentato nel formato dato perché il registro a 16 bit andrebbe in sovraccarico. Per adattarsi ai numeri reali più grandi, la parte della magnitudine deve essere aumentata a spese di una parte frazionale ridotta. Questo formato è anche conosciuto come formato 1.15 (dove 1= bit di magnitudine e 15= bit di segnale). L’input verso una elaborazione digitale viene sempre rappresentato nelle forma 1.n, dove n sta per il numero di bit frazionali (15, 19, 23 0 31). Un valore pari a 0 dBFS corrisponde al valore RMS di un’onda sinusoidale full-scale, la cui ampiezza è (2n-1)/2n. Il numero reale più grande presente nell’equazione è rappresentato da 2n. Il numero di bit che vengono usati per creare un segnale è chiamato bit di segnale o larghezza di bit dei dati.

Sovraccarico e saturazione

Un sovraccarico si presenta quando il calcolo di un’unità di elaborazione risulta come un valore più grande in magnitudine Un sovraccarico viene di solito associato con il calcolo nell’accumulatore, dove numero successivi dello stesso segno sono aggiunti ed immagazzinati. Gli accumulatori in genere continuano ad accumulare anche dopo un sovraccarico perché il risultato finale, se entro i limiti, verrà fuori comunque in modo corretto. L’output dell’accumulatore viene saturato prima che venga memorizzato con un valore di segnale. La saturazione è un processo in cui un sovraccarico positivo viene convertito nel numero positivo più alto, mentre un sovraccarico negativo viene convertito nel numero negativo più basso. La saturazione non è un’operazione lineare e il risultato è una forte distorsione armonica dell’output. I bit di headroom vengono utilizzati per prevenire la saturazione.

Bit di segnale

I bit di rumore e quelli di segnale influenzano la prestazione di un sistema. Un elaboratore di audio digitale aggiunge rumore di quantizzazione e tutta le prestazione sarà così l’effetto sia del rumore del circuito analogico, sia del rumore di quantizzazione. Considerando che entrambe le sorgenti del rumore corrispondono al risultato di processi casuali indipendenti, l’intera prestazione del sistema di rumore può essere definita come:

dove S è un segnale causale distribuito in modo uniforme, Nc è il rumore del circuito DAC e Nq è il rumore di quantizzazione. Utilizzando un DAV da 100-dB e un elaboratore di segnale da 120-dB, si otterrà un SNR totale di 99.96 dB. Andrebbe notato che l’SNR totale è anche limitato dalla sorgente, l’input verso l’elaboratore audio digitale. Se l’input è fornito come un numero a 16 bit, allora il rapporto segnale-quantizzazione-rumore (SNR) del sistema può essere, nella migliore delle ipotesi, pari a 96 dB (presupponendo un segnale casuale distribuito in modo uniforme). Quindi, anche una rappresentazione interna a bit più alti (Nq più basso) non apporterebbe un miglioramento evidente in questo caso.

Bit di rumore

In precedenza è stato menzionato che il numero di bit di segnale determina le prestazioni del sistema audio digitale. Più bit sono a volte necessari per i calcoli relativi alla risposta del filtro. Una implementazione del filtro consiste in un percorso di dati attraverso il quale il segnale scorre e viene memorizzato come elemento di ritardo per il filtro. I valori di segnale e di ritardo vengono moltiplicati per i coefficienti associati con i sigilli del filtro. Anche la quantizzazione del coefficiente gioca un ruolo importante nella prestazione del sistema. Il prodotto dei valori del segnale e del coefficiente viene memorizzato nell’accumulatore, il quale possiede di solito una larghezza di bit più grande di quella del segnale. I prodotti successivi si aggiungono all’accumulatore (ad una larghezza di bit maggiore) e l’output finale del filtro viene rimemorizzato in precisione di segnale (ad una larghezza di bit inferiore). Si prenda in considerazione l’implementazione del filtro biquad come in figura

dove è possibile notare che i segnali di input e di output sono rappresentati dai “bit A”. I coefficienti a e b invece dai “bit B”. Il segnale di input ed i suoi elementi di ritardo vengono moltiplicati per i coefficienti e aggiunti all’accumulatore. Il moltiplicatore e l’accumulatore insieme hanno un’ampiezza di bit A + B. Il segnale di output viene quindi quantizzato dal blocco Q e memorizzato come un numero di bit A. Questo introduce un errore di quantizzazione, che è una sorgente di rumore per il filtro digitale; di conseguenza sono necessari dei bit extra per assicurare che la contribuzione del rumore dal filtro digitale sia inferiore al target SNR. Questa bit extra vengono definiti bit di rumore. L’effetto del rumore è più pronunciato con i filtri IIR che con i filtri FIR (a risposta impulsiva finita). Il numero di bit di rumore dipende anche dalle frequenza di campionamento e dalla frequenza di taglio del filtro digitale. All’aumento della frequenza di campionamento, aumenta anche il numero di bit di rumore richiesti. Al diminuire della frequenza di taglio, il numero di bit di rumore richiesti aumenta. Per un’operazione a 48-Khz, sono sufficienti da 14 a 16 bit a mantenere il target SNR per un filtro IIR a 40-Hz.

Bit headroom

Oltre ai bit di segnale e a quelli di rumore, sono richiesti bit aggiuntivi per prevenire il sovraccarico. Questi bit vengono chiamati bit headroom. Una catena di elaborazione audio end-to-end generalmente conserva il livello del segnale. Questa significa che, se un segnale 0-dB è l’input della catena del segnale, l’output misurerà 0dB o meno (di solito c’è un compressore di segnale che va a limitare lo swing del segnale a pochi decibel sotto lo zero). Se vengono utilizzati dei potenziatori di filtri per amplificare specifiche bande di segnale, le bande rimanenti vengono solitamente attenuate per prevenire che il segnale possa andare oltre 0 dB. Nell’ultimo caso, quando il livello del segnale di input è a 0 dB (caso conosciuto anche come livello di segnale neutrale), il segnale di output sarà inferiore a 0 dB, e solo le bande amplificate raggiungeranno 0 dB in output. Questo ridurrà il livello di volume medio del segnale audio. Nonostante il livello del segnale sia mantenuto a 0 dB, il segnale può andare in sovraccarico in punti di elaborazione intermedi. Per prevenire questo sovraccarico, i bit headroom, ad esempio i bit in aggiunta ai bit di rumore e a quelli di segnale, diventano necessari. Ci possono essere due fonti di sovraccarico:

1. Una catena di elaborazione audio può avere un filtro il cui guadagno (ad alcuni specifici valori di frequenza) è più grande di 0 dB. Il filtro può essere parte di una catena di filtri in sequenza (ad esempio filtri passa alto, passa basso e/o passa banda), il cui guadagno totale è pari a 0 dB; oppure si tratta di un filtro selettivo in frequenza che amplifica una specifica banda frequenza relativa ad un livello di segnale neutrale (ad esempio filtri shelf o EQ). Da notare che se un numero reale viene rappresentato nel formato 1.n (dove n è il numero di bit frazionali), la magnitudine relativa al numero è sempre inferiore a 1. Quindi, se viene utilizzato un filtro con un guadagno di oltre 0 dB (un numero reale maggiore di 1), allora il valore di output sarà o dB (un numero reale uguale a 1). Per impedire un sovraccarico in questi casi, sono necessari più bit headroom.

2. Un filtro con un guadagno inferiore o uguale a 0 dB può avere valori reali istantanei maggiori di 1. Per assicurare che questi valori non creino overflow, c’è bisogno di bit headroom. Nella figura è rappresentato il segnale durante l’elaborazione audio.

Un punto importante da notare è che i bit headroom sono primariamente utilizzati per accomodare la crescita di un segnale intermedio. Ci si aspetta che a termine del blocco di elaborazione finale, l’output riuscirà a stare entro la larghezza di bit del segnale. Altrimenti, per le ampiezza low-signal, l’output resterà entro i limiti e non sarà distorto; ma, per ampiezze high-signal, l’output verrà saturato e causerà la distorsione. Per evitare ciò, è meglio attenuare il segnale prima dell’output finale.

Scaling dell’acquisizione dati

Lo scaling può essere utilizzato per evitare la saturazione per i filtri con un guadagno che superi 0 dB. Un filtro passa basso a multi sezione può avere una sezione biquad che riesce ad ottenere determinate frequenze che sono più elevate rispetto all’headroom disponibile (il risultato totale sarà sempre 0 dB). In un caso del genere, l’utilizzo o meno dello scaling può essere determinato dal prodotto del livello del segnale di input moltiplicato per il guadagno massimo della risposta totale del filtro digitale. Se il prodotto è maggiore dell’headroom DAC disponibile, allora lo scaling potrebbe essere utilizzato per evitare la saturazione; un metodo di scaling consiste nell’attenuare la funzione di trasferimento del sistema di una quantità pari all’ampiezza massima della funzione di trasferimento del filtro. Il fattore di scaling si definisce nell’equazione:

dove ≤ ω ≤ π Un secondo metodo consiste nell’ordinare il segnale di input secondo S.

In figura viene mostrato quale effetto si produce con lo scaling della funzione di trasferimento. Un sinusoide a piena scala e un input alla funzione di trasferimento, che attenua la frequenza piatta di 6 dB. Rispetto a -6 dBFS, il segnale da 1Khz viene aumentato di 6 dB. In alcuni casi, per via della struttura del filtro e delle sequenze di segnale istantaneo, l’output di un filtro può essere maggiore di 0 dB anche se non raggiunge un guadagno superiore a 0 dB. Un filtro FIR può incrementare il guadagno di un segnale della somma del valore dei sigilli del filtro, se gli elementi della memoria individuale sono a 0 dB con un segno opposto a quello dei sigilli. La risposta del filtro potrebbe non superare 0 dB, quindi potrebbe essere necessaria l’applicazione di maggiore headroom. Calcolare l’headroom addizionale per i filtri IIR è complesso perché essi hanno elementi di feedback. Infatti, una delle ragioni per cui gli elaboratori di segnali forniscono headroom aggiuntivo (oltre il limite DAC) è di concedere headroom per valori istantanei. Delle misurazioni potrebbero risultare necessarie per il calcolo di headroom addizionale. In alcuni casi, ci può essere il bisogno che l’SNR compensato a causa della distorsione dovuta alla saturazione, e quindi si renderebbe necessario aggiungere un guadagno analogico per riportare il segnale a 0 dB. Quando viene utilizzato lo scaling, sarebbe opportuno aggiungere a volte guadagno ulteriore nella fase di output analogico, in modo da compensare. Si dovrebbe porre particolare cura per assicurare che il segnale delle regioni potenziate non saturi anche gli amplificatori di output, con il risultato di generare un segnale distorto. L’aumento è anche fornito nella fase finale di output del processore, in modo da compensare lo scaling. Questo viene richiesto per filtri a 0 dB multi sezione, in cui lo scaling è stato fatto per prevenire un sovraccarico per una o più delle sezioni individuali. Per i filtri digitali che guadagnano frequenze superiori a 0 dB (EQ e filtri shelf), il livello di segnale neutrale viene scalato sotto 0 dB. In questo caso, non viene richiesto un aumento nella fase finale. Il risultato è una perdita di SNR per le regioni piatte. Una soluzione più elegante è quella di limitare la quantità di filtro basata sul guadagno di volume applicato ad un elaboratore digitale, che è particolarmente predisposto per l’uso di cuffie. A livelli più alti di volume, l’aumento di frequenza viene mantenuto costante, mentre il segnale si comprime quando il volume è alto. Questa è la funzione antic-clipping DRC (Dynamic Range Compressor, compressore a raggio dinamico): a bassi livelli di volume, l’SNR originale viene mantenuto, ma, come aumenta il volume, lo scaling viene incrementato in modo proporzionale per prevenire la distorsione. A prescindere dal metodo utilizzato, è importante considerare come l’essere umano percepisca il suono ed il rumore. L’udito è dotato di un raggio dinamico notevole; gli amplificatori per le cuffie negoziano tra il piano di rumore e la potenza di output per adeguarsi al meglio a tale raggio. Per esempio, il codec audio TLV320AIC3254 può trasportare un SPL (Sound-Pressure level, livello di pressione sonora) davvero elevato con appena 500 mVrms in un tipico carico di cuffia da 32 Ω o 16 Ω, e al tempo stesso può avere un piano di rumore di 100 dB a piena scala che si trova al di sotto della soglia dell’udito. Riferimento nell’immagine.

A volte, non è nemmeno necessario aggiungere ulteriore amplificazione dopo aver operato lo scaling, dal momento che la potenza di output potrebbe essere molto più alta rispetto ad un livello di ascolto confortevole.

Visita lo spazio dedicato a Texas Instruments su Farnell

Scarica subito una copia gratis

Una risposta

  1. Avatar photo Mino_73 20 Dicembre 2014

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend